@seatlayer/js 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Hr=Object.create;var wt=Object.defineProperty;var Rr=Object.getOwnPropertyDescriptor;var Or=Object.getOwnPropertyNames;var Ir=Object.getPrototypeOf,_r=Object.prototype.hasOwnProperty;var Si=r=>{throw TypeError(r)};var $r=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(i){throw t=[i],i}};var Ci=(r,e)=>{for(var t in e)wt(r,t,{get:e[t],enumerable:!0})},Ei=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Or(e))!_r.call(r,s)&&s!==t&&wt(r,s,{get:()=>e[s],enumerable:!(i=Rr(e,s))||i.enumerable});return r};var Ti=(r,e,t)=>(t=r!=null?Hr(Ir(r)):{},Ei(e||!r||!r.__esModule?wt(t,"default",{value:r,enumerable:!0}):t,r)),Br=r=>Ei(wt({},"__esModule",{value:!0}),r);var Gt=(r,e,t)=>e.has(r)||Si("Cannot "+t);var y=(r,e,t)=>(Gt(r,e,"read from private field"),t?t.call(r):e.get(r)),$=(r,e,t)=>e.has(r)?Si("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),A=(r,e,t,i)=>(Gt(r,e,"write to private field"),i?i.call(r,t):e.set(r,t),t),L=(r,e,t)=>(Gt(r,e,"access private method"),t);var Wi={};Ci(Wi,{errorCopy:()=>ii,mountCheckout:()=>Tn,unavailableCopy:()=>Ki});function kn(r,e){try{window.sessionStorage.setItem(wn,JSON.stringify({orderId:r,...e?{eventKey:e}:{},storedAt:Date.now()}))}catch{}}function Cn(){if(typeof document>"u"||document.getElementById(qi))return;let r=document.createElement("style");r.id=qi,r.textContent=Sn,document.head.appendChild(r)}function Ki(r,e){let t=`${e} ${e===1?"seat is":"seats are"} held for a limited time.`;return r==="payments_off_for_event"?{title:"This event isn\u2019t sold online",body:`${t} The organiser isn\u2019t taking payment for this event here.`,detail:"Nothing has been charged. Check where you found this event for how to get tickets."}:r==="unavailable_for_event"?{title:"This event isn\u2019t taking payment yet",body:`${t} Online payment is not switched on for this event.`,detail:"Nothing has been charged. If you were sent here to pay, let the organiser know \u2014 only they can turn payment on for this event."}:{title:"Finish in the ticketing checkout",body:`${t} Payment for this event is taken elsewhere.`,detail:"Nothing has been charged. Continue in the checkout on this page to pay for your seats."}}function ii(r){switch(r){case"gateway_not_connected":case"payments_not_enabled_for_event":return"This event is not taking online payments. Contact the organiser to buy these seats.";case"provider_mismatch":return"This event\u2019s payment setup changed while you were choosing. Nothing was charged \u2014 please try again.";case"hold_not_active":case"hold_not_found":return"Your seats were released before checkout started. Nothing was charged \u2014 please pick again.";case"checkout_already_started":return"A payment for these seats is already in progress. Finish that one, or wait for it to time out before starting again.";case"event_closed":return"Sales for this event have closed.";case"insufficient_hosted_credits":return"Ticket sales are temporarily paused while the organiser updates their SeatLayer balance. Nothing was charged \u2014 please try again later or contact the organiser.";case"gateway_currency_mismatch":case"unsupported_currency":case"mixed_currency_hold":case"price_unusable":return"These seats cannot be checked out right now because of a pricing configuration problem. Nothing was charged \u2014 please contact the organiser.";case"rate_limited":return"Too many attempts. Wait a moment and try again.";default:return"We could not start the payment. Nothing was charged \u2014 please try again."}}function En(){let r=window.Razorpay;return r?Promise.resolve(r):new Promise((e,t)=>{let i=document.querySelector(`script[src="${Ui}"]`),s=i??document.createElement("script"),n=()=>{let o=window.Razorpay;o?e(o):t(new Error("razorpay_unavailable"))};s.addEventListener("load",n,{once:!0}),s.addEventListener("error",()=>t(new Error("razorpay_script_failed")),{once:!0}),!i&&(s.src=Ui,s.async=!0,document.head.appendChild(s))})}function I(r,e,t){let i=document.createElement(r);return e&&(i.className=e),t!==void 0&&(i.textContent=t),i}function Tn(r){Cn();let e=!0,t=!1,i=I("div","sl-hco");i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true");let s=I("div","sl-hco-card");i.appendChild(s);let n=()=>{e=!1,i.remove(),document.removeEventListener("keydown",a,!0)},o=()=>{n(),r.onCancel()};function a(T){T.key!=="Escape"||!i.isConnected||(T.stopPropagation(),T.preventDefault(),o())}document.addEventListener("keydown",a,!0);let l=I("h2","sl-hco-title","Checkout"),c=`sl-hco-t-${Math.random().toString(36).slice(2,8)}`;l.id=c,i.setAttribute("aria-labelledby",c);let h=(...T)=>{s.replaceChildren(l,...T)},p=T=>{if(!e)return;let q=I("p","sl-hco-status sl-hco-error",T);q.setAttribute("role","alert");let D=I("button","sl-hco-back","Back to seats");D.type="button",D.addEventListener("click",o),h(q,D)},d=T=>{if(!e)return;let q=I("p","sl-hco-status",T);q.setAttribute("role","status"),h(q)},m=async T=>{d("Payment received \u2014 confirming your seats\u2026");let q=Date.now()+9e4;for(;e&&Date.now()<q;){try{let D=await r.orderStatus(T);if(!e)return;if(D.status==="confirmed"){t=!0,l.textContent="Your tickets are confirmed";let et=I("p","sl-hco-status",`${D.seatCount} ${D.seatCount===1?"seat":"seats"} confirmed. Your tickets \u2014 with their door QR codes \u2014 are in your email.`),yt=I("dl","sl-hco-receipt"),ki=(D.tickets??[]).map(_e=>_e.label);ki.length&&yt.append(I("dt",void 0,"Seats"),I("dd",void 0,ki.join(", "))),yt.append(I("dt",void 0,"Paid"),I("dd",void 0,`${D.amountFormatted} ${D.currency}`),I("dt",void 0,"Order"),I("dd","sl-hco-ref",D.orderId));let xt=I("button","sl-hco-back","Close");if(xt.type="button",xt.addEventListener("click",o),D.ticketUrl){let _e=I("a","sl-hco-tickets","View tickets & QR codes");_e.href=D.ticketUrl,_e.target="_blank",_e.rel="noreferrer",h(et,yt,_e,xt)}else h(et,yt,xt);r.onConfirmed(D);return}if(D.status==="failed"||D.status==="expired"){p(D.status==="expired"?"Your seats were released before payment completed. Nothing was charged \u2014 please pick again.":"The payment did not complete. If you were charged, it has been refunded automatically.");return}}catch{}await new Promise(D=>setTimeout(D,2e3))}!e||t||p("Still confirming with the payment provider. If your payment went through, your tickets will arrive by email shortly \u2014 you do not need to pay again.")};if(r.state.kind==="unavailable"){let T=Ki(r.state.reason,r.state.seatCount);l.textContent=T.title;let q=I("p","sl-hco-label","Seats held"),D=I("button","sl-hco-back","Back to seat map");return D.type="button",D.addEventListener("click",o),s.replaceChildren(q,l,I("p","sl-hco-status",T.body),I("p","sl-hco-note",T.detail),D),r.root.appendChild(i),D.focus(),{destroy:n}}if(r.state.kind==="resume")return r.root.appendChild(i),m(r.state.orderId),{destroy:n};let{order:g,provider:x}=r.state,w=I("div","sl-hco-summary"),v=I("div","sl-hco-seats");for(let T of g.labels)v.appendChild(I("span","sl-hco-seat",T));let R=r.formatMoney(g.total,g.currency),S=I("div","sl-hco-total");S.append(I("span",void 0,"Total"),I("strong",void 0,R)),w.append(v,S);let P=I("form","sl-hco-form"),_=I("label","sl-hco-label","Email \u2014 your tickets go here"),k=I("input","sl-hco-input");k.type="email",k.required=!0,k.autocomplete="email",k.placeholder="you@example.com",k.id=`${c}-email`,_.htmlFor=k.id;let M=I("label","sl-hco-label","Name (optional)"),u=I("input","sl-hco-input");u.type="text",u.autocomplete="name",u.placeholder="Your name",u.id=`${c}-name`,M.htmlFor=u.id;let C=I("button","sl-hco-pay",`Pay ${R}`);C.type="submit",C.disabled=!0;let H=I("button","sl-hco-back","Back to seats");H.type="button",H.addEventListener("click",o);let z=new Date(g.expiresAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),j=I("p","sl-hco-note",`Your seats are held until ${z}. Payment is handled by ${x==="razorpay"?"Razorpay":"Stripe"} \u2014 we never see your card details.`),G=I("p","sl-hco-note");G.append("The event organizer and SeatLayer use your email to issue and manage your tickets. ");let U=I("a",void 0,"Privacy Policy");U.href="https://seatlayer.io/privacy/",U.target="_blank",U.rel="noreferrer",G.appendChild(U);let ge=()=>/.+@.+\..+/.test(k.value.trim());k.addEventListener("input",()=>{C.disabled=!ge()});let le=async()=>{d("Opening secure payment\u2026");try{let T=await r.startSession({holdId:g.holdId,buyerEmail:k.value.trim(),...u.value.trim()?{buyerName:u.value.trim()}:{}});if(!e)return;if(T.redirectUrl){kn(T.orderId,r.eventKey),d("Taking you to secure payment\u2026"),window.location.assign(T.redirectUrl);return}if(T.clientPayload){let q=T.clientPayload,D=await En();if(!e)return;d("Waiting for payment\u2026"),new D({key:q.key,order_id:q.orderId,amount:q.amount,currency:q.currency,name:q.name,prefill:q.prefill,handler:()=>{m(T.orderId)},modal:{ondismiss:()=>{e&&Je()}}}).open();return}p(ii("gateway_unavailable"))}catch(T){r.onError?.(T),p(ii(T?.code))}};P.addEventListener("submit",T=>{T.preventDefault(),ge()&&le()}),P.append(_,k,M,u,G,C,H,j);let Je=()=>{l.textContent="Checkout",h(w,P),C.disabled=!ge()};return Je(),r.root.appendChild(i),k.focus(),{destroy:n}}var Ui,qi,wn,Sn,Yi=$r(()=>{"use strict";Ui="https://checkout.razorpay.com/v1/checkout.js",qi="seatlayer-checkout-style",wn="@seatlayer/pending-checkout/v1";Sn=`
1
+ "use strict";var qs=Object.create;var Pt=Object.defineProperty;var Ks=Object.getOwnPropertyDescriptor;var Ws=Object.getOwnPropertyNames;var Ys=Object.getPrototypeOf,Qs=Object.prototype.hasOwnProperty;var zi=s=>{throw TypeError(s)};var Xs=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(i){throw t=[i],i}};var Vi=(s,e)=>{for(var t in e)Pt(s,t,{get:e[t],enumerable:!0})},Fi=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ws(e))!Qs.call(s,r)&&r!==t&&Pt(s,r,{get:()=>e[r],enumerable:!(i=Ks(e,r))||i.enumerable});return s};var ji=(s,e,t)=>(t=s!=null?qs(Ys(s)):{},Fi(e||!s||!s.__esModule?Pt(t,"default",{value:s,enumerable:!0}):t,s)),Zs=s=>Fi(Pt({},"__esModule",{value:!0}),s);var ai=(s,e,t)=>e.has(s)||zi("Cannot "+t);var w=(s,e,t)=>(ai(s,e,"read from private field"),t?t.call(s):e.get(s)),$=(s,e,t)=>e.has(s)?zi("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),P=(s,e,t,i)=>(ai(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),A=(s,e,t)=>(ai(s,e,"access private method"),t);var cr={};Vi(cr,{errorCopy:()=>mi,mountCheckout:()=>Ln,unavailableCopy:()=>lr});function Tn(s,e){try{window.sessionStorage.setItem(En,JSON.stringify({orderId:s,...e?{eventKey:e}:{},storedAt:Date.now()}))}catch{}}function An(){if(typeof document>"u"||document.getElementById(ar))return;let s=document.createElement("style");s.id=ar,s.textContent=Pn,document.head.appendChild(s)}function lr(s,e){let t=`${e} ${e===1?"seat is":"seats are"} held for a limited time.`;return s==="payments_off_for_event"?{title:"This event isn\u2019t sold online",body:`${t} The organiser isn\u2019t taking payment for this event here.`,detail:"Nothing has been charged. Check where you found this event for how to get tickets."}:s==="unavailable_for_event"?{title:"This event isn\u2019t taking payment yet",body:`${t} Online payment is not switched on for this event.`,detail:"Nothing has been charged. If you were sent here to pay, let the organiser know \u2014 only they can turn payment on for this event."}:{title:"Finish in the ticketing checkout",body:`${t} Payment for this event is taken elsewhere.`,detail:"Nothing has been charged. Continue in the checkout on this page to pay for your seats."}}function mi(s){switch(s){case"gateway_not_connected":case"payments_not_enabled_for_event":return"This event is not taking online payments. Contact the organiser to buy these seats.";case"provider_mismatch":return"This event\u2019s payment setup changed while you were choosing. Nothing was charged \u2014 please try again.";case"hold_not_active":case"hold_not_found":return"Your seats were released before checkout started. Nothing was charged \u2014 please pick again.";case"checkout_already_started":return"A payment for these seats is already in progress. Finish that one, or wait for it to time out before starting again.";case"event_closed":return"Sales for this event have closed.";case"insufficient_hosted_credits":return"Ticket sales are temporarily paused while the organiser updates their SeatLayer balance. Nothing was charged \u2014 please try again later or contact the organiser.";case"gateway_currency_mismatch":case"unsupported_currency":case"mixed_currency_hold":case"price_unusable":return"These seats cannot be checked out right now because of a pricing configuration problem. Nothing was charged \u2014 please contact the organiser.";case"rate_limited":return"Too many attempts. Wait a moment and try again.";default:return"We could not start the payment. Nothing was charged \u2014 please try again."}}function Mn(){let s=window.Razorpay;return s?Promise.resolve(s):new Promise((e,t)=>{let i=document.querySelector(`script[src="${or}"]`),r=i??document.createElement("script"),n=()=>{let o=window.Razorpay;o?e(o):t(new Error("razorpay_unavailable"))};r.addEventListener("load",n,{once:!0}),r.addEventListener("error",()=>t(new Error("razorpay_script_failed")),{once:!0}),!i&&(r.src=or,r.async=!0,document.head.appendChild(r))})}function _(s,e,t){let i=document.createElement(s);return e&&(i.className=e),t!==void 0&&(i.textContent=t),i}function Ln(s){An();let e=!0,t=!1,i=_("div","sl-hco");i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true");let r=_("div","sl-hco-card");i.appendChild(r);let n=()=>{e=!1,i.remove(),document.removeEventListener("keydown",a,!0)},o=()=>{n(),s.onCancel()};function a(T){T.key!=="Escape"||!i.isConnected||(T.stopPropagation(),T.preventDefault(),o())}document.addEventListener("keydown",a,!0);let l=_("h2","sl-hco-title","Checkout"),c=`sl-hco-t-${Math.random().toString(36).slice(2,8)}`;l.id=c,i.setAttribute("aria-labelledby",c);let h=(...T)=>{r.replaceChildren(l,...T)},d=T=>{if(!e)return;let q=_("p","sl-hco-status sl-hco-error",T);q.setAttribute("role","alert");let F=_("button","sl-hco-back","Back to seats");F.type="button",F.addEventListener("click",o),h(q,F)},p=T=>{if(!e)return;let q=_("p","sl-hco-status",T);q.setAttribute("role","status"),h(q)},m=async T=>{p("Payment received \u2014 confirming your seats\u2026");let q=Date.now()+9e4;for(;e&&Date.now()<q;){try{let F=await s.orderStatus(T);if(!e)return;if(F.status==="confirmed"){t=!0,l.textContent="Your tickets are confirmed";let nt=_("p","sl-hco-status",`${F.seatCount} ${F.seatCount===1?"seat":"seats"} confirmed. Your tickets \u2014 with their door QR codes \u2014 are in your email.`),Et=_("dl","sl-hco-receipt"),$i=(F.tickets??[]).map($e=>$e.label);$i.length&&Et.append(_("dt",void 0,"Seats"),_("dd",void 0,$i.join(", "))),Et.append(_("dt",void 0,"Paid"),_("dd",void 0,`${F.amountFormatted} ${F.currency}`),_("dt",void 0,"Order"),_("dd","sl-hco-ref",F.orderId));let Tt=_("button","sl-hco-back","Close");if(Tt.type="button",Tt.addEventListener("click",o),F.ticketUrl){let $e=_("a","sl-hco-tickets","View tickets & QR codes");$e.href=F.ticketUrl,$e.target="_blank",$e.rel="noreferrer",h(nt,Et,$e,Tt)}else h(nt,Et,Tt);s.onConfirmed(F);return}if(F.status==="failed"||F.status==="expired"){d(F.status==="expired"?"Your seats were released before payment completed. Nothing was charged \u2014 please pick again.":"The payment did not complete. If you were charged, it has been refunded automatically.");return}}catch{}await new Promise(F=>setTimeout(F,2e3))}!e||t||d("Still confirming with the payment provider. If your payment went through, your tickets will arrive by email shortly \u2014 you do not need to pay again.")};if(s.state.kind==="unavailable"){let T=lr(s.state.reason,s.state.seatCount);l.textContent=T.title;let q=_("p","sl-hco-label","Seats held"),F=_("button","sl-hco-back","Back to seat map");return F.type="button",F.addEventListener("click",o),r.replaceChildren(q,l,_("p","sl-hco-status",T.body),_("p","sl-hco-note",T.detail),F),s.root.appendChild(i),F.focus(),{destroy:n}}if(s.state.kind==="resume")return s.root.appendChild(i),m(s.state.orderId),{destroy:n};let{order:f,provider:b}=s.state,C=_("div","sl-hco-summary"),x=_("div","sl-hco-seats");for(let T of f.labels)x.appendChild(_("span","sl-hco-seat",T));let R=s.formatMoney(f.total,f.currency),y=_("div","sl-hco-total");y.append(_("span",void 0,"Total"),_("strong",void 0,R)),C.append(x,y);let E=_("form","sl-hco-form"),H=_("label","sl-hco-label","Email \u2014 your tickets go here"),M=_("input","sl-hco-input");M.type="email",M.required=!0,M.autocomplete="email",M.placeholder="you@example.com",M.id=`${c}-email`,H.htmlFor=M.id;let O=_("label","sl-hco-label","Name (optional)"),u=_("input","sl-hco-input");u.type="text",u.autocomplete="name",u.placeholder="Your name",u.id=`${c}-name`,O.htmlFor=u.id;let k=_("button","sl-hco-pay",`Pay ${R}`);k.type="submit",k.disabled=!0;let L=_("button","sl-hco-back","Back to seats");L.type="button",L.addEventListener("click",o);let U=new Date(f.expiresAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),B=_("p","sl-hco-note",`Your seats are held until ${U}. Payment is handled by ${b==="razorpay"?"Razorpay":"Stripe"} \u2014 we never see your card details.`),D=_("p","sl-hco-note");D.append("The event organizer and SeatLayer use your email to issue and manage your tickets. ");let N=_("a",void 0,"Privacy Policy");N.href="https://seatlayer.io/privacy/",N.target="_blank",N.rel="noreferrer",D.appendChild(N);let re=()=>/.+@.+\..+/.test(M.value.trim());M.addEventListener("input",()=>{k.disabled=!re()});let de=async()=>{p("Opening secure payment\u2026");try{let T=await s.startSession({holdId:f.holdId,buyerEmail:M.value.trim(),...u.value.trim()?{buyerName:u.value.trim()}:{}});if(!e)return;if(T.redirectUrl){Tn(T.orderId,s.eventKey),p("Taking you to secure payment\u2026"),window.location.assign(T.redirectUrl);return}if(T.clientPayload){let q=T.clientPayload,F=await Mn();if(!e)return;p("Waiting for payment\u2026"),new F({key:q.key,order_id:q.orderId,amount:q.amount,currency:q.currency,name:q.name,prefill:q.prefill,handler:()=>{m(T.orderId)},modal:{ondismiss:()=>{e&&st()}}}).open();return}d(mi("gateway_unavailable"))}catch(T){s.onError?.(T),d(mi(T?.code))}};E.addEventListener("submit",T=>{T.preventDefault(),re()&&de()}),E.append(H,M,O,u,D,k,L,B);let st=()=>{l.textContent="Checkout",h(C,E),k.disabled=!re()};return st(),s.root.appendChild(i),M.focus(),{destroy:n}}var or,ar,En,Pn,dr=Xs(()=>{"use strict";or="https://checkout.razorpay.com/v1/checkout.js",ar="seatlayer-checkout-style",En="@seatlayer/pending-checkout/v1";Pn=`
2
2
  /* The card is centred, but max-height:100% lets a long form reach the bottom
3
3
  edge \u2014 and on the hosted buyer page that edge is the phone's edge, with the
4
4
  Pay button last in the scroll. Reserve the home-indicator gutter here too.
@@ -38,17 +38,7 @@
38
38
  .sl-hco-tickets{display:block;width:100%;margin-top:14px;padding:12px;font:inherit;font-size:15px;
39
39
  font-weight:650;text-align:center;text-decoration:none;color:var(--sl-accent-ink);
40
40
  background:var(--sl-accent);border-radius:calc(var(--sl-radius) * .55)}
41
- `});var yo={};Ci(yo,{ApiError:()=>N,BuyerAccessContext:()=>se,BuyerAccessUnavailableError:()=>ie,BuyerRealtimeClient:()=>oe,EmbeddedDesigner:()=>At,PerformanceGroupDestroyedError:()=>K,PerformanceGroupPicker:()=>Ft,SEATING_CHART_CALLBACK_PROPS:()=>ei,SEATING_CHART_HANDLE_METHODS:()=>Xt,SEATING_CHART_IDENTITY_PROPS:()=>Zt,SEATING_CHART_VALUE_PROPS:()=>Jt,SeasonApiError:()=>ne,SeasonPicker:()=>Vt,SeasonRecoveryTimeoutError:()=>ht,SeatPicker:()=>We,SeatingChart:()=>Pt,attachPickerFrame:()=>Mr,bindSeatingChartHandle:()=>Vi,buildSeatingChartOptions:()=>Gi,createBuyerAccessContext:()=>je,createControllerSink:()=>$e,parseTicketOfferAvailability:()=>Ot,shortOperationReference:()=>Qe,ticketOfferPrices:()=>It});module.exports=Br(yo);var B=require("@seatlayer/core");var Le="seatlayer.v1";function zr(r){let e=typeof r.default=="string"?r.default:"free",t={};if(r.seats&&typeof r.seats=="object")for(let[i,s]of Object.entries(r.seats))typeof s=="string"&&s!==e&&(t[i]=s);return{default:e,exceptions:t}}function Dr(r,e){if(!r||r.default!==e.default)return null;let t=[];for(let[i,s]of Object.entries(e.exceptions))r.exceptions[i]!==s&&t.push({label:i,status:s});for(let i of Object.keys(r.exceptions))i in e.exceptions||t.push({label:i,status:e.default});return t}function Fr(r,e){for(let t of e)t.status===r.default?delete r.exceptions[t.label]:r.exceptions[t.label]=t.status}function Pi(r){if(/(?:^|[?&#])(?:token|access_token|bearer|authorization|ticket|tkt|bse)=/i.test(r))throw new Error("seatlayer: refusing to open a socket with a credential in the URL");if(/\bbse_[A-Za-z0-9._-]+/.test(r))throw new Error("seatlayer: refusing to open a socket with a credential in the URL")}var oe=class{constructor(e){this.ws=null;this.stopped=!0;this.attempt=0;this.reconnectTimer=null;this.pingTimer=null;this.pongTimer=null;this.resumeTimer=null;this.projection=null;this.version=null;this.v1=!1;this.useQueryMarker=!1;this.hidden=null;this.closedSections=null;this.opts=e,Pi(e.url)}get protocol(){return this.ws?this.v1?"v1":"legacy":null}get snapshotVersion(){return this.version}start(){this.stopped&&(this.stopped=!1,this.connect())}stop(){this.stopped=!0,this.clearTimers();let e=this.ws;if(this.ws=null,e){e.onopen=null,e.onmessage=null,e.onclose=null,e.onerror=null;try{e.close()}catch{}}}restart(){this.stop(),this.projection=null,this.version=null,this.attempt=0,this.start()}async connect(){if(this.stopped)return;let e=[Le];if(this.opts.mintTicket){let n;try{n=await this.opts.mintTicket()}catch(o){this.reportIfAccessError(o),this.scheduleReconnect();return}if(this.stopped)return;n?.protocols?.length?(e=[...n.protocols],e.includes(Le)||e.unshift(Le)):n?.ticket&&(e=[Le,`tkt.${n.ticket}`])}let t=this.version!==null;t&&e.push(`sv.${this.version}`);let i=this.useQueryMarker?`${this.opts.url}${this.opts.url.includes("?")?"&":"?"}pv=1`:this.opts.url;Pi(i);let s;try{s=(this.opts.socketFactory??((o,a)=>new WebSocket(o,a)))(i,e)}catch{this.scheduleReconnect();return}this.ws=s,s.onopen=()=>{this.ws===s&&(this.attempt=0,this.v1=s.protocol===Le,this.v1||(this.useQueryMarker=!0),this.startKeepalive(s),t?this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync()},5e3):this.opts.sink.resync())},s.onmessage=n=>{if(this.ws!==s)return;let o;try{o=JSON.parse(typeof n.data=="string"?n.data:"")}catch{return}!o||typeof o!="object"||this.handleFrame(o)},s.onclose=n=>{if(this.ws===s){if(this.ws=null,this.clearTimers(),n?.code===4401){this.stopped=!0,this.opts.onAccessUnavailable?.({reason:"revoked",code:"access_revoked",retryable:!1});return}this.scheduleReconnect()}},s.onerror=()=>{try{s.close()}catch{}}}handleFrame(e){let t=typeof e.type=="string"?e.type:"";if(e.protocol===1&&(this.v1=!0),typeof e.snapshotVersion=="number"&&(this.version=e.snapshotVersion),t==="pong"){this.clearPongTimer();return}if(Array.isArray(e.hidden)||Array.isArray(e.closed)){let i=Array.isArray(e.hidden)?e.hidden:[],s=Array.isArray(e.closed)?e.closed:[],n=i.join("\0"),o=s.join("\0");(n!==this.hidden||o!==this.closedSections)&&(this.hidden=n,this.closedSections=o,this.opts.sink.onSections?.(i,s))}if(t!=="hidden"){if(t==="presence"){this.opts.sink.onPresence?.({shoppingSessions:Number(e.shoppingSessions)||0,activeHolds:Number(e.activeHolds)||0});return}if(t!=="allocation"){if(t==="snapshot"||!t&&e.seats){this.answered();let i=zr(e),s=Dr(this.projection,i);this.projection=i,s===null?this.opts.sink.applyProjection?this.opts.sink.applyProjection(i):this.opts.sink.resync():s.length&&this.opts.sink.applyStatuses(s);return}if(t==="delta"&&Array.isArray(e.changes)){this.answered();let i=e.changes.filter(s=>typeof s?.label=="string"&&typeof s?.status=="string").map(s=>({label:s.label,status:s.status}));if(!i.length)return;this.projection&&Fr(this.projection,i),this.opts.sink.applyStatuses(i)}}}}answered(){this.resumeTimer&&(clearTimeout(this.resumeTimer),this.resumeTimer=null)}reportIfAccessError(e){let t=e?.reason;e?.name==="BuyerAccessUnavailableError"&&(this.stopped=!0,this.opts.onAccessUnavailable?.({reason:t??"invalid",code:e.code,status:e.status,retryable:t==="paused"}))}startKeepalive(e){this.pingTimer=setInterval(()=>{if(this.ws===e){try{e.send(JSON.stringify({type:"ping"}))}catch{return}this.clearPongTimer(),this.pongTimer=setTimeout(()=>{this.pongTimer=null;try{e.close()}catch{}},1e4)}},25e3)}scheduleReconnect(){if(this.stopped||this.reconnectTimer)return;let e=Math.min(this.attempt++,5),t=Math.min(1e3*2**e,15e3),i=Math.random()*t;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},i)}clearPongTimer(){this.pongTimer&&(clearTimeout(this.pongTimer),this.pongTimer=null)}clearTimers(){this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null,this.clearPongTimer(),this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.resumeTimer&&clearTimeout(this.resumeTimer),this.resumeTimer=null}};function jr(r){return r==="blocked"?"not_for_sale":r==="held"||r==="booked"||r==="free"||r==="not_for_sale"?r:"free"}function $e(r,e={}){let t=i=>{let s=r.tableSelection(i);if(s)return s.physicalSeatIds;let n=r.idForLabel(i);return n?[n]:[]};return{applyStatuses(i){let s=r.currentHold()?.labels??[],n={free:[],held:[],booked:[],not_for_sale:[]},o=[],a=[],l=new Map(r.getSelection().map(c=>[c.label,c.id]));for(let c of i){let h=t(c.label);if(!h.length)continue;let p=jr(c.status);if(n[p].push(...h),e.flashOnLiveChange&&p!=="free"&&!s.includes(c.label)&&h.some(d=>r.getStatus(d)==="free")){let d=p==="held"?"#f4b740":"#f43f5e";for(let m of h)o.push({id:m,color:d})}p!=="free"&&!s.includes(c.label)&&l.has(c.label)&&a.push(c.label)}for(let c of["free","held","booked","not_for_sale"])n[c].length&&r.setStatus(n[c],c);for(let c of o)r.flashSeat(c.id,c.color);if(a.length){let c=a.flatMap(p=>t(p));c.length&&r.deselect(c);let h=i.some(p=>p.status==="blocked"&&a.includes(p.label));e.onSelectedObjectUnavailable?.(a,h?"ineligible":"taken")}e.onStatusChange?.()},async resync(){await r.refresh()},onSections(i,s){r.refresh(),e.onSections?.(i,s)}}}var N=class extends Error{constructor(e,t,i,s,n,o){super(t),this.name="ApiError",this.status=e,this.code=i,this.conflicts=s,this.reason=n,this.retryAfterS=o}},Ai=10,Li=1;function kt(r,e){let t=(r??"").trim();if(t){let i=Number(t);if(Number.isFinite(i)&&i>=0)return Math.ceil(i);let s=Date.parse(t);if(Number.isFinite(s))return Math.max(0,Math.ceil((s-Date.now())/1e3))}if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return Math.ceil(e)}var Nr={seat_conflict:"taken",conflict:"taken",channel_assignment_conflict:"ineligible",allocation_exhausted:"exhausted"},be=class{constructor(e,t={}){this.base=e;this.viewerId=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`viewer_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;this.access=t.access,this.onObjectUnavailable=t.onObjectUnavailable;let i=t.referral?.trim();this.referral=i?i.slice(0,120):void 0}get accessScoped(){return!!this.access?.configured}async request(e,t={},i={}){let s=t.method??"GET",n={},o;t.body!==void 0&&(n["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await this.access?.authorization(i.auth?"unauthorized":"initial");a&&(n.Authorization=a);let l=await fetch(`${this.base}${e}`,{method:s,headers:n,body:o,credentials:"omit"}),h=(l.headers.get("content-type")??"").includes("application/json")?await l.json().catch(()=>null):null;if(!l.ok){let p=h,d=p?.code??p?.error;if(this.access?.configured&&(l.status===401||l.status===403||l.status===422)&&await this.access.handleFailure(l.status,d)&&!i.auth)return this.request(e,t,{...i,auth:!0});if(l.status===409){let g=d?Nr[d]:void 0,x=p?.conflicts?.map(w=>w.label)??t.labels??[];g&&this.onObjectUnavailable?.({labels:x,reason:g,code:d})}let m;if(l.status===429&&(m=kt(l.headers.get("Retry-After"),p?.retryAfterSeconds)??Li,s==="GET"&&!i.rateLimit&&m<=Ai))return await new Promise(g=>setTimeout(g,m*1e3)),this.request(e,t,{...i,rateLimit:!0});throw new N(l.status,p?.error??`request_failed_${l.status}`,d,p?.conflicts,p?.reason,m)}return h}async requestBlob(e,t={}){let i={},s=await this.access?.authorization(t.auth?"unauthorized":"initial");s&&(i.Authorization=s);let n=await fetch(`${this.base}${e}`,{method:"GET",headers:i,credentials:"omit"});if(n.ok)return n.blob();let a=(n.headers.get("content-type")??"").includes("application/json")?await n.json().catch(()=>null):null,l=a?.code??a?.error;if(this.access?.configured&&(n.status===401||n.status===403||n.status===422)&&await this.access.handleFailure(n.status,l)&&!t.auth)return this.requestBlob(e,{...t,auth:!0});let c;if(n.status===429&&(c=kt(n.headers.get("Retry-After"),a?.retryAfterSeconds)??Li,!t.rateLimit&&c<=Ai))return await new Promise(h=>setTimeout(h,c*1e3)),this.requestBlob(e,{...t,rateLimit:!0});throw new N(n.status,a?.error??`request_failed_${n.status}`,l,void 0,void 0,c)}chart(e){return this.request(`/pub/events/${encodeURIComponent(e)}/chart`)}eventConfiguration(e){return this.request(`/pub/events/${encodeURIComponent(e)}/event-configuration`)}reportViewEvidence(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/view-evidence-reports`,{method:"POST",body:{seatId:t.seatId,...t.evidenceId?{evidenceId:t.evidenceId}:{},...t.message?{message:t.message}:{}}})}asset(e,t){return/^[a-zA-Z0-9._-]+$/.test(t)?this.requestBlob(`/pub/events/${encodeURIComponent(e)}/assets/${encodeURIComponent(t)}`):Promise.reject(new N(404,"not_found","not_found"))}objects(e){return this.request(`/pub/events/${encodeURIComponent(e)}/objects?compact=1`)}hold(e,t,i,s){return this.request(`/pub/events/${encodeURIComponent(e)}/hold`,{method:"POST",body:{selections:t,...i?{ttlMs:i}:{},...s?{replaceHoldId:s}:{},...this.referral?{referral:this.referral}:{}},labels:t.map(n=>n.label)})}bestAvailable(e,t,i,s,n){return this.request(`/pub/events/${encodeURIComponent(e)}/best-available`,{method:"POST",body:{qty:t,...i?{categoryKey:i}:{},...s?{zoneId:s}:{},...n?{ttlMs:n}:{},...this.referral?{referral:this.referral}:{}}})}resume(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/hold/resume`,{method:"POST",body:{holdId:t}})}release(e,t,i){return this.request(`/pub/events/${encodeURIComponent(e)}/release`,{method:"POST",body:{labels:t,holdId:i}})}extend(e,t,i){return this.request(`/pub/events/${encodeURIComponent(e)}/extend`,{method:"POST",body:{holdId:t,...i?{ttlMs:i}:{}}})}paymentOptions(e){return this.request(`/pub/events/${encodeURIComponent(e)}/payment-options`)}availability(e,t=!1){return this.request(`/pub/events/${encodeURIComponent(e)}/availability${t?"?live=1":""}`)}startCheckout(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/checkout`,{method:"POST",body:t})}orderStatus(e){return this.request(`/pub/orders/${encodeURIComponent(e)}/status`)}subscribeTicket(e){return this.request(`/pub/events/${encodeURIComponent(e)}/subscribe-tickets`,{method:"POST",body:{}})}subscribeUrl(e){let t=this.base.replace(/^http/,"ws"),i=new URLSearchParams({surface:"picker",viewerId:this.viewerId});return`${t}/pub/events/${encodeURIComponent(e)}/subscribe?${i}`}socketUrl(e){return this.accessScoped?"":this.subscribeUrl(e)}socketProtocols(e){return this.accessScoped?[]:[Le]}createRealtime(e,t){return this.accessScoped?null:new oe({url:this.subscribeUrl(e),sink:t})}};var ie=class extends Error{constructor(e){super(`buyer_access_unavailable:${e.reason}`),this.name="BuyerAccessUnavailableError",this.reason=e.reason,this.code=e.code,this.status=e.status}},Vr=new Set(["buyer_access_expired"]),Gr=new Set(["paused","provider_failed","channel_denied"]);function Ur(r,e){switch(e){case"buyer_access_invalid":return"invalid";case"buyer_access_revoked":return"revoked";case"buyer_access_origin_mismatch":return"origin_mismatch";case"buyer_access_event_mismatch":return"event_mismatch";case"buyer_access_group_mismatch":return"group_mismatch";case"buyer_access_mode_mismatch":return"mode_mismatch";case"buyer_access_environment_mismatch":return"environment_mismatch";case"channel_access_denied":return"channel_denied";case"channel_paused":return"paused";case"invalid_channel_scope":return"invalid_scope";default:break}return r===401?"invalid":null}function qr(r,e){return r===401&&!!e&&Vr.has(e)}var Kr=3e4,Q,X,ze,De,tt,ve,ce,Fe,it,st,rt,Me,Z,Ut,St,Be,se=class{constructor(e){$(this,Z);$(this,Q,null);$(this,X,0);$(this,ze,null);$(this,De);$(this,tt);$(this,ve,null);$(this,ce,null);$(this,Fe,null);$(this,it);$(this,st);$(this,rt,!1);$(this,Me);if(A(this,De,e.provider),A(this,tt,e.skewMs??Kr),A(this,it,e.onExpired),A(this,st,e.onUnavailable),e.token){let t=typeof e.token=="string"?{token:e.token}:e.token;L(this,Z,Ut).call(this,t)}A(this,rt,!!y(this,De)||!!y(this,Q))}get configured(){return y(this,rt)}onRenewed(e){A(this,Me,e)}get unavailable(){return y(this,ce)}get hasToken(){return!!y(this,Q)&&(y(this,X)===0||y(this,X)>Date.now())}get expiresAt(){return y(this,X)}async authorization(e="initial"){if(!this.configured)return null;if(y(this,ce))throw new ie(y(this,ce));let t=Date.now();if(!y(this,Q)||y(this,X)>0&&y(this,X)-y(this,tt)<=t){let s=!!y(this,Q)&&y(this,X)>0&&y(this,X)<=t,n=y(this,Q)?s?"expired":"expiring":e,o=await L(this,Z,St).call(this,n);if(!o)throw new ie(y(this,ce)??y(this,Fe)??L(this,Z,Be).call(this,"provider_failed"));return`Bearer ${o}`}return`Bearer ${y(this,Q)}`}async handleFailure(e,t){var s;if(!this.configured)return!1;if(qr(e,t)){A(this,Q,null),A(this,X,0);let n=await L(this,Z,St).call(this,"unauthorized",t);return(s=y(this,it))==null||s.call(this,{reason:"unauthorized",code:t,refreshed:!!n}),!!n}let i=Ur(e,t);return i&&L(this,Z,Be).call(this,i,t,e),!1}async refresh(e="manual"){return A(this,ce,null),A(this,Fe,null),A(this,Q,null),A(this,X,0),!!await L(this,Z,St).call(this,e)}clear(){A(this,Q,null),A(this,ze,null),A(this,X,0),A(this,ve,null),A(this,Me,void 0)}toJSON(){return{configured:this.configured,hasToken:this.hasToken}}toString(){return"[BuyerAccessContext redacted]"}};Q=new WeakMap,X=new WeakMap,ze=new WeakMap,De=new WeakMap,tt=new WeakMap,ve=new WeakMap,ce=new WeakMap,Fe=new WeakMap,it=new WeakMap,st=new WeakMap,rt=new WeakMap,Me=new WeakMap,Z=new WeakSet,Ut=function(e){return!e||typeof e.token!="string"||!e.token?null:(A(this,ze,e.token),A(this,Q,e.token),A(this,X,typeof e.expiresAt=="number"?e.expiresAt:0),y(this,Q))},St=function(e,t){if(y(this,ve))return y(this,ve);let i=y(this,De);if(!i)return L(this,Z,Be).call(this,"no_token",t),Promise.resolve(null);let s=y(this,ze),n=(async()=>{try{let o=await i({reason:e}),a=L(this,Z,Ut).call(this,o);if(!a)return L(this,Z,Be).call(this,"provider_failed",t),null;if(s&&s!==a&&y(this,Me))try{await y(this,Me).call(this,{previousToken:s,token:a,reason:e})}catch{}return a}catch{return L(this,Z,Be).call(this,"provider_failed",t),null}finally{A(this,ve,null)}})();return A(this,ve,n),n},Be=function(e,t,i){var n;let s={reason:e,code:t,status:i,retryable:e==="paused"||e==="channel_denied"};return A(this,Fe,s),Gr.has(e)||(A(this,ce,s),A(this,Q,null),A(this,X,0)),(n=y(this,st))==null||n.call(this,s),s};function je(r,e={}){return!r.buyerAccessTokenProvider&&!r.buyerAccessToken?null:new se({provider:r.buyerAccessTokenProvider,token:r.buyerAccessToken,...e})}var Wr=3e4;function Yr(r){if(!r||typeof r!="object"||Array.isArray(r))return!1;let e=r;return typeof e.token=="string"&&e.token.startsWith("bse_")&&typeof e.expiresAt=="number"&&Number.isFinite(e.expiresAt)&&e.expiresAt>Date.now()&&!!e.event&&typeof e.event=="object"&&!!e.doc&&typeof e.doc=="object"&&!!e.objects&&typeof e.objects=="object"&&!Array.isArray(e.objects)&&!!e.objects.seats&&typeof e.objects.seats=="object"}var qt=class{constructor(e,t,i){this.base=e;this.event=t;this.publicKey=i;this.value=null;this.inflight=null}async load(e=!1){if(e&&(this.value=null),this.value&&this.value.expiresAt-Wr>Date.now())return this.value;if(this.inflight)return this.inflight;let t=(async()=>{let i=await fetch(`${this.base}/pub/events/${encodeURIComponent(this.event)}/bootstrap`,{method:"POST",body:JSON.stringify({publicKey:this.publicKey}),credentials:"omit"}),s=await i.json().catch(()=>null);if(!i.ok){let n=i.status===429?kt(i.headers.get("Retry-After"),s?.retryAfterSeconds):void 0;throw new N(i.status,s?.error??`request_failed_${i.status}`,s?.code??s?.error,void 0,void 0,n)}if(!Yr(s))throw new N(502,"invalid_bootstrap_response","invalid_bootstrap_response");return this.value=s,s})();this.inflight=t;try{return await t}finally{this.inflight===t&&(this.inflight=null)}}async token(e){let t=e==="expiring"||e==="expired"||e==="unauthorized"||e==="manual",i=await this.load(t);return{token:i.token,expiresAt:i.expiresAt}}},Kt=class extends be{constructor(t,i,s,n,o){super(t,{...o,access:n});this.event=i;this.loader=s;this.bootstrapAccess=n;this.initialChartDelivered=!1;this.initialObjectsDelivered=!1}assertEvent(t){if(t!==this.event)throw new N(404,"not_found","not_found")}async bundle(t){return this.assertEvent(t),await this.bootstrapAccess.authorization("initial"),this.loader.load()}async chart(t){if(this.assertEvent(t),this.initialChartDelivered)return super.chart(t);let i=await this.bundle(t);return this.initialChartDelivered=!0,{event:i.event,doc:i.doc}}async objects(t){if(this.assertEvent(t),this.initialObjectsDelivered)return super.objects(t);let i=await this.bundle(t);return this.initialObjectsDelivered=!0,i.objects}};function Ct(r){let e=new qt(r.base,r.event,r.publicKey),t=new se({provider:({reason:i})=>e.token(i),...r.accessHooks});return{access:t,api:new Kt(r.base,r.event,e,t,r.apiOptions??{})}}var W=require("@seatlayer/core"),V=r=>String(r??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e]);function Ne(r,e){let t=0;for(let i of r.get(e)?.values()??[])t+=i;return t}function Mi(r){let e=[];for(let[t,i]of r)for(let[s,n]of i)n>0&&e.push({areaId:t,tierId:s,qty:n});return e}function Hi(r){let e=new Map;for(let t of r.keys())e.set(t,Ne(r,t));return e}function nt(r,e,t,i){let s=r.get(e)??new Map;i>0?s.set(t,i):s.delete(t),s.size?r.set(e,s):r.delete(e)}function Ri(r){let e=new Map;for(let t of r)t.objectType!=="ga"||!t.objectId||e.set(t.objectId,(e.get(t.objectId)??0)+(t.quantity??1));return e}function Ve(r,e){let t=Ri(e),i=0;for(let s of r.keys())i+=Math.max(0,Ne(r,s)-(t.get(s)??0));return i}function Oi(r,e,t){let i=Ri(t),s=0;for(let n of e){let o=r.gaQty.get(n.id);if(!o)continue;let a=i.get(n.id)??0;for(let[l,c]of o){let h=Math.max(0,c-a);a=Math.max(0,a-c),s+=h*r.paidPrice(n.categoryKey,l,Qr(n,l),n.id)}}return s}function Qr(r,e){return e?r.tiers?.find(t=>t.id===e)?.price??r.price:r.price}function Ii(r){let e=[],t=new Map;for(let i of r){if(i.objectType!=="ga"||!i.objectId){e.push({...i,labels:[i.label]});continue}let s=`${i.objectId}\0${i.tierId??""}`,n=t.get(s);if(n){n.quantity=(n.quantity??0)+(i.quantity??1),n.labels.push(i.label);continue}let o={...i,quantity:i.quantity??1,labels:[i.label]};t.set(s,o),e.push(o)}return e}function _i(r,e,t){let i=new Set(t);for(let s of e)s.objectType==="ga"&&s.objectId&&i.has(s.label)&&nt(r,s.objectId,s.tierId??null,0)}function $i(r,e){if(r.objectType!=="ga")return r.label;let t=e.find(i=>i.id===r.objectId);return t?.displayLabel??t?.label??r.label}function Xr(r){let e=new Map;for(let t of r){if(t.objectType!=="ga"||!t.objectId)continue;let i=`${t.objectId}\0${t.tierId??""}`;e.set(i,(e.get(i)??0)+(t.quantity??1))}return e}function Et(r){let e=r.tiers??[];return e.length>1?e.map(t=>({id:t.id,label:t.name||t.id,price:t.price})):[{id:null,label:r.displayType??(0,W.t)("picker.generalAdmission"),price:r.price}]}function Bi(r,e){let t=r.totalTicketCount()-Ne(r.gaQty,e.id);return Math.max(0,Math.min(e.available,r.maxTickets-t))}function Yt(r,e,t,i){if(de(r,!1),r.salesClosed){r.toast(r.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let s=Et(e),n=r.gaQty.get(e.id),o=Ne(r.gaQty,e.id)>0,a=Bi(r,e);if(a<=0&&!o){r.toast(e.available>0?(0,W.t)("picker.maxTicketsForOrder",{count:r.maxTickets}):r.tf("picker.soldOutTitle","Sold out"),"warning");return}if(r.onGAPromptHook){let d={};for(let[g,x]of n??[])d[g??""]=x;if(r.onGAPromptHook({area:e,selected:d,min:0,max:a,tiers:s,confirm:g=>{tn(r,e,s,g,a)},cancel:()=>de(r)})===!0)return}let l=new Map;for(let d of s)l.set(d.id,n?.get(d.id)??0);!o&&a>0&&l.set(s[0].id,1);let c={area:e,tiers:s,draft:l,max:a,reopened:o},h=r.root?.dataset.layout==="narrow",p=document.createElement("div");p.className=h?"sl-ga-scrim":"sl-ga-pop-layer",p.innerHTML=Zr(r,c,h),r.root?.appendChild(p),r.gaPromptEl=p,r.gaPromptReturnFocus=i??document.activeElement,h||sn(r,p,t),r.reducedMotion()&&(p.dataset.motion="reduced"),Di(r,c),Jr(r,p,c),requestAnimationFrame(()=>p.querySelector('[data-ga-step="1"]')?.focus())}function Zr(r,e,t){let{area:i,tiers:s}=e,n=s.length>1,o=i.displayLabel??i.label,a=s.map(l=>`<div class="sl-ga-prompt-row" data-ga-tier="${V(l.id??"")}"><div class="sl-ga-prompt-label"><span>${V(n?l.label:r.tf("picker.gaChooseTickets","How many tickets?"))}</span>`+(n?`<small>${V(r.money(r.paidPrice(i.categoryKey,l.id,l.price,i.id)))}</small>`:"")+`</div><div class="sl-ga-stepper" role="group" aria-label="${V(n?l.label:o)}"><button type="button" data-ga-step="-1" aria-label="${V(r.tf("picker.fewer","Fewer"))}">\u2212</button><output data-ga-qty aria-live="polite">0</output><button type="button" data-ga-step="1" aria-label="${V(r.tf("picker.more","More"))}">+</button></div></div>`).join("");return`<section class="${t?"sl-ga-sheet":"sl-ga-pop"}" role="dialog" aria-modal="true" aria-label="${V((0,W.t)("picker.gaChooseForArea",{area:o}))}"><div class="sl-ga-prompt-head"><div class="sl-ga-prompt-eyebrow">${V(i.displayType??r.tf("picker.generalAdmission","General admission"))}</div><h2 class="sl-ga-prompt-title">${V(o)}</h2><p class="sl-ga-prompt-sub" data-ga-sub></p><button type="button" class="sl-ga-prompt-close" data-ga-cancel aria-label="${V((0,W.t)("common.close"))}">\xD7</button></div><div class="sl-ga-prompt-body">${a}`+(s.length>1?`<div class="sl-ga-prompt-total"><span>${V(r.tf("picker.total","Total"))}</span><b data-ga-total></b></div>`:"")+'<p class="sl-ga-prompt-hint" data-ga-hint></p></div><div class="sl-ga-prompt-actions">'+(e.reopened?`<button type="button" class="sl-ga-prompt-remove" data-ga-remove>${V(r.tf("picker.gaRemove","Remove"))}</button>`:`<button type="button" class="sl-ga-prompt-remove" data-ga-cancel>${V((0,W.t)("common.cancel"))}</button>`)+'<button type="button" class="sl-ga-prompt-confirm" data-ga-confirm></button></div></section>'}function Qt(r){let e=0;for(let t of r.draft.values())e+=t;return e}function zi(r,e){let t=0;for(let i of e.tiers)t+=(e.draft.get(i.id)??0)*r.paidPrice(e.area.categoryKey,i.id,i.price,e.area.id);return t}function Di(r,e){let t=r.gaPromptEl;if(!t)return;let i=Qt(e),s=zi(r,e);t.querySelectorAll("[data-ga-tier]").forEach(c=>{let h=c.dataset.gaTier?c.dataset.gaTier:null,p=e.draft.get(h)??0,d=c.querySelector("[data-ga-qty]");d&&(d.value=String(p)),c.querySelectorAll("[data-ga-step]").forEach(m=>{m.disabled=Number(m.dataset.gaStep)<0?p<=0:i>=e.max})});let n=t.querySelector("[data-ga-sub]");n&&(n.textContent=`${r.money(r.paidPrice(e.area.categoryKey,e.tiers[0].id,e.tiers[0].price,e.area.id))} \xB7 ${(0,W.tCount)("picker.leftCount",e.area.available)}`);let o=t.querySelector("[data-ga-total]");o&&(o.textContent=r.money(s));let a=t.querySelector("[data-ga-hint]");a&&(a.textContent=i>=e.max&&e.max>0?e.area.available<=e.max?(0,W.tCount)("picker.leftCount",e.area.available):(0,W.t)("picker.maxTicketsForOrder",{count:r.maxTickets}):"");let l=t.querySelector("[data-ga-confirm]");l&&(l.textContent=e.reopened?(0,W.tCount)("picker.gaUpdate",i,{count:i}):(0,W.tCount)("picker.gaAdd",i,{count:i,price:r.money(s)}),l.disabled=i<=0&&!e.reopened)}function Jr(r,e,t){e.querySelectorAll("[data-ga-step]").forEach(i=>{i.addEventListener("click",()=>{let s=i.closest("[data-ga-tier]");if(!s)return;let n=s.dataset.gaTier?s.dataset.gaTier:null,o=Number(i.dataset.gaStep),a=t.draft.get(n)??0,l=t.max-Qt(t);t.draft.set(n,Math.max(0,a+(o>0?Math.min(1,l):-1))),Di(r,t)})}),e.querySelectorAll("[data-ga-cancel]").forEach(i=>i.addEventListener("click",()=>de(r))),e.querySelector("[data-ga-remove]")?.addEventListener("click",()=>{r.gaQty.delete(t.area.id),de(r),r.syncTray(),Wt(r,(0,W.t)("picker.gaRemoved",{area:t.area.displayLabel??t.area.label}))}),e.querySelector("[data-ga-confirm]")?.addEventListener("click",()=>{en(r,t)}),e.addEventListener("mousedown",i=>{i.target===e&&de(r)}),e.addEventListener("keydown",i=>{if(i.key==="Escape"){i.stopPropagation(),de(r);return}if(i.key!=="Tab")return;let s=[...e.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!s.length)return;let n=s[0],o=s[s.length-1];i.shiftKey&&document.activeElement===n?(i.preventDefault(),o.focus()):!i.shiftKey&&document.activeElement===o&&(i.preventDefault(),n.focus())})}function en(r,e){let t=Qt(e),i=zi(r,e);for(let n of e.tiers)nt(r.gaQty,e.area.id,n.id,e.draft.get(n.id)??0);de(r),r.syncTray();let s=e.area.displayLabel??e.area.label;t>0?Wt(r,(0,W.tCount)("picker.gaAdded",t,{count:t,area:s,price:r.money(i)})):Wt(r,(0,W.t)("picker.gaRemoved",{area:s}))}function tn(r,e,t,i,s){if(typeof i=="number")nt(r.gaQty,e.id,t[0].id,Math.max(0,Math.min(s,Math.floor(i))));else{r.gaQty.delete(e.id);let n=s;for(let o of t){let a=Math.max(0,Math.floor(i[o.id??""]??0)),l=Math.min(a,n);n-=l,nt(r.gaQty,e.id,o.id,l)}}r.syncTray()}function de(r,e=!0){let t=r.gaPromptReturnFocus;r.gaPromptEl?.remove(),r.gaPromptEl=null,r.gaPromptReturnFocus=null,e&&t&&requestAnimationFrame(()=>(t.isConnected?t:r.root)?.focus())}function sn(r,e,t){let i=r.root,s=e.querySelector(".sl-ga-pop");if(!i||!s||!t)return;let n=i.getBoundingClientRect(),o=t.x-n.left,a=t.y-n.top;e.style.setProperty("--sl-ga-anchor-x",`${o}px`),e.style.setProperty("--sl-ga-anchor-y",`${a}px`),requestAnimationFrame(()=>{let l=s.offsetWidth||260,c=s.offsetHeight||220,h=Math.max(8,Math.min(n.width-l-8,o-l/2)),p=a-c-14,d=p>=8?p:Math.min(n.height-c-8,a+14);s.style.left=`${h}px`,s.style.top=`${Math.max(8,d)}px`,s.dataset.side=p>=8?"above":"below",s.style.setProperty("--sl-ga-arrow-x",`${Math.max(12,Math.min(l-12,o-h))}px`)})}function Wt(r,e){r.srEl&&(r.srEl.textContent=e)}function Fi(r,e,t=[]){let i=[],s=Xr(t);for(let o of e){let a=r.gaQty.get(o.id);if(!a)continue;let l=Et(o);for(let c of l){let h=(a.get(c.id)??0)-(s.get(`${o.id}\0${c.id??""}`)??0);if(h<=0)continue;let p=r.paidPrice(o.categoryKey,c.id,c.price,o.id);i.push(`<div class="sl-ga" data-ga="${V(o.id)}" data-ga-row-tier="${V(c.id??"")}"><div class="sl-ga-info"><div class="sl-ga-name">${V(o.displayLabel??o.label)}</div><div class="sl-ga-sub">${V(l.length>1?c.label:o.displayType??r.tf("picker.generalAdmission","General admission"))} \xB7 ${V(r.money(p))} \xB7 ${V((0,W.tCount)("picker.leftCount",o.available))}</div></div><div class="sl-ga-qty"><button type="button" data-d="-1" aria-label="${V(r.tf("picker.fewer","Fewer"))}">\u2212</button><span>${h}</span><button type="button" data-d="1" aria-label="${V(r.tf("picker.more","More"))}">+</button></div></div>`)}}let n=e.filter(o=>Ne(r.gaQty,o.id)<=0&&!t.some(a=>a.objectId===o.id));return n.length&&i.push(`<div class="sl-ga-areas" data-ga-areas><button type="button" class="sl-ga-areas-toggle" data-ga-areas-toggle aria-expanded="${r.gaAreasExpanded}"><span>${V(r.tf("picker.gaAreasHeading","Areas"))}</span><small>${n.length}</small></button>`+(r.gaAreasExpanded?`<div class="sl-ga-areas-list">${n.map(o=>`<button type="button" class="sl-ga-area-open" data-ga-open="${V(o.id)}"${o.available<=0?" disabled":""}><span class="name">${V(o.displayLabel??o.label)}<small>${V(o.displayType??r.tf("picker.generalAdmission","General admission"))}</small></span><span class="meta">${V(r.money(r.paidPrice(o.categoryKey,null,o.price,o.id)))} \xB7 ${V(o.available>0?(0,W.tCount)("picker.leftCount",o.available):r.tf("picker.soldOutTitle","Sold out"))}</span></button>`).join("")}</div>`:"")+"</div>"),i.join("")}function ji(r,e,t){e.querySelectorAll(".sl-ga .sl-ga-qty button").forEach(i=>{i.addEventListener("click",()=>{let s=i.closest(".sl-ga");if(!s?.dataset.ga)return;let n=t.find(c=>c.id===s.dataset.ga);if(!n)return;let o=s.dataset.gaRowTier?s.dataset.gaRowTier:null,a=Number(i.dataset.d),l=r.gaQty.get(n.id)?.get(o)??0;if(a>0&&Bi(r,n)-Ne(r.gaQty,n.id)<=0){r.toast((0,W.t)("picker.maxTicketsForOrder",{count:r.maxTickets}),"warning");return}nt(r.gaQty,n.id,o,Math.max(0,l+a)),r.syncTray()})}),e.querySelector("[data-ga-areas-toggle]")?.addEventListener("click",()=>{r.gaAreasExpanded=!r.gaAreasExpanded,r.syncTray()}),e.querySelectorAll("[data-ga-open]").forEach(i=>{i.addEventListener("click",()=>{let s=t.find(n=>n.id===i.dataset.gaOpen);s&&Yt(r,s,null,i)})})}var Tt='<svg viewBox="0 0 64 56" width="12" height="11" fill="none" aria-hidden="true" focusable="false" style="display:block"><path d="M4 13 Q16 6 29 7 L28.5 17 Q17 16.5 7 22 Z" fill="#f4b740"/><path d="M4 13 Q16 6 29 7 L28.5 17 Q17 16.5 7 22 Z" fill="#f4b740" transform="translate(64 0) scale(-1 1)"/><path d="M8 28 Q18 22 28.6 23 L28.2 32 Q18 28.5 10 36 Z" fill="#fcf7ee"/><path d="M8 28 Q18 22 28.6 23 L28.2 32 Q18 28.5 10 36 Z" fill="#fcf7ee" transform="translate(64 0) scale(-1 1)"/><path d="M11 41 Q19 35 28.2 36 L27.8 45 Q19.5 42 13.5 49 Z" fill="#fcf7ee"/><path d="M11 41 Q19 35 28.2 36 L27.8 45 Q19.5 42 13.5 49 Z" fill="#fcf7ee" transform="translate(64 0) scale(-1 1)"/></svg>';var rn="https://api.seatlayer.io",Ni=10;function nn(r){if(typeof r=="string"){let e=document.querySelector(r);if(!e)throw new Error(`seatmap: container "${r}" not found`);return e}if(!(r instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return r}var Pt=class{constructor(e){this.mount=null;this.hostEl=null;this.eventLocale=null;this.rendered=!1;this.mode_=null;this.eventInfo=null;this.categoryFilter_=null;this.accessibilityFilter_=null;this.hideLimitedView_=!1;this.focusedSection_=null;this.tipEl=null;this.tipPos={x:0,y:0};this.onTipMove=null;this.realtime=null;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.container)throw new Error("seatmap: `container` is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");this.opts=e,this.maxSelection_=e.maxSelection??Ni,this.colorblindSafe_=e.colorblindSafe??!1;let t=!!(e.buyerAccessTokenProvider||e.buyerAccessToken||e.publicKey);this.accessState_={configured:t,status:t?"ready":"public"},this.publicKey=e.publicKey;let i={onExpired:a=>{this.accessState_={configured:!0,status:a.refreshed?"ready":"expired"},this.opts.onAccessExpired?.(a),this.opts.onMapStateChange?.()},onUnavailable:a=>{this.accessState_={configured:!0,status:"unavailable",reason:a.reason},this.opts.onAccessUnavailable?.(a),this.opts.onMapStateChange?.()}},s=(e.apiBase??rn).replace(/\/+$/,""),n=e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?Ct({base:s,event:e.event,publicKey:e.publicKey,accessHooks:i,apiOptions:{onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=n?.access??je(e,i);let o=n?.api??new be(s,{access:this.access??void 0,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)});this.api=o,this.controller=new B.PickerController({transport:o,eventKey:e.event,maxSelection:this.maxSelection_,selectedObjects:e.selectedObjects,selectableObjects:e.selectableObjects,numberOfPlacesToSelect:e.numberOfPlacesToSelect,selectionValidators:e.selectionValidators,currency:e.currency,onSelectionChange:a=>this.opts.onSelectionChange?.(a),onSelectionValidityChange:a=>this.opts.onSelectionValidityChange?.(a),onSelectionValid:a=>this.opts.onSelectionValid?.(a),onSelectionInvalid:a=>this.opts.onSelectionInvalid?.(a),onSelectionLimit:a=>this.opts.onSelectionLimit?.(a),onHold:a=>this.opts.onHold?.({holdId:a.holdId,expiresAt:a.expiresAt,seats:a.seats,items:a.items}),onHoldRestored:a=>this.opts.onHoldRestored?.({holdId:a.holdId,expiresAt:a.expiresAt,seats:a.seats,items:a.items}),onHoldExpired:()=>this.opts.onHoldExpired?.(),onGAClick:a=>{let l=this.controller.getGAAreas().find(c=>c.id===a);l&&(this.opts.onGAClick?.(l),this.opts.onGAPrompt?.({area:l,selected:{},min:0,max:Math.max(0,Math.min(l.available,(this.opts.maxSelection??Ni)-this.controller.getSelection().length)),tiers:Et(l),confirm:c=>{let h=typeof c=="number"?c:Object.values(c).reduce((p,d)=>p+d,0);this.holdGA(l.id,h)},cancel:()=>{}}))},onError:a=>this.opts.onError?.(a),onDeckTap:a=>{this.opts.onDeckTap?.(a),this.opts.onMapStateChange?.()},onHint:a=>this.opts.onHint?.(a),onSectionFocus:a=>{this.focusedSection_=a,this.opts.onSectionFocus?.(a),this.opts.onMapStateChange?.()},onViewChange:()=>{this.opts.onViewChange?.(),this.opts.onMapStateChange?.()},onStatusChange:()=>this.opts.onStatusChange?.(),onSalesClosed:()=>{this.eventInfo&&(this.eventInfo.salesClosed=!0),this.opts.onSalesClosed?.()},flashOnLiveChange:!0,onSeatHover:a=>{this.opts.onSeatHover?.(a),this.opts.seatTooltip!==!1&&this.updateTooltip(a)},colorblindSafe:e.colorblindSafe,mapTheme:e.mapTheme??null})}async render(){if(this.rendered)return this;this.rendered=!0,await(0,B.loadLocale)(this.opts.locale),this.opts.messages&&(0,B.setStringOverrides)(this.opts.messages),this.mount=nn(this.opts.container);let e=document.createElement("div");e.lang=(0,B.getLocale)(),e.dir=(0,B.localeDirection)(),e.style.width="100%",e.style.height="100%",e.style.position="relative",this.mount.appendChild(e),this.hostEl=e;let t=await this.controller.render(e);if(!t)return this.rendered=!1,this.opts.errorDisplay!=="none"&&this.showLoadFailure(e),this;if(this.eventLocale=t.locale??null,!this.opts.locale&&this.eventLocale&&await this.setLocale(this.eventLocale),this.buildLanguageSwitcher(e),this.controller.setViewMode(this.opts.initialView??"flat"),this.startRealtime(),this.mode_=t.mode==="test"?"test":"live",this.eventInfo={name:t.eventName,venue:t.venue??null,startsAt:t.startsAt??null,timezone:t.timezone??null,currency:t.currency??this.opts.currency??"USD",posterUrl:t.posterUrl??null,salesClosed:t.salesClosed},this.opts.seatTooltip!==!1){let i=document.createElement("div");i.setAttribute("role","tooltip"),i.style.cssText='position:absolute;z-index:7;pointer-events:none;display:none;max-width:240px;background:#10162a;color:#fff;border-radius:10px;padding:9px 12px;font:500 12px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 10px 30px -10px rgba(0,0,0,.5);',e.appendChild(i),this.tipEl=i,this.onTipMove=s=>{let n=e.getBoundingClientRect();this.tipPos={x:s.clientX-n.left,y:s.clientY-n.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()},e.addEventListener("mousemove",this.onTipMove)}if(t.mode==="test"&&this.opts.showTestModeIndicator!==!1){e.style.overflow="hidden";let i=document.createElement("div");i.dataset.slI18n="testMode",i.textContent=(0,B.t)("picker.testMode"),i.setAttribute("aria-label",(0,B.t)("picker.testMode")),i.style.cssText="position:absolute;top:18px;right:-34px;z-index:6;transform:rotate(45deg);width:140px;text-align:center;padding:4px 0;background:#f4b740;color:#1a1200;font:800 10.5px/1.4 -apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.12em;box-shadow:0 2px 8px rgba(0,0,0,.25);pointer-events:none;",e.appendChild(i)}return this.opts.showAttribution!==!1&&this.buildBadge(e),this}buildBadge(e){if(this.controller.doc?.theme?.hideBadge)return;let t=document.createElement("a");t.dataset.slI18n="badge",t.href="https://seatlayer.io",t.target="_blank",t.rel="noopener noreferrer",t.setAttribute("aria-label",(0,B.t)("picker.poweredBy")),t.style.cssText='position:absolute;bottom:10px;right:12px;z-index:5;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#4a5163;text-decoration:none;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.02em;box-shadow:0 2px 8px rgba(0,0,0,.12);';let i=document.createElement("span");i.setAttribute("aria-hidden","true"),i.style.cssText="width:16px;height:16px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;background:#0c1220;color:#fcf7ee",i.innerHTML=Tt;let s=document.createElement("span");s.textContent=(0,B.t)("picker.poweredBy"),t.append(i,s),e.appendChild(t)}placeTooltip(){if(!this.tipEl||!this.hostEl)return;let e=this.hostEl.clientWidth,t=this.tipEl.offsetWidth,i=this.tipEl.offsetHeight,s=this.tipPos.x+14,n=this.tipPos.y-i-12;s+t>e-8&&(s=this.tipPos.x-t-14),n<8&&(n=this.tipPos.y+18),this.tipEl.style.left=`${Math.max(8,s)}px`,this.tipEl.style.top=`${Math.max(8,n)}px`}updateTooltip(e){if(!this.tipEl)return;if(!e){this.tipEl.style.display="none";return}let t=(0,B.formatMoney)(e.price,e.currency,{...Number.isInteger(e.price)?{minimumFractionDigits:0,maximumFractionDigits:0}:{},locale:this.opts.locale,fallback:(l,c)=>`${l} ${c}`}),i=document.createElement("div");i.style.cssText="font-weight:700;font-size:13px",i.textContent=e.label;let s=document.createElement("div");s.style.cssText="display:flex;align-items:center;gap:6px;margin-top:4px;color:#c7cddc";let n=document.createElement("span");n.style.cssText="width:9px;height:9px;border-radius:50%;flex:none",n.style.background=e.categoryColor;let o=document.createElement("span");o.textContent=e.categoryLabel;let a=document.createElement("span");if(a.style.cssText="margin-left:auto;font-weight:700;color:#fff",a.textContent=t,s.append(n,o,a),this.tipEl.replaceChildren(i,s),e.status!=="free"){let l=document.createElement("div");l.style.cssText="margin-top:5px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#fca5a5;font-weight:700",l.textContent=e.status==="held"?(0,B.t)("map.statusHeld"):(0,B.t)("map.statusTaken"),this.tipEl.appendChild(l)}this.tipEl.style.display="block",this.placeTooltip()}buildLanguageSwitcher(e){let t=(this.opts.languages??[]).map(s=>(0,B.resolveLocale)(s)).filter((s,n,o)=>o.indexOf(s)===n);if(t.length<2)return;let i=document.createElement("select");i.setAttribute("aria-label",(0,B.t)("picker.preferredTicketType")),i.style.cssText='position:absolute;bottom:10px;left:12px;z-index:5;appearance:none;padding:5px 9px;border-radius:999px;border:0;cursor:pointer;background:rgba(255,255,255,.92);color:#4a5163;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.12);';for(let s of t){let n=document.createElement("option");n.value=s,n.textContent=B.LOCALE_NAMES[s]??s,n.selected=s===(0,B.getLocale)(),i.appendChild(n)}i.addEventListener("change",()=>{this.setLocale(i.value)}),e.appendChild(i)}async setLocale(e){let t=(0,B.getLocale)(),i=await(0,B.loadLocale)(e);if(this.opts.messages&&(0,B.setStringOverrides)(this.opts.messages),i===t)return i;if(this.hostEl){this.hostEl.lang=i,this.hostEl.dir=(0,B.localeDirection)();for(let s of this.hostEl.querySelectorAll("[data-sl-i18n]"))if(s.dataset.slI18n==="testMode")s.textContent=(0,B.t)("picker.testMode"),s.setAttribute("aria-label",(0,B.t)("picker.testMode"));else if(s.dataset.slI18n==="badge"){s.setAttribute("aria-label",(0,B.t)("picker.poweredBy"));let n=s.querySelector("span:last-child");n&&(n.textContent=(0,B.t)("picker.poweredBy"))}}return this.controller.refreshMapCopy(),i}getMode(){return this.mode_}getPickerState(){let e=this.controller.doc,t=e?.theme??{},i=this.controller.categoryAvailability(),s=this.controller.getGAAreas(),n=this.controller.getFloors(),o=e?.floors?.flatMap(l=>l.objects)??e?.objects??[],a=new Map;for(let l of o)l.type==="section"&&a.set(l.id,{id:l.id,label:l.label,...l.displayLabel?{displayLabel:l.displayLabel}:{},...l.zone?{zoneId:l.zone}:{}});return{event:{key:this.opts.event,name:this.eventInfo?.name??e?.name??this.opts.event,venue:this.eventInfo?.venue??null,startsAt:this.eventInfo?.startsAt??null,timezone:this.eventInfo?.timezone??null,currency:this.eventInfo?.currency??this.opts.currency??"USD",locale:(0,B.getLocale)()||this.eventLocale,posterUrl:this.eventInfo?.posterUrl??null,mode:this.mode_??"live",salesClosed:this.eventInfo?.salesClosed??!1},branding:{...t.accent?{accent:t.accent}:{},...t.accentInk?{accentInk:t.accentInk}:{},...t.background?{background:t.background}:{},...t.textColor?{textColor:t.textColor}:{},...t.brandName?{brandName:t.brandName}:{},...t.logoUrl?{logoUrl:t.logoUrl}:{},attributionRequired:!t.hideBadge},features:{ga:s.length>0,tiers:!!e?.categories.some(l=>l.tiers?.length),floors:n.length>1,zones:!!e?.zones?.length,sections:a.size>0,bestAvailable:!0,accessibilityFilter:!0,limitedViewFilter:!0},catalog:{categories:(e?.categories??[]).filter(l=>!l.notForSale).map(l=>({key:l.key,label:l.label,color:l.color,price:l.price??l.tiers?.[0]?.price??0,available:i[l.key]??0,tiers:(l.tiers??[]).map(c=>({id:c.id,name:c.name,price:c.price,...c.currency?{currency:c.currency}:{}}))})),zones:(e?.zones??[]).map(l=>({id:l.id,label:l.label,...l.color?{color:l.color}:{}})),sections:[...a.values()],gaAreas:s,bestAvailableZones:this.controller.getBestAvailableZones()},map:{floors:n,activeFloorId:this.controller.getActiveFloorId()||n[0]?.id||null,rung:this.controller.getRung(),focusedSectionId:this.controller.getFocusedSection(),focusedSection:this.focusedSection_,viewMode:this.controller.getViewMode(),colorblindSafe:this.colorblindSafe_,categoryFilter:this.categoryFilter_?[...this.categoryFilter_]:null,accessibilityFilter:this.accessibilityFilter_?[...this.accessibilityFilter_]:null,hideLimitedView:this.hideLimitedView_},selection:{seats:this.controller.getSelection(),validity:this.controller.getSelectionValidity(),maxSelection:this.maxSelection_},access:{...this.accessState_}}}getCategoryAvailability(){return this.controller.categoryAvailability()}getBestAvailableZones(){return this.controller.getBestAvailableZones()}getActiveFloorId(){return this.controller.getActiveFloorId()||null}getRung(){return this.controller.getRung()}getFocusedSection(){return this.controller.getFocusedSection()}focusSection(e){this.controller.focusSection(e),this.opts.onMapStateChange?.()}overview(){this.controller.overview(),this.opts.onMapStateChange?.()}setRung(e){this.controller.setRung(e),this.opts.onMapStateChange?.()}setCategoryFilter(e,t=!1){this.categoryFilter_=e?[...e]:null,this.controller.setCategoryFilter(e),t&&this.controller.focusCategoryFilter(e),this.opts.onMapStateChange?.()}setAccessibilityFilter(e){this.accessibilityFilter_=e?[...e]:null,this.controller.setAccessibilityFilter(e),this.opts.onMapStateChange?.()}setCommercialLimitedFilter(e){this.hideLimitedView_=e,this.controller.setCommercialLimitedFilter(e),this.opts.onMapStateChange?.()}getSelection(){return this.controller.getSelection()}selectObjects(e){return this.controller.select(e)}deselectObjects(e){this.controller.deselect(e)}clearSelection(){this.controller.clearSelection()}selectCategories(e){return this.controller.selectCategories(e)}deselectCategories(e){this.controller.deselectCategories(e)}setSelectableObjects(e){this.controller.setSelectableObjects(e)}setMaxSelection(e){this.maxSelection_=e,this.controller.setMaxSelection(e),this.opts.onMapStateChange?.()}getSelectionValidity(){return this.controller.getSelectionValidity()}async hold(e={}){try{return await this.holdOrThrow(e)}catch(t){return this.opts.onError?.(t),null}}async holdOrThrow(e={}){let t=this.controller.getSelectionValidity();if(t&&!t.isValid){let s=t.violations.includes("numberOfPlacesToSelect");throw Object.assign(new Error(s?`seatmap: select exactly ${t.required} places before holding`:"seatmap: adjust the ticket selection before holding"),{code:s?"selection_count_mismatch":"selection_invalid",selection:t})}let i=await this.controller.hold(void 0,e.ttlMs);return i?{holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items}:null}async resumeHold(e){try{return await this.resumeHoldOrThrow(e)}catch(t){return this.opts.onError?.(t),null}}async resumeHoldOrThrow(e){let t=await this.controller.resumeHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}async extendHold(e){try{let t=await this.controller.extendHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}catch(t){return this.opts.onError?.(t),null}}getCurrentHold(){let e=this.controller.currentHold();return e?{holdId:e.holdId,expiresAt:e.expiresAt,seats:e.seats,items:e.items}:null}getGAAreas(){return this.controller.getGAAreas()}async holdGA(e,t,i={}){try{return await this.holdGAOrThrow(e,t,i)}catch(s){return this.opts.onError?.(s),null}}async holdGAOrThrow(e,t,i={}){let s=await this.controller.holdGA(e,t,i);return s?{holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items}:null}async bestAvailable(e,t,i={}){try{return await this.bestAvailableOrThrow(e,t,i)}catch(s){return this.opts.onError?.(s),null}}async bestAvailableOrThrow(e,t,i={}){let s=await this.controller.bestAvailable(e,t,i);return s?{holdId:s.holdId,expiresAt:s.expiresAt,labels:s.labels,seats:s.seats,items:s.items,...i.zoneId?{zoneId:i.zoneId}:{}}:null}setSeatTier(e,t){this.controller.setSeatTier(e,t)}setTableQuantity(e,t){return this.controller.setTableQuantity(e,t)}async replaceTableQuantity(e,t,i){try{return await this.replaceTableQuantityOrThrow(e,t,i)}catch(s){return this.opts.onError?.(s),null}}async replaceTableQuantityOrThrow(e,t,i){let s=await this.controller.replaceTableQuantity(e,t,i);return s?{holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items}:null}getFloors(){return this.controller.getFloors()}setFloor(e){if(this.controller.getFloors().length<=1){console.warn("seatmap: setFloor() ignored \u2014 this chart has a single floor");return}this.controller.setFloor(e),this.opts.onMapStateChange?.()}setColorblindSafe(e){this.colorblindSafe_=e,this.controller.setColorblindSafe(e),this.opts.onMapStateChange?.()}setViewMode(e){this.controller.setViewMode(e),this.opts.onMapStateChange?.()}getViewMode(){return this.controller.getViewMode()}zoomIn(){this.controller.zoomIn(),this.opts.onMapStateChange?.()}zoomOut(){this.controller.zoomOut(),this.opts.onMapStateChange?.()}zoomToFit(){this.controller.zoomToFit(),this.opts.onMapStateChange?.()}async release(){await this.controller.release()}async releaseLabels(e){return this.controller.releaseLabels(e)}startRealtime(){!this.access?.configured||this.realtime||(this.realtime=new oe({url:this.api.subscribeUrl(this.opts.event),mintTicket:()=>this.api.subscribeTicket(this.opts.event),onAccessUnavailable:e=>this.opts.onAccessUnavailable?.(e),sink:$e(this.controller,{flashOnLiveChange:!0,onSelectedObjectUnavailable:(e,t)=>this.opts.onSelectedObjectUnavailable?.({labels:e,reason:t})})}),this.realtime.start())}async refreshAvailability(){await this.controller.refresh(),this.opts.onStatusChange?.()}async refreshAccess(){if(!this.access?.configured)return!1;let e=await this.access.refresh("manual");return e&&(this.accessState_={configured:!0,status:"ready"},await this.controller.refresh(),this.realtime?.restart(),this.realtime||this.startRealtime()),this.opts.onMapStateChange?.(),e}showLoadFailure(e){let t=document.createElement("div");t.setAttribute("role","status"),t.style.cssText='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;min-height:180px;box-sizing:border-box;padding:24px;text-align:center;font:500 14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#3b4256;';let i=document.createElement("div");i.textContent="The seat map didn\u2019t load.",t.appendChild(i);let s=document.createElement("button");s.type="button",s.textContent="Try again",s.style.cssText="appearance:none;border:1px solid #c9cede;background:#fff;color:#10162a;border-radius:8px;padding:8px 16px;font:600 13px/1 inherit;cursor:pointer;",s.addEventListener("click",()=>{this.destroy(),this.render().catch(n=>this.opts.onError?.(n))}),t.appendChild(s),e.appendChild(t)}destroy(){this.realtime?.stop(),this.realtime=null,this.access?.clear(),this.hostEl&&this.onTipMove&&this.hostEl.removeEventListener("mousemove",this.onTipMove),this.tipEl=null,this.onTipMove=null,this.controller.destroy(),this.hostEl&&this.hostEl.parentNode&&this.hostEl.parentNode.removeChild(this.hostEl),this.hostEl=null,this.mount=null,this.rendered=!1,this.mode_=null,this.eventInfo=null,this.focusedSection_=null}};var Xt=["hold","resumeHold","getCurrentHold","getGAAreas","holdGA","bestAvailable","release","releaseLabels","getSelection","selectObjects","deselectObjects","clearSelection","selectCategories","deselectCategories","setSelectableObjects","setMaxSelection","getSelectionValidity","setSeatTier","getFloors","setFloor","setColorblindSafe","zoomIn","zoomOut","zoomToFit","refreshAccess"],on={hold:()=>Promise.resolve(null),resumeHold:()=>Promise.resolve(null),getCurrentHold:()=>null,getGAAreas:()=>[],holdGA:()=>Promise.resolve(null),bestAvailable:()=>Promise.resolve(null),release:()=>Promise.resolve(),releaseLabels:()=>Promise.resolve(!1),getSelection:()=>[],selectObjects:()=>[],deselectObjects:()=>{},clearSelection:()=>{},selectCategories:()=>[],deselectCategories:()=>{},setSelectableObjects:()=>{},setMaxSelection:()=>{},getSelectionValidity:()=>null,setSeatTier:()=>{},getFloors:()=>[],setFloor:()=>{},setColorblindSafe:()=>{},zoomIn:()=>{},zoomOut:()=>{},zoomToFit:()=>{},refreshAccess:()=>Promise.resolve(!1)};function Vi(r){let e={};for(let t of Xt)e[t]=(...i)=>{let s=r();return s?s[t](...i):on[t]()};return e}var Zt=["event","apiBase","maxSelection","numberOfPlacesToSelect","selectionValidators","publicKey","locale","currency","colorblindSafe","initialView","errorDisplay"],Jt=[...Zt,"selectedObjects","selectableObjects","messages","seatTooltip","buyerAccessTokenProvider","buyerAccessToken"],ei=["onSelectionChange","onSelectionValidityChange","onSelectionValid","onSelectionInvalid","onSelectionLimit","onHold","onHoldRestored","onHoldExpired","onGAClick","onGAPrompt","onError","onDeckTap","onHint","onSeatHover","onAccessExpired","onAccessUnavailable","onSelectedObjectUnavailable"];function Gi(r,e,t){let i={container:r};for(let s of Jt)i[s]=e[s];for(let s of ei)i[s]=t[s];return i}var an=new Set(["seatlayer.designer.ready","seatlayer.designer.saved","seatlayer.designer.published","seatlayer.designer.close","seatlayer.designer.error"]),ln=2e4,cn=480,dn=180*1e3,pn=900*1e3,hn=.8,un=30*1e3,mn=1e5,fn=4,gn=50;function ti(r){if(typeof r!="string")return r;let e=document.querySelector(r);if(!e)throw new Error(`EmbeddedDesigner container not found: ${r}`);return e}function bn(r){let e=(r??"").toLowerCase();return e.includes("expire")||e.includes("revoke")||e==="401"?"expired":e.includes("mismatch")?"mismatch":e.includes("timeout")?"timeout":"load"}var vn={expired:{title:"This design session expired",body:"For your security, editing sessions are short-lived. Start a fresh one to keep designing."},mismatch:{title:"This editor doesn't match this chart",body:"The session that loaded belongs to a different chart or workspace. Reopen the designer to continue."},timeout:{title:"The designer is taking too long",body:"It did not finish loading in time. This is usually a slow connection \u2014 try again."},load:{title:"We couldn't load the designer",body:"Something went wrong while opening the editor. Please try again."}},At=class{constructor(e){this.frame=null;this.designerOrigin="";this.overlay=null;this.timeoutTimer=null;this.renewTimer=null;this.autoRecoverUsed=!1;this.phase="loading";this.identityEstablished=!1;this.restoreContainerPosition=null;this.pinned=!1;this.frameStyleBeforeFs=null;this.docOverflowBeforeFs=null;this.bodyOverflowBeforeFs=null;this.fsKeyHandler=null;this.lastAutoHeight="";this.fillRaf=null;this.reprobeRaf=null;this.fillListening=!1;this.containerEl=null;this.fillMode=null;this.resizeObs=null;this.scheduleFill=()=>{this.fillRaf===null&&(this.fillRaf=requestAnimationFrame(()=>{this.fillRaf=null,this.applyFill()}))};this.scheduleReprobe=()=>{this.reprobeRaf===null&&(this.reprobeRaf=requestAnimationFrame(()=>{this.reprobeRaf=null,!this.pinned&&(this.fillMode=this.detectFillMode(),this.syncContainerObserver(),this.applyFill())}))};this.handleMessage=e=>{if(!this.frame||e.origin!==this.designerOrigin||e.source!==this.frame.contentWindow||!e.data||typeof e.data!="object")return;let t=e.data;if(t.type==="seatlayer.designer.handshake"&&typeof t.nonce=="string"&&t.nonce.length<=128){this.frame.contentWindow?.postMessage({type:"seatlayer.designer.parent",nonce:t.nonce},this.designerOrigin);return}if(t.type==="seatlayer.designer.resize"){!this.fillEnabled()&&this.autoResizeEnabled()&&typeof t.px=="number"&&Number.isFinite(t.px)&&t.px>0&&(this.lastAutoHeight=`${Math.round(t.px)}px`,this.pinned||this.setFrameHeight(this.lastAutoHeight));return}if(t.type==="seatlayer.designer.fullscreen"){t.on===!0?this.pinFullscreen():t.on===!1&&this.unpinFullscreen();return}if(typeof t.type!="string"||!an.has(t.type))return;let i={type:t.type,chartId:typeof t.chartId=="string"?t.chartId:void 0,workspaceId:typeof t.workspaceId=="string"?t.workspaceId:void 0,expiresAt:typeof t.expiresAt=="number"?t.expiresAt:void 0,code:typeof t.code=="string"?t.code:void 0,message:typeof t.message=="string"?t.message:void 0,meta:t.meta,fatal:typeof t.fatal=="boolean"?t.fatal:void 0,action:typeof t.action=="string"?t.action:void 0},s=this.identityEstablished||i.type==="seatlayer.designer.ready"||i.type==="seatlayer.designer.saved"||i.type==="seatlayer.designer.published"||i.type==="seatlayer.designer.close",n=this.options.expectedChartId!==void 0&&i.chartId!==this.options.expectedChartId&&(s||i.chartId!==void 0),o=this.options.expectedWorkspaceId!==void 0&&i.workspaceId!==this.options.expectedWorkspaceId&&(s||i.workspaceId!==void 0);if(n||o){this.showError("mismatch");return}switch(i.type){case"seatlayer.designer.ready":this.identityEstablished=!0,this.sessionExpiresAt=i.expiresAt,this.phase="ready",this.clearTimeoutTimer(),this.removeOverlay(),this.autoRecoverUsed=!1,this.scheduleRenewal(i.expiresAt),this.options.onReady?.(i);break;case"seatlayer.designer.saved":this.options.onSaved?.(i);break;case"seatlayer.designer.published":this.options.onPublished?.(i);break;case"seatlayer.designer.close":this.options.onClose?.(i);break;case"seatlayer.designer.error":{let a=bn(i.code);if(a==="expired"&&this.autoRenewEnabled()&&!this.autoRecoverUsed){this.autoRecoverUsed=!0,this.clearRenewTimer(),this.options.onRequestRelaunch();return}(typeof i.fatal=="boolean"?i.fatal:a!=="load"||this.phase!=="ready")&&this.showError(a),this.options.onError?.(i);break}}};this.options=e}mount(){this.destroy();let e=new URL(this.options.designerUrl,window.location.href);if(e.protocol!=="https:"&&e.hostname!=="localhost"&&e.hostname!=="127.0.0.1")throw new Error("EmbeddedDesigner requires an HTTPS designerUrl outside local development.");this.designerOrigin=e.origin;let t=document.createElement("iframe");t.title=this.options.title??"Venue chart Designer",t.allow=this.options.allow??"fullscreen; clipboard-write",t.referrerPolicy=this.options.referrerPolicy??"origin",t.src=e.toString(),t.style.setProperty("width","100%","important"),t.style.setProperty("height",typeof this.options.height=="number"?`${this.options.height}px`:"100%","important"),t.style.border="0",Object.assign(t.style,this.options.style),this.options.className&&(t.className=this.options.className);let i=ti(this.options.container);if(this.containerEl=i,window.addEventListener("message",this.handleMessage),i.append(t),this.frame=t,this.fillEnabled()&&this.startFill(),this.phase="loading",this.loadingStateEnabled()){this.ensureContainerPositioned(i),this.renderOverlay(i,"loading");let s=this.options.loadingTimeoutMs??ln;s>0&&Number.isFinite(s)&&(this.timeoutTimer=setTimeout(()=>{this.phase==="loading"&&this.showError("timeout")},s))}return t}setDesignerUrl(e){return this.options={...this.options,designerUrl:e},this.mount()}getIframe(){return this.frame}setSizing(e,t){this.options={...this.options,height:e,minHeight:t},this.frame&&(this.stopFill(),this.lastAutoHeight="",this.fillEnabled()?(this.pinned||this.setFrameHeight("100%"),this.startFill()):this.pinned||this.setFrameHeight(`${e}px`))}setRelaunchPolicy(e,t){this.options={...this.options,onRequestRelaunch:e,autoRenewSession:t},this.clearRenewTimer(),this.phase==="ready"&&this.scheduleRenewal(this.sessionExpiresAt)}destroy(){window.removeEventListener("message",this.handleMessage),this.stopFill(),this.unpinFullscreen(),this.clearTimeoutTimer(),this.clearRenewTimer(),this.removeOverlay(),this.restoreContainerStyle(),this.frame?.remove(),this.frame=null,this.containerEl=null,this.fillMode=null,this.designerOrigin="",this.phase="loading",this.identityEstablished=!1,this.sessionExpiresAt=void 0,this.lastAutoHeight=""}loadingStateEnabled(){return this.options.showLoadingState!==!1}autoResizeEnabled(){return this.options.autoResize!==!1}fillEnabled(){return typeof this.options.height!="number"}setFrameHeight(e){this.frame?.style.setProperty("height",e,"important")}detectFillMode(){let e=this.containerEl,t=this.frame;if(this.pinned||!e||!t)return this.fillMode??"viewport";let i=()=>e.getBoundingClientRect().height,s=t.style.getPropertyValue("height"),n=t.style.getPropertyPriority("height");t.style.setProperty("height","0px","important");let o=i();t.style.setProperty("height",`${mn}px`,"important");let a=i();return s?t.style.setProperty("height",s,n):t.style.removeProperty("height"),!(a-o>fn)&&o>=gn?"container":"viewport"}applyFill(){if(!this.frame||this.pinned)return;let e=this.options.minHeight??cn;if(this.fillMode==="container"&&this.containerEl){let s=Math.max(e,Math.round(this.containerEl.getBoundingClientRect().height));this.setFrameHeight(`${s}px`);return}let t=this.frame.getBoundingClientRect().top,i=Math.max(e,Math.round(window.innerHeight-t));this.setFrameHeight(`${i}px`)}syncContainerObserver(){let e=this.fillMode==="container"&&!!this.containerEl&&typeof ResizeObserver<"u";e&&!this.resizeObs?(this.resizeObs=new ResizeObserver(()=>this.scheduleFill()),this.resizeObs.observe(this.containerEl)):!e&&this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null)}startFill(){this.fillMode=this.detectFillMode(),this.syncContainerObserver(),this.applyFill(),!this.fillListening&&(this.fillListening=!0,window.addEventListener("resize",this.scheduleReprobe),window.addEventListener("orientationchange",this.scheduleReprobe),window.addEventListener("scroll",this.scheduleFill,{passive:!0}))}stopFill(){this.fillRaf!==null&&(cancelAnimationFrame(this.fillRaf),this.fillRaf=null),this.reprobeRaf!==null&&(cancelAnimationFrame(this.reprobeRaf),this.reprobeRaf=null),this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null),this.fillListening&&(this.fillListening=!1,window.removeEventListener("resize",this.scheduleReprobe),window.removeEventListener("orientationchange",this.scheduleReprobe),window.removeEventListener("scroll",this.scheduleFill))}pinFullscreen(){if(this.pinned||!this.frame)return;this.pinned=!0,this.frameStyleBeforeFs=this.frame.getAttribute("style");let e={position:"fixed",top:"0",right:"0",bottom:"0",left:"0",width:"100vw",height:"100vh",margin:"0",border:"0","z-index":"2147483000",background:"#101625"};for(let[i,s]of Object.entries(e))this.frame.style.setProperty(i,s,"important");let t=document.documentElement;this.docOverflowBeforeFs=t.style.overflow,t.style.overflow="hidden",document.body&&(this.bodyOverflowBeforeFs=document.body.style.overflow,document.body.style.overflow="hidden"),this.fsKeyHandler=i=>{i.key==="Escape"&&this.unpinFullscreen()},window.addEventListener("keydown",this.fsKeyHandler)}unpinFullscreen(){this.pinned&&(this.pinned=!1,this.frame&&(this.frameStyleBeforeFs===null?this.frame.removeAttribute("style"):this.frame.setAttribute("style",this.frameStyleBeforeFs),this.fillEnabled()?this.applyFill():this.autoResizeEnabled()&&this.lastAutoHeight?this.setFrameHeight(this.lastAutoHeight):typeof this.options.height=="number"&&this.setFrameHeight(`${this.options.height}px`)),this.frameStyleBeforeFs=null,this.docOverflowBeforeFs!==null&&(document.documentElement.style.overflow=this.docOverflowBeforeFs,this.docOverflowBeforeFs=null),this.bodyOverflowBeforeFs!==null&&document.body&&(document.body.style.overflow=this.bodyOverflowBeforeFs,this.bodyOverflowBeforeFs=null),this.fsKeyHandler&&(window.removeEventListener("keydown",this.fsKeyHandler),this.fsKeyHandler=null))}clearTimeoutTimer(){this.timeoutTimer!==null&&(clearTimeout(this.timeoutTimer),this.timeoutTimer=null)}autoRenewEnabled(){return!!this.options.onRequestRelaunch&&this.options.autoRenewSession!==!1}clearRenewTimer(){this.renewTimer!==null&&(clearTimeout(this.renewTimer),this.renewTimer=null)}scheduleRenewal(e){if(this.clearRenewTimer(),!this.autoRenewEnabled()||typeof e!="number"||!Number.isFinite(e))return;let t=e-Date.now();if(t<=0)return;let i=t<pn?t*hn:t-dn,s=Math.max(un,i);this.renewTimer=setTimeout(()=>{this.renewTimer=null,this.autoRenewEnabled()&&this.options.onRequestRelaunch()},s)}ensureContainerPositioned(e){getComputedStyle(e).position==="static"&&(this.restoreContainerPosition=e.style.position,e.style.position="relative")}restoreContainerStyle(){if(this.restoreContainerPosition!==null){try{ti(this.options.container).style.position=this.restoreContainerPosition}catch{}this.restoreContainerPosition=null}}removeOverlay(){this.overlay?.remove(),this.overlay=null}showError(e){if(this.phase="error",this.clearTimeoutTimer(),!this.loadingStateEnabled())return;let t;try{t=ti(this.options.container)}catch{return}this.renderOverlay(t,"error",e)}handleTryAgain(){if(this.options.onRequestRelaunch){this.options.onRequestRelaunch();return}this.mount()}renderOverlay(e,t,i){this.removeOverlay();let s=document.createElement("div");s.setAttribute("data-seatlayer-designer-overlay",t),s.setAttribute("role",t==="error"?"alert":"status"),s.setAttribute("aria-live","polite"),Object.assign(s.style,{position:"absolute",inset:"0",display:"flex",alignItems:"center",justifyContent:"center",background:"#101625",color:"#e6ebf5",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',zIndex:"2",overflow:"hidden"}),t==="loading"?this.buildSkeleton(s):this.buildErrorCard(s,i??"load"),e.append(s),this.overlay=s}buildSkeleton(e){let t=document.createElement("style");t.textContent=`
42
- @media (prefers-reduced-motion: no-preference) {
43
- @keyframes seatlayer-designer-shimmer {
44
- 0% { background-position: -320px 0; }
45
- 100% { background-position: 320px 0; }
46
- }
47
- [data-seatlayer-designer-overlay="loading"] .sl-shimmer {
48
- animation: seatlayer-designer-shimmer 1.25s ease-in-out infinite;
49
- background-size: 640px 100%;
50
- }
51
- }`,e.append(t);let i="linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.10) 37%, rgba(255,255,255,0.04) 63%)",s=document.createElement("div");Object.assign(s.style,{position:"absolute",inset:"0",display:"flex",flexDirection:"column",padding:"16px",gap:"14px",opacity:"0.9"});let n=c=>{let h=document.createElement("div");return h.className="sl-shimmer",Object.assign(h.style,{background:i,borderRadius:"8px"}),Object.assign(h.style,c),h};s.append(n({height:"40px",width:"100%",flex:"0 0 auto"}));let o=document.createElement("div");Object.assign(o.style,{display:"flex",gap:"14px",flex:"1 1 auto",minHeight:"0"}),o.append(n({width:"220px",height:"100%",flex:"0 0 auto"})),o.append(n({flex:"1 1 auto",height:"100%"})),s.append(o),e.append(s);let a=document.createElement("div");Object.assign(a.style,{position:"relative",zIndex:"1",display:"flex",alignItems:"center",gap:"10px",padding:"10px 16px",borderRadius:"999px",background:"rgba(16, 22, 37, 0.72)",fontSize:"13px",fontWeight:"500",letterSpacing:"0.01em"});let l=document.createElement("span");l.className="sl-shimmer",Object.assign(l.style,{width:"9px",height:"9px",borderRadius:"50%",background:i,flex:"0 0 auto"}),a.append(l),a.append(document.createTextNode("Loading designer\u2026")),e.append(a)}buildErrorCard(e,t){let i=vn[t],s=document.createElement("div");Object.assign(s.style,{maxWidth:"420px",margin:"0 24px",padding:"28px",textAlign:"center",background:"rgba(255, 255, 255, 0.03)",border:"1px solid rgba(255, 255, 255, 0.08)",borderRadius:"16px",boxShadow:"0 12px 40px rgba(0, 0, 0, 0.35)"});let n=document.createElement("h2");n.textContent=i.title,Object.assign(n.style,{margin:"0 0 8px",fontSize:"17px",fontWeight:"600",color:"#f4f7ff"});let o=document.createElement("p");o.textContent=i.body,Object.assign(o.style,{margin:"0 0 20px",fontSize:"13.5px",lineHeight:"1.5",color:"#aab4c8"});let a=document.createElement("button");a.type="button",a.textContent="Try again",Object.assign(a.style,{appearance:"none",cursor:"pointer",border:"0",borderRadius:"10px",padding:"10px 22px",fontSize:"14px",fontWeight:"600",color:"#101625",background:"#7aa2ff"}),a.addEventListener("click",()=>this.handleTryAgain()),s.append(n,o,a),e.append(s)}};var b=require("@seatlayer/core"),pt=require("@seatlayer/core/view3d/crossfade/panorama"),xr=require("@seatlayer/core/core/seatConfidence");var xs=require("@seatlayer/core/core/seatConfidence");var ye=require("@seatlayer/core"),os=require("@seatlayer/core/core/seatConfidence");var Qi=require("@seatlayer/core"),Xi=require("@seatlayer/core/core/cdnAsset");var yn=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,xn=/[\s"'<>`\\]/;function Lt(r){if(typeof r!="string"||!r||r.length>2e6||r!==r.trim())return!1;if(r.startsWith("data:"))return yn.test(r);if(xn.test(r))return!1;try{let e=new URL(r);return e.protocol==="https:"&&!e.username&&!e.password}catch{return!1}}var Pn=require("@seatlayer/core/core/cdnAsset");function f(r,e){let t=(0,Qi.t)(r);return t===r?e:t}function Zi(r){if(typeof r=="string"){let e=document.querySelector(r);if(!e)throw new Error(`seatmap: container "${r}" not found`);return e}if(!(r instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return r}function F(r){return String(r??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function Ji(r,e,t){let i=e.find(n=>Lt(n))??null;if(r.replaceChildren(),!i)return r.textContent=t.slice(0,1).toUpperCase(),null;let s=document.createElement("img");return s.alt="",s.referrerPolicy="no-referrer",s.src=i,r.appendChild(s),i}var Ge=null;function es(){if(Ge!==null)return Ge;try{if(typeof document>"u")return Ge=!1;Ge=!!document.createElement("canvas").getContext("webgl2")}catch{Ge=!1}return Ge}function si(r){return(0,Xi.cdnAssetUrl)(r)}async function ts(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(si("seatlayer-view3d.mjs")):import("@seatlayer/core/view3d")}async function is(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(si("seatlayer-panorama.mjs")):import("@seatlayer/core")}async function ss(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(si("seatlayer-checkout.mjs")):Promise.resolve().then(()=>(Yi(),Wi))}function rs(r){return r==="unavailable_for_event"||r==="payments_off_for_event"?r:"not_configured"}function Mt(r,e,t){let i={month:"short",day:"numeric",hour:"numeric",minute:"2-digit"},s=new Date(r);if(e)try{return s.toLocaleString(t,{...i,timeZone:e})}catch{}return s.toLocaleString(t,i)}function as(r){return String(r??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function E(r){return String(r??"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function xe(r){return r?.restrictedView?f("picker.restrictedView","Restricted view"):r?.obstructedView?f("picker.obstructedView","Obstructed view"):""}function ls(r){if(!r)return"";let e=[];r.premium&&e.push(`<div class="sl-cx-premium"><span class="sl-cx-star" aria-hidden="true">\u2605</span>${f("picker.premiumSeat","Premium seat")}</div>`);let t=xe(r);return t?e.push(`<div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u25D0</span><span class="sl-cx-txt"><b>${t}</b>${r.note?`<span class="sl-cx-note">${E(r.note)}</span>`:""}</span></div>`):r.note&&e.push(`<div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u2139</span><span class="sl-cx-txt"><span class="sl-cx-note">${E(r.note)}</span></span></div>`),e.length?`<div class="sl-cx">${e.join("")}</div>`:""}function ri(r){let e=xe(r);if(!e)return"";let t=E(r?.note?r.note:e);return`<span class="sl-cx-mark" role="img" aria-label="${t}" title="${t}">\u25D0</span>`}function Ue(r){return r==="no-seat"?f("picker.emptyWheelchairSpace","Empty wheelchair space"):r==="seat-present"?f("picker.accessiblePhysicalSeat","Accessible physical seat"):""}function cs(r){let e=Ue(r);return e?`<div class="sl-cx"><div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u267F</span><span class="sl-cx-txt"><b>${e}</b></span></div></div>`:""}function ni(r){let e=Ue(r);return e?`<span class="sl-cx-mark" role="img" aria-label="${e}" title="${e}">\u267F</span>`:""}function oi(r,e){if(!r)return"";let t=e?f("picker.viewFromThisSeat","View from this seat"):f("picker.seeItIn3d","See it in 3D");return`<button type="button" class="sl-confirm-3d" aria-label="${t}"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2l9 5v10l-9 5-9-5V7z"/><path d="M12 12l9-5M12 12v10M12 12L3 7"/></svg><span>${t}</span></button>`}function ds(r){if(!r)return"";let e=r.previous.label||r.previous.id,t=r.next.label||r.next.id;return`<span class="sl-seccard-nav" aria-label="${f("picker.browseSections","Browse sections")}"><button type="button" data-section-nav="${F(r.previous.id)}" aria-label="${f("picker.previousSection","Previous section")}: ${F(e)}" title="${F(e)}">\u2190</button><button type="button" data-section-nav="${F(r.next.id)}" aria-label="${f("picker.nextSection","Next section")}: ${F(t)}" title="${F(t)}">\u2192</button></span>`}function ps(r,e){if(!e)return"";let t=e,i=t.includes(r.id),s=i?t.length>1?f("picker.openComparison","Open comparison"):f("picker.savedForComparison","Saved for comparison"):t.length?f("picker.compareWithSaved","Compare with saved"):f("picker.saveToCompare","Save to compare");return`<button type="button" class="sl-confirm-compare"${i&&t.length===1?" disabled":""}><span aria-hidden="true">\u21C4</span><span>${E(s)}</span></button>`}function hs(r,e,t){if(!t)return"";let i=(0,os.seatConfidenceDisclosure)(r.confidenceEvidence),s=i.modeledTarget??i.reality;return`<button type="button" class="sl-confirm-confidence" aria-label="Open seat confidence passport for ${E(r.displayLabel??r.label)}"><span><em>${E(e)}</em><strong>${E(i.headline)}</strong><small>${E(s)}</small></span><b>Passport</b></button>`}function we(r){let e=r?.rowLabel,t=r?.sectionLabel;if(!e||!t)return e;for(let i of["-"," ","\xB7","/","_"]){let s=`${t}${i}`;if(e.startsWith(s)&&e.length>s.length)return e.slice(s.length)}return e}function An(r){switch(r){case"paused":return{title:f("picker.accessPausedTitle","These seats are on hold right now"),body:f("picker.accessPausedBody","The organizer has paused this selection. Try again in a few minutes."),action:f("picker.accessRetry","Try again")};case"revoked":return{title:f("picker.accessRevokedTitle","This access link is no longer active"),body:f("picker.accessRevokedBody","Ask whoever sent you here for a new link to keep booking these seats.")};case"no_token":case"provider_failed":return{title:f("picker.accessExpiredTitle","Your access session has ended"),body:f("picker.accessExpiredBody","Sign in again, or reload the page, to keep browsing these seats. Anything you are already holding stays yours."),action:f("picker.accessRetry","Try again")};default:return{title:f("picker.accessInvalidTitle","We couldn\u2019t verify your access"),body:f("picker.accessInvalidBody","You can still book anything shown as available. Contact whoever sent you here for access to the rest.")}}}function us(r,e,t){let i=as;return[r?.sectionLabel?`<div class="sl-confirm-field"><span class="sl-confirm-key">${f("picker.section","Section")}</span><span class="sl-confirm-value">${i(r.sectionLabel)}</span></div>`:"",r?.rowLabel||r?.objectType==="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${i(t)}</span><span class="sl-confirm-value">${i(we(r)??r?.displayLabel??e)}</span></div>`:"",r?.objectType!=="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${f("picker.seat","Seat")}</span><span class="sl-confirm-value">${i(r?.seatNumber??r?.displayLabel??e)}</span></div>`:""].filter(Boolean).join("")}function ns(r){return r.buyerMessage?.trim()||(r.restriction==="companion"?f("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):void 0)}function ms(r,e,t){let i=as;if(r.length>1)return`<fieldset class="sl-confirm-tiers"><legend>${f("picker.ticketType","Ticket type")}</legend>`+r.map(o=>{let a=ns(o);return`<button type="button" class="sl-confirm-tier" data-confirm-tier="${i(o.id)}" aria-pressed="${o.id===e}"><span class="sl-confirm-tier-copy"><span class="sl-confirm-tier-name">${i(o.name)}</span>`+(a?`<small class="sl-confirm-tier-note">${i(a)}</small>`:"")+`</span><span class="sl-confirm-tier-price">${i(t(o))}</span></button>`}).join("")+"</fieldset>";let s=r[0],n=s?ns(s):void 0;return n?`<p class="sl-confirm-tier-note">${i(n)}</p>`:""}function ai(r){return`<span class="sl-seccard-dot" style="background:${E(r.color)}"></span><span class="sl-seccard-name">${E(r.label)}</span><span class="sl-seccard-left">${E(r.leftLabel)}</span>`+r.nav+r.close}function fs(r){return`<div class="sl-seccard-head"><span class="sl-seccard-dot" style="background:${E(r.color)}"></span><span class="sl-seccard-name">${E(r.label)}</span>`+(r.showPrice?`<span class="sl-seccard-price">${E(r.priceLabel)}</span>`:"")+r.close+`</div><div class="sl-seccard-zone">${r.zoneLabel?`${E(r.zoneLabel)} \xB7 `:""}<span class="sl-seccard-left">${E(r.leftLabel)}</span></div>`+(r.entrance?`<div class="sl-seccard-entrance">${E(r.entrance)}</div>`:"")+(r.mix?`<div class="sl-seccard-mix">${r.mix}</div>`:"")+`<div class="sl-seccard-foot"><button type="button" class="sl-seccard-overview">\u2190 ${E(r.overviewLabel)}</button>`+r.nav+`<span class="sl-seccard-hint">${E(r.hint)}</span></div>`}function gs(r){return`<span class="sl-seccard-mix-item${r.dim?" sl-dim":""}"><span class="sl-seccard-mix-dot" style="background:${E(r.color)}"></span>${E(r.label)} <span class="sl-seccard-mix-price">${E(r.rangeLabel)}</span></span>`}function bs(r){return'<div class="sl-confirm-grid">'+r.identityFields+`</div><div class="sl-confirm-cat"><span class="sl-dot" style="background:${E(r.categoryColor)}"></span><span class="sl-confirm-cat-name">${E(r.categoryLabel)}</span>`+(r.priceLabel?`<span class="sl-confirm-price">${E(r.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-body">'+r.tierChoices+r.wheelchair+r.commercial+r.thumb+r.inspect+`<div class="sl-confirm-row"><button type="button" class="sl-confirm-cancel">${E(r.cancelLabel)}</button><button type="button" class="sl-confirm-add"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12.5l4 4L19 7"/></svg>${E(r.selectLabel)}</button></div></div>`}function vs(r,e){let t=F,{variable:i}=e;return`<section class="sl-table-dialog" role="dialog" aria-modal="true" aria-labelledby="sl-table-title" aria-describedby="sl-table-copy"><div class="sl-table-head"><div class="sl-table-eyebrow">${t(i?(0,ye.t)("picker.flexiblePartyTypeWord",{typeWord:e.typeWord}):(0,ye.t)("picker.wholeTypeWord",{typeWord:e.typeWord}))}</div><h2 class="sl-table-title" id="sl-table-title">${t(r.displayLabel??r.label)}</h2><p class="sl-table-copy" id="sl-table-copy">${t(i?f("picker.chooseGuestsCopy","Choose how many guests will sit together. This table is held exclusively for your party."):(0,ye.t)("picker.allPlacesBookedTogether",{count:r.capacity}))}</p></div><div class="sl-table-body"><div class="sl-table-summary"><span>${t(e.categoryLabel)}</span><b data-table-unit>${t((0,ye.t)("picker.perGuestPrice",{price:e.unitPrice}))}</b><span class="muted">${t(f("picker.tableCapacity","Table capacity"))}</span><span>${t((0,ye.t)("picker.guestsCount",{count:r.capacity}))}</span><span class="muted">${t(f("picker.total","Total"))}</span><b data-table-total></b></div>`+(i?`<label class="sl-table-qtylabel" id="sl-table-qty-label">${t(f("picker.numberOfGuests","Number of guests"))}</label><div class="sl-table-stepper" role="group" aria-labelledby="sl-table-qty-label"><button type="button" data-table-step="-1" aria-label="${t(f("picker.fewerGuests","Fewer guests"))}">\u2212</button><output aria-live="polite" data-table-qty>${r.quantity}</output><button type="button" data-table-step="1" aria-label="${t(f("picker.moreGuests","More guests"))}">+</button></div><div class="sl-table-range">${t((0,ye.t)("picker.chooseMinMaxGuests",{min:r.minOccupancy,max:r.maxOccupancy}))}</div>`:`<input type="hidden" data-table-qty value="${r.capacity}">`)+`<div class="sl-table-actions"><button type="button" class="sl-table-cancel">${t((0,ye.t)("common.cancel"))}</button><button type="button" class="sl-table-confirm">${t(e.held?f("picker.updateTable","Update table"):i?f("picker.selectTable","Select table"):f("picker.selectWholeTable","Select whole table"))}</button></div></div></section>`}function ys(r,e){let t=An(r),i=document.createElement("div");i.className="sl-access",i.setAttribute("role","status"),i.setAttribute("aria-live","polite");let s=document.createElement("div"),n=document.createElement("div");n.className="sl-access-title",n.textContent=t.title;let o=document.createElement("div");if(o.className="sl-access-body",o.textContent=t.body,s.append(n,o),t.action){let a=document.createElement("button");a.type="button",a.className="sl-access-act",a.textContent=t.action,a.addEventListener("click",e),s.appendChild(a)}return i.appendChild(s),i}function Y(r){return String(r??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function ws(r){let e=(0,xs.seatConfidenceDisclosure)(r.seat.confidenceEvidence),t=r.seat.confidenceEvidence,i=e.limitations.length?`<h4>Known limits</h4><ul>${e.limitations.map(c=>`<li>${Y(c)}</li>`).join("")}</ul>`:"",s=e.modeledTarget?`<div><dt>Modeled target</dt><dd>${Y(e.modeledTarget)}</dd></div>`:"",n=t?`<div><dt>Evidence ID</dt><dd>${Y(t.evidenceId)}</dd></div><div><dt>Model version</dt><dd>${Y(t.modelVersion)}</dd></div><div><dt>Event configuration</dt><dd>${Y(t.eventConfigurationId??"Not configuration-specific")}</dd></div><div><dt>Approval</dt><dd>${Y(t.approvedByRole??"No external approval supplied")}</dd></div>`+(t.validUntil?`<div><dt>Valid until</dt><dd>${Y(t.validUntil.slice(0,10))}</dd></div>`:""):"<div><dt>Evidence ID</dt><dd>None supplied</dd></div>",o=xe(r.seat.commercial)||r.restrictionFallback,a=`<div><dt>View restriction</dt><dd>${Y(o)}</dd></div>`+(r.seat.commercial?.note?`<div><dt>Organizer note</dt><dd>${Y(r.seat.commercial.note)}</dd></div>`:""),l=r.canReport?'<button type="button" data-report>Report this view</button><p data-report-status role="status" aria-live="polite"></p>':"";return`<div class="sl-view3d-passport-scrim" aria-hidden="true"></div><section class="sl-view3d-passport" role="dialog" aria-modal="true" aria-labelledby="sl-view3d-passport-title"><header><div><span>Seat confidence passport</span><strong id="sl-view3d-passport-title">${Y(r.title)}</strong></div><button type="button" data-close aria-label="Close seat confidence passport">\xD7</button></header><div class="sl-view3d-passport-summary"><strong>${Y(e.headline)}</strong><span>${Y(e.coverage)} \xB7 ${Y(e.freshness)}</span></div><dl><div><dt>Model status</dt><dd>${Y(e.model)}</dd></div><div><dt>Reality evidence</dt><dd>${Y(e.reality)}</dd></div><div><dt>Source</dt><dd>${Y(e.provenance)}</dd></div>`+a+s+n+`</dl>${i}<p class="sl-view3d-passport-note">This passport describes supplied evidence and known limits. It does not guarantee that every temporary obstruction or real-world condition is knowable before the event build.</p>`+l+"</section>"}function ks(r){return r?r.closest("[data-report]")?"report":r.closest("[data-close]")||r.classList.contains("sl-view3d-passport-scrim")?"close":null:null}function Ht(r,e,t){let i=r?.querySelector("[data-report]"),s=r?.querySelector("[data-report-status]");i&&(i.disabled=e!=="failed",i.textContent=e==="received"?"Report received":"Report this view"),s&&(s.setAttribute("role",e==="failed"?"alert":"status"),s.textContent=e==="sending"?"Sending report\u2026":e==="received"?`Report received. Reference ${t??""}.`:"The report could not be sent. Please try again.")}function Ss(r){return r?.previousPrice!=null&&r.previousPrice>r.price?r.previousPrice:null}function Cs(r){return Ln(r)+(r.moreLabel?`<button type="button" class="sl-price-more" aria-expanded="${!r.collapsed}">${r.esc(r.moreLabel)}</button>`:"")+Mn(r.status)}function Ln(r){let{esc:e,money:t}=r;return r.categories.map(i=>{let s=r.priceOf(i),n=r.rangeOf(i),o=r.offerOf(i.key),a=Ss(o),l=r.activeKey===i.key;return`<div class="sl-price-row${r.bandKeys!=null&&!r.bandKeys.has(i.key)?" sl-dim":""}${l?" sl-active":""}" data-cat="${e(i.key)}" role="button" tabindex="0" aria-pressed="${l}" title="${e(r.titleFor(i,l))}"><span class="sl-dot" style="background:${e(r.colorOf(i))}"></span><span class="sl-price-label">${e(i.label)}`+(o?.offerName?`<small class="sl-price-offer">${e(o.offerName)}</small>`:"")+`</span><span class="sl-price-left">${e(r.leftCount(r.left[i.key]??0))}</span>`+(a!=null?`<span class="sl-price-was">${e(t(a))}</span>`:"")+(n!=null?`<span class="sl-price-amt">${n.min===n.max?e(t(n.min)):`${e(t(n.min))}\u2013${e(t(n.max))}`}</span>`:s!=null?`<span class="sl-price-amt">${e(t(s))}</span>`:"")+"</div>"}).join("")}function Mn(r){let e=t=>t.replace(/[&<>"']/g,i=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[i]);return`<div class="sl-status-key" aria-label="${e(r.legend)}"><span class="sl-status-item"><i class="sl-status-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><rect x="5" y="10" width="14" height="10" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></i>${e(r.held)}</span><span class="sl-status-item"><i class="sl-status-icon sold" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M7 17L17 7"/></svg></i>${e(r.sold)}</span></div>`}function li(r){let e=Math.abs(r.scrollLeft),t=e>2,i=e+r.clientWidth<r.scrollWidth-2;return r.dataset.fadeStart=String(t),r.dataset.fadeEnd=String(i),{start:t,end:i}}function Es(r){let{esc:e,money:t}=r;return r.categories.map(i=>{let s=r.rangeOf(i),n=r.priceOf(i),o=s?s.min===s.max?t(s.min):`${t(s.min)}+`:n!=null?t(n):null,a=Object.prototype.hasOwnProperty.call(r.left,i.key)&&r.left[i.key]<=0,l=Ss(r.offerOf(i.key)),c=o?`${i.label} \u2014 ${o}${a?` (${r.soldOutWord})`:""}`:i.label;return`<button type="button" class="sl-rc" data-cat="${e(i.key)}" aria-pressed="${r.activeKey===i.key}" aria-label="${e(c)}" title="${e(c)}"${a?" disabled":""}><i class="sl-rc-dot" style="background:${e(r.colorOf(i))}"></i>`+(l!=null?`<span class="sl-rc-was">${e(t(l))}</span>`:"")+`<span class="sl-rc-t">${e(o??i.label)}</span></button>`}).join("")}function Ts(r,e){let t=r.map(a=>({key:a.key,range:e.rangeOf(a)})).filter(a=>a.range!=null);if(!t.length)return[];let i=[...new Map(t.map(a=>[`${a.range.min}:${a.range.max}`,a.range])).values()].sort((a,l)=>a.min-l.min||a.max-l.max);if(i.length<=5)return i.map(a=>({id:`p${a.min}-${a.max}`,label:a.min===a.max?e.money(a.min):`${e.money(a.min)}\u2013${e.money(a.max)}`,keys:t.filter(l=>l.range.min===a.min&&l.range.max===a.max).map(l=>l.key),min:a.min,max:a.max}));let s=[...t].sort((a,l)=>a.range.min-l.range.min||a.range.max-l.range.max),n=Math.ceil(s.length/4),o=[];for(let a=0;a<s.length;a+=n){let l=s.slice(a,a+n),c=Math.min(...l.map(p=>p.range.min)),h=Math.max(...l.map(p=>p.range.max));o.push({id:`b${a}`,label:c===h?e.money(c):`${e.money(c)}\u2013${e.money(h)}`,keys:l.map(p=>p.key),min:c,max:h})}return o}var Hn=/^[a-zA-Z0-9._-]+$/;function Rn(r){let e;try{e=new URL(r,"https://seatlayer.invalid")}catch{return null}if(e.search||e.hash)return null;let t=/^\/pub\/events\/([^/]+)\/assets\/([^/]+)$/.exec(e.pathname);if(!t)return null;try{let i=decodeURIComponent(t[1]),s=decodeURIComponent(t[2]);return!i||!Hn.test(s)?null:{eventKey:i,asset:s}}catch{return null}}function On(r){try{return/^\/pub\/events\/[^/]+\/assets(?:\/|$)/.test(new URL(r,"https://seatlayer.invalid").pathname)}catch{return!1}}var Rt=class{constructor(e,t){this.eventKey=e;this.load=t;this.pending=new Map;this.created=new Set;this.disposed=!1}resolve(e){let t=Rn(e);if(!t)return Promise.resolve(On(e)||!Lt(e)?null:e);if(t.eventKey!==this.eventKey||!this.load||this.disposed)return Promise.resolve(null);let i=this.pending.get(e);if(i)return i;let s=this.load(this.eventKey,t.asset).then(n=>{let o=URL.createObjectURL(n);return this.disposed?(URL.revokeObjectURL(o),null):(this.created.add(o),o)}).catch(n=>{throw this.pending.delete(e),n});return this.pending.set(e,s),s}dispose(){if(!this.disposed){this.disposed=!0;for(let e of this.created)URL.revokeObjectURL(e);this.created.clear(),this.pending.clear()}}};async function Ps(r,e){let t=r.overlay.productionElements;if(!t?.some(s=>s.contentImageUrl))return r;let i=await Promise.all(t.map(async s=>{if(!s.contentImageUrl)return s;try{let n=await e(s.contentImageUrl);if(!n){let{contentImageUrl:o,...a}=s;return a}return{...s,runtimeContentImageUrl:n}}catch{let{contentImageUrl:n,...o}=s;return o}}));return{...r,overlay:{...r.overlay,productionElements:i}}}async function As(r,e){if(r)try{let t=await e(r);return t?await(await fetch(t)).arrayBuffer():void 0}catch{return}}var In=["on-sale","low","sold-out","presale","closed"];function ot(r){return r==null?null:typeof r=="number"&&Number.isFinite(r)&&r>=0?r:void 0}function Ms(r){return r==null?null:typeof r=="number"&&Number.isFinite(r)&&r>=0?r:void 0}function Ls(r){if(r==null)return null;if(typeof r!="object"||Array.isArray(r))return;let e=r,t=e.count,i=e.index;if(typeof i!="number"||!Number.isInteger(i)||i<1||typeof t!="number"||!Number.isInteger(t)||t<i)return;let s=e.remaining;if(s!=null&&(typeof s!="number"||!Number.isInteger(s)||s<0))return;let n={index:i,count:t,remaining:s??null};if(e.id!==void 0){if(typeof e.id!="string"||!e.id.trim())return;n.id=e.id.trim()}if(e.name!==void 0){if(typeof e.name!="string"||!e.name.trim())return;n.name=e.name.trim()}if(e.categoryKey!==void 0){if(e.categoryKey!==null&&(typeof e.categoryKey!="string"||!e.categoryKey.trim()))return;n.categoryKey=e.categoryKey==null?null:e.categoryKey.trim()}for(let o of["startsAt","endsAt"]){if(e[o]===void 0)continue;let a=Ms(e[o]);if(a===void 0)return;n[o]=a}return n}function _n(r){if(r==null)return null;if(typeof r!="object"||Array.isArray(r))return;let e=r;if(!Number.isInteger(e.assignmentVersion)||e.assignmentVersion<0||!Array.isArray(e.channels)||!Array.isArray(e.objects))return;let t=[],i=new Set;for(let o of e.channels){if(!o||typeof o!="object"||Array.isArray(o))return;let a=o,l=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||i.has(l)||!Number.isInteger(a.pricingVersion)||a.pricingVersion<0||!Array.isArray(a.priceOverrides))return;let c=[],h=new Set;for(let p of a.priceOverrides){if(!p||typeof p!="object"||Array.isArray(p))return;let d=p,m=typeof d.categoryKey=="string"?d.categoryKey.trim():"",g=d.tierId===null?null:typeof d.tierId=="string"&&d.tierId.trim()?d.tierId.trim():void 0,x=ot(d.price);if(!m||g===void 0||x===void 0||x===null)return;let w=`${m}\0${g??""}`;if(h.has(w))return;h.add(w),c.push({categoryKey:m,tierId:g,price:x})}i.add(l),t.push({channelId:l,pricingVersion:a.pricingVersion,priceOverrides:c})}let s=[],n=new Set;for(let o of e.objects){if(!o||typeof o!="object"||Array.isArray(o))return;let a=o,l=typeof a.label=="string"?a.label.trim():"",c=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||n.has(l)||!i.has(c))return;n.add(l),s.push({label:l,channelId:c})}return{assignmentVersion:e.assignmentVersion,channels:t,objects:s}}function Ot(r){if(!r||typeof r!="object"||Array.isArray(r))return null;let e=r,t=In.find(h=>h===e.state);if(!t)return null;let i=ot(e.fromPrice),s=ot(e.previousPrice);if(i===void 0||s===void 0)return null;let n=e.currency==null?null:typeof e.currency=="string"&&e.currency.trim()?e.currency.trim():void 0;if(n===void 0)return null;let o=Ls(e.release);if(o===void 0)return null;let a=e.upcoming===void 0?null:Ls(e.upcoming);if(a===void 0)return null;let l=[];if(e.prices!=null){if(!Array.isArray(e.prices))return null;let h=[];for(let p of e.prices){if(!p||typeof p!="object"||Array.isArray(p))return null;let d=p,m=typeof d.categoryKey=="string"?d.categoryKey.trim():"";if(!m)return null;let g=ot(d.price),x=ot(d.previousPrice);if(g==null||x===void 0)return null;let w={categoryKey:m,price:g,previousPrice:x};if(d.offerId!==void 0){if(typeof d.offerId!="string"||!d.offerId.trim())return null;w.offerId=d.offerId.trim()}if(d.offerName!==void 0){if(typeof d.offerName!="string"||!d.offerName.trim())return null;w.offerName=d.offerName.trim()}if(d.remaining!==void 0){if(d.remaining!==null&&(typeof d.remaining!="number"||!Number.isInteger(d.remaining)||d.remaining<0))return null;w.remaining=d.remaining==null?null:d.remaining}for(let v of["startsAt","endsAt"]){if(d[v]===void 0)continue;let R=Ms(d[v]);if(R===void 0)return null;w[v]=R}h.push(w)}l=h}let c=_n(e.channelPricing);return c===void 0?null:{state:t,fromPrice:i,previousPrice:s,currency:n,release:o,upcoming:a,prices:l,channelPricing:c}}function Hs(r,e){if(!r)return null;let t=null,i=s=>{s!=null&&s>e&&(t===null||s<t)&&(t=s)};for(let s of[r.release,r.upcoming])i(s?.startsAt),i(s?.endsAt);for(let s of r.prices)i(s.startsAt),i(s.endsAt);return t}function It(r){let e={};for(let t of r?.prices??[])e[t.categoryKey]=t.price;return e}var Rs=`
41
+ `});var $o={};Vi($o,{ApiError:()=>j,BuyerAccessContext:()=>se,BuyerAccessUnavailableError:()=>ie,BuyerRealtimeClient:()=>ae,EmbeddedDesigner:()=>Ut,PerformanceGroupDestroyedError:()=>K,PerformanceGroupPicker:()=>ri,SEATING_CHART_CALLBACK_PROPS:()=>yi,SEATING_CHART_HANDLE_METHODS:()=>gi,SEATING_CHART_IDENTITY_PROPS:()=>bi,SEATING_CHART_VALUE_PROPS:()=>vi,SeasonApiError:()=>oe,SeasonPicker:()=>oi,SeasonRecoveryTimeoutError:()=>vt,SeatPicker:()=>Je,SeatingChart:()=>Gt,attachPickerFrame:()=>Us,bindSeatingChartHandle:()=>xr,buildSeatingChartOptions:()=>wr,createBuyerAccessContext:()=>Ge,createControllerSink:()=>ze,parseTicketOfferAvailability:()=>Kt,shortOperationReference:()=>tt,ticketOfferPrices:()=>Wt});module.exports=Zs($o);var z=require("@seatlayer/core");var Oe="seatlayer.v1";function Js(s){let e=typeof s.default=="string"?s.default:"free",t={};if(s.seats&&typeof s.seats=="object")for(let[i,r]of Object.entries(s.seats))typeof r=="string"&&r!==e&&(t[i]=r);return{default:e,exceptions:t}}function en(s,e){if(!s||s.default!==e.default)return null;let t=[];for(let[i,r]of Object.entries(e.exceptions))s.exceptions[i]!==r&&t.push({label:i,status:r});for(let i of Object.keys(s.exceptions))i in e.exceptions||t.push({label:i,status:e.default});return t}function tn(s,e){for(let t of e)t.status===s.default?delete s.exceptions[t.label]:s.exceptions[t.label]=t.status}function Ni(s){if(/(?:^|[?&#])(?:token|access_token|bearer|authorization|ticket|tkt|bse)=/i.test(s))throw new Error("seatlayer: refusing to open a socket with a credential in the URL");if(/\bbse_[A-Za-z0-9._-]+/.test(s))throw new Error("seatlayer: refusing to open a socket with a credential in the URL")}var ae=class{constructor(e){this.ws=null;this.stopped=!0;this.attempt=0;this.reconnectTimer=null;this.pingTimer=null;this.pongTimer=null;this.resumeTimer=null;this.projection=null;this.version=null;this.v1=!1;this.useQueryMarker=!1;this.hidden=null;this.closedSections=null;this.opts=e,Ni(e.url)}get protocol(){return this.ws?this.v1?"v1":"legacy":null}get snapshotVersion(){return this.version}start(){this.stopped&&(this.stopped=!1,this.connect())}stop(){this.stopped=!0,this.clearTimers();let e=this.ws;if(this.ws=null,e){e.onopen=null,e.onmessage=null,e.onclose=null,e.onerror=null;try{e.close()}catch{}}}restart(){this.stop(),this.projection=null,this.version=null,this.attempt=0,this.start()}async connect(){if(this.stopped)return;let e=[Oe];if(this.opts.mintTicket){let n;try{n=await this.opts.mintTicket()}catch(o){this.reportIfAccessError(o),this.scheduleReconnect();return}if(this.stopped)return;n?.protocols?.length?(e=[...n.protocols],e.includes(Oe)||e.unshift(Oe)):n?.ticket&&(e=[Oe,`tkt.${n.ticket}`])}let t=this.version!==null;t&&e.push(`sv.${this.version}`);let i=this.useQueryMarker?`${this.opts.url}${this.opts.url.includes("?")?"&":"?"}pv=1`:this.opts.url;Ni(i);let r;try{r=(this.opts.socketFactory??((o,a)=>new WebSocket(o,a)))(i,e)}catch{this.scheduleReconnect();return}this.ws=r,r.onopen=()=>{this.ws===r&&(this.attempt=0,this.v1=r.protocol===Oe,this.v1||(this.useQueryMarker=!0),this.startKeepalive(r),t?this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync()},5e3):this.opts.sink.resync())},r.onmessage=n=>{if(this.ws!==r)return;let o;try{o=JSON.parse(typeof n.data=="string"?n.data:"")}catch{return}!o||typeof o!="object"||this.handleFrame(o)},r.onclose=n=>{if(this.ws===r){if(this.ws=null,this.clearTimers(),n?.code===4401){this.stopped=!0,this.opts.onAccessUnavailable?.({reason:"revoked",code:"access_revoked",retryable:!1});return}this.scheduleReconnect()}},r.onerror=()=>{try{r.close()}catch{}}}handleFrame(e){let t=typeof e.type=="string"?e.type:"";if(e.protocol===1&&(this.v1=!0),typeof e.snapshotVersion=="number"&&(this.version=e.snapshotVersion),t==="pong"){this.clearPongTimer();return}if(Array.isArray(e.hidden)||Array.isArray(e.closed)){let i=Array.isArray(e.hidden)?e.hidden:[],r=Array.isArray(e.closed)?e.closed:[],n=i.join("\0"),o=r.join("\0");(n!==this.hidden||o!==this.closedSections)&&(this.hidden=n,this.closedSections=o,this.opts.sink.onSections?.(i,r))}if(t!=="hidden"){if(t==="presence"){this.opts.sink.onPresence?.({shoppingSessions:Number(e.shoppingSessions)||0,activeHolds:Number(e.activeHolds)||0});return}if(t!=="allocation"){if(t==="snapshot"||!t&&e.seats){this.answered();let i=Js(e),r=en(this.projection,i);this.projection=i,r===null?this.opts.sink.applyProjection?this.opts.sink.applyProjection(i):this.opts.sink.resync():r.length&&this.opts.sink.applyStatuses(r);return}if(t==="delta"&&Array.isArray(e.changes)){this.answered();let i=e.changes.filter(r=>typeof r?.label=="string"&&typeof r?.status=="string").map(r=>({label:r.label,status:r.status}));if(!i.length)return;this.projection&&tn(this.projection,i),this.opts.sink.applyStatuses(i)}}}}answered(){this.resumeTimer&&(clearTimeout(this.resumeTimer),this.resumeTimer=null)}reportIfAccessError(e){let t=e?.reason;e?.name==="BuyerAccessUnavailableError"&&(this.stopped=!0,this.opts.onAccessUnavailable?.({reason:t??"invalid",code:e.code,status:e.status,retryable:t==="paused"}))}startKeepalive(e){this.pingTimer=setInterval(()=>{if(this.ws===e){try{e.send(JSON.stringify({type:"ping"}))}catch{return}this.clearPongTimer(),this.pongTimer=setTimeout(()=>{this.pongTimer=null;try{e.close()}catch{}},1e4)}},25e3)}scheduleReconnect(){if(this.stopped||this.reconnectTimer)return;let e=Math.min(this.attempt++,5),t=Math.min(1e3*2**e,15e3),i=Math.random()*t;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},i)}clearPongTimer(){this.pongTimer&&(clearTimeout(this.pongTimer),this.pongTimer=null)}clearTimers(){this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null,this.clearPongTimer(),this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.resumeTimer&&clearTimeout(this.resumeTimer),this.resumeTimer=null}};function rn(s){return s==="blocked"?"not_for_sale":s==="held"||s==="booked"||s==="free"||s==="not_for_sale"?s:"free"}function ze(s,e={}){let t=i=>{let r=s.tableSelection(i);if(r)return r.physicalSeatIds;let n=s.idForLabel(i);return n?[n]:[]};return{applyStatuses(i){let r=s.currentHold()?.labels??[],n={free:[],held:[],booked:[],not_for_sale:[]},o=[],a=[],l=new Map(s.getSelection().map(c=>[c.label,c.id]));for(let c of i){let h=t(c.label);if(!h.length)continue;let d=rn(c.status);if(n[d].push(...h),e.flashOnLiveChange&&d!=="free"&&!r.includes(c.label)&&h.some(p=>s.getStatus(p)==="free")){let p=d==="held"?"#f4b740":"#f43f5e";for(let m of h)o.push({id:m,color:p})}d!=="free"&&!r.includes(c.label)&&l.has(c.label)&&a.push(c.label)}for(let c of["free","held","booked","not_for_sale"])n[c].length&&s.setStatus(n[c],c);for(let c of o)s.flashSeat(c.id,c.color);if(a.length){let c=a.flatMap(d=>t(d));c.length&&s.deselect(c);let h=i.some(d=>d.status==="blocked"&&a.includes(d.label));e.onSelectedObjectUnavailable?.(a,h?"ineligible":"taken")}e.onStatusChange?.()},async resync(){await s.refresh()},onSections(i,r){s.refresh(),e.onSections?.(i,r)}}}var j=class extends Error{constructor(e,t,i,r,n,o){super(t),this.name="ApiError",this.status=e,this.code=i,this.conflicts=r,this.reason=n,this.retryAfterS=o}},Gi=10,Ui=1;function At(s,e){let t=(s??"").trim();if(t){let i=Number(t);if(Number.isFinite(i)&&i>=0)return Math.ceil(i);let r=Date.parse(t);if(Number.isFinite(r))return Math.max(0,Math.ceil((r-Date.now())/1e3))}if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return Math.ceil(e)}var sn={seat_conflict:"taken",conflict:"taken",channel_assignment_conflict:"ineligible",allocation_exhausted:"exhausted"},ve=class{constructor(e,t={}){this.base=e;this.viewerId=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`viewer_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;this.access=t.access,this.onObjectUnavailable=t.onObjectUnavailable;let i=t.referral?.trim();this.referral=i?i.slice(0,120):void 0}get accessScoped(){return!!this.access?.configured}async request(e,t={},i={}){let r=t.method??"GET",n={},o;t.body!==void 0&&(n["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await this.access?.authorization(i.auth?"unauthorized":"initial");a&&(n.Authorization=a);let l=await fetch(`${this.base}${e}`,{method:r,headers:n,body:o,credentials:"omit"}),h=(l.headers.get("content-type")??"").includes("application/json")?await l.json().catch(()=>null):null;if(!l.ok){let d=h,p=d?.code??d?.error;if(this.access?.configured&&(l.status===401||l.status===403||l.status===422)&&await this.access.handleFailure(l.status,p)&&!i.auth)return this.request(e,t,{...i,auth:!0});if(l.status===409){let f=p?sn[p]:void 0,b=d?.conflicts?.map(C=>C.label)??t.labels??[];f&&this.onObjectUnavailable?.({labels:b,reason:f,code:p})}let m;if(l.status===429&&(m=At(l.headers.get("Retry-After"),d?.retryAfterSeconds)??Ui,r==="GET"&&!i.rateLimit&&m<=Gi))return await new Promise(f=>setTimeout(f,m*1e3)),this.request(e,t,{...i,rateLimit:!0});throw new j(l.status,d?.error??`request_failed_${l.status}`,p,d?.conflicts,d?.reason,m)}return h}async requestBlob(e,t={}){let i={},r=await this.access?.authorization(t.auth?"unauthorized":"initial");r&&(i.Authorization=r);let n=await fetch(`${this.base}${e}`,{method:"GET",headers:i,credentials:"omit"});if(n.ok)return n.blob();let a=(n.headers.get("content-type")??"").includes("application/json")?await n.json().catch(()=>null):null,l=a?.code??a?.error;if(this.access?.configured&&(n.status===401||n.status===403||n.status===422)&&await this.access.handleFailure(n.status,l)&&!t.auth)return this.requestBlob(e,{...t,auth:!0});let c;if(n.status===429&&(c=At(n.headers.get("Retry-After"),a?.retryAfterSeconds)??Ui,!t.rateLimit&&c<=Gi))return await new Promise(h=>setTimeout(h,c*1e3)),this.requestBlob(e,{...t,rateLimit:!0});throw new j(n.status,a?.error??`request_failed_${n.status}`,l,void 0,void 0,c)}chart(e){return this.request(`/pub/events/${encodeURIComponent(e)}/chart`)}eventConfiguration(e){return this.request(`/pub/events/${encodeURIComponent(e)}/event-configuration`)}reportViewEvidence(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/view-evidence-reports`,{method:"POST",body:{seatId:t.seatId,...t.evidenceId?{evidenceId:t.evidenceId}:{},...t.message?{message:t.message}:{}}})}asset(e,t){return/^[a-zA-Z0-9._-]+$/.test(t)?this.requestBlob(`/pub/events/${encodeURIComponent(e)}/assets/${encodeURIComponent(t)}`):Promise.reject(new j(404,"not_found","not_found"))}objects(e){return this.request(`/pub/events/${encodeURIComponent(e)}/objects?compact=1`)}hold(e,t,i,r){return this.request(`/pub/events/${encodeURIComponent(e)}/hold`,{method:"POST",body:{selections:t,...i?{ttlMs:i}:{},...r?{replaceHoldId:r}:{},...this.referral?{referral:this.referral}:{}},labels:t.map(n=>n.label)})}bestAvailable(e,t,i,r,n){return this.request(`/pub/events/${encodeURIComponent(e)}/best-available`,{method:"POST",body:{qty:t,...i?{categoryKey:i}:{},...r?{zoneId:r}:{},...n?{ttlMs:n}:{},...this.referral?{referral:this.referral}:{}}})}resume(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/hold/resume`,{method:"POST",body:{holdId:t}})}release(e,t,i){return this.request(`/pub/events/${encodeURIComponent(e)}/release`,{method:"POST",body:{labels:t,holdId:i}})}extend(e,t,i){return this.request(`/pub/events/${encodeURIComponent(e)}/extend`,{method:"POST",body:{holdId:t,...i?{ttlMs:i}:{}}})}paymentOptions(e){return this.request(`/pub/events/${encodeURIComponent(e)}/payment-options`)}availability(e,t=!1){return this.request(`/pub/events/${encodeURIComponent(e)}/availability${t?"?live=1":""}`)}startCheckout(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/checkout`,{method:"POST",body:t})}orderStatus(e){return this.request(`/pub/orders/${encodeURIComponent(e)}/status`)}subscribeTicket(e){return this.request(`/pub/events/${encodeURIComponent(e)}/subscribe-tickets`,{method:"POST",body:{}})}subscribeUrl(e){let t=this.base.replace(/^http/,"ws"),i=new URLSearchParams({surface:"picker",viewerId:this.viewerId});return`${t}/pub/events/${encodeURIComponent(e)}/subscribe?${i}`}socketUrl(e){return this.accessScoped?"":this.subscribeUrl(e)}socketProtocols(e){return this.accessScoped?[]:[Oe]}createRealtime(e,t){return this.accessScoped?null:new ae({url:this.subscribeUrl(e),sink:t})}};var ie=class extends Error{constructor(e){super(`buyer_access_unavailable:${e.reason}`),this.name="BuyerAccessUnavailableError",this.reason=e.reason,this.code=e.code,this.status=e.status}},nn=new Set(["buyer_access_expired"]),on=new Set(["paused","provider_failed","channel_denied"]);function an(s,e){switch(e){case"buyer_access_invalid":return"invalid";case"buyer_access_revoked":return"revoked";case"buyer_access_origin_mismatch":return"origin_mismatch";case"buyer_access_event_mismatch":return"event_mismatch";case"buyer_access_group_mismatch":return"group_mismatch";case"buyer_access_mode_mismatch":return"mode_mismatch";case"buyer_access_environment_mismatch":return"environment_mismatch";case"channel_access_denied":return"channel_denied";case"channel_paused":return"paused";case"invalid_channel_scope":return"invalid_scope";default:break}return s===401?"invalid":null}function ln(s,e){return s===401&&!!e&&nn.has(e)}var cn=3e4,Q,X,Fe,je,ot,ye,pe,Ne,at,lt,ct,Ie,Z,li,Mt,Ve,se=class{constructor(e){$(this,Z);$(this,Q,null);$(this,X,0);$(this,Fe,null);$(this,je);$(this,ot);$(this,ye,null);$(this,pe,null);$(this,Ne,null);$(this,at);$(this,lt);$(this,ct,!1);$(this,Ie);if(P(this,je,e.provider),P(this,ot,e.skewMs??cn),P(this,at,e.onExpired),P(this,lt,e.onUnavailable),e.token){let t=typeof e.token=="string"?{token:e.token}:e.token;A(this,Z,li).call(this,t)}P(this,ct,!!w(this,je)||!!w(this,Q))}get configured(){return w(this,ct)}onRenewed(e){P(this,Ie,e)}get unavailable(){return w(this,pe)}get hasToken(){return!!w(this,Q)&&(w(this,X)===0||w(this,X)>Date.now())}get expiresAt(){return w(this,X)}async authorization(e="initial"){if(!this.configured)return null;if(w(this,pe))throw new ie(w(this,pe));let t=Date.now();if(!w(this,Q)||w(this,X)>0&&w(this,X)-w(this,ot)<=t){let r=!!w(this,Q)&&w(this,X)>0&&w(this,X)<=t,n=w(this,Q)?r?"expired":"expiring":e,o=await A(this,Z,Mt).call(this,n);if(!o)throw new ie(w(this,pe)??w(this,Ne)??A(this,Z,Ve).call(this,"provider_failed"));return`Bearer ${o}`}return`Bearer ${w(this,Q)}`}async handleFailure(e,t){var r;if(!this.configured)return!1;if(ln(e,t)){P(this,Q,null),P(this,X,0);let n=await A(this,Z,Mt).call(this,"unauthorized",t);return(r=w(this,at))==null||r.call(this,{reason:"unauthorized",code:t,refreshed:!!n}),!!n}let i=an(e,t);return i&&A(this,Z,Ve).call(this,i,t,e),!1}async refresh(e="manual"){return P(this,pe,null),P(this,Ne,null),P(this,Q,null),P(this,X,0),!!await A(this,Z,Mt).call(this,e)}clear(){P(this,Q,null),P(this,Fe,null),P(this,X,0),P(this,ye,null),P(this,Ie,void 0)}toJSON(){return{configured:this.configured,hasToken:this.hasToken}}toString(){return"[BuyerAccessContext redacted]"}};Q=new WeakMap,X=new WeakMap,Fe=new WeakMap,je=new WeakMap,ot=new WeakMap,ye=new WeakMap,pe=new WeakMap,Ne=new WeakMap,at=new WeakMap,lt=new WeakMap,ct=new WeakMap,Ie=new WeakMap,Z=new WeakSet,li=function(e){return!e||typeof e.token!="string"||!e.token?null:(P(this,Fe,e.token),P(this,Q,e.token),P(this,X,typeof e.expiresAt=="number"?e.expiresAt:0),w(this,Q))},Mt=function(e,t){if(w(this,ye))return w(this,ye);let i=w(this,je);if(!i)return A(this,Z,Ve).call(this,"no_token",t),Promise.resolve(null);let r=w(this,Fe),n=(async()=>{try{let o=await i({reason:e}),a=A(this,Z,li).call(this,o);if(!a)return A(this,Z,Ve).call(this,"provider_failed",t),null;if(r&&r!==a&&w(this,Ie))try{await w(this,Ie).call(this,{previousToken:r,token:a,reason:e})}catch{}return a}catch{return A(this,Z,Ve).call(this,"provider_failed",t),null}finally{P(this,ye,null)}})();return P(this,ye,n),n},Ve=function(e,t,i){var n;let r={reason:e,code:t,status:i,retryable:e==="paused"||e==="channel_denied"};return P(this,Ne,r),on.has(e)||(P(this,pe,r),P(this,Q,null),P(this,X,0)),(n=w(this,lt))==null||n.call(this,r),r};function Ge(s,e={}){return!s.buyerAccessTokenProvider&&!s.buyerAccessToken?null:new se({provider:s.buyerAccessTokenProvider,token:s.buyerAccessToken,...e})}var dn=3e4;function pn(s){if(!s||typeof s!="object"||Array.isArray(s))return!1;let e=s;return typeof e.token=="string"&&e.token.startsWith("bse_")&&typeof e.expiresAt=="number"&&Number.isFinite(e.expiresAt)&&e.expiresAt>Date.now()&&!!e.event&&typeof e.event=="object"&&!!e.doc&&typeof e.doc=="object"&&!!e.objects&&typeof e.objects=="object"&&!Array.isArray(e.objects)&&!!e.objects.seats&&typeof e.objects.seats=="object"}var ci=class{constructor(e,t,i){this.base=e;this.event=t;this.publicKey=i;this.value=null;this.inflight=null}async load(e=!1){if(e&&(this.value=null),this.value&&this.value.expiresAt-dn>Date.now())return this.value;if(this.inflight)return this.inflight;let t=(async()=>{let i=await fetch(`${this.base}/pub/events/${encodeURIComponent(this.event)}/bootstrap`,{method:"POST",body:JSON.stringify({publicKey:this.publicKey}),credentials:"omit"}),r=await i.json().catch(()=>null);if(!i.ok){let n=i.status===429?At(i.headers.get("Retry-After"),r?.retryAfterSeconds):void 0;throw new j(i.status,r?.error??`request_failed_${i.status}`,r?.code??r?.error,void 0,void 0,n)}if(!pn(r))throw new j(502,"invalid_bootstrap_response","invalid_bootstrap_response");return this.value=r,r})();this.inflight=t;try{return await t}finally{this.inflight===t&&(this.inflight=null)}}async token(e){let t=e==="expiring"||e==="expired"||e==="unauthorized"||e==="manual",i=await this.load(t);return{token:i.token,expiresAt:i.expiresAt}}},di=class extends ve{constructor(t,i,r,n,o){super(t,{...o,access:n});this.event=i;this.loader=r;this.bootstrapAccess=n;this.initialChartDelivered=!1;this.initialObjectsDelivered=!1}assertEvent(t){if(t!==this.event)throw new j(404,"not_found","not_found")}async bundle(t){return this.assertEvent(t),await this.bootstrapAccess.authorization("initial"),this.loader.load()}async chart(t){if(this.assertEvent(t),this.initialChartDelivered)return super.chart(t);let i=await this.bundle(t);return this.initialChartDelivered=!0,{event:i.event,doc:i.doc}}async objects(t){if(this.assertEvent(t),this.initialObjectsDelivered)return super.objects(t);let i=await this.bundle(t);return this.initialObjectsDelivered=!0,i.objects}};function Lt(s){let e=new ci(s.base,s.event,s.publicKey),t=new se({provider:({reason:i})=>e.token(i),...s.accessHooks});return{access:t,api:new di(s.base,s.event,e,t,s.apiOptions??{})}}var W=require("@seatlayer/core"),G=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e]);function Ue(s,e){let t=0;for(let i of s.get(e)?.values()??[])t+=i;return t}function qi(s){let e=[];for(let[t,i]of s)for(let[r,n]of i)n>0&&e.push({areaId:t,tierId:r,qty:n});return e}function Ki(s){let e=new Map;for(let t of s.keys())e.set(t,Ue(s,t));return e}function dt(s,e,t,i){let r=s.get(e)??new Map;i>0?r.set(t,i):r.delete(t),r.size?s.set(e,r):s.delete(e)}function Wi(s){let e=new Map;for(let t of s)t.objectType!=="ga"||!t.objectId||e.set(t.objectId,(e.get(t.objectId)??0)+(t.quantity??1));return e}function qe(s,e){let t=Wi(e),i=0;for(let r of s.keys())i+=Math.max(0,Ue(s,r)-(t.get(r)??0));return i}function Yi(s,e,t){let i=Wi(t),r=0;for(let n of e){let o=s.gaQty.get(n.id);if(!o)continue;let a=i.get(n.id)??0;for(let[l,c]of o){let h=Math.max(0,c-a);a=Math.max(0,a-c),r+=h*s.paidPrice(n.categoryKey,l,hn(n,l),n.id)}}return r}function hn(s,e){return e?s.tiers?.find(t=>t.id===e)?.price??s.price:s.price}function Qi(s){let e=[],t=new Map;for(let i of s){if(i.objectType!=="ga"||!i.objectId){e.push({...i,labels:[i.label]});continue}let r=`${i.objectId}\0${i.tierId??""}`,n=t.get(r);if(n){n.quantity=(n.quantity??0)+(i.quantity??1),n.labels.push(i.label);continue}let o={...i,quantity:i.quantity??1,labels:[i.label]};t.set(r,o),e.push(o)}return e}function Xi(s,e,t){let i=new Set(t);for(let r of e)r.objectType==="ga"&&r.objectId&&i.has(r.label)&&dt(s,r.objectId,r.tierId??null,0)}function Zi(s,e){if(s.objectType!=="ga")return s.label;let t=e.find(i=>i.id===s.objectId);return t?.displayLabel??t?.label??s.label}function un(s){let e=new Map;for(let t of s){if(t.objectType!=="ga"||!t.objectId)continue;let i=`${t.objectId}\0${t.tierId??""}`;e.set(i,(e.get(i)??0)+(t.quantity??1))}return e}function Ht(s){let e=s.tiers??[];return e.length>1?e.map(t=>({id:t.id,label:t.name||t.id,price:t.price})):[{id:null,label:s.displayType??(0,W.t)("picker.generalAdmission"),price:s.price}]}function Ji(s,e){let t=s.totalTicketCount()-Ue(s.gaQty,e.id);return Math.max(0,Math.min(e.available,s.maxTickets-t))}function hi(s,e,t,i){if(he(s,!1),s.salesClosed){s.toast(s.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let r=Ht(e),n=s.gaQty.get(e.id),o=Ue(s.gaQty,e.id)>0,a=Ji(s,e);if(a<=0&&!o){s.toast(e.available>0?(0,W.t)("picker.maxTicketsForOrder",{count:s.maxTickets}):s.tf("picker.soldOutTitle","Sold out"),"warning");return}if(s.onGAPromptHook){let p={};for(let[f,b]of n??[])p[f??""]=b;if(s.onGAPromptHook({area:e,selected:p,min:0,max:a,tiers:r,confirm:f=>{bn(s,e,r,f,a)},cancel:()=>he(s)})===!0)return}let l=new Map;for(let p of r)l.set(p.id,n?.get(p.id)??0);!o&&a>0&&l.set(r[0].id,1);let c={area:e,tiers:r,draft:l,max:a,reopened:o},h=s.root?.dataset.layout==="narrow",d=document.createElement("div");d.className=h?"sl-ga-scrim":"sl-ga-pop-layer",d.innerHTML=mn(s,c,h),s.root?.appendChild(d),s.gaPromptEl=d,s.gaPromptReturnFocus=i??document.activeElement,h||vn(s,d,t),s.reducedMotion()&&(d.dataset.motion="reduced"),tr(s,c),fn(s,d,c),requestAnimationFrame(()=>d.querySelector('[data-ga-step="1"]')?.focus())}function mn(s,e,t){let{area:i,tiers:r}=e,n=r.length>1,o=i.displayLabel??i.label,a=r.map(l=>`<div class="sl-ga-prompt-row" data-ga-tier="${G(l.id??"")}"><div class="sl-ga-prompt-label"><span>${G(n?l.label:s.tf("picker.gaChooseTickets","How many tickets?"))}</span>`+(n?`<small>${G(s.money(s.paidPrice(i.categoryKey,l.id,l.price,i.id)))}</small>`:"")+`</div><div class="sl-ga-stepper" role="group" aria-label="${G(n?l.label:o)}"><button type="button" data-ga-step="-1" aria-label="${G(s.tf("picker.fewer","Fewer"))}">\u2212</button><output data-ga-qty aria-live="polite">0</output><button type="button" data-ga-step="1" aria-label="${G(s.tf("picker.more","More"))}">+</button></div></div>`).join("");return`<section class="${t?"sl-ga-sheet":"sl-ga-pop"}" role="dialog" aria-modal="true" aria-label="${G((0,W.t)("picker.gaChooseForArea",{area:o}))}"><div class="sl-ga-prompt-head"><div class="sl-ga-prompt-eyebrow">${G(i.displayType??s.tf("picker.generalAdmission","General admission"))}</div><h2 class="sl-ga-prompt-title">${G(o)}</h2><p class="sl-ga-prompt-sub" data-ga-sub></p><button type="button" class="sl-ga-prompt-close" data-ga-cancel aria-label="${G((0,W.t)("common.close"))}">\xD7</button></div><div class="sl-ga-prompt-body">${a}`+(r.length>1?`<div class="sl-ga-prompt-total"><span>${G(s.tf("picker.total","Total"))}</span><b data-ga-total></b></div>`:"")+'<p class="sl-ga-prompt-hint" data-ga-hint></p></div><div class="sl-ga-prompt-actions">'+(e.reopened?`<button type="button" class="sl-ga-prompt-remove" data-ga-remove>${G(s.tf("picker.gaRemove","Remove"))}</button>`:`<button type="button" class="sl-ga-prompt-remove" data-ga-cancel>${G((0,W.t)("common.cancel"))}</button>`)+'<button type="button" class="sl-ga-prompt-confirm" data-ga-confirm></button></div></section>'}function ui(s){let e=0;for(let t of s.draft.values())e+=t;return e}function er(s,e){let t=0;for(let i of e.tiers)t+=(e.draft.get(i.id)??0)*s.paidPrice(e.area.categoryKey,i.id,i.price,e.area.id);return t}function tr(s,e){let t=s.gaPromptEl;if(!t)return;let i=ui(e),r=er(s,e);t.querySelectorAll("[data-ga-tier]").forEach(c=>{let h=c.dataset.gaTier?c.dataset.gaTier:null,d=e.draft.get(h)??0,p=c.querySelector("[data-ga-qty]");p&&(p.value=String(d)),c.querySelectorAll("[data-ga-step]").forEach(m=>{m.disabled=Number(m.dataset.gaStep)<0?d<=0:i>=e.max})});let n=t.querySelector("[data-ga-sub]");n&&(n.textContent=`${s.money(s.paidPrice(e.area.categoryKey,e.tiers[0].id,e.tiers[0].price,e.area.id))} \xB7 ${(0,W.tCount)("picker.leftCount",e.area.available)}`);let o=t.querySelector("[data-ga-total]");o&&(o.textContent=s.money(r));let a=t.querySelector("[data-ga-hint]");a&&(a.textContent=i>=e.max&&e.max>0?e.area.available<=e.max?(0,W.tCount)("picker.leftCount",e.area.available):(0,W.t)("picker.maxTicketsForOrder",{count:s.maxTickets}):"");let l=t.querySelector("[data-ga-confirm]");l&&(l.textContent=e.reopened?(0,W.tCount)("picker.gaUpdate",i,{count:i}):(0,W.tCount)("picker.gaAdd",i,{count:i,price:s.money(r)}),l.disabled=i<=0&&!e.reopened)}function fn(s,e,t){e.querySelectorAll("[data-ga-step]").forEach(i=>{i.addEventListener("click",()=>{let r=i.closest("[data-ga-tier]");if(!r)return;let n=r.dataset.gaTier?r.dataset.gaTier:null,o=Number(i.dataset.gaStep),a=t.draft.get(n)??0,l=t.max-ui(t);t.draft.set(n,Math.max(0,a+(o>0?Math.min(1,l):-1))),tr(s,t)})}),e.querySelectorAll("[data-ga-cancel]").forEach(i=>i.addEventListener("click",()=>he(s))),e.querySelector("[data-ga-remove]")?.addEventListener("click",()=>{s.gaQty.delete(t.area.id),he(s),s.syncTray(),pi(s,(0,W.t)("picker.gaRemoved",{area:t.area.displayLabel??t.area.label}))}),e.querySelector("[data-ga-confirm]")?.addEventListener("click",()=>{gn(s,t)}),e.addEventListener("mousedown",i=>{i.target===e&&he(s)}),e.addEventListener("keydown",i=>{if(i.key==="Escape"){i.stopPropagation(),he(s);return}if(i.key!=="Tab")return;let r=[...e.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!r.length)return;let n=r[0],o=r[r.length-1];i.shiftKey&&document.activeElement===n?(i.preventDefault(),o.focus()):!i.shiftKey&&document.activeElement===o&&(i.preventDefault(),n.focus())})}function gn(s,e){let t=ui(e),i=er(s,e);for(let n of e.tiers)dt(s.gaQty,e.area.id,n.id,e.draft.get(n.id)??0);he(s),s.syncTray();let r=e.area.displayLabel??e.area.label;t>0?pi(s,(0,W.tCount)("picker.gaAdded",t,{count:t,area:r,price:s.money(i)})):pi(s,(0,W.t)("picker.gaRemoved",{area:r}))}function bn(s,e,t,i,r){if(typeof i=="number")dt(s.gaQty,e.id,t[0].id,Math.max(0,Math.min(r,Math.floor(i))));else{s.gaQty.delete(e.id);let n=r;for(let o of t){let a=Math.max(0,Math.floor(i[o.id??""]??0)),l=Math.min(a,n);n-=l,dt(s.gaQty,e.id,o.id,l)}}s.syncTray()}function he(s,e=!0){let t=s.gaPromptReturnFocus;s.gaPromptEl?.remove(),s.gaPromptEl=null,s.gaPromptReturnFocus=null,e&&t&&requestAnimationFrame(()=>(t.isConnected?t:s.root)?.focus())}function vn(s,e,t){let i=s.root,r=e.querySelector(".sl-ga-pop");if(!i||!r||!t)return;let n=i.getBoundingClientRect(),o=t.x-n.left,a=t.y-n.top;e.style.setProperty("--sl-ga-anchor-x",`${o}px`),e.style.setProperty("--sl-ga-anchor-y",`${a}px`),requestAnimationFrame(()=>{let l=r.offsetWidth||260,c=r.offsetHeight||220,h=Math.max(8,Math.min(n.width-l-8,o-l/2)),d=a-c-14,p=d>=8?d:Math.min(n.height-c-8,a+14);r.style.left=`${h}px`,r.style.top=`${Math.max(8,p)}px`,r.dataset.side=d>=8?"above":"below",r.style.setProperty("--sl-ga-arrow-x",`${Math.max(12,Math.min(l-12,o-h))}px`)})}function pi(s,e){s.srEl&&(s.srEl.textContent=e)}function ir(s,e,t=[]){let i=[],r=un(t);for(let o of e){let a=s.gaQty.get(o.id);if(!a)continue;let l=Ht(o);for(let c of l){let h=(a.get(c.id)??0)-(r.get(`${o.id}\0${c.id??""}`)??0);if(h<=0)continue;let d=s.paidPrice(o.categoryKey,c.id,c.price,o.id);i.push(`<div class="sl-ga" data-ga="${G(o.id)}" data-ga-row-tier="${G(c.id??"")}"><div class="sl-ga-info"><div class="sl-ga-name">${G(o.displayLabel??o.label)}</div><div class="sl-ga-sub">${G(l.length>1?c.label:o.displayType??s.tf("picker.generalAdmission","General admission"))} \xB7 ${G(s.money(d))} \xB7 ${G((0,W.tCount)("picker.leftCount",o.available))}</div></div><div class="sl-ga-qty"><button type="button" data-d="-1" aria-label="${G(s.tf("picker.fewer","Fewer"))}">\u2212</button><span>${h}</span><button type="button" data-d="1" aria-label="${G(s.tf("picker.more","More"))}">+</button></div></div>`)}}let n=e.filter(o=>Ue(s.gaQty,o.id)<=0&&!t.some(a=>a.objectId===o.id));return n.length&&i.push(`<div class="sl-ga-areas" data-ga-areas><button type="button" class="sl-ga-areas-toggle" data-ga-areas-toggle aria-expanded="${s.gaAreasExpanded}"><span>${G(s.tf("picker.gaAreasHeading","Areas"))}</span><small>${n.length}</small></button>`+(s.gaAreasExpanded?`<div class="sl-ga-areas-list">${n.map(o=>`<button type="button" class="sl-ga-area-open" data-ga-open="${G(o.id)}"${o.available<=0?" disabled":""}><span class="name">${G(o.displayLabel??o.label)}<small>${G(o.displayType??s.tf("picker.generalAdmission","General admission"))}</small></span><span class="meta">${G(s.money(s.paidPrice(o.categoryKey,null,o.price,o.id)))} \xB7 ${G(o.available>0?(0,W.tCount)("picker.leftCount",o.available):s.tf("picker.soldOutTitle","Sold out"))}</span></button>`).join("")}</div>`:"")+"</div>"),i.join("")}function rr(s,e,t){e.querySelectorAll(".sl-ga .sl-ga-qty button").forEach(i=>{i.addEventListener("click",()=>{let r=i.closest(".sl-ga");if(!r?.dataset.ga)return;let n=t.find(c=>c.id===r.dataset.ga);if(!n)return;let o=r.dataset.gaRowTier?r.dataset.gaRowTier:null,a=Number(i.dataset.d),l=s.gaQty.get(n.id)?.get(o)??0;if(a>0&&Ji(s,n)-Ue(s.gaQty,n.id)<=0){s.toast((0,W.t)("picker.maxTicketsForOrder",{count:s.maxTickets}),"warning");return}dt(s.gaQty,n.id,o,Math.max(0,l+a)),s.syncTray()})}),e.querySelector("[data-ga-areas-toggle]")?.addEventListener("click",()=>{s.gaAreasExpanded=!s.gaAreasExpanded,s.syncTray()}),e.querySelectorAll("[data-ga-open]").forEach(i=>{i.addEventListener("click",()=>{let r=t.find(n=>n.id===i.dataset.gaOpen);r&&hi(s,r,null,i)})})}var Rt='<svg viewBox="0 0 64 56" width="12" height="11" fill="none" aria-hidden="true" focusable="false" style="display:block"><path d="M4 13 Q16 6 29 7 L28.5 17 Q17 16.5 7 22 Z" fill="#f4b740"/><path d="M4 13 Q16 6 29 7 L28.5 17 Q17 16.5 7 22 Z" fill="#f4b740" transform="translate(64 0) scale(-1 1)"/><path d="M8 28 Q18 22 28.6 23 L28.2 32 Q18 28.5 10 36 Z" fill="#fcf7ee"/><path d="M8 28 Q18 22 28.6 23 L28.2 32 Q18 28.5 10 36 Z" fill="#fcf7ee" transform="translate(64 0) scale(-1 1)"/><path d="M11 41 Q19 35 28.2 36 L27.8 45 Q19.5 42 13.5 49 Z" fill="#fcf7ee"/><path d="M11 41 Q19 35 28.2 36 L27.8 45 Q19.5 42 13.5 49 Z" fill="#fcf7ee" transform="translate(64 0) scale(-1 1)"/></svg>';var yn=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,xn=/[\s"'<>`\\]/;function Ot(s){if(typeof s!="string"||!s||s.length>2e6||s!==s.trim())return!1;if(s.startsWith("data:"))return yn.test(s);if(xn.test(s))return!1;try{let e=new URL(s);return e.protocol==="https:"&&!e.username&&!e.password}catch{return!1}}var wn=/^[a-zA-Z0-9._-]+$/;function kn(s){let e;try{e=new URL(s,"https://seatlayer.invalid")}catch{return null}if(e.search||e.hash)return null;let t=/^\/pub\/events\/([^/]+)\/assets\/([^/]+)$/.exec(e.pathname);if(!t)return null;try{let i=decodeURIComponent(t[1]),r=decodeURIComponent(t[2]);return!i||!wn.test(r)?null:{eventKey:i,asset:r}}catch{return null}}function Sn(s){try{return/^\/pub\/events\/[^/]+\/assets(?:\/|$)/.test(new URL(s,"https://seatlayer.invalid").pathname)}catch{return!1}}var Ke=class{constructor(e,t){this.eventKey=e;this.load=t;this.pending=new Map;this.created=new Set;this.disposed=!1}resolve(e){let t=kn(e);if(!t)return Promise.resolve(Sn(e)||!Ot(e)?null:e);if(t.eventKey!==this.eventKey||!this.load||this.disposed)return Promise.resolve(null);let i=this.pending.get(e);if(i)return i;let r=this.load(this.eventKey,t.asset).then(n=>{let o=URL.createObjectURL(n);return this.disposed?(URL.revokeObjectURL(o),null):(this.created.add(o),o)}).catch(n=>{throw this.pending.delete(e),n});return this.pending.set(e,r),r}dispose(){if(!this.disposed){this.disposed=!0;for(let e of this.created)URL.revokeObjectURL(e);this.created.clear(),this.pending.clear()}}};var pt=require("@seatlayer/core"),jt=require("@seatlayer/core/view3d/crossfade/panorama");var sr=`
52
42
  /* TEST MODE is environment context, not an action. A small squared chip that
53
43
  flows FIRST in the top-left anchor region: the old rotated corner ribbon sat
54
44
  at a negative offset and was clipped by the widget root's rounded
@@ -168,9 +158,14 @@
168
158
  because touch has no hover to end it. */
169
159
  /* A card the buyer TAPPED becomes interactive (pointer-events back on), gains
170
160
  a close control and a soft category ring \u2014 touch has no hover to end it. */
171
- .sl-tip.sl-tip-pinned{pointer-events:auto;width:248px;
161
+ .sl-tip.sl-tip-pinned{pointer-events:auto;width:300px;max-height:calc(100% - 16px);overflow-y:auto;
172
162
  box-shadow:0 24px 48px -24px rgba(0,0,0,.65),0 1px 0 rgba(255,255,255,.06) inset,
173
163
  0 0 0 1px color-mix(in srgb,var(--sl-cat,var(--sl-accent)) 35%,transparent)}
164
+ .sl-tip-pinned .sl-tip-head{display:grid;grid-template-columns:minmax(88px,.8fr) minmax(0,1.2fr);
165
+ align-items:start;column-gap:16px;padding:14px 44px 10px 16px}
166
+ .sl-tip-pinned .sl-tip-id,.sl-tip-pinned .sl-tip-sec{min-width:0}
167
+ .sl-tip-pinned .sl-tip-sec{max-width:none;padding-inline-end:0;text-align:end}
168
+ .sl-tip-pinned .sl-tip-secname{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
174
169
  .sl-tip-nights{margin-top:2px;padding:8px 12px 10px 15px;
175
170
  border-top:1px solid color-mix(in srgb,var(--sl-line) 60%,transparent)}
176
171
  .sl-tip-nights-title{font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:800;color:var(--sl-muted)}
@@ -183,6 +178,8 @@
183
178
  /* The SAME two tones the map paints, so the key and the chart are one language. */
184
179
  .sl-night-dot{flex:none;width:14px;height:14px;border-radius:50%;background:var(--sl-cat,var(--sl-accent))}
185
180
  .sl-night.no .sl-night-dot{background:color-mix(in srgb,var(--sl-muted) 40%,transparent)}
181
+ .sl-night-choice{flex:none;width:15px;height:15px;margin:0;accent-color:var(--sl-accent);cursor:pointer}
182
+ .sl-night.selectable{cursor:pointer}
186
183
  .sl-night .d{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
187
184
  .sl-night .st{flex:none;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
188
185
  .sl-night.ok .st{color:var(--sl-text)}
@@ -195,14 +192,31 @@
195
192
  border-radius:8px;background:transparent;color:inherit;font:inherit;font-size:12px;font-weight:750;
196
193
  cursor:pointer;transition:border-color 120ms ease}
197
194
  .sl-tip-switch:hover{border-color:var(--sl-accent)}
195
+ .sl-tip-switch:disabled{cursor:not-allowed;opacity:.5;border-color:var(--sl-line)}
198
196
  .sl-tip-switch:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
197
+ .sl-confirm-group-dates{width:340px;max-height:calc(100% - 32px);overflow-y:auto}
198
+ .sl-confirm-dates{margin:0 0 9px;padding:0;border:0}
199
+ .sl-confirm-dates legend{margin:0;padding:0;color:var(--sl-text);font-size:12.5px;font-weight:800}
200
+ .sl-confirm-dates-copy{margin:4px 0 9px;color:var(--sl-muted);font-size:11px;line-height:1.35}
201
+ .sl-confirm-date-all{display:flex;align-items:center;gap:8px;min-height:34px;padding:6px 0;
202
+ border-block:1px solid var(--sl-line);font-size:11.5px;font-weight:750;cursor:pointer}
203
+ .sl-confirm-dates input{flex:none;width:16px;height:16px;margin:0;accent-color:var(--sl-accent);cursor:pointer}
204
+ .sl-confirm-dates ul{margin:0;padding:0;list-style:none}
205
+ .sl-confirm-date{border-bottom:1px solid color-mix(in srgb,var(--sl-line) 70%,transparent);font-size:11px}
206
+ .sl-confirm-date>label{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px;
207
+ min-height:34px;cursor:pointer}
208
+ .sl-confirm-date-label{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
209
+ .sl-confirm-date-state{color:var(--sl-muted);font-size:10px;font-weight:750}
210
+ .sl-confirm-date.blocked{color:var(--sl-muted)}
211
+ .sl-confirm-date.blocked label,.sl-confirm-date.blocked input{cursor:not-allowed}
212
+ .sl-confirm-dates-summary{margin:8px 0 0;color:var(--sl-text);font-size:11px;font-weight:750}
213
+ .sl-confirm-group-dates .sl-confirm-add:disabled{cursor:not-allowed;opacity:.5}
199
214
  .sl-tip-close{position:absolute;top:8px;inset-inline-end:8px;display:grid;place-items:center;
200
215
  width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--sl-muted);
201
216
  font-size:10px;line-height:1;cursor:pointer}
202
217
  .sl-tip-close:hover{color:var(--sl-text)}
203
218
  .sl-tip-close:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
204
- /* A pinned card with a close button must not let the section name run under it. */
205
- .sl-tip-pinned .sl-tip-sec{padding-inline-end:22px}
219
+ /* The pinned header reserves a dedicated close-button gutter above. */
206
220
  .sl-pg-nights{margin:2px 0 8px;padding:10px;border-radius:10px;background:var(--sl-panel,#151b2c);color:var(--sl-text);border:1px solid var(--sl-line,rgba(255,255,255,.08))}
207
221
  .sl-pg-nights-title{font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--sl-muted)}
208
222
  .sl-pg-nights-list{display:grid;gap:4px;margin:6px 0 0;padding:0;list-style:none}
@@ -225,7 +239,8 @@
225
239
  background:transparent;color:var(--sl-muted);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
226
240
  .sl-pg-switch:hover{border-style:solid;color:var(--sl-text);border-color:var(--sl-accent)}
227
241
  @media(prefers-reduced-motion:reduce){.sl-tip{animation:none!important}.sl-tip,.sl-tip-switch,.sl-pg-switch{transition:none!important}}
228
- `;var Os="seatlayer-picker-style",$n=`
242
+ @media(max-width:639px){.sl-confirm-group-dates{width:min(340px,calc(100% - 20px))}.sl-confirm-date{min-height:32px}}
243
+ `;var nr="seatlayer-picker-style",Cn=`
229
244
  .sl-picker{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:420px;overflow:hidden;
230
245
  background:var(--sl-bg);color:var(--sl-text);font-family:var(--sl-font);border-radius:var(--sl-radius);
231
246
  --sl-r-sm:calc(var(--sl-radius) * .55);
@@ -626,6 +641,11 @@
626
641
  .sl-chip-when{font-size:10.5px;font-weight:750;color:var(--sl-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
627
642
  .sl-chip-id .val{display:block;font-weight:600;font-size:13px;line-height:1.25;white-space:nowrap}
628
643
  .sl-chip-id .fld.sec .val{overflow:hidden;text-overflow:ellipsis}
644
+ .sl-chip-dates{margin-top:2px;padding-top:6px;border-top:1px solid var(--sl-line);display:grid;gap:5px}
645
+ .sl-chip-dates-summary{font-size:10.5px;line-height:1.35;color:var(--sl-muted)}
646
+ .sl-chip-date-list{display:flex;flex-wrap:wrap;gap:4px}
647
+ .sl-chip-date{padding:3px 6px;border-radius:999px;background:color-mix(in srgb,var(--sl-accent) 13%,var(--sl-surface));
648
+ color:var(--sl-accent-text);font-size:10.5px;font-weight:700;line-height:1.25;white-space:nowrap}
629
649
  .sl-chip-sub{display:flex;align-items:center;gap:6px;min-width:0}
630
650
  .sl-chip .cat{color:var(--sl-muted);font-size:10.5px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
631
651
  .sl-chip .amt{font-weight:700;font-variant-numeric:tabular-nums;flex:none;white-space:nowrap}
@@ -1411,7 +1431,17 @@
1411
1431
  border:1px solid var(--sl-line);background:var(--sl-surface);
1412
1432
  box-shadow:0 12px 30px -12px rgba(0,0,0,.55);cursor:default}
1413
1433
  .sl-seccard.strip.on{display:flex;align-items:center;gap:7px;font-size:12.5px}
1414
- .sl-seccard.strip .sl-seccard-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
1434
+ .sl-seccard.strip .sl-seccard-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}
1435
+ /* The name is the answer ("where am I"); the count is the detail. A plain
1436
+ "flex:0 1" on the count was not enough - the two shrank in PROPORTION, so at 360px the
1437
+ name sat on its floor while the count still held 55px of a row that had none
1438
+ to spare. A dominant shrink factor makes the count collapse first, and the
1439
+ measured fit pass below then swaps or drops it before it can clip. */
1440
+ .sl-seccard.strip .sl-seccard-left{flex:0 200 auto;min-width:0;white-space:nowrap;overflow:hidden}
1441
+ /* The count is measured after it mounts and swapped for a short form, or
1442
+ dropped, before it is allowed to clip \u2014 so it never needs an ellipsis, and
1443
+ must never be laid out (or announced) while hidden. */
1444
+ .sl-seccard.strip .sl-seccard-left[hidden]{display:none}
1415
1445
  /* The confirm card is bottom-anchored on narrow and owns this edge while it is
1416
1446
  open; 3D has no 2D section context to report. */
1417
1447
  .sl-picker[data-layout="narrow"][data-confirming="true"] .sl-seccard.strip,
@@ -1438,7 +1468,40 @@
1438
1468
  background:color-mix(in srgb,var(--sl-surface) 88%,var(--sl-bg));font-size:14px;font-weight:850;line-height:1}
1439
1469
  .sl-seccard-nav button:hover,.sl-seccard-nav button:focus-visible{border-color:var(--sl-accent);color:var(--sl-accent-text)}
1440
1470
  .sl-seccard.mini .sl-seccard-nav,.sl-seccard.strip .sl-seccard-nav{margin-left:2px}
1441
- .sl-seccard.mini .sl-seccard-nav button,.sl-seccard.strip .sl-seccard-nav button{width:24px;height:24px;font-size:12px}
1471
+ .sl-seccard.mini .sl-seccard-nav button{width:24px;height:24px;font-size:12px}
1472
+ /* Phone strip: every control is a finger target (\u226540px box, 44px row) and the
1473
+ exit is a labelled "\u2039 Overview" chip \u2014 one tap in, one tap out. */
1474
+ .sl-seccard.strip{padding:4px 4px 4px 12px;min-height:44px}
1475
+ /* ...and on a phone it is a DOCK BAR, not a floating pill. The pill's rounded
1476
+ ends and centred max-width spent ~40px of a 390px row on nothing, so the
1477
+ name truncated to "Grand C\u2026" while the pill itself sat on top of the map's
1478
+ own corner controls \u2014 a second rounded edge showing through behind it. A bar
1479
+ that owns the bottom edge outright spends every pixel on the answer, and the
1480
+ corner controls lift above it rather than fighting it. */
1481
+ .sl-picker[data-layout="narrow"] .sl-seccard.strip{
1482
+ left:0;right:0;bottom:0;transform:none;width:auto;max-width:none;
1483
+ border-radius:0;border-width:1px 0 0 0;min-height:52px;
1484
+ padding:0 8px 0 14px;padding-bottom:var(--sl-safe-b);
1485
+ /* Opaque: seats scrolling under a translucent dock read as a rendering bug. */
1486
+ background:var(--sl-surface);box-shadow:0 -10px 26px -20px rgba(0,0,0,.7)}
1487
+ /* Total height of the dock, including the home-indicator inset it absorbs. */
1488
+ .sl-picker[data-layout="narrow"]{--sl-locator-h:calc(52px + var(--sl-safe-b))}
1489
+ /* Every absolutely-positioned bottom control on the map moves as one \u2014 the
1490
+ regions are the only lever that reaches all of them, which is what they are
1491
+ for. Skipped while the confirm card or 3D has taken the strip away. */
1492
+ .sl-picker[data-layout="narrow"][data-locator="true"]:not([data-confirming="true"]):not([data-view3d="on"])
1493
+ .sl-anchor[data-region="bottom-left"],
1494
+ .sl-picker[data-layout="narrow"][data-locator="true"]:not([data-confirming="true"]):not([data-view3d="on"])
1495
+ .sl-anchor[data-region="bottom-right"]{bottom:calc(12px + var(--sl-locator-h))}
1496
+ .sl-picker[data-layout="narrow"][data-locator="true"]:not([data-confirming="true"]):not([data-view3d="on"])
1497
+ .sl-anchor[data-region="bottom-center"]{bottom:calc(14px + var(--sl-locator-h))}
1498
+ .sl-seccard.strip .sl-seccard-nav{gap:2px}
1499
+ .sl-seccard.strip .sl-seccard-nav button{width:34px;height:36px;font-size:15px}
1500
+ .sl-seccard-back{width:auto;height:36px;padding:0 10px 0 6px;flex:none;margin-left:2px;border-radius:999px;
1501
+ display:inline-flex;align-items:center;gap:2px;font-size:12.5px;font-weight:800;color:var(--sl-accent-text);
1502
+ background:color-mix(in srgb,var(--sl-accent) 12%,var(--sl-surface));border:1px solid color-mix(in srgb,var(--sl-accent) 35%,var(--sl-line))}
1503
+ .sl-seccard-back:active{transform:scale(.96)}
1504
+ .sl-seccard-back-chev{font-size:18px;line-height:1;margin-top:-2px}
1442
1505
 
1443
1506
  /* view-from-seat button on the confirm popover */
1444
1507
  /* Eager sightline preview inside the confirm card */
@@ -1471,7 +1534,10 @@
1471
1534
  .sl-cx-mark{flex:none;font-size:12px;line-height:1;color:#f4b740;cursor:help}
1472
1535
 
1473
1536
  /* 360\xB0 seat-view modal (fills the widget; drag-to-look-around equirectangular) */
1474
- .sl-view{position:absolute;inset:0;z-index:12;display:flex;flex-direction:column;background:var(--sl-bg)}
1537
+ .sl-view{position:absolute;inset:0;z-index:12;display:flex;flex-direction:column;background:var(--sl-bg);
1538
+ animation:slViewEnter .24s cubic-bezier(.2,.8,.2,1);transition:opacity .18s ease,transform .18s ease}
1539
+ .sl-view.is-leaving{opacity:0;transform:translateY(10px) scale(.992);pointer-events:none}
1540
+ @keyframes slViewEnter{from{opacity:0;transform:translateY(12px) scale(.992)}to{opacity:1;transform:none}}
1475
1541
  .sl-view-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--sl-line);flex:none}
1476
1542
  .sl-view-title{font-weight:800;font-size:15px}
1477
1543
  .sl-view-cap{font-size:11px;color:var(--sl-muted)}
@@ -1564,10 +1630,16 @@
1564
1630
  .sl-access-act{margin-top:8px;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;
1565
1631
  background:var(--sl-accent);color:var(--sl-accent-ink)}
1566
1632
  @keyframes slAccessIn{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
1633
+ /* The collapsed sheet's one-liner reacting to a seat landing in the cart. The
1634
+ global reduced-motion block above already neutralises it. */
1635
+ @keyframes slPeekBump{0%{transform:scale(1)}45%{transform:scale(1.15)}100%{transform:scale(1)}}
1636
+ .sl-peek-sum{display:inline-block;transform-origin:left center}
1637
+ .sl-peek-bump{animation:slPeekBump .24s cubic-bezier(.2,.8,.2,1)}
1567
1638
 
1568
1639
  @media(prefers-reduced-motion:reduce){
1569
1640
  .sl-picker *,.sl-modal-scrim *{animation-duration:.001ms!important;animation-iteration-count:1!important;
1570
1641
  transition-duration:.001ms!important;scroll-behavior:auto!important}
1642
+ .sl-view,.sl-view3d{animation:none!important;transition:none!important}
1571
1643
  .sl-access{animation:none;opacity:1;transform:translate(-50%,0)}
1572
1644
  }
1573
1645
  .sl-ba [data-ba-zone]{grid-column:1/-1;width:100%}
@@ -1581,7 +1653,17 @@
1581
1653
  corners, and it is the frame. */
1582
1654
  .sl-modal-frame > .sl-picker{border-radius:0}
1583
1655
  @media(max-width:640px){.sl-modal-scrim{padding:0}.sl-modal-frame{width:100%;height:100%;border-radius:0}}
1584
- `;function ci(){if(document.getElementById(Os))return;let r=document.createElement("style");r.id=Os,r.textContent=$n+Rs,document.head.appendChild(r)}var qe=require("@seatlayer/core");var $t=require("@seatlayer/core/core/color");function he(r){if(!r)return null;let e=r.trim().toLowerCase();if(e==="white")return{r:255,g:255,b:255};if(e==="black")return{r:0,g:0,b:0};let t=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(e)?.[1];if(t){let s=t.length<=4?[...t].map(n=>`${n}${n}`).join(""):t;return{r:Number.parseInt(s.slice(0,2),16),g:Number.parseInt(s.slice(2,4),16),b:Number.parseInt(s.slice(4,6),16)}}let i=/^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)(?:\s*[,/]\s*[\d.]+%?)?\s*\)$/i.exec(e);return i?{r:Math.max(0,Math.min(255,Number(i[1]))),g:Math.max(0,Math.min(255,Number(i[2]))),b:Math.max(0,Math.min(255,Number(i[3])))}:null}function _t(r){return(0,$t.relativeLuminance255)([r.r,r.g,r.b])}function pe(r,e){let t=he(r),i=he(e);if(!t||!i)return null;let s=Math.max(_t(t),_t(i)),n=Math.min(_t(t),_t(i));return(s+.05)/(n+.05)}function ke(r,e="#172033",t="#eef1f8"){return(pe(e,r)??0)>=(pe(t,r)??0)?e:t}function Bn(r){return(0,$t.rgb255ToHex)(r.r,r.g,r.b)}function di(r,e,t){let i=he(r),s=he(e);if(!i||!s)return null;let n=Math.max(0,Math.min(1,t));return Bn({r:i.r*n+s.r*(1-n),g:i.g*n+s.g*(1-n),b:i.b*n+s.b*(1-n)})}function Is(r,e,t,i){if((pe(r,t)??4.5)>=4.5&&(pe(r,i)??4.5)>=4.5)return r;if(!he(r)||!he(e))return e;for(let s=.15;s<=1;s+=.05){let n=di(r,e,1-s);if(n&&(pe(n,t)??0)>=4.5&&(pe(n,i)??0)>=4.5)return n}return e}function _s(r,e){let t=e??r["--sl-bg"],i=he(t)?ke(t)==="#172033":!1,s=he(r["--sl-bg"])?ke(r["--sl-bg"])==="#172033":!1;if(i===s)return null;let n=i?"#ffffff":"#1a2234",o=ke(t),a=r["--sl-accent"];return{"--sl-bg":t,"--sl-surface":n,"--sl-text":o,"--sl-muted":i?"#667085":"#a5aec2","--sl-line":i?"rgba(23,32,51,.16)":"rgba(165,174,194,.24)","--sl-accent-text":Is(a,o,t,n)}}function at(r,e){let t=e?.background??r?.background??"#0f1522",i=he(t)?ke(t)==="#172033":!1,s=e?.surface??(i?"#ffffff":"#1a2234"),n=e?.accent??r?.accent??"#f4b740",o=r?.accentInk,a=e?.accentInk??(o&&(pe(o,n)??4.5)>=4.5?o:ke(n,"#1a1200","#ffffff")),l=r?.textColor,c=e?.text??(l&&(pe(l,t)??4.5)>=4.5&&(pe(l,s)??4.5)>=4.5?l:ke(t));return{"--sl-accent":n,"--sl-accent-ink":a,"--sl-accent-text":Is(n,c,t,s),"--sl-bg":t,"--sl-surface":s,"--sl-text":c,"--sl-muted":e?.muted??(i?"#667085":"#a5aec2"),"--sl-line":e?.line??(i?"rgba(23,32,51,.16)":"rgba(165,174,194,.24)"),"--sl-font":e?.fontFamily??r?.fontFamily??"-apple-system,BlinkMacSystemFont,'Segoe UI',Inter,sans-serif","--sl-radius":`${e?.radius??14}px`}}function $s(r,e,t){let i=document.createElement("div");i.className="sl-picker",i.tabIndex=-1,i.lang=(0,qe.getLocale)(),i.dir=(0,qe.localeDirection)(),r.appendChild(i),Object.entries(at(void 0,t)).forEach(([n,o])=>i.style.setProperty(n,o)),i.innerHTML=`
1656
+ `;function We(){if(document.getElementById(nr))return;let s=document.createElement("style");s.id=nr,s.textContent=Cn+sr,document.head.appendChild(s)}var pr=require("@seatlayer/core"),hr=require("@seatlayer/core/core/cdnAsset");var Hn=require("@seatlayer/core/core/cdnAsset");function g(s,e){let t=(0,pr.t)(s);return t===s?e:t}function ur(s){if(typeof s=="string"){let e=document.querySelector(s);if(!e)throw new Error(`seatmap: container "${s}" not found`);return e}if(!(s instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return s}function V(s){return String(s??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function mr(s,e,t){let i=e.find(n=>Ot(n))??null;if(s.replaceChildren(),!i)return s.textContent=t.slice(0,1).toUpperCase(),null;let r=document.createElement("img");return r.alt="",r.referrerPolicy="no-referrer",r.src=i,s.appendChild(r),i}var Ye=null;function It(){if(Ye!==null)return Ye;try{if(typeof document>"u")return Ye=!1;Ye=!!document.createElement("canvas").getContext("webgl2")}catch{Ye=!1}return Ye}function fi(s){return(0,hr.cdnAssetUrl)(s)}async function _t(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(fi("seatlayer-view3d.mjs")):import("@seatlayer/core/view3d")}async function Bt(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(fi("seatlayer-panorama.mjs")):import("@seatlayer/core")}async function fr(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(fi("seatlayer-checkout.mjs")):Promise.resolve().then(()=>(dr(),cr))}function gr(s){return s==="unavailable_for_event"||s==="payments_off_for_event"?s:"not_configured"}function Dt(s,e,t){let i={month:"short",day:"numeric",hour:"numeric",minute:"2-digit"},r=new Date(s);if(e)try{return r.toLocaleString(t,{...i,timeZone:e})}catch{}return r.toLocaleString(t,i)}async function $t(s,e){let t=s.overlay.productionElements;if(!t?.some(r=>r.contentImageUrl))return s;let i=await Promise.all(t.map(async r=>{if(!r.contentImageUrl)return r;try{let n=await e(r.contentImageUrl);if(!n){let{contentImageUrl:o,...a}=r;return a}return{...r,runtimeContentImageUrl:n}}catch{let{contentImageUrl:n,...o}=r;return o}}));return{...s,overlay:{...s.overlay,productionElements:i}}}async function zt(s,e){if(s)try{let t=await e(s);return t?await(await fetch(t)).arrayBuffer():void 0}catch{return}}var xe=require("@seatlayer/core/view/panoramaDelivery");function Vt(s){let{root:e,source:t,caption:i,real:r,closeLabel:n,dragHint:o,viewFromSeatLabel:a,real360Label:l,previewLabel:c,resolveAsset:h,onClose:d}=s,p=document.createElement("div");p.className="sl-view",p.setAttribute("role","dialog"),p.setAttribute("aria-label",a),p.innerHTML='<div class="sl-view-head"><span class="sl-view-title"></span><span class="sl-view-cap"></span><button type="button" class="sl-view-x"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button></div><div class="sl-view-pano"><span class="sl-view-badge"></span><span class="sl-view-hint"></span></div>',p.querySelector(".sl-view-title").textContent=a,p.querySelector(".sl-view-cap").textContent=i,p.querySelector(".sl-view-x").setAttribute("aria-label",n),p.querySelector(".sl-view-badge").textContent=r?l:c,p.querySelector(".sl-view-hint").textContent=o,e.appendChild(p);let m=p.querySelector(".sl-view-pano"),f=(0,xe.planPanoramaDelivery)(t,(0,xe.browserPanoramaConstraints)()),b=new AbortController;m.style.backgroundImage=`url(${JSON.stringify(f.initialUrl)})`;let C=()=>{};f.upgradeUrl&&(C=(0,xe.schedulePanoramaUpgrade)(()=>{h(f.upgradeUrl).then(T=>!T||b.signal.aborted?null:(0,xe.loadPanoramaImage)(T,b.signal).then(()=>T)).then(T=>{!T||!p.isConnected||b.signal.aborted||(m.style.backgroundImage=`url(${JSON.stringify(T)})`)}).catch(()=>{})}));let x=70,R=35,y=1,E=m.clientHeight||1,H=m.clientWidth||1,M=-(E*(180/x)*2/2-H/2),O=0,u=()=>{let T=m.clientHeight||1,q=T*(180/x)*y,F=Math.max(0,q-T),nt=Math.min(F/2,R/180*q);O=Math.min(nt,Math.max(-nt,O)),m.style.backgroundSize=`auto ${q}px`,m.style.backgroundPosition=`${M}px ${O-F/2}px`};u();let k=!1,L=0,U=0,B=T=>{k=!0,L=T.clientX,U=T.clientY,m.classList.add("drag"),m.setPointerCapture?.(T.pointerId)},D=T=>{k&&(M+=T.clientX-L,O+=T.clientY-U,L=T.clientX,U=T.clientY,u())},N=T=>{k=!1,m.classList.remove("drag"),m.releasePointerCapture?.(T.pointerId)},re=T=>{T.preventDefault(),y=Math.min(2.4,Math.max(1,y+(T.deltaY<0?.12:-.12))),u()};m.addEventListener("pointerdown",B),m.addEventListener("pointermove",D),m.addEventListener("pointerup",N),m.addEventListener("pointercancel",N),m.addEventListener("wheel",re,{passive:!1});let de=p.querySelector(".sl-view-x");de.addEventListener("click",d);let st=T=>{T.key==="Escape"&&(T.stopPropagation(),d())};return p.addEventListener("keydown",st),de.focus(),{element:p,dispose(){C(),b.abort(),m.removeEventListener("pointerdown",B),m.removeEventListener("pointermove",D),m.removeEventListener("pointerup",N),m.removeEventListener("pointercancel",N),m.removeEventListener("wheel",re),p.removeEventListener("keydown",st),de.removeEventListener("click",d)}}}var br=6e4,Ft=class{constructor(e){this.buyerView_="map";this.targetSeatId_=null;this.navigationMode_="orbit";this.overlay=null;this.handle=null;this.generation=0;this.seatViewGeneration=0;this.seatViewElement=null;this.seatViewDispose=null;this.options=e}get buyerView(){return this.buyerView_}get targetSeatId(){return this.targetSeatId_}get navigationMode(){return this.navigationMode_}canOffer3D(){return this.options.enable3D?this.handle&&this.overlay?!0:!this.options.doc()||!It()?!1:this.options.seats().length<=this.max3DSeats():!1}canOfferSeatView(){return this.options.enableSeatView?this.options.seats().some(e=>!!e.viewUrl)?!0:this.hasStage():!1}async setBuyerView(e,t={}){if(e==="map"){this.exit3D();return}if(!this.canOffer3D())throw new Error("venue_3d_unavailable");if(this.buyerView_==="venue3d"&&this.handle){t.flyToSeatId?(this.targetSeatId_=t.flyToSeatId,this.options.onViewChange(this.buyerView_,this.targetSeatId_),await this.handle.flyToSeat(t.flyToSeatId)):t.resetView&&this.handle.focusOverview();return}if(this.handle&&this.overlay){await this.restore3D(t);return}await this.enter3D(t.flyToSeatId)}async openSeatView(e){if(!this.canOfferSeatView())throw new Error("seat_view_unavailable");let t=this.findSeat(e),i=this.options.host(),r=this.options.doc();if(!t||!i||!r)throw new Error("seat_view_unavailable");let n=++this.seatViewGeneration,o,a,l=!1;if(t.viewUrl){let h=t.viewMeta?.previewUrl,d=!!h&&h!==t.viewUrl,p=d?await this.options.resolveAsset(h):null,m=d?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(n!==this.seatViewGeneration||!m||d&&!p)return;o={url:m,...p?{previewUrl:p}:{},...d?{resolveUrl:this.options.resolveAsset}:{},...t.viewMeta?.sourceWidth!==void 0?{sourceWidth:t.viewMeta.sourceWidth}:{},...t.viewMeta?.sourceHeight!==void 0?{sourceHeight:t.viewMeta.sourceHeight}:{},...t.viewMeta?.previewWidth!==void 0?{previewWidth:t.viewMeta.previewWidth}:{},...t.viewMeta?.previewHeight!==void 0?{previewHeight:t.viewMeta.previewHeight}:{},...t.viewMeta?.variants?.length?{variants:t.viewMeta.variants}:{},...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}},a=(0,jt.seatViewDisclosure)(o),l=(0,jt.isAuthoredSeatView)(o)}else{if(!this.hasStage())throw new Error("seat_view_unavailable");let{generateSeatPanorama:h}=await Bt();if(n!==this.seatViewGeneration)return;let d=r.floors?.find(f=>f.objects.some(b=>b.type==="row"&&b.id===t.rowId)),p=t.focalPoint??d?.focalPoint??r.focalPoint,m=h(t,p,[...this.options.seats()]);o={url:m.url,generated:!0},a=(0,pt.t)("picker.illustrationCaption",{m:m.distanceM})}if(n!==this.seatViewGeneration)return;this.closeSeatView(!1),this.prepareHostTheme(i,r),We();let c=Vt({root:i,source:o,caption:a,real:l,closeLabel:g("picker.close","Close"),dragHint:g("picker.dragToLookAround","Drag to look around \xB7 pinch or scroll to zoom"),viewFromSeatLabel:(0,pt.t)("picker.viewFromSeat",{label:t.displayLabel||t.label}),real360Label:(0,pt.t)("picker.real360"),previewLabel:(0,pt.t)("picker.preview"),resolveAsset:this.options.resolveAsset,onClose:()=>this.closeSeatView(!0,!0)});this.seatViewElement=c.element,this.seatViewDispose=c.dispose}pushLiveState(){this.handle&&(this.handle.setAvailability(this.options.seats().map(e=>({seatId:e.id,state:this.seatState(e)}))),this.handle.setSelection(this.options.selection().map(e=>e.id)))}focusOverview(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.focusOverview(),!0)}focusSection(e){return this.buyerView_==="venue3d"?this.handle?.focusSection(e)??!1:!1}focusFloor(e){let t=this.options.doc();if(this.buyerView_!=="venue3d"||!this.handle||!t?.floors?.length)return!1;let i=t.floors.findIndex(r=>r.id===e);return i>=0&&this.handle.focusFloor(i)}zoomIn(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.zoomIn(),!0)}zoomOut(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.zoomOut(),!0)}setNavigationMode(e){return this.navigationMode_=e,this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.setNavigationMode(e),this.options.onViewChange(this.buyerView_,this.targetSeatId_),!0)}destroy(){this.generation+=1,this.closeSeatView(!0,!1);try{this.handle?.dispose()}catch{}this.handle=null,this.overlay?.remove(),this.overlay=null,this.buyerView_="map",this.targetSeatId_=null}max3DSeats(){let e=this.options.max3DSeats;if(typeof e=="number"&&e>0)return e;let t=globalThis.navigator;return(t?.hardwareConcurrency??8)<=4||(t?.deviceMemory??8)<=4||(globalThis.matchMedia?.("(pointer: coarse)").matches??!1)?br/2:br}async enter3D(e){let t=this.options.host(),i=this.options.doc();if(!t||!i||this.overlay)throw new Error("venue_3d_unavailable");We(),this.prepareHostTheme(t,i);let r=document.createElement("div");r.className="sl-view3d",r.setAttribute("role","group"),r.setAttribute("aria-label",g("picker.interactive3dVenueView","Interactive 3D venue view")),Object.assign(r.style,{position:"absolute",inset:"0",zIndex:"4",opacity:"0",touchAction:"none",transition:this.reducedMotion()?"none":"opacity 260ms cubic-bezier(.2,.8,.2,1)",background:"radial-gradient(120% 120% at 50% 0%,#191f28 0%,#0d1014 70%)"});let n=document.createElement("div");n.className="sl-view3d-loading",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),n.textContent=g("picker.loading3d","Building the 3D venue\u2026"),r.appendChild(n),t.appendChild(r),this.overlay=r;let o=++this.generation;if(this.reducedMotion()?r.style.opacity="1":requestAnimationFrame(()=>{r.style.opacity="1"}),await this.nextPaint(),!(o!==this.generation||this.overlay!==r))try{let[a,l]=await Promise.all([_t(),this.options.loadEventConfiguration()]),c=l?await $t(l,this.options.resolveAsset):null,h=await zt(i.theme?.venue3d?.shellAssetUrl,this.options.resolveAsset);if(o!==this.generation||this.overlay!==r)return;let d={doc:i,seats:[...this.options.seats()],...c?{eventConfigurationId:c.id,eventConfiguration:c}:{},...h?{registeredShellGlb:h}:{}},p=await a.prepareVenue3D(d);if(o!==this.generation||this.overlay!==r)return;let m=a.mountVenue3D(r,{...d,prepared:p},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,seatViewActionLabel:f=>this.findSeat(f)?.viewUrl?g("picker.openAuthored360","Open venue 360\xB0"):g("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:f=>this.toggleSeat(f),onSeatInspect:f=>this.toggleSeat(f),onViewTargetChange:f=>{this.targetSeatId_=f,this.options.onViewChange("venue3d",f)},...this.options.enableSeatView?{getSeatView:f=>this.seatViewFor3D(f)}:{}});if(o!==this.generation||this.overlay!==r){m.dispose();return}this.handle=m,this.buyerView_="venue3d",this.targetSeatId_=e??null,m.setNavigationMode(this.navigationMode_),n.remove(),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e&&await m.flyToSeat(e)}catch(a){if(o!==this.generation)return;throw this.options.onError?.(a),this.remove3DOverlay(!1),a}}exit3D(){this.buyerView_==="map"&&!this.overlay||(this.generation+=1,this.buyerView_="map",this.targetSeatId_=null,this.remove3DOverlay(!0,!!this.handle),this.options.onViewChange("map",null))}remove3DOverlay(e,t=!1){let i=this.handle,r=this.overlay;if(this.options.restoreMap(),t&&i&&r){r.style.pointerEvents="none";let n=()=>{this.buyerView_!=="map"||this.overlay!==r||(r.style.visibility="hidden",this.options.restoreMap())};!e||this.reducedMotion()?(r.style.opacity="0",n()):(requestAnimationFrame(()=>{r.style.opacity="0"}),setTimeout(n,280));return}if(this.handle=null,this.overlay=null,!r){try{i?.dispose()}catch{}this.options.restoreMap();return}if(!e||this.reducedMotion()){try{i?.dispose()}catch{}r.remove(),this.options.restoreMap();return}r.style.pointerEvents="none",requestAnimationFrame(()=>{r.style.opacity="0"}),setTimeout(()=>{try{i?.dispose()}catch{}r.remove(),this.options.restoreMap()},280)}async restore3D(e){let t=this.overlay,i=this.handle;if(!t||!i)throw new Error("venue_3d_unavailable");this.buyerView_="venue3d",this.targetSeatId_=e.flyToSeatId??null,t.style.visibility="visible",t.style.pointerEvents="auto",this.reducedMotion()?t.style.opacity="1":requestAnimationFrame(()=>{t.style.opacity="1"}),i.resize(),i.setNavigationMode(this.navigationMode_),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e.flyToSeatId?await i.flyToSeat(e.flyToSeatId):e.resetView&&i.focusOverview()}nextPaint(){return this.reducedMotion()||typeof requestAnimationFrame!="function"?Promise.resolve():new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}toggleSeat(e){if(!this.findSeat(e))return;this.options.selection().some(r=>r.id===e)?this.options.deselect(e):this.options.status(e)==="free"&&this.options.select(e),this.pushLiveState()}seatState(e){switch(this.options.status(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:return"available"}}async seatViewFor3D(e){let t=this.findSeat(e);if(!t)throw new Error("seat_view_unavailable");if(t.viewUrl){let i=t.viewMeta?.previewUrl,r=!!i&&i!==t.viewUrl,n=r?await this.options.resolveAsset(i):null,o=r?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(!o||r&&!n)throw new Error("seat_view_unavailable");return{url:o,...n?{previewUrl:n}:{},...r?{resolveUrl:this.options.resolveAsset}:{},...t.viewMeta?.variants?.length?{variants:t.viewMeta.variants}:{},...t.viewMeta?.initialBearingDeg!==void 0?{initialBearingDeg:t.viewMeta.initialBearingDeg}:{},...t.viewMeta?.initialPitchDeg!==void 0?{initialPitchDeg:t.viewMeta.initialPitchDeg}:{},...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:g("picker.chartDerivedModel","Chart-derived model")}}closeSeatView(e=!0,t=!1){e&&(this.seatViewGeneration+=1);let i=this.seatViewElement;if(this.seatViewDispose?.(),this.seatViewDispose=null,this.seatViewElement=null,!!i){if(!t||this.reducedMotion()){i.remove();return}i.classList.add("is-leaving"),setTimeout(()=>i.remove(),190)}}findSeat(e){return this.options.seats().find(t=>t.id===e||t.label===e)}hasStage(){let e=this.options.doc();return e?(e.floors?.flatMap(i=>i.objects)??e.objects).some(i=>i.type==="shape"&&(i.role==="stage"||!!i.stageKind)):!1}prepareHostTheme(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");let i=t.theme;e.style.setProperty("--sl-bg",i?.background??"#f6f7fb"),e.style.setProperty("--sl-surface","#ffffff"),e.style.setProperty("--sl-text",i?.textColor??"#10162a"),e.style.setProperty("--sl-muted","#697386"),e.style.setProperty("--sl-line","#d9deea"),e.style.setProperty("--sl-accent",i?.accent??"#ef4056"),e.style.setProperty("--sl-accent-ink",i?.accentInk??"#ffffff")}reducedMotion(){return globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1}};var vr=new Set;function we(s){return vr.has(s)?"repeat":"cold"}function Nt(s){let e=we(s);return vr.add(s),e}function le(s){return typeof s=="number"&&Number.isFinite(s)&&s>=0?Math.round(s):0}function Rn(){return typeof location>"u"?!1:/^(localhost|127\.0\.0\.1|\[::1\])$/i.test(location.hostname)}function On(s){if(!/^[A-Za-z0-9_-]{1,80}$/.test(s.event))return null;let e=s.performanceProfile??{};return{event:s.event,scope:s.scope,surface:s.surface,outcome:s.outcome,stage:s.stage?.slice(0,32)??"",ms:le(s.ms),api:le(e.loadChartAndStatuses)||le(e.loadChart),scene:le(e.buildScene),panel:le(e.buildBuyerControls),paint:le(e.firstPaint),normalize:le(e.normalizeBuyerModel),renderer:le(e.createRenderer),seats:le(s.seats),floors:le(s.floors),view:s.view??"map",load:s.load??we(s.event),transport:s.transport??"pubapi"}}function ke(s){if(typeof fetch>"u"||Rn())return;let e=On(s);e&&fetch(`${s.apiBase.replace(/\/+$/,"")}/pub/telemetry/chart-load`,{method:"POST",headers:{"Content-Type":"application/json","X-SeatLayer-Client":"1"},body:JSON.stringify(e),credentials:"omit",keepalive:!0}).catch(()=>{})}var In="https://api.seatlayer.io",yr=10;function _n(s){if(typeof s=="string"){let e=document.querySelector(s);if(!e)throw new Error(`seatmap: container "${s}" not found`);return e}if(!(s instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return s}var Gt=class{constructor(e){this.mount=null;this.hostEl=null;this.interactionEnabled_=!0;this.eventLocale=null;this.rendered=!1;this.mode_=null;this.eventInfo=null;this.categoryFilter_=null;this.accessibilityFilter_=null;this.hideLimitedView_=!1;this.focusedSection_=null;this.lastReportedViewRung_=null;this.tipEl=null;this.tipPos={x:0,y:0};this.onTipMove=null;this.realtime=null;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.container)throw new Error("seatmap: `container` is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");this.opts=e,this.maxSelection_=e.maxSelection??yr,this.colorblindSafe_=e.colorblindSafe??!1;let t=!!(e.buyerAccessTokenProvider||e.buyerAccessToken||e.publicKey);this.accessState_={configured:t,status:t?"ready":"public"},this.publicKey=e.publicKey;let i={onExpired:a=>{this.accessState_={configured:!0,status:a.refreshed?"ready":"expired"},this.opts.onAccessExpired?.(a),this.notifyMapStateChange()},onUnavailable:a=>{this.accessState_={configured:!0,status:"unavailable",reason:a.reason},this.opts.onAccessUnavailable?.(a),this.notifyMapStateChange()}},r=(e.apiBase??In).replace(/\/+$/,"");this.apiBase=r;let n=e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?Lt({base:r,event:e.event,publicKey:e.publicKey,accessHooks:i,apiOptions:{onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=n?.access??Ge(e,i);let o=n?.api??new ve(r,{access:this.access??void 0,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)});this.api=o,this.controller=new z.PickerController({transport:o,eventKey:e.event,maxSelection:this.maxSelection_,selectedObjects:e.selectedObjects,selectableObjects:e.selectableObjects,numberOfPlacesToSelect:e.numberOfPlacesToSelect,selectionValidators:e.selectionValidators,currency:e.currency,onSelectionChange:a=>{this.immersive?.pushLiveState(),this.opts.onSelectionChange?.(a)},onSelectionValidityChange:a=>this.opts.onSelectionValidityChange?.(a),onSelectionValid:a=>this.opts.onSelectionValid?.(a),onSelectionInvalid:a=>this.opts.onSelectionInvalid?.(a),onSelectionLimit:a=>this.opts.onSelectionLimit?.(a),onHold:a=>this.opts.onHold?.({holdId:a.holdId,expiresAt:a.expiresAt,seats:a.seats,items:a.items}),onHoldRestored:a=>this.opts.onHoldRestored?.({holdId:a.holdId,expiresAt:a.expiresAt,seats:a.seats,items:a.items}),onHoldExpired:()=>this.opts.onHoldExpired?.(),onGAClick:a=>{let l=this.controller.getGAAreas().find(c=>c.id===a);l&&(this.opts.onGAClick?.(l),this.opts.onGAPrompt?.({area:l,selected:{},min:0,max:Math.max(0,Math.min(l.available,(this.opts.maxSelection??yr)-this.controller.getSelection().length)),tiers:Ht(l),confirm:c=>{let h=typeof c=="number"?c:Object.values(c).reduce((d,p)=>d+p,0);this.holdGA(l.id,h)},cancel:()=>{}}))},onError:a=>this.opts.onError?.(a),onDeckTap:a=>{this.opts.onDeckTap?.(a),this.notifyMapStateChange()},onHint:a=>this.opts.onHint?.(a),onSectionFocus:a=>{this.focusedSection_=a,this.opts.onSectionFocus?.(a),this.notifyMapStateChange()},onViewChange:()=>this.handleViewChange(),onStatusChange:()=>{this.immersive?.pushLiveState(),this.opts.onStatusChange?.()},onSalesClosed:()=>{this.eventInfo&&(this.eventInfo.salesClosed=!0),this.opts.onSalesClosed?.()},flashOnLiveChange:!0,onSeatHover:a=>{this.opts.onSeatHover?.(a),this.opts.seatTooltip!==!1&&this.updateTooltip(a)},colorblindSafe:e.colorblindSafe,mapTheme:e.mapTheme??null}),this.buyerAssetUrls=new Ke(e.event,(a,l)=>o.asset(a,l)),this.immersive=new Ft({host:()=>this.hostEl,doc:()=>this.controller.doc,seats:()=>this.controller.getExpandedSeats(),selection:()=>this.controller.getSelection(),status:a=>this.controller.getStatus(a),select:a=>this.controller.select([a]),deselect:a=>this.controller.deselect([a]),loadEventConfiguration:()=>this.controller.loadEventConfiguration(),resolveAsset:a=>this.buyerAssetUrls.resolve(a),enable3D:e.enable3D!==!1,enableSeatView:e.enableSeatView!==!1,max3DSeats:e.max3DSeats,restoreMap:()=>this.controller.refitCurrentView(),onViewChange:(a,l)=>{this.opts.onBuyerViewChange?.({view:a,...l?{seatId:l}:{}}),this.notifyMapStateChange()},onError:a=>this.opts.onError?.(a)}),this.lastReportedViewRung_=this.controller.getRung()}handleViewChange(){this.opts.onViewChange?.();let e=this.controller.getRung();e!==this.lastReportedViewRung_&&(this.lastReportedViewRung_=e,this.opts.onMapStateChange?.())}notifyMapStateChange(){this.lastReportedViewRung_=this.controller.getRung(),this.opts.onMapStateChange?.()}async render(){if(this.rendered)return this;let e=performance.now();this.rendered=!0,await(0,z.loadLocale)(this.opts.locale),this.opts.messages&&(0,z.setStringOverrides)(this.opts.messages),this.mount=_n(this.opts.container);let t=document.createElement("div");t.lang=(0,z.getLocale)(),t.dir=(0,z.localeDirection)(),t.style.width="100%",t.style.height="100%",t.style.position="relative",this.mount.appendChild(t),this.hostEl=t,this.applyInteractionState();let i=await this.controller.render(t);if(!i)return ke({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"failure",stage:"load_chart",ms:performance.now()-e,load:we(this.opts.event),transport:"pubapi"}),this.rendered=!1,this.opts.errorDisplay!=="none"&&this.showLoadFailure(t),this;if(this.eventLocale=i.locale??null,!this.opts.locale&&this.eventLocale&&await this.setLocale(this.eventLocale),this.buildLanguageSwitcher(t),this.controller.setViewMode(this.opts.initialView??"flat"),this.startRealtime(),this.mode_=i.mode==="test"?"test":"live",this.eventInfo={name:i.eventName,venue:i.venue??null,startsAt:i.startsAt??null,timezone:i.timezone??null,currency:i.currency??this.opts.currency??"USD",posterUrl:i.posterUrl??null,salesClosed:i.salesClosed},this.opts.seatTooltip!==!1){let r=document.createElement("div");r.setAttribute("role","tooltip"),r.style.cssText='position:absolute;z-index:7;pointer-events:none;display:none;max-width:240px;background:#10162a;color:#fff;border-radius:10px;padding:9px 12px;font:500 12px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 10px 30px -10px rgba(0,0,0,.5);',t.appendChild(r),this.tipEl=r,this.onTipMove=n=>{let o=t.getBoundingClientRect();this.tipPos={x:n.clientX-o.left,y:n.clientY-o.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()},t.addEventListener("mousemove",this.onTipMove)}if(i.mode==="test"&&this.opts.showTestModeIndicator!==!1){t.style.overflow="hidden";let r=document.createElement("div");r.dataset.slI18n="testMode",r.textContent=(0,z.t)("picker.testMode"),r.setAttribute("aria-label",(0,z.t)("picker.testMode")),r.style.cssText="position:absolute;top:18px;right:-34px;z-index:6;transform:rotate(45deg);width:140px;text-align:center;padding:4px 0;background:#f4b740;color:#1a1200;font:800 10.5px/1.4 -apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.12em;box-shadow:0 2px 8px rgba(0,0,0,.25);pointer-events:none;",t.appendChild(r)}return this.opts.showAttribution!==!1&&this.buildBadge(t),ke({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"success",ms:performance.now()-e,performanceProfile:i.performanceProfile,seats:this.controller.getExpandedSeats().length,floors:this.controller.getFloors().length,view:"map",load:Nt(this.opts.event),transport:"pubapi"}),this}buildBadge(e){if(this.controller.doc?.theme?.hideBadge)return;let t=document.createElement("a");t.dataset.slI18n="badge",t.href="https://seatlayer.io",t.target="_blank",t.rel="noopener noreferrer",t.setAttribute("aria-label",(0,z.t)("picker.poweredBy")),t.style.cssText='position:absolute;bottom:10px;right:12px;z-index:5;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#4a5163;text-decoration:none;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.02em;box-shadow:0 2px 8px rgba(0,0,0,.12);';let i=document.createElement("span");i.setAttribute("aria-hidden","true"),i.style.cssText="width:16px;height:16px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;background:#0c1220;color:#fcf7ee",i.innerHTML=Rt;let r=document.createElement("span");r.textContent=(0,z.t)("picker.poweredBy"),t.append(i,r),e.appendChild(t)}placeTooltip(){if(!this.tipEl||!this.hostEl)return;let e=this.hostEl.clientWidth,t=this.tipEl.offsetWidth,i=this.tipEl.offsetHeight,r=this.tipPos.x+14,n=this.tipPos.y-i-12;r+t>e-8&&(r=this.tipPos.x-t-14),n<8&&(n=this.tipPos.y+18),this.tipEl.style.left=`${Math.max(8,r)}px`,this.tipEl.style.top=`${Math.max(8,n)}px`}updateTooltip(e){if(!this.tipEl)return;if(!e){this.tipEl.style.display="none";return}let t=(0,z.formatMoney)(e.price,e.currency,{...Number.isInteger(e.price)?{minimumFractionDigits:0,maximumFractionDigits:0}:{},locale:this.opts.locale,fallback:(l,c)=>`${l} ${c}`}),i=document.createElement("div");i.style.cssText="font-weight:700;font-size:13px",i.textContent=e.label;let r=document.createElement("div");r.style.cssText="display:flex;align-items:center;gap:6px;margin-top:4px;color:#c7cddc";let n=document.createElement("span");n.style.cssText="width:9px;height:9px;border-radius:50%;flex:none",n.style.background=e.categoryColor;let o=document.createElement("span");o.textContent=e.categoryLabel;let a=document.createElement("span");if(a.style.cssText="margin-left:auto;font-weight:700;color:#fff",a.textContent=t,r.append(n,o,a),this.tipEl.replaceChildren(i,r),e.status!=="free"){let l=document.createElement("div");l.style.cssText="margin-top:5px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#fca5a5;font-weight:700",l.textContent=e.status==="held"?(0,z.t)("map.statusHeld"):(0,z.t)("map.statusTaken"),this.tipEl.appendChild(l)}this.tipEl.style.display="block",this.placeTooltip()}buildLanguageSwitcher(e){let t=(this.opts.languages??[]).map(r=>(0,z.resolveLocale)(r)).filter((r,n,o)=>o.indexOf(r)===n);if(t.length<2)return;let i=document.createElement("select");i.setAttribute("aria-label",(0,z.t)("picker.preferredTicketType")),i.style.cssText='position:absolute;bottom:10px;left:12px;z-index:5;appearance:none;padding:5px 9px;border-radius:999px;border:0;cursor:pointer;background:rgba(255,255,255,.92);color:#4a5163;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.12);';for(let r of t){let n=document.createElement("option");n.value=r,n.textContent=z.LOCALE_NAMES[r]??r,n.selected=r===(0,z.getLocale)(),i.appendChild(n)}i.addEventListener("change",()=>{this.setLocale(i.value)}),e.appendChild(i)}async setLocale(e){let t=(0,z.getLocale)(),i=await(0,z.loadLocale)(e);if(this.opts.messages&&(0,z.setStringOverrides)(this.opts.messages),i===t)return i;if(this.hostEl){this.hostEl.lang=i,this.hostEl.dir=(0,z.localeDirection)();for(let r of this.hostEl.querySelectorAll("[data-sl-i18n]"))if(r.dataset.slI18n==="testMode")r.textContent=(0,z.t)("picker.testMode"),r.setAttribute("aria-label",(0,z.t)("picker.testMode"));else if(r.dataset.slI18n==="badge"){r.setAttribute("aria-label",(0,z.t)("picker.poweredBy"));let n=r.querySelector("span:last-child");n&&(n.textContent=(0,z.t)("picker.poweredBy"))}}return this.controller.refreshMapCopy(),i}getMode(){return this.mode_}getPickerState(){let e=this.controller.doc,t=e?.theme??{},i=this.controller.categoryAvailability(),r=this.controller.getGAAreas(),n=this.controller.getFloors(),o=e?.floors?.flatMap(l=>l.objects)??e?.objects??[],a=new Map;for(let l of o)l.type==="section"&&a.set(l.id,{id:l.id,label:l.label,...l.displayLabel?{displayLabel:l.displayLabel}:{},...l.zone?{zoneId:l.zone}:{}});return{event:{key:this.opts.event,name:this.eventInfo?.name??e?.name??this.opts.event,venue:this.eventInfo?.venue??null,startsAt:this.eventInfo?.startsAt??null,timezone:this.eventInfo?.timezone??null,currency:this.eventInfo?.currency??this.opts.currency??"USD",locale:(0,z.getLocale)()||this.eventLocale,posterUrl:this.eventInfo?.posterUrl??null,mode:this.mode_??"live",salesClosed:this.eventInfo?.salesClosed??!1},branding:{...t.accent?{accent:t.accent}:{},...t.accentInk?{accentInk:t.accentInk}:{},...t.background?{background:t.background}:{},...t.textColor?{textColor:t.textColor}:{},...t.brandName?{brandName:t.brandName}:{},...t.logoUrl?{logoUrl:t.logoUrl}:{},attributionRequired:!t.hideBadge},features:{ga:r.length>0,tiers:!!e?.categories.some(l=>l.tiers?.length),floors:n.length>1,zones:!!e?.zones?.length,sections:a.size>0,bestAvailable:!0,accessibilityFilter:!0,limitedViewFilter:!0,venue3d:this.immersive.canOffer3D(),seatView:this.immersive.canOfferSeatView()},catalog:{categories:(e?.categories??[]).filter(l=>!l.notForSale).map(l=>({key:l.key,label:l.label,color:l.color,price:l.price??l.tiers?.[0]?.price??0,available:i[l.key]??0,tiers:(l.tiers??[]).map(c=>({id:c.id,name:c.name,price:c.price,...c.currency?{currency:c.currency}:{}}))})),zones:(e?.zones??[]).map(l=>({id:l.id,label:l.label,...l.color?{color:l.color}:{}})),sections:[...a.values()],gaAreas:r,bestAvailableZones:this.controller.getBestAvailableZones()},map:{floors:n,activeFloorId:this.controller.getActiveFloorId()||n[0]?.id||null,rung:this.controller.getRung(),focusedSectionId:this.controller.getFocusedSection(),focusedSection:this.focusedSection_,viewMode:this.controller.getViewMode(),buyerView:this.immersive.buyerView,view3dTargetSeatId:this.immersive.targetSeatId,view3dNavigationMode:this.immersive.navigationMode,colorblindSafe:this.colorblindSafe_,categoryFilter:this.categoryFilter_?[...this.categoryFilter_]:null,accessibilityFilter:this.accessibilityFilter_?[...this.accessibilityFilter_]:null,hideLimitedView:this.hideLimitedView_},selection:{seats:this.controller.getSelection(),validity:this.controller.getSelectionValidity(),maxSelection:this.maxSelection_},access:{...this.accessState_}}}getCategoryAvailability(){return this.controller.categoryAvailability()}getBestAvailableZones(){return this.controller.getBestAvailableZones()}getActiveFloorId(){return this.controller.getActiveFloorId()||null}getRung(){return this.controller.getRung()}getFocusedSection(){return this.controller.getFocusedSection()}focusSection(e){if(this.immersive.buyerView==="venue3d"&&this.immersive.focusSection(e)){this.notifyMapStateChange();return}this.controller.focusSection(e),this.notifyMapStateChange()}overview(){if(this.immersive.focusOverview()){this.notifyMapStateChange();return}this.controller.overview(),this.notifyMapStateChange()}setRung(e){this.controller.setRung(e),this.notifyMapStateChange()}setCategoryFilter(e,t=!1){this.categoryFilter_=e?[...e]:null,this.controller.setCategoryFilter(e),t&&this.controller.focusCategoryFilter(e),this.notifyMapStateChange()}setAccessibilityFilter(e){this.accessibilityFilter_=e?[...e]:null,this.controller.setAccessibilityFilter(e),this.notifyMapStateChange()}setCommercialLimitedFilter(e){this.hideLimitedView_=e,this.controller.setCommercialLimitedFilter(e),this.notifyMapStateChange()}getSelection(){return this.controller.getSelection()}selectObjects(e){let t=this.controller.select(e);return this.immersive.pushLiveState(),t}deselectObjects(e){this.controller.deselect(e),this.immersive.pushLiveState()}clearSelection(){this.controller.clearSelection(),this.immersive.pushLiveState()}selectCategories(e){return this.controller.selectCategories(e)}deselectCategories(e){this.controller.deselectCategories(e)}setSelectableObjects(e){this.controller.setSelectableObjects(e)}setMaxSelection(e){this.maxSelection_=e,this.controller.setMaxSelection(e),this.notifyMapStateChange()}getSelectionValidity(){return this.controller.getSelectionValidity()}async hold(e={}){try{return await this.holdOrThrow(e)}catch(t){return this.opts.onError?.(t),null}}async holdOrThrow(e={}){let t=this.controller.getSelectionValidity();if(t&&!t.isValid){let r=t.violations.includes("numberOfPlacesToSelect");throw Object.assign(new Error(r?`seatmap: select exactly ${t.required} places before holding`:"seatmap: adjust the ticket selection before holding"),{code:r?"selection_count_mismatch":"selection_invalid",selection:t})}let i=await this.controller.hold(void 0,e.ttlMs);return i?{holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items}:null}async resumeHold(e){try{return await this.resumeHoldOrThrow(e)}catch(t){return this.opts.onError?.(t),null}}async resumeHoldOrThrow(e){let t=await this.controller.resumeHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}async extendHold(e){try{let t=await this.controller.extendHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}catch(t){return this.opts.onError?.(t),null}}getCurrentHold(){let e=this.controller.currentHold();return e?{holdId:e.holdId,expiresAt:e.expiresAt,seats:e.seats,items:e.items}:null}getGAAreas(){return this.controller.getGAAreas()}async holdGA(e,t,i={}){try{return await this.holdGAOrThrow(e,t,i)}catch(r){return this.opts.onError?.(r),null}}async holdGAOrThrow(e,t,i={}){let r=await this.controller.holdGA(e,t,i);return r?{holdId:r.holdId,expiresAt:r.expiresAt,seats:r.seats,items:r.items}:null}async bestAvailable(e,t,i={}){try{return await this.bestAvailableOrThrow(e,t,i)}catch(r){return this.opts.onError?.(r),null}}async bestAvailableOrThrow(e,t,i={}){let r=await this.controller.bestAvailable(e,t,i);return r?{holdId:r.holdId,expiresAt:r.expiresAt,labels:r.labels,seats:r.seats,items:r.items,...i.zoneId?{zoneId:i.zoneId}:{}}:null}setSeatTier(e,t){this.controller.setSeatTier(e,t)}setTableQuantity(e,t){return this.controller.setTableQuantity(e,t)}async replaceTableQuantity(e,t,i){try{return await this.replaceTableQuantityOrThrow(e,t,i)}catch(r){return this.opts.onError?.(r),null}}async replaceTableQuantityOrThrow(e,t,i){let r=await this.controller.replaceTableQuantity(e,t,i);return r?{holdId:r.holdId,expiresAt:r.expiresAt,seats:r.seats,items:r.items}:null}getFloors(){return this.controller.getFloors()}setFloor(e){if(this.immersive.buyerView==="venue3d"&&this.immersive.focusFloor(e)){this.notifyMapStateChange();return}if(this.controller.getFloors().length<=1){console.warn("seatmap: setFloor() ignored \u2014 this chart has a single floor");return}this.controller.setFloor(e),this.notifyMapStateChange()}setColorblindSafe(e){this.colorblindSafe_=e,this.controller.setColorblindSafe(e),this.notifyMapStateChange()}setViewMode(e){this.controller.setViewMode(e),this.notifyMapStateChange()}getViewMode(){return this.controller.getViewMode()}zoomIn(){this.immersive.zoomIn()||(this.controller.zoomIn(),this.notifyMapStateChange())}zoomOut(){this.immersive.zoomOut()||(this.controller.zoomOut(),this.notifyMapStateChange())}zoomToFit(){this.immersive.focusOverview()||(this.controller.zoomToFit(),this.notifyMapStateChange())}setBuyerView(e,t){return this.immersive.setBuyerView(e,t)}getBuyerView(){return this.immersive.buyerView}openSeatView(e){return this.immersive.openSeatView(e)}setVenue3DNavigationMode(e){if(!this.immersive.setNavigationMode(e))throw new Error("venue_3d_not_active")}setInteractionEnabled(e){this.interactionEnabled_=e,this.applyInteractionState()}applyInteractionState(){let e=this.hostEl;e&&(e.style.pointerEvents=this.interactionEnabled_?"":"none",e.toggleAttribute("inert",!this.interactionEnabled_),this.interactionEnabled_?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden","true"))}async release(){await this.controller.release()}async releaseLabels(e){return this.controller.releaseLabels(e)}startRealtime(){!this.access?.configured||this.realtime||(this.realtime=new ae({url:this.api.subscribeUrl(this.opts.event),mintTicket:()=>this.api.subscribeTicket(this.opts.event),onAccessUnavailable:e=>this.opts.onAccessUnavailable?.(e),sink:ze(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.immersive.pushLiveState(),this.opts.onStatusChange?.()},onSelectedObjectUnavailable:(e,t)=>this.opts.onSelectedObjectUnavailable?.({labels:e,reason:t})})}),this.realtime.start())}async refreshAvailability(){await this.controller.refresh(),this.immersive.pushLiveState(),this.opts.onStatusChange?.()}async refreshAccess(){if(!this.access?.configured)return!1;let e=await this.access.refresh("manual");return e&&(this.accessState_={configured:!0,status:"ready"},await this.controller.refresh(),this.realtime?.restart(),this.realtime||this.startRealtime()),this.notifyMapStateChange(),e}showLoadFailure(e){let t=document.createElement("div");t.setAttribute("role","status"),t.style.cssText='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;min-height:180px;box-sizing:border-box;padding:24px;text-align:center;font:500 14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#3b4256;';let i=document.createElement("div");i.textContent="The seat map didn\u2019t load.",t.appendChild(i);let r=document.createElement("button");r.type="button",r.textContent="Try again",r.style.cssText="appearance:none;border:1px solid #c9cede;background:#fff;color:#10162a;border-radius:8px;padding:8px 16px;font:600 13px/1 inherit;cursor:pointer;",r.addEventListener("click",()=>{this.destroy(),this.render().catch(n=>this.opts.onError?.(n))}),t.appendChild(r),e.appendChild(t)}destroy(){this.immersive.destroy(),this.buyerAssetUrls.dispose(),this.realtime?.stop(),this.realtime=null,this.access?.clear(),this.hostEl&&this.onTipMove&&this.hostEl.removeEventListener("mousemove",this.onTipMove),this.tipEl=null,this.onTipMove=null,this.controller.destroy(),this.hostEl&&this.hostEl.parentNode&&this.hostEl.parentNode.removeChild(this.hostEl),this.hostEl=null,this.mount=null,this.rendered=!1,this.mode_=null,this.eventInfo=null,this.focusedSection_=null}};var gi=["hold","resumeHold","getCurrentHold","getGAAreas","holdGA","bestAvailable","release","releaseLabels","getSelection","selectObjects","deselectObjects","clearSelection","selectCategories","deselectCategories","setSelectableObjects","setMaxSelection","getSelectionValidity","setSeatTier","getFloors","setFloor","setColorblindSafe","zoomIn","zoomOut","zoomToFit","refreshAccess"],Bn={hold:()=>Promise.resolve(null),resumeHold:()=>Promise.resolve(null),getCurrentHold:()=>null,getGAAreas:()=>[],holdGA:()=>Promise.resolve(null),bestAvailable:()=>Promise.resolve(null),release:()=>Promise.resolve(),releaseLabels:()=>Promise.resolve(!1),getSelection:()=>[],selectObjects:()=>[],deselectObjects:()=>{},clearSelection:()=>{},selectCategories:()=>[],deselectCategories:()=>{},setSelectableObjects:()=>{},setMaxSelection:()=>{},getSelectionValidity:()=>null,setSeatTier:()=>{},getFloors:()=>[],setFloor:()=>{},setColorblindSafe:()=>{},zoomIn:()=>{},zoomOut:()=>{},zoomToFit:()=>{},refreshAccess:()=>Promise.resolve(!1)};function xr(s){let e={};for(let t of gi)e[t]=(...i)=>{let r=s();return r?r[t](...i):Bn[t]()};return e}var bi=["event","apiBase","maxSelection","numberOfPlacesToSelect","selectionValidators","publicKey","locale","currency","colorblindSafe","initialView","errorDisplay"],vi=[...bi,"selectedObjects","selectableObjects","messages","seatTooltip","buyerAccessTokenProvider","buyerAccessToken"],yi=["onSelectionChange","onSelectionValidityChange","onSelectionValid","onSelectionInvalid","onSelectionLimit","onHold","onHoldRestored","onHoldExpired","onGAClick","onGAPrompt","onError","onDeckTap","onHint","onSeatHover","onAccessExpired","onAccessUnavailable","onSelectedObjectUnavailable"];function wr(s,e,t){let i={container:s};for(let r of vi)i[r]=e[r];for(let r of yi)i[r]=t[r];return i}var Dn=new Set(["seatlayer.designer.ready","seatlayer.designer.saved","seatlayer.designer.published","seatlayer.designer.close","seatlayer.designer.error"]),$n=2e4,zn=480,Vn=180*1e3,Fn=900*1e3,jn=.8,Nn=30*1e3,Gn=1e5,Un=4,qn=50;function xi(s){if(typeof s!="string")return s;let e=document.querySelector(s);if(!e)throw new Error(`EmbeddedDesigner container not found: ${s}`);return e}function Kn(s){let e=(s??"").toLowerCase();return e.includes("expire")||e.includes("revoke")||e==="401"?"expired":e.includes("mismatch")?"mismatch":e.includes("timeout")?"timeout":"load"}var Wn={expired:{title:"This design session expired",body:"For your security, editing sessions are short-lived. Start a fresh one to keep designing."},mismatch:{title:"This editor doesn't match this chart",body:"The session that loaded belongs to a different chart or workspace. Reopen the designer to continue."},timeout:{title:"The designer is taking too long",body:"It did not finish loading in time. This is usually a slow connection \u2014 try again."},load:{title:"We couldn't load the designer",body:"Something went wrong while opening the editor. Please try again."}},Ut=class{constructor(e){this.frame=null;this.designerOrigin="";this.overlay=null;this.timeoutTimer=null;this.renewTimer=null;this.autoRecoverUsed=!1;this.phase="loading";this.identityEstablished=!1;this.restoreContainerPosition=null;this.pinned=!1;this.frameStyleBeforeFs=null;this.docOverflowBeforeFs=null;this.bodyOverflowBeforeFs=null;this.fsKeyHandler=null;this.lastAutoHeight="";this.fillRaf=null;this.reprobeRaf=null;this.fillListening=!1;this.containerEl=null;this.fillMode=null;this.resizeObs=null;this.scheduleFill=()=>{this.fillRaf===null&&(this.fillRaf=requestAnimationFrame(()=>{this.fillRaf=null,this.applyFill()}))};this.scheduleReprobe=()=>{this.reprobeRaf===null&&(this.reprobeRaf=requestAnimationFrame(()=>{this.reprobeRaf=null,!this.pinned&&(this.fillMode=this.detectFillMode(),this.syncContainerObserver(),this.applyFill())}))};this.handleMessage=e=>{if(!this.frame||e.origin!==this.designerOrigin||e.source!==this.frame.contentWindow||!e.data||typeof e.data!="object")return;let t=e.data;if(t.type==="seatlayer.designer.handshake"&&typeof t.nonce=="string"&&t.nonce.length<=128){this.frame.contentWindow?.postMessage({type:"seatlayer.designer.parent",nonce:t.nonce},this.designerOrigin);return}if(t.type==="seatlayer.designer.resize"){!this.fillEnabled()&&this.autoResizeEnabled()&&typeof t.px=="number"&&Number.isFinite(t.px)&&t.px>0&&(this.lastAutoHeight=`${Math.round(t.px)}px`,this.pinned||this.setFrameHeight(this.lastAutoHeight));return}if(t.type==="seatlayer.designer.fullscreen"){t.on===!0?this.pinFullscreen():t.on===!1&&this.unpinFullscreen();return}if(typeof t.type!="string"||!Dn.has(t.type))return;let i={type:t.type,chartId:typeof t.chartId=="string"?t.chartId:void 0,workspaceId:typeof t.workspaceId=="string"?t.workspaceId:void 0,expiresAt:typeof t.expiresAt=="number"?t.expiresAt:void 0,code:typeof t.code=="string"?t.code:void 0,message:typeof t.message=="string"?t.message:void 0,meta:t.meta,fatal:typeof t.fatal=="boolean"?t.fatal:void 0,action:typeof t.action=="string"?t.action:void 0},r=this.identityEstablished||i.type==="seatlayer.designer.ready"||i.type==="seatlayer.designer.saved"||i.type==="seatlayer.designer.published"||i.type==="seatlayer.designer.close",n=this.options.expectedChartId!==void 0&&i.chartId!==this.options.expectedChartId&&(r||i.chartId!==void 0),o=this.options.expectedWorkspaceId!==void 0&&i.workspaceId!==this.options.expectedWorkspaceId&&(r||i.workspaceId!==void 0);if(n||o){this.showError("mismatch");return}switch(i.type){case"seatlayer.designer.ready":this.identityEstablished=!0,this.sessionExpiresAt=i.expiresAt,this.phase="ready",this.clearTimeoutTimer(),this.removeOverlay(),this.autoRecoverUsed=!1,this.scheduleRenewal(i.expiresAt),this.options.onReady?.(i);break;case"seatlayer.designer.saved":this.options.onSaved?.(i);break;case"seatlayer.designer.published":this.options.onPublished?.(i);break;case"seatlayer.designer.close":this.options.onClose?.(i);break;case"seatlayer.designer.error":{let a=Kn(i.code);if(a==="expired"&&this.autoRenewEnabled()&&!this.autoRecoverUsed){this.autoRecoverUsed=!0,this.clearRenewTimer(),this.options.onRequestRelaunch();return}(typeof i.fatal=="boolean"?i.fatal:a!=="load"||this.phase!=="ready")&&this.showError(a),this.options.onError?.(i);break}}};this.options=e}mount(){this.destroy();let e=new URL(this.options.designerUrl,window.location.href);if(e.protocol!=="https:"&&e.hostname!=="localhost"&&e.hostname!=="127.0.0.1")throw new Error("EmbeddedDesigner requires an HTTPS designerUrl outside local development.");this.designerOrigin=e.origin;let t=document.createElement("iframe");t.title=this.options.title??"Venue chart Designer",t.allow=this.options.allow??"fullscreen; clipboard-write",t.referrerPolicy=this.options.referrerPolicy??"origin",t.src=e.toString(),t.style.setProperty("width","100%","important"),t.style.setProperty("height",typeof this.options.height=="number"?`${this.options.height}px`:"100%","important"),t.style.border="0",Object.assign(t.style,this.options.style),this.options.className&&(t.className=this.options.className);let i=xi(this.options.container);if(this.containerEl=i,window.addEventListener("message",this.handleMessage),i.append(t),this.frame=t,this.fillEnabled()&&this.startFill(),this.phase="loading",this.loadingStateEnabled()){this.ensureContainerPositioned(i),this.renderOverlay(i,"loading");let r=this.options.loadingTimeoutMs??$n;r>0&&Number.isFinite(r)&&(this.timeoutTimer=setTimeout(()=>{this.phase==="loading"&&this.showError("timeout")},r))}return t}setDesignerUrl(e){return this.options={...this.options,designerUrl:e},this.mount()}getIframe(){return this.frame}setSizing(e,t){this.options={...this.options,height:e,minHeight:t},this.frame&&(this.stopFill(),this.lastAutoHeight="",this.fillEnabled()?(this.pinned||this.setFrameHeight("100%"),this.startFill()):this.pinned||this.setFrameHeight(`${e}px`))}setRelaunchPolicy(e,t){this.options={...this.options,onRequestRelaunch:e,autoRenewSession:t},this.clearRenewTimer(),this.phase==="ready"&&this.scheduleRenewal(this.sessionExpiresAt)}destroy(){window.removeEventListener("message",this.handleMessage),this.stopFill(),this.unpinFullscreen(),this.clearTimeoutTimer(),this.clearRenewTimer(),this.removeOverlay(),this.restoreContainerStyle(),this.frame?.remove(),this.frame=null,this.containerEl=null,this.fillMode=null,this.designerOrigin="",this.phase="loading",this.identityEstablished=!1,this.sessionExpiresAt=void 0,this.lastAutoHeight=""}loadingStateEnabled(){return this.options.showLoadingState!==!1}autoResizeEnabled(){return this.options.autoResize!==!1}fillEnabled(){return typeof this.options.height!="number"}setFrameHeight(e){this.frame?.style.setProperty("height",e,"important")}detectFillMode(){let e=this.containerEl,t=this.frame;if(this.pinned||!e||!t)return this.fillMode??"viewport";let i=()=>e.getBoundingClientRect().height,r=t.style.getPropertyValue("height"),n=t.style.getPropertyPriority("height");t.style.setProperty("height","0px","important");let o=i();t.style.setProperty("height",`${Gn}px`,"important");let a=i();return r?t.style.setProperty("height",r,n):t.style.removeProperty("height"),!(a-o>Un)&&o>=qn?"container":"viewport"}applyFill(){if(!this.frame||this.pinned)return;let e=this.options.minHeight??zn;if(this.fillMode==="container"&&this.containerEl){let r=Math.max(e,Math.round(this.containerEl.getBoundingClientRect().height));this.setFrameHeight(`${r}px`);return}let t=this.frame.getBoundingClientRect().top,i=Math.max(e,Math.round(window.innerHeight-t));this.setFrameHeight(`${i}px`)}syncContainerObserver(){let e=this.fillMode==="container"&&!!this.containerEl&&typeof ResizeObserver<"u";e&&!this.resizeObs?(this.resizeObs=new ResizeObserver(()=>this.scheduleFill()),this.resizeObs.observe(this.containerEl)):!e&&this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null)}startFill(){this.fillMode=this.detectFillMode(),this.syncContainerObserver(),this.applyFill(),!this.fillListening&&(this.fillListening=!0,window.addEventListener("resize",this.scheduleReprobe),window.addEventListener("orientationchange",this.scheduleReprobe),window.addEventListener("scroll",this.scheduleFill,{passive:!0}))}stopFill(){this.fillRaf!==null&&(cancelAnimationFrame(this.fillRaf),this.fillRaf=null),this.reprobeRaf!==null&&(cancelAnimationFrame(this.reprobeRaf),this.reprobeRaf=null),this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null),this.fillListening&&(this.fillListening=!1,window.removeEventListener("resize",this.scheduleReprobe),window.removeEventListener("orientationchange",this.scheduleReprobe),window.removeEventListener("scroll",this.scheduleFill))}pinFullscreen(){if(this.pinned||!this.frame)return;this.pinned=!0,this.frameStyleBeforeFs=this.frame.getAttribute("style");let e={position:"fixed",top:"0",right:"0",bottom:"0",left:"0",width:"100vw",height:"100vh",margin:"0",border:"0","z-index":"2147483000",background:"#101625"};for(let[i,r]of Object.entries(e))this.frame.style.setProperty(i,r,"important");let t=document.documentElement;this.docOverflowBeforeFs=t.style.overflow,t.style.overflow="hidden",document.body&&(this.bodyOverflowBeforeFs=document.body.style.overflow,document.body.style.overflow="hidden"),this.fsKeyHandler=i=>{i.key==="Escape"&&this.unpinFullscreen()},window.addEventListener("keydown",this.fsKeyHandler)}unpinFullscreen(){this.pinned&&(this.pinned=!1,this.frame&&(this.frameStyleBeforeFs===null?this.frame.removeAttribute("style"):this.frame.setAttribute("style",this.frameStyleBeforeFs),this.fillEnabled()?this.applyFill():this.autoResizeEnabled()&&this.lastAutoHeight?this.setFrameHeight(this.lastAutoHeight):typeof this.options.height=="number"&&this.setFrameHeight(`${this.options.height}px`)),this.frameStyleBeforeFs=null,this.docOverflowBeforeFs!==null&&(document.documentElement.style.overflow=this.docOverflowBeforeFs,this.docOverflowBeforeFs=null),this.bodyOverflowBeforeFs!==null&&document.body&&(document.body.style.overflow=this.bodyOverflowBeforeFs,this.bodyOverflowBeforeFs=null),this.fsKeyHandler&&(window.removeEventListener("keydown",this.fsKeyHandler),this.fsKeyHandler=null))}clearTimeoutTimer(){this.timeoutTimer!==null&&(clearTimeout(this.timeoutTimer),this.timeoutTimer=null)}autoRenewEnabled(){return!!this.options.onRequestRelaunch&&this.options.autoRenewSession!==!1}clearRenewTimer(){this.renewTimer!==null&&(clearTimeout(this.renewTimer),this.renewTimer=null)}scheduleRenewal(e){if(this.clearRenewTimer(),!this.autoRenewEnabled()||typeof e!="number"||!Number.isFinite(e))return;let t=e-Date.now();if(t<=0)return;let i=t<Fn?t*jn:t-Vn,r=Math.max(Nn,i);this.renewTimer=setTimeout(()=>{this.renewTimer=null,this.autoRenewEnabled()&&this.options.onRequestRelaunch()},r)}ensureContainerPositioned(e){getComputedStyle(e).position==="static"&&(this.restoreContainerPosition=e.style.position,e.style.position="relative")}restoreContainerStyle(){if(this.restoreContainerPosition!==null){try{xi(this.options.container).style.position=this.restoreContainerPosition}catch{}this.restoreContainerPosition=null}}removeOverlay(){this.overlay?.remove(),this.overlay=null}showError(e){if(this.phase="error",this.clearTimeoutTimer(),!this.loadingStateEnabled())return;let t;try{t=xi(this.options.container)}catch{return}this.renderOverlay(t,"error",e)}handleTryAgain(){if(this.options.onRequestRelaunch){this.options.onRequestRelaunch();return}this.mount()}renderOverlay(e,t,i){this.removeOverlay();let r=document.createElement("div");r.setAttribute("data-seatlayer-designer-overlay",t),r.setAttribute("role",t==="error"?"alert":"status"),r.setAttribute("aria-live","polite"),Object.assign(r.style,{position:"absolute",inset:"0",display:"flex",alignItems:"center",justifyContent:"center",background:"#101625",color:"#e6ebf5",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',zIndex:"2",overflow:"hidden"}),t==="loading"?this.buildSkeleton(r):this.buildErrorCard(r,i??"load"),e.append(r),this.overlay=r}buildSkeleton(e){let t=document.createElement("style");t.textContent=`
1657
+ @media (prefers-reduced-motion: no-preference) {
1658
+ @keyframes seatlayer-designer-shimmer {
1659
+ 0% { background-position: -320px 0; }
1660
+ 100% { background-position: 320px 0; }
1661
+ }
1662
+ [data-seatlayer-designer-overlay="loading"] .sl-shimmer {
1663
+ animation: seatlayer-designer-shimmer 1.25s ease-in-out infinite;
1664
+ background-size: 640px 100%;
1665
+ }
1666
+ }`,e.append(t);let i="linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.10) 37%, rgba(255,255,255,0.04) 63%)",r=document.createElement("div");Object.assign(r.style,{position:"absolute",inset:"0",display:"flex",flexDirection:"column",padding:"16px",gap:"14px",opacity:"0.9"});let n=c=>{let h=document.createElement("div");return h.className="sl-shimmer",Object.assign(h.style,{background:i,borderRadius:"8px"}),Object.assign(h.style,c),h};r.append(n({height:"40px",width:"100%",flex:"0 0 auto"}));let o=document.createElement("div");Object.assign(o.style,{display:"flex",gap:"14px",flex:"1 1 auto",minHeight:"0"}),o.append(n({width:"220px",height:"100%",flex:"0 0 auto"})),o.append(n({flex:"1 1 auto",height:"100%"})),r.append(o),e.append(r);let a=document.createElement("div");Object.assign(a.style,{position:"relative",zIndex:"1",display:"flex",alignItems:"center",gap:"10px",padding:"10px 16px",borderRadius:"999px",background:"rgba(16, 22, 37, 0.72)",fontSize:"13px",fontWeight:"500",letterSpacing:"0.01em"});let l=document.createElement("span");l.className="sl-shimmer",Object.assign(l.style,{width:"9px",height:"9px",borderRadius:"50%",background:i,flex:"0 0 auto"}),a.append(l),a.append(document.createTextNode("Loading designer\u2026")),e.append(a)}buildErrorCard(e,t){let i=Wn[t],r=document.createElement("div");Object.assign(r.style,{maxWidth:"420px",margin:"0 24px",padding:"28px",textAlign:"center",background:"rgba(255, 255, 255, 0.03)",border:"1px solid rgba(255, 255, 255, 0.08)",borderRadius:"16px",boxShadow:"0 12px 40px rgba(0, 0, 0, 0.35)"});let n=document.createElement("h2");n.textContent=i.title,Object.assign(n.style,{margin:"0 0 8px",fontSize:"17px",fontWeight:"600",color:"#f4f7ff"});let o=document.createElement("p");o.textContent=i.body,Object.assign(o.style,{margin:"0 0 20px",fontSize:"13.5px",lineHeight:"1.5",color:"#aab4c8"});let a=document.createElement("button");a.type="button",a.textContent="Try again",Object.assign(a.style,{appearance:"none",cursor:"pointer",border:"0",borderRadius:"10px",padding:"10px 22px",fontSize:"14px",fontWeight:"600",color:"#101625",background:"#7aa2ff"}),a.addEventListener("click",()=>this.handleTryAgain()),r.append(n,o,a),e.append(r)}};var v=require("@seatlayer/core"),bt=require("@seatlayer/core/view3d/crossfade/panorama"),Ds=require("@seatlayer/core/core/seatConfidence");var Dr=require("@seatlayer/core/core/seatConfidence");var Se=require("@seatlayer/core"),Sr=require("@seatlayer/core/core/seatConfidence");function Cr(s){return String(s??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function S(s){return String(s??"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Ce(s){return s?.restrictedView?g("picker.restrictedView","Restricted view"):s?.obstructedView?g("picker.obstructedView","Obstructed view"):""}function Er(s){if(!s)return"";let e=[];s.premium&&e.push(`<div class="sl-cx-premium"><span class="sl-cx-star" aria-hidden="true">\u2605</span>${g("picker.premiumSeat","Premium seat")}</div>`);let t=Ce(s);return t?e.push(`<div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u25D0</span><span class="sl-cx-txt"><b>${t}</b>${s.note?`<span class="sl-cx-note">${S(s.note)}</span>`:""}</span></div>`):s.note&&e.push(`<div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u2139</span><span class="sl-cx-txt"><span class="sl-cx-note">${S(s.note)}</span></span></div>`),e.length?`<div class="sl-cx">${e.join("")}</div>`:""}function wi(s){let e=Ce(s);if(!e)return"";let t=S(s?.note?s.note:e);return`<span class="sl-cx-mark" role="img" aria-label="${t}" title="${t}">\u25D0</span>`}function Qe(s){return s==="no-seat"?g("picker.emptyWheelchairSpace","Empty wheelchair space"):s==="seat-present"?g("picker.accessiblePhysicalSeat","Accessible physical seat"):""}function Tr(s){let e=Qe(s);return e?`<div class="sl-cx"><div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u267F</span><span class="sl-cx-txt"><b>${e}</b></span></div></div>`:""}function ki(s){let e=Qe(s);return e?`<span class="sl-cx-mark" role="img" aria-label="${e}" title="${e}">\u267F</span>`:""}function Si(s,e){if(!s)return"";let t=e?g("picker.viewFromThisSeat","View from this seat"):g("picker.seeItIn3d","See it in 3D");return`<button type="button" class="sl-confirm-3d" aria-label="${t}"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2l9 5v10l-9 5-9-5V7z"/><path d="M12 12l9-5M12 12v10M12 12L3 7"/></svg><span>${t}</span></button>`}function Pr(s){if(!s)return"";let e=s.previous.label||s.previous.id,t=s.next.label||s.next.id;return`<span class="sl-seccard-nav" aria-label="${g("picker.browseSections","Browse sections")}"><button type="button" data-section-nav="${V(s.previous.id)}" aria-label="${g("picker.previousSection","Previous section")}: ${V(e)}" title="${V(e)}">\u2190</button><button type="button" data-section-nav="${V(s.next.id)}" aria-label="${g("picker.nextSection","Next section")}: ${V(t)}" title="${V(t)}">\u2192</button></span>`}function Ar(s,e){if(!e)return"";let t=e,i=t.includes(s.id),r=i?t.length>1?g("picker.openComparison","Open comparison"):g("picker.savedForComparison","Saved for comparison"):t.length?g("picker.compareWithSaved","Compare with saved"):g("picker.saveToCompare","Save to compare");return`<button type="button" class="sl-confirm-compare"${i&&t.length===1?" disabled":""}><span aria-hidden="true">\u21C4</span><span>${S(r)}</span></button>`}function Mr(s,e,t){if(!t)return"";let i=(0,Sr.seatConfidenceDisclosure)(s.confidenceEvidence),r=i.modeledTarget??i.reality;return`<button type="button" class="sl-confirm-confidence" aria-label="Open seat confidence passport for ${S(s.displayLabel??s.label)}"><span><em>${S(e)}</em><strong>${S(i.headline)}</strong><small>${S(r)}</small></span><b>Passport</b></button>`}function Ee(s){let e=s?.rowLabel,t=s?.sectionLabel;if(!e||!t)return e;for(let i of["-"," ","\xB7","/","_"]){let r=`${t}${i}`;if(e.startsWith(r)&&e.length>r.length)return e.slice(r.length)}return e}function Yn(s){switch(s){case"paused":return{title:g("picker.accessPausedTitle","These seats are on hold right now"),body:g("picker.accessPausedBody","The organizer has paused this selection. Try again in a few minutes."),action:g("picker.accessRetry","Try again")};case"revoked":return{title:g("picker.accessRevokedTitle","This access link is no longer active"),body:g("picker.accessRevokedBody","Ask whoever sent you here for a new link to keep booking these seats.")};case"no_token":case"provider_failed":return{title:g("picker.accessExpiredTitle","Your access session has ended"),body:g("picker.accessExpiredBody","Sign in again, or reload the page, to keep browsing these seats. Anything you are already holding stays yours."),action:g("picker.accessRetry","Try again")};default:return{title:g("picker.accessInvalidTitle","We couldn\u2019t verify your access"),body:g("picker.accessInvalidBody","You can still book anything shown as available. Contact whoever sent you here for access to the rest.")}}}function Lr(s,e,t){let i=Cr;return[s?.sectionLabel?`<div class="sl-confirm-field"><span class="sl-confirm-key">${g("picker.section","Section")}</span><span class="sl-confirm-value">${i(s.sectionLabel)}</span></div>`:"",s?.rowLabel||s?.objectType==="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${i(t)}</span><span class="sl-confirm-value">${i(Ee(s)??s?.displayLabel??e)}</span></div>`:"",s?.objectType!=="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${g("picker.seat","Seat")}</span><span class="sl-confirm-value">${i(s?.seatNumber??s?.displayLabel??e)}</span></div>`:""].filter(Boolean).join("")}function kr(s){return s.buyerMessage?.trim()||(s.restriction==="companion"?g("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):void 0)}function Hr(s,e,t){let i=Cr;if(s.length>1)return`<fieldset class="sl-confirm-tiers"><legend>${g("picker.ticketType","Ticket type")}</legend>`+s.map(o=>{let a=kr(o);return`<button type="button" class="sl-confirm-tier" data-confirm-tier="${i(o.id)}" aria-pressed="${o.id===e}"><span class="sl-confirm-tier-copy"><span class="sl-confirm-tier-name">${i(o.name)}</span>`+(a?`<small class="sl-confirm-tier-note">${i(a)}</small>`:"")+`</span><span class="sl-confirm-tier-price">${i(t(o))}</span></button>`}).join("")+"</fieldset>";let r=s[0],n=r?kr(r):void 0;return n?`<p class="sl-confirm-tier-note">${i(n)}</p>`:""}function Ci(s){return`<span class="sl-seccard-dot" style="background:${S(s.color)}"></span><span class="sl-seccard-name">${S(s.label)}</span><span class="sl-seccard-left" data-full="${S(s.leftLabel)}" data-short="${S(s.leftShortLabel??s.leftLabel)}">${S(s.leftLabel)}</span>`+s.nav+s.close}function Rr(s){return`<div class="sl-seccard-head"><span class="sl-seccard-dot" style="background:${S(s.color)}"></span><span class="sl-seccard-name">${S(s.label)}</span>`+(s.showPrice?`<span class="sl-seccard-price">${S(s.priceLabel)}</span>`:"")+s.close+`</div><div class="sl-seccard-zone">${s.zoneLabel?`${S(s.zoneLabel)} \xB7 `:""}<span class="sl-seccard-left">${S(s.leftLabel)}</span></div>`+(s.entrance?`<div class="sl-seccard-entrance">${S(s.entrance)}</div>`:"")+(s.mix?`<div class="sl-seccard-mix">${s.mix}</div>`:"")+`<div class="sl-seccard-foot"><button type="button" class="sl-seccard-overview">\u2190 ${S(s.overviewLabel)}</button>`+s.nav+`<span class="sl-seccard-hint">${S(s.hint)}</span></div>`}function Or(s){return`<span class="sl-seccard-mix-item${s.dim?" sl-dim":""}"><span class="sl-seccard-mix-dot" style="background:${S(s.color)}"></span>${S(s.label)} <span class="sl-seccard-mix-price">${S(s.rangeLabel)}</span></span>`}function Ir(s){return'<div class="sl-confirm-grid">'+s.identityFields+`</div><div class="sl-confirm-cat"><span class="sl-dot" style="background:${S(s.categoryColor)}"></span><span class="sl-confirm-cat-name">${S(s.categoryLabel)}</span>`+(s.priceLabel?`<span class="sl-confirm-price">${S(s.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-body">'+s.tierChoices+s.groupDates+s.wheelchair+s.commercial+s.thumb+s.inspect+`<div class="sl-confirm-row"><button type="button" class="sl-confirm-cancel">${S(s.cancelLabel)}</button><button type="button" class="sl-confirm-add"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12.5l4 4L19 7"/></svg>${S(s.selectLabel)}</button></div></div>`}function _r(s,e){let t=V,{variable:i}=e;return`<section class="sl-table-dialog" role="dialog" aria-modal="true" aria-labelledby="sl-table-title" aria-describedby="sl-table-copy"><div class="sl-table-head"><div class="sl-table-eyebrow">${t(i?(0,Se.t)("picker.flexiblePartyTypeWord",{typeWord:e.typeWord}):(0,Se.t)("picker.wholeTypeWord",{typeWord:e.typeWord}))}</div><h2 class="sl-table-title" id="sl-table-title">${t(s.displayLabel??s.label)}</h2><p class="sl-table-copy" id="sl-table-copy">${t(i?g("picker.chooseGuestsCopy","Choose how many guests will sit together. This table is held exclusively for your party."):(0,Se.t)("picker.allPlacesBookedTogether",{count:s.capacity}))}</p></div><div class="sl-table-body"><div class="sl-table-summary"><span>${t(e.categoryLabel)}</span><b data-table-unit>${t((0,Se.t)("picker.perGuestPrice",{price:e.unitPrice}))}</b><span class="muted">${t(g("picker.tableCapacity","Table capacity"))}</span><span>${t((0,Se.t)("picker.guestsCount",{count:s.capacity}))}</span><span class="muted">${t(g("picker.total","Total"))}</span><b data-table-total></b></div>`+(i?`<label class="sl-table-qtylabel" id="sl-table-qty-label">${t(g("picker.numberOfGuests","Number of guests"))}</label><div class="sl-table-stepper" role="group" aria-labelledby="sl-table-qty-label"><button type="button" data-table-step="-1" aria-label="${t(g("picker.fewerGuests","Fewer guests"))}">\u2212</button><output aria-live="polite" data-table-qty>${s.quantity}</output><button type="button" data-table-step="1" aria-label="${t(g("picker.moreGuests","More guests"))}">+</button></div><div class="sl-table-range">${t((0,Se.t)("picker.chooseMinMaxGuests",{min:s.minOccupancy,max:s.maxOccupancy}))}</div>`:`<input type="hidden" data-table-qty value="${s.capacity}">`)+`<div class="sl-table-actions"><button type="button" class="sl-table-cancel">${t((0,Se.t)("common.cancel"))}</button><button type="button" class="sl-table-confirm">${t(e.held?g("picker.updateTable","Update table"):i?g("picker.selectTable","Select table"):g("picker.selectWholeTable","Select whole table"))}</button></div></div></section>`}function Br(s,e){let t=Yn(s),i=document.createElement("div");i.className="sl-access",i.setAttribute("role","status"),i.setAttribute("aria-live","polite");let r=document.createElement("div"),n=document.createElement("div");n.className="sl-access-title",n.textContent=t.title;let o=document.createElement("div");if(o.className="sl-access-body",o.textContent=t.body,r.append(n,o),t.action){let a=document.createElement("button");a.type="button",a.className="sl-access-act",a.textContent=t.action,a.addEventListener("click",e),r.appendChild(a)}return i.appendChild(r),i}function Y(s){return String(s??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function $r(s){let e=(0,Dr.seatConfidenceDisclosure)(s.seat.confidenceEvidence),t=s.seat.confidenceEvidence,i=e.limitations.length?`<h4>Known limits</h4><ul>${e.limitations.map(c=>`<li>${Y(c)}</li>`).join("")}</ul>`:"",r=e.modeledTarget?`<div><dt>Modeled target</dt><dd>${Y(e.modeledTarget)}</dd></div>`:"",n=t?`<div><dt>Evidence ID</dt><dd>${Y(t.evidenceId)}</dd></div><div><dt>Model version</dt><dd>${Y(t.modelVersion)}</dd></div><div><dt>Event configuration</dt><dd>${Y(t.eventConfigurationId??"Not configuration-specific")}</dd></div><div><dt>Approval</dt><dd>${Y(t.approvedByRole??"No external approval supplied")}</dd></div>`+(t.validUntil?`<div><dt>Valid until</dt><dd>${Y(t.validUntil.slice(0,10))}</dd></div>`:""):"<div><dt>Evidence ID</dt><dd>None supplied</dd></div>",o=Ce(s.seat.commercial)||s.restrictionFallback,a=`<div><dt>View restriction</dt><dd>${Y(o)}</dd></div>`+(s.seat.commercial?.note?`<div><dt>Organizer note</dt><dd>${Y(s.seat.commercial.note)}</dd></div>`:""),l=s.canReport?'<button type="button" data-report>Report this view</button><p data-report-status role="status" aria-live="polite"></p>':"";return`<div class="sl-view3d-passport-scrim" aria-hidden="true"></div><section class="sl-view3d-passport" role="dialog" aria-modal="true" aria-labelledby="sl-view3d-passport-title"><header><div><span>Seat confidence passport</span><strong id="sl-view3d-passport-title">${Y(s.title)}</strong></div><button type="button" data-close aria-label="Close seat confidence passport">\xD7</button></header><div class="sl-view3d-passport-summary"><strong>${Y(e.headline)}</strong><span>${Y(e.coverage)} \xB7 ${Y(e.freshness)}</span></div><dl><div><dt>Model status</dt><dd>${Y(e.model)}</dd></div><div><dt>Reality evidence</dt><dd>${Y(e.reality)}</dd></div><div><dt>Source</dt><dd>${Y(e.provenance)}</dd></div>`+a+r+n+`</dl>${i}<p class="sl-view3d-passport-note">This passport describes supplied evidence and known limits. It does not guarantee that every temporary obstruction or real-world condition is knowable before the event build.</p>`+l+"</section>"}function zr(s){return s?s.closest("[data-report]")?"report":s.closest("[data-close]")||s.classList.contains("sl-view3d-passport-scrim")?"close":null:null}function qt(s,e,t){let i=s?.querySelector("[data-report]"),r=s?.querySelector("[data-report-status]");i&&(i.disabled=e!=="failed",i.textContent=e==="received"?"Report received":"Report this view"),r&&(r.setAttribute("role",e==="failed"?"alert":"status"),r.textContent=e==="sending"?"Sending report\u2026":e==="received"?`Report received. Reference ${t??""}.`:"The report could not be sent. Please try again.")}function Vr(s){return s?.previousPrice!=null&&s.previousPrice>s.price?s.previousPrice:null}function Fr(s){return Qn(s)+(s.moreLabel?`<button type="button" class="sl-price-more" aria-expanded="${!s.collapsed}">${s.esc(s.moreLabel)}</button>`:"")+Xn(s.status)}function Qn(s){let{esc:e,money:t}=s;return s.categories.map(i=>{let r=s.priceOf(i),n=s.rangeOf(i),o=s.offerOf(i.key),a=Vr(o),l=s.activeKey===i.key;return`<div class="sl-price-row${s.bandKeys!=null&&!s.bandKeys.has(i.key)?" sl-dim":""}${l?" sl-active":""}" data-cat="${e(i.key)}" role="button" tabindex="0" aria-pressed="${l}" title="${e(s.titleFor(i,l))}"><span class="sl-dot" style="background:${e(s.colorOf(i))}"></span><span class="sl-price-label">${e(i.label)}`+(o?.offerName?`<small class="sl-price-offer">${e(o.offerName)}</small>`:"")+`</span><span class="sl-price-left">${e(s.leftCount(s.left[i.key]??0))}</span>`+(a!=null?`<span class="sl-price-was">${e(t(a))}</span>`:"")+(n!=null?`<span class="sl-price-amt">${n.min===n.max?e(t(n.min)):`${e(t(n.min))}\u2013${e(t(n.max))}`}</span>`:r!=null?`<span class="sl-price-amt">${e(t(r))}</span>`:"")+"</div>"}).join("")}function Xn(s){let e=t=>t.replace(/[&<>"']/g,i=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[i]);return`<div class="sl-status-key" aria-label="${e(s.legend)}"><span class="sl-status-item"><i class="sl-status-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><rect x="5" y="10" width="14" height="10" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></i>${e(s.held)}</span><span class="sl-status-item"><i class="sl-status-icon sold" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M7 17L17 7"/></svg></i>${e(s.sold)}</span></div>`}function Ei(s){let e=Math.abs(s.scrollLeft),t=e>2,i=e+s.clientWidth<s.scrollWidth-2;return s.dataset.fadeStart=String(t),s.dataset.fadeEnd=String(i),{start:t,end:i}}function jr(s){let{esc:e,money:t}=s;return s.categories.map(i=>{let r=s.rangeOf(i),n=s.priceOf(i),o=r?r.min===r.max?t(r.min):`${t(r.min)}+`:n!=null?t(n):null,a=Object.prototype.hasOwnProperty.call(s.left,i.key)&&s.left[i.key]<=0,l=Vr(s.offerOf(i.key)),c=o?`${i.label} \u2014 ${o}${a?` (${s.soldOutWord})`:""}`:i.label;return`<button type="button" class="sl-rc" data-cat="${e(i.key)}" aria-pressed="${s.activeKey===i.key}" aria-label="${e(c)}" title="${e(c)}"${a?" disabled":""}><i class="sl-rc-dot" style="background:${e(s.colorOf(i))}"></i>`+(l!=null?`<span class="sl-rc-was">${e(t(l))}</span>`:"")+`<span class="sl-rc-t">${e(o??i.label)}</span></button>`}).join("")}function Nr(s,e){let t=s.map(a=>({key:a.key,range:e.rangeOf(a)})).filter(a=>a.range!=null);if(!t.length)return[];let i=[...new Map(t.map(a=>[`${a.range.min}:${a.range.max}`,a.range])).values()].sort((a,l)=>a.min-l.min||a.max-l.max);if(i.length<=5)return i.map(a=>({id:`p${a.min}-${a.max}`,label:a.min===a.max?e.money(a.min):`${e.money(a.min)}\u2013${e.money(a.max)}`,keys:t.filter(l=>l.range.min===a.min&&l.range.max===a.max).map(l=>l.key),min:a.min,max:a.max}));let r=[...t].sort((a,l)=>a.range.min-l.range.min||a.range.max-l.range.max),n=Math.ceil(r.length/4),o=[];for(let a=0;a<r.length;a+=n){let l=r.slice(a,a+n),c=Math.min(...l.map(d=>d.range.min)),h=Math.max(...l.map(d=>d.range.max));o.push({id:`b${a}`,label:c===h?e.money(c):`${e.money(c)}\u2013${e.money(h)}`,keys:l.map(d=>d.key),min:c,max:h})}return o}var Zn=["on-sale","low","sold-out","presale","closed"];function ht(s){return s==null?null:typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0}function Ur(s){return s==null?null:typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0}function Gr(s){if(s==null)return null;if(typeof s!="object"||Array.isArray(s))return;let e=s,t=e.count,i=e.index;if(typeof i!="number"||!Number.isInteger(i)||i<1||typeof t!="number"||!Number.isInteger(t)||t<i)return;let r=e.remaining;if(r!=null&&(typeof r!="number"||!Number.isInteger(r)||r<0))return;let n={index:i,count:t,remaining:r??null};if(e.id!==void 0){if(typeof e.id!="string"||!e.id.trim())return;n.id=e.id.trim()}if(e.name!==void 0){if(typeof e.name!="string"||!e.name.trim())return;n.name=e.name.trim()}if(e.categoryKey!==void 0){if(e.categoryKey!==null&&(typeof e.categoryKey!="string"||!e.categoryKey.trim()))return;n.categoryKey=e.categoryKey==null?null:e.categoryKey.trim()}for(let o of["startsAt","endsAt"]){if(e[o]===void 0)continue;let a=Ur(e[o]);if(a===void 0)return;n[o]=a}return n}function Jn(s){if(s==null)return null;if(typeof s!="object"||Array.isArray(s))return;let e=s;if(!Number.isInteger(e.assignmentVersion)||e.assignmentVersion<0||!Array.isArray(e.channels)||!Array.isArray(e.objects))return;let t=[],i=new Set;for(let o of e.channels){if(!o||typeof o!="object"||Array.isArray(o))return;let a=o,l=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||i.has(l)||!Number.isInteger(a.pricingVersion)||a.pricingVersion<0||!Array.isArray(a.priceOverrides))return;let c=[],h=new Set;for(let d of a.priceOverrides){if(!d||typeof d!="object"||Array.isArray(d))return;let p=d,m=typeof p.categoryKey=="string"?p.categoryKey.trim():"",f=p.tierId===null?null:typeof p.tierId=="string"&&p.tierId.trim()?p.tierId.trim():void 0,b=ht(p.price);if(!m||f===void 0||b===void 0||b===null)return;let C=`${m}\0${f??""}`;if(h.has(C))return;h.add(C),c.push({categoryKey:m,tierId:f,price:b})}i.add(l),t.push({channelId:l,pricingVersion:a.pricingVersion,priceOverrides:c})}let r=[],n=new Set;for(let o of e.objects){if(!o||typeof o!="object"||Array.isArray(o))return;let a=o,l=typeof a.label=="string"?a.label.trim():"",c=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||n.has(l)||!i.has(c))return;n.add(l),r.push({label:l,channelId:c})}return{assignmentVersion:e.assignmentVersion,channels:t,objects:r}}function Kt(s){if(!s||typeof s!="object"||Array.isArray(s))return null;let e=s,t=Zn.find(h=>h===e.state);if(!t)return null;let i=ht(e.fromPrice),r=ht(e.previousPrice);if(i===void 0||r===void 0)return null;let n=e.currency==null?null:typeof e.currency=="string"&&e.currency.trim()?e.currency.trim():void 0;if(n===void 0)return null;let o=Gr(e.release);if(o===void 0)return null;let a=e.upcoming===void 0?null:Gr(e.upcoming);if(a===void 0)return null;let l=[];if(e.prices!=null){if(!Array.isArray(e.prices))return null;let h=[];for(let d of e.prices){if(!d||typeof d!="object"||Array.isArray(d))return null;let p=d,m=typeof p.categoryKey=="string"?p.categoryKey.trim():"";if(!m)return null;let f=ht(p.price),b=ht(p.previousPrice);if(f==null||b===void 0)return null;let C={categoryKey:m,price:f,previousPrice:b};if(p.offerId!==void 0){if(typeof p.offerId!="string"||!p.offerId.trim())return null;C.offerId=p.offerId.trim()}if(p.offerName!==void 0){if(typeof p.offerName!="string"||!p.offerName.trim())return null;C.offerName=p.offerName.trim()}if(p.remaining!==void 0){if(p.remaining!==null&&(typeof p.remaining!="number"||!Number.isInteger(p.remaining)||p.remaining<0))return null;C.remaining=p.remaining==null?null:p.remaining}for(let x of["startsAt","endsAt"]){if(p[x]===void 0)continue;let R=Ur(p[x]);if(R===void 0)return null;C[x]=R}h.push(C)}l=h}let c=Jn(e.channelPricing);return c===void 0?null:{state:t,fromPrice:i,previousPrice:r,currency:n,release:o,upcoming:a,prices:l,channelPricing:c}}function qr(s,e){if(!s)return null;let t=null,i=r=>{r!=null&&r>e&&(t===null||r<t)&&(t=r)};for(let r of[s.release,s.upcoming])i(r?.startsAt),i(r?.endsAt);for(let r of s.prices)i(r.startsAt),i(r.endsAt);return t}function Wt(s){let e={};for(let t of s?.prices??[])e[t.categoryKey]=t.price;return e}var Xe=require("@seatlayer/core");var Qt=require("@seatlayer/core/core/color");function me(s){if(!s)return null;let e=s.trim().toLowerCase();if(e==="white")return{r:255,g:255,b:255};if(e==="black")return{r:0,g:0,b:0};let t=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(e)?.[1];if(t){let r=t.length<=4?[...t].map(n=>`${n}${n}`).join(""):t;return{r:Number.parseInt(r.slice(0,2),16),g:Number.parseInt(r.slice(2,4),16),b:Number.parseInt(r.slice(4,6),16)}}let i=/^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)(?:\s*[,/]\s*[\d.]+%?)?\s*\)$/i.exec(e);return i?{r:Math.max(0,Math.min(255,Number(i[1]))),g:Math.max(0,Math.min(255,Number(i[2]))),b:Math.max(0,Math.min(255,Number(i[3])))}:null}function Yt(s){return(0,Qt.relativeLuminance255)([s.r,s.g,s.b])}function ue(s,e){let t=me(s),i=me(e);if(!t||!i)return null;let r=Math.max(Yt(t),Yt(i)),n=Math.min(Yt(t),Yt(i));return(r+.05)/(n+.05)}function Te(s,e="#172033",t="#eef1f8"){return(ue(e,s)??0)>=(ue(t,s)??0)?e:t}function eo(s){return(0,Qt.rgb255ToHex)(s.r,s.g,s.b)}function Ti(s,e,t){let i=me(s),r=me(e);if(!i||!r)return null;let n=Math.max(0,Math.min(1,t));return eo({r:i.r*n+r.r*(1-n),g:i.g*n+r.g*(1-n),b:i.b*n+r.b*(1-n)})}function Kr(s,e,t,i){if((ue(s,t)??4.5)>=4.5&&(ue(s,i)??4.5)>=4.5)return s;if(!me(s)||!me(e))return e;for(let r=.15;r<=1;r+=.05){let n=Ti(s,e,1-r);if(n&&(ue(n,t)??0)>=4.5&&(ue(n,i)??0)>=4.5)return n}return e}function Wr(s,e){let t=e??s["--sl-bg"],i=me(t)?Te(t)==="#172033":!1,r=me(s["--sl-bg"])?Te(s["--sl-bg"])==="#172033":!1;if(i===r)return null;let n=i?"#ffffff":"#1a2234",o=Te(t),a=s["--sl-accent"];return{"--sl-bg":t,"--sl-surface":n,"--sl-text":o,"--sl-muted":i?"#667085":"#a5aec2","--sl-line":i?"rgba(23,32,51,.16)":"rgba(165,174,194,.24)","--sl-accent-text":Kr(a,o,t,n)}}function ut(s,e){let t=e?.background??s?.background??"#0f1522",i=me(t)?Te(t)==="#172033":!1,r=e?.surface??(i?"#ffffff":"#1a2234"),n=e?.accent??s?.accent??"#f4b740",o=s?.accentInk,a=e?.accentInk??(o&&(ue(o,n)??4.5)>=4.5?o:Te(n,"#1a1200","#ffffff")),l=s?.textColor,c=e?.text??(l&&(ue(l,t)??4.5)>=4.5&&(ue(l,r)??4.5)>=4.5?l:Te(t));return{"--sl-accent":n,"--sl-accent-ink":a,"--sl-accent-text":Kr(n,c,t,r),"--sl-bg":t,"--sl-surface":r,"--sl-text":c,"--sl-muted":e?.muted??(i?"#667085":"#a5aec2"),"--sl-line":e?.line??(i?"rgba(23,32,51,.16)":"rgba(165,174,194,.24)"),"--sl-font":e?.fontFamily??s?.fontFamily??"-apple-system,BlinkMacSystemFont,'Segoe UI',Inter,sans-serif","--sl-radius":`${e?.radius??14}px`}}function Yr(s,e,t){let i=document.createElement("div");i.className="sl-picker",i.tabIndex=-1,i.lang=(0,Xe.getLocale)(),i.dir=(0,Xe.localeDirection)(),s.appendChild(i),Object.entries(ut(void 0,t)).forEach(([n,o])=>i.style.setProperty(n,o)),i.innerHTML=`
1585
1667
  <div class="sl-head">
1586
1668
  <div class="sl-logo" data-ref="logo"></div>
1587
1669
  <div class="sl-head-info" data-ref="headInfo">
@@ -1655,9 +1737,9 @@
1655
1737
  <button type="button" class="sl-cta" data-ref="cta" disabled></button>
1656
1738
  </div>
1657
1739
  </div>
1658
- </div>`;let s={};return i.querySelectorAll("[data-ref]").forEach(n=>{s[n.dataset.ref]=n}),{root:i,mapHost:s.map,els:s}}function Bs(r){let e=(t,i)=>{for(let s of r.querySelectorAll(`[${t}]`)){let n=s.getAttribute(t);if(!n)continue;let o=(0,qe.t)(n);o!==n&&i(s,o)}};e("data-sl-t",(t,i)=>{t.textContent=i}),e("data-sl-a",(t,i)=>{t.setAttribute("aria-label",i)}),e("data-sl-ti",(t,i)=>{t.setAttribute("title",i)})}var Se=require("@seatlayer/core/view/panoramaDelivery");function zs(r){let{root:e,source:t,caption:i,real:s,closeLabel:n,dragHint:o,viewFromSeatLabel:a,real360Label:l,previewLabel:c,resolveAsset:h,onClose:p}=r,d=document.createElement("div");d.className="sl-view",d.setAttribute("role","dialog"),d.setAttribute("aria-label",a),d.innerHTML='<div class="sl-view-head"><span class="sl-view-title"></span><span class="sl-view-cap"></span><button type="button" class="sl-view-x"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button></div><div class="sl-view-pano"><span class="sl-view-badge"></span><span class="sl-view-hint"></span></div>',d.querySelector(".sl-view-title").textContent=a,d.querySelector(".sl-view-cap").textContent=i,d.querySelector(".sl-view-x").setAttribute("aria-label",n),d.querySelector(".sl-view-badge").textContent=s?l:c,d.querySelector(".sl-view-hint").textContent=o,e.appendChild(d);let m=d.querySelector(".sl-view-pano"),g=(0,Se.planPanoramaDelivery)(t,(0,Se.browserPanoramaConstraints)()),x=new AbortController;m.style.backgroundImage=`url(${JSON.stringify(g.initialUrl)})`;let w=()=>{};g.upgradeUrl&&(w=(0,Se.schedulePanoramaUpgrade)(()=>{h(g.upgradeUrl).then(T=>!T||x.signal.aborted?null:(0,Se.loadPanoramaImage)(T,x.signal).then(()=>T)).then(T=>{!T||!d.isConnected||x.signal.aborted||(m.style.backgroundImage=`url(${JSON.stringify(T)})`)}).catch(()=>{})}));let v=70,R=35,S=1,P=m.clientHeight||1,_=m.clientWidth||1,k=-(P*(180/v)*2/2-_/2),M=0,u=()=>{let T=m.clientHeight||1,q=T*(180/v)*S,D=Math.max(0,q-T),et=Math.min(D/2,R/180*q);M=Math.min(et,Math.max(-et,M)),m.style.backgroundSize=`auto ${q}px`,m.style.backgroundPosition=`${k}px ${M-D/2}px`};u();let C=!1,H=0,z=0,j=T=>{C=!0,H=T.clientX,z=T.clientY,m.classList.add("drag"),m.setPointerCapture?.(T.pointerId)},G=T=>{C&&(k+=T.clientX-H,M+=T.clientY-z,H=T.clientX,z=T.clientY,u())},U=T=>{C=!1,m.classList.remove("drag"),m.releasePointerCapture?.(T.pointerId)},ge=T=>{T.preventDefault(),S=Math.min(2.4,Math.max(1,S+(T.deltaY<0?.12:-.12))),u()};m.addEventListener("pointerdown",j),m.addEventListener("pointermove",G),m.addEventListener("pointerup",U),m.addEventListener("pointercancel",U),m.addEventListener("wheel",ge,{passive:!1});let le=d.querySelector(".sl-view-x");le.addEventListener("click",p);let Je=T=>{T.key==="Escape"&&(T.stopPropagation(),p())};return d.addEventListener("keydown",Je),le.focus(),{element:d,dispose(){w(),x.abort(),m.removeEventListener("pointerdown",j),m.removeEventListener("pointermove",G),m.removeEventListener("pointerup",U),m.removeEventListener("pointercancel",U),m.removeEventListener("wheel",ge),d.removeEventListener("keydown",Je),le.removeEventListener("click",p)}}}function Ds(r){let e=document.createElement("div");e.className="sl-floors on",e.setAttribute("role","group"),e.setAttribute("aria-label",r.tf("picker.chooseLevel","Choose level"));let t=[{id:"",name:r.tf("picker.allFloors","All floors")},...r.floors.map(n=>({id:n.id,name:n.name}))];for(let n of t){let o=document.createElement("button");o.type="button",o.dataset.floor=n.id,o.textContent=n.name,o.setAttribute("aria-pressed","false"),o.addEventListener("click",()=>r.onChoose(n.id)),e.appendChild(o)}let i=document.createElement("button");i.type="button",i.className="sl-floor-info",i.textContent="i";let s=r.tf("picker.floorHelp","All floors shows the complete venue. Choose one level to inspect and select its seats.");return i.setAttribute("aria-label",s),i.title=s,e.appendChild(i),e}function Fs(r,e,t){if(!r)return;let i=t?"":e;r.querySelectorAll("button[data-floor]").forEach(s=>{s.setAttribute("aria-pressed",String(s.dataset.floor===i))})}var js=require("@seatlayer/core"),Ke=require("@seatlayer/core/picker/minimapGeometry");function Ns(r,e){let t=new pi(r);return t.build(e),t}var pi=class{constructor(e){this.host=e;this.miniCanvas=null;this.miniBase=null;this.miniWrap=null;this.miniToggle=null;this.miniLabel=null;this.miniTf=null;this.miniDrag=null;this.miniSuppressClick=!1;this.userClosed=!1}build(e){if(!this.host.controller.getViewport())return;let i=document.createElement("button");i.type="button",i.className="sl-minimap-toggle",i.setAttribute("aria-label",f("picker.openVenueMap","Open venue overview map")),i.setAttribute("aria-expanded","false"),i.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6l5-2 8 3 5-2v13l-5 2-8-3-5 2zM8 4v13M16 7v13"/></svg>',e.appendChild(i),this.miniToggle=i;let s=document.createElement("div");s.className="sl-minimap",s.setAttribute("role","group");let n=document.createElement("div");n.className="sl-minimap-bar";let o=document.createElement("span");o.className="sl-minimap-label";let a=document.createElement("span");a.className="sl-minimap-key",a.setAttribute("aria-label",f("picker.minimapStateKey","Focused, selected, available, and inactive sections")),a.innerHTML='<i class="focused" title="Focused"></i><i class="selected" title="Selected"></i><i title="Available"></i><i class="inactive" title="Inactive"></i>';let l=document.createElement("button");l.type="button",l.className="sl-minimap-close",l.setAttribute("aria-label",f("picker.closeVenueMap","Close venue overview map")),l.textContent="\xD7",n.append(o,a,l);let c=document.createElement("canvas");c.tabIndex=0,c.setAttribute("role","application"),c.setAttribute("aria-label",f("picker.venueMapInstructions","Venue overview map. Drag the viewport, click a section, or use arrow keys to pan.")),s.append(n,c),e.appendChild(s),this.miniWrap=s,this.miniLabel=o,this.miniCanvas=c;let h=document.createElement("canvas");this.miniBase=h,i.addEventListener("click",()=>{let p=this.host.root()?.dataset.minimapOpen==="true";this.userClosed=p,this.setMinimapOpen(!p)}),l.addEventListener("click",()=>{this.userClosed=!0,this.setMinimapOpen(!1)}),c.addEventListener("click",p=>{if(this.miniSuppressClick){this.miniSuppressClick=!1;return}this.minimapJump(p)}),c.addEventListener("pointerdown",p=>this.minimapPointerDown(p)),c.addEventListener("pointermove",p=>this.minimapPointerMove(p)),c.addEventListener("pointerup",p=>this.minimapPointerUp(p)),c.addEventListener("pointercancel",p=>this.minimapPointerUp(p)),c.addEventListener("keydown",p=>this.minimapKeydown(p)),this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect()}setAutoOpen(e){if(this.miniWrap){if(!e){this.userClosed=!1,this.host.root()?.dataset.minimapOpen==="true"&&this.setMinimapOpen(!1,!1);return}this.userClosed||this.host.root()?.dataset.minimapOpen==="true"||this.setMinimapOpen(!0,!1)}}setMinimapOpen(e,t=!0){this.host.root()?.setAttribute("data-minimap-open",String(e)),this.miniToggle?.setAttribute("aria-expanded",String(e)),t&&(e?this.miniCanvas?.focus():this.miniToggle?.focus())}layoutMinimap(){let e=this.miniCanvas,t=this.miniBase,i=this.host.controller.getViewport()?.bounds;if(!e||!t||!i||!(i.width>0&&i.height>0))return;let s=196,n=146,o=6,a=i.width/Math.max(1,i.height),l=s,c=Math.round(s/a);c>n&&(c=n,l=Math.round(n*a)),l=Math.max(64,l),c=Math.max(48,c);let h=Math.min(2,window.devicePixelRatio||1);e.width=Math.round(l*h),e.height=Math.round(c*h),e.style.width=`${l}px`,e.style.height=`${c}px`,t.width=e.width,t.height=e.height,this.miniTf=(0,Ke.createMinimapTransform)(i,e.width,e.height,h,o)}syncMinimapLabel(){if(!this.miniLabel||!this.miniWrap)return;let e=this.host.controller.getFloors(),t=this.host.controller.isFloorOverview()?f("picker.allFloors","All floors"):e.find(h=>h.id===this.host.controller.getActiveFloorId())?.name??f("picker.venueOverview","Venue overview"),i=this.host.controller.getMinimapSnapshot().sections,n=i.find(h=>h.active)?.label??this.host.focusedSectionLabel(),o=n?`${t} \xB7 ${n}`:t;this.miniLabel.textContent=o;let a=i.filter(h=>h.state==="selected").length,l=i.filter(h=>h.state==="available").length,c=i.filter(h=>h.state==="inactive").length;this.miniWrap.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections.`:o),this.miniCanvas?.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections. ${f("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click a section, or use arrow keys to pan.")}`:`${o}. ${f("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click elsewhere, or use arrow keys to pan.")}`)}refreshMinimap(){this.miniBase&&(this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect())}drawMinimapStatic(){let e=this.miniBase,t=this.miniTf;if(!e||!t)return;let i=e.getContext("2d");if(!i)return;i.clearRect(0,0,e.width,e.height);let s=p=>p*t.scale+t.offX,n=p=>p*t.scale+t.offY,o=this.host.cssVar("--sl-line")||"rgba(139,147,167,.5)",a=this.host.cssVar("--sl-muted")||"#8b93a7",l=this.host.cssVar("--sl-accent")||"#6e7bff",c=this.host.cssVar("--sl-success")||"#22a06b",h=this.host.controller.getMinimapSnapshot();for(let p of h.sections)p.outline.length<3||(i.beginPath(),p.outline.forEach((d,m)=>m===0?i.moveTo(s(d.x),n(d.y)):i.lineTo(s(d.x),n(d.y))),i.closePath(),i.globalAlpha=p.state==="inactive"?.18:p.state==="selected"?.72:.34,i.fillStyle=p.state==="inactive"?a:p.state==="selected"?l:c,i.fill(),i.globalAlpha=.82,i.lineWidth=Math.max(1,t.dpr),i.strokeStyle=o,i.stroke(),p.active&&(i.globalAlpha=1,i.lineJoin="round",i.lineWidth=Math.max(4,t.dpr*3.5),i.strokeStyle=this.host.cssVar("--sl-surface")||"#fff",i.stroke(),i.lineWidth=Math.max(2,t.dpr*1.75),i.strokeStyle=l,i.stroke()));if(i.globalAlpha=1,!h.sections.length){let p=Math.max(1,t.dpr);for(let d of h.seats)i.globalAlpha=d.state==="inactive"?.22:.78,i.fillStyle=d.state==="inactive"?a:d.state==="selected"?l:c,i.beginPath(),i.arc(s(d.x),n(d.y),p,0,Math.PI*2),i.fill();i.globalAlpha=1}}drawMinimapRect(){let e=this.miniCanvas,t=this.miniBase,i=this.miniTf;if(!e||!t||!i)return;let s=e.getContext("2d");if(!s)return;s.clearRect(0,0,e.width,e.height),s.drawImage(t,0,0);let n=this.host.controller.getViewport();if(!n)return;let o=(0,Ke.minimapViewportPlan)(n.visible,i,e.width,e.height,Math.max(2,i.dpr*2)),a=this.host.cssVar("--sl-text")||"#12151c",l=this.host.cssVar("--sl-surface")||"#fff";s.save(),s.globalAlpha=.1,s.fillStyle=a,s.fillRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),s.globalAlpha=.9,s.lineJoin="round",s.lineWidth=Math.max(4,i.dpr*3.25),s.strokeStyle=l,s.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),s.globalAlpha=1,s.lineWidth=Math.max(2,i.dpr*1.75),s.strokeStyle=a,s.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),o.clipped&&Object.values(o.clippedEdges).some(Boolean)&&(s.setLineDash([Math.max(3,i.dpr*3),Math.max(2,i.dpr*2)]),s.strokeRect(o.clipped.x,o.clipped.y,o.clipped.width,o.clipped.height)),s.restore()}minimapWorldPoint(e){let t=this.miniCanvas,i=this.miniTf;if(!t||!i)return null;let s=t.getBoundingClientRect(),n=(e.clientX-s.left)*(t.width/Math.max(1,s.width)),o=(e.clientY-s.top)*(t.height/Math.max(1,s.height));return{...(0,Ke.minimapPointToWorld)({x:n,y:o},i),px:n,py:o}}minimapPointerDown(e){let t=this.minimapWorldPoint(e),i=this.host.controller.getViewport()?.visible;!t||!i||!(t.x>=i.x&&t.x<=i.x+i.width&&t.y>=i.y&&t.y<=i.y+i.height)||(this.miniDrag={pointerId:e.pointerId,offsetX:t.x-(i.x+i.width/2),offsetY:t.y-(i.y+i.height/2),startX:e.clientX,startY:e.clientY,moved:!1},this.miniCanvas?.setPointerCapture(e.pointerId),this.miniCanvas?.classList.add("sl-dragging"),e.preventDefault())}minimapPointerMove(e){let t=this.miniDrag;if(!t||t.pointerId!==e.pointerId)return;let i=this.minimapWorldPoint(e);i&&(!t.moved&&Math.hypot(e.clientX-t.startX,e.clientY-t.startY)>2&&(t.moved=!0,this.host.controller.clearSectionFocus()),this.host.controller.panToWorld({x:i.x-t.offsetX,y:i.y-t.offsetY}),e.preventDefault())}minimapPointerUp(e){let t=this.miniDrag;!t||t.pointerId!==e.pointerId||(this.miniSuppressClick=t.moved,this.miniDrag=null,this.miniCanvas?.classList.remove("sl-dragging"),this.miniCanvas?.hasPointerCapture(e.pointerId)&&this.miniCanvas.releasePointerCapture(e.pointerId))}minimapKeydown(e){let t=this.host.controller.getViewport()?.visible;if(!t)return;if(e.key==="Home"){this.host.controller.overview(),e.preventDefault();return}let i=e.key==="ArrowLeft"?-t.width*.2:e.key==="ArrowRight"?t.width*.2:0,s=e.key==="ArrowUp"?-t.height*.2:e.key==="ArrowDown"?t.height*.2:0;!i&&!s||(this.host.controller.clearSectionFocus(),this.host.controller.panToWorld({x:t.x+t.width/2+i,y:t.y+t.height/2+s}),e.preventDefault())}minimapJump(e){let t=this.minimapWorldPoint(e);if(t){for(let i of this.host.controller.getMinimapSnapshot().sections)if(!(i.state==="inactive"||i.outline.length<3)&&(0,js.pointInPolygon)(t,i.outline)){this.host.controller.focusSection(i.id);return}this.host.controller.clearSectionFocus(),this.host.controller.panToWorld(t)}}};var Bt=require("@seatlayer/core");var zn=12;function Vs(r,e){let t=e.floors(),i=new Set(t.map(v=>v.label.trim().toLocaleLowerCase())),s=e.zones().filter(v=>v.seatCount>0&&!i.has(v.label.trim().toLocaleLowerCase())),n=e.sections().filter(v=>v.seatCount>0&&!i.has(v.label.trim().toLocaleLowerCase())),o=s.length>1?[]:n,a=t.length>1,l=s.length>1,c=o.length>1;if(!a&&!l&&!c)return;let h=document.createElement("div");h.className="sl-view3d-nav";let p=document.createElement("button");p.type="button",p.className="sl-view3d-nav-toggle",p.setAttribute("aria-expanded","false");let d='<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M15.5 8.5l-2 5-5 2 2-5z"/></svg>',m=document.createElement("span");p.innerHTML=d,p.appendChild(m);let g=v=>{h.classList.toggle("is-open",v),p.setAttribute("aria-expanded",String(v)),m.textContent=v?f("picker.closeVenueNav","Close"):a&&(l||c)?f("picker.levelsAndAreas","Levels & areas"):a?f("picker.levels","Levels"):f("picker.areas","Areas")};p.addEventListener("click",()=>g(!h.classList.contains("is-open"))),h.addEventListener("keydown",v=>{v.key!=="Escape"||!h.classList.contains("is-open")||(v.preventDefault(),v.stopPropagation(),g(!1),p.focus())}),g(!1),h.appendChild(p);let x=v=>{},w=v=>{};if(a){let v=document.createElement("div");v.setAttribute("role","group"),v.setAttribute("aria-label",f("picker.levels","Levels"));let R=[];w=_=>{R.forEach(k=>{k.setAttribute("aria-pressed",String((k.dataset.floor===""?null:Number(k.dataset.floor))===_))})};let S=_=>{e.focusFloor(_)&&(w(_),x(_))},P=(_,k)=>{let M=document.createElement("button");M.type="button",M.textContent=_,M.dataset.floor=k===null?"":String(k),M.setAttribute("aria-pressed",String(k===null)),M.addEventListener("click",()=>{S(k),g(!1)}),R.push(M),v.appendChild(M)};P(f("picker.allLevels","All levels"),null);for(let _ of t)P(_.label||(0,Bt.t)("picker.levelNumber",{number:_.index+1}),_.index);h.appendChild(v)}if(l||c){let v=document.createElement("div");v.setAttribute("role","group"),v.setAttribute("aria-label",f("picker.areas","Areas"));let R=l?s.map(P=>({id:P.id,label:P.label||P.id,go:()=>{e.focusZone(P.id)}})):o.map(P=>({id:P.id,label:P.label||P.id,floorIndex:P.floorIndex,go:()=>{e.focusSection(P.id),Number.isFinite(P.floorIndex)&&w(P.floorIndex)}})),S=P=>{let _=l||P===null?R:R.filter(k=>k.floorIndex===void 0||k.floorIndex===P);if(v.replaceChildren(),!_.length){v.remove();return}if(v.isConnected||h.appendChild(v),!l&&_.length>zn){let k=document.createElement("select");k.setAttribute("aria-label",f("picker.jumpToSection","Jump to section"));let M=document.createElement("option");M.value="",M.textContent=f("picker.jumpToSection","Jump to section"),k.appendChild(M);for(let u of _){let C=document.createElement("option");C.value=u.id,C.textContent=u.label,k.appendChild(C)}k.addEventListener("change",()=>{_.find(u=>u.id===k.value)?.go()}),v.appendChild(k);return}for(let k of _){let M=document.createElement("button");M.type="button",M.textContent=k.label,M.addEventListener("click",()=>{k.go(),g(!1)}),v.appendChild(M)}};x=S,S(null)}r.appendChild(h)}var zt=class{constructor(e){this.host=e;this.chip=null}sync(){let e=this.host.overlay();if(!e||this.host.savedSeatIds().length===0){this.chip?.remove(),this.chip=null;return}let t=this.chip;if(!t){t=document.createElement("div"),t.className="sl-view3d-compare-saved",t.setAttribute("role","group"),t.setAttribute("aria-label",f("picker.savedSeatComparison","Saved seat comparison"));let n=document.createElement("button");n.type="button",n.className="main",n.addEventListener("click",()=>{this.host.savedSeatIds().length>1?this.host.openComparison():this.host.toast(f("picker.chooseAnotherToCompare","Choose another seat to compare."),"neutral")});let o=document.createElement("button");o.type="button",o.className="clear",o.textContent="\xD7",o.setAttribute("aria-label",f("picker.clearSavedSeatComparison","Clear saved seat comparison")),o.addEventListener("click",()=>this.host.clearComparison()),t.append(n,o),e.appendChild(t),this.chip=t}let i=this.host.savedSeatIds().length,s=t.querySelector(".main");s&&(s.textContent=i>1?(0,Bt.t)("picker.compareCount",{count:i}):f("picker.oneSeatSaved","1 seat saved"),s.setAttribute("aria-label",i>1?(0,Bt.t)("picker.openComparisonOfSeats",{count:i}):f("picker.oneSeatSavedChooseAnother","One seat saved; choose another to compare")))}remove(){this.chip?.remove(),this.chip=null}mainButton(){return this.chip?.querySelector(".main")??null}};var lt=require("@seatlayer/core");function Gs(r){return Array.isArray(r)?r.reduce((e,t)=>t.type==="minimumSelectedPlaces"?Math.max(e,t.minimum):e,0):0}function hi(r,e,t=!1){let i=r.violations[0];return i==="numberOfPlacesToSelect"?r.remaining>0?(0,lt.t)("picker.selectExactMore",{count:r.remaining}):(0,lt.t)("picker.selectExactCount",{count:r.required}):i==="minimumSelectedPlaces"?(0,lt.t)("picker.selectMinimumMore",{count:r.remaining}):t?e("picker.adjustSeatSelection","Adjust seat selection"):i==="consecutiveSeats"?e("picker.selectSeatsTogether","Choose seats together in the same row and ticket category."):(0,lt.t)("picker.orphanHint")}var re=require("@seatlayer/core");function ct(r){let e=Math.max(0,r),t=Math.floor(e/6e4),i=String(Math.floor(e%6e4/1e3)).padStart(2,"0");return`${t}:${i}`}function Us(r){return(r.performanceLabel?`<div class="sl-chip-when">${F(r.performanceLabel)}</div>`:"")+Dn(r)}function Dn({d:r,area:e,label:t,objectType:i,quantity:s=1,identity:n}){let o=h=>String(h??"\u2014").replace(/[&<>"]/g,p=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[p]),a=i==="ga"?"ga":r?.objectType??i,l=n?.displayType?.trim()||r?.displayType?.trim()||e?.displayType?.trim()||(a==="table"?f("picker.table","Table"):a==="booth"?f("picker.booth","Booth"):a==="ga"?f("picker.generalAdmission","General admission"):f("picker.row","Row")),c=n?.rowLabel??n?.displayLabel??r?.rowLabel??r?.displayLabel??e?.displayLabel??e?.label??t;return a==="table"&&n?.bookingMode?`<div class="sl-chip-id"><span class="fld sec"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(c)}</span></span><span class="fld mid"><span class="sl-chip-eb">${f("picker.guests","Guests")}</span><span class="val">${s}</span></span></div>`:a==="ga"?`<div class="sl-chip-id"><span class="fld sec"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(c)}</span></span>`+(s>1?`<span class="fld mid"><span class="sl-chip-eb">${f("picker.tickets","Tickets")}</span><span class="val">${s}</span></span>`:"")+"</div>":a==="booth"?'<div class="sl-chip-id">'+(r?.sectionLabel?`<span class="fld sec"><span class="sl-chip-eb">${f("picker.section","Section")}</span><span class="val">${o(r.sectionLabel)}</span></span>`:"")+`<span class="fld mid"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(c)}</span></span></div>`:!r?.sectionLabel&&!r?.rowLabel&&!r?.seatNumber?`<div class="sl-chip-id"><span class="fld sec"><span class="sl-chip-eb">${f("picker.seat","Seat")}</span><span class="val">${o(c)}</span></span></div>`:'<div class="sl-chip-id">'+(r.sectionLabel?`<span class="fld sec"><span class="sl-chip-eb">${f("picker.section","Section")}</span><span class="val">${o(r.sectionLabel)}</span></span>`:"")+(r.rowLabel?`<span class="fld mid"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(we(r))}</span></span>`:"")+(r.seatNumber?`<span class="fld mid"><span class="sl-chip-eb">${f("picker.seat","Seat")}</span><span class="val">${o(r.seatNumber)}</span></span>`:"")+"</div>"}function qs(r,e){let t=F(r),i=e?F(e):"";return`<div class="sl-chip-rail"><button type="button" class="rm" aria-label="${t}"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button>`+(e?`<button type="button" class="view" data-view-label="${i}" aria-label="${F((0,re.t)("picker.viewFromSeat",{label:e}))}"><svg viewBox="0 0 24 24"><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/></svg></button>`:"")+"</div>"}function Ks(r){return r.salesClosed||r.hasHold||r.ctaPhase!=="idle"||r.formOpen||r.room<=0?null:Math.max(1,Math.min(r.wanted,r.room))}function Ws({count:r,total:e,pendingCount:t,ctaPhase:i,hasHold:s,salesClosed:n,fromPrice:o,addMore:a,holdTime:l,money:c}){if(r&&i==="holding")return`<span>${f("picker.securingSeats","Securing your seats\u2026")}</span>`;if(r&&i==="checkout")return`<span>${(0,re.t)("picker.peekSecured",{count:r,total:c(e)})}</span>`;if(r){let h=!!s;return`<span>${(0,re.tCount)("picker.peekTicketsTotal",r,{total:c(e)})}</span>`+(a?`<button type="button" class="go ghost sl-sheet-go" data-act="best" aria-label="${f("picker.findTogetherInstead","Find seats together instead")}">\u2726 +${a}</button>`:"")+`<button type="button" class="go sl-sheet-go" data-act="${h?"checkout":"open"}">${s?t?f("picker.secureMore","Secure more"):f("picker.continue","Continue"):f("picker.review","Review")}`+(s&&l?`<span class="sl-peek-time" aria-hidden="true">${l}</span>`:"")+"</button>"}else return n?`<span>${f("picker.salesClosedPill","Sales are closed")}</span>`:(o!=null?`<span>${(0,re.t)("picker.peekFromPrice",{price:c(o)})}</span>`:`<span>${f("picker.pickYourSeats","Pick your seats")}</span>`)+`<button type="button" class="go sl-sheet-go" data-act="open">${f("picker.bestSeatsStar","\u2726 Best seats")}</button>`}function ui(r,e=Date.now()){return(0,re.t)("picker.holdReassurance",{time:ct(r-e)})}function Ys(r){return r.confirming?`<div class="sl-ba" role="alert"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${f("picker.replaceCurrentChoices","Replace your current choices?")}</div><div class="sl-ba-replace"><b>${(0,re.t)("picker.willFindSeatsTogether",{count:r.quantity})}</b><span>${f("picker.manualTicketsRemovedNote","Your manually selected tickets will be removed only after a new group is secured.")}</span></div><div class="sl-ba-actions"><button type="button" data-ba-cancel>${f("picker.keepMine","Keep mine")}</button><button type="button" class="replace" data-ba-replace>${f("picker.findNewSeats","Find new seats")}</button></div></div>`:`<div class="sl-ba"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${f("picker.findBestSeatsTogether","Find the best seats together")}</div><div class="sl-ba-copy"><span class="wide">${f("picker.willChooseClosestGroup","We\u2019ll choose the closest available group for you.")}</span><span class="narrow">${f("picker.closestGroupChosenInstantly","Closest available group, chosen instantly.")}</span></div>`+(r.offerPremium?`<button type="button" class="sl-ba-premium${r.premium?" on":""}" data-ba-premium aria-pressed="${r.premium?"true":"false"}"><span class="star" aria-hidden="true">\u2605</span>${f("picker.bestSeatsPremium","Best seats")}</button>`:"")+(r.categories.length>1?`<select aria-label="${F(f("picker.preferredTicketType","Preferred ticket type"))}" data-ba-cat><option value="">${F(f("picker.anyTicketType","Any ticket type"))}</option>`+r.categories.map(e=>`<option value="${F(e.key)}"${r.selectedCategory===e.key?" selected":""}>${F(e.label)}</option>`).join("")+"</select>":'<span aria-hidden="true"></span>')+(r.zones.length?`<select aria-label="${f("picker.preferredVenueZone","Preferred venue zone")}" data-ba-zone><option value="">${f("picker.anyVenueZone","Any venue zone")}</option>`+r.zones.map(e=>`<option value="${F(e.id)}"${r.selectedZone===e.id?" selected":""}>${F(e.label)}</option>`).join("")+"</select>":"")+`<div class="sl-ba-qty"><button type="button" data-ba="-1" aria-label="${f("picker.fewerSeats","Fewer seats")}">\u2212</button><span>${r.quantity}</span><button type="button" data-ba="1" aria-label="${f("picker.moreSeats","More seats")}">+</button></div><button type="button" class="sl-ba-go${r.busy?" sl-busy":""}"${r.busy?" disabled":""}>`+(r.busy?`<span class="sl-ba-spin" aria-hidden="true"></span>${f("picker.findingBestSeats","Finding the best seats\u2026")}`:(0,re.tCount)("picker.findBestSeatsCount",r.quantity))+"</button>"+(r.reopened?`<button type="button" class="sl-ba-back" data-ba-close>${f("picker.keepMyPicks","Keep my picks")}</button>`:"")+"</div>"}function Qs(r){if(r.salesClosed&&!r.hasPicks){let e=r.whenText?`<span class="when">${F(r.whenText)}</span>`:"";return`<div class="sl-closed-note" role="status"><b>${f("picker.salesClosedPill","Sales are closed")}</b><span>${f("picker.salesClosedCopy","Ticket sales for this event have ended.")}${e}</span></div>`}return r.hasPicks?"":r.hasGaAreas?`<div class="sl-tray-hint">${r.seated?f("picker.trayHintTapOrStanding","Tap a seat on the map \u2014 or grab standing tickets below."):f("picker.gaTrayHintTapArea","Tap an area on the map to choose tickets.")}</div>`:`<div class="sl-tray-hint">${r.groupMode==="per_performance"?f("picker.groupPerPerformanceTrayHint","Choose seats for this performance, then complete every date above."):r.groupMode?f("picker.groupTrayHint","Choose seats once \u2014 the same seats will be held for every performance."):f("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you.")}</div>`}function Xs(r){return{title:(0,re.t)("picker.securedCount",{count:r.secured}),copy:r.pendingCount?(0,re.t)("picker.moreSelectedCount",{count:r.pendingCount}):ui(r.expiresAt),change:r.releasing?f("picker.releasingEllipsis","Releasing\u2026"):f("picker.change","Change")}}var Zs=Symbol("seatlayer.performance-group-picker");function Js(r,e){return Object.defineProperty(r,Zs,{configurable:!1,enumerable:!1,value:Object.freeze({...e})}),r}function er(r){return r[Zs]??null}var He=require("@seatlayer/core");function Fn(r,e){let t=new Set(e);return r.map(i=>({...i,free:!t.has(i.eventKey)}))}function tr(r,e){let t=[...r];if(t.length<=1)return t[0]??"";try{return new Intl.ListFormat(e,{style:"long",type:"conjunction"}).format(t)}catch{return t.join(", ")}}function jn(r,e,t=""){if(!r.length)return"";let i=r.map(s=>{let n=s.free?e.free:e.blocked;return`<li class="sl-night${s.free?" ok":" no"}" aria-label="${E(`${s.shortDate}: ${n}`)}"><i class="sl-night-dot" aria-hidden="true"></i><span class="d">${E(s.shortDate)}</span><span class="st">${E(n)}</span></li>`}).join("");return`<div class="sl-tip-nights"><div class="sl-tip-nights-title">${E(e.title)}</div><ul class="sl-nightstrip">${i}</ul><p class="sl-tip-nights-note">${E(e.notAvailableOn)}</p>`+t+"</div>"}function Nn(r){return r.switchLabel&&r.pinned?`<button type="button" class="sl-tip-switch" data-pg-switch-mode>${E(r.switchLabel)}</button>`:r.switchLabel?"":`<p class="sl-tip-advice">${E(r.advice)}</p>`}function Vn(r){return Number(r.available)+Number(r.selected)+Number(r.partial)+Number(r.unavailable)}function ir(r,e,t){if(Vn(r)<2)return"";let i=(n,o,a="")=>`<li class="sl-pg-legend-item"><i class="sl-pg-sw ${n}"${a}></i>${E(o)}</li>`,s=[];return r.available&&s.push(i("sl-pg-sw-free",e.available,` style="background:${E(t)}"`)),r.selected&&s.push(i("sl-pg-sw-sel",e.selected)),r.partial&&s.push(i("sl-pg-sw-split",e.partial,` style="--sl-pg-sw-cat:${E(t)}"`)),r.unavailable&&s.push(i("sl-pg-sw-off",e.unavailable)),`<ul class="sl-pg-legend-list" aria-label="${E(e.title)}">${s.join("")}</ul>`}function sr(r,e){if(!r.length)return"";let t=r.map(i=>{let s=i.labels.length?i.labels.join(", "):e.empty;return`<li class="sl-pg-night-row${i.labels.length?"":" empty"}${i.active?" active":""}" role="button" tabindex="0"${i.active?' aria-current="true"':""} data-event-key="${E(i.eventKey)}"><span class="n">${E(i.name)}</span><span class="s">${E(s)}</span></li>`}).join("");return`<div class="sl-pg-nights" role="group" aria-label="${E(e.title)}"><div class="sl-pg-nights-title">${E(e.title)}</div><ul class="sl-pg-nights-list">${t}</ul></div>`}function mi(r,e){if(r?.kind!=="partial"||!e?.length)return null;let t=r.data?.blockedEventKeys??[],i=Fn(e,t);return{states:i,missing:i.filter(s=>!s.free).map(s=>s.shortDate)}}function rr(r,e){return r?jn(r.states,{title:f("picker.group.partlyAvailableTitle","Free on some nights only"),free:f("picker.group.nightFree","Free"),blocked:f("picker.group.nightBlocked","Not available"),notAvailableOn:(0,He.t)("picker.group.notAvailableOn",{dates:tr(r.missing,e.locale)})},Nn({switchLabel:e.switchLabel??null,pinned:e.pinned,advice:f("picker.group.pickSeatFreeEveryNight","Pick a seat that is free every night.")})):""}function nr(r,e,t){return r?(0,He.t)("picker.group.seatPartlyAvailable",{label:e,free:r.states.length-r.missing.length,total:r.states.length,dates:tr(r.missing,t)}):""}function or(r,e){let t=r.map((i,s)=>{let n=i.state==="done"?e.done:i.state==="current"?e.current:e.upcoming;return`<li class="sl-pg-step-item" data-step="${E(i.id)}" data-state="${E(i.state)}"${i.state==="current"?' aria-current="step"':""}><span class="i" aria-hidden="true">${i.state==="done"?"\u2713":String(s+1)}</span><span class="l">${E(i.label)}</span><span class="sl-pg-sr">${E(n)}</span></li>`}).join("");return`<ol class="sl-pg-steps" aria-label="${E(e.label)}">${t}</ol>`}function ar(r,e){return`<ul class="sl-pg-cards">${r.map(i=>`<li class="sl-pg-card" data-event-key="${E(i.eventKey)}"><span class="n">${E(i.name)}</span><time datetime="${E(i.iso)}"><span class="d">${E(i.date)}</span><span class="t">${E(i.time)}</span></time></li>`).join("")}</ul><p class="sl-pg-included">${E(e)}</p>`}function lr(r){let e=r.rows.map(t=>`<li class="sl-pg-pane-row${t.labels.length?"":" empty"}" data-event-key="${E(t.eventKey)}"><span class="n">${E(t.name)}</span><span class="s">${E(t.labels.length?t.labels.join(", "):r.empty)}</span></li>`).join("");return`<div class="sl-pg-pane-title">${E(r.title)}</div><ul class="sl-pg-pane-list">${e}</ul>`+(r.note?`<p class="sl-pg-pane-note">${E(r.note)}</p>`:"")+(r.total?`<div class="sl-pg-pane-total"><span>${E(r.total.label)}</span><b>${E(r.total.amount)}</b></div>`:"")+(r.holdStatus?`<p class="sl-pg-hold-status" role="status">${E(r.holdStatus)}</p>`:"")}function cr(r){let e=Math.max(0,r);return`${Math.floor(e/6e4)}:${String(Math.floor(e/1e3)%60).padStart(2,"0")}`}function dr(r,e){if(!r||r.seats<=0)return"";if(e==="same_seat"){let t=r.perPerformance??r.seats;return(0,He.tCount)("picker.group.seatsEveryPerformance",t)}return r.perPerformance!=null&&r.performancesChosen===r.performances?(0,He.tCount)("picker.group.seatsPerPerformance",r.seats,{per:r.perPerformance}):(0,He.tCount)("picker.group.performancesChosenOf",r.seats,{chosen:r.performancesChosen,total:r.performances})}function pr(r,e){r.querySelectorAll(".sl-pg-night-row[data-event-key]").forEach(t=>{let i=()=>e(t.dataset.eventKey);t.addEventListener("click",i),t.addEventListener("keydown",s=>{s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),i())})})}var fi=require("@seatlayer/core");function ue(r){return String(r??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Gn(r,e){let t=r.objectType==="table"&&!!r.bookingMode,i=r.objectType==="booth",s=t||i||!r.seatNumber,n=s?r.rowLabel??r.displayLabel??r.label:r.seatNumber,o=t?`${f("picker.guests","Guests")} ${r.bookingMode==="variable"?`${r.minOccupancy}\u2013${r.maxOccupancy}`:r.capacity}`:!i&&r.rowLabel?`${e} ${we(r)??""}`.trim():"";return`<div class="sl-tip-head"><div class="sl-tip-id"><span class="sl-tip-seat${s?" name":""}">${ue(n)}</span>`+(o?`<span class="sl-tip-row">${ue(o)}</span>`:"")+"</div>"+(r.sectionLabel?`<div class="sl-tip-sec"><span class="sl-tip-eyebrow">${f("picker.section","Section")}</span><span class="sl-tip-secname">${ue(r.sectionLabel)}</span></div>`:"")+"</div>"}function hr(r,e){let t=r.status==="not_for_sale",i=r.mark?.kind==="partial",s=r.status==="free"||i?"":`<span class="sl-tip-tag">${t?f("picker.notAvailable","Not available"):r.status==="held"?(0,fi.t)("map.statusHeld"):(0,fi.t)("map.statusTaken")}</span>`,n=t?"":e.price,o=n?`<span class="sl-tip-amt">${ue(n)}</span>`:"",a=!n&&e.priceNote?`<div class="sl-tip-note">${ue(e.priceNote)}</div>`:"",l=xe(r.commercial),c=l?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u25D0</span>${ue(l)}</div>`:"",h=Ue(r.wheelchairSpaceType),p=h?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u267F</span>${ue(h)}</div>`:"";return'<i class="sl-tip-rail" aria-hidden="true"></i>'+Gn(r,e.rowTypeWord)+`<div class="sl-tip-cat"><span class="sl-tip-dot" style="background:${ue(r.categoryColor)}"></span><span class="sl-tip-name">${ue(r.categoryLabel)}</span>`+s+o+"</div>"+a+p+c+(e.extra??"")}function ur(r,e,t){let i=r.x+14,s=r.y-t.height-12;return i+t.width>e-8&&(i=r.x-t.width-14),s<8&&(s=r.y+18),{left:Math.max(8,i),top:Math.max(8,s)}}function dt(r){let e=r?.displayType?.trim()||r?.rowType?.trim();return e||(r?.objectType==="table"?f("picker.table","Table"):r?.objectType==="booth"?f("picker.booth","Booth"):f("picker.row","Row"))}var mr="@seatlayer/pending-checkout/v1";function Un(r){return typeof r=="string"&&r.length<=160&&/^ord_[A-Za-z0-9_-]+$/.test(r)}function fr(r){if(typeof location>"u")return null;let e=new URLSearchParams(location.search),t=e.get("seatlayer_checkout");if(t!=="success"&&t!=="cancelled")return null;let i=null;try{let s=window.sessionStorage.getItem(mr);if(s){let n=null;try{n=JSON.parse(s)}catch{}if(n&&Un(n.orderId)){let o=Date.now()-Number(n.storedAt);if(o>=0&&o<=144e5){if(n.eventKey&&n.eventKey!==r)return null;i=n.orderId}}}window.sessionStorage.removeItem(mr)}catch{}e.delete("seatlayer_checkout");try{let s=e.toString();history.replaceState(history.state,"",`${location.pathname}${s?`?${s}`:""}${location.hash}`)}catch{}return{outcome:t,orderId:i}}function gr(r){if(!r.framed)return null;let e=r.ancestorOrigins?.length?r.ancestorOrigins[0]:null;for(let t of[e,r.referrer])if(t)try{return new URL(t).origin}catch{}return null}var qn="https://api.seatlayer.io",Kn=10,br=6e4,vr=6e4,yr=new Set;function Wn(r){let e=yr.has(r);return yr.add(r),e}var wr="seatmap.a11y.cb";function Yn(){try{if(typeof window>"u")return null;let r=window.localStorage.getItem(wr);return r==null?null:r==="1"}catch{return null}}function Qn(r){try{window.localStorage.setItem(wr,r?"1":"0")}catch{}}var We=class r{constructor(e){this.realtime=null;this.accessEl=null;this.lastSelectionValidity=null;this.root=null;this.mapHost=null;this.rendered=!1;this.destroyed=!1;this.els={};this.regions={};this.ro=null;this.holdTimer=null;this.toastTimer=null;this.offerRefreshTimer=null;this.offerBoundaryTimer=null;this.offerVisibilityHandler=null;this.motionTimers=new Set;this.currency="USD";this.eventTimezone=null;this.eventWhenText=null;this.offerAvailability=null;this.channelByObject=new Map;this.pricesByChannel=new Map;this.hold=null;this.holdExpiresAt=0;this.handedOff=!1;this.bookedShown=!1;this.paymentOptions=null;this.checkoutPanel=null;this.extendEl=null;this.bookedEl=null;this.gaQty=new Map;this.gaPromptEl=null;this.gaPromptReturnFocus=null;this.gaAreasExpanded=!1;this.lastMapPoint=null;this.tipEl=null;this.tipPos={x:0,y:0};this.tipPinned=!1;this.lastPointerType="mouse";this.confirmEl=null;this.confirmSeat=null;this.tableDialogEl=null;this.tableDialog=null;this.tableDialogHeld=!1;this.tableDialogReturnFocus=null;this.srEl=null;this.baQty=2;this.baCat="";this.baZone="";this.baPremium=!1;this.baReopen=!1;this.bestAvailableConfirm=!1;this.releasingHold=!1;this.salesClosed=!1;this.soldOut=!1;this.soldoutEl=null;this.cbSafe=!1;this.rungsEl=null;this.projectionEl=null;this.buyerView="map";this.view3dEl=null;this.view3dHandle=null;this.view3dGen=0;this.view3dReturnSeat=null;this.view3dTargetSeatId=null;this.view3dCompareSeatIds=[];this.view3dCompareChip=new zt({overlay:()=>this.view3dEl,savedSeatIds:()=>this.view3dCompareSeatIds,openComparison:()=>this.openView3dComparison(),clearComparison:()=>this.clearView3dComparison(),toast:(e,t)=>this.toast(e,t)});this.view3dCompareEl=null;this.view3dCompareCleanup=null;this.view3dPassportEl=null;this.view3dPassportCleanup=null;this.floorsEl=null;this.secCardEl=null;this.viewEl=null;this.viewCleanup=null;this.seatViewGen=0;this.allSeatsCache=null;this.minimap=null;this.pickerLayoutSize={width:0,height:0};this.priceBandKeys=null;this.focusedCatKey=null;this.limitedViewFilter=!1;this.pricesExpanded=!1;this.lastSection=null;this.secCardCollapsed=!1;this.secCardShownAt=0;this.lastTrayCount=0;this.langSel=null;this.lastTrayTotal=0;this.lastTrayKeys=new Set;this.bestAvailableBusy=!1;this.releasingLabels=new Set;this.holdingLabels=new Set;this.ctaPhase="idle";this.a11yChipsEl=null;this.railEdgesBound=!1;this.fsFallback=!1;this.fsChangeHandler=null;this.fsEscHandler=null;this.eventDetailsHidden=!1;this.holdCopyPending=!1;this.sideCollapsed=!1;this.sideToggleEl=null;this.framedFs=!1;this.lastPostedHeight=0;this.cbEl=null;this.modalScrim=null;this.prevFocus=null;this.escHandler=null;this.closeModal=null;this.lastCatAvail=null;this.lastAvailFloorId="";this.availQuietUntil=0;this.liveTimer=null;this.perspectiveWarned=!1;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");if(!e.container)throw new Error("seatmap: `container` is required (or use SeatPicker.open())");this.performanceGroup=er(e),this.suppressPricing=!!this.performanceGroup?.suppressPricing,this.opts={...e,confirmSelection:e.confirmSelection??!0},this.eventDetailsHidden=!!e.hideEventDetails,this.hostPricing=e.pricing,this.apiBase=(e.apiBase??qn).replace(/\/+$/,"");let t={onExpired:a=>{this.opts.onAccessExpired?.(a),a.refreshed||this.showAccessPanel({reason:"no_token",retryable:!1})},onUnavailable:a=>{this.opts.onAccessUnavailable?.(a),this.showAccessPanel(a)}},i=!e.transport&&e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?Ct({base:this.apiBase,event:e.event,publicKey:e.publicKey,accessHooks:t,apiOptions:{referral:e.referral,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=e.transport?null:i?.access??je(e,t),this.pubApi=e.transport?null:i?.api??new be(this.apiBase,{access:this.access??void 0,referral:e.referral,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}),this.api=e.transport??this.pubApi,this.buyerAssetUrls=new Rt(e.event,this.api.asset?(a,l)=>this.api.asset(a,l):void 0),e.checkout==="hosted"&&!this.pubApi&&console.warn('seatlayer: checkout: "hosted" needs the widget\'s own transport \u2014 a custom `transport` owns its backend, so the picker is staying on onCheckout for this mount.'),this.checkoutMode=e.checkout==="hosted"&&this.pubApi?"hosted":"handoff";let s=e.numberOfPlacesToSelect;if(s!=null&&(!Number.isInteger(s)||s<1))throw new Error("seatmap: `numberOfPlacesToSelect` must be a positive integer");this.exactTickets=s??null;let n=Gs(e.selectionValidators);if(this.exactTickets!=null&&n>this.exactTickets)throw new Error("seatmap: `minimumSelectedPlaces.minimum` cannot exceed `numberOfPlacesToSelect`");let o=Math.max(1,Math.floor(e.maxSelection??this.exactTickets??Math.max(Kn,n)));if(this.exactTickets!=null&&o<this.exactTickets)throw new Error("seatmap: `maxSelection` cannot be lower than `numberOfPlacesToSelect`");if(e.maxSelection!=null&&o<n)throw new Error("seatmap: `maxSelection` cannot be lower than `minimumSelectedPlaces.minimum`");this.maxTickets=this.exactTickets??o,this.cbSafe=Yn()??!!e.colorblindSafe,this.controller=this.wireController(e)}chartHasStage(){let e=this.controller.doc;if(!e)return!1;let t=e.floors?.length?e.floors.map(i=>i.objects??[]):[e.objects??[]];for(let i of t)for(let s of i)if(s.type==="shape"&&(s.role==="stage"||s.stageKind))return!0;return!1}confirmThumbHtml(e){let t=this.controller.doc;if(!t)return"";let i=e.viewUrl??"",s=this.chartHasStage();if(!i&&!s)return"";let n=null;if(!i)try{n=(0,b.generateSeatThumb)(e,e.focalPoint??t.focalPoint).distanceM??null}catch{return""}let o=s&&n!=null?`<div class="sl-confirm-sight">${F((0,b.t)("picker.sightline",{m:n}))}</div>`:"",a=F((0,b.t)("picker.viewFromSeat",{label:e.label})),l=F(this.tf("picker.viewFromHere","View from here"));return(i?`<button type="button" class="sl-confirm-view sl-confirm-thumbwrap" aria-label="${a}"><img class="sl-confirm-thumb" alt="" /><span class="sl-confirm-thumb-badge">\u{1F52D} ${l}</span></button>`:`<button type="button" class="sl-confirm-view sl-confirm-viewbtn" aria-label="${a}"><span aria-hidden="true">\u{1F52D}</span><span>${l}</span></button>`)+o}isFramed(){return typeof window<"u"&&window.parent!==window}postToHost(e){if(!this.isFramed())return;let t=gr({framed:!0,ancestorOrigins:window.location.ancestorOrigins,referrer:document.referrer});if(t)try{window.parent.postMessage(e,t)}catch{}}measureFramedHeight(){let e=this.root;if(!e)return 0;let t=e.clientWidth||(typeof window<"u"?window.innerWidth:0)||0;if(t<=0)return 0;let i=t<640?1.2:.62;return Math.max(420,Math.round(t*i))}reportFramedHeight(){if(!this.isFramed())return;let e=this.measureFramedHeight();e<=0||e===this.lastPostedHeight||(this.lastPostedHeight=e,this.postToHost({type:"seatlayer:height",px:e}))}toggleFullscreen(){let e=this.root;if(!e)return;!!document.fullscreenElement||this.fsFallback||this.framedFs?document.fullscreenElement?document.exitFullscreen().catch(()=>{}):this.framedFs?this.setFramedFs(!1):this.setFsFallback(!1):e.requestFullscreen?e.requestFullscreen().catch(()=>this.enterFsFallback()):this.enterFsFallback()}syncFullscreenButtons(){let e=!!document.fullscreenElement||this.fsFallback||this.framedFs,t=this.eventDetailsHidden&&!e;this.root?.setAttribute("data-event-details-hidden",String(t)),this.els.zfs?.setAttribute("aria-pressed",String(e)),this.els.zfs?.setAttribute("title",e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen"));let i=this.els.zfs?.querySelector(".sl-zfs-lbl");i&&(i.textContent=e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen")),this.view3dEl?.querySelector(".sl-view3d-fs")?.setAttribute("aria-pressed",String(e))}enterFsFallback(){this.isFramed()?this.setFramedFs(!0):this.setFsFallback(!0)}setFramedFs(e){this.framedFs!==e&&(this.framedFs=e,this.syncFullscreenButtons(),this.postToHost({type:"seatlayer:fullscreen",on:e}),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFramedFs(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}setFsFallback(e){this.fsFallback!==e&&(this.fsFallback=e,this.root?.classList.toggle("sl-fs",e),this.syncFullscreenButtons(),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFsFallback(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}close(){this.closeModal?this.closeModal():this.destroy()}static async open(e){ci();let t=document.activeElement instanceof HTMLElement?document.activeElement:null,i=document.createElement("div");i.className="sl-modal-scrim";let s=document.createElement("div");s.className="sl-modal-frame",s.setAttribute("role","dialog"),s.setAttribute("aria-modal","true"),s.setAttribute("aria-label",f("picker.seatSelection","Seat selection")),s.tabIndex=-1,i.appendChild(s),document.body.appendChild(i);let n=document.body.style.overflow;document.body.style.overflow="hidden";let o=new r({...e,container:s});o.modalScrim=i,o.prevFocus=t;let a=["a[href]","area[href]","button","input","select","textarea","iframe","object","embed","summary","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"[tabindex]"].join(","),l=()=>{let g=[...s.querySelectorAll('[role="dialog"][aria-modal="true"]')].filter(x=>x.isConnected&&!x.closest('[hidden], [aria-hidden="true"], [inert]'));return g[g.length-1]??s},c=(g,x)=>{let w=g;for(;w;){let v=window.getComputedStyle(w);if(w.hidden||w.getAttribute("aria-hidden")==="true"||w.hasAttribute("inert")||v.display==="none"||v.visibility==="hidden"||v.visibility==="collapse")return!0;if(w===x)return!1;w=w.parentElement}return!0},h=g=>[...g.querySelectorAll(a)].filter(x=>x.tabIndex>=0&&!x.matches(":disabled")&&!c(x,g)),p=(g,x)=>{let w=h(g),v=x?w[w.length-1]:w[0];v?v.focus({preventScroll:!0}):(g.hasAttribute("tabindex")||(g.tabIndex=-1),g.focus({preventScroll:!0}))},d=!1,m=()=>{if(d)return;d=!0,document.body.style.overflow=n,o.escHandler&&document.removeEventListener("keydown",o.escHandler),i.remove(),o.modalScrim=null;let g=o.prevFocus;o.prevFocus=null,g?.isConnected&&g.focus({preventScroll:!0});let x=()=>{o.destroy(),e.onClose?.()};o.hold&&!o.handedOff?o.release().finally(x):x()};return o.closeModal=m,i.addEventListener("mousedown",g=>{g.target===i&&m()}),o.escHandler=g=>{if(g.key==="Tab"){if(g.defaultPrevented)return;let x=l(),w=h(x),v=w[0],R=w[w.length-1],S=document.activeElement;!v||!R?(g.preventDefault(),p(x,g.shiftKey)):S===x||!S||!x.contains(S)?(g.preventDefault(),(g.shiftKey?R:v).focus({preventScroll:!0})):g.shiftKey&&S===v?(g.preventDefault(),R.focus({preventScroll:!0})):!g.shiftKey&&S===R&&(g.preventDefault(),v.focus({preventScroll:!0}));return}g.key==="Escape"&&(o.tableDialog?(g.preventDefault(),o.cancelTableDialog()):o.confirmSeat?(g.preventDefault(),o.cancelConfirm()):o.bestAvailableConfirm?(g.preventDefault(),o.bestAvailableConfirm=!1,o.syncTray()):(g.preventDefault(),m()))},document.addEventListener("keydown",o.escHandler),await o.render(),o.els.close?.classList.add("on"),o.els.close?.addEventListener("click",m),p(l(),!1),o}wireController(e){return new b.PickerController({transport:this.api,eventKey:e.event,maxSelection:this.maxTickets,selectedObjects:e.selectedObjects,selectableObjects:e.selectableObjects,numberOfPlacesToSelect:e.numberOfPlacesToSelect,selectionValidators:e.selectionValidators,currency:e.currency,flashOnLiveChange:!0,colorblindSafe:this.cbSafe,mapTheme:e.theme?.map??null,onGAClick:t=>{let i=this.controller.getGAAreas().find(s=>s.id===t);i&&Yt(this,i,this.lastMapPoint)},onSelectionChange:()=>{this.syncTray(),this.minimap?.refreshMinimap(),this.committedSelection().length&&this.collapseSectionCard(),this.syncSelectionTo3d()},onStatusChange:()=>{this.syncSeatMarks(),this.syncPrices(),this.scheduleOfferRefresh(!0),this.evictTakenSelections(),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onHoldExpired:()=>{this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.toast((0,b.t)("picker.holdExpired",void 0)||"Your hold expired \u2014 seats released. Pick again.","warning"),this.syncTray(),this.emitHoldChange(),this.opts.onHoldExpired?.()},confirmSelection:this.opts.confirmSelection,onSelect:t=>{if(this.salesClosed){this.controller.deselect([t.id]),this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}this.controller.tableSelection(t.id)||(this.flashPickedSeat(t.id),this.opts.confirmSelection&&this.showConfirm(t))},onTableSelectionRequest:t=>{if(this.salesClosed){this.controller.deselect(t.physicalSeatIds),this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}this.showTableDialog(t,!1)},onDeselect:t=>{this.confirmSeat?.id===t.id&&this.dismissConfirm(),this.tableDialog?.physicalSeatIds.includes(t.id)&&this.dismissTableDialog()},onSelectionLimit:()=>{this.toast((0,b.t)("picker.maxTicketsForOrder",{count:this.maxTickets}),"warning"),this.opts.onSelectionLimit?.(this.maxTickets)},onViewChange:()=>{this.reanchorConfirm(),this.syncRung(),this.syncProjection(),this.minimap?.drawMinimapRect(),this.sectionCardOnView()},onSectionFocus:t=>this.showSectionCard(t),onDeckTap:()=>{this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()},onFocusSeat:t=>this.announceSeat(t),onSeatHover:t=>this.updateTooltip(t),onHint:t=>{t&&this.toast(t)},onSalesClosed:()=>this.setSalesClosed(!0),onError:t=>this.opts.onError?.(t)})}async render(){if(this.rendered)return this;let e=performance.now(),t={},i=k=>Math.round((performance.now()-k)*100)/100;this.rendered=!0,ci();let s=performance.now();await(0,b.loadLocale)(this.opts.locale),t.loadLocale=i(s),this.opts.messages&&(0,b.setStringOverrides)(this.opts.messages),this.checkoutMode==="hosted"&&(this.paymentOptions=this.pubApi.paymentOptions(this.opts.event));let n=performance.now(),o=Zi(this.opts.container),{root:a,els:l,mapHost:c}=$s(o,(k,M)=>this.tf(k,M),this.opts.theme);this.root=a,this.els=l,this.mapHost=c,a.addEventListener("keydown",k=>{k.key==="Escape"&&(this.tipPinned?(k.preventDefault(),k.stopPropagation(),this.unpinTooltip()):this.tableDialog?(k.preventDefault(),k.stopPropagation(),this.cancelTableDialog()):this.confirmSeat?(k.preventDefault(),k.stopPropagation(),this.cancelConfirm()):this.bestAvailableConfirm&&(k.preventDefault(),k.stopPropagation(),this.bestAvailableConfirm=!1,this.syncTray()))}),this.syncFullscreenButtons(),this.wireBuyerShell(a);let h=document.createElement("div");h.style.cssText="position:absolute;inset:0",this.mapHost.appendChild(h),t.mountBuyerShell=i(n);let p=await this.loadChart(h,t,i);if(!p)return this;this.els.boot.remove();let d=performance.now();if(this.startRealtime(),this.salesClosed=!!p.salesClosed||!!this.opts.readOnly,a.dataset.eventMode=p.mode==="test"?"test":"live",!this.opts.locale&&p.locale&&await this.setLocale(p.locale),this.controller.setViewMode(this.normalizeInitialView(this.opts.initialView)),this.buildRegions(),this.regions["bottom-right"].appendChild(this.els.zoom),this.regions["bottom-center"].appendChild(this.els.toast),p.mode==="test"){let k=document.createElement("div");k.className="sl-testbadge",k.textContent=(0,b.t)("picker.testMode"),k.setAttribute("aria-label",(0,b.t)("picker.testMode")),this.regions["top-left"].appendChild(k)}let m=this.controller.doc?.theme,g=at(m,this.opts.theme);Object.entries(g).forEach(([k,M])=>a.style.setProperty(k,M)),this.applyMapChromeTokens(),this.currency=p.currency??this.opts.currency??"USD",this.eventTimezone=p.timezone??null,Ji(this.els.logo,[this.opts.theme?.logoUrl,m?.logoUrl,p.posterUrl],this.opts.theme?.brandName??m?.brandName??p.eventName??"?"),this.els.name.textContent=p.eventName??"";let x=p.startsAt?Mt(p.startsAt,p.timezone??null,this.opts.locale):"";this.eventWhenText=x||null,this.els.meta.textContent=[p.venue,x].filter(Boolean).join(" \xB7 "),this.els.pricesHint&&(this.els.pricesHint.textContent=this.tf("picker.priceHint","Colours on the map are ticket types \u2014 tap one below to show just those seats.")),this.buildBadge(m);let w=new Set,v=!1;if(this.controller.doc)for(let k of this.controller.getExpandedSeats()){for(let M of k.accessibility??[])w.add(M);k.accessible&&!k.accessibility?.length&&w.add("wheelchair"),(k.commercial?.restrictedView||k.commercial?.obstructedView)&&(v=!0)}let R=()=>{this.rungsEl&&this.controller.getRung()!=="seats"&&(this.controller.setRung("seats"),this.collapseSectionCard(),this.syncRung())};if(w.size||v){let k=document.createElement("div");if(k.className="sl-chips",this.regions["top-left"].appendChild(k),this.a11yChipsEl=k,w.size){let M=(H,z)=>`<button type="button" class="sl-chip-f${H==="all"?" on":""}" data-a11y="1" data-f="${H}">${z}</button>`;k.insertAdjacentHTML("beforeend",M("all",this.tf("picker.allSeats","All seats"))+b.ACCESSIBILITY_TYPES.filter(({key:H})=>w.has(H)).map(({key:H,short:z,icon:j})=>M(H,`${j} ${z}`)).join(""));let u=new Set,C=()=>{k.querySelectorAll("button[data-a11y]").forEach(z=>{let j=z.dataset.f,G=j==="all"?u.size===0:u.has(j);z.classList.toggle("on",G),z.setAttribute("aria-pressed",String(G))});let H=u.size?[...u]:null;this.controller.setAccessibilityFilter(H),H&&R()};k.querySelectorAll("button[data-a11y]").forEach(H=>{H.addEventListener("click",()=>{let z=H.dataset.f;z==="all"?u.clear():u.has(z)?u.delete(z):u.add(z),C()})})}if(v){let M=document.createElement("button");M.type="button",M.className="sl-chip-f",M.setAttribute("aria-pressed","false"),M.innerHTML=`\u25D0 ${this.tf("picker.hideLimitedView","Hide limited-view seats")}`,k.appendChild(M),M.addEventListener("click",()=>{let u=!this.limitedViewFilter;this.limitedViewFilter=u,M.classList.toggle("on",u),M.setAttribute("aria-pressed",String(u)),this.controller.setCommercialLimitedFilter(u),this.pushAvailabilityTo3d(),u&&R()})}}let S=document.createElement("button");S.type="button",S.className="sl-cbbtn",this.cbEl=S,S.setAttribute("aria-label",this.tf("picker.toggleColorblindColors","Toggle colorblind-friendly colors")),S.setAttribute("aria-pressed",String(this.cbSafe)),S.innerHTML='<svg viewBox="0 0 24 24"><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/></svg>',this.els.zfit.parentElement.appendChild(S),S.addEventListener("click",()=>{this.setColorblindSafe(!this.cbSafe)}),this.buildLanguageSwitcher(S.parentElement),this.srEl=document.createElement("div"),this.srEl.className="sl-sr",this.srEl.setAttribute("aria-live","polite"),a.appendChild(this.srEl),this.buildArenaChrome(),this.buildMinimap(),this.buildPriceFilter(),this.buildExtendPrompt(),this.buildBookedOverlay(),this.buildSoldoutOverlay(),this.buildPanelToggle(),this.opts.panelCollapsed&&this.setPanelCollapsed(!0),this.dockLayoutChrome(),t.buildBuyerControls=i(d);let P=performance.now();if(await this.restoreRememberedHold(),t.restoreHold=i(P),this.destroyed)return this;this.salesClosed&&this.applySalesClosed(),this.syncPrices(),this.syncTray(),this.resumeHostedOrder();let _=this.controller.doc;return this.emitAnalytics("chart_rendered",{renderingTimeMillis:i(e),performanceProfile:t,seatCount:this.allSeats().length,objectCount:_?.objects.length??0,sectionCount:_?.objects.filter(k=>k.type==="section").length??0,view:this.buyerView,eventKey:this.opts.event,chartName:_?.name,floorCount:this.controller.getFloors().length,transport:this.opts.transport?"custom":"pubapi",load:Wn(this.opts.event)?"repeat":"cold"}),this}wireBuyerShell(e){this.refreshOfferAvailability(!1),this.api.availability&&(this.offerVisibilityHandler=()=>{!document.hidden&&!this.destroyed&&this.refreshOfferAvailability(!1)},document.addEventListener("visibilitychange",this.offerVisibilityHandler)),this.observeLayout(e),this.els.zin.addEventListener("click",()=>this.controller.zoomIn()),this.els.zout.addEventListener("click",()=>this.controller.zoomOut()),this.els.zfit.addEventListener("click",()=>this.controller.zoomToFit()),this.els.zfs.addEventListener("click",()=>this.toggleFullscreen()),this.fsChangeHandler=()=>{document.fullscreenElement||this.setFsFallback(!1),this.syncFullscreenButtons(),requestAnimationFrame(()=>this.controller.refitCurrentView())},document.addEventListener("fullscreenchange",this.fsChangeHandler);let t=this.els.sheetHead;if(t){let s=this.els.sheetToggle,n=c=>{e.dataset.sheet=c?"open":"peek",s?.setAttribute("aria-expanded",String(c)),s?.setAttribute("aria-label",c?this.tf("picker.collapseTicketPanel","Collapse ticket panel"):this.tf("picker.openTicketPanel","Open ticket panel"))};n(e.dataset.sheet==="open"),s?.addEventListener("click",c=>{c.stopPropagation(),n(e.dataset.sheet!=="open")}),this.els.peek?.addEventListener("click",c=>{let h=c.target.closest(".sl-sheet-go");h&&(c.stopPropagation(),h.dataset.act==="checkout"?this.handleCta():h.dataset.act==="best"?(this.baReopen=!0,this.baQty=Math.max(1,Math.min(this.baQty,this.maxTickets-this.totalTicketCount())),this.syncTray(),n(!0),this.els.tray?.querySelector(".sl-ba-go")?.focus()):n(!0))});let o=0,a=!1,l=!1;t.addEventListener("pointerdown",c=>{if(c.target.closest?.(".sl-seccard,.sl-sheet-toggle,.sl-sheet-go")){l=!1;return}l=!0,a=!1,o=c.clientY,t.setPointerCapture?.(c.pointerId)}),t.addEventListener("pointermove",c=>{if(!l||a)return;let h=c.clientY-o;h<-18?(n(!0),a=!0):h>18&&(n(!1),a=!0)}),t.addEventListener("pointerup",c=>{l&&!a&&Math.abs(c.clientY-o)<6&&n(e.dataset.sheet!=="open"),l=!1,t.releasePointerCapture?.(c.pointerId)})}let i=()=>{if(this.root?.dataset.layout!=="narrow")return;let s=this.root.getAttribute("data-prices-open")==="true";if(this.root.setAttribute("data-prices-open",String(!s)),this.els.pricesSec?.setAttribute("aria-expanded",String(!s)),!s&&this.root.dataset.sheet!=="open"){this.root.dataset.sheet="open";let n=this.els.sheetToggle;n?.setAttribute("aria-expanded","true"),n?.setAttribute("aria-label","Collapse ticket panel")}};this.els.pricesSec?.addEventListener("click",s=>{s.target.closest("select,button")||i()}),this.els.pricesSec?.addEventListener("keydown",s=>{s.key!=="Enter"&&s.key!==" "||s.target.closest("select,button")||(s.preventDefault(),i())}),this.tipEl=document.createElement("div"),this.tipEl.setAttribute("role","tooltip"),this.tipEl.className="sl-tip",this.els.map.appendChild(this.tipEl),this.els.map.addEventListener("pointerdown",s=>{this.lastMapPoint={x:s.clientX,y:s.clientY},this.lastPointerType=s.pointerType||"mouse";let n=this.els.map.getBoundingClientRect();this.tipPos={x:s.clientX-n.left,y:s.clientY-n.top},this.unpinTooltip()},!0),this.els.map.addEventListener("mousemove",s=>{let n=this.els.map.getBoundingClientRect();this.tipPos={x:s.clientX-n.left,y:s.clientY-n.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()}),this.els.cta.addEventListener("click",()=>{this.handleCta()}),this.els.holdChange?.addEventListener("click",()=>{this.handleChangeSeats()})}observeLayout(e){let t=()=>{let i=e.clientWidth;if(i<=0)return;let s=e.clientHeight,n=i!==this.pickerLayoutSize.width||s!==this.pickerLayoutSize.height;this.pickerLayoutSize={width:i,height:s},this.reportFramedHeight();let o=i<640?"narrow":"wide",a=s<560?"compact":"comfortable";(e.dataset.layout!==o||e.dataset.density!==a)&&(e.dataset.layout=o,e.dataset.density=a,o==="narrow"&&!e.dataset.sheet&&(e.dataset.sheet="peek"),this.dockLayoutChrome()),n&&this.minimap?.refreshMinimap()};this.ro=new ResizeObserver(t),this.ro.observe(e),t(),requestAnimationFrame(t)}async loadChart(e,t,i){let s=performance.now(),n=await this.controller.render(e);return t.loadChartAndStatuses=i(s),this.destroyed?null:n?(Object.assign(t,n.performanceProfile),n):(this.els.boot.innerHTML=`<div class="sl-boot-title">${this.tf("picker.mapDidNotLoad","The seat map didn\u2019t load")}</div><div>${this.tf("picker.checkConnection","Check your connection and try again.")}</div><button type="button" class="sl-boot-retry">${this.tf("picker.accessRetry","Try again")}</button>`,this.els.boot.querySelector("button").addEventListener("click",()=>{let o=this.opts.container,a=this.opts;this.destroy(),new r({...a,container:o}).render()}),null)}resumeHostedOrder(){if(this.checkoutMode!=="hosted")return;let e=fr(this.opts.event);e?.outcome!=="success"||!e.orderId||this.openCheckoutPanel({kind:"resume",orderId:e.orderId})}buildPanelToggle(){if(!this.regions["top-right"])return;let e=document.createElement("button");e.type="button",e.className="sl-side-toggle",e.addEventListener("click",()=>this.setPanelCollapsed(!this.sideCollapsed)),this.sideToggleEl=e,this.regions["top-right"].appendChild(e),this.syncPanelToggle()}syncPanelToggle(){let e=this.sideToggleEl;if(!e)return;let t=this.sideCollapsed;e.setAttribute("aria-expanded",String(!t)),e.setAttribute("aria-label",t?this.tf("picker.showTicketPanel","Show the ticket panel"):this.tf("picker.hideTicketPanel","Hide the ticket panel")),e.title=t?this.tf("picker.showTicketPanel","Show the ticket panel"):this.tf("picker.hideTicketPanel","Hide the ticket panel"),e.innerHTML=t?`<svg viewBox="0 0 24 24"><path d="M15 6l-6 6 6 6"/></svg><span>${this.tf("picker.tickets","Tickets")}</span>`:'<svg viewBox="0 0 24 24"><path d="M9 6l6 6-6 6"/></svg>'}setPanelCollapsed(e){this.destroyed||(this.sideCollapsed=e,this.applyPanelCollapsed(),this.scheduleMotion(()=>this.controller.refitCurrentView(),340))}applyPanelCollapsed(){let e=this.root?.dataset.layout!=="narrow";this.root?.setAttribute("data-side-collapsed",String(this.sideCollapsed)),this.els.side?.toggleAttribute("inert",this.sideCollapsed&&e),this.syncPanelToggle()}dockLayoutChrome(){let e=this.root?.dataset.layout==="narrow";this.applyPanelCollapsed();let t=this.els.zfs,i=this.els.headInfo?.parentElement;t&&i&&t.parentElement!==i&&(t.classList.add("sl-fs-pill"),i.insertBefore(t,this.els.hold??null));let s=this.els.pricesSec;s&&(e?(s.setAttribute("role","button"),s.tabIndex=0,s.setAttribute("aria-expanded",String(this.root?.getAttribute("data-prices-open")==="true"))):(s.removeAttribute("role"),s.removeAttribute("aria-expanded"),s.tabIndex=-1)),this.cbEl&&this.els.zoom?.appendChild(this.cbEl),this.a11yChipsEl&&(e?this.els.rail?.insertBefore(this.a11yChipsEl,this.els.railScroll??null):this.regions["top-left"]?.appendChild(this.a11yChipsEl)),this.lastSection&&this.renderSectionCard(this.lastSection)}buildExtendPrompt(){let e=document.createElement("div");e.className="sl-extend",e.setAttribute("role","status"),e.innerHTML='<span class="sl-extend-txt" data-ref="extendTxt"></span><button type="button" class="sl-extend-btn" data-ref="extendBtn"></button>',(this.regions["bottom-center"]??this.els.map).appendChild(e),this.extendEl=e,this.els.extendTxt=e.querySelector('[data-ref="extendTxt"]'),this.els.extendBtn=e.querySelector('[data-ref="extendBtn"]'),this.els.extendBtn.textContent=this.tf("picker.addTime","Add time"),this.els.extendBtn.addEventListener("click",()=>{this.handleExtend()})}buildBookedOverlay(){let e=document.createElement("div");e.className="sl-booked",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.innerHTML=`<div class="sl-booked-badge"><svg viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg></div><div class="sl-booked-title">${this.tf("picker.allSetTitle","You're all set")}</div><div class="sl-booked-sub" data-ref="bookedSub"></div>`,this.root.appendChild(e),this.bookedEl=e,this.els.bookedSub=e.querySelector('[data-ref="bookedSub"]')}get onGAPromptHook(){return this.opts.onGAPrompt}tf(e,t){return f(e,t)}buildSoldoutOverlay(){if(!this.els.map)return;let e=document.createElement("div");e.className="sl-soldout",e.setAttribute("role","status");let t=(this.controller.doc?.theme?.brandName??this.opts.theme?.brandName??this.els.name?.textContent??this.tf("picker.soldOutEyebrow","This event")).toUpperCase(),i=document.createElement("div");i.className="sl-soldout-eyebrow",i.textContent=t;let s=document.createElement("div");s.className="sl-soldout-title",s.textContent=this.tf("picker.soldOutTitle","Sold out");let n=document.createElement("p");n.className="sl-soldout-copy",n.textContent=this.tf("picker.soldOutCopy","No reserved seats are currently available for this event."),e.append(i,s,n),this.els.map.appendChild(e),this.soldoutEl=e}syncSoldout(e,t){let i=this.controller.getGAAreas().length>0,s=this.isSoldOut(e,t,i);s!==this.soldOut&&(this.soldOut=s,this.soldoutEl?.classList.toggle("on",s))}isSoldOut(e,t,i){return!i&&e.length>0&&e.every(s=>(t[s.key]??0)===0)}setSalesClosed(e){let t=e||!!this.opts.readOnly;this.salesClosed!==t&&(this.salesClosed=t,this.applySalesClosed())}applySalesClosed(){this.salesClosed&&this.tableDialog&&!this.tableDialogHeld&&this.cancelTableDialog();let e=this.els.closedPill;if(e){e.classList.toggle("on",this.salesClosed);let t=this.els.closedPillText??e;t.textContent=this.tf("picker.salesClosedPill","Sales are closed")}this.root?.setAttribute("data-sales-closed",String(this.salesClosed)),this.salesClosed&&this.srEl&&(this.srEl.textContent=this.tf("picker.salesClosedToast","Sales are closed for this event.")),this.syncCta(),this.syncTray()}badgeHidden(e){return!!(this.opts.hideBadge||e?.hideBadge)}buildBadge(e){if(this.badgeHidden(e))return;let t=this.els.foot;if(!t)return;let i=document.createElement("a");i.className="sl-powered",i.href="https://seatlayer.io/?ref=picker",i.target="_blank",i.rel="noopener noreferrer",i.setAttribute("aria-label",this.tf("picker.poweredBy","Powered by SeatLayer"));let s=document.createElement("span");s.className="sl-powered-mark",s.setAttribute("aria-hidden","true"),s.innerHTML=Tt;let n=document.createElement("span");n.textContent=this.tf("picker.poweredBy","Powered by SeatLayer"),i.append(s,n),t.appendChild(i)}buildRegions(){if(!this.els.map)return;let e=["top-left","top-center","top-right","left-rail","bottom-left","bottom-center","bottom-right"];for(let t of e){let i=document.createElement("div");i.className="sl-anchor",i.dataset.region=t,this.els.map.appendChild(i),this.regions[t]=i}}cssVar(e){return this.root?getComputedStyle(this.root).getPropertyValue(e).trim():""}reducedMotion(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}scheduleMotion(e,t){let i=setTimeout(()=>{this.motionTimers.delete(i),this.destroyed||e()},t);this.motionTimers.add(i)}animateOnce(e,t,i=600){!e||this.reducedMotion()||(e.classList.remove(t),e.offsetWidth,e.classList.add(t),this.scheduleMotion(()=>e.classList.remove(t),i))}flashPickedSeat(e){this.reducedMotion()||this.controller.flashSeat(e,this.cssVar("--sl-accent")||"#f4b740")}flashHeldSeats(e){if(this.reducedMotion())return;(e.items??[]).filter(i=>i.objectType!=="ga").map(i=>i.label).slice(0,10).forEach((i,s)=>{let n=this.controller.seatByLabel(i);n&&this.scheduleMotion(()=>this.controller.flashSeat(n.id,this.cssVar("--sl-accent")||"#f4b740"),s*55)})}committedSelection(){let e=this.confirmSeat?.id,t=this.tableDialog&&!this.tableDialogHeld?this.tableDialog.id:null;return this.controller.getSelection().filter(i=>i.id!==e&&i.id!==t)}pendingSelectionCount(){let e=this.hold?.items??[],t=new Set(e.map(s=>s.label));return this.committedSelection().filter(s=>!t.has(s.label)).reduce((s,n)=>s+(n.quantity??1),0)+Ve(this.gaQty,this.hold?.items??[])}heldTicketCount(){return(this.hold?.items??[]).reduce((e,t)=>e+(t.quantity??1),0)}totalTicketCount(){let e=new Set((this.hold?.items??[]).map(i=>i.label)),t=this.committedSelection().filter(i=>!e.has(i.label)).reduce((i,s)=>i+(s.quantity??1),0);return this.heldTicketCount()+t+Ve(this.gaQty,this.hold?.items??[])}updateSelectionCapacity(){let e=new Set((this.hold?.items??[]).map(s=>s.label)),t=this.committedSelection().filter(s=>e.has(s.label)).reduce((s,n)=>s+(n.quantity??1),0),i=Math.max(0,this.maxTickets-this.heldTicketCount()-Ve(this.gaQty,this.hold?.items??[]));this.controller.setMaxSelection(t+i)}syncCta(e=this.lastTrayCount,t=this.pendingSelectionCount()){let i=this.els.cta;if(!i)return;if(this.salesClosed){i.disabled=!0,i.textContent=this.tf("picker.salesClosedCta","Sales closed");return}if(this.confirmSeat||this.tableDialog&&!this.tableDialogHeld){i.disabled=!0,i.textContent=this.tableDialog?this.tf("picker.confirmYourTable","Confirm your table"):this.tf("picker.confirmOrCancelSeat","Confirm or cancel this seat");return}if(this.ctaPhase==="holding"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.securingSeats","Securing your seats\u2026")}`;return}if(this.ctaPhase==="checkout"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.openingCheckout","Opening secure checkout\u2026")}`;return}let s=!this.hold&&this.performanceGroup?.selectionMode==="per_performance"?this.performanceGroup.submissionState?.():null;if(s&&!s.ready){i.disabled=!0,i.textContent=this.tf("picker.completeAllPerformances","Complete all performances ({complete}/{total})").replace("{complete}",String(s.complete)).replace("{total}",String(s.total));return}let n=this.controller.getSelectionValidity(e);if(n&&!n.isValid){i.disabled=!0,i.textContent=hi(n,(o,a)=>this.tf(o,a),!0);return}i.disabled=e===0,i.textContent=this.hold?t?(0,b.t)("picker.secureMoreAndCheckout",{count:t}):this.tf("picker.continueToCheckout","Continue to checkout"):e?this.performanceGroup?this.tf("picker.holdSeatsForAllPerformances","Hold seats for all {count} performances").replace("{count}",String(this.performanceGroup.performanceCount)):this.tf("picker.holdSeatsAndCheckout","Hold seats & checkout"):this.tf("picker.selectSeats","Select seats")}setCtaPhase(e){this.ctaPhase=e,this.syncCta(),this.renderPeek(this.lastTrayCount,this.lastTrayTotal,this.pendingSelectionCount()),e==="checkout"&&this.scheduleMotion(()=>{this.ctaPhase==="checkout"&&(this.ctaPhase="idle",this.syncCta(),this.renderPeek(this.lastTrayCount,this.lastTrayTotal,this.pendingSelectionCount()))},1100)}holdStorageKey(){return`@seatlayer/hold/v1/${encodeURIComponent(this.apiBase)}/${encodeURIComponent(this.opts.event)}`}rememberedHoldId(){if(this.opts.initialHoldId)return this.opts.initialHoldId;if(this.opts.restoreHold===!1||typeof window>"u")return null;try{return window.sessionStorage.getItem(this.holdStorageKey())}catch{return null}}rememberHold(e){if(!(this.opts.restoreHold===!1||typeof window>"u"))try{window.sessionStorage.setItem(this.holdStorageKey(),e.holdId)}catch{}}forgetHold(){if(!(typeof window>"u"))try{window.sessionStorage.removeItem(this.holdStorageKey())}catch{}}async resumeHoldFromServer(e,t){try{let i=await this.controller.resumeHold(e);if(!i)return null;let s={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items};return this.hold=s,this.handedOff=!0,this.bookedShown=!1,this.ctaPhase="idle",this.startHoldTimer(s.expiresAt),this.rememberHold(s),this.syncTray(),this.emitHoldChange(),this.opts.onHoldRestored?.(s,s.seats??[],this.buildHandoff(s)),t&&this.toast(this.tf("picker.heldTicketsRestored","Your held tickets have been restored."),"success"),s}catch(i){let s=i?.status;return s===404||s===409?this.forgetHold():this.opts.onError?.(i),null}}async restoreRememberedHold(){let e=this.rememberedHoldId();e&&await this.resumeHoldFromServer(e,!0)}activeFloorObjects(){let e=this.controller.doc;if(!e)return[];let t=e.floors;if(t?.length){let i=this.controller.getActiveFloorId();return(t.find(s=>s.id===i)??t[0]).objects??[]}return e.objects??[]}buildMinimap(){this.els.map&&(this.minimap=Ns({controller:this.controller,root:()=>this.root,cssVar:e=>this.cssVar(e),focusedSectionLabel:()=>this.lastSection?.label},this.regions["bottom-left"]??this.els.map))}catPrice(e){let t=e.tiers?.length?e.tiers[0].price:e.price;return t===void 0||!e.key?t:this.paidPrice(e.key,e.tiers?.[0]?.id??null,t)}catPriceRange(e){let t=e.tiers?.length?e.tiers.map(i=>this.paidPrice(e.key,i.id??null,i.price)):e.price==null?[]:[this.paidPrice(e.key,null,e.price)];if(e.key)for(let i of this.pricesByChannel.values())for(let s of i)s.categoryKey===e.key&&t.push(s.price);return t.length?{min:Math.min(...t),max:Math.max(...t)}:void 0}buildPriceFilter(){if(!this.els.prices||!this.els.pricesSec)return;let e=Ts(this.controller.doc?.categories??[],this.legendDeps());if(e.length<2)return;let t=document.createElement("select");t.className="sl-price-select",t.setAttribute("aria-label",this.tf("picker.filterAndFocusByPrice","Filter and focus seats by price"));let i=document.createElement("option");i.value="all",i.textContent=this.tf("picker.allPrices","All prices"),t.appendChild(i);for(let s of e){let n=document.createElement("option");n.value=s.id,n.textContent=s.label,t.appendChild(n)}this.els.pricesSec.appendChild(t),t.addEventListener("change",()=>{let n=e.find(o=>o.id===t.value)?.keys??null;this.focusedCatKey=null,this.priceBandKeys=n?new Set(n):null,this.controller.setCategoryFilter(n),this.controller.focusCategoryFilter(n),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)})}buildArenaChrome(){let e=this.controller.doc;if(!e||!this.els.map)return;let t=e.objects.some(i=>i.type==="section")||(e.floors??[]).some(i=>i.objects.some(s=>s.type==="section"));if(this.canOffer3d()){let i=document.createElement("div");i.className="sl-projection",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.venueView","Venue view")),i.innerHTML=`<button type="button" data-view="map" aria-pressed="true" title="${this.tf("picker.flat2dMap","Flat 2D map")}">${this.tf("picker.map","Map")}</button><button type="button" data-view="venue3d" aria-pressed="false" title="${this.tf("picker.interactive3dVenueView","Interactive 3D venue view")}">3D</button>`,i.querySelectorAll("button").forEach(s=>{s.addEventListener("click",()=>{this.setBuyerView(s.dataset.view)})}),this.regions["top-right"].appendChild(i),this.projectionEl=i,this.syncProjection()}if(t){let i=[...e.objects,...(e.floors??[]).flatMap(h=>h.objects)],s=new Set((e.zones??[]).map(h=>h.id)),o=i.some(h=>h.type==="section"&&typeof h.zone=="string"&&s.has(h.zone))?["zones","sections","seats"]:["sections","seats"],a=document.createElement("div");a.className="sl-rungs on",a.setAttribute("role","group"),a.setAttribute("aria-label",(0,b.t)("picker.zoomLevel"));let l={zones:(0,b.t)("picker.rungLabel.zones"),sections:(0,b.t)("picker.rungLabel.sections"),seats:(0,b.t)("picker.rungLabel.seats")},c={zones:(0,b.t)("picker.rungTip.zones"),sections:(0,b.t)("picker.rungTip.sections"),seats:(0,b.t)("picker.rungTip.seats")};a.innerHTML=o.map(h=>`<button type="button" data-rung="${h}" title="${c[h]}" aria-pressed="false">${l[h]}</button>`).join(""),a.querySelectorAll("button").forEach(h=>{h.addEventListener("click",()=>{let p=h.dataset.rung;this.controller.setRung(p),p==="seats"&&this.collapseSectionCard()})}),this.regions["top-center"].appendChild(a),this.rungsEl=a,this.syncRung()}if(this.controller.isMultiFloor()){let i=Ds({floors:this.controller.getFloors(),tf:(s,n)=>this.tf(s,n),onChoose:s=>{s===""?this.controller.setFloorOverview(!0):this.controller.setFloor(s),this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()}});this.regions["left-rail"].appendChild(i),this.floorsEl=i,this.syncFloors()}}syncRung(){let e=this.controller.getRung(),t=e==="seats"||!!this.controller.getFocusedSection?.();this.root&&(this.root.dataset.zoomed=String(t)),this.minimap?.setAutoOpen(!1),this.rungsEl&&this.rungsEl.querySelectorAll("button").forEach(i=>{let s=i.dataset.rung===e;i.classList.toggle("on",s),i.setAttribute("aria-pressed",String(s))})}syncProjection(){this.projectionEl&&this.projectionEl.querySelectorAll("button").forEach(e=>{let t=e.dataset.view===this.buyerView;e.classList.toggle("on",t),e.setAttribute("aria-pressed",String(t))})}canOffer3d(){return this.opts.enable3D===!1||!this.controller.doc||!es()?!1:this.allSeats().length<=this.max3dSeats()}max3dSeats(){let e=this.opts.max3DSeats;if(typeof e=="number"&&e>0)return e;let t=globalThis.navigator;return(t?.hardwareConcurrency??8)<=4||(t?.deviceMemory??8)<=4||(globalThis.matchMedia?.("(pointer: coarse)").matches??!1)?vr/2:vr}syncFloors(){Fs(this.floorsEl,this.controller.getActiveFloorId(),this.controller.isFloorOverview())}showSectionCard(e){if(this.lastSection=e,this.secCardEl?.remove(),this.secCardEl=null,!e){this.minimap?.refreshMinimap();return}this.secCardCollapsed=this.controller.getRung()==="seats",this.secCardShownAt=Date.now(),this.renderSectionCard(e),this.minimap?.refreshMinimap()}sectionNeighbours(e){let t=this.activeFloorObjects().filter(s=>s.type==="section"&&!this.controller.isSectionClosed(s.id)&&this.controller.getSectionSeatCount(s.id)>0);if(t.length<2)return null;let i=t.findIndex(s=>s.id===e);return i<0?null:{previous:t[(i-1+t.length)%t.length],next:t[(i+1)%t.length]}}wireSectionNavigation(e){e.querySelectorAll("[data-section-nav]").forEach(t=>{t.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation();let s=t.dataset.sectionNav;s&&this.controller.focusSection(s)})})}renderSectionCard(e){if(!this.els.map)return;this.secCardEl?.remove();let t=e.categories.length?e.categories.map(d=>{let m=this.controller.doc?.categories.find(g=>g.key===d.key);return m?this.catPriceRange(m):{min:d.priceMin,max:d.priceMax}}).filter(d=>d!=null):[{min:e.priceMin,max:e.priceMax}],i=Math.min(...t.map(d=>d.min)),s=Math.max(...t.map(d=>d.max)),n=i===s?this.money(i):`${this.money(i)}\u2013${this.money(s)}`,o=(0,b.tCount)("picker.seatsLeftInSection",e.seatsLeft),a=`<button type="button" class="sl-seccard-x" aria-label="${(0,b.t)("picker.closeSectionSummary")}">\u2715</button>`,l=ds(this.sectionNeighbours(e.id)),c=document.createElement("div"),h=this.root?.dataset.layout==="narrow",p={label:e.label,color:e.color,leftLabel:o,nav:l,close:a};if(h)c.className="sl-seccard strip on",c.setAttribute("role","status"),c.setAttribute("aria-label",(0,b.t)("picker.sectionSummaryAria",{label:e.label})),c.innerHTML=ai(p),this.wireSectionNavigation(c),c.querySelector(".sl-seccard-x").addEventListener("click",()=>this.controller.overview()),this.els.map.appendChild(c);else if(this.secCardCollapsed)c.className="sl-seccard mini on",c.setAttribute("role","button"),c.setAttribute("aria-label",(0,b.t)("picker.sectionSummaryAria",{label:e.label})),c.innerHTML=ai(p),this.wireSectionNavigation(c),c.addEventListener("click",d=>{d.target.closest(".sl-seccard-x")||(this.secCardCollapsed=!1,this.secCardShownAt=Date.now(),this.renderSectionCard(e))}),c.querySelector(".sl-seccard-x").addEventListener("click",()=>this.controller.overview()),(this.regions["top-center"]??this.els.map).appendChild(c);else{c.className="sl-seccard on",c.setAttribute("role","dialog"),c.setAttribute("aria-label",(0,b.t)("picker.sectionSummaryAria",{label:e.label}));let d=e.categories.map(m=>{let g=this.controller.doc?.categories.find(w=>w.key===m.key),x=g?this.catPriceRange(g):{min:m.priceMin,max:m.priceMax};return gs({label:m.label,color:m.color,dim:this.priceBandKeys!=null&&!this.priceBandKeys.has(m.key),rangeLabel:x&&x.min!==x.max?`${this.money(x.min)}\u2013${this.money(x.max)}`:this.money(x?.min??m.price)})}).join("");c.innerHTML=fs({...p,priceLabel:n,showPrice:e.categories.length>0,zoneLabel:e.zoneLabel,entrance:e.entrance?`${(0,b.t)("picker.entrance")} ${e.entrance}`:void 0,mix:d,overviewLabel:(0,b.t)("picker.overview"),hint:(0,b.t)("picker.tapSeatHint")}),this.wireSectionNavigation(c),c.querySelector(".sl-seccard-x").addEventListener("click",()=>this.controller.overview()),c.querySelector(".sl-seccard-overview").addEventListener("click",()=>this.controller.overview()),(this.regions["top-center"]??this.els.map).appendChild(c)}this.secCardEl=c}collapseSectionCard(){!this.secCardEl||this.secCardCollapsed||!this.lastSection||this.root?.dataset.layout!=="narrow"&&(this.secCardCollapsed=!0,this.renderSectionCard(this.lastSection))}sectionCardOnView(){if(!(!this.secCardEl||this.secCardCollapsed||!this.lastSection)&&this.root?.dataset.layout!=="narrow"){if(this.controller.getRung()==="seats"){this.collapseSectionCard();return}if(Date.now()-this.secCardShownAt<1400){this.sectionCardCoverage()>.25&&this.collapseSectionCard();return}this.collapseSectionCard()}}sectionCardCoverage(){let e=this.secCardEl,t=this.lastSection;if(!e||!t||!this.els.map)return 0;let i=this.activeFloorObjects().find(v=>v.type==="section"&&v.id===t.id)?.outline;if(!i||i.length<3)return 0;let s=i.map(v=>this.controller.worldToScreen(v)),n=s.map(v=>v.x),o=s.map(v=>v.y),a=Math.min(...n),l=Math.min(...o),c=Math.max(...n)-a,h=Math.max(...o)-l;if(c<=0||h<=0)return 0;let p=this.els.map.getBoundingClientRect(),d=e.getBoundingClientRect(),m=d.left-p.left,g=d.top-p.top,x=Math.max(0,Math.min(m+d.width,a+c)-Math.max(m,a)),w=Math.max(0,Math.min(g+d.height,l+h)-Math.max(g,l));return x*w/(c*h)}markedSeatAnnouncement(e){let t=mi(this.controller.getRenderer()?.getSeatMark?.(e.id),this.performanceGroup?.nights?.());return nr(t,e.displayLabel??e.label,this.opts.locale)}announceSeat(e){if(!this.srEl)return;if(!e){this.srEl.textContent="";return}let t=this.markedSeatAnnouncement(e);if(t){this.srEl.textContent=t;return}let i=this.controller.doc?.categories.find(m=>m.key===e.categoryKey),s=this.controller.getStatus(e.id)??"free",n=s==="free"?this.tf("picker.statusAvailable","available"):s==="held"?this.tf("picker.statusOnHold","on hold"):this.tf("picker.statusTaken2","taken"),o=i?this.catPriceRange(i):void 0,a=o?o.min===o.max?this.money(o.min):`${this.money(o.min)}\u2013${this.money(o.max)}`:void 0,l=this.controller.tableSelection(e.id),c=l??this.controller.seatDetails(e.id),h=dt(c),p=c?.rowLabel??c?.displayLabel??e.displayLabel??e.label,d=l?`${h} ${p}, ${l.bookingMode==="variable"?(0,b.t)("picker.minToMaxGuests",{min:l.minOccupancy,max:l.maxOccupancy}):(0,b.t)("picker.capacityGuests",{count:l.capacity})}`:c?.objectType==="booth"?`${h} ${p}`:c?.objectType==="table"?`${h} ${p}, ${(0,b.t)("picker.seatNumberLower",{label:c.seatNumber??e.label})}`:(0,b.t)("picker.seatLabel",{label:c?.displayLabel??e.displayLabel??e.label});this.srEl.textContent=`${d}, ${i?.label??e.categoryKey}${a?`, ${a}`:""}, ${n}`}showTableDialog(e,t,i){this.dismissTableDialog(!1),this.tableDialog={...e},this.tableDialogHeld=t,this.tableDialogReturnFocus=i??document.activeElement;let s=this.controller.doc?.categories.find(a=>a.key===e.categoryKey),n=e.bookingMode==="variable",o=document.createElement("div");o.className="sl-table-scrim",o.innerHTML=vs(e,{variable:n,held:t,typeWord:dt(e),categoryLabel:s?.label??e.categoryKey,unitPrice:this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label))}),this.root.appendChild(o),this.tableDialogEl=o,this.renderTableDialogState(),o.querySelectorAll("[data-table-step]").forEach(a=>{a.addEventListener("click",()=>{if(!this.tableDialog)return;let l=Math.max(this.tableDialog.minOccupancy,Math.min(this.tableDialog.maxOccupancy,this.tableDialog.quantity+Number(a.dataset.tableStep)));this.tableDialog={...this.tableDialog,quantity:l},this.renderTableDialogState()})}),o.querySelector(".sl-table-cancel").addEventListener("click",()=>this.cancelTableDialog()),o.querySelector(".sl-table-confirm").addEventListener("click",()=>{this.confirmTableDialog()}),o.addEventListener("mousedown",a=>{a.target===o&&this.cancelTableDialog()}),o.addEventListener("keydown",a=>{if(a.key!=="Tab")return;let l=[...o.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!l.length)return;let c=l[0],h=l[l.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),h.focus()):!a.shiftKey&&document.activeElement===h&&(a.preventDefault(),c.focus())}),requestAnimationFrame(()=>o.querySelector(n?'[data-table-step="-1"]':".sl-table-confirm")?.focus())}renderTableDialogState(){let e=this.tableDialog,t=this.tableDialogEl;if(!e||!t)return;let i=t.querySelector("output[data-table-qty]");i&&(i.value=String(e.quantity));let s=t.querySelector("input[data-table-qty]");s&&(s.value=String(e.quantity)),t.querySelectorAll("[data-table-step]").forEach(a=>{let l=Number(a.dataset.tableStep);a.disabled=l<0?e.quantity<=e.minOccupancy:e.quantity>=e.maxOccupancy});let n=this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label),o=t.querySelector("[data-table-total]");o&&(o.textContent=this.money(n*e.quantity))}async confirmTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;if(!e)return;let i=this.tableDialogEl?.querySelector(".sl-table-confirm");if(i&&(i.disabled=!0,i.textContent=t?this.tf("picker.updatingEllipsis","Updating\u2026"):this.tf("picker.selectingEllipsis","Selecting\u2026")),t){try{let s=await this.controller.replaceTableQuantity(e.label,e.quantity,this.opts.holdTtlMs);if(!s){this.toast(this.tf("picker.guestCountCouldNotBeSecured","That guest count could not be secured. Your current table hold is unchanged."),"warning"),this.renderTableDialogState(),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"));return}this.hold={holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items},this.startHoldTimer(s.expiresAt),this.dismissTableDialog(),this.syncTray(),this.emitHoldChange(),this.toast((0,b.t)("picker.tableUpdatedForGuests",{label:e.label,count:e.quantity}),"success")}catch(s){this.opts.onError?.(s),this.toast(this.tf("picker.guestCountNoLongerAvailable","That guest count is no longer available. Your current hold is unchanged."),"error"),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"))}return}if(!this.controller.setTableQuantity(e.label,e.quantity)){i&&(i.disabled=!1,i.textContent=e.bookingMode==="variable"?this.tf("picker.selectTable","Select table"):this.tf("picker.selectWholeTable","Select whole table"));return}this.dismissTableDialog(),this.collapseSectionCard(),this.syncTray()}cancelTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;this.dismissTableDialog(),e&&!t&&this.controller.deselect(e.physicalSeatIds)}dismissTableDialog(e=!0){let t=this.tableDialogReturnFocus;this.tableDialogEl?.remove(),this.tableDialogEl=null,this.tableDialog=null,this.tableDialogHeld=!1,this.tableDialogReturnFocus=null,e&&requestAnimationFrame(()=>(t?.isConnected?t:this.root)?.focus())}showConfirm(e){let t=this.confirmSeat?.id;this.confirmEl?.remove(),this.confirmEl=null,this.confirmSeat=e,this.root?.setAttribute("data-confirming","true"),this.els.side?.toggleAttribute("inert",!0),Object.values(this.regions).forEach(w=>w.toggleAttribute("inert",!0)),this.controller.setSelectionFocus(e.id),t&&t!==e.id&&this.controller.deselect([t]),this.tipEl&&(this.tipEl.style.display="none");let i=this.controller.seatDetails(e.id),s=this.controller.doc?.categories.find(w=>w.key===e.categoryKey),n=i?.price??(s?.tiers?.length?s.tiers[0].price:s?.price),o=n!=null?this.paidPrice(e.categoryKey,i?.tierId??s?.tiers?.[0]?.id??null,n,e.label):void 0,a=us(i,e.displayLabel??e.label,dt(i)),l=i?.tiers??s?.tiers??[],c=i?.tierId??l[0]?.id,h=ms(l,c,w=>this.money(this.paidPrice(e.categoryKey,w.id,w.price,e.label))),p=this.buyerView==="venue3d",d=document.createElement("div");d.className="sl-confirm",d.setAttribute("role","dialog"),d.setAttribute("aria-label",(0,b.t)("picker.confirmSeatLabel",{label:e.label}));let m=s?.color??"#6e7bff",g=di(m,this.cssVar("--sl-surface")||"#1a2234",.76)??m;d.style.setProperty("--sl-cat",m),d.style.setProperty("--sl-cat-ink",ke(g,"#172033","#ffffff")),d.innerHTML=bs({identityFields:a,categoryColor:s?.color??"#6e7bff",categoryLabel:String(i?.categoryLabel??s?.label??e.categoryKey),priceLabel:o!=null?this.money(o):"",tierChoices:h,wheelchair:cs(i?.wheelchairSpaceType),commercial:ls(e.commercial),thumb:this.seatViewEnabled()&&this.buyerView!=="venue3d"?this.confirmThumbHtml(e):"",inspect:p?`${hs(e,`${i?.displayLabel??e.displayLabel??e.label} \xB7 ${o==null?this.tf("picker.priceNotSupplied","Price not supplied"):this.money(o)}`,p)}<div class="sl-confirm-inspect-row">${ps(e,p?this.view3dCompareSeatIds:null)}${oi(this.canOffer3d(),p)}</div>`:oi(this.canOffer3d(),p),cancelLabel:(0,b.t)("common.cancel"),selectLabel:this.tf("picker.select","Select")}),this.els.map.appendChild(d),this.confirmEl=d;let x=d.querySelector(".sl-confirm-thumb");if(x&&e.viewUrl){let w=e.viewMeta?.previewUrl??e.viewUrl;this.buyerAssetUrls.resolve(w).then(v=>{v&&d.isConnected&&this.confirmEl===d&&(x.src=v)}).catch(v=>this.opts.onError?.(v))}this.reanchorConfirm(),d.querySelector(".sl-confirm-view")?.addEventListener("click",()=>{this.openSeatView(e)}),d.querySelector(".sl-confirm-confidence")?.addEventListener("click",w=>{this.openSeatConfidencePassport(e,w.currentTarget instanceof HTMLElement?w.currentTarget:null)}),d.querySelector(".sl-confirm-compare")?.addEventListener("click",()=>this.saveView3dComparisonSeat(e)),d.querySelectorAll("[data-confirm-tier]").forEach(w=>{w.addEventListener("click",()=>{let v=w.dataset.confirmTier,R=l.find(P=>P.id===v);if(!R)return;this.controller.setSeatTier(e.id,R.id),d.querySelectorAll("[data-confirm-tier]").forEach(P=>{P.setAttribute("aria-pressed",String(P===w))});let S=d.querySelector(".sl-confirm-price");S&&(S.textContent=this.money(this.paidPrice(e.categoryKey,R.id,R.price,e.label))),this.reanchorConfirm()})}),d.querySelector(".sl-confirm-3d")?.addEventListener("click",()=>{this.buyerView==="venue3d"?(this.dismissConfirm(),this.view3dHandle?.flyToSeat(e.id)):(this.view3dReturnSeat=e,this.dismissConfirm(),this.enter3d(e.id))}),d.querySelector(".sl-confirm-add").addEventListener("click",()=>this.commitConfirm()),d.querySelector(".sl-confirm-cancel").addEventListener("click",()=>this.cancelConfirm()),requestAnimationFrame(()=>d.querySelector(".sl-confirm-add")?.focus())}reanchorConfirm(){if(!this.confirmEl||!this.confirmSeat||this.root?.dataset.view3d==="on")return;let e=this.controller.worldToScreen({x:this.confirmSeat.x,y:this.confirmSeat.y});if(this.root?.dataset.layout==="narrow")return;let t=this.els.map.clientWidth,i=this.els.map.clientHeight,s=this.confirmEl.offsetWidth||276,n=this.confirmEl.offsetHeight||230,o=s/2+12,a=Math.max(o,Math.min(t-o,e.x)),l=e.y+n+24<=i,c=e.y<n+24&&l;this.confirmEl.dataset.placement=c?"below":"above",this.confirmEl.style.left=`${a}px`,this.confirmEl.style.top=`${Math.max(8,Math.min(i-8,e.y))}px`}dismissConfirm(){this.confirmEl?.remove(),this.confirmEl=null,this.confirmSeat=null,this.root?.removeAttribute("data-confirming"),Object.values(this.regions).forEach(e=>e.toggleAttribute("inert",!1)),this.applyPanelCollapsed(),this.controller.setSelectionFocus(null)}commitConfirm(){this.confirmSeat&&(this.dismissConfirm(),this.collapseSectionCard(),this.syncTray(),this.syncSelectionTo3d())}cancelConfirm(){let e=this.confirmSeat;e&&(this.controller.deselect([e.id]),this.confirmSeat&&this.dismissConfirm(),this.syncSelectionTo3d(),this.root?.focus({preventScroll:!0}))}closeConfirm(){this.dismissConfirm()}seatViewEnabled(){return this.opts.seatView!==!1}allSeats(){return this.allSeatsCache||(this.allSeatsCache=[...this.controller.getExpandedSeats()]),this.allSeatsCache}async openSeatView(e){if(!this.root||!this.seatViewEnabled())return;let t=++this.seatViewGen,i=this.controller.doc,s=this.controller.getActiveFloorId(),n=e.focalPoint??i?.floors?.find(p=>p.id===s)?.focalPoint??i?.focalPoint??{x:0,y:0},o,a,l=!1;if(e.viewUrl){let p,d=null;try{let g=e.viewMeta?.previewUrl;g&&g!==e.viewUrl?(d=await this.buyerAssetUrls.resolve(g),p=e.viewUrl):p=await this.buyerAssetUrls.resolve(e.viewUrl)}catch(g){t===this.seatViewGen&&this.opts.onError?.(g);return}if(t!==this.seatViewGen||!p||e.viewMeta?.previewUrl&&e.viewMeta.previewUrl!==e.viewUrl&&!d||!this.root||!this.seatViewEnabled())return;let m={url:p,...d?{previewUrl:d}:{},...e.viewMeta?.sourceWidth!==void 0?{sourceWidth:e.viewMeta.sourceWidth}:{},...e.viewMeta?.sourceHeight!==void 0?{sourceHeight:e.viewMeta.sourceHeight}:{},...e.viewMeta?.previewWidth!==void 0?{previewWidth:e.viewMeta.previewWidth}:{},...e.viewMeta?.previewHeight!==void 0?{previewHeight:e.viewMeta.previewHeight}:{},...e.viewMeta?.variants?.length?{variants:e.viewMeta.variants}:{},...e.viewMeta?.coverage?{coverage:e.viewMeta.coverage}:{},...e.viewMeta?.capturedAt?{capturedAt:e.viewMeta.capturedAt}:{},...e.viewMeta?.sourceLabel?{sourceLabel:e.viewMeta.sourceLabel}:{}};o=m,a=(0,pt.seatViewDisclosure)(m),l=(0,pt.isAuthoredSeatView)(m)}else{let p;try{let{generateSeatPanorama:d}=await is();p=d(e,n,this.allSeats())}catch(d){t===this.seatViewGen&&this.opts.onError?.(d);return}if(t!==this.seatViewGen||!this.root||!this.seatViewEnabled())return;o={url:p.url,generated:!0},a=(0,b.t)("picker.illustrationCaption",{m:p.distanceM})}this.closeSeatView(!1);let c=(0,b.t)("picker.viewFromSeat",{label:e.label}),h=zs({root:this.root,source:o,caption:a,real:l,closeLabel:this.tf("picker.close","Close"),dragHint:this.tf("picker.dragToLookAround","Drag to look around \xB7 scroll to zoom"),viewFromSeatLabel:c,real360Label:(0,b.t)("picker.real360"),previewLabel:(0,b.t)("picker.preview"),resolveAsset:p=>this.buyerAssetUrls.resolve(p),onClose:()=>this.closeSeatView()});this.viewEl=h.element,this.viewCleanup=()=>h.dispose()}closeSeatView(e=!0){e&&(this.seatViewGen+=1),this.viewCleanup?.(),this.viewCleanup=null,this.viewEl?.remove(),this.viewEl=null}money(e){let t=this.opts.pricing?.formatter;if(t)return t(e,this.currency);let i=Number.isInteger(e);return(0,b.formatMoney)(e,this.currency,{locale:this.opts.locale,fallback:(s,n)=>`${s} ${n}`,...i?{minimumFractionDigits:0,maximumFractionDigits:0}:{}})}scheduleOfferBoundary(e){if(this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerBoundaryTimer=null,!this.api.availability||this.destroyed)return;let t=Date.now(),i=Hs(e,t);if(i==null)return;let s=6*36e5,n=Math.min(Math.max(i-t+1e3,1e3),s);this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},n)}scheduleOfferRefresh(e){!this.api.availability||this.destroyed||(this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerRefreshTimer=setTimeout(()=>{this.offerRefreshTimer=null,this.refreshOfferAvailability(e)},e?180:0))}async refreshOfferAvailability(e){if(!(!this.api.availability||this.destroyed))try{let t=await this.api.availability(this.opts.event,e);if(this.destroyed)return;let i=Ot(t);if(!i)return;this.offerAvailability=i,this.applyChannelPricing(i.channelPricing),this.scheduleOfferBoundary(i);let s=It(i),n={...this.hostPricing?.prices??{},...s},o=Object.keys(n).length>0||this.hostPricing?.formatter?{prices:n,...this.hostPricing?.formatter?{formatter:this.hostPricing.formatter}:{}}:void 0;this.setPricing(o),this.syncOffer(),this.opts.onOfferAvailabilityChange?.(i)}catch{!this.destroyed&&!this.offerBoundaryTimer&&!document.hidden&&(this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},3e4))}}offerPrice(e){return e?this.offerAvailability?.prices.find(t=>t.categoryKey===e)??null:null}applyChannelPricing(e){this.channelByObject.clear(),this.pricesByChannel.clear();for(let t of e?.channels??[])this.pricesByChannel.set(t.channelId,t.priceOverrides);for(let t of e?.objects??[])this.pricesByChannel.has(t.channelId)&&this.channelByObject.set(t.label,t.channelId)}syncOffer(){let e=this.els.offer;if(!e)return;let t=this.offerAvailability,i=t?.release??null,s=i?null:t?.upcoming??null;if(!t||t.state==="closed"||t.state==="sold-out"||!i&&!s){e.classList.remove("has"),e.replaceChildren();return}let n=i??s,o=document.createElement("div");o.className="sl-offer-main";let a=document.createElement("div");a.className="sl-offer-copy";let l=document.createElement("span");l.className="sl-offer-kicker",l.textContent=i?this.tf("picker.currentTicketOffer","Current ticket offer"):this.tf("picker.upcomingTicketOffer","Upcoming ticket offer");let c=document.createElement("strong");c.className="sl-offer-name",c.textContent=n.name||(i?this.tf("picker.currentOffer","Current offer"):this.tf("picker.scheduledOffer","Scheduled offer"));let h=document.createElement("span");h.className="sl-offer-line";let p=[];i&&t.fromPrice!=null&&p.push(this.money(t.fromPrice/100)),i&&n.remaining!=null&&p.push((0,b.t)("picker.offerRemainingAvailable",{count:n.remaining})),i&&n.endsAt!=null&&p.push((0,b.t)("picker.offerUntil",{time:Mt(n.endsAt,this.eventTimezone,this.opts.locale)})),s?.startsAt!=null&&p.push((0,b.t)("picker.offerStarts",{time:Mt(s.startsAt,this.eventTimezone,this.opts.locale)})),h.textContent=p.join(" \xB7 "),a.append(l,c,h);let d=document.createElement("details");d.className="sl-offer-info";let m=document.createElement("summary");m.setAttribute("aria-label",(0,b.t)("picker.howOfferWorks",{name:c.textContent??""})),m.textContent="i";let g=document.createElement("div");g.className="sl-offer-detail",g.textContent=i?this.tf("picker.offerDetailActive","This price applies automatically to eligible seats. Tickets in active carts temporarily reduce the available quantity; released or expired holds return it. When the offer ends, the next matching offer or normal ticket price takes over."):this.tf("picker.offerDetailUpcoming","Tickets are available at their normal price now. This scheduled offer will apply automatically to eligible seats when it starts."),d.append(m,g),o.append(a,d),e.replaceChildren(o),e.classList.add("has")}paidPrice(e,t,i,s){let n=s?this.channelByObject.get(s):void 0;if(n&&e){let a=this.pricesByChannel.get(n)?.find(l=>l.categoryKey===e&&l.tierId===(t??null));if(a)return a.price}let o=e?this.opts.pricing?.prices?.[e]:void 0;return o===void 0?i:typeof o=="number"?o:t&&o.tiers?.[t]!==void 0?o.tiers[t]:o.base??i}legendDeps(){return{colorOf:e=>this.controller.getRenderer()?.categoryDisplayColor?.(e.key)??e.color,rangeOf:e=>this.catPriceRange(e),priceOf:e=>this.catPrice(e),offerOf:e=>this.offerPrice(e),money:e=>this.money(e),esc:F}}syncPriceRail(e,t){let i=this.els.railScroll,s=e.length>1;this.els.rail?.classList.toggle("has",s||!!this.a11yChipsEl?.children.length),i&&(i.innerHTML=s?Es({...this.legendDeps(),categories:e,left:t,activeKey:this.focusedCatKey,soldOutWord:this.tf("picker.soldOut","Sold out")}):"",i.querySelectorAll(".sl-rc").forEach(n=>{n.addEventListener("click",()=>this.focusCategory(n.dataset.cat??""))}),this.railEdgesBound||(this.railEdgesBound=!0,i.addEventListener("scroll",()=>li(i),{passive:!0})),requestAnimationFrame(()=>li(i)))}syncPrices(){let e=this.controller.doc;if(!e||!this.els.prices)return;let t=this.controller.categoryAvailability(),i=e.categories.filter(l=>!l.notForSale);if(this.narrateAvailability(i,t),this.syncSoldout(i,t),this.suppressPricing){this.els.prices.replaceChildren(),this.els.pricesSec?.remove(),this.els.pricesHint?.remove();return}this.syncPriceRail(i,t);let s=5,n=i.length-s,o=n>1&&!this.pricesExpanded,a=o?i.slice(0,s):i;this.els.prices.classList.toggle("sl-expanded",n>1&&this.pricesExpanded),this.els.prices.innerHTML=Cs({...this.legendDeps(),categories:a,left:t,collapsed:o,activeKey:this.focusedCatKey,bandKeys:this.priceBandKeys,leftCount:l=>(0,b.tCount)("picker.leftCount",l),titleFor:(l,c)=>c?this.tf("picker.showAllSeats","Show all seats"):(0,b.t)("picker.showLabelSeatsOnMap",{label:l.label}),moreLabel:n>1?o?(0,b.t)("picker.showAllTicketTypes",{count:i.length}):this.tf("picker.showFewer","Show fewer"):null,status:{legend:this.tf("picker.seatStatusLegend","Seat status legend"),held:this.tf("picker.temporarilyHeld","Temporarily held"),sold:this.tf("picker.sold","Sold")}}),this.els.prices.querySelectorAll(".sl-price-row").forEach(l=>{l.addEventListener("mouseenter",()=>this.controller.getRenderer()?.setCategoryHighlight?.(l.dataset.cat??null)),l.addEventListener("mouseleave",()=>this.controller.getRenderer()?.setCategoryHighlight?.(null));let c=()=>this.focusCategory(l.dataset.cat??"");l.addEventListener("click",c),l.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),c())})}),this.els.prices.querySelector(".sl-price-more")?.addEventListener("click",()=>{this.pricesExpanded=!this.pricesExpanded,this.syncPrices()})}focusCategory(e){if(!e)return;let t=this.focusedCatKey===e?null:e;this.focusedCatKey=t,this.priceBandKeys=t?new Set([t]):null;let i=this.els.pricesSec?.querySelector(".sl-price-select");i&&(i.value="all"),this.controller.setCategoryFilter(t?[t]:null),this.controller.focusCategoryFilter(t?[t]:null),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)}narrateAvailability(e,t){let i=this.els.liveText,s=this.lastCatAvail;this.lastCatAvail={...t};let n=this.controller.getActiveFloorId();if(n!==this.lastAvailFloorId&&(this.lastAvailFloorId=n,this.availQuietUntil=performance.now()+2e3),!(!i||!s||performance.now()<this.availQuietUntil))for(let o of e){let a=s[o.key],l=t[o.key]??0;if(a===void 0||l>=a)continue;let c=a-l;i.textContent=(0,b.tCount)("picker.seatsJustTakenInCategory",c,{label:o.label,left:l}),this.els.live?.classList.remove("on"),this.els.live?.offsetWidth,this.els.live?.classList.add("on"),this.liveTimer&&clearTimeout(this.liveTimer),this.liveTimer=setTimeout(()=>this.els.live?.classList.remove("on"),8e3);return}}evictTakenSelections(){let e=new Set([...this.controller.currentHold()?.labels??[],...this.holdingLabels]),t=this.controller.getSelection().filter(i=>!e.has(i.label)&&(this.controller.getStatus(i.id)??"free")!=="free");t.length&&(this.controller.deselect(t.map(i=>i.id)),this.toast((0,b.t)("picker.seatJustTakenByAnother",{label:t[0].label}),"error"))}syncTray(){if(!this.els.tray)return;this.updateSelectionCapacity();let e=this.committedSelection(),t=this.controller.getGAAreas(),i=this.hold?.items??[],s=[],n=new Set;if(!this.salesClosed){let u=this.performanceGroup?.nightSummary?.()??[];u.length&&s.push(sr(u,{title:this.tf("picker.group.yourSeatsByNight","Your seats by night"),empty:this.tf("picker.group.noSeatsChosenYet","No seats yet")}));let C=this.performanceGroup?.selectionModeSwitch;C&&s.push(`<button type="button" class="sl-pg-switch" data-pg-switch-mode>${F(C.label)}</button>`)}s.push(Qs({salesClosed:this.salesClosed,hasPicks:e.length>0||i.length>0,hasGaAreas:t.length>0,groupMode:this.performanceGroup?this.performanceGroup.selectionMode??"same_seat":null,seated:!!this.controller.doc?.objects?.some(u=>u.type!=="gaArea"),whenText:this.eventWhenText?String(this.eventWhenText):void 0}));let o=!e.length&&!i.length&&!Ve(this.gaQty,this.hold?.items??[]);if(o&&(this.baReopen=!1),!this.performanceGroup&&!this.salesClosed&&!this.hold&&(o||this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm)){let u=(this.controller.doc?.categories??[]).filter(H=>!H.notForSale),C=this.controller.getBestAvailableZones();this.baZone&&!C.some(H=>H.id===this.baZone)&&(this.baZone=""),s.push(Ys({confirming:this.bestAvailableConfirm,busy:this.bestAvailableBusy,reopened:this.baReopen,quantity:this.baQty,premium:this.baPremium,offerPremium:this.controller.hasPremiumSeats(),categories:u,zones:C,selectedCategory:this.baCat,selectedZone:this.baZone}))}let a=(u,C,H,z=1,j,G)=>Us({d:u?this.controller.seatDetails(u):null,area:H==="ga"?t.find(U=>U.id===j):void 0,label:C,objectType:H,quantity:z,identity:G,performanceLabel:this.performanceGroup?.activePerformanceLabel?.()}),l=qs,c=F;for(let u of Ii(i)){let C=u.objectType==="ga"?`held:ga:${u.objectId}:${u.tierId??""}`:`held:${u.label}`;n.add(C);let H=this.controller.doc?.categories.find(le=>le.key===u.categoryKey),z=u.tierId?H?.tiers?.find(le=>le.id===u.tierId)?.name:void 0,j=u.objectType!=="ga"?this.controller.seatByLabel(u.label):null,G=u.objectType==="table"?this.controller.tableSelection(u.label):null,U=this.seatViewEnabled()&&!!j&&u.objectType!=="table",ge=`${H?.label??u.categoryKey}${z?` \xB7 ${z}`:""}`;s.push(`<div class="sl-chip sl-held${this.lastTrayKeys.has(C)?"":" sl-enter"}" data-key="${c(C)}" data-held="${c(encodeURIComponent(u.labels.join(`
1659
- `)))}"${j?` data-locate="${c(j.id)}"`:""}><div class="sl-chip-main">`+a(j?.id??null,u.label,u.objectType,u.quantity??1,u.objectId,G??void 0)+`<div class="sl-chip-sub"><span class="sl-ticket-state held" aria-label="${c(this.tf("picker.heldForYou","Held for you"))}" title="${c(this.tf("picker.heldForYou","Held for you"))}"><svg viewBox="0 0 24 24"><rect x="5" y="10" width="14" height="10" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></span><span class="cat">${c(ge)}</span>`+(G?.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${c(encodeURIComponent(u.label))}">${c((0,b.t)("picker.guestsCountEdit",{count:u.quantity??1}))}</button>`:"")+ni(j?.wheelchairSpaceType)+ri(j?.commercial)+(this.suppressPricing?"":`<span class="amt">${c(this.money(this.paidPrice(u.categoryKey,u.tierId,u.unitPrice,u.label)*(u.quantity??1)))}</span>`)+"</div></div>"+(this.performanceGroup?"":l((0,b.t)("picker.removeHeldTicketLabel",{label:$i(u,t)}),U?u.label:null))+"</div>")}let h=new Set(i.map(u=>u.label)),p=this.seatViewEnabled();for(let u of e.filter(C=>!h.has(C.label))){let C=`seat:${u.id}`;n.add(C);let H=this.controller.doc?.categories.find(U=>U.key===u.categoryKey),z=u.tiers&&u.tiers.length&&!this.suppressPricing?`<select class="tier" data-tier="${c(u.id)}" aria-label="${c((0,b.t)("picker.ticketTierFor",{label:u.label}))}">`+u.tiers.map(U=>`<option value="${c(U.id)}"${U.id===u.tierId?" selected":""}>${c(U.name)} \xB7 ${c(this.money(this.paidPrice(u.categoryKey,U.id,U.price,u.label)))}</option>`).join("")+"</select>":"",j=u.tiers?.find(U=>U.id===u.tierId)??u.tiers?.[0],G=j?.buyerMessage?.trim()||(j?.restriction==="companion"?this.tf("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):"");s.push(`<div class="sl-chip${this.lastTrayKeys.has(C)?"":" sl-enter"}" data-key="${c(C)}" data-seat="${c(u.id)}" data-locate="${c(u.id)}"><div class="sl-chip-main">`+a(u.id,u.label,u.objectType,u.quantity??1,u.objectId,u)+`<div class="sl-chip-sub"><span class="sl-ticket-state" aria-label="${c(this.tf("picker.selected","Selected"))}" title="${c(this.tf("picker.selected","Selected"))}"><svg viewBox="0 0 24 24"><path d="M5 12l4 4L19 6"/></svg></span><span class="cat">${c(H?.label??u.categoryKey)}</span>`+(u.objectType==="table"&&u.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${c(encodeURIComponent(u.label))}">${c((0,b.t)("picker.guestsCountEdit",{count:u.quantity??1}))}</button>`:"")+`${ni(u.wheelchairSpaceType)}${ri(u.commercial)}${z}`+(this.suppressPricing?"":`<span class="amt">${c(this.money(this.paidPrice(u.categoryKey,u.tierId??null,u.price,u.label)*(u.quantity??1)))}</span>`)+"</div>"+(G?`<small class="sl-tier-note">${F(G)}</small>`:"")+"</div>"+l((0,b.t)("picker.removeSeatLabel",{label:u.label}),p&&u.objectType!=="table"?u.label:null)+"</div>")}t.length&&s.push(Fi(this,t,i)),!this.performanceGroup&&!this.salesClosed&&!this.hold&&!o&&!this.baReopen&&!this.bestAvailableBusy&&!this.bestAvailableConfirm&&s.push(`<button type="button" class="sl-ba-reopen" data-ba-reopen><span aria-hidden="true">\u2726</span>${c(this.tf("picker.findTogetherInstead","Find seats together instead"))}</button>`),this.els.tray.innerHTML=s.join(""),this.lastTrayKeys=n,this.els.tray.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>this.performanceGroup?.selectionModeSwitch?.activate());let d=this.performanceGroup?.selectNight;d&&pr(this.els.tray,u=>d(u)),this.els.tray.querySelectorAll("[data-ba]").forEach(u=>{u.addEventListener("click",()=>{this.baQty=Math.max(1,Math.min(this.maxTickets,this.baQty+Number(u.dataset.ba))),this.syncTray()})}),this.els.tray.querySelector("[data-ba-cat]")?.addEventListener("change",u=>{this.baCat=u.target.value}),this.els.tray.querySelector("[data-ba-zone]")?.addEventListener("change",u=>{this.baZone=u.target.value}),this.els.tray.querySelector("[data-ba-premium]")?.addEventListener("click",()=>{this.baPremium=!this.baPremium,this.syncTray()}),this.els.tray.querySelector(".sl-ba-go")?.addEventListener("click",()=>{if(this.pendingSelectionCount()>0){this.bestAvailableConfirm=!0,this.syncTray(),this.els.tray.querySelector("[data-ba-replace]")?.focus();return}this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelector("[data-ba-cancel]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-reopen]")?.addEventListener("click",()=>{this.baReopen=!0,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-close]")?.addEventListener("click",()=>{this.baReopen=!1,this.syncTray(),this.els.tray.querySelector("[data-ba-reopen]")?.focus()}),this.els.tray.querySelector("[data-ba-replace]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelectorAll(".sl-chip .rm").forEach(u=>{u.addEventListener("click",()=>{let C=u.closest(".sl-chip");if(C.dataset.held){this.removeHeldLabels(decodeURIComponent(C.dataset.held).split(`
1660
- `),C);return}let H=C.dataset.seat,z=this.controller.getSelection().find(G=>G.id===H)?.label??this.tf("picker.seat","Seat"),j=()=>{this.controller.deselect([H]),this.toast((0,b.t)("picker.labelRemoved",{label:z}),"neutral",{label:this.tf("picker.undo","Undo"),onClick:()=>{let G=this.controller.select([H]);this.toast(G.length?(0,b.t)("picker.labelRestored",{label:z}):(0,b.t)("picker.labelNoLongerAvailable",{label:z}),G.length?"success":"warning")}})};if(this.reducedMotion()){j();return}C.classList.add("sl-leave"),this.scheduleMotion(j,150)})}),this.els.tray.querySelectorAll("[data-table-edit]").forEach(u=>{u.addEventListener("click",C=>{C.stopPropagation();let H=decodeURIComponent(u.dataset.tableEdit??""),z=this.controller.tableSelection(H);if(!z)return;let j=i.find(G=>G.label===H&&G.objectType==="table");this.showTableDialog({...z,quantity:j?.quantity??z.quantity},!!j,u)})}),this.els.tray.querySelectorAll(".sl-chip .tier").forEach(u=>{u.addEventListener("change",()=>this.controller.setSeatTier(u.dataset.tier,u.value||null))}),this.els.tray.querySelectorAll(".sl-chip .view[data-view-label]").forEach(u=>{u.addEventListener("click",()=>{let C=this.controller.seatByLabel(u.dataset.viewLabel);C&&this.openSeatView(C)})}),this.els.tray.querySelectorAll(".sl-chip[data-locate]").forEach(u=>{let C=()=>this.controller.flashSeat(u.dataset.locate,this.cssVar("--sl-accent")||"#f4b740");u.addEventListener("mouseenter",C),u.addEventListener("focusin",C)}),ji(this,this.els.tray,t),this.controller.setGASelection(Hi(this.gaQty)),this.salesClosed&&this.els.tray.querySelectorAll(".sl-ba-go,[data-ba],[data-ba-cat],[data-ba-zone],[data-ba-replace],.sl-ga button").forEach(u=>{u.disabled=!0});let m=Oi(this,t,this.hold?.items??[]),g=Ve(this.gaQty,this.hold?.items??[]),x=i.reduce((u,C)=>u+this.paidPrice(C.categoryKey,C.tierId,C.unitPrice,C.label)*(C.quantity??1),0),w=i.reduce((u,C)=>u+(C.quantity??1),0),v=e.filter(u=>!h.has(u.label)),R=v.reduce((u,C)=>u+this.paidPrice(C.categoryKey,C.tierId??null,C.price,C.label)*(C.quantity??1),0)+m+x,S=v.reduce((u,C)=>u+(C.quantity??1),0)+g+w,P=this.pendingSelectionCount(),_=this.lastTrayCount,k=this.lastTrayTotal,M=dr(this.performanceGroup?.groupSelectionSummary?.(),this.performanceGroup?.selectionMode??"same_seat");if(this.els.count.textContent=M||(S?(0,b.tCount)("picker.ticketsCount",S):this.tf("picker.noSeatsSelected","No seats selected")),this.els.total.textContent=S&&!this.suppressPricing?this.money(R):"",this.root?.setAttribute("data-has-selection",String(S>0)),this.root?.setAttribute("data-ba-active",String(this.bestAvailableConfirm||this.bestAvailableBusy||this.baReopen)),this.els.foot?.classList.toggle("empty",S===0),this.els.seatSummary&&(this.els.seatSummary.textContent=M||(S?(0,b.tCount)("picker.seatsSelectedCount",S):"")),this.syncCta(S,P),this.hold){this.holdCopyPending=P>0;let u=Xs({secured:w||this.hold.seats?.length||0,pendingCount:P,expiresAt:this.holdExpiresAt,releasing:this.releasingHold});this.els.holdTitle&&(this.els.holdTitle.textContent=u.title),this.els.holdCopy&&(this.els.holdCopy.textContent=u.copy);let C=this.els.holdChange;C&&(C.disabled=this.releasingHold,C.textContent=u.change)}S!==_&&this.animateOnce(this.els.count,"sl-value-pop",380),R!==k&&this.animateOnce(this.els.total,"sl-value-pop",380),_===0&&S>0&&(this.animateOnce(this.els.cta,"sl-ready",520),this.sideCollapsed&&this.root?.dataset.layout!=="narrow"&&this.setPanelCollapsed(!1)),this.renderPeek(S,R,P),this.lastTrayCount=S,this.lastTrayTotal=R,this.opts.onSelectionChange?.(e),this.emitSelectionValidity(S,e)}emitSelectionValidity(e,t){let i=this.controller.getSelectionValidity(e);i&&(i.seats=t,this.opts.onSelectionValidityChange?.(i),i.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(t):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(i),this.lastSelectionValidity=i.isValid)}renderPeek(e,t,i){if(!this.els.peek)return;let s=(this.controller.doc?.categories??[]).map(n=>this.catPrice(n)).filter(n=>n!=null);this.els.peek.innerHTML=Ws({count:e,total:t,pendingCount:i,ctaPhase:this.ctaPhase,hasHold:!!this.hold,salesClosed:this.salesClosed,fromPrice:s.length?Math.min(...s):null,addMore:Ks({salesClosed:this.salesClosed,hasHold:!!this.hold,ctaPhase:this.ctaPhase,formOpen:this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm,room:this.maxTickets-this.totalTicketCount(),wanted:this.baQty}),holdTime:this.hold&&this.holdTimer?ct(Math.max(0,this.holdExpiresAt-Date.now())):null,money:n=>this.money(n)}),this.root&&(this.root.dataset.peekClock=String(!!this.els.peek.querySelector(".sl-peek-time")))}async removeHeldLabels(e,t){let i=e.filter(o=>o&&!this.releasingLabels.has(o));if(!i.length)return!1;let s=i[0];i.forEach(o=>this.releasingLabels.add(o)),t?.setAttribute("aria-busy","true");let n=t?.querySelector(".rm");n&&(n.disabled=!0);try{let o=this.handedOff;if(!await this.controller.releaseLabels(i))return this.toast((0,b.t)("picker.couldNotRemoveLabel",{label:s}),"error"),!1;_i(this.gaQty,this.hold?.items??[],i);let l=this.controller.currentHold();return this.hold=l?{holdId:l.holdId,expiresAt:l.expiresAt,seats:l.seats,items:l.items}:null,this.handedOff=!!this.hold&&o,this.bookedShown=!1,this.ctaPhase="idle",this.hold?this.startHoldTimer(this.hold.expiresAt):(this.stopHoldTimer(),this.forgetHold()),this.syncTray(),this.emitHoldChange(),this.toast((0,b.t)("picker.labelRemovedFromHold",{label:s}),"success"),!0}finally{i.forEach(o=>this.releasingLabels.delete(o)),t?.removeAttribute("aria-busy"),n?.isConnected&&(n.disabled=!1)}}async handleChangeSeats(){if(!this.hold||this.releasingHold)return;this.releasingHold=!0;let e=this.els.holdChange;e&&(e.disabled=!0,e.textContent=this.tf("picker.releasingEllipsis","Releasing\u2026"));try{await this.release(),this.hold||this.toast(this.tf("picker.heldTicketsReleased","Held tickets released. Choose your new seats."),"success")}finally{this.releasingHold=!1,e?.isConnected&&(e.disabled=!1,e.textContent=this.tf("picker.change","Change"))}}async handleCta(){if(this.salesClosed)return;let e=this.controller.getSelectionValidity(this.totalTicketCount());if(e&&!e.isValid){this.toast(hi(e,(i,s)=>this.tf(i,s)),"warning");return}if(this.totalTicketCount()>this.maxTickets){this.toast((0,b.t)("picker.removeTicketsUntilOrFewer",{count:this.maxTickets}),"warning");return}let t=this.committedSelection();if(this.hold&&!t.some(i=>!(this.hold.items??[]).some(s=>s.label===i.label))){let i=this.hold.seats??t;this.handedOff=!0,this.setCtaPhase("checkout"),this.checkoutHandoff(this.hold,i);return}this.holdingLabels=new Set(t.map(i=>i.label)),this.setCtaPhase("holding");try{let i=null,s=Mi(this.gaQty),n=this.committedSelection();if(n.length){let o=await this.controller.hold(void 0,this.opts.holdTtlMs);i=o?{holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items}:null}for(let{areaId:o,tierId:a,qty:l}of s){let c=await this.controller.holdGA(o,l,{tierId:a,ttlMs:this.opts.holdTtlMs});i=c?{holdId:c.holdId,expiresAt:c.expiresAt,seats:c.seats,items:c.items}:i}if(!i){this.toast(this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again."),"error"),this.setCtaPhase("idle"),this.syncTray();return}this.hold=i,this.handedOff=!this.performanceGroup,this.startHoldTimer(i.expiresAt),this.flashHeldSeats(i),this.setCtaPhase(this.performanceGroup?"idle":"checkout"),this.emitHoldChange(),this.performanceGroup||this.checkoutHandoff(i,i.seats??n)}catch(i){this.opts.onError?.(i);let s=i,n=(s.conflicts??[]).map(a=>a.label).filter(Boolean).slice(0,3);s.reason==="event_closed"&&this.setSalesClosed(!0);let o=s.reason==="event_closed"?this.tf("picker.seatSalesClosedForEvent","Seat sales have closed for this event."):s.reason==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):s.reason==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):n.length?n.length===1?(0,b.t)("picker.labelsNoLongerAvailable.one",{labels:n.join(", ")}):(0,b.t)("picker.labelsNoLongerAvailable.other",{labels:n.join(", ")}):this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.");this.toast(o,"error"),this.setCtaPhase("idle")}finally{this.holdingLabels.clear(),this.ctaPhase==="holding"&&(this.ctaPhase="idle"),this.syncTray()}}startHoldTimer(e){this.stopHoldTimer(),this.holdExpiresAt=e,this.hold&&this.rememberHold(this.hold);let t=this.els.hold;t.innerHTML=`<span class="sl-hold-dot" aria-hidden="true"></span><span>${this.tf("picker.held","Held")}</span><span class="sl-hold-time" data-ref="holdTime"></span>`;let i=t.querySelector('[data-ref="holdTime"]');this.els.holdNote?.classList.add("on");let s=()=>{let n=Math.max(0,this.holdExpiresAt-Date.now());i&&(i.textContent=ct(n));let o=this.els.peek?.querySelector(".sl-peek-time");o&&(o.textContent=ct(n)),!this.holdCopyPending&&this.els.holdCopy&&(this.els.holdCopy.textContent=ui(this.holdExpiresAt)),t.classList.add("on"),t.classList.toggle("is-expiring",n>0&&n<=br),this.setExtendPrompt(n>0&&n<=br,n),n<=0&&this.stopHoldTimer()};s(),this.holdTimer=setInterval(s,500)}stopHoldTimer(){this.holdTimer&&clearInterval(this.holdTimer),this.holdTimer=null,this.els.hold?.classList.remove("on","is-expiring"),this.els.holdNote?.classList.remove("on"),this.root&&delete this.root.dataset.peekClock,this.setExtendPrompt(!1,0)}setExtendPrompt(e,t){if(this.extendEl)if(e&&this.controller.currentHold()&&!this.bookedShown){let i=Math.ceil(t/1e3),s=Math.floor(i/60),n=String(i%60).padStart(2,"0");this.els.extendTxt.innerHTML=(0,b.t)("picker.seatsHeldForNeedMoreTime",{time:`${s}:${n}`}),this.extendEl.classList.add("on")}else this.extendEl.classList.remove("on")}async handleExtend(){let e=this.els.extendBtn;e.disabled=!0;let t=e.textContent;e.textContent=this.tf("picker.addingEllipsis","Adding\u2026");try{let i=await this.controller.extendHold(this.opts.holdTtlMs);i?(this.hold={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items},this.holdExpiresAt=i.expiresAt,this.extendEl?.classList.remove("on"),this.rememberHold(this.hold),this.emitHoldChange(),this.toast(this.tf("picker.moreTimeAdded","More time added \u2014 your seats are still held."),"success")):this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}finally{e.disabled=!1,e.textContent=t}}detectBooked(){this.bookedShown||!this.handedOff||!this.hold||this.controller.currentHold()===null&&this.showBooked()}showBooked(){if(this.bookedShown||!this.hold)return;this.bookedShown=!0;let e=this.buildHandoff(this.hold);this.stopHoldTimer(),this.forgetHold();let t=e.lineItems.reduce((s,n)=>s+n.quantity,0),i=this.performanceGroup?.groupSelectionSummary?.();this.els.bookedSub&&(this.els.bookedSub.innerHTML=i?.seats?`<span class="sl-booked-seats">${(0,b.tCount)("picker.group.ticketsConfirmedAcross",i.seats,{performances:i.performances})}</span>`:`<span class="sl-booked-seats">${(0,b.tCount)("picker.ticketsCount",t)}</span> ${this.tf("picker.confirmedAndOnWay","confirmed. A confirmation is on its way.")}`),this.bookedEl?.classList.add("on"),this.opts.onBooked?.(e)}notifyGroupSettled(e){e==="booked"?this.showBooked():this.dismissConfirm(),this.hold=null,this.handedOff=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.forgetHold(),this.syncTray(),this.syncCta()}checkoutHandoff(e,t){if(this.checkoutMode==="hosted"){this.startHostedCheckout(e,t);return}this.opts.onCheckout?.(e,t,this.buildHandoff(e))}async startHostedCheckout(e,t){let i=this.buildHandoff(e),s=null;try{s=await(this.paymentOptions??=this.pubApi.paymentOptions(this.opts.event))}catch(o){this.opts.onError?.(o)}if(this.destroyed)return;let n=s?.providers?.[0];if(!n){let o=rs(s?.reason),a=!!this.opts.onCheckoutUnavailable||!!this.opts.onCheckout;this.opts.onCheckoutUnavailable?.({reason:o,handoff:i}),this.opts.onCheckout?.(e,t,i),a||this.openCheckoutPanel({kind:"unavailable",reason:o,seatCount:i.lineItems.reduce((l,c)=>l+c.quantity,0)});return}await this.openCheckoutPanel({kind:"pay",provider:n,order:{holdId:i.holdId,expiresAt:i.expiresAt,currency:i.currency,total:i.total,labels:i.lineItems.map(o=>o.displayLabel??o.label)}})}async openCheckoutPanel(e){let t;try{({mountCheckout:t}=await ss())}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.checkoutCouldNotBeOpened","Checkout could not be opened. Your seats are still held \u2014 please try again."),"error"),this.setCtaPhase("idle");return}this.destroyed||!this.root||(this.closeCheckoutPanel(),this.checkoutPanel=t({root:this.root,state:e,eventKey:this.opts.event,formatMoney:i=>this.money(i),startSession:i=>this.pubApi.startCheckout(this.opts.event,{...i,...this.opts.returnUrl?{returnUrl:this.opts.returnUrl}:{}}),orderStatus:i=>this.pubApi.orderStatus(i),onCancel:()=>{this.checkoutPanel=null,this.hold||this.setCtaPhase("idle")},onConfirmed:i=>{this.opts.onOrderConfirmed?.(i),this.controller.refresh()},onError:i=>this.opts.onError?.(i)}))}closeCheckoutPanel(){this.checkoutPanel?.destroy(),this.checkoutPanel=null}buildHandoff(e){let i=(e.items??[]).map(o=>{let a=this.controller.lineItemDisplay(o);return{label:o.label,...a.displayLabel?{displayLabel:a.displayLabel}:{},...a.displayType?{displayType:a.displayType}:{},objectId:o.objectId,objectType:o.objectType,categoryKey:o.categoryKey,tierId:o.tierId,unitPrice:this.paidPrice(o.categoryKey,o.tierId,o.unitPrice,o.label),currency:o.currency??this.currency,quantity:o.quantity??1}}),s=i[0]?.currency??this.currency,n=i.reduce((o,a)=>o+a.unitPrice*a.quantity,0);return{holdId:e.holdId,expiresAt:e.expiresAt,currency:s,lineItems:i,total:n}}emitHoldChange(){let e=this.hold;this.scheduleOfferRefresh(!0),this.opts.onHoldChange?.(e,e?.seats??[],e?this.buildHandoff(e):null)}toast(e,t="neutral",i){let s=this.els.toast;if(!s)return;s.replaceChildren();let n=document.createElement("span");if(n.textContent=e,s.appendChild(n),s.classList.toggle("has-action",!!i),i){let o=document.createElement("button");o.type="button",o.className="sl-toast-action",o.textContent=i.label,o.addEventListener("click",i.onClick,{once:!0}),s.appendChild(o)}s.dataset.tone=t,s.classList.add("on"),this.toastTimer&&clearTimeout(this.toastTimer),this.toastTimer=setTimeout(()=>{s.classList.remove("on"),s.classList.remove("has-action"),s.dataset.tone="neutral"},4200)}placeTooltip(){if(!this.tipEl)return;let e=ur(this.tipPos,this.els.map.clientWidth,{width:this.tipEl.offsetWidth,height:this.tipEl.offsetHeight});this.tipEl.style.left=`${e.left}px`,this.tipEl.style.top=`${e.top}px`}nightStripFor(e,t){let i=this.performanceGroup;return rr(mi(e.mark,i?.nights?.()),{locale:this.opts.locale,switchLabel:i?.selectionModeSwitch?.label??null,pinned:t})}unpinTooltip(){this.tipPinned&&(this.tipPinned=!1,this.tipEl?.classList.remove("sl-tip-pinned"),this.tipEl&&(this.tipEl.style.display="none"))}updateTooltip(e){if(!this.tipEl)return;if(!e){this.tipPinned||(this.tipEl.style.display="none");return}let t=e.mark?.kind==="partial"&&this.lastPointerType!=="mouse",i=this.nightStripFor(e,t);this.tipEl.style.setProperty("--sl-cat",e.categoryColor),this.tipEl.innerHTML=hr(e,{price:this.suppressPricing?"":this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label)),priceNote:this.suppressPricing?this.tf("picker.group.pricesPerPerformance","Prices shown per performance"):"",rowTypeWord:dt(e),extra:i+(t?`<button type="button" class="sl-tip-close" data-pg-tip-close aria-label="${F(this.tf("picker.group.closeSeatDetails","Close seat details"))}">\xD7</button>`:"")}),this.tipPinned=t,this.tipEl.classList.toggle("sl-tip-pinned",t),this.tipEl.querySelector("[data-pg-tip-close]")?.addEventListener("click",()=>this.unpinTooltip()),this.tipEl.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>{this.unpinTooltip(),this.performanceGroup?.selectionModeSwitch?.activate()}),this.tipEl.style.display="block",this.placeTooltip()}syncSeatMarks(){let e=this.performanceGroup?.seatMarks,t=this.controller.getRenderer();if(!e||!t?.setSeatMarks)return;let i={};for(let[s,n]of Object.entries(e())){let o=this.controller.idForLabel(s);o&&(i[o]=n)}Object.keys(i).length&&t.setSeatMarks(i)}getSelection(){return this.committedSelection()}selectObjects(e){return this.controller.select(e)}deselectObjects(e){this.controller.deselect(e)}clearSelection(){this.dismissConfirm(),this.dismissTableDialog(),this.controller.clearSelection()}categoryLegendColor(){let e=(this.controller.doc?.categories??[]).find(t=>!t.notForSale);return(e?this.controller.getRenderer()?.categoryDisplayColor?.(e.key):null)||e?.color||"#2563eb"}async refreshAvailability(){await this.controller.refresh(),this.syncSeatMarks(),this.syncTray()}refreshPerformanceGroupComposition(){this.syncTray()}async adoptRestoredHold(e){!e||this.hold||await this.resumeHoldFromServer(e,!1)}selectCategories(e){return this.controller.selectCategories(e)}deselectCategories(e){this.controller.deselectCategories(e)}setSelectableObjects(e){this.controller.setSelectableObjects(e)}setMaxSelection(e){this.maxTickets=Math.max(this.exactTickets??1,Math.floor(e)),this.controller.setMaxSelection(this.maxTickets),this.updateSelectionCapacity(),this.syncTray()}getSelectionValidity(){let e=this.controller.getSelectionValidity(this.totalTicketCount());return e&&(e.seats=this.committedSelection()),e}setMapTheme(e){this.destroyed||(this.opts.theme={...this.opts.theme??{},map:e??void 0},this.controller.setMapTheme(e),this.applyMapChromeTokens())}applyMapChromeTokens(){let e=this.els.map?.parentElement;if(!e||!this.root)return;let t=at(this.controller.doc?.theme,this.opts.theme),i=this.opts.theme?.map?.background??this.controller.doc?.theme?.background??void 0,s=_s(t,i);for(let n of["--sl-bg","--sl-surface","--sl-text","--sl-muted","--sl-line","--sl-accent-text"])s?e.style.setProperty(n,s[n]):e.style.removeProperty(n)}setEventDetailsHidden(e){this.eventDetailsHidden=e,this.syncFullscreenButtons()}setPricing(e){let t=JSON.stringify(this.opts.pricing??null),i=JSON.stringify(e??null);t!==i&&(this.opts.pricing=e,!(this.destroyed||!this.els.prices)&&(this.els.pricesSec?.querySelector(".sl-price-select")?.remove(),this.buildPriceFilter(),this.syncPrices(),this.syncTray(),this.lastSection&&this.showSectionCard(this.lastSection)))}buildLanguageSwitcher(e){if(!e)return;let t=(this.opts.languages??[]).map(s=>(0,b.resolveLocale)(s)).filter((s,n,o)=>o.indexOf(s)===n);if(t.length<2)return;let i=document.createElement("select");i.className="sl-langsel",i.setAttribute("aria-label",this.tf("picker.preferredTicketType","Language"));for(let s of t){let n=document.createElement("option");n.value=s,n.textContent=b.LOCALE_NAMES[s]??s,n.selected=s===(0,b.getLocale)(),i.appendChild(n)}i.addEventListener("change",()=>{this.setLocale(i.value)}),this.langSel=i,e.appendChild(i)}async setLocale(e){let t=(0,b.getLocale)(),i=await(0,b.loadLocale)(e);if(this.opts.messages&&(0,b.setStringOverrides)(this.opts.messages),i===t)return i;let s=this.root;if(!s)return i;s.lang=i,s.dir=(0,b.localeDirection)(),Bs(s);try{this.syncTray()}catch{}try{this.syncPrices()}catch{}try{this.syncOffer()}catch{}try{this.syncRung()}catch{}try{this.syncFloors()}catch{}try{this.syncPanelToggle()}catch{}try{this.syncFullscreenButtons()}catch{}return this.controller.refreshMapCopy(),this.langSel&&this.langSel.value!==i&&(this.langSel.value=i),i}isColorblindSafe(){return this.cbSafe}setColorblindSafe(e){e!==this.cbSafe&&(this.cbSafe=e,this.cbEl?.setAttribute("aria-pressed",String(e)),this.controller.setColorblindSafe(e),this.syncPrices(),Qn(e))}setViewMode(e){this.controller.setViewMode(this.normalizeInitialView(e)),this.syncProjection(),this.dismissConfirm()}getViewMode(){return this.controller.getViewMode()}normalizeInitialView(e){return e==="perspective"?(this.perspectiveWarned||(this.perspectiveWarned=!0,console.warn("[seatlayer] initialView:'perspective' (2.5D) is deprecated for the buyer picker and was coerced to 'flat'. Use the Map | 3D control for the immersive view.")),"flat"):e??"flat"}getBuyerView(){return this.buyerView}setBuyerView(e,t){if(e==="map"){this.exit3d();return}let i=t?.flyToSeatId;if(this.buyerView==="venue3d"){i?(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:i}),this.view3dHandle?.flyToSeat(i)):t?.resetView&&this.view3dHandle?.focusOverview();return}this.enter3d(i)}seatState3dFor(e){switch(this.controller.getStatus(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:break}return this.priceBandKeys!=null&&!this.priceBandKeys.has(e.categoryKey)||this.limitedViewFilter&&(e.commercial?.restrictedView||e.commercial?.obstructedView)?"dimmed":"available"}pushAvailabilityTo3d(){if(!this.view3dHandle)return;let e=this.allSeats().map(t=>({seatId:t.id,state:this.seatState3dFor(t)}));this.view3dHandle.setAvailability(e)}syncSelectionTo3d(){this.view3dHandle&&this.view3dHandle.setSelection(this.controller.getSelection().map(e=>e.id))}async seatViewFor3d(e){let t=this.allSeats().find(i=>i.id===e);if(!t)return null;if(t.viewUrl)try{let i=t.viewMeta?.previewUrl,s=!!i&&i!==t.viewUrl,n=s?await this.buyerAssetUrls.resolve(i):null,o=s?t.viewUrl:await this.buyerAssetUrls.resolve(t.viewUrl);return!o||s&&!n?null:{url:o,...n?{previewUrl:n}:{},...s?{resolveUrl:a=>this.buyerAssetUrls.resolve(a)}:{},...t.viewMeta?.sourceWidth!==void 0?{sourceWidth:t.viewMeta.sourceWidth}:{},...t.viewMeta?.sourceHeight!==void 0?{sourceHeight:t.viewMeta.sourceHeight}:{},...t.viewMeta?.previewWidth!==void 0?{previewWidth:t.viewMeta.previewWidth}:{},...t.viewMeta?.previewHeight!==void 0?{previewHeight:t.viewMeta.previewHeight}:{},...t.viewMeta?.variants?.length?{variants:t.viewMeta.variants}:{},...t.viewMeta?.initialBearingDeg!==void 0?{initialBearingDeg:t.viewMeta.initialBearingDeg}:{},...t.viewMeta?.initialPitchDeg!==void 0?{initialPitchDeg:t.viewMeta.initialPitchDeg}:{},...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}}catch(i){return this.opts.onError?.(i),null}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:this.tf("picker.chartDerivedModel","Chart-derived model")}}emitAnalytics(e,t){try{this.opts.onAnalytics?.(e,{...t,surface:"buyer"})}catch{}}emit3dAnalytics(e,t){this.emitAnalytics(e,t)}onView3dSeatPick(e){if(this.salesClosed){this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning"),this.syncSelectionTo3d();return}let t=this.allSeats().find(a=>a.id===e);if(!t)return;let i=this.controller.tableSelection(e);if(this.committedSelection().some(a=>i?a.label===i.label:a.id===e)){this.controller.deselect([e]),this.dismissConfirm(),this.syncSelectionTo3d();return}let n=this.controller.getStatus(t.id);if(n==="held"||n==="booked"||n==="not_for_sale"){this.showUnavailable3dSeat(t,this.seatState3dFor(t),n),this.syncSelectionTo3d();return}if(this.dismissUnavailable3dSeat(),!this.controller.select([e]).length){this.syncSelectionTo3d(),this.dismissConfirm();return}if(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:e}),this.flashPickedSeat(e),i){this.showTableDialog(i,!1),this.syncSelectionTo3d();return}this.opts.confirmSelection!==!1?this.showConfirm(t):this.syncTray(),this.syncSelectionTo3d()}showUnavailable3dSeat(e,t,i){let s=this.view3dEl;if(!s)return;this.dismissUnavailable3dSeat();let n=this.controller.seatDetails(e.id),o=n?.displayLabel??e.displayLabel??e.label,a=n?.sectionLabel,l=we(n),c=[a,l?(0,b.t)("picker.rowLabel",{label:l}):null,o].filter(Boolean).join(" \xB7 "),h=i==="held"?{title:this.tf("picker.temporarilyHeld","Temporarily held"),message:this.tf("picker.heldSeatExplanation","Another buyer is holding this seat. It may become available again.")}:i==="booked"?{title:this.tf("picker.sold","Sold"),message:this.tf("picker.soldSeatExplanation","This seat has already been booked.")}:{title:this.tf("picker.notForSale","Not for sale"),message:this.tf("picker.notForSaleExplanation","This seat is not included in the current sale.")},p=document.createElement("div");p.className="sl-view3d-unavailable",p.dataset.state=t,p.setAttribute("role","status"),p.setAttribute("aria-live","polite");let d=document.createElement("span");d.className="sl-view3d-unavailable-eyebrow",d.textContent=c||o;let m=document.createElement("strong");m.textContent=h.title;let g=document.createElement("div");g.className="sl-view3d-unavailable-copy",g.append(d,m);let x=document.createElement("button");x.type="button",x.setAttribute("aria-label",this.tf("picker.closeSeatStatus","Close seat status")),x.textContent="\xD7";let w=document.createElement("p");w.textContent=h.message,p.append(g,x,w),x.addEventListener("click",()=>p.remove()),s.appendChild(p),this.announceSeat(e)}dismissUnavailable3dSeat(){this.view3dEl?.querySelector(".sl-view3d-unavailable")?.remove()}saveView3dComparisonSeat(e){if(this.buyerView!=="venue3d")return;let t=this.view3dCompareSeatIds;t.includes(e.id)||(this.view3dCompareSeatIds=t.length===0?[e.id]:[t[0],e.id]),this.confirmSeat?.id===e.id&&(this.controller.deselect([e.id]),this.dismissConfirm(),this.syncSelectionTo3d(),this.syncTray()),this.view3dCompareChip.sync(),this.emit3dAnalytics("3d_comparison_saved",{seatId:e.id,count:this.view3dCompareSeatIds.length}),this.view3dCompareSeatIds.length>1?this.openView3dComparison():this.toast(this.tf("picker.chooseAnotherToCompare","Seat saved. Choose another seat to compare."),"success")}clearView3dComparison(){this.closeView3dComparison(!1),this.view3dCompareSeatIds=[],this.view3dCompareChip.remove(),this.emit3dAnalytics("3d_comparison_cleared")}view3dComparisonSnapshot(e){let t=this.allSeats().find(m=>m.id===e);if(!t)return null;let i=this.controller.seatDetails(t.id),s=this.controller.doc?.categories.find(m=>m.key===t.categoryKey),n=i?.price??(s?.tiers?.length?s.tiers[0].price:s?.price),o=n!=null?this.paidPrice(t.categoryKey,i?.tierId??s?.tiers?.[0]?.id??null,n,t.label):void 0,a=this.controller.getStatus(t.id),l=a==="held"?this.tf("picker.temporarilyHeld","Temporarily held"):a==="booked"?this.tf("picker.sold","Sold"):a==="not_for_sale"?this.tf("picker.notForSale","Not for sale"):this.tf("picker.available","Available"),c=t.viewUrl?(0,pt.seatViewDisclosure)({url:t.viewUrl,...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}):this.tf("picker.chartDerivedSeatEye","Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed"),h=xe(t.commercial)||this.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),p=i?.wheelchairSpaceType?`${Ue(i.wheelchairSpaceType)} \xB7 metadata, not access certification`:this.tf("picker.noAccessibilityMetadata","No accessibility metadata supplied"),d=(0,xr.seatConfidenceDisclosure)(t.confidenceEvidence);return{seat:t,label:i?.displayLabel??t.displayLabel??t.label,section:i?.sectionLabel??t.sectionId??"\u2014",row:we(i)??i?.rowLabel??"\u2014",category:i?.categoryLabel??s?.label??t.categoryKey,price:o==null?this.tf("picker.priceNotSupplied","Not supplied"):this.money(o),availability:l,selectable:a==null||a==="free",viewSource:c,limited:h,accessibility:p,confidence:d}}openSeatConfidencePassport(e,t=null){let i=this.view3dEl;if(!i)return;this.closeSeatConfidencePassport(!1);let s=e.confidenceEvidence,n=this.controller.seatDetails(e.id),o=document.createElement("div");o.className="sl-view3d-passport-shell",o.innerHTML=ws({seat:e,title:n?.displayLabel??e.displayLabel??e.label,restrictionFallback:this.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),canReport:typeof this.api.reportViewEvidence=="function"});let a=[...new Set([...i.children,...[...this.els.map.children].filter(d=>d!==i)])].filter(d=>d instanceof HTMLElement),l=a.map(d=>({element:d,inert:d.inert,ariaHidden:d.getAttribute("aria-hidden")}));for(let d of a)d.inert=!0,d.setAttribute("aria-hidden","true");i.appendChild(o),i.classList.add("has-passport"),this.view3dPassportEl=o;let c=o.querySelector(".sl-view3d-passport"),h=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],p=d=>{if(d.key==="Escape"){d.preventDefault(),d.stopPropagation(),d.stopImmediatePropagation(),this.closeSeatConfidencePassport();return}if(d.key!=="Tab")return;let m=h();if(!m.length)return;let g=m[0],x=m[m.length-1];d.shiftKey&&document.activeElement===g?(d.preventDefault(),x.focus()):!d.shiftKey&&document.activeElement===x&&(d.preventDefault(),g.focus())};window.addEventListener("keydown",p,!0),this.view3dPassportCleanup=()=>{window.removeEventListener("keydown",p,!0);for(let x of l)x.element.inert=x.inert,x.ariaHidden===null?x.element.removeAttribute("aria-hidden"):x.element.setAttribute("aria-hidden",x.ariaHidden);let d=t?.isConnected?t:this.confirmEl?.querySelector(".sl-confirm-confidence")??this.view3dCompareEl?.querySelector("[data-passport-seat]")??null,m=d?.closest(".sl-confirm,.sl-view3d-compare");m?.isConnected&&(m.inert=!1,m.removeAttribute("aria-hidden")),o.remove(),i.classList.remove("has-passport"),this.view3dPassportEl===o&&(this.view3dPassportEl=null);let g=d??this.view3dCompareEl?.querySelector("[data-passport-seat]")??this.confirmEl?.querySelector(".sl-confirm-confidence")??this.view3dCompareChip.mainButton();(t?.isConnected?t:g)?.focus()},o.addEventListener("click",d=>{let m=ks(d.target instanceof HTMLElement?d.target:null);m==="close"&&this.closeSeatConfidencePassport(),m==="report"&&this.reportSeatConfidenceView(e)}),requestAnimationFrame(()=>h()[0]?.focus()),this.emit3dAnalytics("3d_confidence_passport_opened",{seatId:e.id,evidenceId:s?.evidenceId??null,eventConfigurationId:s?.eventConfigurationId??null,modelLevel:s?.modelLevel??"unverified",realityLevel:s?.realityLevel??"none"})}async reportSeatConfidenceView(e){if(this.api.reportViewEvidence){Ht(this.view3dPassportEl,"sending");try{let t=await this.api.reportViewEvidence(this.opts.event,{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId});this.emit3dAnalytics("3d_confidence_view_reported",{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId??null}),Ht(this.view3dPassportEl,"received",t.report.id)}catch{Ht(this.view3dPassportEl,"failed")}}}closeSeatConfidencePassport(e=!0){let t=this.view3dPassportCleanup;if(this.view3dPassportCleanup=null,!t){this.view3dPassportEl?.remove(),this.view3dPassportEl=null,this.view3dEl?.classList.remove("has-passport");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||this.root?.focus({preventScroll:!0})}openView3dComparison(){let e=this.view3dEl;if(!e||this.view3dCompareSeatIds.length<2)return;this.closeView3dComparison(!1);let t=this.view3dCompareSeatIds.map(d=>this.view3dComparisonSnapshot(d)).filter(d=>!!d);if(t.length<2){this.clearView3dComparison();return}let i=d=>E(d),s=document.createElement("div");s.className="sl-view3d-compare-shell";let n=t.map((d,m)=>`<article><span>Seat ${m===0?"A":"B"}</span><strong>${i(d.label)}</strong><small>Section ${i(d.section)} \xB7 Row ${i(d.row)}</small><dl><div><dt>Current price</dt><dd>${i(d.price)}</dd></div><div><dt>Ticket type</dt><dd>${i(d.category)}</dd></div><div><dt>Availability</dt><dd>${i(d.availability)}</dd></div><div><dt>View source</dt><dd>${i(d.viewSource)}</dd></div><div><dt>View restriction</dt><dd>${i(d.limited)}</dd></div><div><dt>Seat confidence</dt><dd>${i(d.confidence.headline)}</dd></div><div><dt>Reality check</dt><dd>${i(d.confidence.reality)}</dd></div><div><dt>Accessibility</dt><dd>${i(d.accessibility)}</dd></div></dl><div class="sl-view3d-compare-actions"><button type="button" data-passport-seat="${i(d.seat.id)}">Passport</button><button type="button" data-view-seat="${i(d.seat.id)}">View seat</button><button type="button" class="select" data-select-seat="${i(d.seat.id)}"${d.selectable?"":" disabled"}>Select seat</button></div></article>`).join("");s.innerHTML=`<div class="sl-view3d-compare-scrim" aria-hidden="true"></div><section class="sl-view3d-compare" role="dialog" aria-modal="true" aria-labelledby="sl-view3d-compare-title"><header><div><span>Seat inspection</span><strong id="sl-view3d-compare-title">Compare disclosed attributes</strong></div><button type="button" data-close aria-label="Close seat comparison">\xD7</button></header><p class="sl-view3d-compare-note">Current price and availability come from this picker. Modeled views are chart-derived unless organizer media is labeled; SeatLayer does not invent why a seat has its price.</p><div class="sl-view3d-compare-grid">${n}</div></section>`;let o=document.activeElement instanceof HTMLElement?document.activeElement:null,a=[...e.children].filter(d=>d instanceof HTMLElement),l=a.map(d=>({element:d,inert:d.inert,ariaHidden:d.getAttribute("aria-hidden")}));for(let d of a)d.inert=!0,d.setAttribute("aria-hidden","true");e.appendChild(s),e.classList.add("has-comparison"),this.view3dCompareEl=s;let c=s.querySelector(".sl-view3d-compare"),h=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],p=d=>{if(d.key==="Escape"){d.preventDefault(),this.closeView3dComparison();return}if(d.key!=="Tab")return;let m=h();if(!m.length)return;let g=m[0],x=m[m.length-1];d.shiftKey&&document.activeElement===g?(d.preventDefault(),x.focus()):!d.shiftKey&&document.activeElement===x&&(d.preventDefault(),g.focus())};window.addEventListener("keydown",p),this.view3dCompareCleanup=()=>{window.removeEventListener("keydown",p);for(let d of l)d.element.inert=d.inert,d.ariaHidden===null?d.element.removeAttribute("aria-hidden"):d.element.setAttribute("aria-hidden",d.ariaHidden);s.remove(),e.classList.remove("has-comparison"),this.view3dCompareEl===s&&(this.view3dCompareEl=null),o?.isConnected?o.focus():this.view3dCompareChip.mainButton()?.focus()},s.querySelector("[data-close]")?.addEventListener("click",()=>this.closeView3dComparison()),s.querySelectorAll("[data-passport-seat]").forEach(d=>d.addEventListener("click",()=>{let m=d.dataset.passportSeat,g=m?this.allSeats().find(x=>x.id===m):void 0;g&&this.openSeatConfidencePassport(g,d)})),s.querySelectorAll("[data-view-seat]").forEach(d=>d.addEventListener("click",()=>{let m=d.dataset.viewSeat;this.closeView3dComparison(!1),m&&this.view3dHandle?.flyToSeat(m)})),s.querySelectorAll("[data-select-seat]").forEach(d=>d.addEventListener("click",()=>{let m=d.dataset.selectSeat;m&&this.selectComparedSeat(m)})),requestAnimationFrame(()=>h()[0]?.focus()),this.emit3dAnalytics("3d_comparison_opened",{seatIds:this.view3dCompareSeatIds.slice()})}closeView3dComparison(e=!0){let t=this.view3dCompareCleanup;if(this.view3dCompareCleanup=null,!t){this.view3dCompareEl?.remove(),this.view3dCompareEl=null,this.view3dEl?.classList.remove("has-comparison");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||this.root?.focus({preventScroll:!0})}selectComparedSeat(e){if(this.salesClosed){this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let t=this.allSeats().find(s=>s.id===e);if(!t)return;if(this.closeView3dComparison(!1),!this.controller.select([e]).length){this.syncSelectionTo3d(),this.toast(this.tf("picker.seatNoLongerAvailable","That seat is no longer available."),"warning");return}this.syncSelectionTo3d(),this.showConfirm(t),this.emit3dAnalytics("3d_comparison_selected",{seatId:e})}async enter3d(e){if(this.view3dEl||!this.canOffer3d()||!this.els.map)return;let t=this.controller.doc;if(!t)return;this.buyerView="venue3d",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"venue3d",...e?{seatId:e}:{}}),this.root?.setAttribute("data-view3d","on"),this.dismissConfirm(),this.syncProjection();let i=document.createElement("div");i.className="sl-view3d",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.interactive3dVenueView","Interactive 3D venue view"));let s=document.createElement("button");s.type="button",s.className="sl-view3d-back",s.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${this.tf("picker.backToMap","Back to map")}</span>`;let n=s.querySelector("span"),o=h=>{this.view3dTargetSeatId=h;let p=!!h;i.classList.toggle("is-seat-focused",p);let d=p?this.tf("picker.backToVenue","Back to venue"):this.tf("picker.backToMap","Back to map");n&&(n.textContent=d),s.setAttribute("aria-label",d)};s.addEventListener("click",()=>{if(this.view3dTargetSeatId&&this.view3dHandle){this.view3dHandle.focusOverview();return}this.exit3d()}),i.appendChild(s);let a=document.createElement("button");a.type="button",a.className="sl-view3d-fs",a.textContent="\u26F6",a.setAttribute("aria-label",this.tf("picker.fullScreen","Full screen")),a.setAttribute("aria-pressed",String(!!document.fullscreenElement||this.fsFallback||this.framedFs)),a.addEventListener("click",()=>this.toggleFullscreen()),i.appendChild(a);let l=document.createElement("div");l.className="sl-view3d-loading",l.setAttribute("role","status"),l.setAttribute("aria-live","polite"),l.textContent=this.tf("picker.loading3d","Building the 3D venue\u2026"),i.appendChild(l),this.els.map.appendChild(i),this.view3dEl=i,this.view3dCompareChip.sync(),requestAnimationFrame(()=>{i.style.opacity="1"});let c=++this.view3dGen;try{let h=(0,b.expandChart)(t),[p,d]=await Promise.all([ts(),this.controller.loadEventConfiguration()]),m=d?await Ps(d,S=>this.buyerAssetUrls.resolve(S)):null,g=t.theme?.venue3d?.shellAssetUrl,x=await As(g,S=>this.buyerAssetUrls.resolve(S));if(c!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let w={doc:t,seats:h,...m?{eventConfigurationId:m.id,eventConfiguration:m}:{},...x?{registeredShellGlb:x}:{}},v=await p.prepareVenue3D(w);if(c!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let R=p.mountVenue3D(i,{...w,prepared:v},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,seatViewActionLabel:S=>this.allSeats().find(P=>P.id===S)?.viewUrl?this.tf("picker.openAuthored360","Open venue 360\xB0"):this.tf("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:S=>this.onView3dSeatPick(S),onSeatInspect:S=>this.onView3dSeatPick(S),onSectionFocusChange:S=>{let P=i.querySelector('select[data-locator="section"]'),_=S??"";!P||P.value===_||(P.value=_,P.dispatchEvent(new Event("change")))},onViewTargetChange:S=>{i.querySelector(".sl-view3d-nav")?.classList.toggle("is-seat-focused",!!S),o(S),this.opts.onBuyerViewChange?.({view:"venue3d",...S?{seatId:S}:{}})},...this.seatViewEnabled()?{getSeatView:S=>new Promise((P,_)=>{let k=()=>{this.seatViewFor3d(S).then(u=>{u?P(u):_(new Error("seat_view_unavailable"))})},M=globalThis.requestIdleCallback;typeof M=="function"?M(k,{timeout:1500}):setTimeout(k,50)})}:{},onAnalytics:(S,P)=>this.emit3dAnalytics(S,P)});this.view3dHandle=R,l.remove(),this.pushAvailabilityTo3d(),this.syncSelectionTo3d(),Vs(i,R),e&&R.flyToSeat(e)}catch(h){if(c!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;this.opts.onError?.(h),this.toast(this.tf("picker.unavailable3d","3D could not start. The seat map is still available."),"warning"),this.exit3d()}}exit3d(){if(this.buyerView!=="venue3d"&&!this.view3dEl)return;this.view3dGen++,this.buyerView="map",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"map"}),this.root?.removeAttribute("data-view3d"),this.closeSeatConfidencePassport(!1),this.closeView3dComparison(!1),this.view3dCompareChip.remove();try{this.view3dHandle?.dispose()}catch{}this.view3dHandle=null;let e=this.view3dEl;this.view3dEl=null,e&&(e.style.opacity="0",setTimeout(()=>e.remove(),320)),this.syncProjection();let t=this.view3dReturnSeat;this.view3dReturnSeat=null,t&&this.committedSelection().some(i=>i.id===t.id)&&this.opts.confirmSelection!==!1&&this.showConfirm(t)}getCurrentHold(){return this.hold}async resumeHold(e){return this.resumeHoldFromServer(e,!1)}async removeHeldTicket(e){return this.removeHeldLabels([e])}async bestAvailable(e,t,i={}){if(this.salesClosed||this.bestAvailableBusy)return null;e=Math.max(1,Math.min(this.maxTickets,Math.floor(e))),this.confirmSeat&&this.cancelConfirm(),this.bestAvailableConfirm=!1,this.bestAvailableBusy=!0;let s=this.els.tray?.querySelector(".sl-ba-go");s&&(s.disabled=!0,s.classList.add("sl-busy"),s.innerHTML=`<span class="sl-ba-spin" aria-hidden="true"></span>${this.tf("picker.findingEllipsis","Finding\u2026")}`);try{let n=await this.controller.bestAvailable(e,t,{...i,ttlMs:this.opts.holdTtlMs});return n?(this.hold={holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.items},this.handedOff=!1,this.bookedShown=!1,this.gaQty.clear(),this.startHoldTimer(n.expiresAt),this.flashHeldSeats(this.hold),this.syncTray(),this.emitHoldChange(),i.preferPremium&&n.seats.length&&!n.seats.every(o=>o.commercial?.premium)&&this.toast((0,b.t)("picker.premiumFallbackNote",{count:e}),"neutral"),this.hold):null}catch(n){this.opts.onError?.(n);let o=n?.reason,a=o==="not_enough_together"?(0,b.t)("picker.couldNotFindSeatsTogether",{count:e}):o==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):o==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):o==="sold_out"?this.tf("picker.ticketTypeSoldOut","That ticket type is sold out. Try another ticket type."):o==="event_closed"?this.tf("picker.seatSalesClosedForEvent","Seat sales have closed for this event."):this.tf("picker.seatsNoLongerAvailableTryAnother","Those seats are no longer available. Try another quantity or ticket type.");return this.toast(a,"error"),null}finally{this.bestAvailableBusy=!1,this.syncTray()}}async release(){let e=this.hold,t=this.controller.currentHold(),i=!0;if(t)i=await this.controller.release();else if(e){let s=[...new Set([...(e.items??[]).map(n=>n.label),...(e.seats??[]).map(n=>n.label)])];if(s.length)try{await this.api.release(this.opts.event,s,e.holdId)}catch(n){this.opts.onError?.(n),i=!1}}if(!i){this.toast(this.tf("picker.couldNotReleaseTickets","Couldn't release your tickets. Your hold is unchanged."),"error");return}this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.syncTray(),this.emitHoldChange()}startRealtime(){if(!this.access?.configured||!this.pubApi||this.realtime)return;let e=this.opts.event;this.realtime=new oe({url:this.pubApi.subscribeUrl(e),mintTicket:()=>this.pubApi.subscribeTicket(e),onAccessUnavailable:t=>{this.opts.onAccessUnavailable?.(t),this.showAccessPanel(t)},sink:$e(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.syncPrices(),this.scheduleOfferRefresh(!0),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onSelectedObjectUnavailable:(t,i)=>{this.opts.onSelectedObjectUnavailable?.({labels:t,reason:i}),this.syncTray(),this.toast(i==="ineligible"?this.tf("picker.seatNoLongerYours","Some seats are no longer available to you. They have been removed from your order."):this.tf("picker.seatTaken","Someone else took a seat you had picked. It has been removed from your order."),"warning")}})}),this.realtime.start()}async refreshAccess(){return!this.access?.configured||!await this.access.refresh("manual")?!1:(this.dismissAccessPanel(),await this.controller.refresh(),this.realtime?this.realtime.restart():this.startRealtime(),!0)}showAccessPanel(e){if(this.destroyed||!this.root)return;this.dismissAccessPanel();let t=ys(e.reason,()=>{this.refreshAccess()});(this.regions?.["bottom-center"]??this.root).appendChild(t),this.accessEl=t}dismissAccessPanel(){this.accessEl?.remove(),this.accessEl=null}destroy(){this.destroyed=!0,this.realtime?.stop(),this.realtime=null,this.dismissAccessPanel(),this.access?.clear(),this.hold&&!this.handedOff&&this.controller.release(),this.closeConfirm(),this.dismissTableDialog(!1),de(this,!1),this.closeSeatView(),this.closeCheckoutPanel(),this.exit3d(),this.buyerAssetUrls.dispose(),this.stopHoldTimer(),this.toastTimer&&clearTimeout(this.toastTimer),this.liveTimer&&clearTimeout(this.liveTimer),this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerRefreshTimer=null,this.offerBoundaryTimer=null,this.offerVisibilityHandler&&(document.removeEventListener("visibilitychange",this.offerVisibilityHandler),this.offerVisibilityHandler=null);for(let e of this.motionTimers)clearTimeout(e);this.motionTimers.clear(),this.ro?.disconnect(),this.ro=null,this.framedFs&&this.setFramedFs(!1),this.escHandler&&document.removeEventListener("keydown",this.escHandler),this.fsChangeHandler&&document.removeEventListener("fullscreenchange",this.fsChangeHandler),this.fsEscHandler&&window.removeEventListener("keydown",this.fsEscHandler),this.controller.destroy(),this.projectionEl=null,this.root?.remove(),this.root=null,this.modalScrim&&(this.modalScrim.remove(),this.modalScrim=null,this.prevFocus?.isConnected&&this.prevFocus.focus({preventScroll:!0}),this.prevFocus=null)}};var Ce=require("@seatlayer/core");var Xn="https://api.seatlayer.io",Zn=6e4,Jn=2e3,eo=1e3,to=36e5,io=5e3,so=5e3,ro=15e3,no=12e4,oo=new Set(["preparing","commit_pending","abort_pending","expire_pending"]),K=class extends Error{constructor(){super("performance_group_destroyed"),this.name="PerformanceGroupDestroyedError"}};function ao(r){return new Promise(e=>setTimeout(e,r))}function gi(r){let e=Number(r.headers.get("Retry-After")??"1");return Number.isFinite(e)?Math.max(50,Math.min(io,e*1e3)):1e3}function Ye(r,e){return`/pub/performance-groups/${encodeURIComponent(r)}/operations/${encodeURIComponent(e)}`}function Qe(r){return r.replace(/^pghop_/,"").replace(/-/g,"").slice(-8).toUpperCase()}var bi=class{constructor(e,t,i){this.api=e;this.sink=t;this.intervalMs=i;this.stopped=!0;this.timer=null;this.prior=new Map}start(){this.stopped&&(this.stopped=!1,this.tick())}stop(){this.stopped=!0,this.timer&&clearTimeout(this.timer),this.timer=null}async tick(){try{let e=await this.api.objects(this.api.groupKey);if(this.stopped)return;let t=new Map(Object.entries(e.seats)),s=[...new Set([...this.prior.keys(),...t.keys()])].filter(n=>this.prior.get(n)!==t.get(n)).map(n=>({label:n,status:t.get(n)??"blocked"}));this.prior=t,s.length&&this.sink.applyStatuses(s),this.sink.onSections?.(e.hidden??[],e.closed??[])}catch(e){if(e instanceof K){this.stop();return}this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},Dt=class{constructor(e,t){this.descriptorCache=null;this.objectsCache=null;this.activePerformanceKey=null;this.selectionsByEvent=new Map;this.allocationsByHold=new Map;this.pendingOperationId=null;this.operationByHold=new Map;this.knownRevision=null;this.destroyed=!1;this.aborter=new AbortController;this.adoptFailure=null;this.settleTimer=null;this.settleOperationId=null;this.settleStartedAt=0;this.settleState=null;this.settleVisibility=null;this.lastRecovery={kind:"idle"};if(!e)throw new Error("seatlayer: `performanceGroup` key is required");this.groupKey=e,this.base=(t.apiBase??Xn).replace(/\/+$/,""),this.access=t.access,this.fetcher=t.fetch??globalThis.fetch.bind(globalThis),this.recoveryTimeoutMs=t.recoveryTimeoutMs??Zn,this.realtimePollMs=Math.max(500,t.realtimePollMs??Jn),this.selectionMode=t.selectionMode??"same_seat",this.partySize=t.partySize??null,this.onOperationState=t.onOperationState,this.onRecoveryState=t.onRecoveryState,this.onAvailability=t.onAvailability,this.access.onRenewed(s=>this.adoptSession(s));let i=this.readOperationRecord();i&&this.storedIsUndecided(i)&&(this.pendingOperationId=i.operationId)}get pendingOperation(){return this.pendingOperationId}get holdBlocked(){return!!this.adoptFailure||!!this.pendingOperationId&&this.lastRecovery.kind!=="idle"}async descriptor(){let e=await this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/descriptor`);return this.descriptorCache=e.performanceGroup,e.performanceGroup.revision&&(this.knownRevision=e.performanceGroup.revision),this.activePerformanceKey??=e.performanceGroup.performances[0]?.eventKey??null,e.performanceGroup}async chart(e){let[t,i]=await Promise.all([this.descriptorCache?Promise.resolve(this.descriptorCache):this.descriptor(),this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/chart`)]);return{doc:i,event:{key:t.key,name:t.name,salesClosed:t.state!=="active",venue:t.venue,startsAt:t.performances[0]?.startsAt??null,timezone:t.timezone,currency:t.currency,mode:t.mode,inventoryModelVersion:2}}}asset(e,t){return/^[a-zA-Z0-9._-]+$/.test(t)?this.blob(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/assets/${encodeURIComponent(t)}`):Promise.reject(new N(404,"not_found","not_found"))}async objects(e){let t=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/objects`+(this.selectionMode==="per_performance"?"?view=per-performance":""),i=await this.authorized(t,this.objectsCache?.revision?{headers:{"If-None-Match":`"${this.objectsCache.revision}"`}}:{});if(i.status!==304){if(!i.ok)return this.throwResponse(i);this.objectsCache=await this.responseJson(i)}if(!this.objectsCache)throw new N(502,"group_projection_unavailable","group_projection_unavailable");if(this.selectionMode==="same_seat"){let o=this.objectsCache;return this.noteAvailability(o,o.salesClosed,o),o}let s=this.objectsCache,n=s.performances.find(o=>o.eventKey===this.activePerformanceKey);if(!n)throw new N(409,"group_performance_unavailable","group_performance_unavailable");return this.noteAvailability(s,s.salesClosed||s.performances.some(o=>o.salesClosed),n),n}setSelectionMode(e,t){if(this.pendingOperationId||this.holdBlocked)throw new N(409,"group_operation_pending","group_operation_pending");e!==this.selectionMode&&(this.selectionMode=e,t!=null&&(this.partySize=t),this.objectsCache=null,this.selectionsByEvent.clear(),this.activePerformanceKey=this.descriptorCache?.performances[0]?.eventKey??this.activePerformanceKey)}setActivePerformance(e){if(this.descriptorCache&&!this.descriptorCache.performances.some(t=>t.eventKey===e))throw new N(404,"group_performance_not_found","group_performance_not_found");this.activePerformanceKey=e}setPerformanceSelections(e,t){this.selectionsByEvent.set(e,t.map(i=>({...i})))}allocationsForHold(e){return(this.allocationsByHold.get(e)??[]).map(t=>({eventKey:t.eventKey,items:t.items.map(i=>({...i}))}))}async hold(e,t,i,s){if(this.assertUsable(),s)throw new N(409,"group_hold_replace_unsupported","group_hold_replace_unsupported");let n=t.map(c=>c.label),o={labels:n};if(this.selectionMode==="per_performance"){if(!this.activePerformanceKey||!this.descriptorCache||!this.partySize)throw new N(409,"group_selection_incomplete","group_selection_incomplete");this.setPerformanceSelections(this.activePerformanceKey,t);let c=this.descriptorCache.performances.map(h=>({eventKey:h.eventKey,selections:this.selectionsByEvent.get(h.eventKey)??[]}));if(c.some(h=>h.selections.length!==this.partySize))throw new N(409,"group_selection_incomplete","group_selection_incomplete");o={selectionMode:"per_performance",allocations:c}}let a=this.pendingOperationId??`pghop_${crypto.randomUUID()}`;this.beginOperation(a),this.onOperationState?.({operationId:a,state:"preparing",decision:null});let l;try{l=await this.authorized(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/hold`,{method:"POST",body:JSON.stringify({operationId:a,...o,...i?{ttlMs:i}:{}})})}catch(c){if(c instanceof K)throw c;if(c instanceof ie)throw this.failOperation(a),c;return this.recover(a,n,Date.now()+this.recoveryTimeoutMs)}if(l.status===201||l.status===202||l.status===504){let c=await this.responseJson(l);return this.emit(c.operation),l.status===201?this.complete(c.operation):this.recover(a,n,Date.now()+this.recoveryTimeoutMs,gi(l))}if(l.status===503){let c=await l.clone().json().catch(()=>null);if((c?.code??c?.error)==="performance_group_abort_pending"){let h=c?.operation?.operationId??a;return this.beginOperation(h),c?.operation&&this.emit(c.operation),this.recover(h,n,Date.now()+this.recoveryTimeoutMs,gi(l))}}try{return await this.throwResponse(l,n)}catch(c){throw this.failOperation(a),c}}async release(e,t,i){this.assertUsable();let s=this.operationForHold(i),n=await this.json(`${Ye(this.groupKey,s)}/release`,{method:"POST",body:"{}"});return this.operationByHold.delete(i),this.allocationsByHold.delete(i),this.clearOperationRecord(),n}async resume(e,t){this.assertUsable();let i=this.operationForHold(t),s=await this.json(Ye(this.groupKey,i));return this.complete(s.operation)}async extend(e,t,i=12e4){this.assertUsable();let s=this.operationForHold(t),n=Math.max(eo,Math.min(to,Math.round(i))),o=await this.json(`${Ye(this.groupKey,s)}/extend`,{method:"POST",body:JSON.stringify({ttlMs:n})}),a=this.complete(o.operation);return{holdId:a.holdId,expiresAt:a.expiresAt}}bestAvailable(){return Promise.reject(new N(400,"group_best_available_unsupported","group_best_available_unsupported"))}socketUrl(){return""}createRealtime(e,t){return new bi(this,t,this.realtimePollMs)}operationIdForHold(e){return this.operationByHold.get(e)??this.readMapping(e)}rememberOperation(e,t){!e||!t||(this.operationByHold.set(e,t),this.writeMapping(e,t))}async restoreOperation(){let e=this.readOperationRecord();if(!e)return null;if(!this.storedIsUndecided(e)&&e.state!=="committed"&&e.state!=="booked")return this.clearOperationRecord(),null;this.pendingOperationId=e.operationId,this.emitRecovery({kind:"pending",operationId:e.operationId,phase:e.state==="undecided"?"unknown":e.state,longRunning:!1,reference:Qe(e.operationId)});let t;try{t=await this.authorized(Ye(this.groupKey,e.operationId))}catch(n){return n instanceof K||this.recoveryFailed(e.operationId,"request_failed"),null}if(t.status===404)return this.failOperation(e.operationId),null;if(!t.ok)return this.recoveryFailed(e.operationId,"request_failed"),null;let i=await this.responseJson(t);this.emit(i.operation);let s=i.operation.state;return s==="committed"||s==="booked"?(this.emitRecovery({kind:"idle"}),this.complete(i.operation)):s==="aborted"||s==="expired"?(this.failOperation(e.operationId),null):this.recover(e.operationId,[],Date.now()+this.recoveryTimeoutMs)}async retryRecovery(){this.assertUsable();let e=this.pendingOperationId??this.readOperationRecord()?.operationId??null;return e?(this.pendingOperationId=e,this.recover(e,[],Date.now()+this.recoveryTimeoutMs)):null}watchSettlement(e){if(this.destroyed)return;let t=this.operationIdForHold(e);!t||t===this.settleOperationId||(this.stopSettlementWatch(),this.settleOperationId=t,this.settleStartedAt=Date.now(),this.settleState="committed",typeof document<"u"&&(this.settleVisibility=()=>{document.hidden||!this.settleOperationId||this.pollSettlement()},document.addEventListener("visibilitychange",this.settleVisibility)),this.scheduleSettlementPoll())}stopSettlementWatch(){this.settleTimer&&clearTimeout(this.settleTimer),this.settleTimer=null,this.settleOperationId=null,this.settleState=null,this.settleVisibility&&typeof document<"u"&&document.removeEventListener("visibilitychange",this.settleVisibility),this.settleVisibility=null}scheduleSettlementPoll(){if(this.destroyed||!this.settleOperationId)return;if(this.settleTimer&&clearTimeout(this.settleTimer),typeof document<"u"&&document.hidden){this.settleTimer=null;return}let t=Date.now()-this.settleStartedAt>=no?ro:so;this.settleTimer=setTimeout(()=>{this.pollSettlement()},t)}settled(e){return e==="booked"||e==="expired"||e==="aborted"}async pollSettlement(){let e=this.settleOperationId;if(this.destroyed||!e)return;if(typeof document<"u"&&document.hidden){this.settleTimer&&clearTimeout(this.settleTimer),this.settleTimer=null;return}let t;try{let s=await this.authorized(Ye(this.groupKey,e));if(!s.ok)return this.scheduleSettlementPoll();t=(await this.responseJson(s)).operation}catch(s){return s instanceof K?this.stopSettlementWatch():this.scheduleSettlementPoll()}if(this.destroyed||this.settleOperationId!==e)return;let i=t.state!==this.settleState;if(this.settleState=t.state,i&&this.noteOperationState(e,t.state),this.settled(t.state)){this.stopSettlementWatch(),t.state!=="booked"&&this.clearOperationRecord(),this.emit(t);return}i&&this.emit(t),this.scheduleSettlementPoll()}destroy(){if(!this.destroyed){this.destroyed=!0,this.stopSettlementWatch(),this.access.onRenewed(void 0);try{this.aborter.abort()}catch{}}}operationRecordKey(){return`@seatlayer/performance-group-operation/v1/${encodeURIComponent(this.base)}/${encodeURIComponent(this.groupKey)}`}readOperationRecord(){try{let e=window.sessionStorage.getItem(this.operationRecordKey());if(!e)return null;let t=JSON.parse(e);return!t?.operationId||t.groupKey!==this.groupKey?null:t}catch{return null}}storedIsUndecided(e){return e.state==="undecided"||oo.has(e.state)}writeOperationRecord(e){try{window.sessionStorage.setItem(this.operationRecordKey(),JSON.stringify(e))}catch{}}clearOperationRecord(){try{window.sessionStorage.removeItem(this.operationRecordKey())}catch{}}beginOperation(e){this.pendingOperationId=e;let t=this.readOperationRecord();this.writeOperationRecord({operationId:e,groupKey:this.groupKey,state:"undecided",createdAt:t?.operationId===e?t.createdAt:Date.now()})}noteOperationState(e,t){let i=this.readOperationRecord();!i||i.operationId!==e||this.writeOperationRecord({...i,state:t})}failOperation(e){this.pendingOperationId=null,this.clearOperationRecord(),this.emitRecovery({kind:"idle"}),this.onOperationState?.({operationId:e,state:"aborted",decision:"abort"})}async adoptSession(e){if(this.destroyed)return;let t=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/session/adopt`;for(let s=0;s<2;s++){if(this.destroyed)return;try{if((await this.fetcher(`${this.base}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit",signal:this.aborter.signal})).ok){this.adoptFailure=null;return}}catch{}}if(this.destroyed)return;this.adoptFailure=new N(409,"performance_group_session_adopt_failed","performance_group_session_adopt_failed");let i=this.pendingOperationId??"";throw this.emitRecovery({kind:"failed",operationId:i,reference:i?Qe(i):"",reason:"session_adopt_failed",retryable:!1}),this.adoptFailure}async recover(e,t,i,s=100){let n=s,o=Date.now()+Math.min(8e3,Math.max(500,this.recoveryTimeoutMs/2)),a="unknown";for(;Date.now()<=i;){if(this.destroyed)throw new K;if(this.emitRecovery({kind:"pending",operationId:e,phase:a,longRunning:Date.now()>=o,reference:Qe(e)}),await ao(n),this.destroyed)throw new K;let l;try{l=await this.authorized(Ye(this.groupKey,e))}catch(p){if(p instanceof K)throw p;if(p instanceof ie)throw this.recoveryFailed(e,"request_failed"),p;n=Math.min(2e3,Math.max(100,n*2));continue}if(l.status===404){n=Math.min(1e3,Math.max(100,n*2));continue}if(!l.ok){this.recoveryFailed(e,"request_failed");try{return await this.throwResponse(l,t)}finally{this.pendingOperationId=null,this.clearOperationRecord()}}let h=(await this.responseJson(l)).operation;if(a=h.state,this.noteOperationState(e,h.state),this.emit(h),h.state==="committed"||h.state==="booked")return this.emitRecovery({kind:"idle"}),this.complete(h);if(h.state==="aborted"||h.state==="expired")throw this.failOperation(e),new N(409,"conflict","conflict",t.map(p=>({label:p,status:"held"})));n=gi(l)}throw this.recoveryFailed(e,"deadline"),new N(504,"performance_group_outcome_unknown","performance_group_outcome_unknown")}recoveryFailed(e,t){this.emitRecovery({kind:"failed",operationId:e,reference:Qe(e),reason:t,retryable:!0})}emitRecovery(e){if(this.destroyed)return;let t=this.lastRecovery.kind===e.kind&&JSON.stringify(this.lastRecovery)===JSON.stringify(e);this.lastRecovery=e,t||this.onRecoveryState?.(e)}noteAvailability(e,t,i){if(this.destroyed||!this.onAvailability)return;let s=e.state??this.descriptorCache?.state??"active",n=e.revision??null,o=!!n&&!!this.knownRevision&&n!==this.knownRevision;n&&!this.knownRevision&&(this.knownRevision=n);let a=i?.partial??{},l=Object.values(i?.seats??{});this.onAvailability({partial:a,freeCount:l.filter(c=>c==="free").length,blockedCount:Object.keys(i?.seats??{}).filter(c=>i.seats[c]!=="free"&&!(c in a)).length,state:s,salesClosed:!!t||s!=="active",revision:n,revisionChanged:o})}acceptRevision(e){this.knownRevision=e}complete(e){if(!e.hold||e.hold.expiresAt==null)throw new N(409,"group_hold_not_active","group_hold_not_active");this.pendingOperationId=null,this.noteOperationState(e.operationId,e.state),this.operationByHold.set(e.hold.id,e.operationId),this.writeMapping(e.hold.id,e.operationId);let t=e.hold.allocations??[];this.allocationsByHold.set(e.hold.id,t);let i=t.find(s=>s.eventKey===this.activePerformanceKey)?.items;return{holdId:e.hold.id,expiresAt:e.hold.expiresAt,items:i??e.hold.items??[]}}emit(e){this.destroyed||this.onOperationState?.({operationId:e.operationId,state:e.state,decision:e.decision})}operationForHold(e){let t=this.operationIdForHold(e);if(!t)throw new N(404,"group_hold_not_found","group_hold_not_found");return t}mappingKey(e){return`@seatlayer/performance-group-hold/v1/${encodeURIComponent(this.base)}/${encodeURIComponent(this.groupKey)}/${encodeURIComponent(e)}`}readMapping(e){try{return window.sessionStorage.getItem(this.mappingKey(e))}catch{return null}}writeMapping(e,t){try{window.sessionStorage.setItem(this.mappingKey(e),t)}catch{}}assertUsable(){if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure}async authorized(e,t={},i=!1){if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure;let s={...t.headers};t.body!==void 0&&(s["Content-Type"]="application/json");let n=await this.access.authorization(i?"unauthorized":"initial");if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure;if(!n)throw new Error("performance_group_buyer_access_required");s.Authorization=n;let o=await this.fetcher(`${this.base}${e}`,{method:t.method??"GET",headers:s,body:t.body,credentials:"omit",signal:this.aborter.signal});if(!i&&(o.status===401||o.status===403||o.status===422)){let a=await o.clone().json().catch(()=>null);if(await this.access.handleFailure(o.status,a?.code??a?.error))return this.authorized(e,t,!0)}return o}async json(e,t={}){let i=await this.authorized(e,t);return i.ok?this.responseJson(i):this.throwResponse(i)}async blob(e){let t=await this.authorized(e);return t.ok?t.blob():this.throwResponse(t)}async responseJson(e){return e.json()}async throwResponse(e,t=[]){let s=await e.json().catch(()=>null)??{},n=s.code??s.error??`request_failed_${e.status}`;throw e.status===409&&!s.conflicts?.length&&t.length&&(s.conflicts=t.map(o=>({label:o,status:"held"}))),new N(e.status,s.error??n,n,s.conflicts)}};var kr="seatlayer-performance-group-picker-style";function lo(){if(document.getElementById(kr))return;let r=document.createElement("style");r.id=kr,r.textContent=`
1740
+ </div>`;let r={};return i.querySelectorAll("[data-ref]").forEach(n=>{r[n.dataset.ref]=n}),{root:i,mapHost:r.map,els:r}}function Qr(s){let e=(t,i)=>{for(let r of s.querySelectorAll(`[${t}]`)){let n=r.getAttribute(t);if(!n)continue;let o=(0,Xe.t)(n);o!==n&&i(r,o)}};e("data-sl-t",(t,i)=>{t.textContent=i}),e("data-sl-a",(t,i)=>{t.setAttribute("aria-label",i)}),e("data-sl-ti",(t,i)=>{t.setAttribute("title",i)})}function Xr(s){let e=document.createElement("div");e.className="sl-floors on",e.setAttribute("role","group"),e.setAttribute("aria-label",s.tf("picker.chooseLevel","Choose level"));let t=[{id:"",name:s.tf("picker.allFloors","All floors")},...s.floors.map(n=>({id:n.id,name:n.name}))];for(let n of t){let o=document.createElement("button");o.type="button",o.dataset.floor=n.id,o.textContent=n.name,o.setAttribute("aria-pressed","false"),o.addEventListener("click",()=>s.onChoose(n.id)),e.appendChild(o)}let i=document.createElement("button");i.type="button",i.className="sl-floor-info",i.textContent="i";let r=s.tf("picker.floorHelp","All floors shows the complete venue. Choose one level to inspect and select its seats.");return i.setAttribute("aria-label",r),i.title=r,e.appendChild(i),e}function Zr(s,e,t){if(!s)return;let i=t?"":e;s.querySelectorAll("button[data-floor]").forEach(r=>{r.setAttribute("aria-pressed",String(r.dataset.floor===i))})}var Jr=require("@seatlayer/core"),Ze=require("@seatlayer/core/picker/minimapGeometry");function es(s,e){let t=new Pi(s);return t.build(e),t}var Pi=class{constructor(e){this.host=e;this.miniCanvas=null;this.miniBase=null;this.miniWrap=null;this.miniToggle=null;this.miniLabel=null;this.miniTf=null;this.miniDrag=null;this.miniSuppressClick=!1;this.userClosed=!1}build(e){if(!this.host.controller.getViewport())return;let i=document.createElement("button");i.type="button",i.className="sl-minimap-toggle",i.setAttribute("aria-label",g("picker.openVenueMap","Open venue overview map")),i.setAttribute("aria-expanded","false"),i.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6l5-2 8 3 5-2v13l-5 2-8-3-5 2zM8 4v13M16 7v13"/></svg>',e.appendChild(i),this.miniToggle=i;let r=document.createElement("div");r.className="sl-minimap",r.setAttribute("role","group");let n=document.createElement("div");n.className="sl-minimap-bar";let o=document.createElement("span");o.className="sl-minimap-label";let a=document.createElement("span");a.className="sl-minimap-key",a.setAttribute("aria-label",g("picker.minimapStateKey","Focused, selected, available, and inactive sections")),a.innerHTML='<i class="focused" title="Focused"></i><i class="selected" title="Selected"></i><i title="Available"></i><i class="inactive" title="Inactive"></i>';let l=document.createElement("button");l.type="button",l.className="sl-minimap-close",l.setAttribute("aria-label",g("picker.closeVenueMap","Close venue overview map")),l.textContent="\xD7",n.append(o,a,l);let c=document.createElement("canvas");c.tabIndex=0,c.setAttribute("role","application"),c.setAttribute("aria-label",g("picker.venueMapInstructions","Venue overview map. Drag the viewport, click a section, or use arrow keys to pan.")),r.append(n,c),e.appendChild(r),this.miniWrap=r,this.miniLabel=o,this.miniCanvas=c;let h=document.createElement("canvas");this.miniBase=h,i.addEventListener("click",()=>{let d=this.host.root()?.dataset.minimapOpen==="true";this.userClosed=d,this.setMinimapOpen(!d)}),l.addEventListener("click",()=>{this.userClosed=!0,this.setMinimapOpen(!1)}),c.addEventListener("click",d=>{if(this.miniSuppressClick){this.miniSuppressClick=!1;return}this.minimapJump(d)}),c.addEventListener("pointerdown",d=>this.minimapPointerDown(d)),c.addEventListener("pointermove",d=>this.minimapPointerMove(d)),c.addEventListener("pointerup",d=>this.minimapPointerUp(d)),c.addEventListener("pointercancel",d=>this.minimapPointerUp(d)),c.addEventListener("keydown",d=>this.minimapKeydown(d)),this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect()}setAutoOpen(e){if(this.miniWrap){if(!e){this.userClosed=!1,this.host.root()?.dataset.minimapOpen==="true"&&this.setMinimapOpen(!1,!1);return}this.userClosed||this.host.root()?.dataset.minimapOpen==="true"||this.setMinimapOpen(!0,!1)}}setMinimapOpen(e,t=!0){this.host.root()?.setAttribute("data-minimap-open",String(e)),this.miniToggle?.setAttribute("aria-expanded",String(e)),t&&(e?this.miniCanvas?.focus():this.miniToggle?.focus())}layoutMinimap(){let e=this.miniCanvas,t=this.miniBase,i=this.host.controller.getViewport()?.bounds;if(!e||!t||!i||!(i.width>0&&i.height>0))return;let r=196,n=146,o=6,a=i.width/Math.max(1,i.height),l=r,c=Math.round(r/a);c>n&&(c=n,l=Math.round(n*a)),l=Math.max(64,l),c=Math.max(48,c);let h=Math.min(2,window.devicePixelRatio||1);e.width=Math.round(l*h),e.height=Math.round(c*h),e.style.width=`${l}px`,e.style.height=`${c}px`,t.width=e.width,t.height=e.height,this.miniTf=(0,Ze.createMinimapTransform)(i,e.width,e.height,h,o)}syncMinimapLabel(){if(!this.miniLabel||!this.miniWrap)return;let e=this.host.controller.getFloors(),t=this.host.controller.isFloorOverview()?g("picker.allFloors","All floors"):e.find(h=>h.id===this.host.controller.getActiveFloorId())?.name??g("picker.venueOverview","Venue overview"),i=this.host.controller.getMinimapSnapshot().sections,n=i.find(h=>h.active)?.label??this.host.focusedSectionLabel(),o=n?`${t} \xB7 ${n}`:t;this.miniLabel.textContent=o;let a=i.filter(h=>h.state==="selected").length,l=i.filter(h=>h.state==="available").length,c=i.filter(h=>h.state==="inactive").length;this.miniWrap.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections.`:o),this.miniCanvas?.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections. ${g("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click a section, or use arrow keys to pan.")}`:`${o}. ${g("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click elsewhere, or use arrow keys to pan.")}`)}refreshMinimap(){this.miniBase&&(this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect())}drawMinimapStatic(){let e=this.miniBase,t=this.miniTf;if(!e||!t)return;let i=e.getContext("2d");if(!i)return;i.clearRect(0,0,e.width,e.height);let r=d=>d*t.scale+t.offX,n=d=>d*t.scale+t.offY,o=this.host.cssVar("--sl-line")||"rgba(139,147,167,.5)",a=this.host.cssVar("--sl-muted")||"#8b93a7",l=this.host.cssVar("--sl-accent")||"#6e7bff",c=this.host.cssVar("--sl-success")||"#22a06b",h=this.host.controller.getMinimapSnapshot();for(let d of h.sections)d.outline.length<3||(i.beginPath(),d.outline.forEach((p,m)=>m===0?i.moveTo(r(p.x),n(p.y)):i.lineTo(r(p.x),n(p.y))),i.closePath(),i.globalAlpha=d.state==="inactive"?.18:d.state==="selected"?.72:.34,i.fillStyle=d.state==="inactive"?a:d.state==="selected"?l:c,i.fill(),i.globalAlpha=.82,i.lineWidth=Math.max(1,t.dpr),i.strokeStyle=o,i.stroke(),d.active&&(i.globalAlpha=1,i.lineJoin="round",i.lineWidth=Math.max(4,t.dpr*3.5),i.strokeStyle=this.host.cssVar("--sl-surface")||"#fff",i.stroke(),i.lineWidth=Math.max(2,t.dpr*1.75),i.strokeStyle=l,i.stroke()));if(i.globalAlpha=1,!h.sections.length){let d=Math.max(1,t.dpr);for(let p of h.seats)i.globalAlpha=p.state==="inactive"?.22:.78,i.fillStyle=p.state==="inactive"?a:p.state==="selected"?l:c,i.beginPath(),i.arc(r(p.x),n(p.y),d,0,Math.PI*2),i.fill();i.globalAlpha=1}}drawMinimapRect(){let e=this.miniCanvas,t=this.miniBase,i=this.miniTf;if(!e||!t||!i)return;let r=e.getContext("2d");if(!r)return;r.clearRect(0,0,e.width,e.height),r.drawImage(t,0,0);let n=this.host.controller.getViewport();if(!n)return;let o=(0,Ze.minimapViewportPlan)(n.visible,i,e.width,e.height,Math.max(2,i.dpr*2)),a=this.host.cssVar("--sl-text")||"#12151c",l=this.host.cssVar("--sl-surface")||"#fff";r.save(),r.globalAlpha=.1,r.fillStyle=a,r.fillRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),r.globalAlpha=.9,r.lineJoin="round",r.lineWidth=Math.max(4,i.dpr*3.25),r.strokeStyle=l,r.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),r.globalAlpha=1,r.lineWidth=Math.max(2,i.dpr*1.75),r.strokeStyle=a,r.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),o.clipped&&Object.values(o.clippedEdges).some(Boolean)&&(r.setLineDash([Math.max(3,i.dpr*3),Math.max(2,i.dpr*2)]),r.strokeRect(o.clipped.x,o.clipped.y,o.clipped.width,o.clipped.height)),r.restore()}minimapWorldPoint(e){let t=this.miniCanvas,i=this.miniTf;if(!t||!i)return null;let r=t.getBoundingClientRect(),n=(e.clientX-r.left)*(t.width/Math.max(1,r.width)),o=(e.clientY-r.top)*(t.height/Math.max(1,r.height));return{...(0,Ze.minimapPointToWorld)({x:n,y:o},i),px:n,py:o}}minimapPointerDown(e){let t=this.minimapWorldPoint(e),i=this.host.controller.getViewport()?.visible;!t||!i||!(t.x>=i.x&&t.x<=i.x+i.width&&t.y>=i.y&&t.y<=i.y+i.height)||(this.miniDrag={pointerId:e.pointerId,offsetX:t.x-(i.x+i.width/2),offsetY:t.y-(i.y+i.height/2),startX:e.clientX,startY:e.clientY,moved:!1},this.miniCanvas?.setPointerCapture(e.pointerId),this.miniCanvas?.classList.add("sl-dragging"),e.preventDefault())}minimapPointerMove(e){let t=this.miniDrag;if(!t||t.pointerId!==e.pointerId)return;let i=this.minimapWorldPoint(e);i&&(!t.moved&&Math.hypot(e.clientX-t.startX,e.clientY-t.startY)>2&&(t.moved=!0,this.host.controller.clearSectionFocus()),this.host.controller.panToWorld({x:i.x-t.offsetX,y:i.y-t.offsetY}),e.preventDefault())}minimapPointerUp(e){let t=this.miniDrag;!t||t.pointerId!==e.pointerId||(this.miniSuppressClick=t.moved,this.miniDrag=null,this.miniCanvas?.classList.remove("sl-dragging"),this.miniCanvas?.hasPointerCapture(e.pointerId)&&this.miniCanvas.releasePointerCapture(e.pointerId))}minimapKeydown(e){let t=this.host.controller.getViewport()?.visible;if(!t)return;if(e.key==="Home"){this.host.controller.overview(),e.preventDefault();return}let i=e.key==="ArrowLeft"?-t.width*.2:e.key==="ArrowRight"?t.width*.2:0,r=e.key==="ArrowUp"?-t.height*.2:e.key==="ArrowDown"?t.height*.2:0;!i&&!r||(this.host.controller.clearSectionFocus(),this.host.controller.panToWorld({x:t.x+t.width/2+i,y:t.y+t.height/2+r}),e.preventDefault())}minimapJump(e){let t=this.minimapWorldPoint(e);if(t){for(let i of this.host.controller.getMinimapSnapshot().sections)if(!(i.state==="inactive"||i.outline.length<3)&&(0,Jr.pointInPolygon)(t,i.outline)){this.host.controller.focusSection(i.id);return}this.host.controller.clearSectionFocus(),this.host.controller.panToWorld(t)}}};var Xt=require("@seatlayer/core");var to=12;function ts(s,e){let t=e.floors(),i=new Set(t.map(x=>x.label.trim().toLocaleLowerCase())),r=e.zones().filter(x=>x.seatCount>0&&!i.has(x.label.trim().toLocaleLowerCase())),n=e.sections().filter(x=>x.seatCount>0&&!i.has(x.label.trim().toLocaleLowerCase())),o=r.length>1?[]:n,a=t.length>1,l=r.length>1,c=o.length>1;if(!a&&!l&&!c)return;let h=document.createElement("div");h.className="sl-view3d-nav";let d=document.createElement("button");d.type="button",d.className="sl-view3d-nav-toggle",d.setAttribute("aria-expanded","false");let p='<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M15.5 8.5l-2 5-5 2 2-5z"/></svg>',m=document.createElement("span");d.innerHTML=p,d.appendChild(m);let f=x=>{h.classList.toggle("is-open",x),d.setAttribute("aria-expanded",String(x)),m.textContent=x?g("picker.closeVenueNav","Close"):a&&(l||c)?g("picker.levelsAndAreas","Levels & areas"):a?g("picker.levels","Levels"):g("picker.areas","Areas")};d.addEventListener("click",()=>f(!h.classList.contains("is-open"))),h.addEventListener("keydown",x=>{x.key!=="Escape"||!h.classList.contains("is-open")||(x.preventDefault(),x.stopPropagation(),f(!1),d.focus())}),f(!1),h.appendChild(d);let b=x=>{},C=x=>{};if(a){let x=document.createElement("div");x.setAttribute("role","group"),x.setAttribute("aria-label",g("picker.levels","Levels"));let R=[];C=H=>{R.forEach(M=>{M.setAttribute("aria-pressed",String((M.dataset.floor===""?null:Number(M.dataset.floor))===H))})};let y=H=>{e.focusFloor(H)&&(C(H),b(H))},E=(H,M)=>{let O=document.createElement("button");O.type="button",O.textContent=H,O.dataset.floor=M===null?"":String(M),O.setAttribute("aria-pressed",String(M===null)),O.addEventListener("click",()=>{y(M),f(!1)}),R.push(O),x.appendChild(O)};E(g("picker.allLevels","All levels"),null);for(let H of t)E(H.label||(0,Xt.t)("picker.levelNumber",{number:H.index+1}),H.index);h.appendChild(x)}if(l||c){let x=document.createElement("div");x.setAttribute("role","group"),x.setAttribute("aria-label",g("picker.areas","Areas"));let R=l?r.map(E=>({id:E.id,label:E.label||E.id,go:()=>{e.focusZone(E.id)}})):o.map(E=>({id:E.id,label:E.label||E.id,floorIndex:E.floorIndex,go:()=>{e.focusSection(E.id),Number.isFinite(E.floorIndex)&&C(E.floorIndex)}})),y=E=>{let H=l||E===null?R:R.filter(M=>M.floorIndex===void 0||M.floorIndex===E);if(x.replaceChildren(),!H.length){x.remove();return}if(x.isConnected||h.appendChild(x),!l&&H.length>to){let M=document.createElement("select");M.setAttribute("aria-label",g("picker.jumpToSection","Jump to section"));let O=document.createElement("option");O.value="",O.textContent=g("picker.jumpToSection","Jump to section"),M.appendChild(O);for(let u of H){let k=document.createElement("option");k.value=u.id,k.textContent=u.label,M.appendChild(k)}M.addEventListener("change",()=>{H.find(u=>u.id===M.value)?.go()}),x.appendChild(M);return}for(let M of H){let O=document.createElement("button");O.type="button",O.textContent=M.label,O.addEventListener("click",()=>{M.go(),f(!1)}),x.appendChild(O)}};b=y,y(null)}s.appendChild(h)}var Zt=class{constructor(e){this.host=e;this.chip=null}sync(){let e=this.host.overlay();if(!e||this.host.savedSeatIds().length===0){this.chip?.remove(),this.chip=null;return}let t=this.chip;if(!t){t=document.createElement("div"),t.className="sl-view3d-compare-saved",t.setAttribute("role","group"),t.setAttribute("aria-label",g("picker.savedSeatComparison","Saved seat comparison"));let n=document.createElement("button");n.type="button",n.className="main",n.addEventListener("click",()=>{this.host.savedSeatIds().length>1?this.host.openComparison():this.host.toast(g("picker.chooseAnotherToCompare","Choose another seat to compare."),"neutral")});let o=document.createElement("button");o.type="button",o.className="clear",o.textContent="\xD7",o.setAttribute("aria-label",g("picker.clearSavedSeatComparison","Clear saved seat comparison")),o.addEventListener("click",()=>this.host.clearComparison()),t.append(n,o),e.appendChild(t),this.chip=t}let i=this.host.savedSeatIds().length,r=t.querySelector(".main");r&&(r.textContent=i>1?(0,Xt.t)("picker.compareCount",{count:i}):g("picker.oneSeatSaved","1 seat saved"),r.setAttribute("aria-label",i>1?(0,Xt.t)("picker.openComparisonOfSeats",{count:i}):g("picker.oneSeatSavedChooseAnother","One seat saved; choose another to compare")))}remove(){this.chip?.remove(),this.chip=null}mainButton(){return this.chip?.querySelector(".main")??null}};var mt=require("@seatlayer/core");function is(s){return Array.isArray(s)?s.reduce((e,t)=>t.type==="minimumSelectedPlaces"?Math.max(e,t.minimum):e,0):0}function Ai(s,e,t=!1){let i=s.violations[0];return i==="numberOfPlacesToSelect"?s.remaining>0?(0,mt.t)("picker.selectExactMore",{count:s.remaining}):(0,mt.t)("picker.selectExactCount",{count:s.required}):i==="minimumSelectedPlaces"?(0,mt.t)("picker.selectMinimumMore",{count:s.remaining}):t?e("picker.adjustSeatSelection","Adjust seat selection"):i==="consecutiveSeats"?e("picker.selectSeatsTogether","Choose seats together in the same row and ticket category."):(0,mt.t)("picker.orphanHint")}var ne=require("@seatlayer/core");function ft(s){let e=Math.max(0,s),t=Math.floor(e/6e4),i=String(Math.floor(e%6e4/1e3)).padStart(2,"0");return`${t}:${i}`}function rs(s){let e=s.performanceLabel?`<div class="sl-chip-when">${V(s.performanceLabel)}</div>`:"",t=s.performanceDates?.labels.length?`<div class="sl-chip-dates"><span class="sl-chip-dates-summary">${V(s.performanceDates.summary)}</span><span class="sl-chip-date-list">${s.performanceDates.labels.map(i=>`<span class="sl-chip-date">${V(i)}</span>`).join("")}</span></div>`:"";return e+io(s)+t}function io({d:s,area:e,label:t,objectType:i,quantity:r=1,identity:n}){let o=h=>String(h??"\u2014").replace(/[&<>"]/g,d=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[d]),a=i==="ga"?"ga":s?.objectType??i,l=n?.displayType?.trim()||s?.displayType?.trim()||e?.displayType?.trim()||(a==="table"?g("picker.table","Table"):a==="booth"?g("picker.booth","Booth"):a==="ga"?g("picker.generalAdmission","General admission"):g("picker.row","Row")),c=n?.rowLabel??n?.displayLabel??s?.rowLabel??s?.displayLabel??e?.displayLabel??e?.label??t;return a==="table"&&n?.bookingMode?`<div class="sl-chip-id"><span class="fld sec"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(c)}</span></span><span class="fld mid"><span class="sl-chip-eb">${g("picker.guests","Guests")}</span><span class="val">${r}</span></span></div>`:a==="ga"?`<div class="sl-chip-id"><span class="fld sec"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(c)}</span></span>`+(r>1?`<span class="fld mid"><span class="sl-chip-eb">${g("picker.tickets","Tickets")}</span><span class="val">${r}</span></span>`:"")+"</div>":a==="booth"?'<div class="sl-chip-id">'+(s?.sectionLabel?`<span class="fld sec"><span class="sl-chip-eb">${g("picker.section","Section")}</span><span class="val">${o(s.sectionLabel)}</span></span>`:"")+`<span class="fld mid"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(c)}</span></span></div>`:!s?.sectionLabel&&!s?.rowLabel&&!s?.seatNumber?`<div class="sl-chip-id"><span class="fld sec"><span class="sl-chip-eb">${g("picker.seat","Seat")}</span><span class="val">${o(c)}</span></span></div>`:'<div class="sl-chip-id">'+(s.sectionLabel?`<span class="fld sec"><span class="sl-chip-eb">${g("picker.section","Section")}</span><span class="val">${o(s.sectionLabel)}</span></span>`:"")+(s.rowLabel?`<span class="fld mid"><span class="sl-chip-eb">${o(l)}</span><span class="val">${o(Ee(s))}</span></span>`:"")+(s.seatNumber?`<span class="fld mid"><span class="sl-chip-eb">${g("picker.seat","Seat")}</span><span class="val">${o(s.seatNumber)}</span></span>`:"")+"</div>"}function ss(s,e){let t=V(s),i=e?V(e):"";return`<div class="sl-chip-rail"><button type="button" class="rm" aria-label="${t}"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button>`+(e?`<button type="button" class="view" data-view-label="${i}" aria-label="${V((0,ne.t)("picker.viewFromSeat",{label:e}))}"><svg viewBox="0 0 24 24"><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/></svg></button>`:"")+"</div>"}function ns(s){return s.salesClosed||s.hasHold||s.ctaPhase!=="idle"||s.formOpen||s.room<=0?null:Math.max(1,Math.min(s.wanted,s.room))}function os({count:s,total:e,pendingCount:t,ctaPhase:i,hasHold:r,salesClosed:n,fromPrice:o,addMore:a,holdTime:l,money:c}){if(s&&i==="holding")return`<span>${g("picker.securingSeats","Securing your seats\u2026")}</span>`;if(s&&i==="checkout")return`<span>${(0,ne.t)("picker.peekSecured",{count:s,total:c(e)})}</span>`;if(s){let h=!!r;return`<span class="sl-peek-sum">${(0,ne.tCount)("picker.peekTicketsTotal",s,{total:c(e)})}</span>`+(a?`<button type="button" class="go ghost sl-sheet-go" data-act="best" aria-label="${g("picker.findTogetherInstead","Find seats together instead")}">\u2726 +${a}</button>`:"")+`<button type="button" class="go sl-sheet-go" data-act="${h?"checkout":"open"}">${r?t?g("picker.secureMore","Secure more"):g("picker.continue","Continue"):g("picker.review","Review")}`+(r&&l?`<span class="sl-peek-time" aria-hidden="true">${l}</span>`:"")+"</button>"}else return n?`<span>${g("picker.salesClosedPill","Sales are closed")}</span>`:(o!=null?`<span>${(0,ne.t)("picker.peekFromPrice",{price:c(o)})}</span>`:`<span>${g("picker.pickYourSeats","Pick your seats")}</span>`)+`<button type="button" class="go sl-sheet-go" data-act="open">${g("picker.bestSeatsStar","\u2726 Best seats")}</button>`}function Mi(s,e=Date.now()){return(0,ne.t)("picker.holdReassurance",{time:ft(s-e)})}function as(s){return s.confirming?`<div class="sl-ba" role="alert"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${g("picker.replaceCurrentChoices","Replace your current choices?")}</div><div class="sl-ba-replace"><b>${(0,ne.t)("picker.willFindSeatsTogether",{count:s.quantity})}</b><span>${g("picker.manualTicketsRemovedNote","Your manually selected tickets will be removed only after a new group is secured.")}</span></div><div class="sl-ba-actions"><button type="button" data-ba-cancel>${g("picker.keepMine","Keep mine")}</button><button type="button" class="replace" data-ba-replace>${g("picker.findNewSeats","Find new seats")}</button></div></div>`:`<div class="sl-ba"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${g("picker.findBestSeatsTogether","Find the best seats together")}</div><div class="sl-ba-copy"><span class="wide">${g("picker.willChooseClosestGroup","We\u2019ll choose the closest available group for you.")}</span><span class="narrow">${g("picker.closestGroupChosenInstantly","Closest available group, chosen instantly.")}</span></div>`+(s.offerPremium?`<button type="button" class="sl-ba-premium${s.premium?" on":""}" data-ba-premium aria-pressed="${s.premium?"true":"false"}"><span class="star" aria-hidden="true">\u2605</span>${g("picker.bestSeatsPremium","Best seats")}</button>`:"")+(s.categories.length>1?`<select aria-label="${V(g("picker.preferredTicketType","Preferred ticket type"))}" data-ba-cat><option value="">${V(g("picker.anyTicketType","Any ticket type"))}</option>`+s.categories.map(e=>`<option value="${V(e.key)}"${s.selectedCategory===e.key?" selected":""}>${V(e.label)}</option>`).join("")+"</select>":'<span aria-hidden="true"></span>')+(s.zones.length?`<select aria-label="${g("picker.preferredVenueZone","Preferred venue zone")}" data-ba-zone><option value="">${g("picker.anyVenueZone","Any venue zone")}</option>`+s.zones.map(e=>`<option value="${V(e.id)}"${s.selectedZone===e.id?" selected":""}>${V(e.label)}</option>`).join("")+"</select>":"")+`<div class="sl-ba-qty"><button type="button" data-ba="-1" aria-label="${g("picker.fewerSeats","Fewer seats")}">\u2212</button><span>${s.quantity}</span><button type="button" data-ba="1" aria-label="${g("picker.moreSeats","More seats")}">+</button></div><button type="button" class="sl-ba-go${s.busy?" sl-busy":""}"${s.busy?" disabled":""}>`+(s.busy?`<span class="sl-ba-spin" aria-hidden="true"></span>${g("picker.findingBestSeats","Finding the best seats\u2026")}`:(0,ne.tCount)("picker.findBestSeatsCount",s.quantity))+"</button>"+(s.reopened?`<button type="button" class="sl-ba-back" data-ba-close>${g("picker.keepMyPicks","Keep my picks")}</button>`:"")+"</div>"}function ls(s){if(s.salesClosed&&!s.hasPicks){let e=s.whenText?`<span class="when">${V(s.whenText)}</span>`:"";return`<div class="sl-closed-note" role="status"><b>${g("picker.salesClosedPill","Sales are closed")}</b><span>${g("picker.salesClosedCopy","Ticket sales for this event have ended.")}${e}</span></div>`}return s.hasPicks?"":s.hasGaAreas?`<div class="sl-tray-hint">${s.seated?g("picker.trayHintTapOrStanding","Tap a seat on the map \u2014 or grab standing tickets below."):g("picker.gaTrayHintTapArea","Tap an area on the map to choose tickets.")}</div>`:`<div class="sl-tray-hint">${s.groupMode==="per_performance"?g("picker.groupPerPerformanceTrayHint","Choose seats for this performance, then complete every date above."):s.groupMode?g("picker.groupTrayHint","Choose seats once \u2014 the same seats will be held for every performance."):g("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you.")}</div>`}function cs(s){return{title:(0,ne.t)("picker.securedCount",{count:s.secured}),copy:s.pendingCount?(0,ne.t)("picker.moreSelectedCount",{count:s.pendingCount}):Mi(s.expiresAt),change:s.releasing?g("picker.releasingEllipsis","Releasing\u2026"):g("picker.change","Change")}}var ds=Symbol("seatlayer.performance-group-picker");function ps(s,e){return Object.defineProperty(s,ds,{configurable:!1,enumerable:!1,value:Object.freeze({...e})}),s}function hs(s){return s[ds]??null}var Pe=require("@seatlayer/core");function Li(s,e,t){try{return new Intl.DateTimeFormat(e,{...t,...s.timezone?{timeZone:s.timezone}:{}}).format(new Date(s.startsAt))}catch{return new Date(s.startsAt).toLocaleString(e)}}var Jt=(s,e)=>Li(s,e,{dateStyle:"medium"}),ei=(s,e)=>Li(s,e,{timeStyle:"short"}),ti=(s,e)=>Li(s,e,{weekday:"short",day:"numeric",month:"short"});function us(s,e,t,i){return!s.length||s.length>=e?null:{summary:i,labels:s.map(r=>`${Jt(r,t)} \xB7 ${ei(r,t)}`)}}function ro(s,e){let t=new Set(e);return s.map(i=>({...i,free:!t.has(i.eventKey)}))}function ms(s,e){let t=[...s];if(t.length<=1)return t[0]??"";try{return new Intl.ListFormat(e,{style:"long",type:"conjunction"}).format(t)}catch{return t.join(", ")}}function so(s,e,t="",i=!1){if(!s.length)return"";let r=s.map(n=>{let o=n.free?e.free:e.blocked,a=i&&n.free?`<input class="sl-night-choice" type="checkbox" data-pg-event-key="${S(n.eventKey)}" aria-label="${S(`${n.shortDate}: ${o}`)}" checked>`:"";return`<li class="sl-night${n.free?" ok":" no"}" aria-label="${S(`${n.shortDate}: ${o}`)}">`+a+`<i class="sl-night-dot" aria-hidden="true"></i><span class="d">${S(n.shortDate)}</span><span class="st">${S(o)}</span></li>`}).join("");return`<div class="sl-tip-nights"><div class="sl-tip-nights-title">${S(e.title)}</div><ul class="sl-nightstrip">${r}</ul><p class="sl-tip-nights-note">${S(e.notAvailableOn)}</p>`+t+"</div>"}function no(s){return s.selectPartialLabel&&s.pinned?`<button type="button" class="sl-tip-switch" data-pg-select-partial>${S(s.selectPartialLabel)}</button>`:s.switchLabel&&s.pinned?`<button type="button" class="sl-tip-switch" data-pg-switch-mode>${S(s.switchLabel)}</button>`:s.switchLabel||s.selectPartialLabel?"":`<p class="sl-tip-advice">${S(s.advice)}</p>`}function oo(s){return Number(s.available)+Number(s.selected)+Number(s.partial)+Number(s.unavailable)}function fs(s,e,t){if(oo(s)<2)return"";let i=(n,o,a="")=>`<li class="sl-pg-legend-item"><i class="sl-pg-sw ${n}"${a}></i>${S(o)}</li>`,r=[];return s.available&&r.push(i("sl-pg-sw-free",e.available,` style="background:${S(t)}"`)),s.selected&&r.push(i("sl-pg-sw-sel",e.selected)),s.partial&&r.push(i("sl-pg-sw-split",e.partial,` style="--sl-pg-sw-cat:${S(t)}"`)),s.unavailable&&r.push(i("sl-pg-sw-off",e.unavailable)),`<ul class="sl-pg-legend-list" aria-label="${S(e.title)}">${r.join("")}</ul>`}function gs(s,e){if(!s.length)return"";let t=s.map(i=>{let r=i.labels.length?i.labels.join(", "):e.empty;return`<li class="sl-pg-night-row${i.labels.length?"":" empty"}${i.active?" active":""}" role="button" tabindex="0"${i.active?' aria-current="true"':""} data-event-key="${S(i.eventKey)}"><span class="n">${S(i.name)}</span><span class="s">${S(r)}</span></li>`}).join("");return`<div class="sl-pg-nights" role="group" aria-label="${S(e.title)}"><div class="sl-pg-nights-title">${S(e.title)}</div><ul class="sl-pg-nights-list">${t}</ul></div>`}function Hi(s,e){if(s?.kind!=="partial"||!e?.length)return null;let t=s.data?.blockedEventKeys??[],i=ro(e,t);return{states:i,missing:i.filter(r=>!r.free).map(r=>r.shortDate)}}function bs(s,e){return s?so(s.states,{title:g("picker.group.partlyAvailableTitle","Free on some nights only"),free:g("picker.group.nightFree","Free"),blocked:g("picker.group.nightBlocked","Not available"),notAvailableOn:(0,Pe.t)("picker.group.notAvailableOn",{dates:ms(s.missing,e.locale)})},no({switchLabel:e.switchLabel??null,selectPartialLabel:e.selectPartialLabel??null,pinned:e.pinned,advice:g("picker.group.pickSeatFreeEveryNight","Pick a seat that is free every night.")}),!!e.selectPartialLabel&&!!e.pinned):""}function ao(s,e,t,i){if(!s.length)return"";let r=new Set(e),n=new Set(t),o=s.map(a=>{let l=r.has(a.eventKey);return`<li class="sl-confirm-date${l?"":" blocked"}"><label><input type="checkbox" data-pg-confirm-event-key="${S(a.eventKey)}" aria-label="${S(`${a.shortDate}: ${l?i.available:i.unavailable}`)}"${l&&n.has(a.eventKey)?" checked":""}${l?"":" disabled"}><span class="sl-confirm-date-label">${S(a.shortDate)}</span><span class="sl-confirm-date-state">${S(l?i.available:i.unavailable)}</span></label></li>`}).join("");return`<fieldset class="sl-confirm-dates" data-pg-confirm-dates><legend>${S(i.title)}</legend><p class="sl-confirm-dates-copy">${S(i.copy)}</p><label class="sl-confirm-date-all"><input type="checkbox" data-pg-confirm-all><span>${S(i.selectAll)}</span></label><ul>${o}</ul><p class="sl-confirm-dates-summary" data-pg-confirm-summary aria-live="polite"></p></fieldset>`}function vs(s,e,t,i){let r=e.availableEventKeys(t);return ao(s,r,e.includedEventKeys(),{title:i("picker.group.confirmDatesTitle","Choose performance dates"),copy:r.length===s.length?i("picker.group.confirmAllDatesCopy","This seat is available for all {count} dates. Keep all selected, or remove dates you do not want.").replace("{count}",String(s.length)):i("picker.group.confirmPartialDatesCopy","This seat is available for {available} of {total} dates. Choose one date or keep every available date.").replace("{available}",String(r.length)).replace("{total}",String(s.length)),selectAll:i("picker.group.confirmSelectAll","Select all available dates"),available:i("picker.group.nightFree","Available"),unavailable:i("picker.group.nightBlocked","Unavailable")})}function ys(s){return[...s.querySelectorAll("[data-pg-confirm-event-key]")].filter(e=>e.checked&&!e.disabled).map(e=>e.dataset.pgConfirmEventKey).filter(Boolean)}function xs(s,e,t,i){let r=[...s.querySelectorAll("[data-pg-confirm-event-key]")];if(!e||!r.length)return;let n=s.querySelector(".sl-confirm-add"),o=s.querySelector("[data-pg-confirm-all]"),a=()=>{let l=r.filter(d=>!d.disabled),c=ys(s).length;o&&(o.checked=c===l.length,o.indeterminate=c>0&&c<l.length);let h=s.querySelector("[data-pg-confirm-summary]");h&&(h.textContent=c===l.length?t("picker.group.confirmAllSelected","All {count} available dates are selected.").replace("{count}",String(c)):t("picker.group.confirmSelectedOfAvailable","{selected} of {available} available dates selected.").replace("{selected}",String(c)).replace("{available}",String(l.length))),n.disabled=c===0,n.textContent=c?e.label(c):t("picker.group.confirmChooseOne","Choose at least 1 date"),i()};r.forEach(l=>l.addEventListener("change",a)),o?.addEventListener("change",()=>{r.filter(l=>!l.disabled).forEach(l=>{l.checked=o.checked}),a()}),a()}async function ws(s,e,t){if(!s||!t||!s.querySelector("[data-pg-confirm-event-key]"))return!0;let i=ys(s);if(!i.length)return!1;let r=s.querySelector(".sl-confirm-add");return r?.setAttribute("aria-busy","true"),r&&(r.disabled=!0),await t.apply(e,i)?!0:(r?.removeAttribute("aria-busy"),r?.isConnected&&(r.disabled=!1),!1)}function ks(s,e,t){return s?(0,Pe.t)("picker.group.seatPartlyAvailable",{label:e,free:s.states.length-s.missing.length,total:s.states.length,dates:ms(s.missing,t)}):""}function Ss(s,e){let t=s.map((i,r)=>{let n=i.state==="done"?e.done:i.state==="current"?e.current:e.upcoming;return`<li class="sl-pg-step-item" data-step="${S(i.id)}" data-state="${S(i.state)}"${i.state==="current"?' aria-current="step"':""}><span class="i" aria-hidden="true">${i.state==="done"?"\u2713":String(r+1)}</span><span class="l">${S(i.label)}</span><span class="sl-pg-sr">${S(n)}</span></li>`}).join("");return`<ol class="sl-pg-steps" aria-label="${S(e.label)}">${t}</ol>`}function Ri(s,e){return`<ul class="sl-pg-cards">${s.map(i=>`<li class="sl-pg-card" data-event-key="${S(i.eventKey)}"><span class="n">${S(i.name)}</span><time datetime="${S(i.iso)}"><span class="d">${S(i.date)}</span><span class="t">${S(i.time)}</span></time></li>`).join("")}</ul><p class="sl-pg-included">${S(e)}</p>`}function Cs(s){let e=s.rows.map(t=>`<li class="sl-pg-pane-row${t.labels.length?"":" empty"}" data-event-key="${S(t.eventKey)}"><span class="n">${S(t.name)}</span><span class="s">${S(t.labels.length?t.labels.join(", "):s.empty)}</span></li>`).join("");return`<div class="sl-pg-pane-title">${S(s.title)}</div><ul class="sl-pg-pane-list">${e}</ul>`+(s.note?`<p class="sl-pg-pane-note">${S(s.note)}</p>`:"")+(s.total?`<div class="sl-pg-pane-total"><span>${S(s.total.label)}</span><b>${S(s.total.amount)}</b></div>`:"")+(s.holdStatus?`<p class="sl-pg-hold-status" role="status">${S(s.holdStatus)}</p>`:"")}function Es(s){let e=Math.max(0,s);return`${Math.floor(e/6e4)}:${String(Math.floor(e/1e3)%60).padStart(2,"0")}`}function Ts(s,e){if(!s||s.seats<=0)return"";if(e==="same_seat"){let t=s.perPerformance??s.seats;return s.totalPerformances&&s.performances<s.totalPerformances?(0,Pe.tCount)("picker.group.performancesChosenOf",t,{chosen:s.performances,total:s.totalPerformances}):(0,Pe.tCount)("picker.group.seatsEveryPerformance",t)}return s.perPerformance!=null&&s.performancesChosen===s.performances?(0,Pe.tCount)("picker.group.seatsPerPerformance",s.seats,{per:s.perPerformance}):(0,Pe.tCount)("picker.group.performancesChosenOf",s.seats,{chosen:s.performancesChosen,total:s.performances})}function Ps(s,e){s.querySelectorAll(".sl-pg-night-row[data-event-key]").forEach(t=>{let i=()=>e(t.dataset.eventKey);t.addEventListener("click",i),t.addEventListener("keydown",r=>{r.key!=="Enter"&&r.key!==" "||(r.preventDefault(),i())})})}var Oi=require("@seatlayer/core");function fe(s){return String(s??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function lo(s,e){let t=s.objectType==="table"&&!!s.bookingMode,i=s.objectType==="booth",r=t||i||!s.seatNumber,n=r?s.rowLabel??s.displayLabel??s.label:s.seatNumber,o=t?`${g("picker.guests","Guests")} ${s.bookingMode==="variable"?`${s.minOccupancy}\u2013${s.maxOccupancy}`:s.capacity}`:!i&&s.rowLabel?`${e} ${Ee(s)??""}`.trim():"";return`<div class="sl-tip-head"><div class="sl-tip-id"><span class="sl-tip-seat${r?" name":""}">${fe(n)}</span>`+(o?`<span class="sl-tip-row">${fe(o)}</span>`:"")+"</div>"+(s.sectionLabel?`<div class="sl-tip-sec"><span class="sl-tip-eyebrow">${g("picker.section","Section")}</span><span class="sl-tip-secname">${fe(s.sectionLabel)}</span></div>`:"")+"</div>"}function As(s,e){let t=s.status==="not_for_sale",i=s.mark?.kind==="partial",r=s.status==="free"||i?"":`<span class="sl-tip-tag">${t?g("picker.notAvailable","Not available"):s.status==="held"?(0,Oi.t)("map.statusHeld"):(0,Oi.t)("map.statusTaken")}</span>`,n=t?"":e.price,o=n?`<span class="sl-tip-amt">${fe(n)}</span>`:"",a=!n&&e.priceNote?`<div class="sl-tip-note">${fe(e.priceNote)}</div>`:"",l=Ce(s.commercial),c=l?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u25D0</span>${fe(l)}</div>`:"",h=Qe(s.wheelchairSpaceType),d=h?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u267F</span>${fe(h)}</div>`:"";return'<i class="sl-tip-rail" aria-hidden="true"></i>'+lo(s,e.rowTypeWord)+`<div class="sl-tip-cat"><span class="sl-tip-dot" style="background:${fe(s.categoryColor)}"></span><span class="sl-tip-name">${fe(s.categoryLabel)}</span>`+r+o+"</div>"+a+d+c+(e.extra??"")}function Ms(s,e,t,i){let r=s.x+14,n=s.y-i.height-12,o=s.y+18,a=n;r+i.width>e-8&&(r=s.x-i.width-14),n<8&&o+i.height<=t-8&&(a=o);let l=Math.max(8,t-i.height-8);return{left:Math.max(8,Math.min(r,Math.max(8,e-i.width-8))),top:Math.max(8,Math.min(a,l))}}function Ls(s,e,t,i){let r=t.width/2+12,n=Math.max(r,Math.min(e.width-r,s.x)),o=s.y+t.height+24<=e.height,a=s.y<t.height+24&&o?"below":"above",l=i&&a==="above"?Math.max(t.height+24,s.y):s.y;return{left:n,top:Math.max(8,Math.min(e.height-8,l)),placement:a}}function Hs(s,e,t){let i=s.querySelector("[data-pg-select-partial]"),r=[...s.querySelectorAll("[data-pg-event-key]")],n=()=>r.filter(a=>a.checked).map(a=>a.dataset.pgEventKey).filter(Boolean),o=()=>{if(!i)return;let a=n().length;i.disabled=a===0,i.textContent=e?.(a)??i.textContent};r.forEach(a=>{a.addEventListener("change",o);let l=a.closest(".sl-night");l?.classList.add("selectable"),l?.addEventListener("click",c=>{c.target!==a&&(a.checked=!a.checked,o())})}),i?.addEventListener("click",()=>{let a=n();a.length&&t?.(a)})}function gt(s){let e=s?.displayType?.trim()||s?.rowType?.trim();return e||(s?.objectType==="table"?g("picker.table","Table"):s?.objectType==="booth"?g("picker.booth","Booth"):g("picker.row","Row"))}var Rs="@seatlayer/pending-checkout/v1";function co(s){return typeof s=="string"&&s.length<=160&&/^ord_[A-Za-z0-9_-]+$/.test(s)}function Os(s){if(typeof location>"u")return null;let e=new URLSearchParams(location.search),t=e.get("seatlayer_checkout");if(t!=="success"&&t!=="cancelled")return null;let i=null;try{let r=window.sessionStorage.getItem(Rs);if(r){let n=null;try{n=JSON.parse(r)}catch{}if(n&&co(n.orderId)){let o=Date.now()-Number(n.storedAt);if(o>=0&&o<=144e5){if(n.eventKey&&n.eventKey!==s)return null;i=n.orderId}}}window.sessionStorage.removeItem(Rs)}catch{}e.delete("seatlayer_checkout");try{let r=e.toString();history.replaceState(history.state,"",`${location.pathname}${r?`?${r}`:""}${location.hash}`)}catch{}return{outcome:t,orderId:i}}function Is(s){if(!s.framed)return null;let e=s.ancestorOrigins?.length?s.ancestorOrigins[0]:null;for(let t of[e,s.referrer])if(t)try{return new URL(t).origin}catch{}return null}var po="https://api.seatlayer.io",ho=10,_s=6e4,Bs=6e4,$s="seatmap.a11y.cb",uo=24;function mo(){try{if(typeof window>"u")return null;let s=window.localStorage.getItem($s);return s==null?null:s==="1"}catch{return null}}function fo(s){try{window.localStorage.setItem($s,s?"1":"0")}catch{}}var Je=class s{constructor(e){this.realtime=null;this.accessEl=null;this.lastSelectionValidity=null;this.root=null;this.mapHost=null;this.rendered=!1;this.destroyed=!1;this.els={};this.regions={};this.ro=null;this.holdTimer=null;this.toastTimer=null;this.offerRefreshTimer=null;this.offerBoundaryTimer=null;this.offerVisibilityHandler=null;this.motionTimers=new Set;this.currency="USD";this.eventTimezone=null;this.eventWhenText=null;this.offerAvailability=null;this.channelByObject=new Map;this.pricesByChannel=new Map;this.hold=null;this.holdExpiresAt=0;this.handedOff=!1;this.bookedShown=!1;this.paymentOptions=null;this.checkoutPanel=null;this.extendEl=null;this.bookedEl=null;this.gaQty=new Map;this.gaPromptEl=null;this.gaPromptReturnFocus=null;this.gaAreasExpanded=!1;this.lastMapPoint=null;this.tipEl=null;this.tipPos={x:0,y:0};this.tipPinned=!1;this.tipMarkedHoverLabel=null;this.lastPointerType="mouse";this.confirmEl=null;this.confirmSeat=null;this.suppressConfirmationSeatId=null;this.tableDialogEl=null;this.tableDialog=null;this.tableDialogHeld=!1;this.tableDialogReturnFocus=null;this.srEl=null;this.baQty=2;this.baCat="";this.baZone="";this.baPremium=!1;this.baReopen=!1;this.bestAvailableConfirm=!1;this.releasingHold=!1;this.salesClosed=!1;this.soldOut=!1;this.soldoutEl=null;this.cbSafe=!1;this.rungsEl=null;this.projectionEl=null;this.buyerView="map";this.view3dEl=null;this.view3dHandle=null;this.view3dGen=0;this.view3dReturnSeat=null;this.view3dTargetSeatId=null;this.view3dCompareSeatIds=[];this.view3dCompareChip=new Zt({overlay:()=>this.view3dEl,savedSeatIds:()=>this.view3dCompareSeatIds,openComparison:()=>this.openView3dComparison(),clearComparison:()=>this.clearView3dComparison(),toast:(e,t)=>this.toast(e,t)});this.view3dCompareEl=null;this.view3dCompareCleanup=null;this.view3dPassportEl=null;this.view3dPassportCleanup=null;this.floorsEl=null;this.secCardEl=null;this.viewEl=null;this.viewCleanup=null;this.seatViewGen=0;this.allSeatsCache=null;this.minimap=null;this.pickerLayoutSize={width:0,height:0};this.priceBandKeys=null;this.focusedCatKey=null;this.limitedViewFilter=!1;this.pricesExpanded=!1;this.lastSection=null;this.secCardCollapsed=!1;this.secCardShownAt=0;this.lastTrayCount=0;this.langSel=null;this.lastTrayTotal=0;this.lastTrayKeys=new Set;this.bestAvailableBusy=!1;this.releasingLabels=new Set;this.holdingLabels=new Set;this.ctaPhase="idle";this.a11yChipsEl=null;this.railEdgesBound=!1;this.fsFallback=!1;this.fsChangeHandler=null;this.fsEscHandler=null;this.eventDetailsHidden=!1;this.holdCopyPending=!1;this.sideCollapsed=!1;this.sideToggleEl=null;this.framedFs=!1;this.lastPostedHeight=0;this.cbEl=null;this.modalScrim=null;this.prevFocus=null;this.escHandler=null;this.closeModal=null;this.lastCatAvail=null;this.lastAvailFloorId="";this.availQuietUntil=0;this.liveTimer=null;this.perspectiveWarned=!1;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");if(!e.container)throw new Error("seatmap: `container` is required (or use SeatPicker.open())");this.performanceGroup=hs(e),this.suppressPricing=!!this.performanceGroup?.suppressPricing,this.opts={...e,confirmSelection:e.confirmSelection??!0},this.eventDetailsHidden=!!e.hideEventDetails,this.hostPricing=e.pricing,this.apiBase=(e.apiBase??po).replace(/\/+$/,"");let t={onExpired:a=>{this.opts.onAccessExpired?.(a),a.refreshed||this.showAccessPanel({reason:"no_token",retryable:!1})},onUnavailable:a=>{this.opts.onAccessUnavailable?.(a),this.showAccessPanel(a)}},i=!e.transport&&e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?Lt({base:this.apiBase,event:e.event,publicKey:e.publicKey,accessHooks:t,apiOptions:{referral:e.referral,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=e.transport?null:i?.access??Ge(e,t),this.pubApi=e.transport?null:i?.api??new ve(this.apiBase,{access:this.access??void 0,referral:e.referral,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}),this.api=e.transport??this.pubApi,this.buyerAssetUrls=new Ke(e.event,this.api.asset?(a,l)=>this.api.asset(a,l):void 0),e.checkout==="hosted"&&!this.pubApi&&console.warn('seatlayer: checkout: "hosted" needs the widget\'s own transport \u2014 a custom `transport` owns its backend, so the picker is staying on onCheckout for this mount.'),this.checkoutMode=e.checkout==="hosted"&&this.pubApi?"hosted":"handoff";let r=e.numberOfPlacesToSelect;if(r!=null&&(!Number.isInteger(r)||r<1))throw new Error("seatmap: `numberOfPlacesToSelect` must be a positive integer");this.exactTickets=r??null;let n=is(e.selectionValidators);if(this.exactTickets!=null&&n>this.exactTickets)throw new Error("seatmap: `minimumSelectedPlaces.minimum` cannot exceed `numberOfPlacesToSelect`");let o=Math.max(1,Math.floor(e.maxSelection??this.exactTickets??Math.max(ho,n)));if(this.exactTickets!=null&&o<this.exactTickets)throw new Error("seatmap: `maxSelection` cannot be lower than `numberOfPlacesToSelect`");if(e.maxSelection!=null&&o<n)throw new Error("seatmap: `maxSelection` cannot be lower than `minimumSelectedPlaces.minimum`");this.maxTickets=this.exactTickets??o,this.cbSafe=mo()??!!e.colorblindSafe,this.controller=this.wireController(e)}chartHasStage(){let e=this.controller.doc;if(!e)return!1;let t=e.floors?.length?e.floors.map(i=>i.objects??[]):[e.objects??[]];for(let i of t)for(let r of i)if(r.type==="shape"&&(r.role==="stage"||r.stageKind))return!0;return!1}confirmThumbHtml(e){let t=this.controller.doc;if(!t)return"";let i=e.viewUrl??"",r=this.chartHasStage();if(!i&&!r)return"";let n=null;if(!i)try{n=(0,v.generateSeatThumb)(e,e.focalPoint??t.focalPoint).distanceM??null}catch{return""}let o=r&&n!=null?`<div class="sl-confirm-sight">${V((0,v.t)("picker.sightline",{m:n}))}</div>`:"",a=V((0,v.t)("picker.viewFromSeat",{label:e.label})),l=V(this.tf("picker.viewFromHere","View from here"));return(i?`<button type="button" class="sl-confirm-view sl-confirm-thumbwrap" aria-label="${a}"><img class="sl-confirm-thumb" alt="" /><span class="sl-confirm-thumb-badge">\u{1F52D} ${l}</span></button>`:`<button type="button" class="sl-confirm-view sl-confirm-viewbtn" aria-label="${a}"><span aria-hidden="true">\u{1F52D}</span><span>${l}</span></button>`)+o}isFramed(){return typeof window<"u"&&window.parent!==window}postToHost(e){if(!this.isFramed())return;let t=Is({framed:!0,ancestorOrigins:window.location.ancestorOrigins,referrer:document.referrer});if(t)try{window.parent.postMessage(e,t)}catch{}}measureFramedHeight(){let e=this.root;if(!e)return 0;let t=e.clientWidth||(typeof window<"u"?window.innerWidth:0)||0;if(t<=0)return 0;let i=t<640?1.2:.62;return Math.max(420,Math.round(t*i))}reportFramedHeight(){if(!this.isFramed())return;let e=this.measureFramedHeight();e<=0||e===this.lastPostedHeight||(this.lastPostedHeight=e,this.postToHost({type:"seatlayer:height",px:e}))}toggleFullscreen(){let e=this.root;if(!e)return;!!document.fullscreenElement||this.fsFallback||this.framedFs?document.fullscreenElement?document.exitFullscreen().catch(()=>{}):this.framedFs?this.setFramedFs(!1):this.setFsFallback(!1):e.requestFullscreen?e.requestFullscreen().catch(()=>this.enterFsFallback()):this.enterFsFallback()}syncFullscreenButtons(){let e=!!document.fullscreenElement||this.fsFallback||this.framedFs,t=this.eventDetailsHidden&&!e;this.root?.setAttribute("data-event-details-hidden",String(t)),this.els.zfs?.setAttribute("aria-pressed",String(e)),this.els.zfs?.setAttribute("title",e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen"));let i=this.els.zfs?.querySelector(".sl-zfs-lbl");i&&(i.textContent=e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen")),this.view3dEl?.querySelector(".sl-view3d-fs")?.setAttribute("aria-pressed",String(e))}enterFsFallback(){this.isFramed()?this.setFramedFs(!0):this.setFsFallback(!0)}setFramedFs(e){this.framedFs!==e&&(this.framedFs=e,this.syncFullscreenButtons(),this.postToHost({type:"seatlayer:fullscreen",on:e}),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFramedFs(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}setFsFallback(e){this.fsFallback!==e&&(this.fsFallback=e,this.root?.classList.toggle("sl-fs",e),this.syncFullscreenButtons(),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFsFallback(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}close(){this.closeModal?this.closeModal():this.destroy()}static async open(e){We();let t=document.activeElement instanceof HTMLElement?document.activeElement:null,i=document.createElement("div");i.className="sl-modal-scrim";let r=document.createElement("div");r.className="sl-modal-frame",r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true"),r.setAttribute("aria-label",g("picker.seatSelection","Seat selection")),r.tabIndex=-1,i.appendChild(r),document.body.appendChild(i);let n=document.body.style.overflow;document.body.style.overflow="hidden";let o=new s({...e,container:r});o.modalScrim=i,o.prevFocus=t;let a=["a[href]","area[href]","button","input","select","textarea","iframe","object","embed","summary","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"[tabindex]"].join(","),l=()=>{let f=[...r.querySelectorAll('[role="dialog"][aria-modal="true"]')].filter(b=>b.isConnected&&!b.closest('[hidden], [aria-hidden="true"], [inert]'));return f[f.length-1]??r},c=(f,b)=>{let C=f;for(;C;){let x=window.getComputedStyle(C);if(C.hidden||C.getAttribute("aria-hidden")==="true"||C.hasAttribute("inert")||x.display==="none"||x.visibility==="hidden"||x.visibility==="collapse")return!0;if(C===b)return!1;C=C.parentElement}return!0},h=f=>[...f.querySelectorAll(a)].filter(b=>b.tabIndex>=0&&!b.matches(":disabled")&&!c(b,f)),d=(f,b)=>{let C=h(f),x=b?C[C.length-1]:C[0];x?x.focus({preventScroll:!0}):(f.hasAttribute("tabindex")||(f.tabIndex=-1),f.focus({preventScroll:!0}))},p=!1,m=()=>{if(p)return;p=!0,document.body.style.overflow=n,o.escHandler&&document.removeEventListener("keydown",o.escHandler),i.remove(),o.modalScrim=null;let f=o.prevFocus;o.prevFocus=null,f?.isConnected&&f.focus({preventScroll:!0});let b=()=>{o.destroy(),e.onClose?.()};o.hold&&!o.handedOff?o.release().finally(b):b()};return o.closeModal=m,i.addEventListener("mousedown",f=>{f.target===i&&m()}),o.escHandler=f=>{if(f.key==="Tab"){if(f.defaultPrevented)return;let b=l(),C=h(b),x=C[0],R=C[C.length-1],y=document.activeElement;!x||!R?(f.preventDefault(),d(b,f.shiftKey)):y===b||!y||!b.contains(y)?(f.preventDefault(),(f.shiftKey?R:x).focus({preventScroll:!0})):f.shiftKey&&y===x?(f.preventDefault(),R.focus({preventScroll:!0})):!f.shiftKey&&y===R&&(f.preventDefault(),x.focus({preventScroll:!0}));return}f.key==="Escape"&&(o.tableDialog?(f.preventDefault(),o.cancelTableDialog()):o.confirmSeat?(f.preventDefault(),o.cancelConfirm()):o.bestAvailableConfirm?(f.preventDefault(),o.bestAvailableConfirm=!1,o.syncTray()):(f.preventDefault(),m()))},document.addEventListener("keydown",o.escHandler),await o.render(),o.els.close?.classList.add("on"),o.els.close?.addEventListener("click",m),d(l(),!1),o}wireController(e){return new v.PickerController({transport:this.api,eventKey:e.event,maxSelection:this.maxTickets,selectedObjects:e.selectedObjects,selectableObjects:e.selectableObjects,numberOfPlacesToSelect:e.numberOfPlacesToSelect,selectionValidators:e.selectionValidators,currency:e.currency,flashOnLiveChange:!0,colorblindSafe:this.cbSafe,mapTheme:e.theme?.map??null,onGAClick:t=>{let i=this.controller.getGAAreas().find(r=>r.id===t);i&&hi(this,i,this.lastMapPoint)},onSelectionChange:()=>{this.syncTray(),this.minimap?.refreshMinimap(),this.committedSelection().length&&this.collapseSectionCard(),this.syncSelectionTo3d()},onStatusChange:()=>{this.syncSeatMarks(),this.syncPrices(),this.scheduleOfferRefresh(!0),this.evictTakenSelections(),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onHoldExpired:()=>{this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.toast((0,v.t)("picker.holdExpired",void 0)||"Your hold expired \u2014 seats released. Pick again.","warning"),this.syncTray(),this.emitHoldChange(),this.opts.onHoldExpired?.()},confirmSelection:this.opts.confirmSelection,onSelect:t=>{if(this.salesClosed){this.controller.deselect([t.id]),this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}this.controller.tableSelection(t.id)||(this.flashPickedSeat(t.id),this.opts.confirmSelection&&this.suppressConfirmationSeatId!==t.id&&this.showConfirm(t))},onTableSelectionRequest:t=>{if(this.salesClosed){this.controller.deselect(t.physicalSeatIds),this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}this.showTableDialog(t,!1)},onDeselect:t=>{this.confirmSeat?.id===t.id&&this.dismissConfirm(),this.tableDialog?.physicalSeatIds.includes(t.id)&&this.dismissTableDialog()},onSelectionLimit:()=>{this.toast((0,v.t)("picker.maxTicketsForOrder",{count:this.maxTickets}),"warning"),this.opts.onSelectionLimit?.(this.maxTickets)},onViewChange:()=>{this.reanchorConfirm(),this.syncRung(),this.syncProjection(),this.minimap?.drawMinimapRect(),this.sectionCardOnView()},onSectionFocus:t=>this.showSectionCard(t),onDeckTap:()=>{this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()},onFocusSeat:t=>this.announceSeat(t),onSeatHover:t=>this.updateTooltip(t),onHint:t=>{t&&this.toast(t)},onSalesClosed:()=>this.setSalesClosed(!0),onError:t=>this.opts.onError?.(t)})}async render(){if(this.rendered)return this;let e=performance.now(),t={},i=u=>Math.round((performance.now()-u)*100)/100;this.rendered=!0,We();let r=performance.now();await(0,v.loadLocale)(this.opts.locale),t.loadLocale=i(r),this.opts.messages&&(0,v.setStringOverrides)(this.opts.messages),this.checkoutMode==="hosted"&&(this.paymentOptions=this.pubApi.paymentOptions(this.opts.event));let n=performance.now(),o=ur(this.opts.container),{root:a,els:l,mapHost:c}=Yr(o,(u,k)=>this.tf(u,k),this.opts.theme);this.root=a,this.els=l,this.mapHost=c,a.addEventListener("keydown",u=>{u.key==="Escape"&&(this.tipPinned?(u.preventDefault(),u.stopPropagation(),this.unpinTooltip()):this.tableDialog?(u.preventDefault(),u.stopPropagation(),this.cancelTableDialog()):this.confirmSeat?(u.preventDefault(),u.stopPropagation(),this.cancelConfirm()):this.bestAvailableConfirm&&(u.preventDefault(),u.stopPropagation(),this.bestAvailableConfirm=!1,this.syncTray()))}),this.syncFullscreenButtons(),this.wireBuyerShell(a);let h=document.createElement("div");h.style.cssText="position:absolute;inset:0",this.mapHost.appendChild(h),t.mountBuyerShell=i(n);let d=await this.loadChart(h,t,i);if(!d)return this;this.els.boot.remove();let p=performance.now();if(this.startRealtime(),this.salesClosed=!!d.salesClosed||!!this.opts.readOnly,a.dataset.eventMode=d.mode==="test"?"test":"live",!this.opts.locale&&d.locale&&await this.setLocale(d.locale),this.controller.setViewMode(this.normalizeInitialView(this.opts.initialView)),this.buildRegions(),this.regions["bottom-right"].appendChild(this.els.zoom),this.regions["bottom-center"].appendChild(this.els.toast),d.mode==="test"){let u=document.createElement("div");u.className="sl-testbadge",u.textContent=(0,v.t)("picker.testMode"),u.setAttribute("aria-label",(0,v.t)("picker.testMode")),this.regions["top-left"].appendChild(u)}let m=this.controller.doc?.theme,f=ut(m,this.opts.theme);Object.entries(f).forEach(([u,k])=>a.style.setProperty(u,k)),this.applyMapChromeTokens(),this.currency=d.currency??this.opts.currency??"USD",this.eventTimezone=d.timezone??null,mr(this.els.logo,[this.opts.theme?.logoUrl,m?.logoUrl,d.posterUrl],this.opts.theme?.brandName??m?.brandName??d.eventName??"?"),this.els.name.textContent=d.eventName??"";let b=d.startsAt?Dt(d.startsAt,d.timezone??null,this.opts.locale):"";this.eventWhenText=b||null,this.els.meta.textContent=[d.venue,b].filter(Boolean).join(" \xB7 "),this.els.pricesHint&&(this.els.pricesHint.textContent=this.tf("picker.priceHint","Colours on the map are ticket types \u2014 tap one below to show just those seats.")),this.buildBadge(m);let C=new Set,x=!1;if(this.controller.doc)for(let u of this.controller.getExpandedSeats()){for(let k of u.accessibility??[])C.add(k);u.accessible&&!u.accessibility?.length&&C.add("wheelchair"),(u.commercial?.restrictedView||u.commercial?.obstructedView)&&(x=!0)}let R=()=>{this.rungsEl&&this.controller.getRung()!=="seats"&&(this.controller.setRung("seats"),this.collapseSectionCard(),this.syncRung())};if(C.size||x){let u=document.createElement("div");if(u.className="sl-chips",this.regions["top-left"].appendChild(u),this.a11yChipsEl=u,C.size){let k=(B,D)=>`<button type="button" class="sl-chip-f${B==="all"?" on":""}" data-a11y="1" data-f="${B}">${D}</button>`;u.insertAdjacentHTML("beforeend",k("all",this.tf("picker.allSeats","All seats"))+v.ACCESSIBILITY_TYPES.filter(({key:B})=>C.has(B)).map(({key:B,short:D,icon:N})=>k(B,`${N} ${D}`)).join(""));let L=new Set,U=()=>{u.querySelectorAll("button[data-a11y]").forEach(D=>{let N=D.dataset.f,re=N==="all"?L.size===0:L.has(N);D.classList.toggle("on",re),D.setAttribute("aria-pressed",String(re))});let B=L.size?[...L]:null;this.controller.setAccessibilityFilter(B),B&&R()};u.querySelectorAll("button[data-a11y]").forEach(B=>{B.addEventListener("click",()=>{let D=B.dataset.f;D==="all"?L.clear():L.has(D)?L.delete(D):L.add(D),U()})})}if(x){let k=document.createElement("button");k.type="button",k.className="sl-chip-f",k.setAttribute("aria-pressed","false"),k.innerHTML=`\u25D0 ${this.tf("picker.hideLimitedView","Hide limited-view seats")}`,u.appendChild(k),k.addEventListener("click",()=>{let L=!this.limitedViewFilter;this.limitedViewFilter=L,k.classList.toggle("on",L),k.setAttribute("aria-pressed",String(L)),this.controller.setCommercialLimitedFilter(L),this.pushAvailabilityTo3d(),L&&R()})}}let y=document.createElement("button");y.type="button",y.className="sl-cbbtn",this.cbEl=y,y.setAttribute("aria-label",this.tf("picker.toggleColorblindColors","Toggle colorblind-friendly colors")),y.setAttribute("aria-pressed",String(this.cbSafe)),y.innerHTML='<svg viewBox="0 0 24 24"><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/></svg>',this.els.zfit.parentElement.appendChild(y),y.addEventListener("click",()=>{this.setColorblindSafe(!this.cbSafe)}),this.buildLanguageSwitcher(y.parentElement),this.srEl=document.createElement("div"),this.srEl.className="sl-sr",this.srEl.setAttribute("aria-live","polite"),a.appendChild(this.srEl),this.buildArenaChrome(),this.buildMinimap(),this.buildPriceFilter(),this.buildExtendPrompt(),this.buildBookedOverlay(),this.buildSoldoutOverlay(),this.buildPanelToggle(),this.opts.panelCollapsed&&this.setPanelCollapsed(!0),this.dockLayoutChrome(),t.buildBuyerControls=i(p);let E=performance.now();if(await this.restoreRememberedHold(),t.restoreHold=i(E),this.destroyed)return this;this.salesClosed&&this.applySalesClosed(),this.syncPrices(),this.syncTray(),this.resumeHostedOrder();let H=this.controller.doc,M=Nt(this.opts.event),O=this.performanceGroup?"performance_group":"event";return ke({apiBase:this.apiBase,event:this.opts.event,scope:O,surface:this.performanceGroup?"performance_group_picker":"seat_picker",outcome:"success",ms:i(e),performanceProfile:t,seats:this.allSeats().length,floors:this.controller.getFloors().length,view:this.buyerView,load:M,transport:this.opts.transport?"custom":"pubapi"}),this.emitAnalytics("chart_rendered",{renderingTimeMillis:i(e),performanceProfile:t,seatCount:this.allSeats().length,objectCount:H?.objects.length??0,sectionCount:H?.objects.filter(u=>u.type==="section").length??0,view:this.buyerView,eventKey:this.opts.event,chartName:H?.name,floorCount:this.controller.getFloors().length,transport:this.opts.transport?"custom":"pubapi",load:M,metricScope:O,operationalTelemetryReporter:"sdk"}),this}wireBuyerShell(e){this.refreshOfferAvailability(!1),this.api.availability&&(this.offerVisibilityHandler=()=>{!document.hidden&&!this.destroyed&&this.refreshOfferAvailability(!1)},document.addEventListener("visibilitychange",this.offerVisibilityHandler)),this.observeLayout(e),this.els.zin.addEventListener("click",()=>this.controller.zoomIn()),this.els.zout.addEventListener("click",()=>this.controller.zoomOut()),this.els.zfit.addEventListener("click",()=>this.controller.zoomToFit()),this.els.zfs.addEventListener("click",()=>this.toggleFullscreen()),this.fsChangeHandler=()=>{document.fullscreenElement||this.setFsFallback(!1),this.syncFullscreenButtons(),requestAnimationFrame(()=>this.controller.refitCurrentView())},document.addEventListener("fullscreenchange",this.fsChangeHandler);let t=this.els.sheetHead;if(t){let r=this.els.sheetToggle,n=c=>{e.dataset.sheet=c?"open":"peek",r?.setAttribute("aria-expanded",String(c)),r?.setAttribute("aria-label",c?this.tf("picker.collapseTicketPanel","Collapse ticket panel"):this.tf("picker.openTicketPanel","Open ticket panel"))};n(e.dataset.sheet==="open"),r?.addEventListener("click",c=>{c.stopPropagation(),n(e.dataset.sheet!=="open")}),this.els.peek?.addEventListener("click",c=>{let h=c.target.closest(".sl-sheet-go");h&&(c.stopPropagation(),h.dataset.act==="checkout"?this.handleCta():h.dataset.act==="best"?(this.baReopen=!0,this.baQty=Math.max(1,Math.min(this.baQty,this.maxTickets-this.totalTicketCount())),this.syncTray(),n(!0),this.els.tray?.querySelector(".sl-ba-go")?.focus()):n(!0))});let o=0,a=!1,l=!1;t.addEventListener("pointerdown",c=>{if(c.target.closest?.(".sl-seccard,.sl-sheet-toggle,.sl-sheet-go")){l=!1;return}l=!0,a=!1,o=c.clientY,t.setPointerCapture?.(c.pointerId)}),t.addEventListener("pointermove",c=>{if(!l||a)return;let h=c.clientY-o;h<-18?(n(!0),a=!0):h>18&&(n(!1),a=!0)}),t.addEventListener("pointerup",c=>{l&&!a&&Math.abs(c.clientY-o)<6&&n(e.dataset.sheet!=="open"),l=!1,t.releasePointerCapture?.(c.pointerId)})}let i=()=>{if(this.root?.dataset.layout!=="narrow")return;let r=this.root.getAttribute("data-prices-open")==="true";if(this.root.setAttribute("data-prices-open",String(!r)),this.els.pricesSec?.setAttribute("aria-expanded",String(!r)),!r&&this.root.dataset.sheet!=="open"){this.root.dataset.sheet="open";let n=this.els.sheetToggle;n?.setAttribute("aria-expanded","true"),n?.setAttribute("aria-label","Collapse ticket panel")}};this.els.pricesSec?.addEventListener("click",r=>{r.target.closest("select,button")||i()}),this.els.pricesSec?.addEventListener("keydown",r=>{r.key!=="Enter"&&r.key!==" "||r.target.closest("select,button")||(r.preventDefault(),i())}),this.tipEl=document.createElement("div"),this.tipEl.setAttribute("role","tooltip"),this.tipEl.className="sl-tip",this.els.map.appendChild(this.tipEl),this.els.map.addEventListener("pointerdown",r=>{this.handleMapPointerDown(r)},!0),this.els.map.addEventListener("mousemove",r=>{if(this.tipPinned)return;let n=this.els.map.getBoundingClientRect();this.tipPos={x:r.clientX-n.left,y:r.clientY-n.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()}),this.els.cta.addEventListener("click",()=>{this.handleCta()}),this.els.holdChange?.addEventListener("click",()=>{this.handleChangeSeats()})}observeLayout(e){let t=()=>{let i=e.clientWidth;if(i<=0)return;let r=e.clientHeight,n=i!==this.pickerLayoutSize.width||r!==this.pickerLayoutSize.height;this.pickerLayoutSize={width:i,height:r},this.reportFramedHeight();let o=i<640?"narrow":"wide",a=r<560?"compact":"comfortable";(e.dataset.layout!==o||e.dataset.density!==a)&&(e.dataset.layout=o,e.dataset.density=a,o==="narrow"&&!e.dataset.sheet&&(e.dataset.sheet="peek"),this.dockLayoutChrome()),n&&(this.minimap?.refreshMinimap(),this.fitSectionStripCount())};this.ro=new ResizeObserver(t),this.ro.observe(e),t(),requestAnimationFrame(t)}async loadChart(e,t,i){let r=performance.now(),n=await this.controller.render(e);return t.loadChartAndStatuses=i(r),this.destroyed?null:n?(Object.assign(t,n.performanceProfile),n):(ke({apiBase:this.apiBase,event:this.opts.event,scope:this.performanceGroup?"performance_group":"event",surface:this.performanceGroup?"performance_group_picker":"seat_picker",outcome:"failure",stage:"load_chart",ms:t.loadChartAndStatuses,performanceProfile:t,view:"map",load:we(this.opts.event),transport:this.opts.transport?"custom":"pubapi"}),this.els.boot.innerHTML=`<div class="sl-boot-title">${this.tf("picker.mapDidNotLoad","The seat map didn\u2019t load")}</div><div>${this.tf("picker.checkConnection","Check your connection and try again.")}</div><button type="button" class="sl-boot-retry">${this.tf("picker.accessRetry","Try again")}</button>`,this.els.boot.querySelector("button").addEventListener("click",()=>{let o=this.opts.container,a=this.opts;this.destroy(),new s({...a,container:o}).render()}),null)}resumeHostedOrder(){if(this.checkoutMode!=="hosted")return;let e=Os(this.opts.event);e?.outcome!=="success"||!e.orderId||this.openCheckoutPanel({kind:"resume",orderId:e.orderId})}buildPanelToggle(){if(!this.regions["top-right"])return;let e=document.createElement("button");e.type="button",e.className="sl-side-toggle",e.addEventListener("click",()=>this.setPanelCollapsed(!this.sideCollapsed)),this.sideToggleEl=e,this.regions["top-right"].appendChild(e),this.syncPanelToggle()}syncPanelToggle(){let e=this.sideToggleEl;if(!e)return;let t=this.sideCollapsed;e.setAttribute("aria-expanded",String(!t)),e.setAttribute("aria-label",t?this.tf("picker.showTicketPanel","Show the ticket panel"):this.tf("picker.hideTicketPanel","Hide the ticket panel")),e.title=t?this.tf("picker.showTicketPanel","Show the ticket panel"):this.tf("picker.hideTicketPanel","Hide the ticket panel"),e.innerHTML=t?`<svg viewBox="0 0 24 24"><path d="M15 6l-6 6 6 6"/></svg><span>${this.tf("picker.tickets","Tickets")}</span>`:'<svg viewBox="0 0 24 24"><path d="M9 6l6 6-6 6"/></svg>'}setPanelCollapsed(e){this.destroyed||(this.sideCollapsed=e,this.applyPanelCollapsed(),this.scheduleMotion(()=>this.controller.refitCurrentView(),340))}applyPanelCollapsed(){let e=this.root?.dataset.layout!=="narrow";this.root?.setAttribute("data-side-collapsed",String(this.sideCollapsed)),this.els.side?.toggleAttribute("inert",this.sideCollapsed&&e),this.syncPanelToggle()}dockLayoutChrome(){let e=this.root?.dataset.layout==="narrow";this.applyPanelCollapsed();let t=this.els.zfs,i=this.els.headInfo?.parentElement;t&&i&&t.parentElement!==i&&(t.classList.add("sl-fs-pill"),i.insertBefore(t,this.els.hold??null));let r=this.els.pricesSec;r&&(e?(r.setAttribute("role","button"),r.tabIndex=0,r.setAttribute("aria-expanded",String(this.root?.getAttribute("data-prices-open")==="true"))):(r.removeAttribute("role"),r.removeAttribute("aria-expanded"),r.tabIndex=-1)),this.cbEl&&this.els.zoom?.appendChild(this.cbEl),this.a11yChipsEl&&(e?this.els.rail?.insertBefore(this.a11yChipsEl,this.els.railScroll??null):this.regions["top-left"]?.appendChild(this.a11yChipsEl)),this.lastSection&&this.renderSectionCard(this.lastSection)}buildExtendPrompt(){let e=document.createElement("div");e.className="sl-extend",e.setAttribute("role","status"),e.innerHTML='<span class="sl-extend-txt" data-ref="extendTxt"></span><button type="button" class="sl-extend-btn" data-ref="extendBtn"></button>',(this.regions["bottom-center"]??this.els.map).appendChild(e),this.extendEl=e,this.els.extendTxt=e.querySelector('[data-ref="extendTxt"]'),this.els.extendBtn=e.querySelector('[data-ref="extendBtn"]'),this.els.extendBtn.textContent=this.tf("picker.addTime","Add time"),this.els.extendBtn.addEventListener("click",()=>{this.handleExtend()})}buildBookedOverlay(){let e=document.createElement("div");e.className="sl-booked",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.innerHTML=`<div class="sl-booked-badge"><svg viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg></div><div class="sl-booked-title">${this.tf("picker.allSetTitle","You're all set")}</div><div class="sl-booked-sub" data-ref="bookedSub"></div>`,this.root.appendChild(e),this.bookedEl=e,this.els.bookedSub=e.querySelector('[data-ref="bookedSub"]')}get onGAPromptHook(){return this.opts.onGAPrompt}tf(e,t){return g(e,t)}buildSoldoutOverlay(){if(!this.els.map)return;let e=document.createElement("div");e.className="sl-soldout",e.setAttribute("role","status");let t=(this.controller.doc?.theme?.brandName??this.opts.theme?.brandName??this.els.name?.textContent??this.tf("picker.soldOutEyebrow","This event")).toUpperCase(),i=document.createElement("div");i.className="sl-soldout-eyebrow",i.textContent=t;let r=document.createElement("div");r.className="sl-soldout-title",r.textContent=this.tf("picker.soldOutTitle","Sold out");let n=document.createElement("p");n.className="sl-soldout-copy",n.textContent=this.tf("picker.soldOutCopy","No reserved seats are currently available for this event."),e.append(i,r,n),this.els.map.appendChild(e),this.soldoutEl=e}syncSoldout(e,t){let i=this.controller.getGAAreas().length>0,r=this.isSoldOut(e,t,i);r!==this.soldOut&&(this.soldOut=r,this.soldoutEl?.classList.toggle("on",r))}isSoldOut(e,t,i){return!i&&e.length>0&&e.every(r=>(t[r.key]??0)===0)}setSalesClosed(e){let t=e||!!this.opts.readOnly;this.salesClosed!==t&&(this.salesClosed=t,this.applySalesClosed())}applySalesClosed(){this.salesClosed&&this.tableDialog&&!this.tableDialogHeld&&this.cancelTableDialog();let e=this.els.closedPill;if(e){e.classList.toggle("on",this.salesClosed);let t=this.els.closedPillText??e;t.textContent=this.tf("picker.salesClosedPill","Sales are closed")}this.root?.setAttribute("data-sales-closed",String(this.salesClosed)),this.salesClosed&&this.srEl&&(this.srEl.textContent=this.tf("picker.salesClosedToast","Sales are closed for this event.")),this.syncCta(),this.syncTray()}badgeHidden(e){return!!(this.opts.hideBadge||e?.hideBadge)}buildBadge(e){if(this.badgeHidden(e))return;let t=this.els.foot;if(!t)return;let i=document.createElement("a");i.className="sl-powered",i.href="https://seatlayer.io/?ref=picker",i.target="_blank",i.rel="noopener noreferrer",i.setAttribute("aria-label",this.tf("picker.poweredBy","Powered by SeatLayer"));let r=document.createElement("span");r.className="sl-powered-mark",r.setAttribute("aria-hidden","true"),r.innerHTML=Rt;let n=document.createElement("span");n.textContent=this.tf("picker.poweredBy","Powered by SeatLayer"),i.append(r,n),t.appendChild(i)}buildRegions(){if(!this.els.map)return;let e=["top-left","top-center","top-right","left-rail","bottom-left","bottom-center","bottom-right"];for(let t of e){let i=document.createElement("div");i.className="sl-anchor",i.dataset.region=t,this.els.map.appendChild(i),this.regions[t]=i}}cssVar(e){return this.root?getComputedStyle(this.root).getPropertyValue(e).trim():""}reducedMotion(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}scheduleMotion(e,t){let i=setTimeout(()=>{this.motionTimers.delete(i),this.destroyed||e()},t);this.motionTimers.add(i)}animateOnce(e,t,i=600){!e||this.reducedMotion()||(e.classList.remove(t),e.offsetWidth,e.classList.add(t),this.scheduleMotion(()=>e.classList.remove(t),i))}flashPickedSeat(e){this.reducedMotion()||this.controller.flashSeat(e,this.cssVar("--sl-accent")||"#f4b740")}flashHeldSeats(e){if(this.reducedMotion())return;(e.items??[]).filter(i=>i.objectType!=="ga").map(i=>i.label).slice(0,10).forEach((i,r)=>{let n=this.controller.seatByLabel(i);n&&this.scheduleMotion(()=>this.controller.flashSeat(n.id,this.cssVar("--sl-accent")||"#f4b740"),r*55)})}committedSelection(){let e=this.confirmSeat?.id,t=this.tableDialog&&!this.tableDialogHeld?this.tableDialog.id:null;return this.controller.getSelection().filter(i=>i.id!==e&&i.id!==t)}pendingSelectionCount(){let e=this.hold?.items??[],t=new Set(e.map(r=>r.label));return this.committedSelection().filter(r=>!t.has(r.label)).reduce((r,n)=>r+(n.quantity??1),0)+qe(this.gaQty,this.hold?.items??[])}heldTicketCount(){return(this.hold?.items??[]).reduce((e,t)=>e+(t.quantity??1),0)}totalTicketCount(){let e=new Set((this.hold?.items??[]).map(i=>i.label)),t=this.committedSelection().filter(i=>!e.has(i.label)).reduce((i,r)=>i+(r.quantity??1),0);return this.heldTicketCount()+t+qe(this.gaQty,this.hold?.items??[])}updateSelectionCapacity(){let e=new Set((this.hold?.items??[]).map(r=>r.label)),t=this.committedSelection().filter(r=>e.has(r.label)).reduce((r,n)=>r+(n.quantity??1),0),i=Math.max(0,this.maxTickets-this.heldTicketCount()-qe(this.gaQty,this.hold?.items??[]));this.controller.setMaxSelection(t+i)}syncCta(e=this.lastTrayCount,t=this.pendingSelectionCount()){let i=this.els.cta;if(!i)return;if(this.salesClosed){i.disabled=!0,i.textContent=this.tf("picker.salesClosedCta","Sales closed");return}if(this.confirmSeat||this.tableDialog&&!this.tableDialogHeld){i.disabled=!0,i.textContent=this.tableDialog?this.tf("picker.confirmYourTable","Confirm your table"):this.tf("picker.confirmOrCancelSeat","Confirm or cancel this seat");return}if(this.ctaPhase==="holding"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.securingSeats","Securing your seats\u2026")}`;return}if(this.ctaPhase==="checkout"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.openingCheckout","Opening secure checkout\u2026")}`;return}let r=!this.hold&&this.performanceGroup?.selectionMode==="per_performance"?this.performanceGroup.submissionState?.():null;if(r&&!r.ready){i.disabled=!0,i.textContent=this.tf("picker.completeAllPerformances","Complete all performances ({complete}/{total})").replace("{complete}",String(r.complete)).replace("{total}",String(r.total));return}let n=this.controller.getSelectionValidity(e);if(n&&!n.isValid){i.disabled=!0,i.textContent=Ai(n,(o,a)=>this.tf(o,a),!0);return}i.disabled=e===0,i.textContent=this.hold?t?(0,v.t)("picker.secureMoreAndCheckout",{count:t}):this.tf("picker.continueToCheckout","Continue to checkout"):e?this.performanceGroup?this.tf("picker.holdSeatsForAllPerformances","Hold seats for all {count} performances").replace("{count}",String(this.performanceGroup.performanceCount)):this.tf("picker.holdSeatsAndCheckout","Hold seats & checkout"):this.tf("picker.selectSeats","Select seats")}setCtaPhase(e){this.ctaPhase=e,this.syncCta(),this.renderPeek(this.lastTrayCount,this.lastTrayTotal,this.pendingSelectionCount()),e==="checkout"&&this.scheduleMotion(()=>{this.ctaPhase==="checkout"&&(this.ctaPhase="idle",this.syncCta(),this.renderPeek(this.lastTrayCount,this.lastTrayTotal,this.pendingSelectionCount()))},1100)}holdStorageKey(){return`@seatlayer/hold/v1/${encodeURIComponent(this.apiBase)}/${encodeURIComponent(this.opts.event)}`}rememberedHoldId(){if(this.opts.initialHoldId)return this.opts.initialHoldId;if(this.opts.restoreHold===!1||typeof window>"u")return null;try{return window.sessionStorage.getItem(this.holdStorageKey())}catch{return null}}rememberHold(e){if(!(this.opts.restoreHold===!1||typeof window>"u"))try{window.sessionStorage.setItem(this.holdStorageKey(),e.holdId)}catch{}}forgetHold(){if(!(typeof window>"u"))try{window.sessionStorage.removeItem(this.holdStorageKey())}catch{}}async resumeHoldFromServer(e,t){try{let i=await this.controller.resumeHold(e);if(!i)return null;let r={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items};return this.hold=r,this.handedOff=!0,this.bookedShown=!1,this.ctaPhase="idle",this.startHoldTimer(r.expiresAt),this.rememberHold(r),this.syncTray(),this.emitHoldChange(),this.opts.onHoldRestored?.(r,r.seats??[],this.buildHandoff(r)),t&&this.toast(this.tf("picker.heldTicketsRestored","Your held tickets have been restored."),"success"),r}catch(i){let r=i?.status;return r===404||r===409?this.forgetHold():this.opts.onError?.(i),null}}async restoreRememberedHold(){let e=this.rememberedHoldId();e&&await this.resumeHoldFromServer(e,!0)}activeFloorObjects(){let e=this.controller.doc;if(!e)return[];let t=e.floors;if(t?.length){let i=this.controller.getActiveFloorId();return(t.find(r=>r.id===i)??t[0]).objects??[]}return e.objects??[]}buildMinimap(){this.els.map&&(this.minimap=es({controller:this.controller,root:()=>this.root,cssVar:e=>this.cssVar(e),focusedSectionLabel:()=>this.lastSection?.label},this.regions["bottom-left"]??this.els.map))}catPrice(e){let t=e.tiers?.length?e.tiers[0].price:e.price;return t===void 0||!e.key?t:this.paidPrice(e.key,e.tiers?.[0]?.id??null,t)}catPriceRange(e){let t=e.tiers?.length?e.tiers.map(i=>this.paidPrice(e.key,i.id??null,i.price)):e.price==null?[]:[this.paidPrice(e.key,null,e.price)];if(e.key)for(let i of this.pricesByChannel.values())for(let r of i)r.categoryKey===e.key&&t.push(r.price);return t.length?{min:Math.min(...t),max:Math.max(...t)}:void 0}buildPriceFilter(){if(this.suppressPricing||!this.els.prices||!this.els.pricesSec)return;let e=Nr(this.controller.doc?.categories??[],this.legendDeps());if(e.length<2)return;let t=document.createElement("select");t.className="sl-price-select",t.setAttribute("aria-label",this.tf("picker.filterAndFocusByPrice","Filter and focus seats by price"));let i=document.createElement("option");i.value="all",i.textContent=this.tf("picker.allPrices","All prices"),t.appendChild(i);for(let r of e){let n=document.createElement("option");n.value=r.id,n.textContent=r.label,t.appendChild(n)}this.els.pricesSec.appendChild(t),t.addEventListener("change",()=>{let n=e.find(o=>o.id===t.value)?.keys??null;this.focusedCatKey=null,this.priceBandKeys=n?new Set(n):null,this.controller.setCategoryFilter(n),this.controller.focusCategoryFilter(n),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)})}buildArenaChrome(){let e=this.controller.doc;if(!e||!this.els.map)return;let t=e.objects.some(i=>i.type==="section")||(e.floors??[]).some(i=>i.objects.some(r=>r.type==="section"));if(this.canOffer3d()){let i=document.createElement("div");i.className="sl-projection",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.venueView","Venue view")),i.innerHTML=`<button type="button" data-view="map" aria-pressed="true" title="${this.tf("picker.flat2dMap","Flat 2D map")}">${this.tf("picker.map","Map")}</button><button type="button" data-view="venue3d" aria-pressed="false" title="${this.tf("picker.interactive3dVenueView","Interactive 3D venue view")}">3D</button>`,i.querySelectorAll("button").forEach(r=>{r.addEventListener("click",()=>{this.setBuyerView(r.dataset.view)})}),this.regions["top-right"].appendChild(i),this.projectionEl=i,this.syncProjection()}if(t){let i=[...e.objects,...(e.floors??[]).flatMap(h=>h.objects)],r=new Set((e.zones??[]).map(h=>h.id)),o=i.some(h=>h.type==="section"&&typeof h.zone=="string"&&r.has(h.zone))?["zones","sections","seats"]:["sections","seats"],a=document.createElement("div");a.className="sl-rungs on",a.setAttribute("role","group"),a.setAttribute("aria-label",(0,v.t)("picker.zoomLevel"));let l={zones:(0,v.t)("picker.rungLabel.zones"),sections:(0,v.t)("picker.rungLabel.sections"),seats:(0,v.t)("picker.rungLabel.seats")},c={zones:(0,v.t)("picker.rungTip.zones"),sections:(0,v.t)("picker.rungTip.sections"),seats:(0,v.t)("picker.rungTip.seats")};a.innerHTML=o.map(h=>`<button type="button" data-rung="${h}" title="${c[h]}" aria-pressed="false">${l[h]}</button>`).join(""),a.querySelectorAll("button").forEach(h=>{h.addEventListener("click",()=>{let d=h.dataset.rung;this.controller.setRung(d),d==="seats"&&this.collapseSectionCard()})}),this.regions["top-center"].appendChild(a),this.rungsEl=a,this.syncRung()}if(this.controller.isMultiFloor()){let i=Xr({floors:this.controller.getFloors(),tf:(r,n)=>this.tf(r,n),onChoose:r=>{r===""?this.controller.setFloorOverview(!0):this.controller.setFloor(r),this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()}});this.regions["left-rail"].appendChild(i),this.floorsEl=i,this.syncFloors()}}syncRung(){let e=this.controller.getRung(),t=this.controller.seatsRevealed?.()??(e==="seats"||!!this.controller.getFocusedSection?.());this.root&&(this.root.dataset.zoomed=String(t)),this.minimap?.setAutoOpen(!1),this.rungsEl&&this.rungsEl.querySelectorAll("button").forEach(i=>{let r=i.dataset.rung===e;i.classList.toggle("on",r),i.setAttribute("aria-pressed",String(r))})}syncProjection(){this.projectionEl&&this.projectionEl.querySelectorAll("button").forEach(e=>{let t=e.dataset.view===this.buyerView;e.classList.toggle("on",t),e.setAttribute("aria-pressed",String(t))})}canOffer3d(){return this.opts.enable3D===!1||!this.controller.doc||!It()?!1:this.allSeats().length<=this.max3dSeats()}max3dSeats(){let e=this.opts.max3DSeats;if(typeof e=="number"&&e>0)return e;let t=globalThis.navigator;return(t?.hardwareConcurrency??8)<=4||(t?.deviceMemory??8)<=4||(globalThis.matchMedia?.("(pointer: coarse)").matches??!1)?Bs/2:Bs}syncFloors(){Zr(this.floorsEl,this.controller.getActiveFloorId(),this.controller.isFloorOverview())}showSectionCard(e){if(this.lastSection=e,this.secCardEl?.remove(),this.secCardEl=null,!e){this.syncLocatorDock(),this.minimap?.refreshMinimap();return}this.secCardCollapsed=this.controller.getRung()==="seats",this.secCardShownAt=Date.now(),this.renderSectionCard(e),this.minimap?.refreshMinimap()}sectionNeighbours(e){let t=this.activeFloorObjects().filter(r=>r.type==="section"&&!this.controller.isSectionClosed(r.id)&&this.controller.getSectionSeatCount(r.id)>0);if(t.length<2)return null;let i=t.findIndex(r=>r.id===e);return i<0?null:{previous:t[(i-1+t.length)%t.length],next:t[(i+1)%t.length]}}wireSectionNavigation(e){e.querySelectorAll("[data-section-nav]").forEach(t=>{t.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation();let r=t.dataset.sectionNav;r&&this.controller.focusSection(r)})})}renderSectionCard(e){if(!this.els.map)return;this.secCardEl?.remove();let t=e.categories.length?e.categories.map(f=>{let b=this.controller.doc?.categories.find(C=>C.key===f.key);return b?this.catPriceRange(b):{min:f.priceMin,max:f.priceMax}}).filter(f=>f!=null):[{min:e.priceMin,max:e.priceMax}],i=Math.min(...t.map(f=>f.min)),r=Math.max(...t.map(f=>f.max)),n=i===r?this.money(i):`${this.money(i)}\u2013${this.money(r)}`,o=(0,v.tCount)("picker.seatsLeftInSection",e.seatsLeft),a=(0,v.t)("picker.seatsLeftShort",{count:e.seatsLeft}),l=`<button type="button" class="sl-seccard-x" aria-label="${(0,v.t)("picker.closeSectionSummary")}">\u2715</button>`,c=`<button type="button" class="sl-seccard-x sl-seccard-back" aria-label="${(0,v.t)("picker.closeSectionSummary")}"><span class="sl-seccard-back-chev" aria-hidden="true">\u2039</span>${V((0,v.t)("picker.overview"))}</button>`,h=Pr(this.sectionNeighbours(e.id)),d=document.createElement("div"),p=this.root?.dataset.layout==="narrow",m={label:e.label,color:e.color,leftLabel:o,leftShortLabel:a,nav:h,close:l};if(p)d.className="sl-seccard strip on",d.setAttribute("role","group"),d.setAttribute("aria-label",`${(0,v.t)("picker.sectionSummaryAria",{label:e.label})}, ${o}`),d.innerHTML=Ci({...m,close:c}),this.wireSectionNavigation(d),d.querySelector(".sl-seccard-x").addEventListener("click",()=>this.controller.overview()),this.els.map.appendChild(d),this.fitSectionStripCount();else if(this.secCardCollapsed)d.className="sl-seccard mini on",d.setAttribute("role","button"),d.setAttribute("aria-label",(0,v.t)("picker.sectionSummaryAria",{label:e.label})),d.innerHTML=Ci(m),this.wireSectionNavigation(d),d.addEventListener("click",f=>{f.target.closest(".sl-seccard-x")||(this.secCardCollapsed=!1,this.secCardShownAt=Date.now(),this.renderSectionCard(e))}),d.querySelector(".sl-seccard-x").addEventListener("click",()=>this.controller.overview()),(this.regions["top-center"]??this.els.map).appendChild(d);else{d.className="sl-seccard on",d.setAttribute("role","dialog"),d.setAttribute("aria-label",(0,v.t)("picker.sectionSummaryAria",{label:e.label}));let f=e.categories.map(b=>{let C=this.controller.doc?.categories.find(R=>R.key===b.key),x=C?this.catPriceRange(C):{min:b.priceMin,max:b.priceMax};return Or({label:b.label,color:b.color,dim:this.priceBandKeys!=null&&!this.priceBandKeys.has(b.key),rangeLabel:x&&x.min!==x.max?`${this.money(x.min)}\u2013${this.money(x.max)}`:this.money(x?.min??b.price)})}).join("");d.innerHTML=Rr({...m,priceLabel:n,showPrice:e.categories.length>0,zoneLabel:e.zoneLabel,entrance:e.entrance?`${(0,v.t)("picker.entrance")} ${e.entrance}`:void 0,mix:f,overviewLabel:(0,v.t)("picker.overview"),hint:(0,v.t)("picker.tapSeatHint")}),this.wireSectionNavigation(d),d.querySelector(".sl-seccard-x").addEventListener("click",()=>this.controller.overview()),d.querySelector(".sl-seccard-overview").addEventListener("click",()=>this.controller.overview()),(this.regions["top-center"]??this.els.map).appendChild(d)}this.secCardEl=d,this.syncLocatorDock()}syncLocatorDock(){this.root&&(this.secCardEl?.classList.contains("strip")?this.root.dataset.locator="true":delete this.root.dataset.locator)}fitSectionStripCount(){let e=this.secCardEl;if(!e||!e.classList.contains("strip"))return;let t=e.querySelector(".sl-seccard-left");if(!t)return;let i=e.querySelector(".sl-seccard-name"),r=this.els.map?.clientWidth??0,n=a=>a!=null&&a.clientWidth>0&&a.scrollWidth>a.clientWidth+1,o=()=>n(t)||n(i)?!1:r<=0||e.scrollWidth<=r-uo;t.hidden=!1,t.textContent=t.dataset.full??t.textContent??"",!o()&&(t.textContent=t.dataset.short??t.dataset.full??"",!o()&&(t.hidden=!0))}collapseSectionCard(){!this.secCardEl||this.secCardCollapsed||!this.lastSection||this.root?.dataset.layout!=="narrow"&&(this.secCardCollapsed=!0,this.renderSectionCard(this.lastSection))}sectionCardOnView(){if(!(!this.secCardEl||this.secCardCollapsed||!this.lastSection)&&this.root?.dataset.layout!=="narrow"){if(this.controller.getRung()==="seats"){this.collapseSectionCard();return}if(Date.now()-this.secCardShownAt<1400){this.sectionCardCoverage()>.25&&this.collapseSectionCard();return}this.collapseSectionCard()}}sectionCardCoverage(){let e=this.secCardEl,t=this.lastSection;if(!e||!t||!this.els.map)return 0;let i=this.activeFloorObjects().find(x=>x.type==="section"&&x.id===t.id)?.outline;if(!i||i.length<3)return 0;let r=i.map(x=>this.controller.worldToScreen(x)),n=r.map(x=>x.x),o=r.map(x=>x.y),a=Math.min(...n),l=Math.min(...o),c=Math.max(...n)-a,h=Math.max(...o)-l;if(c<=0||h<=0)return 0;let d=this.els.map.getBoundingClientRect(),p=e.getBoundingClientRect(),m=p.left-d.left,f=p.top-d.top,b=Math.max(0,Math.min(m+p.width,a+c)-Math.max(m,a)),C=Math.max(0,Math.min(f+p.height,l+h)-Math.max(f,l));return b*C/(c*h)}markedSeatAnnouncement(e){let t=Hi(this.controller.getRenderer()?.getSeatMark?.(e.id),this.performanceGroup?.nights?.());return ks(t,e.displayLabel??e.label,this.opts.locale)}announceSeat(e){if(!this.srEl)return;if(!e){this.srEl.textContent="";return}let t=this.markedSeatAnnouncement(e);if(t){this.srEl.textContent=t;return}let i=this.controller.doc?.categories.find(m=>m.key===e.categoryKey),r=this.controller.getStatus(e.id)??"free",n=r==="free"?this.tf("picker.statusAvailable","available"):r==="held"?this.tf("picker.statusOnHold","on hold"):this.tf("picker.statusTaken2","taken"),o=i?this.catPriceRange(i):void 0,a=o?o.min===o.max?this.money(o.min):`${this.money(o.min)}\u2013${this.money(o.max)}`:void 0,l=this.controller.tableSelection(e.id),c=l??this.controller.seatDetails(e.id),h=gt(c),d=c?.rowLabel??c?.displayLabel??e.displayLabel??e.label,p=l?`${h} ${d}, ${l.bookingMode==="variable"?(0,v.t)("picker.minToMaxGuests",{min:l.minOccupancy,max:l.maxOccupancy}):(0,v.t)("picker.capacityGuests",{count:l.capacity})}`:c?.objectType==="booth"?`${h} ${d}`:c?.objectType==="table"?`${h} ${d}, ${(0,v.t)("picker.seatNumberLower",{label:c.seatNumber??e.label})}`:(0,v.t)("picker.seatLabel",{label:c?.displayLabel??e.displayLabel??e.label});this.srEl.textContent=`${p}, ${i?.label??e.categoryKey}${a?`, ${a}`:""}, ${n}`}showTableDialog(e,t,i){this.dismissTableDialog(!1),this.tableDialog={...e},this.tableDialogHeld=t,this.tableDialogReturnFocus=i??document.activeElement;let r=this.controller.doc?.categories.find(a=>a.key===e.categoryKey),n=e.bookingMode==="variable",o=document.createElement("div");o.className="sl-table-scrim",o.innerHTML=_r(e,{variable:n,held:t,typeWord:gt(e),categoryLabel:r?.label??e.categoryKey,unitPrice:this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label))}),this.root.appendChild(o),this.tableDialogEl=o,this.renderTableDialogState(),o.querySelectorAll("[data-table-step]").forEach(a=>{a.addEventListener("click",()=>{if(!this.tableDialog)return;let l=Math.max(this.tableDialog.minOccupancy,Math.min(this.tableDialog.maxOccupancy,this.tableDialog.quantity+Number(a.dataset.tableStep)));this.tableDialog={...this.tableDialog,quantity:l},this.renderTableDialogState()})}),o.querySelector(".sl-table-cancel").addEventListener("click",()=>this.cancelTableDialog()),o.querySelector(".sl-table-confirm").addEventListener("click",()=>{this.confirmTableDialog()}),o.addEventListener("mousedown",a=>{a.target===o&&this.cancelTableDialog()}),o.addEventListener("keydown",a=>{if(a.key!=="Tab")return;let l=[...o.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!l.length)return;let c=l[0],h=l[l.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),h.focus()):!a.shiftKey&&document.activeElement===h&&(a.preventDefault(),c.focus())}),requestAnimationFrame(()=>o.querySelector(n?'[data-table-step="-1"]':".sl-table-confirm")?.focus())}renderTableDialogState(){let e=this.tableDialog,t=this.tableDialogEl;if(!e||!t)return;let i=t.querySelector("output[data-table-qty]");i&&(i.value=String(e.quantity));let r=t.querySelector("input[data-table-qty]");r&&(r.value=String(e.quantity)),t.querySelectorAll("[data-table-step]").forEach(a=>{let l=Number(a.dataset.tableStep);a.disabled=l<0?e.quantity<=e.minOccupancy:e.quantity>=e.maxOccupancy});let n=this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label),o=t.querySelector("[data-table-total]");o&&(o.textContent=this.money(n*e.quantity))}async confirmTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;if(!e)return;let i=this.tableDialogEl?.querySelector(".sl-table-confirm");if(i&&(i.disabled=!0,i.textContent=t?this.tf("picker.updatingEllipsis","Updating\u2026"):this.tf("picker.selectingEllipsis","Selecting\u2026")),t){try{let r=await this.controller.replaceTableQuantity(e.label,e.quantity,this.opts.holdTtlMs);if(!r){this.toast(this.tf("picker.guestCountCouldNotBeSecured","That guest count could not be secured. Your current table hold is unchanged."),"warning"),this.renderTableDialogState(),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"));return}this.hold={holdId:r.holdId,expiresAt:r.expiresAt,seats:r.seats,items:r.items},this.startHoldTimer(r.expiresAt),this.dismissTableDialog(),this.syncTray(),this.emitHoldChange(),this.toast((0,v.t)("picker.tableUpdatedForGuests",{label:e.label,count:e.quantity}),"success")}catch(r){this.opts.onError?.(r),this.toast(this.tf("picker.guestCountNoLongerAvailable","That guest count is no longer available. Your current hold is unchanged."),"error"),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"))}return}if(!this.controller.setTableQuantity(e.label,e.quantity)){i&&(i.disabled=!1,i.textContent=e.bookingMode==="variable"?this.tf("picker.selectTable","Select table"):this.tf("picker.selectWholeTable","Select whole table"));return}this.dismissTableDialog(),this.collapseSectionCard(),this.syncTray()}cancelTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;this.dismissTableDialog(),e&&!t&&this.controller.deselect(e.physicalSeatIds)}dismissTableDialog(e=!0){let t=this.tableDialogReturnFocus;this.tableDialogEl?.remove(),this.tableDialogEl=null,this.tableDialog=null,this.tableDialogHeld=!1,this.tableDialogReturnFocus=null,e&&requestAnimationFrame(()=>(t?.isConnected?t:this.root)?.focus())}showConfirm(e){let t=this.confirmSeat?.id;this.confirmEl?.remove(),this.confirmEl=null,this.confirmSeat=e,this.root?.setAttribute("data-confirming","true"),this.els.side?.toggleAttribute("inert",!0),Object.values(this.regions).forEach(y=>y.toggleAttribute("inert",!0)),this.controller.setSelectionFocus(e.id),t&&t!==e.id&&this.controller.deselect([t]),this.tipEl&&(this.tipEl.style.display="none");let i=this.controller.seatDetails(e.id),r=this.controller.doc?.categories.find(y=>y.key===e.categoryKey),n=i?.price??(r?.tiers?.length?r.tiers[0].price:r?.price),o=n!=null?this.paidPrice(e.categoryKey,i?.tierId??r?.tiers?.[0]?.id??null,n,e.label):void 0,a=Lr(i,e.displayLabel??e.label,gt(i)),l=i?.tiers??r?.tiers??[],c=i?.tierId??l[0]?.id,h=Hr(l,c,y=>this.money(this.paidPrice(e.categoryKey,y.id,y.price,e.label))),d=this.buyerView==="venue3d",p=this.performanceGroup?.confirmDateSelection??void 0,m=p?this.performanceGroup?.nights?.()??[]:[],f=p?vs(m,p,e.id,(y,E)=>this.tf(y,E)):"",b=document.createElement("div");b.className="sl-confirm",f&&b.classList.add("sl-confirm-group-dates"),b.setAttribute("role","dialog"),b.setAttribute("aria-label",(0,v.t)("picker.confirmSeatLabel",{label:e.label}));let C=r?.color??"#6e7bff",x=Ti(C,this.cssVar("--sl-surface")||"#1a2234",.76)??C;b.style.setProperty("--sl-cat",C),b.style.setProperty("--sl-cat-ink",Te(x,"#172033","#ffffff")),b.innerHTML=Ir({identityFields:a,categoryColor:r?.color??"#6e7bff",categoryLabel:String(i?.categoryLabel??r?.label??e.categoryKey),priceLabel:o!=null?this.money(o):"",tierChoices:h,groupDates:f,wheelchair:Tr(i?.wheelchairSpaceType),commercial:Er(e.commercial),thumb:this.seatViewEnabled()&&this.buyerView!=="venue3d"?this.confirmThumbHtml(e):"",inspect:d?`${Mr(e,`${i?.displayLabel??e.displayLabel??e.label} \xB7 ${o==null?this.tf("picker.priceNotSupplied","Price not supplied"):this.money(o)}`,d)}<div class="sl-confirm-inspect-row">${Ar(e,d?this.view3dCompareSeatIds:null)}${Si(this.canOffer3d(),d)}</div>`:Si(this.canOffer3d(),d),cancelLabel:(0,v.t)("common.cancel"),selectLabel:this.tf("picker.select","Select")}),this.els.map.appendChild(b),this.confirmEl=b;let R=b.querySelector(".sl-confirm-thumb");if(R&&e.viewUrl){let y=e.viewMeta?.previewUrl??e.viewUrl;this.buyerAssetUrls.resolve(y).then(E=>{E&&b.isConnected&&this.confirmEl===b&&(R.src=E)}).catch(E=>this.opts.onError?.(E))}this.reanchorConfirm(),b.querySelector(".sl-confirm-view")?.addEventListener("click",()=>{this.openSeatView(e)}),b.querySelector(".sl-confirm-confidence")?.addEventListener("click",y=>{this.openSeatConfidencePassport(e,y.currentTarget instanceof HTMLElement?y.currentTarget:null)}),b.querySelector(".sl-confirm-compare")?.addEventListener("click",()=>this.saveView3dComparisonSeat(e)),b.querySelectorAll("[data-confirm-tier]").forEach(y=>{y.addEventListener("click",()=>{let E=y.dataset.confirmTier,H=l.find(O=>O.id===E);if(!H)return;this.controller.setSeatTier(e.id,H.id),b.querySelectorAll("[data-confirm-tier]").forEach(O=>{O.setAttribute("aria-pressed",String(O===y))});let M=b.querySelector(".sl-confirm-price");M&&(M.textContent=this.money(this.paidPrice(e.categoryKey,H.id,H.price,e.label))),this.reanchorConfirm()})}),b.querySelector(".sl-confirm-3d")?.addEventListener("click",()=>{this.buyerView==="venue3d"?(this.dismissConfirm(),this.view3dHandle?.flyToSeat(e.id)):(this.view3dReturnSeat=e,this.dismissConfirm(),this.enter3d(e.id))}),xs(b,p,(y,E)=>this.tf(y,E),()=>this.reanchorConfirm()),b.querySelector(".sl-confirm-add").addEventListener("click",()=>{this.commitConfirm()}),b.querySelector(".sl-confirm-cancel").addEventListener("click",()=>this.cancelConfirm()),requestAnimationFrame(()=>b.querySelector(".sl-confirm-add")?.focus())}reanchorConfirm(){if(!this.confirmEl||!this.confirmSeat||this.root?.dataset.view3d==="on")return;let e=this.controller.worldToScreen({x:this.confirmSeat.x,y:this.confirmSeat.y});if(this.root?.dataset.layout==="narrow")return;let t=this.els.map.clientWidth,i=this.els.map.clientHeight,r=this.confirmEl.offsetWidth||276,n=this.confirmEl.offsetHeight||230,o=this.confirmEl.classList.contains("sl-confirm-group-dates"),a=Ls(e,{width:t,height:i},{width:r,height:n},o);this.confirmEl.dataset.placement=a.placement,this.confirmEl.style.left=`${a.left}px`,this.confirmEl.style.top=`${a.top}px`}dismissConfirm(){this.confirmEl?.remove(),this.confirmEl=null,this.confirmSeat=null,this.root?.removeAttribute("data-confirming"),Object.values(this.regions).forEach(e=>e.toggleAttribute("inert",!1)),this.applyPanelCollapsed(),this.controller.setSelectionFocus(null)}async commitConfirm(){let e=this.confirmSeat;e&&await ws(this.confirmEl,e.id,this.performanceGroup?.confirmDateSelection??void 0)&&(this.confirmSeat&&this.dismissConfirm(),this.collapseSectionCard(),this.syncTray(),this.syncSelectionTo3d())}cancelConfirm(){let e=this.confirmSeat;e&&(this.controller.deselect([e.id]),this.confirmSeat&&this.dismissConfirm(),this.syncSelectionTo3d(),this.root?.focus({preventScroll:!0}))}closeConfirm(){this.dismissConfirm()}seatViewEnabled(){return this.opts.seatView!==!1}allSeats(){return this.allSeatsCache||(this.allSeatsCache=[...this.controller.getExpandedSeats()]),this.allSeatsCache}async openSeatView(e){if(!this.root||!this.seatViewEnabled())return;let t=++this.seatViewGen,i=this.controller.doc,r=this.controller.getActiveFloorId(),n=e.focalPoint??i?.floors?.find(d=>d.id===r)?.focalPoint??i?.focalPoint??{x:0,y:0},o,a,l=!1;if(e.viewUrl){let d,p=null;try{let f=e.viewMeta?.previewUrl;f&&f!==e.viewUrl?(p=await this.buyerAssetUrls.resolve(f),d=e.viewUrl):d=await this.buyerAssetUrls.resolve(e.viewUrl)}catch(f){t===this.seatViewGen&&this.opts.onError?.(f);return}if(t!==this.seatViewGen||!d||e.viewMeta?.previewUrl&&e.viewMeta.previewUrl!==e.viewUrl&&!p||!this.root||!this.seatViewEnabled())return;let m={url:d,...p?{previewUrl:p}:{},...e.viewMeta?.sourceWidth!==void 0?{sourceWidth:e.viewMeta.sourceWidth}:{},...e.viewMeta?.sourceHeight!==void 0?{sourceHeight:e.viewMeta.sourceHeight}:{},...e.viewMeta?.previewWidth!==void 0?{previewWidth:e.viewMeta.previewWidth}:{},...e.viewMeta?.previewHeight!==void 0?{previewHeight:e.viewMeta.previewHeight}:{},...e.viewMeta?.variants?.length?{variants:e.viewMeta.variants}:{},...e.viewMeta?.coverage?{coverage:e.viewMeta.coverage}:{},...e.viewMeta?.capturedAt?{capturedAt:e.viewMeta.capturedAt}:{},...e.viewMeta?.sourceLabel?{sourceLabel:e.viewMeta.sourceLabel}:{}};o=m,a=(0,bt.seatViewDisclosure)(m),l=(0,bt.isAuthoredSeatView)(m)}else{let d;try{let{generateSeatPanorama:p}=await Bt();d=p(e,n,this.allSeats())}catch(p){t===this.seatViewGen&&this.opts.onError?.(p);return}if(t!==this.seatViewGen||!this.root||!this.seatViewEnabled())return;o={url:d.url,generated:!0},a=(0,v.t)("picker.illustrationCaption",{m:d.distanceM})}this.closeSeatView(!1);let c=(0,v.t)("picker.viewFromSeat",{label:e.label}),h=Vt({root:this.root,source:o,caption:a,real:l,closeLabel:this.tf("picker.close","Close"),dragHint:this.tf("picker.dragToLookAround","Drag to look around \xB7 scroll to zoom"),viewFromSeatLabel:c,real360Label:(0,v.t)("picker.real360"),previewLabel:(0,v.t)("picker.preview"),resolveAsset:d=>this.buyerAssetUrls.resolve(d),onClose:()=>this.closeSeatView()});this.viewEl=h.element,this.viewCleanup=()=>h.dispose()}closeSeatView(e=!0){e&&(this.seatViewGen+=1),this.viewCleanup?.(),this.viewCleanup=null,this.viewEl?.remove(),this.viewEl=null}money(e){let t=this.opts.pricing?.formatter;if(t)return t(e,this.currency);let i=Number.isInteger(e);return(0,v.formatMoney)(e,this.currency,{locale:this.opts.locale,fallback:(r,n)=>`${r} ${n}`,...i?{minimumFractionDigits:0,maximumFractionDigits:0}:{}})}scheduleOfferBoundary(e){if(this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerBoundaryTimer=null,!this.api.availability||this.destroyed)return;let t=Date.now(),i=qr(e,t);if(i==null)return;let r=6*36e5,n=Math.min(Math.max(i-t+1e3,1e3),r);this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},n)}scheduleOfferRefresh(e){!this.api.availability||this.destroyed||(this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerRefreshTimer=setTimeout(()=>{this.offerRefreshTimer=null,this.refreshOfferAvailability(e)},e?180:0))}async refreshOfferAvailability(e){if(!(!this.api.availability||this.destroyed))try{let t=await this.api.availability(this.opts.event,e);if(this.destroyed)return;let i=Kt(t);if(!i)return;this.offerAvailability=i,this.applyChannelPricing(i.channelPricing),this.scheduleOfferBoundary(i);let r=Wt(i),n={...this.hostPricing?.prices??{},...r},o=Object.keys(n).length>0||this.hostPricing?.formatter?{prices:n,...this.hostPricing?.formatter?{formatter:this.hostPricing.formatter}:{}}:void 0;this.setPricing(o),this.syncOffer(),this.opts.onOfferAvailabilityChange?.(i)}catch{!this.destroyed&&!this.offerBoundaryTimer&&!document.hidden&&(this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},3e4))}}offerPrice(e){return e?this.offerAvailability?.prices.find(t=>t.categoryKey===e)??null:null}applyChannelPricing(e){this.channelByObject.clear(),this.pricesByChannel.clear();for(let t of e?.channels??[])this.pricesByChannel.set(t.channelId,t.priceOverrides);for(let t of e?.objects??[])this.pricesByChannel.has(t.channelId)&&this.channelByObject.set(t.label,t.channelId)}syncOffer(){let e=this.els.offer;if(!e)return;let t=this.offerAvailability,i=t?.release??null,r=i?null:t?.upcoming??null;if(!t||t.state==="closed"||t.state==="sold-out"||!i&&!r){e.classList.remove("has"),e.replaceChildren();return}let n=i??r,o=document.createElement("div");o.className="sl-offer-main";let a=document.createElement("div");a.className="sl-offer-copy";let l=document.createElement("span");l.className="sl-offer-kicker",l.textContent=i?this.tf("picker.currentTicketOffer","Current ticket offer"):this.tf("picker.upcomingTicketOffer","Upcoming ticket offer");let c=document.createElement("strong");c.className="sl-offer-name",c.textContent=n.name||(i?this.tf("picker.currentOffer","Current offer"):this.tf("picker.scheduledOffer","Scheduled offer"));let h=document.createElement("span");h.className="sl-offer-line";let d=[];i&&t.fromPrice!=null&&d.push(this.money(t.fromPrice/100)),i&&n.remaining!=null&&d.push((0,v.t)("picker.offerRemainingAvailable",{count:n.remaining})),i&&n.endsAt!=null&&d.push((0,v.t)("picker.offerUntil",{time:Dt(n.endsAt,this.eventTimezone,this.opts.locale)})),r?.startsAt!=null&&d.push((0,v.t)("picker.offerStarts",{time:Dt(r.startsAt,this.eventTimezone,this.opts.locale)})),h.textContent=d.join(" \xB7 "),a.append(l,c,h);let p=document.createElement("details");p.className="sl-offer-info";let m=document.createElement("summary");m.setAttribute("aria-label",(0,v.t)("picker.howOfferWorks",{name:c.textContent??""})),m.textContent="i";let f=document.createElement("div");f.className="sl-offer-detail",f.textContent=i?this.tf("picker.offerDetailActive","This price applies automatically to eligible seats. Tickets in active carts temporarily reduce the available quantity; released or expired holds return it. When the offer ends, the next matching offer or normal ticket price takes over."):this.tf("picker.offerDetailUpcoming","Tickets are available at their normal price now. This scheduled offer will apply automatically to eligible seats when it starts."),p.append(m,f),o.append(a,p),e.replaceChildren(o),e.classList.add("has")}paidPrice(e,t,i,r){let n=r?this.channelByObject.get(r):void 0;if(n&&e){let a=this.pricesByChannel.get(n)?.find(l=>l.categoryKey===e&&l.tierId===(t??null));if(a)return a.price}let o=e?this.opts.pricing?.prices?.[e]:void 0;return o===void 0?i:typeof o=="number"?o:t&&o.tiers?.[t]!==void 0?o.tiers[t]:o.base??i}legendDeps(){return{colorOf:e=>this.controller.getRenderer()?.categoryDisplayColor?.(e.key)??e.color,rangeOf:e=>this.catPriceRange(e),priceOf:e=>this.catPrice(e),offerOf:e=>this.offerPrice(e),money:e=>this.money(e),esc:V}}syncPriceRail(e,t,i=this.legendDeps()){let r=this.els.railScroll,n=e.length>1;this.els.rail?.classList.toggle("has",n||!!this.a11yChipsEl?.children.length),r&&(r.innerHTML=n?jr({...i,categories:e,left:t,activeKey:this.focusedCatKey,soldOutWord:this.tf("picker.soldOut","Sold out")}):"",r.querySelectorAll(".sl-rc").forEach(o=>{o.addEventListener("click",()=>this.focusCategory(o.dataset.cat??""))}),this.railEdgesBound||(this.railEdgesBound=!0,r.addEventListener("scroll",()=>Ei(r),{passive:!0})),requestAnimationFrame(()=>Ei(r)))}syncPrices(){let e=this.controller.doc;if(!e||!this.els.prices)return;let t=this.controller.categoryAvailability(),i=e.categories.filter(d=>!d.notForSale);this.narrateAvailability(i,t),this.syncSoldout(i,t);let r=this.legendDeps(),n=this.suppressPricing,o=n?{...r,priceOf:()=>{},rangeOf:()=>{},offerOf:()=>null}:r;n&&(this.els.pricesSec?.querySelector("span")?.replaceChildren(this.tf("picker.seatCategories","Seat categories")),this.els.pricesHint?.remove()),this.syncPriceRail(i,t,o);let a=5,l=i.length-a,c=l>1&&!this.pricesExpanded,h=c?i.slice(0,a):i;this.els.prices.classList.toggle("sl-expanded",l>1&&this.pricesExpanded),this.els.prices.innerHTML=Fr({...o,categories:h,left:t,collapsed:c,activeKey:this.focusedCatKey,bandKeys:this.priceBandKeys,leftCount:d=>(0,v.tCount)("picker.leftCount",d),titleFor:(d,p)=>p?this.tf("picker.showAllSeats","Show all seats"):(0,v.t)("picker.showLabelSeatsOnMap",{label:d.label}),moreLabel:l>1?c?n?this.tf("picker.showAllCategories","Show all categories"):(0,v.t)("picker.showAllTicketTypes",{count:i.length}):this.tf("picker.showFewer","Show fewer"):null,status:{legend:this.tf("picker.seatStatusLegend","Seat status legend"),held:this.tf("picker.temporarilyHeld","Temporarily held"),sold:this.tf("picker.sold","Sold")}}),this.els.prices.querySelectorAll(".sl-price-row").forEach(d=>{d.addEventListener("mouseenter",()=>this.controller.getRenderer()?.setCategoryHighlight?.(d.dataset.cat??null)),d.addEventListener("mouseleave",()=>this.controller.getRenderer()?.setCategoryHighlight?.(null));let p=()=>this.focusCategory(d.dataset.cat??"");d.addEventListener("click",p),d.addEventListener("keydown",m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),p())})}),this.els.prices.querySelector(".sl-price-more")?.addEventListener("click",()=>{this.pricesExpanded=!this.pricesExpanded,this.syncPrices()})}focusCategory(e){if(!e)return;let t=this.focusedCatKey===e?null:e;this.focusedCatKey=t,this.priceBandKeys=t?new Set([t]):null;let i=this.els.pricesSec?.querySelector(".sl-price-select");i&&(i.value="all"),this.controller.setCategoryFilter(t?[t]:null),this.controller.focusCategoryFilter(t?[t]:null),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)}narrateAvailability(e,t){let i=this.els.liveText,r=this.lastCatAvail;this.lastCatAvail={...t};let n=this.controller.getActiveFloorId();if(n!==this.lastAvailFloorId&&(this.lastAvailFloorId=n,this.availQuietUntil=performance.now()+2e3),!(!i||!r||performance.now()<this.availQuietUntil))for(let o of e){let a=r[o.key],l=t[o.key]??0;if(a===void 0||l>=a)continue;let c=a-l;i.textContent=(0,v.tCount)("picker.seatsJustTakenInCategory",c,{label:o.label,left:l}),this.els.live?.classList.remove("on"),this.els.live?.offsetWidth,this.els.live?.classList.add("on"),this.liveTimer&&clearTimeout(this.liveTimer),this.liveTimer=setTimeout(()=>this.els.live?.classList.remove("on"),8e3);return}}evictTakenSelections(){let e=new Set([...this.controller.currentHold()?.labels??[],...this.holdingLabels]),t=this.controller.getSelection().filter(i=>!e.has(i.label)&&(this.controller.getStatus(i.id)??"free")!=="free");t.length&&(this.controller.deselect(t.map(i=>i.id)),this.toast((0,v.t)("picker.seatJustTakenByAnother",{label:t[0].label}),"error"))}syncTray(){if(!this.els.tray)return;this.updateSelectionCapacity();let e=this.committedSelection(),t=this.controller.getGAAreas(),i=this.hold?.items??[],r=[],n=new Set;if(!this.salesClosed){let u=this.performanceGroup?.nightSummary?.()??[];u.length&&r.push(gs(u,{title:this.tf("picker.group.yourSeatsByNight","Your seats by night"),empty:this.tf("picker.group.noSeatsChosenYet","No seats yet")}));let k=this.performanceGroup?.selectionModeSwitch;k&&r.push(`<button type="button" class="sl-pg-switch" data-pg-switch-mode>${V(k.label)}</button>`)}r.push(ls({salesClosed:this.salesClosed,hasPicks:e.length>0||i.length>0,hasGaAreas:t.length>0,groupMode:this.performanceGroup?this.performanceGroup.selectionMode??"same_seat":null,seated:!!this.controller.doc?.objects?.some(u=>u.type!=="gaArea"),whenText:this.eventWhenText?String(this.eventWhenText):void 0}));let o=!e.length&&!i.length&&!qe(this.gaQty,this.hold?.items??[]);if(o&&(this.baReopen=!1),!this.performanceGroup&&!this.salesClosed&&!this.hold&&(o||this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm)){let u=(this.controller.doc?.categories??[]).filter(L=>!L.notForSale),k=this.controller.getBestAvailableZones();this.baZone&&!k.some(L=>L.id===this.baZone)&&(this.baZone=""),r.push(as({confirming:this.bestAvailableConfirm,busy:this.bestAvailableBusy,reopened:this.baReopen,quantity:this.baQty,premium:this.baPremium,offerPremium:this.controller.hasPremiumSeats(),categories:u,zones:k,selectedCategory:this.baCat,selectedZone:this.baZone}))}let a=(u,k,L,U=1,B,D)=>rs({d:u?this.controller.seatDetails(u):null,area:L==="ga"?t.find(N=>N.id===B):void 0,label:k,objectType:L,quantity:U,identity:D,performanceLabel:this.performanceGroup?.activePerformanceLabel?.(),performanceDates:this.performanceGroup?.selectedPerformanceDates?.()}),l=ss,c=V;for(let u of Qi(i)){let k=u.objectType==="ga"?`held:ga:${u.objectId}:${u.tierId??""}`:`held:${u.label}`;n.add(k);let L=this.controller.doc?.categories.find(de=>de.key===u.categoryKey),U=u.tierId?L?.tiers?.find(de=>de.id===u.tierId)?.name:void 0,B=u.objectType!=="ga"?this.controller.seatByLabel(u.label):null,D=u.objectType==="table"?this.controller.tableSelection(u.label):null,N=this.seatViewEnabled()&&!!B&&u.objectType!=="table",re=`${L?.label??u.categoryKey}${U?` \xB7 ${U}`:""}`;r.push(`<div class="sl-chip sl-held${this.lastTrayKeys.has(k)?"":" sl-enter"}" data-key="${c(k)}" data-held="${c(encodeURIComponent(u.labels.join(`
1741
+ `)))}"${B?` data-locate="${c(B.id)}"`:""}><div class="sl-chip-main">`+a(B?.id??null,u.label,u.objectType,u.quantity??1,u.objectId,D??void 0)+`<div class="sl-chip-sub"><span class="sl-ticket-state held" aria-label="${c(this.tf("picker.heldForYou","Held for you"))}" title="${c(this.tf("picker.heldForYou","Held for you"))}"><svg viewBox="0 0 24 24"><rect x="5" y="10" width="14" height="10" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></span><span class="cat">${c(re)}</span>`+(D?.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${c(encodeURIComponent(u.label))}">${c((0,v.t)("picker.guestsCountEdit",{count:u.quantity??1}))}</button>`:"")+ki(B?.wheelchairSpaceType)+wi(B?.commercial)+(this.suppressPricing?"":`<span class="amt">${c(this.money(this.paidPrice(u.categoryKey,u.tierId,u.unitPrice,u.label)*(u.quantity??1)))}</span>`)+"</div></div>"+(this.performanceGroup?"":l((0,v.t)("picker.removeHeldTicketLabel",{label:Zi(u,t)}),N?u.label:null))+"</div>")}let h=new Set(i.map(u=>u.label)),d=this.seatViewEnabled();for(let u of e.filter(k=>!h.has(k.label))){let k=`seat:${u.id}`;n.add(k);let L=this.controller.doc?.categories.find(N=>N.key===u.categoryKey),U=u.tiers&&u.tiers.length&&!this.suppressPricing?`<select class="tier" data-tier="${c(u.id)}" aria-label="${c((0,v.t)("picker.ticketTierFor",{label:u.label}))}">`+u.tiers.map(N=>`<option value="${c(N.id)}"${N.id===u.tierId?" selected":""}>${c(N.name)} \xB7 ${c(this.money(this.paidPrice(u.categoryKey,N.id,N.price,u.label)))}</option>`).join("")+"</select>":"",B=u.tiers?.find(N=>N.id===u.tierId)??u.tiers?.[0],D=B?.buyerMessage?.trim()||(B?.restriction==="companion"?this.tf("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):"");r.push(`<div class="sl-chip${this.lastTrayKeys.has(k)?"":" sl-enter"}" data-key="${c(k)}" data-seat="${c(u.id)}" data-locate="${c(u.id)}"><div class="sl-chip-main">`+a(u.id,u.label,u.objectType,u.quantity??1,u.objectId,u)+`<div class="sl-chip-sub"><span class="sl-ticket-state" aria-label="${c(this.tf("picker.selected","Selected"))}" title="${c(this.tf("picker.selected","Selected"))}"><svg viewBox="0 0 24 24"><path d="M5 12l4 4L19 6"/></svg></span><span class="cat">${c(L?.label??u.categoryKey)}</span>`+(u.objectType==="table"&&u.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${c(encodeURIComponent(u.label))}">${c((0,v.t)("picker.guestsCountEdit",{count:u.quantity??1}))}</button>`:"")+`${ki(u.wheelchairSpaceType)}${wi(u.commercial)}${U}`+(this.suppressPricing?"":`<span class="amt">${c(this.money(this.paidPrice(u.categoryKey,u.tierId??null,u.price,u.label)*(u.quantity??1)))}</span>`)+"</div>"+(D?`<small class="sl-tier-note">${V(D)}</small>`:"")+"</div>"+l((0,v.t)("picker.removeSeatLabel",{label:u.label}),d&&u.objectType!=="table"?u.label:null)+"</div>")}t.length&&r.push(ir(this,t,i)),!this.performanceGroup&&!this.salesClosed&&!this.hold&&!o&&!this.baReopen&&!this.bestAvailableBusy&&!this.bestAvailableConfirm&&r.push(`<button type="button" class="sl-ba-reopen" data-ba-reopen><span aria-hidden="true">\u2726</span>${c(this.tf("picker.findTogetherInstead","Find seats together instead"))}</button>`),this.els.tray.innerHTML=r.join(""),this.lastTrayKeys=n,this.els.tray.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>this.performanceGroup?.selectionModeSwitch?.activate());let p=this.performanceGroup?.selectNight;p&&Ps(this.els.tray,u=>p(u)),this.els.tray.querySelectorAll("[data-ba]").forEach(u=>{u.addEventListener("click",()=>{this.baQty=Math.max(1,Math.min(this.maxTickets,this.baQty+Number(u.dataset.ba))),this.syncTray()})}),this.els.tray.querySelector("[data-ba-cat]")?.addEventListener("change",u=>{this.baCat=u.target.value}),this.els.tray.querySelector("[data-ba-zone]")?.addEventListener("change",u=>{this.baZone=u.target.value}),this.els.tray.querySelector("[data-ba-premium]")?.addEventListener("click",()=>{this.baPremium=!this.baPremium,this.syncTray()}),this.els.tray.querySelector(".sl-ba-go")?.addEventListener("click",()=>{if(this.pendingSelectionCount()>0){this.bestAvailableConfirm=!0,this.syncTray(),this.els.tray.querySelector("[data-ba-replace]")?.focus();return}this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelector("[data-ba-cancel]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-reopen]")?.addEventListener("click",()=>{this.baReopen=!0,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-close]")?.addEventListener("click",()=>{this.baReopen=!1,this.syncTray(),this.els.tray.querySelector("[data-ba-reopen]")?.focus()}),this.els.tray.querySelector("[data-ba-replace]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelectorAll(".sl-chip .rm").forEach(u=>{u.addEventListener("click",()=>{let k=u.closest(".sl-chip");if(k.dataset.held){this.removeHeldLabels(decodeURIComponent(k.dataset.held).split(`
1742
+ `),k);return}let L=k.dataset.seat,U=this.controller.getSelection().find(D=>D.id===L)?.label??this.tf("picker.seat","Seat"),B=()=>{this.controller.deselect([L]),this.toast((0,v.t)("picker.labelRemoved",{label:U}),"neutral",{label:this.tf("picker.undo","Undo"),onClick:()=>{let D=this.controller.select([L]);this.toast(D.length?(0,v.t)("picker.labelRestored",{label:U}):(0,v.t)("picker.labelNoLongerAvailable",{label:U}),D.length?"success":"warning")}})};if(this.reducedMotion()){B();return}k.classList.add("sl-leave"),this.scheduleMotion(B,150)})}),this.els.tray.querySelectorAll("[data-table-edit]").forEach(u=>{u.addEventListener("click",k=>{k.stopPropagation();let L=decodeURIComponent(u.dataset.tableEdit??""),U=this.controller.tableSelection(L);if(!U)return;let B=i.find(D=>D.label===L&&D.objectType==="table");this.showTableDialog({...U,quantity:B?.quantity??U.quantity},!!B,u)})}),this.els.tray.querySelectorAll(".sl-chip .tier").forEach(u=>{u.addEventListener("change",()=>this.controller.setSeatTier(u.dataset.tier,u.value||null))}),this.els.tray.querySelectorAll(".sl-chip .view[data-view-label]").forEach(u=>{u.addEventListener("click",()=>{let k=this.controller.seatByLabel(u.dataset.viewLabel);k&&this.openSeatView(k)})}),this.els.tray.querySelectorAll(".sl-chip[data-locate]").forEach(u=>{let k=()=>this.controller.flashSeat(u.dataset.locate,this.cssVar("--sl-accent")||"#f4b740");u.addEventListener("mouseenter",k),u.addEventListener("focusin",k)}),rr(this,this.els.tray,t),this.controller.setGASelection(Ki(this.gaQty)),this.salesClosed&&this.els.tray.querySelectorAll(".sl-ba-go,[data-ba],[data-ba-cat],[data-ba-zone],[data-ba-replace],.sl-ga button").forEach(u=>{u.disabled=!0});let m=Yi(this,t,this.hold?.items??[]),f=qe(this.gaQty,this.hold?.items??[]),b=i.reduce((u,k)=>u+this.paidPrice(k.categoryKey,k.tierId,k.unitPrice,k.label)*(k.quantity??1),0),C=i.reduce((u,k)=>u+(k.quantity??1),0),x=e.filter(u=>!h.has(u.label)),R=x.reduce((u,k)=>u+this.paidPrice(k.categoryKey,k.tierId??null,k.price,k.label)*(k.quantity??1),0)+m+b,y=x.reduce((u,k)=>u+(k.quantity??1),0)+f+C,E=this.pendingSelectionCount(),H=this.lastTrayCount,M=this.lastTrayTotal,O=Ts(this.performanceGroup?.groupSelectionSummary?.(),this.performanceGroup?.selectionMode??"same_seat");if(this.els.count.textContent=O||(y?(0,v.tCount)("picker.ticketsCount",y):this.tf("picker.noSeatsSelected","No seats selected")),this.els.total.textContent=y&&!this.suppressPricing?this.money(R):"",this.root?.setAttribute("data-has-selection",String(y>0)),this.root?.setAttribute("data-ba-active",String(this.bestAvailableConfirm||this.bestAvailableBusy||this.baReopen)),this.els.foot?.classList.toggle("empty",y===0),this.els.seatSummary&&(this.els.seatSummary.textContent=O||(y?(0,v.tCount)("picker.seatsSelectedCount",y):"")),this.syncCta(y,E),this.hold){this.holdCopyPending=E>0;let u=cs({secured:C||this.hold.seats?.length||0,pendingCount:E,expiresAt:this.holdExpiresAt,releasing:this.releasingHold});this.els.holdTitle&&(this.els.holdTitle.textContent=u.title),this.els.holdCopy&&(this.els.holdCopy.textContent=u.copy);let k=this.els.holdChange;k&&(k.disabled=this.releasingHold,k.textContent=u.change)}y!==H&&this.animateOnce(this.els.count,"sl-value-pop",380),R!==M&&this.animateOnce(this.els.total,"sl-value-pop",380),H===0&&y>0&&(this.animateOnce(this.els.cta,"sl-ready",520),this.sideCollapsed&&this.root?.dataset.layout!=="narrow"&&this.setPanelCollapsed(!1)),this.renderPeek(y,R,E,y>H),this.lastTrayCount=y,this.lastTrayTotal=R,this.opts.onSelectionChange?.(e),this.emitSelectionValidity(y,e)}emitSelectionValidity(e,t){let i=this.controller.getSelectionValidity(e);i&&(i.seats=t,this.opts.onSelectionValidityChange?.(i),i.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(t):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(i),this.lastSelectionValidity=i.isValid)}renderPeek(e,t,i,r=!1){if(!this.els.peek)return;let n=(this.controller.doc?.categories??[]).map(o=>this.catPrice(o)).filter(o=>o!=null);this.els.peek.innerHTML=os({count:e,total:t,pendingCount:i,ctaPhase:this.ctaPhase,hasHold:!!this.hold,salesClosed:this.salesClosed,fromPrice:n.length?Math.min(...n):null,addMore:ns({salesClosed:this.salesClosed,hasHold:!!this.hold,ctaPhase:this.ctaPhase,formOpen:this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm,room:this.maxTickets-this.totalTicketCount(),wanted:this.baQty}),holdTime:this.hold&&this.holdTimer?ft(Math.max(0,this.holdExpiresAt-Date.now())):null,money:o=>this.money(o)}),this.root&&(this.root.dataset.peekClock=String(!!this.els.peek.querySelector(".sl-peek-time"))),r&&this.animateOnce(this.els.peek.querySelector(".sl-peek-sum")??void 0,"sl-peek-bump",240)}async removeHeldLabels(e,t){let i=e.filter(o=>o&&!this.releasingLabels.has(o));if(!i.length)return!1;let r=i[0];i.forEach(o=>this.releasingLabels.add(o)),t?.setAttribute("aria-busy","true");let n=t?.querySelector(".rm");n&&(n.disabled=!0);try{let o=this.handedOff;if(!await this.controller.releaseLabels(i))return this.toast((0,v.t)("picker.couldNotRemoveLabel",{label:r}),"error"),!1;Xi(this.gaQty,this.hold?.items??[],i);let l=this.controller.currentHold();return this.hold=l?{holdId:l.holdId,expiresAt:l.expiresAt,seats:l.seats,items:l.items}:null,this.handedOff=!!this.hold&&o,this.bookedShown=!1,this.ctaPhase="idle",this.hold?this.startHoldTimer(this.hold.expiresAt):(this.stopHoldTimer(),this.forgetHold()),this.syncTray(),this.emitHoldChange(),this.toast((0,v.t)("picker.labelRemovedFromHold",{label:r}),"success"),!0}finally{i.forEach(o=>this.releasingLabels.delete(o)),t?.removeAttribute("aria-busy"),n?.isConnected&&(n.disabled=!1)}}async handleChangeSeats(){if(!this.hold||this.releasingHold)return;this.releasingHold=!0;let e=this.els.holdChange;e&&(e.disabled=!0,e.textContent=this.tf("picker.releasingEllipsis","Releasing\u2026"));try{await this.release(),this.hold||this.toast(this.tf("picker.heldTicketsReleased","Held tickets released. Choose your new seats."),"success")}finally{this.releasingHold=!1,e?.isConnected&&(e.disabled=!1,e.textContent=this.tf("picker.change","Change"))}}async handleCta(){if(this.salesClosed)return;let e=this.controller.getSelectionValidity(this.totalTicketCount());if(e&&!e.isValid){this.toast(Ai(e,(i,r)=>this.tf(i,r)),"warning");return}if(this.totalTicketCount()>this.maxTickets){this.toast((0,v.t)("picker.removeTicketsUntilOrFewer",{count:this.maxTickets}),"warning");return}let t=this.committedSelection();if(this.hold&&!t.some(i=>!(this.hold.items??[]).some(r=>r.label===i.label))){let i=this.hold.seats??t;this.handedOff=!0,this.setCtaPhase("checkout"),this.checkoutHandoff(this.hold,i);return}this.holdingLabels=new Set(t.map(i=>i.label)),this.setCtaPhase("holding");try{let i=null,r=qi(this.gaQty),n=this.committedSelection();if(n.length){let o=await this.controller.hold(void 0,this.opts.holdTtlMs);i=o?{holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items}:null}for(let{areaId:o,tierId:a,qty:l}of r){let c=await this.controller.holdGA(o,l,{tierId:a,ttlMs:this.opts.holdTtlMs});i=c?{holdId:c.holdId,expiresAt:c.expiresAt,seats:c.seats,items:c.items}:i}if(!i){this.toast(this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again."),"error"),this.setCtaPhase("idle"),this.syncTray();return}this.hold=i,this.handedOff=!this.performanceGroup,this.startHoldTimer(i.expiresAt),this.flashHeldSeats(i),this.setCtaPhase(this.performanceGroup?"idle":"checkout"),this.emitHoldChange(),this.performanceGroup||this.checkoutHandoff(i,i.seats??n)}catch(i){this.opts.onError?.(i);let r=i,n=(r.conflicts??[]).map(a=>a.label).filter(Boolean).slice(0,3);r.reason==="event_closed"&&this.setSalesClosed(!0);let o=r.reason==="event_closed"?this.tf("picker.seatSalesClosedForEvent","Seat sales have closed for this event."):r.reason==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):r.reason==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):n.length?n.length===1?(0,v.t)("picker.labelsNoLongerAvailable.one",{labels:n.join(", ")}):(0,v.t)("picker.labelsNoLongerAvailable.other",{labels:n.join(", ")}):this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.");this.toast(o,"error"),this.setCtaPhase("idle")}finally{this.holdingLabels.clear(),this.ctaPhase==="holding"&&(this.ctaPhase="idle"),this.syncTray()}}startHoldTimer(e){this.stopHoldTimer(),this.holdExpiresAt=e,this.hold&&this.rememberHold(this.hold);let t=this.els.hold;t.innerHTML=`<span class="sl-hold-dot" aria-hidden="true"></span><span>${this.tf("picker.held","Held")}</span><span class="sl-hold-time" data-ref="holdTime"></span>`;let i=t.querySelector('[data-ref="holdTime"]');this.els.holdNote?.classList.add("on");let r=()=>{let n=Math.max(0,this.holdExpiresAt-Date.now());i&&(i.textContent=ft(n));let o=this.els.peek?.querySelector(".sl-peek-time");o&&(o.textContent=ft(n)),!this.holdCopyPending&&this.els.holdCopy&&(this.els.holdCopy.textContent=Mi(this.holdExpiresAt)),t.classList.add("on"),t.classList.toggle("is-expiring",n>0&&n<=_s),this.setExtendPrompt(n>0&&n<=_s,n),n<=0&&this.stopHoldTimer()};r(),this.holdTimer=setInterval(r,500)}stopHoldTimer(){this.holdTimer&&clearInterval(this.holdTimer),this.holdTimer=null,this.els.hold?.classList.remove("on","is-expiring"),this.els.holdNote?.classList.remove("on"),this.root&&delete this.root.dataset.peekClock,this.setExtendPrompt(!1,0)}setExtendPrompt(e,t){if(this.extendEl)if(e&&this.controller.currentHold()&&!this.bookedShown){let i=Math.ceil(t/1e3),r=Math.floor(i/60),n=String(i%60).padStart(2,"0");this.els.extendTxt.innerHTML=(0,v.t)("picker.seatsHeldForNeedMoreTime",{time:`${r}:${n}`}),this.extendEl.classList.add("on")}else this.extendEl.classList.remove("on")}async handleExtend(){let e=this.els.extendBtn;e.disabled=!0;let t=e.textContent;e.textContent=this.tf("picker.addingEllipsis","Adding\u2026");try{let i=await this.controller.extendHold(this.opts.holdTtlMs);i?(this.hold={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items},this.holdExpiresAt=i.expiresAt,this.extendEl?.classList.remove("on"),this.rememberHold(this.hold),this.emitHoldChange(),this.toast(this.tf("picker.moreTimeAdded","More time added \u2014 your seats are still held."),"success")):this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}finally{e.disabled=!1,e.textContent=t}}detectBooked(){this.bookedShown||!this.handedOff||!this.hold||this.controller.currentHold()===null&&this.showBooked()}showBooked(){if(this.bookedShown||!this.hold)return;this.bookedShown=!0;let e=this.buildHandoff(this.hold);this.stopHoldTimer(),this.forgetHold();let t=e.lineItems.reduce((r,n)=>r+n.quantity,0),i=this.performanceGroup?.groupSelectionSummary?.();this.els.bookedSub&&(this.els.bookedSub.innerHTML=i?.seats?`<span class="sl-booked-seats">${(0,v.tCount)("picker.group.ticketsConfirmedAcross",i.seats,{performances:i.performances})}</span>`:`<span class="sl-booked-seats">${(0,v.tCount)("picker.ticketsCount",t)}</span> ${this.tf("picker.confirmedAndOnWay","confirmed. A confirmation is on its way.")}`),this.bookedEl?.classList.add("on"),this.opts.onBooked?.(e)}notifyGroupSettled(e){e==="booked"?this.showBooked():this.dismissConfirm(),this.hold=null,this.handedOff=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.forgetHold(),this.syncTray(),this.syncCta()}checkoutHandoff(e,t){if(this.checkoutMode==="hosted"){this.startHostedCheckout(e,t);return}this.opts.onCheckout?.(e,t,this.buildHandoff(e))}async startHostedCheckout(e,t){let i=this.buildHandoff(e),r=null;try{r=await(this.paymentOptions??=this.pubApi.paymentOptions(this.opts.event))}catch(o){this.opts.onError?.(o)}if(this.destroyed)return;let n=r?.providers?.[0];if(!n){let o=gr(r?.reason),a=!!this.opts.onCheckoutUnavailable||!!this.opts.onCheckout;this.opts.onCheckoutUnavailable?.({reason:o,handoff:i}),this.opts.onCheckout?.(e,t,i),a||this.openCheckoutPanel({kind:"unavailable",reason:o,seatCount:i.lineItems.reduce((l,c)=>l+c.quantity,0)});return}await this.openCheckoutPanel({kind:"pay",provider:n,order:{holdId:i.holdId,expiresAt:i.expiresAt,currency:i.currency,total:i.total,labels:i.lineItems.map(o=>o.displayLabel??o.label)}})}async openCheckoutPanel(e){let t;try{({mountCheckout:t}=await fr())}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.checkoutCouldNotBeOpened","Checkout could not be opened. Your seats are still held \u2014 please try again."),"error"),this.setCtaPhase("idle");return}this.destroyed||!this.root||(this.closeCheckoutPanel(),this.checkoutPanel=t({root:this.root,state:e,eventKey:this.opts.event,formatMoney:i=>this.money(i),startSession:i=>this.pubApi.startCheckout(this.opts.event,{...i,...this.opts.returnUrl?{returnUrl:this.opts.returnUrl}:{}}),orderStatus:i=>this.pubApi.orderStatus(i),onCancel:()=>{this.checkoutPanel=null,this.hold||this.setCtaPhase("idle")},onConfirmed:i=>{this.opts.onOrderConfirmed?.(i),this.controller.refresh()},onError:i=>this.opts.onError?.(i)}))}closeCheckoutPanel(){this.checkoutPanel?.destroy(),this.checkoutPanel=null}buildHandoff(e){let i=(e.items??[]).map(o=>{let a=this.controller.lineItemDisplay(o);return{label:o.label,...a.displayLabel?{displayLabel:a.displayLabel}:{},...a.displayType?{displayType:a.displayType}:{},objectId:o.objectId,objectType:o.objectType,categoryKey:o.categoryKey,tierId:o.tierId,unitPrice:this.paidPrice(o.categoryKey,o.tierId,o.unitPrice,o.label),currency:o.currency??this.currency,quantity:o.quantity??1}}),r=i[0]?.currency??this.currency,n=i.reduce((o,a)=>o+a.unitPrice*a.quantity,0);return{holdId:e.holdId,expiresAt:e.expiresAt,currency:r,lineItems:i,total:n}}emitHoldChange(){let e=this.hold;this.scheduleOfferRefresh(!0),this.opts.onHoldChange?.(e,e?.seats??[],e?this.buildHandoff(e):null)}toast(e,t="neutral",i){let r=this.els.toast;if(!r)return;r.replaceChildren();let n=document.createElement("span");if(n.textContent=e,r.appendChild(n),r.classList.toggle("has-action",!!i),i){let o=document.createElement("button");o.type="button",o.className="sl-toast-action",o.textContent=i.label,o.addEventListener("click",i.onClick,{once:!0}),r.appendChild(o)}r.dataset.tone=t,r.classList.add("on"),this.toastTimer&&clearTimeout(this.toastTimer),this.toastTimer=setTimeout(()=>{r.classList.remove("on"),r.classList.remove("has-action"),r.dataset.tone="neutral"},4200)}placeTooltip(){if(!this.tipEl)return;let e=Ms(this.tipPos,this.els.map.clientWidth,this.els.map.clientHeight,{width:this.tipEl.offsetWidth,height:this.tipEl.offsetHeight});this.tipEl.style.left=`${e.left}px`,this.tipEl.style.top=`${e.top}px`}nightStripFor(e,t){let i=this.performanceGroup,r=Hi(e.mark,i?.nights?.()),n=r?.states.filter(o=>o.free).length??0;return bs(r,{locale:this.opts.locale,switchLabel:i?.selectionModeSwitch?.label??null,selectPartialLabel:i?.partialSeatSelection?.label(n)??null,pinned:t})}unpinTooltip(){this.tipPinned&&(this.tipPinned=!1,this.tipEl?.classList.remove("sl-tip-pinned"),this.tipEl&&(this.tipEl.style.display="none"))}handleMapPointerDown(e){if(this.tipEl?.contains(e.target))return;this.lastMapPoint={x:e.clientX,y:e.clientY},this.lastPointerType=e.pointerType||"mouse";let t=this.els.map.getBoundingClientRect();this.tipPos={x:e.clientX-t.left,y:e.clientY-t.top},this.unpinTooltip()}updateTooltip(e){if(!this.tipEl)return;if(this.confirmSeat){this.tipEl.style.display="none";return}if(this.tipPinned&&e?.interaction!=="press")return;if(!e){this.tipPinned||(this.tipEl.style.display="none",this.tipMarkedHoverLabel=null);return}let t=e.mark?.kind==="partial"&&this.tipMarkedHoverLabel===e.label,i=e.mark?.kind==="partial"&&(e.interaction==="press"||this.lastPointerType!=="mouse"||t);this.tipMarkedHoverLabel=e.mark?.kind==="partial"?e.label:null;let r=this.nightStripFor(e,i);this.tipEl.style.setProperty("--sl-cat",e.categoryColor),this.tipEl.innerHTML=As(e,{price:this.suppressPricing?"":this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label)),priceNote:this.suppressPricing?this.tf("picker.group.pricesPerPerformance","Prices shown per performance"):"",rowTypeWord:gt(e),extra:r+(i?`<button type="button" class="sl-tip-close" data-pg-tip-close aria-label="${V(this.tf("picker.group.closeSeatDetails","Close seat details"))}">\xD7</button>`:"")}),this.tipPinned=i,this.tipEl.classList.toggle("sl-tip-pinned",i),this.tipEl.querySelector("[data-pg-tip-close]")?.addEventListener("click",()=>this.unpinTooltip()),this.tipEl.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>{this.unpinTooltip(),this.performanceGroup?.selectionModeSwitch?.activate()}),Hs(this.tipEl,this.performanceGroup?.partialSeatSelection?.label,n=>{this.unpinTooltip(),this.performanceGroup?.partialSeatSelection?.activate(e.id,n)}),this.tipEl.style.display="block",this.placeTooltip()}syncSeatMarks(){let e=this.performanceGroup?.seatMarks,t=this.controller.getRenderer();if(!e||!t?.setSeatMarks)return;let i={};for(let[r,n]of Object.entries(e())){let o=this.controller.idForLabel(r);o&&(i[o]=n)}Object.keys(i).length&&t.setSeatMarks(i)}getSelection(){return this.committedSelection()}selectObjects(e){return this.controller.select(e)}selectObjectsWithoutConfirmation(e){let t=new Set(e),i=this.controller.getSelection().filter(r=>t.has(r.id)||t.has(r.label));if(i.length===t.size)return i;this.suppressConfirmationSeatId=e[0]??null;try{return this.controller.select(e)}finally{this.suppressConfirmationSeatId=null}}deselectObjects(e){this.controller.deselect(e)}clearSelection(){this.dismissConfirm(),this.dismissTableDialog(),this.controller.clearSelection()}categoryLegendColor(){let e=(this.controller.doc?.categories??[]).find(t=>!t.notForSale);return(e?this.controller.getRenderer()?.categoryDisplayColor?.(e.key):null)||e?.color||"#2563eb"}async refreshAvailability(){await this.controller.refresh(),this.syncSeatMarks(),this.syncTray()}refreshPerformanceGroupComposition(){this.syncTray()}async adoptRestoredHold(e){!e||this.hold||await this.resumeHoldFromServer(e,!1)}selectCategories(e){return this.controller.selectCategories(e)}deselectCategories(e){this.controller.deselectCategories(e)}setSelectableObjects(e){this.controller.setSelectableObjects(e)}setMaxSelection(e){this.maxTickets=Math.max(this.exactTickets??1,Math.floor(e)),this.controller.setMaxSelection(this.maxTickets),this.updateSelectionCapacity(),this.syncTray()}getSelectionValidity(){let e=this.controller.getSelectionValidity(this.totalTicketCount());return e&&(e.seats=this.committedSelection()),e}setMapTheme(e){this.destroyed||(this.opts.theme={...this.opts.theme??{},map:e??void 0},this.controller.setMapTheme(e),this.applyMapChromeTokens())}applyMapChromeTokens(){let e=this.els.map?.parentElement;if(!e||!this.root)return;let t=ut(this.controller.doc?.theme,this.opts.theme),i=this.opts.theme?.map?.background??this.controller.doc?.theme?.background??void 0,r=Wr(t,i);for(let n of["--sl-bg","--sl-surface","--sl-text","--sl-muted","--sl-line","--sl-accent-text"])r?e.style.setProperty(n,r[n]):e.style.removeProperty(n)}setEventDetailsHidden(e){this.eventDetailsHidden=e,this.syncFullscreenButtons()}setPricing(e){let t=JSON.stringify(this.opts.pricing??null),i=JSON.stringify(e??null);t!==i&&(this.opts.pricing=e,!(this.destroyed||!this.els.prices)&&(this.els.pricesSec?.querySelector(".sl-price-select")?.remove(),this.buildPriceFilter(),this.syncPrices(),this.syncTray(),this.lastSection&&this.showSectionCard(this.lastSection)))}buildLanguageSwitcher(e){if(!e)return;let t=(this.opts.languages??[]).map(r=>(0,v.resolveLocale)(r)).filter((r,n,o)=>o.indexOf(r)===n);if(t.length<2)return;let i=document.createElement("select");i.className="sl-langsel",i.setAttribute("aria-label",this.tf("picker.preferredTicketType","Language"));for(let r of t){let n=document.createElement("option");n.value=r,n.textContent=v.LOCALE_NAMES[r]??r,n.selected=r===(0,v.getLocale)(),i.appendChild(n)}i.addEventListener("change",()=>{this.setLocale(i.value)}),this.langSel=i,e.appendChild(i)}async setLocale(e){let t=(0,v.getLocale)(),i=await(0,v.loadLocale)(e);if(this.opts.messages&&(0,v.setStringOverrides)(this.opts.messages),i===t)return i;let r=this.root;if(!r)return i;r.lang=i,r.dir=(0,v.localeDirection)(),Qr(r);try{this.syncTray()}catch{}try{this.syncPrices()}catch{}try{this.syncOffer()}catch{}try{this.syncRung()}catch{}try{this.syncFloors()}catch{}try{this.syncPanelToggle()}catch{}try{this.syncFullscreenButtons()}catch{}return this.controller.refreshMapCopy(),this.langSel&&this.langSel.value!==i&&(this.langSel.value=i),i}isColorblindSafe(){return this.cbSafe}setColorblindSafe(e){e!==this.cbSafe&&(this.cbSafe=e,this.cbEl?.setAttribute("aria-pressed",String(e)),this.controller.setColorblindSafe(e),this.syncPrices(),fo(e))}setViewMode(e){this.controller.setViewMode(this.normalizeInitialView(e)),this.syncProjection(),this.dismissConfirm()}getViewMode(){return this.controller.getViewMode()}normalizeInitialView(e){return e==="perspective"?(this.perspectiveWarned||(this.perspectiveWarned=!0,console.warn("[seatlayer] initialView:'perspective' (2.5D) is deprecated for the buyer picker and was coerced to 'flat'. Use the Map | 3D control for the immersive view.")),"flat"):e??"flat"}getBuyerView(){return this.buyerView}setBuyerView(e,t){if(e==="map"){this.exit3d();return}let i=t?.flyToSeatId;if(this.buyerView==="venue3d"){i?(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:i}),this.view3dHandle?.flyToSeat(i)):t?.resetView&&this.view3dHandle?.focusOverview();return}this.enter3d(i)}seatState3dFor(e){switch(this.controller.getStatus(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:break}return this.priceBandKeys!=null&&!this.priceBandKeys.has(e.categoryKey)||this.limitedViewFilter&&(e.commercial?.restrictedView||e.commercial?.obstructedView)?"dimmed":"available"}pushAvailabilityTo3d(){if(!this.view3dHandle)return;let e=this.allSeats().map(t=>({seatId:t.id,state:this.seatState3dFor(t)}));this.view3dHandle.setAvailability(e)}syncSelectionTo3d(){this.view3dHandle&&this.view3dHandle.setSelection(this.controller.getSelection().map(e=>e.id))}async seatViewFor3d(e){let t=this.allSeats().find(i=>i.id===e);if(!t)return null;if(t.viewUrl)try{let i=t.viewMeta?.previewUrl,r=!!i&&i!==t.viewUrl,n=r?await this.buyerAssetUrls.resolve(i):null,o=r?t.viewUrl:await this.buyerAssetUrls.resolve(t.viewUrl);return!o||r&&!n?null:{url:o,...n?{previewUrl:n}:{},...r?{resolveUrl:a=>this.buyerAssetUrls.resolve(a)}:{},...t.viewMeta?.sourceWidth!==void 0?{sourceWidth:t.viewMeta.sourceWidth}:{},...t.viewMeta?.sourceHeight!==void 0?{sourceHeight:t.viewMeta.sourceHeight}:{},...t.viewMeta?.previewWidth!==void 0?{previewWidth:t.viewMeta.previewWidth}:{},...t.viewMeta?.previewHeight!==void 0?{previewHeight:t.viewMeta.previewHeight}:{},...t.viewMeta?.variants?.length?{variants:t.viewMeta.variants}:{},...t.viewMeta?.initialBearingDeg!==void 0?{initialBearingDeg:t.viewMeta.initialBearingDeg}:{},...t.viewMeta?.initialPitchDeg!==void 0?{initialPitchDeg:t.viewMeta.initialPitchDeg}:{},...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}}catch(i){return this.opts.onError?.(i),null}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:this.tf("picker.chartDerivedModel","Chart-derived model")}}emitAnalytics(e,t){try{this.opts.onAnalytics?.(e,{...t,surface:"buyer"})}catch{}}emit3dAnalytics(e,t){this.emitAnalytics(e,t)}onView3dSeatPick(e){if(this.salesClosed){this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning"),this.syncSelectionTo3d();return}let t=this.allSeats().find(a=>a.id===e);if(!t)return;let i=this.controller.tableSelection(e);if(this.committedSelection().some(a=>i?a.label===i.label:a.id===e)){this.controller.deselect([e]),this.dismissConfirm(),this.syncSelectionTo3d();return}let n=this.controller.getStatus(t.id);if(n==="held"||n==="booked"||n==="not_for_sale"){this.showUnavailable3dSeat(t,this.seatState3dFor(t),n),this.syncSelectionTo3d();return}if(this.dismissUnavailable3dSeat(),!this.controller.select([e]).length){this.syncSelectionTo3d(),this.dismissConfirm();return}if(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:e}),this.flashPickedSeat(e),i){this.showTableDialog(i,!1),this.syncSelectionTo3d();return}this.opts.confirmSelection!==!1?this.showConfirm(t):this.syncTray(),this.syncSelectionTo3d()}showUnavailable3dSeat(e,t,i){let r=this.view3dEl;if(!r)return;this.dismissUnavailable3dSeat();let n=this.controller.seatDetails(e.id),o=n?.displayLabel??e.displayLabel??e.label,a=n?.sectionLabel,l=Ee(n),c=[a,l?(0,v.t)("picker.rowLabel",{label:l}):null,o].filter(Boolean).join(" \xB7 "),h=i==="held"?{title:this.tf("picker.temporarilyHeld","Temporarily held"),message:this.tf("picker.heldSeatExplanation","Another buyer is holding this seat. It may become available again.")}:i==="booked"?{title:this.tf("picker.sold","Sold"),message:this.tf("picker.soldSeatExplanation","This seat has already been booked.")}:{title:this.tf("picker.notForSale","Not for sale"),message:this.tf("picker.notForSaleExplanation","This seat is not included in the current sale.")},d=document.createElement("div");d.className="sl-view3d-unavailable",d.dataset.state=t,d.setAttribute("role","status"),d.setAttribute("aria-live","polite");let p=document.createElement("span");p.className="sl-view3d-unavailable-eyebrow",p.textContent=c||o;let m=document.createElement("strong");m.textContent=h.title;let f=document.createElement("div");f.className="sl-view3d-unavailable-copy",f.append(p,m);let b=document.createElement("button");b.type="button",b.setAttribute("aria-label",this.tf("picker.closeSeatStatus","Close seat status")),b.textContent="\xD7";let C=document.createElement("p");C.textContent=h.message,d.append(f,b,C),b.addEventListener("click",()=>d.remove()),r.appendChild(d),this.announceSeat(e)}dismissUnavailable3dSeat(){this.view3dEl?.querySelector(".sl-view3d-unavailable")?.remove()}saveView3dComparisonSeat(e){if(this.buyerView!=="venue3d")return;let t=this.view3dCompareSeatIds;t.includes(e.id)||(this.view3dCompareSeatIds=t.length===0?[e.id]:[t[0],e.id]),this.confirmSeat?.id===e.id&&(this.controller.deselect([e.id]),this.dismissConfirm(),this.syncSelectionTo3d(),this.syncTray()),this.view3dCompareChip.sync(),this.emit3dAnalytics("3d_comparison_saved",{seatId:e.id,count:this.view3dCompareSeatIds.length}),this.view3dCompareSeatIds.length>1?this.openView3dComparison():this.toast(this.tf("picker.chooseAnotherToCompare","Seat saved. Choose another seat to compare."),"success")}clearView3dComparison(){this.closeView3dComparison(!1),this.view3dCompareSeatIds=[],this.view3dCompareChip.remove(),this.emit3dAnalytics("3d_comparison_cleared")}view3dComparisonSnapshot(e){let t=this.allSeats().find(m=>m.id===e);if(!t)return null;let i=this.controller.seatDetails(t.id),r=this.controller.doc?.categories.find(m=>m.key===t.categoryKey),n=i?.price??(r?.tiers?.length?r.tiers[0].price:r?.price),o=n!=null?this.paidPrice(t.categoryKey,i?.tierId??r?.tiers?.[0]?.id??null,n,t.label):void 0,a=this.controller.getStatus(t.id),l=a==="held"?this.tf("picker.temporarilyHeld","Temporarily held"):a==="booked"?this.tf("picker.sold","Sold"):a==="not_for_sale"?this.tf("picker.notForSale","Not for sale"):this.tf("picker.available","Available"),c=t.viewUrl?(0,bt.seatViewDisclosure)({url:t.viewUrl,...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}):this.tf("picker.chartDerivedSeatEye","Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed"),h=Ce(t.commercial)||this.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),d=i?.wheelchairSpaceType?`${Qe(i.wheelchairSpaceType)} \xB7 metadata, not access certification`:this.tf("picker.noAccessibilityMetadata","No accessibility metadata supplied"),p=(0,Ds.seatConfidenceDisclosure)(t.confidenceEvidence);return{seat:t,label:i?.displayLabel??t.displayLabel??t.label,section:i?.sectionLabel??t.sectionId??"\u2014",row:Ee(i)??i?.rowLabel??"\u2014",category:i?.categoryLabel??r?.label??t.categoryKey,price:o==null?this.tf("picker.priceNotSupplied","Not supplied"):this.money(o),availability:l,selectable:a==null||a==="free",viewSource:c,limited:h,accessibility:d,confidence:p}}openSeatConfidencePassport(e,t=null){let i=this.view3dEl;if(!i)return;this.closeSeatConfidencePassport(!1);let r=e.confidenceEvidence,n=this.controller.seatDetails(e.id),o=document.createElement("div");o.className="sl-view3d-passport-shell",o.innerHTML=$r({seat:e,title:n?.displayLabel??e.displayLabel??e.label,restrictionFallback:this.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),canReport:typeof this.api.reportViewEvidence=="function"});let a=[...new Set([...i.children,...[...this.els.map.children].filter(p=>p!==i)])].filter(p=>p instanceof HTMLElement),l=a.map(p=>({element:p,inert:p.inert,ariaHidden:p.getAttribute("aria-hidden")}));for(let p of a)p.inert=!0,p.setAttribute("aria-hidden","true");i.appendChild(o),i.classList.add("has-passport"),this.view3dPassportEl=o;let c=o.querySelector(".sl-view3d-passport"),h=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],d=p=>{if(p.key==="Escape"){p.preventDefault(),p.stopPropagation(),p.stopImmediatePropagation(),this.closeSeatConfidencePassport();return}if(p.key!=="Tab")return;let m=h();if(!m.length)return;let f=m[0],b=m[m.length-1];p.shiftKey&&document.activeElement===f?(p.preventDefault(),b.focus()):!p.shiftKey&&document.activeElement===b&&(p.preventDefault(),f.focus())};window.addEventListener("keydown",d,!0),this.view3dPassportCleanup=()=>{window.removeEventListener("keydown",d,!0);for(let b of l)b.element.inert=b.inert,b.ariaHidden===null?b.element.removeAttribute("aria-hidden"):b.element.setAttribute("aria-hidden",b.ariaHidden);let p=t?.isConnected?t:this.confirmEl?.querySelector(".sl-confirm-confidence")??this.view3dCompareEl?.querySelector("[data-passport-seat]")??null,m=p?.closest(".sl-confirm,.sl-view3d-compare");m?.isConnected&&(m.inert=!1,m.removeAttribute("aria-hidden")),o.remove(),i.classList.remove("has-passport"),this.view3dPassportEl===o&&(this.view3dPassportEl=null);let f=p??this.view3dCompareEl?.querySelector("[data-passport-seat]")??this.confirmEl?.querySelector(".sl-confirm-confidence")??this.view3dCompareChip.mainButton();(t?.isConnected?t:f)?.focus()},o.addEventListener("click",p=>{let m=zr(p.target instanceof HTMLElement?p.target:null);m==="close"&&this.closeSeatConfidencePassport(),m==="report"&&this.reportSeatConfidenceView(e)}),requestAnimationFrame(()=>h()[0]?.focus()),this.emit3dAnalytics("3d_confidence_passport_opened",{seatId:e.id,evidenceId:r?.evidenceId??null,eventConfigurationId:r?.eventConfigurationId??null,modelLevel:r?.modelLevel??"unverified",realityLevel:r?.realityLevel??"none"})}async reportSeatConfidenceView(e){if(this.api.reportViewEvidence){qt(this.view3dPassportEl,"sending");try{let t=await this.api.reportViewEvidence(this.opts.event,{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId});this.emit3dAnalytics("3d_confidence_view_reported",{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId??null}),qt(this.view3dPassportEl,"received",t.report.id)}catch{qt(this.view3dPassportEl,"failed")}}}closeSeatConfidencePassport(e=!0){let t=this.view3dPassportCleanup;if(this.view3dPassportCleanup=null,!t){this.view3dPassportEl?.remove(),this.view3dPassportEl=null,this.view3dEl?.classList.remove("has-passport");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||this.root?.focus({preventScroll:!0})}openView3dComparison(){let e=this.view3dEl;if(!e||this.view3dCompareSeatIds.length<2)return;this.closeView3dComparison(!1);let t=this.view3dCompareSeatIds.map(p=>this.view3dComparisonSnapshot(p)).filter(p=>!!p);if(t.length<2){this.clearView3dComparison();return}let i=p=>S(p),r=document.createElement("div");r.className="sl-view3d-compare-shell";let n=t.map((p,m)=>`<article><span>Seat ${m===0?"A":"B"}</span><strong>${i(p.label)}</strong><small>Section ${i(p.section)} \xB7 Row ${i(p.row)}</small><dl><div><dt>Current price</dt><dd>${i(p.price)}</dd></div><div><dt>Ticket type</dt><dd>${i(p.category)}</dd></div><div><dt>Availability</dt><dd>${i(p.availability)}</dd></div><div><dt>View source</dt><dd>${i(p.viewSource)}</dd></div><div><dt>View restriction</dt><dd>${i(p.limited)}</dd></div><div><dt>Seat confidence</dt><dd>${i(p.confidence.headline)}</dd></div><div><dt>Reality check</dt><dd>${i(p.confidence.reality)}</dd></div><div><dt>Accessibility</dt><dd>${i(p.accessibility)}</dd></div></dl><div class="sl-view3d-compare-actions"><button type="button" data-passport-seat="${i(p.seat.id)}">Passport</button><button type="button" data-view-seat="${i(p.seat.id)}">View seat</button><button type="button" class="select" data-select-seat="${i(p.seat.id)}"${p.selectable?"":" disabled"}>Select seat</button></div></article>`).join("");r.innerHTML=`<div class="sl-view3d-compare-scrim" aria-hidden="true"></div><section class="sl-view3d-compare" role="dialog" aria-modal="true" aria-labelledby="sl-view3d-compare-title"><header><div><span>Seat inspection</span><strong id="sl-view3d-compare-title">Compare disclosed attributes</strong></div><button type="button" data-close aria-label="Close seat comparison">\xD7</button></header><p class="sl-view3d-compare-note">Current price and availability come from this picker. Modeled views are chart-derived unless organizer media is labeled; SeatLayer does not invent why a seat has its price.</p><div class="sl-view3d-compare-grid">${n}</div></section>`;let o=document.activeElement instanceof HTMLElement?document.activeElement:null,a=[...e.children].filter(p=>p instanceof HTMLElement),l=a.map(p=>({element:p,inert:p.inert,ariaHidden:p.getAttribute("aria-hidden")}));for(let p of a)p.inert=!0,p.setAttribute("aria-hidden","true");e.appendChild(r),e.classList.add("has-comparison"),this.view3dCompareEl=r;let c=r.querySelector(".sl-view3d-compare"),h=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],d=p=>{if(p.key==="Escape"){p.preventDefault(),this.closeView3dComparison();return}if(p.key!=="Tab")return;let m=h();if(!m.length)return;let f=m[0],b=m[m.length-1];p.shiftKey&&document.activeElement===f?(p.preventDefault(),b.focus()):!p.shiftKey&&document.activeElement===b&&(p.preventDefault(),f.focus())};window.addEventListener("keydown",d),this.view3dCompareCleanup=()=>{window.removeEventListener("keydown",d);for(let p of l)p.element.inert=p.inert,p.ariaHidden===null?p.element.removeAttribute("aria-hidden"):p.element.setAttribute("aria-hidden",p.ariaHidden);r.remove(),e.classList.remove("has-comparison"),this.view3dCompareEl===r&&(this.view3dCompareEl=null),o?.isConnected?o.focus():this.view3dCompareChip.mainButton()?.focus()},r.querySelector("[data-close]")?.addEventListener("click",()=>this.closeView3dComparison()),r.querySelectorAll("[data-passport-seat]").forEach(p=>p.addEventListener("click",()=>{let m=p.dataset.passportSeat,f=m?this.allSeats().find(b=>b.id===m):void 0;f&&this.openSeatConfidencePassport(f,p)})),r.querySelectorAll("[data-view-seat]").forEach(p=>p.addEventListener("click",()=>{let m=p.dataset.viewSeat;this.closeView3dComparison(!1),m&&this.view3dHandle?.flyToSeat(m)})),r.querySelectorAll("[data-select-seat]").forEach(p=>p.addEventListener("click",()=>{let m=p.dataset.selectSeat;m&&this.selectComparedSeat(m)})),requestAnimationFrame(()=>h()[0]?.focus()),this.emit3dAnalytics("3d_comparison_opened",{seatIds:this.view3dCompareSeatIds.slice()})}closeView3dComparison(e=!0){let t=this.view3dCompareCleanup;if(this.view3dCompareCleanup=null,!t){this.view3dCompareEl?.remove(),this.view3dCompareEl=null,this.view3dEl?.classList.remove("has-comparison");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||this.root?.focus({preventScroll:!0})}selectComparedSeat(e){if(this.salesClosed){this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let t=this.allSeats().find(r=>r.id===e);if(!t)return;if(this.closeView3dComparison(!1),!this.controller.select([e]).length){this.syncSelectionTo3d(),this.toast(this.tf("picker.seatNoLongerAvailable","That seat is no longer available."),"warning");return}this.syncSelectionTo3d(),this.showConfirm(t),this.emit3dAnalytics("3d_comparison_selected",{seatId:e})}async enter3d(e){if(this.view3dEl||!this.canOffer3d()||!this.els.map)return;let t=this.controller.doc;if(!t)return;this.buyerView="venue3d",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"venue3d",...e?{seatId:e}:{}}),this.root?.setAttribute("data-view3d","on"),this.dismissConfirm(),this.syncProjection();let i=document.createElement("div");i.className="sl-view3d",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.interactive3dVenueView","Interactive 3D venue view"));let r=document.createElement("button");r.type="button",r.className="sl-view3d-back",r.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${this.tf("picker.backToMap","Back to map")}</span>`;let n=r.querySelector("span"),o=h=>{this.view3dTargetSeatId=h;let d=!!h;i.classList.toggle("is-seat-focused",d);let p=d?this.tf("picker.backToVenue","Back to venue"):this.tf("picker.backToMap","Back to map");n&&(n.textContent=p),r.setAttribute("aria-label",p)};r.addEventListener("click",()=>{if(this.view3dTargetSeatId&&this.view3dHandle){this.view3dHandle.focusOverview();return}this.exit3d()}),i.appendChild(r);let a=document.createElement("button");a.type="button",a.className="sl-view3d-fs",a.textContent="\u26F6",a.setAttribute("aria-label",this.tf("picker.fullScreen","Full screen")),a.setAttribute("aria-pressed",String(!!document.fullscreenElement||this.fsFallback||this.framedFs)),a.addEventListener("click",()=>this.toggleFullscreen()),i.appendChild(a);let l=document.createElement("div");l.className="sl-view3d-loading",l.setAttribute("role","status"),l.setAttribute("aria-live","polite"),l.textContent=this.tf("picker.loading3d","Building the 3D venue\u2026"),i.appendChild(l),this.els.map.appendChild(i),this.view3dEl=i,this.view3dCompareChip.sync(),requestAnimationFrame(()=>{i.style.opacity="1"});let c=++this.view3dGen;try{let h=(0,v.expandChart)(t),[d,p]=await Promise.all([_t(),this.controller.loadEventConfiguration()]),m=p?await $t(p,y=>this.buyerAssetUrls.resolve(y)):null,f=t.theme?.venue3d?.shellAssetUrl,b=await zt(f,y=>this.buyerAssetUrls.resolve(y));if(c!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let C={doc:t,seats:h,...m?{eventConfigurationId:m.id,eventConfiguration:m}:{},...b?{registeredShellGlb:b}:{}},x=await d.prepareVenue3D(C);if(c!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let R=d.mountVenue3D(i,{...C,prepared:x},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,seatViewActionLabel:y=>this.allSeats().find(E=>E.id===y)?.viewUrl?this.tf("picker.openAuthored360","Open venue 360\xB0"):this.tf("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:y=>this.onView3dSeatPick(y),onSeatInspect:y=>this.onView3dSeatPick(y),onSectionFocusChange:y=>{let E=i.querySelector('select[data-locator="section"]'),H=y??"";!E||E.value===H||(E.value=H,E.dispatchEvent(new Event("change")))},onViewTargetChange:y=>{i.querySelector(".sl-view3d-nav")?.classList.toggle("is-seat-focused",!!y),o(y),this.opts.onBuyerViewChange?.({view:"venue3d",...y?{seatId:y}:{}})},...this.seatViewEnabled()?{getSeatView:y=>new Promise((E,H)=>{let M=()=>{this.seatViewFor3d(y).then(u=>{u?E(u):H(new Error("seat_view_unavailable"))})},O=globalThis.requestIdleCallback;typeof O=="function"?O(M,{timeout:1500}):setTimeout(M,50)})}:{},onAnalytics:(y,E)=>this.emit3dAnalytics(y,E)});this.view3dHandle=R,l.remove(),this.pushAvailabilityTo3d(),this.syncSelectionTo3d(),ts(i,R),e&&R.flyToSeat(e)}catch(h){if(c!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;this.opts.onError?.(h),this.toast(this.tf("picker.unavailable3d","3D could not start. The seat map is still available."),"warning"),this.exit3d()}}exit3d(){if(this.buyerView!=="venue3d"&&!this.view3dEl)return;this.view3dGen++,this.buyerView="map",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"map"}),this.root?.removeAttribute("data-view3d"),this.closeSeatConfidencePassport(!1),this.closeView3dComparison(!1),this.view3dCompareChip.remove();try{this.view3dHandle?.dispose()}catch{}this.view3dHandle=null;let e=this.view3dEl;this.view3dEl=null,e&&(e.style.opacity="0",setTimeout(()=>e.remove(),320)),this.syncProjection();let t=this.view3dReturnSeat;this.view3dReturnSeat=null,t&&this.committedSelection().some(i=>i.id===t.id)&&this.opts.confirmSelection!==!1&&this.showConfirm(t)}getCurrentHold(){return this.hold}async resumeHold(e){return this.resumeHoldFromServer(e,!1)}async removeHeldTicket(e){return this.removeHeldLabels([e])}async bestAvailable(e,t,i={}){if(this.salesClosed||this.bestAvailableBusy)return null;e=Math.max(1,Math.min(this.maxTickets,Math.floor(e))),this.confirmSeat&&this.cancelConfirm(),this.bestAvailableConfirm=!1,this.bestAvailableBusy=!0;let r=this.els.tray?.querySelector(".sl-ba-go");r&&(r.disabled=!0,r.classList.add("sl-busy"),r.innerHTML=`<span class="sl-ba-spin" aria-hidden="true"></span>${this.tf("picker.findingEllipsis","Finding\u2026")}`);try{let n=await this.controller.bestAvailable(e,t,{...i,ttlMs:this.opts.holdTtlMs});return n?(this.hold={holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.items},this.handedOff=!1,this.bookedShown=!1,this.gaQty.clear(),this.startHoldTimer(n.expiresAt),this.flashHeldSeats(this.hold),this.syncTray(),this.emitHoldChange(),i.preferPremium&&n.seats.length&&!n.seats.every(o=>o.commercial?.premium)&&this.toast((0,v.t)("picker.premiumFallbackNote",{count:e}),"neutral"),this.hold):null}catch(n){this.opts.onError?.(n);let o=n?.reason,a=o==="not_enough_together"?(0,v.t)("picker.couldNotFindSeatsTogether",{count:e}):o==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):o==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):o==="sold_out"?this.tf("picker.ticketTypeSoldOut","That ticket type is sold out. Try another ticket type."):o==="event_closed"?this.tf("picker.seatSalesClosedForEvent","Seat sales have closed for this event."):this.tf("picker.seatsNoLongerAvailableTryAnother","Those seats are no longer available. Try another quantity or ticket type.");return this.toast(a,"error"),null}finally{this.bestAvailableBusy=!1,this.syncTray()}}async release(){let e=this.hold,t=this.controller.currentHold(),i=!0;if(t)i=await this.controller.release();else if(e){let r=[...new Set([...(e.items??[]).map(n=>n.label),...(e.seats??[]).map(n=>n.label)])];if(r.length)try{await this.api.release(this.opts.event,r,e.holdId)}catch(n){this.opts.onError?.(n),i=!1}}if(!i){this.toast(this.tf("picker.couldNotReleaseTickets","Couldn't release your tickets. Your hold is unchanged."),"error");return}this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.syncTray(),this.emitHoldChange()}startRealtime(){if(!this.access?.configured||!this.pubApi||this.realtime)return;let e=this.opts.event;this.realtime=new ae({url:this.pubApi.subscribeUrl(e),mintTicket:()=>this.pubApi.subscribeTicket(e),onAccessUnavailable:t=>{this.opts.onAccessUnavailable?.(t),this.showAccessPanel(t)},sink:ze(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.syncPrices(),this.scheduleOfferRefresh(!0),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onSelectedObjectUnavailable:(t,i)=>{this.opts.onSelectedObjectUnavailable?.({labels:t,reason:i}),this.syncTray(),this.toast(i==="ineligible"?this.tf("picker.seatNoLongerYours","Some seats are no longer available to you. They have been removed from your order."):this.tf("picker.seatTaken","Someone else took a seat you had picked. It has been removed from your order."),"warning")}})}),this.realtime.start()}async refreshAccess(){return!this.access?.configured||!await this.access.refresh("manual")?!1:(this.dismissAccessPanel(),await this.controller.refresh(),this.realtime?this.realtime.restart():this.startRealtime(),!0)}showAccessPanel(e){if(this.destroyed||!this.root)return;this.dismissAccessPanel();let t=Br(e.reason,()=>{this.refreshAccess()});(this.regions?.["bottom-center"]??this.root).appendChild(t),this.accessEl=t}dismissAccessPanel(){this.accessEl?.remove(),this.accessEl=null}destroy(){this.destroyed=!0,this.realtime?.stop(),this.realtime=null,this.dismissAccessPanel(),this.access?.clear(),this.hold&&!this.handedOff&&this.controller.release(),this.closeConfirm(),this.dismissTableDialog(!1),he(this,!1),this.closeSeatView(),this.closeCheckoutPanel(),this.exit3d(),this.buyerAssetUrls.dispose(),this.stopHoldTimer(),this.toastTimer&&clearTimeout(this.toastTimer),this.liveTimer&&clearTimeout(this.liveTimer),this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerRefreshTimer=null,this.offerBoundaryTimer=null,this.offerVisibilityHandler&&(document.removeEventListener("visibilitychange",this.offerVisibilityHandler),this.offerVisibilityHandler=null);for(let e of this.motionTimers)clearTimeout(e);this.motionTimers.clear(),this.ro?.disconnect(),this.ro=null,this.framedFs&&this.setFramedFs(!1),this.escHandler&&document.removeEventListener("keydown",this.escHandler),this.fsChangeHandler&&document.removeEventListener("fullscreenchange",this.fsChangeHandler),this.fsEscHandler&&window.removeEventListener("keydown",this.fsEscHandler),this.controller.destroy(),this.projectionEl=null,this.root?.remove(),this.root=null,this.modalScrim&&(this.modalScrim.remove(),this.modalScrim=null,this.prevFocus?.isConnected&&this.prevFocus.focus({preventScroll:!0}),this.prevFocus=null)}};var Ae=require("@seatlayer/core");var go="https://api.seatlayer.io",bo=6e4,vo=2e3,yo=1e3,xo=36e5,wo=5e3,ko=5e3,So=15e3,Co=12e4,Eo=new Set(["preparing","commit_pending","abort_pending","expire_pending"]),K=class extends Error{constructor(){super("performance_group_destroyed"),this.name="PerformanceGroupDestroyedError"}};function To(s){return new Promise(e=>setTimeout(e,s))}function Ii(s){let e=Number(s.headers.get("Retry-After")??"1");return Number.isFinite(e)?Math.max(50,Math.min(wo,e*1e3)):1e3}function et(s,e){return`/pub/performance-groups/${encodeURIComponent(s)}/operations/${encodeURIComponent(e)}`}function tt(s){return s.replace(/^pghop_/,"").replace(/-/g,"").slice(-8).toUpperCase()}var _i=class{constructor(e,t,i){this.api=e;this.sink=t;this.intervalMs=i;this.stopped=!0;this.timer=null;this.prior=new Map}start(){this.stopped&&(this.stopped=!1,this.tick())}stop(){this.stopped=!0,this.timer&&clearTimeout(this.timer),this.timer=null}async tick(){try{let e=await this.api.objects(this.api.groupKey);if(this.stopped)return;let t=new Map(Object.entries(e.seats)),r=[...new Set([...this.prior.keys(),...t.keys()])].filter(n=>this.prior.get(n)!==t.get(n)).map(n=>({label:n,status:t.get(n)??"blocked"}));this.prior=t,r.length&&this.sink.applyStatuses(r),this.sink.onSections?.(e.hidden??[],e.closed??[])}catch(e){if(e instanceof K){this.stop();return}this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},ii=class{constructor(e,t){this.descriptorCache=null;this.chartRequest=null;this.objectsCache=null;this.activePerformanceKey=null;this.includedEventKeys=new Set;this.reuseObjectsCacheOnce=!1;this.selectionsByEvent=new Map;this.allocationsByHold=new Map;this.pendingOperationId=null;this.operationByHold=new Map;this.knownRevision=null;this.destroyed=!1;this.aborter=new AbortController;this.adoptFailure=null;this.settleTimer=null;this.settleOperationId=null;this.settleStartedAt=0;this.settleState=null;this.settleVisibility=null;this.lastRecovery={kind:"idle"};if(!e)throw new Error("seatlayer: `performanceGroup` key is required");this.groupKey=e,this.base=(t.apiBase??go).replace(/\/+$/,""),this.access=t.access,this.fetcher=t.fetch??globalThis.fetch.bind(globalThis),this.recoveryTimeoutMs=t.recoveryTimeoutMs??bo,this.realtimePollMs=Math.max(500,t.realtimePollMs??vo),this.selectionMode=t.selectionMode??"same_seat",this.partySize=t.partySize??null,this.onOperationState=t.onOperationState,this.onRecoveryState=t.onRecoveryState,this.onAvailability=t.onAvailability,this.access.onRenewed(r=>this.adoptSession(r));let i=this.readOperationRecord();i&&this.storedIsUndecided(i)&&(this.pendingOperationId=i.operationId)}get pendingOperation(){return this.pendingOperationId}get holdBlocked(){return!!this.adoptFailure||!!this.pendingOperationId&&this.lastRecovery.kind!=="idle"}async descriptor(){let e=await this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/descriptor`);return this.descriptorCache=e.performanceGroup,this.includedEventKeys.size||(this.includedEventKeys=new Set(e.performanceGroup.performances.map(t=>t.eventKey))),e.performanceGroup.revision&&(this.knownRevision=e.performanceGroup.revision),this.activePerformanceKey??=e.performanceGroup.performances[0]?.eventKey??null,e.performanceGroup}async chart(e){this.chartRequest??=this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/chart`).catch(r=>{throw this.chartRequest=null,r});let[t,i]=await Promise.all([this.descriptorCache?Promise.resolve(this.descriptorCache):this.descriptor(),this.chartRequest]);return{doc:i,event:{key:t.key,name:t.name,salesClosed:t.state!=="active",venue:t.venue,startsAt:t.performances[0]?.startsAt??null,timezone:t.timezone,currency:t.currency,mode:t.mode,inventoryModelVersion:2}}}asset(e,t){return/^[a-zA-Z0-9._-]+$/.test(t)?this.blob(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/assets/${encodeURIComponent(t)}`):Promise.reject(new j(404,"not_found","not_found"))}async objects(e){let t=this.descriptorCache?.inclusionMode==="flexible_dates",i=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/objects`+(this.selectionMode==="per_performance"||t?"?view=per-performance":"");if(this.reuseObjectsCacheOnce&&this.objectsCache)this.reuseObjectsCacheOnce=!1;else{let o=await this.authorized(i,this.objectsCache?.revision?{headers:{"If-None-Match":`"${this.objectsCache.revision}"`}}:{});if(o.status!==304){if(!o.ok)return this.throwResponse(o);this.objectsCache=await this.responseJson(o)}}if(!this.objectsCache)throw new j(502,"group_projection_unavailable","group_projection_unavailable");if(this.selectionMode==="same_seat"&&!t){let o=this.objectsCache;return this.noteAvailability(o,o.salesClosed,o),o}let r=this.objectsCache;if(this.selectionMode==="same_seat"){let o=r.performances.filter(d=>this.includedEventKeys.has(d.eventKey));if(!o.length)throw new j(409,"group_selection_incomplete","group_selection_incomplete");let a=Object.keys(o[0]?.seats??{}),l=Object.fromEntries(a.map(d=>[d,o.every(p=>p.seats[d]==="free")?"free":"blocked"])),c=Object.fromEntries(a.flatMap(d=>{let p=o.filter(m=>m.seats[d]!=="free").map(m=>m.eventKey);return p.length>0&&p.length<o.length?[[d,p]]:[]})),h={seats:l,partial:c,hidden:[...new Set(o.flatMap(d=>d.hidden??[]))],closed:[...new Set(o.flatMap(d=>d.closed??[]))],revision:r.revision,state:r.state,salesClosed:o.some(d=>d.salesClosed)};return this.noteAvailability(r,h.salesClosed,h),h}let n=r.performances.find(o=>o.eventKey===this.activePerformanceKey);if(!n)throw new j(409,"group_performance_unavailable","group_performance_unavailable");return this.noteAvailability(r,r.salesClosed||r.performances.some(o=>o.salesClosed),n),n}setSelectionMode(e,t){if(this.pendingOperationId||this.holdBlocked)throw new j(409,"group_operation_pending","group_operation_pending");e!==this.selectionMode&&(this.selectionMode=e,t!=null&&(this.partySize=t),this.objectsCache=null,this.selectionsByEvent.clear(),this.activePerformanceKey=this.descriptorCache?.performances[0]?.eventKey??this.activePerformanceKey)}setActivePerformance(e){if(this.descriptorCache&&!this.descriptorCache.performances.some(t=>t.eventKey===e))throw new j(404,"group_performance_not_found","group_performance_not_found");this.activePerformanceKey=e}setIncludedEventKeys(e){let t=new Set(this.descriptorCache?.performances.map(i=>i.eventKey)??[]);if(!e.length||new Set(e).size!==e.length||e.some(i=>!t.has(i)))throw new j(422,"invalid_event_keys","invalid_event_keys");this.includedEventKeys=new Set(e),this.reuseObjectsCacheOnce=!!this.objectsCache}includedPerformanceKeys(){return(this.descriptorCache?.performances??[]).map(e=>e.eventKey).filter(e=>this.includedEventKeys.has(e))}setPerformanceSelections(e,t){this.selectionsByEvent.set(e,t.map(i=>({...i})))}allocationsForHold(e){return(this.allocationsByHold.get(e)??[]).map(t=>({eventKey:t.eventKey,items:t.items.map(i=>({...i}))}))}async hold(e,t,i,r){if(this.assertUsable(),r)throw new j(409,"group_hold_replace_unsupported","group_hold_replace_unsupported");let n=t.map(c=>c.label),o={labels:n};if(this.descriptorCache?.inclusionMode==="flexible_dates"&&(o.eventKeys=this.includedPerformanceKeys()),this.selectionMode==="per_performance"){if(!this.activePerformanceKey||!this.descriptorCache||!this.partySize)throw new j(409,"group_selection_incomplete","group_selection_incomplete");this.setPerformanceSelections(this.activePerformanceKey,t);let c=this.descriptorCache.performances.filter(h=>this.includedEventKeys.has(h.eventKey)).map(h=>({eventKey:h.eventKey,selections:this.selectionsByEvent.get(h.eventKey)??[]}));if(c.some(h=>h.selections.length!==this.partySize))throw new j(409,"group_selection_incomplete","group_selection_incomplete");o={selectionMode:"per_performance",allocations:c,...this.descriptorCache.inclusionMode==="flexible_dates"?{eventKeys:this.includedPerformanceKeys()}:{}}}let a=this.pendingOperationId??`pghop_${crypto.randomUUID()}`;this.beginOperation(a),this.onOperationState?.({operationId:a,state:"preparing",decision:null});let l;try{l=await this.authorized(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/hold`,{method:"POST",body:JSON.stringify({operationId:a,...o,...i?{ttlMs:i}:{}})})}catch(c){if(c instanceof K)throw c;if(c instanceof ie)throw this.failOperation(a),c;return this.recover(a,n,Date.now()+this.recoveryTimeoutMs)}if(l.status===201||l.status===202||l.status===504){let c=await this.responseJson(l);return this.emit(c.operation),l.status===201?this.complete(c.operation):this.recover(a,n,Date.now()+this.recoveryTimeoutMs,Ii(l))}if(l.status===503){let c=await l.clone().json().catch(()=>null);if((c?.code??c?.error)==="performance_group_abort_pending"){let h=c?.operation?.operationId??a;return this.beginOperation(h),c?.operation&&this.emit(c.operation),this.recover(h,n,Date.now()+this.recoveryTimeoutMs,Ii(l))}}try{return await this.throwResponse(l,n)}catch(c){throw this.failOperation(a),c}}async release(e,t,i){this.assertUsable();let r=this.operationForHold(i),n=await this.json(`${et(this.groupKey,r)}/release`,{method:"POST",body:"{}"});return this.operationByHold.delete(i),this.allocationsByHold.delete(i),this.clearOperationRecord(),n}async resume(e,t){this.assertUsable();let i=this.operationForHold(t),r=await this.json(et(this.groupKey,i));return this.complete(r.operation)}async extend(e,t,i=12e4){this.assertUsable();let r=this.operationForHold(t),n=Math.max(yo,Math.min(xo,Math.round(i))),o=await this.json(`${et(this.groupKey,r)}/extend`,{method:"POST",body:JSON.stringify({ttlMs:n})}),a=this.complete(o.operation);return{holdId:a.holdId,expiresAt:a.expiresAt}}bestAvailable(){return Promise.reject(new j(400,"group_best_available_unsupported","group_best_available_unsupported"))}socketUrl(){return""}createRealtime(e,t){return new _i(this,t,this.realtimePollMs)}operationIdForHold(e){return this.operationByHold.get(e)??this.readMapping(e)}rememberOperation(e,t){!e||!t||(this.operationByHold.set(e,t),this.writeMapping(e,t))}async restoreOperation(){let e=this.readOperationRecord();if(!e)return null;if(!this.storedIsUndecided(e)&&e.state!=="committed"&&e.state!=="booked")return this.clearOperationRecord(),null;this.pendingOperationId=e.operationId,this.emitRecovery({kind:"pending",operationId:e.operationId,phase:e.state==="undecided"?"unknown":e.state,longRunning:!1,reference:tt(e.operationId)});let t;try{t=await this.authorized(et(this.groupKey,e.operationId))}catch(n){return n instanceof K||this.recoveryFailed(e.operationId,"request_failed"),null}if(t.status===404)return this.failOperation(e.operationId),null;if(!t.ok)return this.recoveryFailed(e.operationId,"request_failed"),null;let i=await this.responseJson(t);this.emit(i.operation);let r=i.operation.state;return r==="committed"||r==="booked"?(this.emitRecovery({kind:"idle"}),this.complete(i.operation)):r==="aborted"||r==="expired"?(this.failOperation(e.operationId),null):this.recover(e.operationId,[],Date.now()+this.recoveryTimeoutMs)}async retryRecovery(){this.assertUsable();let e=this.pendingOperationId??this.readOperationRecord()?.operationId??null;return e?(this.pendingOperationId=e,this.recover(e,[],Date.now()+this.recoveryTimeoutMs)):null}watchSettlement(e){if(this.destroyed)return;let t=this.operationIdForHold(e);!t||t===this.settleOperationId||(this.stopSettlementWatch(),this.settleOperationId=t,this.settleStartedAt=Date.now(),this.settleState="committed",typeof document<"u"&&(this.settleVisibility=()=>{document.hidden||!this.settleOperationId||this.pollSettlement()},document.addEventListener("visibilitychange",this.settleVisibility)),this.scheduleSettlementPoll())}stopSettlementWatch(){this.settleTimer&&clearTimeout(this.settleTimer),this.settleTimer=null,this.settleOperationId=null,this.settleState=null,this.settleVisibility&&typeof document<"u"&&document.removeEventListener("visibilitychange",this.settleVisibility),this.settleVisibility=null}scheduleSettlementPoll(){if(this.destroyed||!this.settleOperationId)return;if(this.settleTimer&&clearTimeout(this.settleTimer),typeof document<"u"&&document.hidden){this.settleTimer=null;return}let t=Date.now()-this.settleStartedAt>=Co?So:ko;this.settleTimer=setTimeout(()=>{this.pollSettlement()},t)}settled(e){return e==="booked"||e==="expired"||e==="aborted"}async pollSettlement(){let e=this.settleOperationId;if(this.destroyed||!e)return;if(typeof document<"u"&&document.hidden){this.settleTimer&&clearTimeout(this.settleTimer),this.settleTimer=null;return}let t;try{let r=await this.authorized(et(this.groupKey,e));if(!r.ok)return this.scheduleSettlementPoll();t=(await this.responseJson(r)).operation}catch(r){return r instanceof K?this.stopSettlementWatch():this.scheduleSettlementPoll()}if(this.destroyed||this.settleOperationId!==e)return;let i=t.state!==this.settleState;if(this.settleState=t.state,i&&this.noteOperationState(e,t.state),this.settled(t.state)){this.stopSettlementWatch(),t.state!=="booked"&&this.clearOperationRecord(),this.emit(t);return}i&&this.emit(t),this.scheduleSettlementPoll()}destroy(){if(!this.destroyed){this.destroyed=!0,this.stopSettlementWatch(),this.access.onRenewed(void 0);try{this.aborter.abort()}catch{}}}operationRecordKey(){return`@seatlayer/performance-group-operation/v1/${encodeURIComponent(this.base)}/${encodeURIComponent(this.groupKey)}`}readOperationRecord(){try{let e=window.sessionStorage.getItem(this.operationRecordKey());if(!e)return null;let t=JSON.parse(e);return!t?.operationId||t.groupKey!==this.groupKey?null:t}catch{return null}}storedIsUndecided(e){return e.state==="undecided"||Eo.has(e.state)}writeOperationRecord(e){try{window.sessionStorage.setItem(this.operationRecordKey(),JSON.stringify(e))}catch{}}clearOperationRecord(){try{window.sessionStorage.removeItem(this.operationRecordKey())}catch{}}beginOperation(e){this.pendingOperationId=e;let t=this.readOperationRecord();this.writeOperationRecord({operationId:e,groupKey:this.groupKey,state:"undecided",createdAt:t?.operationId===e?t.createdAt:Date.now()})}noteOperationState(e,t){let i=this.readOperationRecord();!i||i.operationId!==e||this.writeOperationRecord({...i,state:t})}failOperation(e){this.pendingOperationId=null,this.clearOperationRecord(),this.emitRecovery({kind:"idle"}),this.onOperationState?.({operationId:e,state:"aborted",decision:"abort"})}async adoptSession(e){if(this.destroyed)return;let t=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/session/adopt`;for(let r=0;r<2;r++){if(this.destroyed)return;try{if((await this.fetcher(`${this.base}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit",signal:this.aborter.signal})).ok){this.adoptFailure=null;return}}catch{}}if(this.destroyed)return;this.adoptFailure=new j(409,"performance_group_session_adopt_failed","performance_group_session_adopt_failed");let i=this.pendingOperationId??"";throw this.emitRecovery({kind:"failed",operationId:i,reference:i?tt(i):"",reason:"session_adopt_failed",retryable:!1}),this.adoptFailure}async recover(e,t,i,r=100){let n=r,o=Date.now()+Math.min(8e3,Math.max(500,this.recoveryTimeoutMs/2)),a="unknown";for(;Date.now()<=i;){if(this.destroyed)throw new K;if(this.emitRecovery({kind:"pending",operationId:e,phase:a,longRunning:Date.now()>=o,reference:tt(e)}),await To(n),this.destroyed)throw new K;let l;try{l=await this.authorized(et(this.groupKey,e))}catch(d){if(d instanceof K)throw d;if(d instanceof ie)throw this.recoveryFailed(e,"request_failed"),d;n=Math.min(2e3,Math.max(100,n*2));continue}if(l.status===404){n=Math.min(1e3,Math.max(100,n*2));continue}if(!l.ok){this.recoveryFailed(e,"request_failed");try{return await this.throwResponse(l,t)}finally{this.pendingOperationId=null,this.clearOperationRecord()}}let h=(await this.responseJson(l)).operation;if(a=h.state,this.noteOperationState(e,h.state),this.emit(h),h.state==="committed"||h.state==="booked")return this.emitRecovery({kind:"idle"}),this.complete(h);if(h.state==="aborted"||h.state==="expired")throw this.failOperation(e),new j(409,"conflict","conflict",t.map(d=>({label:d,status:"held"})));n=Ii(l)}throw this.recoveryFailed(e,"deadline"),new j(504,"performance_group_outcome_unknown","performance_group_outcome_unknown")}recoveryFailed(e,t){this.emitRecovery({kind:"failed",operationId:e,reference:tt(e),reason:t,retryable:!0})}emitRecovery(e){if(this.destroyed)return;let t=this.lastRecovery.kind===e.kind&&JSON.stringify(this.lastRecovery)===JSON.stringify(e);this.lastRecovery=e,t||this.onRecoveryState?.(e)}noteAvailability(e,t,i){if(this.destroyed||!this.onAvailability)return;let r=e.state??this.descriptorCache?.state??"active",n=e.revision??null,o=!!n&&!!this.knownRevision&&n!==this.knownRevision;n&&!this.knownRevision&&(this.knownRevision=n);let a=i?.partial??{},l=Object.values(i?.seats??{});this.onAvailability({partial:a,freeCount:l.filter(c=>c==="free").length,blockedCount:Object.keys(i?.seats??{}).filter(c=>i.seats[c]!=="free"&&!(c in a)).length,state:r,salesClosed:!!t||r!=="active",revision:n,revisionChanged:o})}acceptRevision(e){this.knownRevision=e}complete(e){if(!e.hold||e.hold.expiresAt==null)throw new j(409,"group_hold_not_active","group_hold_not_active");this.pendingOperationId=null,this.noteOperationState(e.operationId,e.state),this.operationByHold.set(e.hold.id,e.operationId),this.writeMapping(e.hold.id,e.operationId);let t=e.hold.allocations??[];this.allocationsByHold.set(e.hold.id,t);let i=t.find(r=>r.eventKey===this.activePerformanceKey)?.items;return{holdId:e.hold.id,expiresAt:e.hold.expiresAt,items:i??e.hold.items??[]}}emit(e){this.destroyed||this.onOperationState?.({operationId:e.operationId,state:e.state,decision:e.decision})}operationForHold(e){let t=this.operationIdForHold(e);if(!t)throw new j(404,"group_hold_not_found","group_hold_not_found");return t}mappingKey(e){return`@seatlayer/performance-group-hold/v1/${encodeURIComponent(this.base)}/${encodeURIComponent(this.groupKey)}/${encodeURIComponent(e)}`}readMapping(e){try{return window.sessionStorage.getItem(this.mappingKey(e))}catch{return null}}writeMapping(e,t){try{window.sessionStorage.setItem(this.mappingKey(e),t)}catch{}}assertUsable(){if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure}async authorized(e,t={},i=!1){if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure;let r={...t.headers};t.body!==void 0&&(r["Content-Type"]="application/json");let n=await this.access.authorization(i?"unauthorized":"initial");if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure;if(!n)throw new Error("performance_group_buyer_access_required");r.Authorization=n;let o=await this.fetcher(`${this.base}${e}`,{method:t.method??"GET",headers:r,body:t.body,credentials:"omit",signal:this.aborter.signal});if(!i&&(o.status===401||o.status===403||o.status===422)){let a=await o.clone().json().catch(()=>null);if(await this.access.handleFailure(o.status,a?.code??a?.error))return this.authorized(e,t,!0)}return o}async json(e,t={}){let i=await this.authorized(e,t);return i.ok?this.responseJson(i):this.throwResponse(i)}async blob(e){let t=await this.authorized(e);return t.ok?t.blob():this.throwResponse(t)}async responseJson(e){return e.json()}async throwResponse(e,t=[]){let r=await e.json().catch(()=>null)??{},n=r.code??r.error??`request_failed_${e.status}`;throw e.status===409&&!r.conflicts?.length&&t.length&&(r.conflicts=t.map(o=>({label:o,status:"held"}))),new j(e.status,r.error??n,n,r.conflicts)}};var Po="https://api.seatlayer.io",zs="seatlayer-performance-group-picker-style";function Ao(){if(document.getElementById(zs))return;let s=document.createElement("style");s.id=zs,s.textContent=`
1661
1743
  .sl-pg-root{display:grid;gap:12px;min-width:0;color:var(--sl-text,#18202b);font-family:var(--sl-font,Inter,system-ui,sans-serif)}
1662
1744
  .sl-pg-head{display:grid;gap:8px;padding:16px 18px;border:1px solid var(--sl-line,#dde3ea);border-radius:14px;background:var(--sl-surface,#fff)}
1663
1745
  .sl-pg-head h2{font:700 20px/1.25 inherit;margin:0}.sl-pg-summary{margin:0;color:var(--sl-muted,#627081);font-size:14px}
@@ -1717,7 +1799,7 @@
1717
1799
  @media(min-width:900px){.sl-pg-legend-list{justify-content:flex-start}}
1718
1800
  .sl-pg-live{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
1719
1801
  @media(max-width:640px){.sl-pg-head{padding:13px 14px}.sl-pg-head h2{font-size:18px}.sl-pg-inner{min-height:590px}}
1720
- `,document.head.appendChild(r)}function Sr(r){let e=typeof r=="string"?document.querySelector(r):r;if(!e)throw new Error("seatlayer: Performance Group picker container was not found");return e}function yi(r,e,t){try{return new Intl.DateTimeFormat(e,{...t,...r.timezone?{timeZone:r.timezone}:{}}).format(new Date(r.startsAt))}catch{return new Date(r.startsAt).toLocaleString(e)}}function Cr(r,e){return yi(r,e,{dateStyle:"medium"})}function Er(r,e){return yi(r,e,{timeStyle:"short"})}function vi(r,e){return yi(r,e,{weekday:"short",day:"numeric",month:"short"})}var Ft=class{constructor(e){this.descriptorValue=null;this.picker=null;this.root=null;this.innerHost=null;this.tabsHost=null;this.prevButton=null;this.nextButton=null;this.heldSummary=null;this.live=null;this.statusHost=null;this.statusCopy=null;this.statusAction=null;this.rendered=!1;this.destroyed=!1;this.continued=!1;this.switchingPerformance=!1;this.operationPending=!1;this.recovery={kind:"idle"};this.availability=null;this.activePerformanceKey=null;this.selectionsByEvent=new Map;this.validByEvent=new Map;this.refreshingComposition=!1;this.activeHandoff=null;this.selectionModeValue="same_seat";this.progressHost=null;this.legendHost=null;this.paneHost=null;this.markedLabels=new Set;this.holdTicker=null;this.switchingMode=!1;this.booked=!1;if(!e||typeof e!="object")throw new Error("seatlayer: options object is required");if(!e.performanceGroup)throw new Error("seatlayer: `performanceGroup` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider)throw new Error("seatlayer: Performance Group buyer access is required");if(!!e.initialHoldId!=!!e.initialOperationId)throw new Error("seatlayer: `initialHoldId` and `initialOperationId` must be supplied together");if((e.selectionMode==="per_performance"||e.allowSelectionModeSwitch)&&(!Number.isSafeInteger(e.numberOfPlacesToSelect)||(e.numberOfPlacesToSelect??0)<1))throw new Error("seatlayer: `numberOfPlacesToSelect` is required for per-performance selection");this.selectionModeValue=e.selectionMode??"same_seat",this.options=e,this.panelId=`sl-pg-panel-${e.performanceGroup}`,this.access=new se({provider:e.buyerAccessTokenProvider,token:e.buyerAccessToken,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable}),this.api=new Dt(e.performanceGroup,{apiBase:e.apiBase,access:this.access,selectionMode:e.selectionMode,partySize:e.selectionMode==="per_performance"?e.numberOfPlacesToSelect:void 0,onOperationState:t=>this.operationChanged(t),onRecoveryState:t=>this.recoveryChanged(t),onAvailability:t=>this.availabilityChanged(t)}),e.initialHoldId&&e.initialOperationId&&this.api.rememberOperation(e.initialHoldId,e.initialOperationId)}get mode(){return this.selectionModeValue}get selectionMode(){return this.selectionModeValue}get descriptor(){return this.descriptorValue}get currentHold(){return this.activeHandoff}async render(){if(this.rendered)return this;if(this.rendered=!0,lo(),await(0,Ce.loadLocale)(this.options.locale),this.options.messages&&(0,Ce.setStringOverrides)(this.options.messages),this.destroyed)return this;let e=await this.api.descriptor();return this.destroyed?this:(this.descriptorValue=e,this.activePerformanceKey=e.performances[0]?.eventKey??null,this.buildChrome(Sr(this.options.container),e),this.announce(this.copy("picker.group.checkingAvailability")),await this.mountPicker(e),this.destroyed?this:(await this.restoreOperation(),this))}buildChrome(e,t){e.replaceChildren();let i=document.createElement("div");i.className="sl-pg-root",i.dataset.performanceGroup=t.key,i.dataset.selectionMode=this.mode;let s=document.createElement("div");s.className="sl-pg-progress";let n=document.createElement("section");n.className="sl-pg-head",n.setAttribute("aria-labelledby",`sl-pg-title-${t.key}`);let o=document.createElement("h2");o.id=`sl-pg-title-${t.key}`,o.textContent=t.name;let a=document.createElement("p");a.className="sl-pg-summary",a.textContent=this.copy(this.mode==="per_performance"?"picker.group.perPerformanceSummary":"picker.group.sameSeatSummary",{count:t.performanceCount});let l=document.createElement("p");l.className="sl-pg-help",l.textContent=this.copy(this.mode==="per_performance"?"picker.group.perPerformanceMapHelp":"picker.group.sameSeatMapHelp");let c=document.createElement("details");c.className="sl-pg-dates",c.open=t.performanceCount<=3;let h=document.createElement("summary");h.textContent=this.copy("picker.group.allDates",{count:t.performanceCount});let p=document.createElement("div");p.innerHTML=ar(this.performanceCards(t),this.copy("picker.group.includedNote",{count:t.performanceCount})),c.append(h,p);let d=document.createElement("div");d.className="sl-pg-held-summary",d.hidden=!0,n.append(o,a,l,c,d);let m=document.createElement("div");m.className="sl-pg-legend";let g=document.createElement("div");g.className="sl-pg-pane",g.setAttribute("role","group"),g.setAttribute("aria-label",this.copy("picker.group.yourSelection")),g.hidden=!0;let x=this.mode==="per_performance"?this.performanceTabs(t):null,w=document.createElement("div");w.className="sl-pg-inner",w.id=this.panelId,w.setAttribute("aria-busy","false"),w.dataset.locked="false",this.mode==="per_performance"&&(w.setAttribute("role","tabpanel"),w.tabIndex=-1);let v=document.createElement("div");v.className="sl-pg-status",v.setAttribute("role","status"),v.setAttribute("aria-live","polite"),v.hidden=!0;let R=document.createElement("p"),S=document.createElement("button");S.type="button",S.hidden=!0,S.textContent=this.copy("picker.group.retry"),S.addEventListener("click",()=>{this.retryRecovery()}),v.append(R,S),w.appendChild(v);let P=document.createElement("div");P.className="sl-pg-live",P.setAttribute("role","status"),P.setAttribute("aria-live","polite"),i.append(s,n),x&&i.append(x),i.append(m,w,g,P),e.appendChild(i),this.root=i,this.progressHost=s,this.legendHost=m,this.paneHost=g,this.innerHost=w,this.heldSummary=d,this.live=P,this.statusHost=v,this.statusCopy=R,this.statusAction=S,this.syncProgress(),this.syncLegend(),this.syncPane()}async mountPicker(e){let t=new We(Js({container:this.innerHost,event:e.key,apiBase:this.options.apiBase,transport:this.api,hideEventDetails:!0,maxSelection:this.options.maxSelection,selectedObjects:this.options.selectedObjects,selectableObjects:this.options.selectableObjects,numberOfPlacesToSelect:this.options.numberOfPlacesToSelect,selectionValidators:this.options.selectionValidators,locale:this.options.locale,messages:this.options.messages,languages:this.options.languages,colorblindSafe:this.options.colorblindSafe,initialView:this.options.initialView,enable3D:this.options.enable3D,max3DSeats:this.options.max3DSeats,onBuyerViewChange:this.options.onBuyerViewChange,hideBadge:this.options.hideBadge,theme:this.options.theme,holdTtlMs:this.options.holdTtlMs,initialHoldId:this.options.initialHoldId,restoreHold:this.options.restoreHold,confirmSelection:this.options.confirmSelection,seatView:this.options.seatView,onSelectionChange:i=>this.selectionChanged(i),onSelectionValidityChange:i=>this.selectionValidityChanged(i),onSelectionValid:this.options.onSelectionValid,onSelectionInvalid:this.options.onSelectionInvalid,onSelectionLimit:this.options.onSelectionLimit,onHoldChange:(i,s)=>this.holdChanged(i,s),onCheckout:(i,s)=>this.checkout(i,s),onHoldExpired:()=>{this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()},onError:this.options.onError},{performanceCount:e.performanceCount,selectionMode:this.mode,submissionState:()=>this.submissionState(),suppressPricing:!0,nights:()=>this.nights(),seatMarks:()=>this.seatMarks(),nightSummary:()=>this.nightSummary(),groupSelectionSummary:()=>this.groupSelectionSummary(),activePerformanceLabel:()=>this.activePerformanceLabel(),selectNight:i=>{this.switchPerformance(i)},selectionModeSwitch:this.options.allowSelectionModeSwitch&&this.mode==="same_seat"?{label:this.copy("picker.group.chooseNightByNight"),activate:()=>{this.switchSelectionMode("per_performance")}}:null}));this.picker=t,await t.render(),!this.destroyed&&this.updateTabs()}performanceCards(e){return e.performances.map(t=>({eventKey:t.eventKey,name:t.name,iso:new Date(t.startsAt).toISOString(),date:Cr(t,this.options.locale),time:Er(t,this.options.locale)}))}nights(){return(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:e.name,shortDate:vi(e,this.options.locale)}))}seatMarks(){let e=this.descriptorValue?.performanceCount??0,t=this.availability,i=!!t?.salesClosed||!!t&&t.state!=="active",s=this.mode==="same_seat"&&!i?t?.partial??{}:{},n={};for(let o of this.markedLabels)n[o]=null;if(this.markedLabels.clear(),e>0)for(let[o,a]of Object.entries(s))!a.length||a.length>=e||(n[o]={kind:"partial",fraction:(e-a.length)/e,data:{blockedEventKeys:[...a]}},this.markedLabels.add(o));return n}activePerformanceLabel(){if(this.mode!=="per_performance")return null;let e=this.descriptorValue?.performances.find(s=>s.eventKey===this.activePerformanceKey);if(!e)return null;let t=vi(e,this.options.locale),i=e.name?.trim();return i&&i!==t?`${i} \xB7 ${t}`:t}nightSummary(){return this.mode!=="per_performance"?[]:(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:vi(e,this.options.locale),labels:(this.selectionsByEvent.get(e.eventKey)??[]).map(t=>t.label),active:e.eventKey===this.activePerformanceKey}))}groupSelectionSummary(){let e=this.descriptorValue?.performances??[];if(!e.length)return null;if(this.mode==="same_seat"){let n=this.activeHandoff?.seatLabels.length??this.picker?.getSelection().length??0;return{seats:n*e.length,performances:e.length,performancesChosen:n?e.length:0,perPerformance:n}}let t=e.map(n=>this.selectionsByEvent.get(n.eventKey)?.length??0),i=t.filter(n=>n>0),s=i.length===t.length&&i.every(n=>n===i[0]);return{seats:t.reduce((n,o)=>n+o,0),performances:e.length,performancesChosen:i.length,perPerformance:s&&i.length?i[0]:null}}syncProgress(){if(!this.progressHost)return;let e=!!this.activeHandoff,t=[{id:"performances",label:this.copy("picker.group.stepPerformances"),state:"done"},{id:"seats",label:this.copy("picker.group.stepSeats"),state:e?"done":"current"},{id:"review",label:this.copy("picker.group.stepReview"),state:this.booked?"done":e?"current":"upcoming"}];this.progressHost.innerHTML=or(t,{label:this.copy("picker.group.progressLabel"),done:this.copy("picker.group.stepDone"),current:this.copy("picker.group.stepCurrent"),upcoming:this.copy("picker.group.notStarted")})}syncLegend(){if(!this.legendHost)return;let e=this.availability,t=!!e?.salesClosed||e&&e.state!=="active";if(!e||t){this.legendHost.replaceChildren();return}this.legendHost.innerHTML=ir({available:e.freeCount>0,selected:(this.picker?.getSelection().length??0)>0,partial:Object.keys(e.partial).length>0,unavailable:e.blockedCount>0},{title:this.copy("picker.group.legendTitle"),available:this.copy("picker.group.legendAvailable"),selected:this.copy("picker.group.legendSelected"),partial:this.copy("picker.group.legendNotEveryDate"),unavailable:this.copy("picker.group.legendUnavailable")},this.categoryColor())}categoryColor(){return this.picker?.categoryLegendColor()??"#2563eb"}syncPane(){let e=this.paneHost;if(!e)return;let t=this.descriptorValue?.performances??[];if(this.mode!=="same_seat"||!t.length){e.hidden=!0,e.replaceChildren();return}let i=this.activeHandoff?.seatLabels??this.picker?.getSelection().map(n=>n.label)??[],s=this.heldTotal();e.hidden=!1,e.innerHTML=lr({title:this.copy("picker.group.yourSelection"),rows:t.map(n=>({eventKey:n.eventKey,name:`${Cr(n,this.options.locale)} ${Er(n,this.options.locale)}`,labels:i})),empty:this.copy("picker.group.noSeatsChosenYet"),note:s?null:this.copy("picker.group.pricesPerPerformance"),total:s?{label:this.copy("picker.group.total"),amount:s}:null,holdStatus:this.booked?this.copy("picker.group.bookedAll",{count:t.length}):this.activeHandoff?this.copy("picker.group.heldTogether",{count:t.length,time:cr(this.activeHandoff.expiresAt-Date.now())}):null})}heldTotal(){let e=this.activeHandoff,t=this.descriptorValue;if(!e||!t)return null;let s=this.api.allocationsForHold(e.holdId).flatMap(a=>a.items);if(!s.length)return null;let n=s.reduce((a,l)=>a+l.unitPrice*(l.quantity??1),0),o=s[0]?.currency??t.currency;try{return(0,Ce.formatMoney)(n,o,void 0,this.options.locale)}catch{return`${o} ${n.toFixed(2)}`}}syncHoldTicker(){this.booked||(this.activeHandoff&&!this.holdTicker?this.holdTicker=setInterval(()=>this.syncPane(),1e3):!this.activeHandoff&&this.holdTicker&&(clearInterval(this.holdTicker),this.holdTicker=null))}async switchSelectionMode(e){if(!(this.destroyed||this.switchingMode||e===this.mode)&&!(this.activeHandoff||this.holdBlocked())){this.switchingMode=!0;try{this.api.setSelectionMode(e,this.options.numberOfPlacesToSelect),this.selectionModeValue=e,this.picker?.destroy(),this.picker=null,this.selectionsByEvent.clear(),this.validByEvent.clear(),this.markedLabels.clear(),this.availability=null;let t=this.descriptorValue;if(this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(Sr(this.options.container),t),await this.mountPicker(t),this.destroyed)return;this.announce(this.copy("picker.group.nightByNightStarted")),this.options.onSelectionModeChange?.(e)}catch(t){if(t instanceof K)return;this.options.onError?.(t)}finally{this.switchingMode=!1}}}async release(){await this.picker?.release()}close(){this.destroy()}destroy(){if(this.destroyed)return;this.destroyed=!0,this.api.destroy(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.picker;this.root?.setAttribute("hidden","");let t=()=>{e?.destroy(),this.access.clear(),this.root?.remove(),this.root=null,this.picker=null,this.innerHost=null,this.tabsHost=null,this.statusHost=null,this.statusCopy=null,this.statusAction=null,this.live=null};e?.getCurrentHold()&&!this.continued?e.release().catch(()=>{}).finally(t):t()}copy(e,t){let i=this.options.messages?.[e];return i!==void 0?t?i.replace(/\{(\w+)\}/g,(s,n)=>String(t[n]??`{${n}}`)):i:(0,Ce.t)(e,t)}performanceTabs(e){let t=document.createElement("div");t.className="sl-pg-tabsbar";let i=document.createElement("button");i.type="button",i.className="sl-pg-step",i.dataset.step="previous",i.setAttribute("aria-label",this.copy("picker.group.previousPerformance")),i.textContent="\u2039",i.addEventListener("click",()=>{this.stepPerformance(-1)});let s=document.createElement("button");s.type="button",s.className="sl-pg-step",s.dataset.step="next",s.setAttribute("aria-label",this.copy("picker.group.nextPerformance")),s.textContent="\u203A",s.addEventListener("click",()=>{this.stepPerformance(1)});let n=document.createElement("div");return n.className="sl-pg-tabs",n.setAttribute("role","tablist"),n.setAttribute("aria-label",this.copy("picker.group.performances")),e.performances.forEach((o,a)=>{let l=document.createElement("button");l.type="button",l.className="sl-pg-tab",l.id=`sl-pg-tab-${e.key}-${o.eventKey}`,l.dataset.eventKey=o.eventKey,l.dataset.state="not-started",l.setAttribute("role","tab"),l.setAttribute("aria-selected",String(a===0)),l.setAttribute("aria-controls",this.panelId),l.tabIndex=a===0?0:-1;let c=document.createElement("span");c.className="sl-pg-tab-name",c.textContent=o.name;let h=document.createElement("span");h.className="sl-pg-tab-state",h.textContent=this.copy("picker.group.stillNeedsSeat");let p=document.createElement("span");p.className="sl-pg-tab-badge",p.textContent=this.copy("picker.group.chosenOfTotal",{chosen:0,total:this.options.numberOfPlacesToSelect??1}),l.append(c,p,h),l.addEventListener("click",()=>{this.switchPerformance(o.eventKey)}),l.addEventListener("keydown",d=>this.tabKeydown(d)),n.appendChild(l)}),t.append(i,n,s),this.tabsHost=n,this.prevButton=i,this.nextButton=s,t}tabButtons(){return[...this.tabsHost?.querySelectorAll(".sl-pg-tab")??[]]}tabKeydown(e){let t=this.tabButtons(),i=t.findIndex(a=>a===e.target);if(i<0)return;let s=getComputedStyle(this.tabsHost??document.body).direction==="rtl",n=-1;switch(e.key){case"ArrowRight":n=i+(s?-1:1);break;case"ArrowLeft":n=i+(s?1:-1);break;case"ArrowDown":n=i+1;break;case"ArrowUp":n=i-1;break;case"Home":n=0;break;case"End":n=t.length-1;break;default:return}if(n<0||n>=t.length)return;e.preventDefault();let o=t[n];o.focus({preventScroll:!0}),o.disabled||this.switchPerformance(o.dataset.eventKey)}stepPerformance(e){let t=this.tabButtons(),i=t.findIndex(n=>n.dataset.eventKey===this.activePerformanceKey),s=t[i+e];!s||s.disabled||(s.focus({preventScroll:!0}),this.switchPerformance(s.dataset.eventKey))}submissionState(){let e=this.descriptorValue?.performances??[];if(this.mode!=="per_performance"){let s=!this.holdBlocked();return{complete:e.length,total:e.length,ready:s}}let t=this.options.numberOfPlacesToSelect,i=e.filter(s=>this.selectionsByEvent.get(s.eventKey)?.length===t&&this.validByEvent.get(s.eventKey)!==!1).length;return{complete:i,total:e.length,ready:i===e.length&&!this.holdBlocked()}}holdBlocked(){return this.operationPending||this.recovery.kind!=="idle"||!!this.availability?.salesClosed}selectionChanged(e){if(this.mode!=="per_performance"){this.options.onSelectionChange?.(e),this.syncPane(),this.syncLegend();return}if(this.refreshingComposition||this.switchingPerformance||!this.activePerformanceKey)return;let t=e.map(i=>({...i}));this.selectionsByEvent.set(this.activePerformanceKey,t),this.api.setPerformanceSelections(this.activePerformanceKey,t.map(i=>({label:i.label}))),t.length!==this.options.numberOfPlacesToSelect?this.validByEvent.set(this.activePerformanceKey,!1):this.validByEvent.has(this.activePerformanceKey)||this.validByEvent.set(this.activePerformanceKey,!0),this.updateTabs(),this.options.onSelectionChange?.(e),this.refreshComposition(),this.syncLegend()}selectionValidityChanged(e){if(this.mode==="per_performance"&&!this.switchingPerformance&&this.activePerformanceKey){let t=this.validByEvent.get(this.activePerformanceKey);this.validByEvent.set(this.activePerformanceKey,e.isValid),this.updateTabs(),!this.refreshingComposition&&t!==e.isValid&&this.refreshComposition()}this.options.onSelectionValidityChange?.(e)}refreshComposition(){if(this.refreshingComposition||!this.picker)return;let e=this.submissionState();this.refreshingComposition=!0;try{this.picker.refreshPerformanceGroupComposition();let t=this.submissionState();(e.complete!==t.complete||e.ready!==t.ready)&&this.picker.refreshPerformanceGroupComposition()}finally{this.refreshingComposition=!1}}tabState(e){let t=this.options.numberOfPlacesToSelect??1,i=(this.selectionsByEvent.get(e)??[]).map(n=>n.label),s=this.copy("picker.group.chosenOfTotal",{chosen:i.length,total:t});return i.length===0?{key:"not-started",label:this.copy("picker.group.stillNeedsSeat"),badge:s}:i.length===t&&this.validByEvent.get(e)!==!1?{key:"complete",label:this.copy("picker.group.completeWithSeats",{seats:i.join(", ")}),badge:s}:i.length===t?{key:"needs-attention",label:this.copy("picker.group.needsAttention"),badge:s}:{key:"in-progress",label:this.copy("picker.group.needsMoreSeats",{count:t-i.length}),badge:s}}updateTabs(){let e=this.tabButtons(),t=this.switchingPerformance||this.operationPending||this.recovery.kind!=="idle"||!!this.activeHandoff;e.forEach(s=>{let n=s.dataset.eventKey,o=this.tabState(n),a=n===this.activePerformanceKey;s.dataset.state=o.key,s.disabled=t,s.setAttribute("aria-selected",String(a)),s.tabIndex=a?0:-1;let l=s.querySelector(".sl-pg-tab-state");l&&(l.textContent=o.label);let c=s.querySelector(".sl-pg-tab-badge");c&&(c.textContent=o.badge);let h=s.querySelector(".sl-pg-tab-name")?.textContent??n;s.setAttribute("aria-label",`${h}: ${o.badge} \xB7 ${o.label}`),a&&this.innerHost?.setAttribute("aria-labelledby",s.id)});let i=e.findIndex(s=>s.dataset.eventKey===this.activePerformanceKey);this.prevButton&&(this.prevButton.disabled=t||i<=0),this.nextButton&&(this.nextButton.disabled=t||i<0||i>=e.length-1)}async switchPerformance(e){if(this.mode!=="per_performance"||this.switchingPerformance||this.holdBlocked()||this.activeHandoff||e===this.activePerformanceKey||!this.picker)return;this.activePerformanceKey&&this.selectionChanged(this.picker.getSelection());let t=this.selectionsByEvent.get(e)?.map(i=>i.label)??[];this.switchingPerformance=!0,this.activePerformanceKey=e,this.updateTabs(),this.setInteractionLocked(!0);try{this.picker.clearSelection(),this.api.setActivePerformance(e),await this.picker.refreshAvailability();let i=this.picker.selectObjects(t);this.switchingPerformance=!1,this.selectionChanged(i),i.length!==t.length&&this.validByEvent.set(e,!1),this.options.onSelectionChange?.(i);let s=this.descriptorValue?.performances.find(n=>n.eventKey===e);s&&this.announce(this.copy("picker.group.performanceOpened",{performance:s.name}))}catch(i){this.options.onError?.(i)}finally{this.switchingPerformance=!1,!this.operationPending&&this.recovery.kind==="idle"&&this.setInteractionLocked(!1),this.updateTabs(),this.picker.refreshPerformanceGroupComposition()}}setInteractionLocked(e){let t=this.innerHost;t&&(t.dataset.locked=String(e),t.setAttribute("aria-busy",String(e)),t.setAttribute("aria-disabled",String(e)))}announce(e){this.live&&(this.live.textContent=e)}showStatus(e,t,i={}){this.statusHost&&this.statusCopy&&this.statusAction&&(this.statusCopy.textContent=t,this.statusHost.hidden=!t,this.statusAction.hidden=!i.retry),this.announce(t),this.options.onStatusChange?.({kind:e,message:t,...i.reference?{reference:i.reference}:{}})}clearStatus(){this.statusHost&&(this.statusHost.hidden=!0),this.statusAction&&(this.statusAction.hidden=!0),this.options.onStatusChange?.({kind:"idle",message:""})}operationChanged(e){if(this.destroyed)return;let t=e.state==="preparing"||e.state==="commit_pending"||e.state==="abort_pending"||e.state==="expire_pending";if(this.operationPending=t,this.setInteractionLocked(t||this.recovery.kind!=="idle"),this.updateTabs(),t){this.showStatus("pending",this.copy(e.state==="commit_pending"?"picker.group.commitPending":e.state==="abort_pending"||e.state==="expire_pending"?"picker.group.abortPending":"picker.group.securing"));return}if(e.state==="booked"){this.bookingSettled();return}if(e.state==="expired"||e.state==="aborted"){this.activeHandoff&&this.holdLost();return}if(e.state==="committed"){this.clearStatus(),this.announce(this.copy("picker.group.secured")),queueMicrotask(()=>this.innerHost?.querySelector('[data-ref="cta"]')?.focus({preventScroll:!0}));return}e.decision==="abort"&&this.recovery.kind==="idle"&&(this.clearStatus(),this.announce(this.copy("picker.group.notSecured")))}bookingSettled(){if(this.booked)return;this.booked=!0,this.root&&(this.root.dataset.booking="booked"),this.clearStatus(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.activeHandoff?{...this.activeHandoff,bookingState:"booked"}:null;e&&(this.activeHandoff=e),this.syncProgress(),this.syncPane(),this.updateTabs(),this.picker?.notifyGroupSettled("booked"),this.announce(this.copy("picker.group.bookedAll",{count:this.descriptorValue?.performanceCount??0})),e&&this.options.onBooked?.(e)}holdLost(){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.picker?.notifyGroupSettled("lost"),this.announce(this.copy("picker.group.notSecured")),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()}recoveryChanged(e){if(!this.destroyed){if(this.recovery=e,this.setInteractionLocked(this.operationPending||e.kind!=="idle"),this.updateTabs(),this.refreshComposition(),e.kind==="idle"){this.operationPending||this.clearStatus();return}if(e.kind==="pending"){this.showStatus("pending",e.longRunning?this.copy("picker.group.longRunning",{reference:e.reference}):this.copy("picker.group.outcomeUnknown"),{reference:e.reference});return}this.showStatus("recovery_failed",this.copy("picker.group.longRunning",{reference:e.reference}),{retry:e.retryable,reference:e.reference}),this.setInteractionLocked(!1)}}async retryRecovery(){if(!(this.destroyed||this.recovery.kind!=="failed"||!this.recovery.retryable))try{await this.api.retryRecovery()}catch(e){if(e instanceof K)return;this.options.onError?.(e)}}async restoreOperation(){try{let e=await this.api.restoreOperation();e&&!this.destroyed&&await this.picker?.adoptRestoredHold(e.holdId)}catch(e){if(e instanceof K)return;this.options.onError?.(e)}}availabilityChanged(e){if(this.destroyed)return;let t=this.availability;if(this.availability=e,e.revisionChanged){this.showStatus("revision_changed",this.copy("picker.group.revisionChanged")),this.reloadDescriptor(e.revision);return}e.salesClosed?this.showStatus("sales_closed",this.copy("picker.group.salesClosed")):t?.salesClosed&&this.clearStatus(),this.updateTabs(),this.refreshComposition(),this.syncLegend()}async reloadDescriptor(e){this.api.acceptRevision(e);try{let t=await this.api.descriptor();if(this.destroyed)return;this.descriptorValue=t,await this.picker?.refreshAvailability()}catch(t){if(t instanceof K)return;this.options.onError?.(t)}}handoff(e,t){let i=this.descriptorValue,s=this.api.operationIdForHold(e.holdId);if(!i||!s)throw new Error("seatlayer: Performance Group hold identity is unavailable");let n=this.api.allocationsForHold(e.holdId);return{operationId:s,holdId:e.holdId,expiresAt:e.expiresAt,performanceGroup:i,selectionMode:this.mode,bookingState:this.booked?"booked":"held",seatLabels:t.map(o=>o.label),...this.mode==="per_performance"?{allocations:n.map(o=>({eventKey:o.eventKey,seatLabels:o.items.map(a=>a.label)}))}:{}}}renderHeldAllocations(e){if(!(!this.heldSummary||this.mode!=="per_performance")){this.heldSummary.replaceChildren();for(let t of e){let i=this.descriptorValue?.performances.find(o=>o.eventKey===t.eventKey),s=document.createElement("p"),n=document.createElement("strong");n.textContent=i?.name??t.eventKey,s.append(n,document.createTextNode(t.items.map(o=>o.label).join(", "))),this.heldSummary.appendChild(s)}this.heldSummary.hidden=e.length===0}}resetPerPerformanceSelection(){this.mode==="per_performance"&&(this.selectionsByEvent.clear(),this.validByEvent.clear(),this.heldSummary?.replaceChildren(),this.heldSummary&&(this.heldSummary.hidden=!0),this.updateTabs(),this.picker?.refreshPerformanceGroupComposition())}holdChanged(e,t){if(!e){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.options.onHoldChange?.(null);return}let i=this.handoff(e,t),s=this.activeHandoff?.holdId!==i.holdId;this.activeHandoff=i,this.renderHeldAllocations(this.api.allocationsForHold(e.holdId)),this.updateTabs(),this.api.watchSettlement(e.holdId),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),s&&this.options.onHold?.(i),this.options.onHoldChange?.(i)}checkout(e,t){let i=this.handoff(e,t);this.continued=!0,this.activeHandoff=i,this.options.onCheckout?.(i)}};var co="https://api.seatlayer.io",po=6e4,ho=5e3,ne=class extends Error{constructor(t,i){super(`season_request_failed:${t}`);this.code=t;this.status=i;this.name="SeasonApiError"}},ht=class extends Error{constructor(t){super(`season_operation_timeout:${t}`);this.operationId=t;this.name="SeasonRecoveryTimeoutError"}};function uo(r,e){let t=Number(r.headers.get("Retry-After")),i=Number.isFinite(t)&&t>=0?t:e.retryAfterSeconds;return Math.max(0,Math.min(ho,i*1e3))}function mo(r,e){return e?.aborted?Promise.reject(e.reason??new DOMException("Aborted","AbortError")):new Promise((t,i)=>{let s=setTimeout(t,r);e?.addEventListener("abort",()=>{clearTimeout(s),i(e.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function fo(r){if(!r||typeof r!="object")return"unknown";let e=r;return typeof e.code=="string"?e.code:typeof e.error=="string"?e.error:"unknown"}function xi(r){if(!r||typeof r!="object")throw new ne("invalid_operation_response",502);let e=r,t=JSON.stringify(e);if(!e.operationId||!e.holdId||!Array.isArray(e.allocations)||t.includes("shc_")||t.includes("childHoldId")||t.includes("child_hold_id"))throw new ne("unsafe_operation_response",502);return e}function Tr(r,e){return{seasonKey:r.key,planActivationId:r.planActivationId,operationId:e.operationId,holdId:e.holdId,expiresAt:e.expiresAt,policy:e.policy,state:e.state,allocations:e.allocations.map(({eventId:t,state:i})=>({eventKey:t,state:i}))}}var ut,mt,Te,ft,gt,ae,Ee,jt=class{constructor(e,t){$(this,ae);$(this,ut);$(this,mt);$(this,Te);$(this,ft);$(this,gt);A(this,ut,e),A(this,mt,(t.apiBase??co).replace(/\/$/,"")),A(this,Te,t.access),A(this,ft,t.fetch??globalThis.fetch.bind(globalThis)),A(this,gt,t.recoveryTimeoutMs??po)}async descriptor(){let{body:e}=await L(this,ae,Ee).call(this,"GET","");return e.season}async availability(){let{body:e}=await L(this,ae,Ee).call(this,"GET","/availability"),t=Object.values(e.seats??{});return{...e,freeCount:t.filter(i=>i==="free").length,blockedCount:t.filter(i=>i!=="free").length}}async hold(e,t){let{body:i,response:s}=await L(this,ae,Ee).call(this,"POST","/holds",{operationId:t,labels:[...e]});return{operation:xi(i.operation),response:s}}async operation(e){let{body:t,response:i}=await L(this,ae,Ee).call(this,"GET",`/operations/${encodeURIComponent(e)}`);return{operation:xi(t.operation),response:i}}async release(e,t){let{body:i,response:s}=await L(this,ae,Ee).call(this,"POST",`/holds/${encodeURIComponent(e)}/release`,{releaseActionId:t});return{operation:xi(i.operation),response:s}}async renewalIntent(e){let{body:t}=await L(this,ae,Ee).call(this,"POST","/renewal-intents",{offerId:e}),i=t.intent;if(!i||i.offerId!==e||i.state!=="intent_received"||!i.intentId||!Number.isFinite(i.receivedAt))throw new ne("invalid_renewal_intent_response",502);return i}async waitForTerminal(e,t,i){let s=Date.now(),n=t??await this.operation(e);for(;n.operation.state==="preparing"||n.operation.state==="commit_pending"||n.operation.state==="abort_pending";){if(Date.now()-s>=y(this,gt))throw new ht(e);await mo(uo(n.response,n.operation),i),n=await this.operation(e)}return n.operation}destroy(){y(this,Te).clear()}};ut=new WeakMap,mt=new WeakMap,Te=new WeakMap,ft=new WeakMap,gt=new WeakMap,ae=new WeakSet,Ee=async function(e,t,i,s=!0){let n=await y(this,Te).authorization();if(!n)throw new ie({reason:"no_token",retryable:!1});let o=await y(this,ft).call(this,`${y(this,mt)}/pub/seasons/${encodeURIComponent(y(this,ut))}${t}`,{method:e,headers:{Authorization:n,...i===void 0?{}:{"Content-Type":"application/json"}},body:i===void 0?void 0:JSON.stringify(i)}),a=await o.json().catch(()=>null);if(!o.ok){let l=fo(a);if(s&&await y(this,Te).handleFailure(o.status,l))return L(this,ae,Ee).call(this,e,t,i,!1);let c=y(this,Te).unavailable;throw c?new ie(c):new ne(l,o.status)}if(a===null)throw new ne("invalid_json_response",502);return{body:a,response:o}};var Pr="seatlayer-season-picker-style";function go(){if(document.getElementById(Pr))return;let r=document.createElement("style");r.id=Pr,r.textContent=`
1802
+ `,document.head.appendChild(s)}function Vs(s){let e=typeof s=="string"?document.querySelector(s):s;if(!e)throw new Error("seatlayer: Performance Group picker container was not found");return e}var ri=class{constructor(e){this.descriptorValue=null;this.picker=null;this.root=null;this.innerHost=null;this.tabsHost=null;this.prevButton=null;this.nextButton=null;this.heldSummary=null;this.live=null;this.statusHost=null;this.statusCopy=null;this.statusAction=null;this.rendered=!1;this.destroyed=!1;this.continued=!1;this.switchingPerformance=!1;this.operationPending=!1;this.recovery={kind:"idle"};this.availability=null;this.activePerformanceKey=null;this.selectionsByEvent=new Map;this.validByEvent=new Map;this.refreshingComposition=!1;this.activeHandoff=null;this.selectionModeValue="same_seat";this.progressHost=null;this.legendHost=null;this.paneHost=null;this.datesSummaryHost=null;this.datesCardsHost=null;this.resettingFlexibleSelection=!1;this.selectingPartialSeat=!1;this.partialSeatDates=new Map;this.markedLabels=new Set;this.holdTicker=null;this.switchingMode=!1;this.booked=!1;if(!e||typeof e!="object")throw new Error("seatlayer: options object is required");if(!e.performanceGroup)throw new Error("seatlayer: `performanceGroup` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider)throw new Error("seatlayer: Performance Group buyer access is required");if(!!e.initialHoldId!=!!e.initialOperationId)throw new Error("seatlayer: `initialHoldId` and `initialOperationId` must be supplied together");if((e.selectionMode==="per_performance"||e.allowSelectionModeSwitch)&&(!Number.isSafeInteger(e.numberOfPlacesToSelect)||(e.numberOfPlacesToSelect??0)<1))throw new Error("seatlayer: `numberOfPlacesToSelect` is required for per-performance selection");this.selectionModeValue=e.selectionMode??"same_seat",this.options=e,this.panelId=`sl-pg-panel-${e.performanceGroup}`,this.access=new se({provider:e.buyerAccessTokenProvider,token:e.buyerAccessToken,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable}),this.api=new ii(e.performanceGroup,{apiBase:e.apiBase,access:this.access,selectionMode:e.selectionMode,partySize:e.selectionMode==="per_performance"?e.numberOfPlacesToSelect:void 0,onOperationState:t=>this.operationChanged(t),onRecoveryState:t=>this.recoveryChanged(t),onAvailability:t=>this.availabilityChanged(t)}),e.initialHoldId&&e.initialOperationId&&this.api.rememberOperation(e.initialHoldId,e.initialOperationId)}get mode(){return this.selectionModeValue}get selectionMode(){return this.selectionModeValue}get descriptor(){return this.descriptorValue}get currentHold(){return this.activeHandoff}async render(){if(this.rendered)return this;let e=performance.now();if(this.rendered=!0,Ao(),await(0,Ae.loadLocale)(this.options.locale),this.options.messages&&(0,Ae.setStringOverrides)(this.options.messages),this.destroyed)return this;let t;try{t=await this.api.descriptor()}catch(i){throw ke({apiBase:this.options.apiBase??Po,event:this.options.performanceGroup,scope:"performance_group",surface:"performance_group_picker",outcome:"failure",stage:"group_descriptor",ms:performance.now()-e,load:we(this.options.performanceGroup),transport:"pubapi"}),i}return this.destroyed?this:(this.descriptorValue=t,this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(Vs(this.options.container),t),this.announce(this.copy("picker.group.checkingAvailability")),await this.mountPicker(t),this.destroyed?this:(await this.restoreOperation(),this))}buildChrome(e,t){e.replaceChildren();let i=document.createElement("div");i.className="sl-pg-root",i.dataset.performanceGroup=t.key,i.dataset.selectionMode=this.mode;let r=document.createElement("div");r.className="sl-pg-progress";let n=document.createElement("section");n.className="sl-pg-head",n.setAttribute("aria-labelledby",`sl-pg-title-${t.key}`);let o=document.createElement("h2");o.id=`sl-pg-title-${t.key}`,o.textContent=t.name;let a=document.createElement("p");a.className="sl-pg-summary",a.textContent=this.copy(this.mode==="per_performance"?"picker.group.perPerformanceSummary":"picker.group.sameSeatSummary",{count:t.performanceCount});let l=document.createElement("p");l.className="sl-pg-help",l.textContent=this.copy(this.mode==="per_performance"?"picker.group.perPerformanceMapHelp":"picker.group.sameSeatMapHelp");let c=document.createElement("details");c.className="sl-pg-dates",c.open=t.performanceCount<=3;let h=document.createElement("summary");h.textContent=this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:t.performanceCount});let d=document.createElement("div");d.innerHTML=Ri(this.performanceCards(t),this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.performanceCount})),c.append(h,d);let p=document.createElement("div");p.className="sl-pg-held-summary",p.hidden=!0,n.append(o,a,l,c,p);let m=document.createElement("div");m.className="sl-pg-legend";let f=document.createElement("div");f.className="sl-pg-pane",f.setAttribute("role","group"),f.setAttribute("aria-label",this.copy("picker.group.yourSelection")),f.hidden=!0;let b=this.mode==="per_performance"?this.performanceTabs(t):null,C=document.createElement("div");C.className="sl-pg-inner",C.id=this.panelId,C.setAttribute("aria-busy","false"),C.dataset.locked="false",this.mode==="per_performance"&&(C.setAttribute("role","tabpanel"),C.tabIndex=-1);let x=document.createElement("div");x.className="sl-pg-status",x.setAttribute("role","status"),x.setAttribute("aria-live","polite"),x.hidden=!0;let R=document.createElement("p"),y=document.createElement("button");y.type="button",y.hidden=!0,y.textContent=this.copy("picker.group.retry"),y.addEventListener("click",()=>{this.retryRecovery()}),x.append(R,y),C.appendChild(x);let E=document.createElement("div");E.className="sl-pg-live",E.setAttribute("role","status"),E.setAttribute("aria-live","polite"),i.append(r,n),b&&i.append(b),i.append(m,C,f,E),e.appendChild(i),this.root=i,this.progressHost=r,this.legendHost=m,this.paneHost=f,this.datesSummaryHost=h,this.datesCardsHost=d,this.innerHost=C,this.heldSummary=p,this.live=E,this.statusHost=x,this.statusCopy=R,this.statusAction=y,this.syncProgress(),this.syncLegend(),this.syncPane()}async mountPicker(e){let t=new Je(ps({container:this.innerHost,event:e.key,apiBase:this.options.apiBase,transport:this.api,hideEventDetails:!0,maxSelection:this.options.maxSelection,selectedObjects:this.options.selectedObjects,selectableObjects:this.options.selectableObjects,numberOfPlacesToSelect:this.options.numberOfPlacesToSelect,selectionValidators:this.options.selectionValidators,locale:this.options.locale,messages:this.options.messages,languages:this.options.languages,colorblindSafe:this.options.colorblindSafe,initialView:this.options.initialView,enable3D:this.options.enable3D,max3DSeats:this.options.max3DSeats,onBuyerViewChange:this.options.onBuyerViewChange,onAnalytics:(i,r)=>{try{this.options.onAnalytics?.(i,{...r,metricScope:"performance_group",performanceGroupKey:e.key,performanceCount:e.performanceCount,selectionMode:this.mode})}catch{}},hideBadge:this.options.hideBadge,theme:this.options.theme,holdTtlMs:this.options.holdTtlMs,initialHoldId:this.options.initialHoldId,restoreHold:this.options.restoreHold,confirmSelection:this.options.confirmSelection,seatView:this.options.seatView,onSelectionChange:i=>this.selectionChanged(i),onSelectionValidityChange:i=>this.selectionValidityChanged(i),onSelectionValid:this.options.onSelectionValid,onSelectionInvalid:this.options.onSelectionInvalid,onSelectionLimit:this.options.onSelectionLimit,onHoldChange:(i,r)=>this.holdChanged(i,r),onCheckout:(i,r)=>this.checkout(i,r),onHoldExpired:()=>{this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()},onError:this.options.onError},{performanceCount:e.performanceCount,selectionMode:this.mode,submissionState:()=>this.submissionState(),suppressPricing:!0,nights:()=>this.nights(),seatMarks:()=>this.seatMarks(),nightSummary:()=>this.nightSummary(),groupSelectionSummary:()=>this.groupSelectionSummary(),activePerformanceLabel:()=>this.activePerformanceLabel(),selectedPerformanceDates:()=>this.mode==="same_seat"&&e.inclusionMode==="flexible_dates"?us(this.includedPerformances(),e.performanceCount,this.options.locale,this.copy("picker.group.flexibleSelectedNote",{count:this.includedPerformances().length})):null,selectNight:i=>{this.switchPerformance(i)},selectionModeSwitch:this.options.allowSelectionModeSwitch&&this.mode==="same_seat"?{label:this.copy("picker.group.chooseNightByNight"),activate:()=>{this.switchSelectionMode("per_performance")}}:null,partialSeatSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{label:i=>this.copy("picker.group.selectAvailableDates",{count:i}),activate:(i,r)=>{this.selectPartialSeat(i,r)}}:null,confirmDateSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{includedEventKeys:()=>this.api.includedPerformanceKeys(),availableEventKeys:i=>this.partialSeatDates.get(i)??this.nights().map(r=>r.eventKey),label:i=>this.copy("picker.group.selectAvailableDates",{count:i}),apply:(i,r)=>this.applySeatDates(i,r,!0)}:null}));this.picker=t,await t.render(),!this.destroyed&&this.updateTabs()}performanceCards(e){return e.performances.map(t=>({eventKey:t.eventKey,name:t.name,iso:new Date(t.startsAt).toISOString(),date:Jt(t,this.options.locale),time:ei(t,this.options.locale)}))}nights(){return(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:e.name,shortDate:ti(e,this.options.locale)}))}seatMarks(){let e=this.descriptorValue?.performanceCount??0,t=this.availability,i=!!t?.salesClosed||!!t&&t.state!=="active",r=this.mode==="same_seat"&&!i?t?.partial??{}:{},n={};for(let o of this.markedLabels)n[o]=null;if(this.markedLabels.clear(),e>0)for(let[o,a]of Object.entries(r))!a.length||a.length>=e||(n[o]={kind:"partial",fraction:(e-a.length)/e,data:{blockedEventKeys:[...a]}},this.markedLabels.add(o));return n}activePerformanceLabel(){if(this.mode!=="per_performance")return null;let e=this.descriptorValue?.performances.find(r=>r.eventKey===this.activePerformanceKey);if(!e)return null;let t=ti(e,this.options.locale),i=e.name?.trim();return i&&i!==t?`${i} \xB7 ${t}`:t}nightSummary(){return this.mode!=="per_performance"?[]:(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:ti(e,this.options.locale),labels:(this.selectionsByEvent.get(e.eventKey)??[]).map(t=>t.label),active:e.eventKey===this.activePerformanceKey}))}groupSelectionSummary(){let e=this.includedPerformances();if(!e.length)return null;if(this.mode==="same_seat"){let n=this.activeHandoff?.seatLabels.length??this.picker?.getSelection().length??0;return{seats:n*e.length,performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:n?e.length:0,perPerformance:n}}let t=e.map(n=>this.selectionsByEvent.get(n.eventKey)?.length??0),i=t.filter(n=>n>0),r=i.length===t.length&&i.every(n=>n===i[0]);return{seats:t.reduce((n,o)=>n+o,0),performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:i.length,perPerformance:r&&i.length?i[0]:null}}syncProgress(){if(!this.progressHost)return;let e=!!this.activeHandoff,t=[{id:"performances",label:this.copy("picker.group.stepPerformances"),state:"done"},{id:"seats",label:this.copy("picker.group.stepSeats"),state:e?"done":"current"},{id:"review",label:this.copy("picker.group.stepReview"),state:this.booked?"done":e?"current":"upcoming"}];this.progressHost.innerHTML=Ss(t,{label:this.copy("picker.group.progressLabel"),done:this.copy("picker.group.stepDone"),current:this.copy("picker.group.stepCurrent"),upcoming:this.copy("picker.group.notStarted")})}syncLegend(){if(!this.legendHost)return;let e=this.availability,t=!!e?.salesClosed||e&&e.state!=="active";if(!e||t){this.legendHost.replaceChildren();return}this.legendHost.innerHTML=fs({available:e.freeCount>0,selected:(this.picker?.getSelection().length??0)>0,partial:Object.keys(e.partial).length>0,unavailable:e.blockedCount>0},{title:this.copy("picker.group.legendTitle"),available:this.copy("picker.group.legendAvailable"),selected:this.copy("picker.group.legendSelected"),partial:this.copy("picker.group.legendNotEveryDate"),unavailable:this.copy("picker.group.legendUnavailable")},this.categoryColor())}categoryColor(){return this.picker?.categoryLegendColor()??"#2563eb"}syncPane(){let e=this.paneHost;if(!e)return;let t=this.includedPerformances();if(this.mode!=="same_seat"||!t.length){e.hidden=!0,e.replaceChildren();return}let i=this.activeHandoff?.seatLabels??this.picker?.getSelection().map(n=>n.label)??[],r=this.heldTotal();e.hidden=!1,e.innerHTML=Cs({title:this.copy("picker.group.yourSelection"),rows:t.map(n=>({eventKey:n.eventKey,name:`${Jt(n,this.options.locale)} ${ei(n,this.options.locale)}`,labels:i})),empty:this.copy("picker.group.noSeatsChosenYet"),note:r?null:this.copy("picker.group.pricesPerPerformance"),total:r?{label:this.copy("picker.group.total"),amount:r}:null,holdStatus:this.booked?this.copy("picker.group.bookedAll",{count:t.length}):this.activeHandoff?this.copy("picker.group.heldTogether",{count:t.length,time:Es(this.activeHandoff.expiresAt-Date.now())}):null})}heldTotal(){let e=this.activeHandoff,t=this.descriptorValue;if(!e||!t)return null;let r=this.api.allocationsForHold(e.holdId).flatMap(a=>a.items);if(!r.length)return null;let n=r.reduce((a,l)=>a+l.unitPrice*(l.quantity??1),0),o=r[0]?.currency??t.currency;try{return(0,Ae.formatMoney)(n,o,void 0,this.options.locale)}catch{return`${o} ${n.toFixed(2)}`}}includedPerformances(){let e=this.descriptorValue?.performances??[];if(this.descriptorValue?.inclusionMode!=="flexible_dates")return e;let t=new Set(this.api.includedPerformanceKeys());return e.filter(i=>t.has(i.eventKey))}syncIncludedDates(){let e=this.descriptorValue;if(!e||!this.datesSummaryHost||!this.datesCardsHost)return;let t=this.includedPerformances(),i=e.inclusionMode==="flexible_dates";this.datesSummaryHost.textContent=i&&t.length<e.performanceCount?this.copy("picker.group.flexibleDatesSelected",{selected:t.length,total:e.performanceCount}):this.copy(i?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:e.performanceCount}),this.datesCardsHost.innerHTML=Ri(this.performanceCards({...e,performances:t}),this.copy(i&&t.length<e.performanceCount?"picker.group.flexibleSelectedNote":i?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.length}))}async selectPartialSeat(e,t){if(!(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)){if((this.picker?.getSelection().length??0)>0){this.announce(this.copy("picker.group.clearBeforePartial"));return}this.partialSeatDates.set(e,[...t]),await this.applySeatDates(e,t,!1)}}async applySeatDates(e,t,i){if(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)return!1;let r=this.api.includedPerformanceKeys();if(r.length===t.length&&r.every(n=>t.includes(n)))return!0;this.selectingPartialSeat=!0;try{if(this.api.setIncludedEventKeys(t),this.syncIncludedDates(),await this.picker?.refreshAvailability(),!(i?this.picker?.selectObjectsWithoutConfirmation([e])??[]:this.picker?.selectObjects([e])??[]).length)throw new Error("performance_group_partial_seat_unavailable");return this.announce(this.copy("picker.group.selectedAvailableDates",{count:t.length})),this.syncPane(),this.syncLegend(),!0}catch(n){return r.length&&(this.api.setIncludedEventKeys(r),this.syncIncludedDates(),await this.picker?.refreshAvailability().catch(()=>{})),this.options.onError?.(n),!1}finally{this.selectingPartialSeat=!1}}syncHoldTicker(){this.booked||(this.activeHandoff&&!this.holdTicker?this.holdTicker=setInterval(()=>this.syncPane(),1e3):!this.activeHandoff&&this.holdTicker&&(clearInterval(this.holdTicker),this.holdTicker=null))}async switchSelectionMode(e){if(!(this.destroyed||this.switchingMode||e===this.mode)&&!(this.activeHandoff||this.holdBlocked())){this.switchingMode=!0;try{this.api.setSelectionMode(e,this.options.numberOfPlacesToSelect),this.selectionModeValue=e,this.picker?.destroy(),this.picker=null,this.selectionsByEvent.clear(),this.validByEvent.clear(),this.markedLabels.clear(),this.availability=null;let t=this.descriptorValue;if(this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(Vs(this.options.container),t),await this.mountPicker(t),this.destroyed)return;this.announce(this.copy("picker.group.nightByNightStarted")),this.options.onSelectionModeChange?.(e)}catch(t){if(t instanceof K)return;this.options.onError?.(t)}finally{this.switchingMode=!1}}}async release(){await this.picker?.release()}close(){this.destroy()}destroy(){if(this.destroyed)return;this.destroyed=!0,this.api.destroy(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.picker;this.root?.setAttribute("hidden","");let t=()=>{e?.destroy(),this.access.clear(),this.root?.remove(),this.root=null,this.picker=null,this.innerHost=null,this.tabsHost=null,this.statusHost=null,this.statusCopy=null,this.statusAction=null,this.live=null};e?.getCurrentHold()&&!this.continued?e.release().catch(()=>{}).finally(t):t()}copy(e,t){let i=this.options.messages?.[e];return i!==void 0?t?i.replace(/\{(\w+)\}/g,(r,n)=>String(t[n]??`{${n}}`)):i:(0,Ae.t)(e,t)}performanceTabs(e){let t=document.createElement("div");t.className="sl-pg-tabsbar";let i=document.createElement("button");i.type="button",i.className="sl-pg-step",i.dataset.step="previous",i.setAttribute("aria-label",this.copy("picker.group.previousPerformance")),i.textContent="\u2039",i.addEventListener("click",()=>{this.stepPerformance(-1)});let r=document.createElement("button");r.type="button",r.className="sl-pg-step",r.dataset.step="next",r.setAttribute("aria-label",this.copy("picker.group.nextPerformance")),r.textContent="\u203A",r.addEventListener("click",()=>{this.stepPerformance(1)});let n=document.createElement("div");return n.className="sl-pg-tabs",n.setAttribute("role","tablist"),n.setAttribute("aria-label",this.copy("picker.group.performances")),e.performances.forEach((o,a)=>{let l=document.createElement("button");l.type="button",l.className="sl-pg-tab",l.id=`sl-pg-tab-${e.key}-${o.eventKey}`,l.dataset.eventKey=o.eventKey,l.dataset.state="not-started",l.setAttribute("role","tab"),l.setAttribute("aria-selected",String(a===0)),l.setAttribute("aria-controls",this.panelId),l.tabIndex=a===0?0:-1;let c=document.createElement("span");c.className="sl-pg-tab-name",c.textContent=o.name;let h=document.createElement("span");h.className="sl-pg-tab-state",h.textContent=this.copy("picker.group.stillNeedsSeat");let d=document.createElement("span");d.className="sl-pg-tab-badge",d.textContent=this.copy("picker.group.chosenOfTotal",{chosen:0,total:this.options.numberOfPlacesToSelect??1}),l.append(c,d,h),l.addEventListener("click",()=>{this.switchPerformance(o.eventKey)}),l.addEventListener("keydown",p=>this.tabKeydown(p)),n.appendChild(l)}),t.append(i,n,r),this.tabsHost=n,this.prevButton=i,this.nextButton=r,t}tabButtons(){return[...this.tabsHost?.querySelectorAll(".sl-pg-tab")??[]]}tabKeydown(e){let t=this.tabButtons(),i=t.findIndex(a=>a===e.target);if(i<0)return;let r=getComputedStyle(this.tabsHost??document.body).direction==="rtl",n=-1;switch(e.key){case"ArrowRight":n=i+(r?-1:1);break;case"ArrowLeft":n=i+(r?1:-1);break;case"ArrowDown":n=i+1;break;case"ArrowUp":n=i-1;break;case"Home":n=0;break;case"End":n=t.length-1;break;default:return}if(n<0||n>=t.length)return;e.preventDefault();let o=t[n];o.focus({preventScroll:!0}),o.disabled||this.switchPerformance(o.dataset.eventKey)}stepPerformance(e){let t=this.tabButtons(),i=t.findIndex(n=>n.dataset.eventKey===this.activePerformanceKey),r=t[i+e];!r||r.disabled||(r.focus({preventScroll:!0}),this.switchPerformance(r.dataset.eventKey))}submissionState(){let e=this.descriptorValue?.performances??[];if(this.mode!=="per_performance"){let r=!this.holdBlocked();return{complete:e.length,total:e.length,ready:r}}let t=this.options.numberOfPlacesToSelect,i=e.filter(r=>this.selectionsByEvent.get(r.eventKey)?.length===t&&this.validByEvent.get(r.eventKey)!==!1).length;return{complete:i,total:e.length,ready:i===e.length&&!this.holdBlocked()}}holdBlocked(){return this.operationPending||this.recovery.kind!=="idle"||!!this.availability?.salesClosed}selectionChanged(e){if(this.mode!=="per_performance"){this.options.onSelectionChange?.(e),this.syncPane(),this.syncLegend(),!e.length&&!this.activeHandoff&&!this.resettingFlexibleSelection&&!this.selectingPartialSeat&&this.descriptorValue?.inclusionMode==="flexible_dates"&&this.api.includedPerformanceKeys().length<this.descriptorValue.performanceCount&&(this.resettingFlexibleSelection=!0,this.api.setIncludedEventKeys(this.descriptorValue.performances.map(i=>i.eventKey)),this.syncIncludedDates(),this.picker?.refreshAvailability().catch(i=>this.options.onError?.(i)).finally(()=>{this.resettingFlexibleSelection=!1}));return}if(this.refreshingComposition||this.switchingPerformance||!this.activePerformanceKey)return;let t=e.map(i=>({...i}));this.selectionsByEvent.set(this.activePerformanceKey,t),this.api.setPerformanceSelections(this.activePerformanceKey,t.map(i=>({label:i.label}))),t.length!==this.options.numberOfPlacesToSelect?this.validByEvent.set(this.activePerformanceKey,!1):this.validByEvent.has(this.activePerformanceKey)||this.validByEvent.set(this.activePerformanceKey,!0),this.updateTabs(),this.options.onSelectionChange?.(e),this.refreshComposition(),this.syncLegend()}selectionValidityChanged(e){if(this.mode==="per_performance"&&!this.switchingPerformance&&this.activePerformanceKey){let t=this.validByEvent.get(this.activePerformanceKey);this.validByEvent.set(this.activePerformanceKey,e.isValid),this.updateTabs(),!this.refreshingComposition&&t!==e.isValid&&this.refreshComposition()}this.options.onSelectionValidityChange?.(e)}refreshComposition(){if(this.refreshingComposition||!this.picker)return;let e=this.submissionState();this.refreshingComposition=!0;try{this.picker.refreshPerformanceGroupComposition();let t=this.submissionState();(e.complete!==t.complete||e.ready!==t.ready)&&this.picker.refreshPerformanceGroupComposition()}finally{this.refreshingComposition=!1}}tabState(e){let t=this.options.numberOfPlacesToSelect??1,i=(this.selectionsByEvent.get(e)??[]).map(n=>n.label),r=this.copy("picker.group.chosenOfTotal",{chosen:i.length,total:t});return i.length===0?{key:"not-started",label:this.copy("picker.group.stillNeedsSeat"),badge:r}:i.length===t&&this.validByEvent.get(e)!==!1?{key:"complete",label:this.copy("picker.group.completeWithSeats",{seats:i.join(", ")}),badge:r}:i.length===t?{key:"needs-attention",label:this.copy("picker.group.needsAttention"),badge:r}:{key:"in-progress",label:this.copy("picker.group.needsMoreSeats",{count:t-i.length}),badge:r}}updateTabs(){let e=this.tabButtons(),t=this.switchingPerformance||this.operationPending||this.recovery.kind!=="idle"||!!this.activeHandoff;e.forEach(r=>{let n=r.dataset.eventKey,o=this.tabState(n),a=n===this.activePerformanceKey;r.dataset.state=o.key,r.disabled=t,r.setAttribute("aria-selected",String(a)),r.tabIndex=a?0:-1;let l=r.querySelector(".sl-pg-tab-state");l&&(l.textContent=o.label);let c=r.querySelector(".sl-pg-tab-badge");c&&(c.textContent=o.badge);let h=r.querySelector(".sl-pg-tab-name")?.textContent??n;r.setAttribute("aria-label",`${h}: ${o.badge} \xB7 ${o.label}`),a&&this.innerHost?.setAttribute("aria-labelledby",r.id)});let i=e.findIndex(r=>r.dataset.eventKey===this.activePerformanceKey);this.prevButton&&(this.prevButton.disabled=t||i<=0),this.nextButton&&(this.nextButton.disabled=t||i<0||i>=e.length-1)}async switchPerformance(e){if(this.mode!=="per_performance"||this.switchingPerformance||this.holdBlocked()||this.activeHandoff||e===this.activePerformanceKey||!this.picker)return;this.activePerformanceKey&&this.selectionChanged(this.picker.getSelection());let t=this.selectionsByEvent.get(e)?.map(i=>i.label)??[];this.switchingPerformance=!0,this.activePerformanceKey=e,this.updateTabs(),this.setInteractionLocked(!0);try{this.picker.clearSelection(),this.api.setActivePerformance(e),await this.picker.refreshAvailability();let i=this.picker.selectObjects(t);this.switchingPerformance=!1,this.selectionChanged(i),i.length!==t.length&&this.validByEvent.set(e,!1),this.options.onSelectionChange?.(i);let r=this.descriptorValue?.performances.find(n=>n.eventKey===e);r&&this.announce(this.copy("picker.group.performanceOpened",{performance:r.name}))}catch(i){this.options.onError?.(i)}finally{this.switchingPerformance=!1,!this.operationPending&&this.recovery.kind==="idle"&&this.setInteractionLocked(!1),this.updateTabs(),this.picker.refreshPerformanceGroupComposition()}}setInteractionLocked(e){let t=this.innerHost;t&&(t.dataset.locked=String(e),t.setAttribute("aria-busy",String(e)),t.setAttribute("aria-disabled",String(e)))}announce(e){this.live&&(this.live.textContent=e)}showStatus(e,t,i={}){this.statusHost&&this.statusCopy&&this.statusAction&&(this.statusCopy.textContent=t,this.statusHost.hidden=!t,this.statusAction.hidden=!i.retry),this.announce(t),this.options.onStatusChange?.({kind:e,message:t,...i.reference?{reference:i.reference}:{}})}clearStatus(){this.statusHost&&(this.statusHost.hidden=!0),this.statusAction&&(this.statusAction.hidden=!0),this.options.onStatusChange?.({kind:"idle",message:""})}operationChanged(e){if(this.destroyed)return;let t=e.state==="preparing"||e.state==="commit_pending"||e.state==="abort_pending"||e.state==="expire_pending";if(this.operationPending=t,this.setInteractionLocked(t||this.recovery.kind!=="idle"),this.updateTabs(),t){this.showStatus("pending",this.copy(e.state==="commit_pending"?"picker.group.commitPending":e.state==="abort_pending"||e.state==="expire_pending"?"picker.group.abortPending":"picker.group.securing"));return}if(e.state==="booked"){this.bookingSettled();return}if(e.state==="expired"||e.state==="aborted"){this.activeHandoff&&this.holdLost();return}if(e.state==="committed"){this.clearStatus(),this.announce(this.copy("picker.group.secured")),queueMicrotask(()=>this.innerHost?.querySelector('[data-ref="cta"]')?.focus({preventScroll:!0}));return}e.decision==="abort"&&this.recovery.kind==="idle"&&(this.clearStatus(),this.announce(this.copy("picker.group.notSecured")))}bookingSettled(){if(this.booked)return;this.booked=!0,this.root&&(this.root.dataset.booking="booked"),this.clearStatus(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.activeHandoff?{...this.activeHandoff,bookingState:"booked"}:null;e&&(this.activeHandoff=e),this.syncProgress(),this.syncPane(),this.updateTabs(),this.picker?.notifyGroupSettled("booked"),this.announce(this.copy("picker.group.bookedAll",{count:this.descriptorValue?.performanceCount??0})),e&&this.options.onBooked?.(e)}holdLost(){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.picker?.notifyGroupSettled("lost"),this.announce(this.copy("picker.group.notSecured")),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()}recoveryChanged(e){if(!this.destroyed){if(this.recovery=e,this.setInteractionLocked(this.operationPending||e.kind!=="idle"),this.updateTabs(),this.refreshComposition(),e.kind==="idle"){this.operationPending||this.clearStatus();return}if(e.kind==="pending"){this.showStatus("pending",e.longRunning?this.copy("picker.group.longRunning",{reference:e.reference}):this.copy("picker.group.outcomeUnknown"),{reference:e.reference});return}this.showStatus("recovery_failed",this.copy("picker.group.longRunning",{reference:e.reference}),{retry:e.retryable,reference:e.reference}),this.setInteractionLocked(!1)}}async retryRecovery(){if(!(this.destroyed||this.recovery.kind!=="failed"||!this.recovery.retryable))try{await this.api.retryRecovery()}catch(e){if(e instanceof K)return;this.options.onError?.(e)}}async restoreOperation(){try{let e=await this.api.restoreOperation();e&&!this.destroyed&&await this.picker?.adoptRestoredHold(e.holdId)}catch(e){if(e instanceof K)return;this.options.onError?.(e)}}availabilityChanged(e){if(this.destroyed)return;let t=this.availability;if(this.availability=e,e.revisionChanged){this.showStatus("revision_changed",this.copy("picker.group.revisionChanged")),this.reloadDescriptor(e.revision);return}e.salesClosed?this.showStatus("sales_closed",this.copy("picker.group.salesClosed")):t?.salesClosed&&this.clearStatus(),this.updateTabs(),this.refreshComposition(),this.syncLegend()}async reloadDescriptor(e){this.api.acceptRevision(e);try{let t=await this.api.descriptor();if(this.destroyed)return;this.descriptorValue=t,await this.picker?.refreshAvailability()}catch(t){if(t instanceof K)return;this.options.onError?.(t)}}handoff(e,t){let i=this.descriptorValue,r=this.api.operationIdForHold(e.holdId);if(!i||!r)throw new Error("seatlayer: Performance Group hold identity is unavailable");let n=this.api.allocationsForHold(e.holdId);return{operationId:r,holdId:e.holdId,expiresAt:e.expiresAt,performanceGroup:i,selectionMode:this.mode,performanceKeys:n.map(o=>o.eventKey),bookingState:this.booked?"booked":"held",seatLabels:t.map(o=>o.label),...this.mode==="per_performance"?{allocations:n.map(o=>({eventKey:o.eventKey,seatLabels:o.items.map(a=>a.label)}))}:{}}}renderHeldAllocations(e){if(!(!this.heldSummary||this.mode!=="per_performance")){this.heldSummary.replaceChildren();for(let t of e){let i=this.descriptorValue?.performances.find(o=>o.eventKey===t.eventKey),r=document.createElement("p"),n=document.createElement("strong");n.textContent=i?.name??t.eventKey,r.append(n,document.createTextNode(t.items.map(o=>o.label).join(", "))),this.heldSummary.appendChild(r)}this.heldSummary.hidden=e.length===0}}resetPerPerformanceSelection(){this.mode==="per_performance"&&(this.selectionsByEvent.clear(),this.validByEvent.clear(),this.heldSummary?.replaceChildren(),this.heldSummary&&(this.heldSummary.hidden=!0),this.updateTabs(),this.picker?.refreshPerformanceGroupComposition())}holdChanged(e,t){if(!e){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.options.onHoldChange?.(null);return}let i=this.handoff(e,t),r=this.activeHandoff?.holdId!==i.holdId;this.activeHandoff=i,this.renderHeldAllocations(this.api.allocationsForHold(e.holdId)),this.updateTabs(),this.api.watchSettlement(e.holdId),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),r&&this.options.onHold?.(i),this.options.onHoldChange?.(i)}checkout(e,t){let i=this.handoff(e,t);this.continued=!0,this.activeHandoff=i,this.options.onCheckout?.(i)}};var Mo="https://api.seatlayer.io",Lo=6e4,Ho=5e3,oe=class extends Error{constructor(t,i){super(`season_request_failed:${t}`);this.code=t;this.status=i;this.name="SeasonApiError"}},vt=class extends Error{constructor(t){super(`season_operation_timeout:${t}`);this.operationId=t;this.name="SeasonRecoveryTimeoutError"}};function Ro(s,e){let t=Number(s.headers.get("Retry-After")),i=Number.isFinite(t)&&t>=0?t:e.retryAfterSeconds;return Math.max(0,Math.min(Ho,i*1e3))}function Oo(s,e){return e?.aborted?Promise.reject(e.reason??new DOMException("Aborted","AbortError")):new Promise((t,i)=>{let r=setTimeout(t,s);e?.addEventListener("abort",()=>{clearTimeout(r),i(e.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function Io(s){if(!s||typeof s!="object")return"unknown";let e=s;return typeof e.code=="string"?e.code:typeof e.error=="string"?e.error:"unknown"}function Bi(s){if(!s||typeof s!="object")throw new oe("invalid_operation_response",502);let e=s,t=JSON.stringify(e);if(!e.operationId||!e.holdId||!Array.isArray(e.allocations)||t.includes("shc_")||t.includes("childHoldId")||t.includes("child_hold_id"))throw new oe("unsafe_operation_response",502);return e}function Fs(s,e){return{seasonKey:s.key,planActivationId:s.planActivationId,operationId:e.operationId,holdId:e.holdId,expiresAt:e.expiresAt,policy:e.policy,state:e.state,allocations:e.allocations.map(({eventId:t,state:i})=>({eventKey:t,state:i}))}}var yt,xt,Le,wt,kt,ce,Me,si=class{constructor(e,t){$(this,ce);$(this,yt);$(this,xt);$(this,Le);$(this,wt);$(this,kt);P(this,yt,e),P(this,xt,(t.apiBase??Mo).replace(/\/$/,"")),P(this,Le,t.access),P(this,wt,t.fetch??globalThis.fetch.bind(globalThis)),P(this,kt,t.recoveryTimeoutMs??Lo)}async descriptor(){let{body:e}=await A(this,ce,Me).call(this,"GET","");return e.season}async availability(){let{body:e}=await A(this,ce,Me).call(this,"GET","/availability"),t=Object.values(e.seats??{});return{...e,freeCount:t.filter(i=>i==="free").length,blockedCount:t.filter(i=>i!=="free").length}}async hold(e,t){let{body:i,response:r}=await A(this,ce,Me).call(this,"POST","/holds",{operationId:t,labels:[...e]});return{operation:Bi(i.operation),response:r}}async operation(e){let{body:t,response:i}=await A(this,ce,Me).call(this,"GET",`/operations/${encodeURIComponent(e)}`);return{operation:Bi(t.operation),response:i}}async release(e,t){let{body:i,response:r}=await A(this,ce,Me).call(this,"POST",`/holds/${encodeURIComponent(e)}/release`,{releaseActionId:t});return{operation:Bi(i.operation),response:r}}async renewalIntent(e){let{body:t}=await A(this,ce,Me).call(this,"POST","/renewal-intents",{offerId:e}),i=t.intent;if(!i||i.offerId!==e||i.state!=="intent_received"||!i.intentId||!Number.isFinite(i.receivedAt))throw new oe("invalid_renewal_intent_response",502);return i}async waitForTerminal(e,t,i){let r=Date.now(),n=t??await this.operation(e);for(;n.operation.state==="preparing"||n.operation.state==="commit_pending"||n.operation.state==="abort_pending";){if(Date.now()-r>=w(this,kt))throw new vt(e);await Oo(Ro(n.response,n.operation),i),n=await this.operation(e)}return n.operation}destroy(){w(this,Le).clear()}};yt=new WeakMap,xt=new WeakMap,Le=new WeakMap,wt=new WeakMap,kt=new WeakMap,ce=new WeakSet,Me=async function(e,t,i,r=!0){let n=await w(this,Le).authorization();if(!n)throw new ie({reason:"no_token",retryable:!1});let o=await w(this,wt).call(this,`${w(this,xt)}/pub/seasons/${encodeURIComponent(w(this,yt))}${t}`,{method:e,headers:{Authorization:n,...i===void 0?{}:{"Content-Type":"application/json"}},body:i===void 0?void 0:JSON.stringify(i)}),a=await o.json().catch(()=>null);if(!o.ok){let l=Io(a);if(r&&await w(this,Le).handleFailure(o.status,l))return A(this,ce,Me).call(this,e,t,i,!1);let c=w(this,Le).unavailable;throw c?new ie(c):new oe(l,o.status)}if(a===null)throw new oe("invalid_json_response",502);return{body:a,response:o}};var js="seatlayer-season-picker-style";function _o(){if(document.getElementById(js))return;let s=document.createElement("style");s.id=js,s.textContent=`
1721
1803
  .sl-season-root{box-sizing:border-box;display:grid;gap:12px;min-width:0;max-width:100%;overflow-wrap:anywhere;color:#18202b;font-family:Inter,system-ui,sans-serif}
1722
1804
  .sl-season-card{box-sizing:border-box;display:grid;gap:8px;min-width:0;padding:16px;border:1px solid #dde3ea;border-radius:14px;background:#fff}
1723
1805
  .sl-season-card h2{margin:0;font:700 20px/1.25 inherit}.sl-season-card p{margin:0;color:#627081;font-size:14px}
@@ -1726,4 +1808,4 @@
1726
1808
  .sl-season-status[data-kind=ready]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
1727
1809
  .sl-season-root[data-busy=true]{cursor:progress}.sl-season-root[data-busy=true] .sl-season-card{opacity:.88}
1728
1810
  @media(max-width:360px){.sl-season-card{padding:12px}.sl-season-card h2{font-size:18px}}
1729
- `,document.head.appendChild(r)}function bo(r){let e=typeof r=="string"?document.querySelector(r):r;if(!e)throw new Error("seatlayer: Season picker container was not found");return e}function vo(r,e){if(r.startsAt===null)return r.name;try{let t=new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short",...e?{timeZone:e}:{}}).format(new Date(r.startsAt));return`${r.name} \u2014 ${t}`}catch{return r.name}}var ee,Re,vt,te,Oe,me,Ie,fe,Pe,Ae,Ze,O,Ar,Lr,Nt,J,Xe,wi,bt,Vt=class{constructor(e){$(this,O);$(this,ee);$(this,Re);$(this,vt);$(this,te);$(this,Oe,new AbortController);$(this,me,null);$(this,Ie,null);$(this,fe,null);$(this,Pe,null);$(this,Ae,null);$(this,Ze,!1);if(!e?.season)throw new Error("seatlayer: `season` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider)throw new Error("seatlayer: Season buyer access is required");if("event"in e||"performanceGroup"in e)throw new Error("seatlayer: SeasonPicker is not SeatPicker or PerformanceGroupPicker");A(this,ee,e),A(this,Re,bo(e.container)),A(this,vt,new se({token:e.buyerAccessToken,provider:e.buyerAccessTokenProvider,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable})),A(this,te,new jt(e.season,{apiBase:e.apiBase,access:y(this,vt),fetch:e.fetch,recoveryTimeoutMs:e.recoveryTimeoutMs}))}async render(){L(this,O,wi).call(this),go(),L(this,O,Ar).call(this),L(this,O,J).call(this,{kind:"loading",message:"Loading Season availability."},!0);try{let[e,t]=await Promise.all([y(this,te).descriptor(),y(this,te).availability()]);return A(this,me,e),A(this,Ie,t),L(this,O,Lr).call(this),L(this,O,J).call(this,{kind:"ready",message:`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every included occurrence.`}),y(this,ee).initialOperationId&&await this.restoreOperation(y(this,ee).initialOperationId),this}catch(e){throw L(this,O,Xe).call(this,e),e}}async holdSameSeat(e,t){if(L(this,O,bt).call(this),!t.startsWith("sop_"))throw new Error("seatlayer: caller-stable Season operation id is required");if(!e.length)throw new Error("seatlayer: select at least one seat");L(this,O,J).call(this,{kind:"pending",message:"Confirming this selection across every occurrence.",operationId:t},!0);try{let i=await y(this,te).hold(e,t),s=await y(this,te).waitForTerminal(t,i,y(this,Oe).signal);return L(this,O,Nt).call(this,s)}catch(i){throw L(this,O,Xe).call(this,i,t),i}}async restoreOperation(e){L(this,O,bt).call(this),L(this,O,J).call(this,{kind:"pending",message:"Restoring your Season selection.",operationId:e},!0);try{let t=await y(this,te).waitForTerminal(e,void 0,y(this,Oe).signal);return t.state==="aborted"||t.state==="expired"?(A(this,fe,null),y(this,ee).onHoldChange?.(null),L(this,O,J).call(this,{kind:"released",message:"The previous Season selection is no longer held.",operationId:e}),null):L(this,O,Nt).call(this,t)}catch(t){throw L(this,O,Xe).call(this,t,e),t}}async release(e){L(this,O,bt).call(this);let t=y(this,fe)?.operationId;if(t){if(!e)throw new Error("seatlayer: caller-stable release action id is required");L(this,O,J).call(this,{kind:"pending",message:"Releasing the Season selection.",operationId:t},!0);try{let i=await y(this,te).release(t,e),s=await y(this,te).waitForTerminal(t,i,y(this,Oe).signal);if(s.state==="partial_terminal"){L(this,O,Nt).call(this,s);return}A(this,fe,null),y(this,ee).onHoldChange?.(null),L(this,O,J).call(this,{kind:"released",message:"The Season selection was released.",operationId:t})}catch(i){throw L(this,O,Xe).call(this,i,t),i}}}async createRenewalIntent(e){if(L(this,O,bt).call(this),!e.startsWith("sro_"))throw new Error("seatlayer: Season renewal offer id is required");L(this,O,J).call(this,{kind:"pending",message:"Recording renewal intent. No purchase is made in the browser."},!0);try{let t=await y(this,te).renewalIntent(e);return L(this,O,J).call(this,{kind:"renewal_intent",message:"Renewal intent recorded. Your ticketing platform will confirm price, payment, and the final renewal."}),y(this,ee).onRenewalIntent?.(t),t}catch(t){throw L(this,O,Xe).call(this,t),t}}getDescriptor(){return y(this,me)}getAvailability(){return y(this,Ie)}getHandoff(){return y(this,fe)}destroy(){y(this,Ze)||(A(this,Ze,!0),y(this,Oe).abort(),y(this,te).destroy(),y(this,Re).replaceChildren(),A(this,Pe,null),A(this,Ae,null),A(this,me,null),A(this,Ie,null),A(this,fe,null))}};ee=new WeakMap,Re=new WeakMap,vt=new WeakMap,te=new WeakMap,Oe=new WeakMap,me=new WeakMap,Ie=new WeakMap,fe=new WeakMap,Pe=new WeakMap,Ae=new WeakMap,Ze=new WeakMap,O=new WeakSet,Ar=function(){y(this,Re).replaceChildren();let e=document.createElement("section");e.className="sl-season-root",e.setAttribute("aria-label","Season ticket selection");let t=document.createElement("div");t.className="sl-season-card";let i=document.createElement("h2");i.textContent="Season";let s=document.createElement("p");s.className="sl-season-summary",s.textContent="Every included occurrence is part of this selection.";let n=document.createElement("p");n.className="sl-season-status",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),t.append(i,s),e.append(t,n),y(this,Re).append(e),A(this,Pe,e),A(this,Ae,n)},Lr=function(){let e=y(this,me),t=y(this,Ie),i=y(this,Pe).querySelector(".sl-season-card");i.replaceChildren();let s=document.createElement("h2");s.textContent=e.name;let n=document.createElement("p");n.className="sl-season-summary",n.textContent=`One fixed plan includes all ${e.occurrenceCount} occurrences.`;let o=document.createElement("details"),a=document.createElement("summary");a.textContent=`All ${e.occurrenceCount} occurrences included`;let l=document.createElement("ol");l.className="sl-season-list";for(let h of e.occurrences){let p=document.createElement("li");p.textContent=vo(h,e.timezone),l.append(p)}o.append(a,l);let c=document.createElement("p");c.className="sl-season-availability",c.textContent=`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every occurrence`,i.append(s,n,o,c)},Nt=function(e){let t=Tr(y(this,me),e);return A(this,fe,t),y(this,ee).onHoldChange?.(t),e.state==="committed"||e.state==="booked"?(L(this,O,J).call(this,{kind:"held",message:"Your seats are held for every included occurrence.",operationId:e.operationId}),y(this,ee).onHold?.(t),y(this,ee).onContinue?.(t)):e.state==="partial_terminal"?L(this,O,J).call(this,{kind:"partial_terminal",message:"This Season selection needs organizer review. Do not try another selection.",operationId:e.operationId}):L(this,O,J).call(this,{kind:"failed",message:"The Season selection could not be completed.",operationId:e.operationId}),t},J=function(e,t=!1){y(this,Ae)&&(y(this,Ae).textContent=e.message,y(this,Ae).dataset.kind=e.kind),y(this,Pe)&&(y(this,Pe).dataset.busy=String(t)),y(this,ee).onStatusChange?.(e)},Xe=function(e,t){let i=e instanceof ne?`Season selection unavailable (${e.code}).`:"Season selection could not be completed.";L(this,O,J).call(this,{kind:"failed",message:i,operationId:t}),y(this,ee).onError?.(e)},wi=function(){if(y(this,Ze))throw new Error("seatlayer: SeasonPicker was destroyed")},bt=function(){if(L(this,O,wi).call(this),!y(this,me))throw new Error("seatlayer: render SeasonPicker before using it")};function Mr(r,e={}){let t=e.origin??"";if(!t)try{t=new URL(r.src,window.location.href).origin}catch{t=""}let i=!1,s=null,n=null,o=null,a="",l=null,c=()=>{if(i)return;i=!0,s=r.getAttribute("style"),Object.assign(r.style,{position:"fixed",inset:"0",width:"100vw",height:"100vh",margin:"0",border:"0",zIndex:"2147483000",background:"#101625"});let d=document.documentElement;n=d.style.overflow,d.style.overflow="hidden",document.body&&(o=document.body.style.overflow,document.body.style.overflow="hidden"),l=m=>{m.key==="Escape"&&h()},window.addEventListener("keydown",l)},h=()=>{i&&(i=!1,s===null?r.removeAttribute("style"):r.setAttribute("style",s),s=null,a&&(r.style.height=a),n!==null&&(document.documentElement.style.overflow=n,n=null),o!==null&&document.body&&(document.body.style.overflow=o,o=null),l&&(window.removeEventListener("keydown",l),l=null))},p=d=>{if(d.source!==r.contentWindow||t&&d.origin!==t||!d.data||typeof d.data!="object")return;let m=d.data;if(m.type==="seatlayer:height"){typeof m.px=="number"&&Number.isFinite(m.px)&&m.px>0&&(a=`${Math.round(m.px)}px`,i||(r.style.height=a));return}m.type==="seatlayer:fullscreen"&&(m.on===!0?c():m.on===!1&&h())};return window.addEventListener("message",p),()=>{window.removeEventListener("message",p),h()}}0&&(module.exports={ApiError,BuyerAccessContext,BuyerAccessUnavailableError,BuyerRealtimeClient,EmbeddedDesigner,PerformanceGroupDestroyedError,PerformanceGroupPicker,SEATING_CHART_CALLBACK_PROPS,SEATING_CHART_HANDLE_METHODS,SEATING_CHART_IDENTITY_PROPS,SEATING_CHART_VALUE_PROPS,SeasonApiError,SeasonPicker,SeasonRecoveryTimeoutError,SeatPicker,SeatingChart,attachPickerFrame,bindSeatingChartHandle,buildSeatingChartOptions,createBuyerAccessContext,createControllerSink,parseTicketOfferAvailability,shortOperationReference,ticketOfferPrices});
1811
+ `,document.head.appendChild(s)}function Bo(s){let e=typeof s=="string"?document.querySelector(s):s;if(!e)throw new Error("seatlayer: Season picker container was not found");return e}function Do(s,e){if(s.startsAt===null)return s.name;try{let t=new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short",...e?{timeZone:e}:{}}).format(new Date(s.startsAt));return`${s.name} \u2014 ${t}`}catch{return s.name}}var ee,_e,Ct,te,Be,ge,De,be,He,Re,rt,I,Ns,Gs,ni,J,it,Di,St,oi=class{constructor(e){$(this,I);$(this,ee);$(this,_e);$(this,Ct);$(this,te);$(this,Be,new AbortController);$(this,ge,null);$(this,De,null);$(this,be,null);$(this,He,null);$(this,Re,null);$(this,rt,!1);if(!e?.season)throw new Error("seatlayer: `season` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider)throw new Error("seatlayer: Season buyer access is required");if("event"in e||"performanceGroup"in e)throw new Error("seatlayer: SeasonPicker is not SeatPicker or PerformanceGroupPicker");P(this,ee,e),P(this,_e,Bo(e.container)),P(this,Ct,new se({token:e.buyerAccessToken,provider:e.buyerAccessTokenProvider,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable})),P(this,te,new si(e.season,{apiBase:e.apiBase,access:w(this,Ct),fetch:e.fetch,recoveryTimeoutMs:e.recoveryTimeoutMs}))}async render(){A(this,I,Di).call(this),_o(),A(this,I,Ns).call(this),A(this,I,J).call(this,{kind:"loading",message:"Loading Season availability."},!0);try{let[e,t]=await Promise.all([w(this,te).descriptor(),w(this,te).availability()]);return P(this,ge,e),P(this,De,t),A(this,I,Gs).call(this),A(this,I,J).call(this,{kind:"ready",message:`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every included occurrence.`}),w(this,ee).initialOperationId&&await this.restoreOperation(w(this,ee).initialOperationId),this}catch(e){throw A(this,I,it).call(this,e),e}}async holdSameSeat(e,t){if(A(this,I,St).call(this),!t.startsWith("sop_"))throw new Error("seatlayer: caller-stable Season operation id is required");if(!e.length)throw new Error("seatlayer: select at least one seat");A(this,I,J).call(this,{kind:"pending",message:"Confirming this selection across every occurrence.",operationId:t},!0);try{let i=await w(this,te).hold(e,t),r=await w(this,te).waitForTerminal(t,i,w(this,Be).signal);return A(this,I,ni).call(this,r)}catch(i){throw A(this,I,it).call(this,i,t),i}}async restoreOperation(e){A(this,I,St).call(this),A(this,I,J).call(this,{kind:"pending",message:"Restoring your Season selection.",operationId:e},!0);try{let t=await w(this,te).waitForTerminal(e,void 0,w(this,Be).signal);return t.state==="aborted"||t.state==="expired"?(P(this,be,null),w(this,ee).onHoldChange?.(null),A(this,I,J).call(this,{kind:"released",message:"The previous Season selection is no longer held.",operationId:e}),null):A(this,I,ni).call(this,t)}catch(t){throw A(this,I,it).call(this,t,e),t}}async release(e){A(this,I,St).call(this);let t=w(this,be)?.operationId;if(t){if(!e)throw new Error("seatlayer: caller-stable release action id is required");A(this,I,J).call(this,{kind:"pending",message:"Releasing the Season selection.",operationId:t},!0);try{let i=await w(this,te).release(t,e),r=await w(this,te).waitForTerminal(t,i,w(this,Be).signal);if(r.state==="partial_terminal"){A(this,I,ni).call(this,r);return}P(this,be,null),w(this,ee).onHoldChange?.(null),A(this,I,J).call(this,{kind:"released",message:"The Season selection was released.",operationId:t})}catch(i){throw A(this,I,it).call(this,i,t),i}}}async createRenewalIntent(e){if(A(this,I,St).call(this),!e.startsWith("sro_"))throw new Error("seatlayer: Season renewal offer id is required");A(this,I,J).call(this,{kind:"pending",message:"Recording renewal intent. No purchase is made in the browser."},!0);try{let t=await w(this,te).renewalIntent(e);return A(this,I,J).call(this,{kind:"renewal_intent",message:"Renewal intent recorded. Your ticketing platform will confirm price, payment, and the final renewal."}),w(this,ee).onRenewalIntent?.(t),t}catch(t){throw A(this,I,it).call(this,t),t}}getDescriptor(){return w(this,ge)}getAvailability(){return w(this,De)}getHandoff(){return w(this,be)}destroy(){w(this,rt)||(P(this,rt,!0),w(this,Be).abort(),w(this,te).destroy(),w(this,_e).replaceChildren(),P(this,He,null),P(this,Re,null),P(this,ge,null),P(this,De,null),P(this,be,null))}};ee=new WeakMap,_e=new WeakMap,Ct=new WeakMap,te=new WeakMap,Be=new WeakMap,ge=new WeakMap,De=new WeakMap,be=new WeakMap,He=new WeakMap,Re=new WeakMap,rt=new WeakMap,I=new WeakSet,Ns=function(){w(this,_e).replaceChildren();let e=document.createElement("section");e.className="sl-season-root",e.setAttribute("aria-label","Season ticket selection");let t=document.createElement("div");t.className="sl-season-card";let i=document.createElement("h2");i.textContent="Season";let r=document.createElement("p");r.className="sl-season-summary",r.textContent="Every included occurrence is part of this selection.";let n=document.createElement("p");n.className="sl-season-status",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),t.append(i,r),e.append(t,n),w(this,_e).append(e),P(this,He,e),P(this,Re,n)},Gs=function(){let e=w(this,ge),t=w(this,De),i=w(this,He).querySelector(".sl-season-card");i.replaceChildren();let r=document.createElement("h2");r.textContent=e.name;let n=document.createElement("p");n.className="sl-season-summary",n.textContent=`One fixed plan includes all ${e.occurrenceCount} occurrences.`;let o=document.createElement("details"),a=document.createElement("summary");a.textContent=`All ${e.occurrenceCount} occurrences included`;let l=document.createElement("ol");l.className="sl-season-list";for(let h of e.occurrences){let d=document.createElement("li");d.textContent=Do(h,e.timezone),l.append(d)}o.append(a,l);let c=document.createElement("p");c.className="sl-season-availability",c.textContent=`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every occurrence`,i.append(r,n,o,c)},ni=function(e){let t=Fs(w(this,ge),e);return P(this,be,t),w(this,ee).onHoldChange?.(t),e.state==="committed"||e.state==="booked"?(A(this,I,J).call(this,{kind:"held",message:"Your seats are held for every included occurrence.",operationId:e.operationId}),w(this,ee).onHold?.(t),w(this,ee).onContinue?.(t)):e.state==="partial_terminal"?A(this,I,J).call(this,{kind:"partial_terminal",message:"This Season selection needs organizer review. Do not try another selection.",operationId:e.operationId}):A(this,I,J).call(this,{kind:"failed",message:"The Season selection could not be completed.",operationId:e.operationId}),t},J=function(e,t=!1){w(this,Re)&&(w(this,Re).textContent=e.message,w(this,Re).dataset.kind=e.kind),w(this,He)&&(w(this,He).dataset.busy=String(t)),w(this,ee).onStatusChange?.(e)},it=function(e,t){let i=e instanceof oe?`Season selection unavailable (${e.code}).`:"Season selection could not be completed.";A(this,I,J).call(this,{kind:"failed",message:i,operationId:t}),w(this,ee).onError?.(e)},Di=function(){if(w(this,rt))throw new Error("seatlayer: SeasonPicker was destroyed")},St=function(){if(A(this,I,Di).call(this),!w(this,ge))throw new Error("seatlayer: render SeasonPicker before using it")};function Us(s,e={}){let t=e.origin??"";if(!t)try{t=new URL(s.src,window.location.href).origin}catch{t=""}let i=!1,r=null,n=null,o=null,a="",l=null,c=()=>{if(i)return;i=!0,r=s.getAttribute("style"),Object.assign(s.style,{position:"fixed",inset:"0",width:"100vw",height:"100vh",margin:"0",border:"0",zIndex:"2147483000",background:"#101625"});let p=document.documentElement;n=p.style.overflow,p.style.overflow="hidden",document.body&&(o=document.body.style.overflow,document.body.style.overflow="hidden"),l=m=>{m.key==="Escape"&&h()},window.addEventListener("keydown",l)},h=()=>{i&&(i=!1,r===null?s.removeAttribute("style"):s.setAttribute("style",r),r=null,a&&(s.style.height=a),n!==null&&(document.documentElement.style.overflow=n,n=null),o!==null&&document.body&&(document.body.style.overflow=o,o=null),l&&(window.removeEventListener("keydown",l),l=null))},d=p=>{if(p.source!==s.contentWindow||t&&p.origin!==t||!p.data||typeof p.data!="object")return;let m=p.data;if(m.type==="seatlayer:height"){typeof m.px=="number"&&Number.isFinite(m.px)&&m.px>0&&(a=`${Math.round(m.px)}px`,i||(s.style.height=a));return}m.type==="seatlayer:fullscreen"&&(m.on===!0?c():m.on===!1&&h())};return window.addEventListener("message",d),()=>{window.removeEventListener("message",d),h()}}0&&(module.exports={ApiError,BuyerAccessContext,BuyerAccessUnavailableError,BuyerRealtimeClient,EmbeddedDesigner,PerformanceGroupDestroyedError,PerformanceGroupPicker,SEATING_CHART_CALLBACK_PROPS,SEATING_CHART_HANDLE_METHODS,SEATING_CHART_IDENTITY_PROPS,SEATING_CHART_VALUE_PROPS,SeasonApiError,SeasonPicker,SeasonRecoveryTimeoutError,SeatPicker,SeatingChart,attachPickerFrame,bindSeatingChartHandle,buildSeatingChartOptions,createBuyerAccessContext,createControllerSink,parseTicketOfferAvailability,shortOperationReference,ticketOfferPrices});