@seatlayer/js 0.81.0 → 0.83.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.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js";import{a as m,b as L,c as T,d as x}from"./chunk-OSZ7DOEH.js";import{PickerController as Cc,formatMoney as Ac,getLocale as pn,loadLocale as Pc,localeDirection as Lc,LOCALE_NAMES as Mc,resolveLocale as Hc,setStringOverrides as Rc,t as he}from"@seatlayer/core";var Be="seatlayer.v1";function gl(i){let e=typeof i.default=="string"?i.default:"free",t={};if(i.seats&&typeof i.seats=="object")for(let[n,s]of Object.entries(i.seats))typeof s=="string"&&s!==e&&(t[n]=s);return{default:e,exceptions:t}}function bl(i,e){if(!i||i.default!==e.default)return null;let t=[];for(let[n,s]of Object.entries(e.exceptions))i.exceptions[n]!==s&&t.push({label:n,status:s});for(let n of Object.keys(i.exceptions))n in e.exceptions||t.push({label:n,status:e.default});return t}function yl(i,e){for(let t of e)t.status===i.default?delete i.exceptions[t.label]:i.exceptions[t.label]=t.status}function ps(i){if(/(?:^|[?&#])(?:token|access_token|bearer|authorization|ticket|tkt|bse)=/i.test(i))throw new Error("seatlayer: refusing to open a socket with a credential in the URL");if(/\bbse_[A-Za-z0-9._-]+/.test(i))throw new Error("seatlayer: refusing to open a socket with a credential in the URL")}var xe=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,ps(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=[Be];if(this.opts.mintTicket){let r;try{r=await this.opts.mintTicket()}catch(o){this.reportIfAccessError(o),this.scheduleReconnect();return}if(this.stopped)return;r?.protocols?.length?(e=[...r.protocols],e.includes(Be)||e.unshift(Be)):r?.ticket&&(e=[Be,`tkt.${r.ticket}`])}let t=this.version!==null;t&&e.push(`sv.${this.version}`);let n=this.useQueryMarker?`${this.opts.url}${this.opts.url.includes("?")?"&":"?"}pv=1`:this.opts.url;ps(n);let s;try{s=(this.opts.socketFactory??((o,a)=>new WebSocket(o,a)))(n,e)}catch{this.scheduleReconnect();return}this.ws=s,s.onopen=()=>{this.ws===s&&(this.attempt=0,this.v1=s.protocol===Be,this.v1||(this.useQueryMarker=!0),this.startKeepalive(s),t?this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync()},5e3):this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync({reason:"connect"})},5e3))},s.onmessage=r=>{if(this.ws!==s)return;let o;try{o=JSON.parse(typeof r.data=="string"?r.data:"")}catch{return}!o||typeof o!="object"||this.handleFrame(o)},s.onclose=r=>{if(this.ws===s){if(this.ws=null,this.clearTimers(),r?.code===4401){if(r.reason==="access_expired"){this.scheduleReconnect();return}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 n=Array.isArray(e.hidden)?e.hidden:[],s=Array.isArray(e.closed)?e.closed:[],r=n.join("\0"),o=s.join("\0");(r!==this.hidden||o!==this.closedSections)&&(this.hidden=r,this.closedSections=o,this.opts.sink.onSections?.(n,s,{withInventory:t==="snapshot"||!!e.seats}))}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 n=gl(e),s=bl(this.projection,n);this.projection=n,s===null?this.opts.sink.applyProjection?this.opts.sink.applyProjection(n):this.opts.sink.resync():s.length&&this.opts.sink.applyStatuses(s);return}if(t==="delta"&&Array.isArray(e.changes)){this.answered();let n=e.changes.filter(s=>typeof s?.label=="string"&&typeof s?.status=="string").map(s=>({label:s.label,status:s.status}));if(!n.length)return;this.projection&&yl(this.projection,n),this.opts.sink.applyStatuses(n)}}}}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),n=Math.random()*t;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},n)}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 vl(i){return i==="blocked"?"not_for_sale":i==="held"||i==="booked"||i==="free"||i==="not_for_sale"?i:"free"}function Et(i,e={}){let t=n=>{let s=i.tableSelection(n);if(s)return s.physicalSeatIds;let r=i.idForLabel(n);return r?[r]:[]};return{applyStatuses(n){let s=new Set([...i.currentHold()?.labels??[],...e.ownLabels?.()??[]]),r={free:[],held:[],booked:[],not_for_sale:[]},o=[],a=[],l=new Map(i.getSelection().map(c=>[c.label,c.id]));for(let c of n){let d=t(c.label);if(!d.length)continue;let p=vl(c.status);if(r[p].push(...d),e.flashOnLiveChange&&p!=="free"&&!s.has(c.label)&&d.some(u=>i.getStatus(u)==="free")){let u=p==="held"?"#f4b740":"#f43f5e";for(let h of d)o.push({id:h,color:u})}p!=="free"&&!s.has(c.label)&&l.has(c.label)&&a.push(c.label)}for(let c of["free","held","booked","not_for_sale"])r[c].length&&i.setStatus(r[c],c);for(let c of o)i.flashSeat(c.id,c.color);if(a.length){let c=a.flatMap(p=>t(p));c.length&&i.deselect(c);let d=n.some(p=>p.status==="blocked"&&a.includes(p.label));e.onSelectedObjectUnavailable?.(a,d?"ineligible":"taken")}e.onStatusChange?.()},...i.applyProjection?{applyProjection:n=>{i.applyProjection(n)}}:{},async resync(n){await(i.resync?i.resync(n):i.refresh())},onSections(n,s,r){r?.withInventory||(i.resync?i.resync({reason:"frame"}):i.refresh()),e.onSections?.(n,s,r)}}}var $=class extends Error{constructor(e,t,n,s,r,o){super(t),this.name="ApiError",this.status=e,this.code=n,this.conflicts=s,this.reason=r,this.retryAfterS=o}},hs=10,us=1;function Zt(i,e){let t=(i??"").trim();if(t){let n=Number(t);if(Number.isFinite(n)&&n>=0)return Math.ceil(n);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 wl={seat_conflict:"taken",conflict:"taken",channel_assignment_conflict:"ineligible",allocation_exhausted:"exhausted"},Me=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 n=t.referral?.trim();this.referral=n?n.slice(0,120):void 0}get accessScoped(){return!!this.access?.configured}async request(e,t={},n={}){let s=t.method??"GET",r={},o;t.body!==void 0&&(r["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await this.access?.authorization(n.auth?"unauthorized":"initial");a&&(r.Authorization=a);let l=await fetch(`${this.base}${e}`,{method:s,headers:r,body:o,credentials:"omit"}),d=(l.headers.get("content-type")??"").includes("application/json")?await l.json().catch(()=>null):null;if(!l.ok){let p=d,u=p?.code??p?.error;if(this.access?.configured&&(l.status===401||l.status===403||l.status===422)&&await this.access.handleFailure(l.status,u)&&!n.auth)return this.request(e,t,{...n,auth:!0});if(l.status===409){let g=u?wl[u]:void 0,y=p?.conflicts?.map(k=>k.label)??t.labels??[];g&&this.onObjectUnavailable?.({labels:y,reason:g,code:u})}let h;if(l.status===429&&(h=Zt(l.headers.get("Retry-After"),p?.retryAfterSeconds)??us,s==="GET"&&!n.rateLimit&&h<=hs))return await new Promise(g=>setTimeout(g,h*1e3)),this.request(e,t,{...n,rateLimit:!0});throw new $(l.status,p?.error??`request_failed_${l.status}`,u,p?.conflicts,p?.reason,h)}return d}async requestBlob(e,t={}){let n={},s=await this.access?.authorization(t.auth?"unauthorized":"initial");s&&(n.Authorization=s);let r=await fetch(`${this.base}${e}`,{method:"GET",headers:n,credentials:"omit"});if(r.ok)return r.blob();let a=(r.headers.get("content-type")??"").includes("application/json")?await r.json().catch(()=>null):null,l=a?.code??a?.error;if(this.access?.configured&&(r.status===401||r.status===403||r.status===422)&&await this.access.handleFailure(r.status,l)&&!t.auth)return this.requestBlob(e,{...t,auth:!0});let c;if(r.status===429&&(c=Zt(r.headers.get("Retry-After"),a?.retryAfterSeconds)??us,!t.rateLimit&&c<=hs))return await new Promise(d=>setTimeout(d,c*1e3)),this.requestBlob(e,{...t,rateLimit:!0});throw new $(r.status,a?.error??`request_failed_${r.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 $(404,"not_found","not_found"))}objects(e){return this.request(`/pub/events/${encodeURIComponent(e)}/objects?compact=1`)}hold(e,t,n,s){return this.request(`/pub/events/${encodeURIComponent(e)}/hold`,{method:"POST",body:{selections:t,...n?{ttlMs:n}:{},...s?{replaceHoldId:s}:{},...this.referral?{referral:this.referral}:{}},labels:t.map(r=>r.label)})}bestAvailable(e,t,n,s,r){return this.request(`/pub/events/${encodeURIComponent(e)}/best-available`,{method:"POST",body:{qty:t,...n?{categoryKey:n}:{},...s?{zoneId:s}:{},...r?{ttlMs:r}:{},...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,n){return this.request(`/pub/events/${encodeURIComponent(e)}/release`,{method:"POST",body:{labels:t,holdId:n}})}extend(e,t,n){return this.request(`/pub/events/${encodeURIComponent(e)}/extend`,{method:"POST",body:{holdId:t,...n?{ttlMs:n}:{}}})}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"),n=new URLSearchParams({surface:"picker",viewerId:this.viewerId});return`${t}/pub/events/${encodeURIComponent(e)}/subscribe?${n}`}socketUrl(e){return this.accessScoped?"":this.subscribeUrl(e)}socketProtocols(e){return this.accessScoped?[]:[Be]}createRealtime(e,t){return this.accessScoped?null:new xe({url:this.subscribeUrl(e),sink:t})}};import{getLocale as El,loadLocale as Cl,LOCALE_NAMES as Al,localeDirection as gs,resolveLocale as bs,setStringOverrides as Pl,TRANSLATED_LOCALES as Ll}from"@seatlayer/core";import{getLocale as xl,localeDirection as Sl,t as kl}from"@seatlayer/core";function Tl(){return`<svg class="sl-boot-venue" viewBox="0 0 200 140" preserveAspectRatio="xMidYMid meet" aria-hidden="true" focusable="false"><g class="sl-boot-shells">${["M20 92a80 52 0 0 1 160 0v14a94 62 0 0 0-160 0z","M32 74a68 42 0 0 1 136 0v12a80 50 0 0 0-136 0z","M46 58a54 32 0 0 1 108 0v10a64 38 0 0 0-108 0z"].map(e=>`<path d="${e}" />`).join("")}</g><rect class="sl-boot-stage" x="62" y="16" width="76" height="16" rx="4" /></svg>`}function ms(i,e,t){let n=document.createElement("div");n.className="sl-picker",n.tabIndex=-1,n.lang=xl(),n.dir=Sl(),i.appendChild(n),Object.entries(it(void 0,t)).forEach(([r,o])=>n.style.setProperty(r,o)),n.innerHTML=`
1
+ import{a as io,b as no,d as Kt,e as it,f as Wt,g as nt}from"./chunk-TNTHWQQ2.js";import{a as m,b as L,c as T,d as x}from"./chunk-OSZ7DOEH.js";import{PickerController as Cc,formatMoney as Ac,getLocale as un,loadLocale as Pc,localeDirection as Lc,LOCALE_NAMES as Mc,resolveLocale as Hc,setStringOverrides as Rc,t as ue}from"@seatlayer/core";var Ne="seatlayer.v1";function dl(i){let e=typeof i.default=="string"?i.default:"free",t={};if(i.seats&&typeof i.seats=="object")for(let[n,o]of Object.entries(i.seats))typeof o=="string"&&o!==e&&(t[n]=o);return{default:e,exceptions:t}}function pl(i,e){if(!i||i.default!==e.default)return null;let t=[];for(let[n,o]of Object.entries(e.exceptions))i.exceptions[n]!==o&&t.push({label:n,status:o});for(let n of Object.keys(i.exceptions))n in e.exceptions||t.push({label:n,status:e.default});return t}function hl(i,e){for(let t of e)t.status===i.default?delete i.exceptions[t.label]:i.exceptions[t.label]=t.status}function oo(i){if(/(?:^|[?&#])(?:token|access_token|bearer|authorization|ticket|tkt|bse)=/i.test(i))throw new Error("seatlayer: refusing to open a socket with a credential in the URL");if(/\bbse_[A-Za-z0-9._-]+/.test(i))throw new Error("seatlayer: refusing to open a socket with a credential in the URL")}var xe=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,oo(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=[Ne];if(this.opts.mintTicket){let s;try{s=await this.opts.mintTicket()}catch(r){this.reportIfAccessError(r),this.scheduleReconnect();return}if(this.stopped)return;s?.protocols?.length?(e=[...s.protocols],e.includes(Ne)||e.unshift(Ne)):s?.ticket&&(e=[Ne,`tkt.${s.ticket}`])}let t=this.version!==null;t&&e.push(`sv.${this.version}`);let n=this.useQueryMarker?`${this.opts.url}${this.opts.url.includes("?")?"&":"?"}pv=1`:this.opts.url;oo(n);let o;try{o=(this.opts.socketFactory??((r,a)=>new WebSocket(r,a)))(n,e)}catch{this.scheduleReconnect();return}this.ws=o,o.onopen=()=>{this.ws===o&&(this.attempt=0,this.v1=o.protocol===Ne,this.v1||(this.useQueryMarker=!0),this.startKeepalive(o),t?this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync()},5e3):this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync({reason:"connect"})},5e3))},o.onmessage=s=>{if(this.ws!==o)return;let r;try{r=JSON.parse(typeof s.data=="string"?s.data:"")}catch{return}!r||typeof r!="object"||this.handleFrame(r)},o.onclose=s=>{if(this.ws===o){if(this.ws=null,this.clearTimers(),s?.code===4401){if(s.reason==="access_expired"){this.scheduleReconnect();return}this.stopped=!0,this.opts.onAccessUnavailable?.({reason:"revoked",code:"access_revoked",retryable:!1});return}this.scheduleReconnect()}},o.onerror=()=>{try{o.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 n=Array.isArray(e.hidden)?e.hidden:[],o=Array.isArray(e.closed)?e.closed:[],s=n.join("\0"),r=o.join("\0");(s!==this.hidden||r!==this.closedSections)&&(this.hidden=s,this.closedSections=r,this.opts.sink.onSections?.(n,o,{withInventory:t==="snapshot"||!!e.seats}))}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 n=dl(e),o=pl(this.projection,n);this.projection=n,o===null?this.opts.sink.applyProjection?this.opts.sink.applyProjection(n):this.opts.sink.resync():o.length&&this.opts.sink.applyStatuses(o);return}if(t==="delta"&&Array.isArray(e.changes)){this.answered();let n=e.changes.filter(o=>typeof o?.label=="string"&&typeof o?.status=="string").map(o=>({label:o.label,status:o.status}));if(!n.length)return;this.projection&&hl(this.projection,n),this.opts.sink.applyStatuses(n)}}}}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),n=Math.random()*t;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},n)}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 ul(i){return i==="blocked"?"not_for_sale":i==="held"||i==="booked"||i==="free"||i==="not_for_sale"?i:"free"}function Et(i,e={}){let t=n=>{let o=i.tableSelection(n);if(o)return o.physicalSeatIds;let s=i.idForLabel(n);return s?[s]:[]};return{applyStatuses(n){let o=new Set([...i.currentHold()?.labels??[],...e.ownLabels?.()??[]]),s={free:[],held:[],booked:[],not_for_sale:[]},r=[],a=[],l=new Map(i.getSelection().map(c=>[c.label,c.id]));for(let c of n){let h=t(c.label);if(!h.length)continue;let d=ul(c.status);if(s[d].push(...h),e.flashOnLiveChange&&d!=="free"&&!o.has(c.label)&&h.some(u=>i.getStatus(u)==="free")){let u=d==="held"?"#f4b740":"#f43f5e";for(let p of h)r.push({id:p,color:u})}d!=="free"&&!o.has(c.label)&&l.has(c.label)&&a.push(c.label)}for(let c of["free","held","booked","not_for_sale"])s[c].length&&i.setStatus(s[c],c);for(let c of r)i.flashSeat(c.id,c.color);if(a.length){let c=a.flatMap(d=>t(d));c.length&&i.deselect(c);let h=n.some(d=>d.status==="blocked"&&a.includes(d.label));e.onSelectedObjectUnavailable?.(a,h?"ineligible":"taken")}e.onStatusChange?.()},...i.applyProjection?{applyProjection:n=>{i.applyProjection(n)}}:{},async resync(n){await(i.resync?i.resync(n):i.refresh())},onSections(n,o,s){s?.withInventory||(i.resync?i.resync({reason:"frame"}):i.refresh()),e.onSections?.(n,o,s)}}}var z=class extends Error{constructor(e,t,n,o,s,r){super(t),this.name="ApiError",this.status=e,this.code=n,this.conflicts=o,this.reason=s,this.retryAfterS=r}},so=10,ro=1;function Yt(i,e){let t=(i??"").trim();if(t){let n=Number(t);if(Number.isFinite(n)&&n>=0)return Math.ceil(n);let o=Date.parse(t);if(Number.isFinite(o))return Math.max(0,Math.ceil((o-Date.now())/1e3))}if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return Math.ceil(e)}var ml={seat_conflict:"taken",conflict:"taken",channel_assignment_conflict:"ineligible",allocation_exhausted:"exhausted"},Le=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 n=t.referral?.trim();this.referral=n?n.slice(0,120):void 0}get accessScoped(){return!!this.access?.configured}async request(e,t={},n={}){let o=t.method??"GET",s={},r;t.body!==void 0&&(s["Content-Type"]="application/json",r=JSON.stringify(t.body));let a=await this.access?.authorization(n.auth?"unauthorized":"initial");a&&(s.Authorization=a);let l=await fetch(`${this.base}${e}`,{method:o,headers:s,body:r,credentials:"omit"}),h=(l.headers.get("content-type")??"").includes("application/json")?await l.json().catch(()=>null):null;if(!l.ok){let d=h,u=d?.code??d?.error;if(this.access?.configured&&(l.status===401||l.status===403||l.status===422)&&await this.access.handleFailure(l.status,u)&&!n.auth)return this.request(e,t,{...n,auth:!0});if(l.status===409){let f=u?ml[u]:void 0,b=d?.conflicts?.map(k=>k.label)??t.labels??[];f&&this.onObjectUnavailable?.({labels:b,reason:f,code:u})}let p;if(l.status===429&&(p=Yt(l.headers.get("Retry-After"),d?.retryAfterSeconds)??ro,o==="GET"&&!n.rateLimit&&p<=so))return await new Promise(f=>setTimeout(f,p*1e3)),this.request(e,t,{...n,rateLimit:!0});throw new z(l.status,d?.error??`request_failed_${l.status}`,u,d?.conflicts,d?.reason,p)}return h}async requestBlob(e,t={}){let n={},o=await this.access?.authorization(t.auth?"unauthorized":"initial");o&&(n.Authorization=o);let s=await fetch(`${this.base}${e}`,{method:"GET",headers:n,credentials:"omit"});if(s.ok)return s.blob();let a=(s.headers.get("content-type")??"").includes("application/json")?await s.json().catch(()=>null):null,l=a?.code??a?.error;if(this.access?.configured&&(s.status===401||s.status===403||s.status===422)&&await this.access.handleFailure(s.status,l)&&!t.auth)return this.requestBlob(e,{...t,auth:!0});let c;if(s.status===429&&(c=Yt(s.headers.get("Retry-After"),a?.retryAfterSeconds)??ro,!t.rateLimit&&c<=so))return await new Promise(h=>setTimeout(h,c*1e3)),this.requestBlob(e,{...t,rateLimit:!0});throw new z(s.status,a?.error??`request_failed_${s.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 z(404,"not_found","not_found"))}objects(e){return this.request(`/pub/events/${encodeURIComponent(e)}/objects?compact=1`)}hold(e,t,n,o){return this.request(`/pub/events/${encodeURIComponent(e)}/hold`,{method:"POST",body:{selections:t,...n?{ttlMs:n}:{},...o?{replaceHoldId:o}:{},...this.referral?{referral:this.referral}:{}},labels:t.map(s=>s.label)})}bestAvailable(e,t,n,o,s){return this.request(`/pub/events/${encodeURIComponent(e)}/best-available`,{method:"POST",body:{qty:t,...n?{categoryKey:n}:{},...o?{zoneId:o}:{},...s?{ttlMs:s}:{},...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,n){return this.request(`/pub/events/${encodeURIComponent(e)}/release`,{method:"POST",body:{labels:t,holdId:n}})}extend(e,t,n){return this.request(`/pub/events/${encodeURIComponent(e)}/extend`,{method:"POST",body:{holdId:t,...n?{ttlMs:n}:{}}})}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"),n=new URLSearchParams({surface:"picker",viewerId:this.viewerId});return`${t}/pub/events/${encodeURIComponent(e)}/subscribe?${n}`}socketUrl(e){return this.accessScoped?"":this.subscribeUrl(e)}socketProtocols(e){return this.accessScoped?[]:[Ne]}createRealtime(e,t){return this.accessScoped?null:new xe({url:this.subscribeUrl(e),sink:t})}};import{getLocale as Ml,loadLocale as Hl,LOCALE_NAMES as Rl,localeDirection as Oo,resolveLocale as _o,setStringOverrides as Il,TRANSLATED_LOCALES as Ol}from"@seatlayer/core";import{getLocale as Cl,localeDirection as Al,t as Pl}from"@seatlayer/core";import{compactRowLabel as xl,seatNoteRowModel as Sl,seatTypeIconSvg as uo,t as Ve}from"@seatlayer/core";import{seatConfidenceDisclosure as kl}from"@seatlayer/core/core/seatConfidence";import{t as vl}from"@seatlayer/core";import{cdnAssetUrl as wl}from"@seatlayer/core/core/cdnAsset";var fl=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,gl=/[\s"'<>`\\]/;function bl(i){return i.startsWith("//")?!1:i.startsWith("/")||i.startsWith("./")||i.startsWith("../")}function yl(){try{let i=typeof location>"u"?"":location.origin;return i&&i!=="null"?i:null}catch{return null}}function ot(i){if(typeof i!="string"||!i||i.length>2e6||i!==i.trim())return!1;if(i.startsWith("data:"))return fl.test(i);if(gl.test(i))return!1;let e=yl();if(bl(i)){if(!e)return!1;try{let t=new URL(i,e);return t.origin===e&&!t.username&&!t.password}catch{return!1}}try{let t=new URL(i);return t.username||t.password?!1:t.protocol==="https:"||e!=null&&t.origin===e}catch{return!1}}import{SEATLAYER_MODULE_URL as Ah}from"@seatlayer/core/core/cdnAsset";function g(i,e){let t=vl(i);return t===i?e:t}function Be(){return globalThis.matchMedia?.("(pointer: coarse)").matches??!1?g("picker.dragToLookTouch","Drag to look \xB7 pinch to zoom \xB7 tap \u2715 to close"):g("picker.dragToLookMouse","Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close")}function Xt(){return{rotate:g("picker.dragToRotateVenue","Drag to rotate the venue"),move:g("picker.dragToMoveVenue","Drag to move the venue"),zoomIn:g("picker.zoomIn","Zoom in"),zoomOut:g("picker.zoomOut","Zoom out"),fitView:g("picker.fitWholeVenue","Show whole venue")}}function ao(i,e){let t=e?i.toLocaleUpperCase(e):i.toLocaleUpperCase(),n=e?i.toLocaleLowerCase(e):i.toLocaleLowerCase();if(i!==t||t===n)return i;let o=[...n][0]??"";return(e?o.toLocaleUpperCase(e):o.toLocaleUpperCase())+n.slice(o.length)}function lo(i){if(typeof i=="string"){let e=document.querySelector(i);if(!e)throw new Error(`seatmap: container "${i}" not found`);return e}if(!(i instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return i}function I(i){return String(i??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function co(i,e,t){let n=e.find(s=>ot(s))??null;if(i.replaceChildren(),!n)return i.textContent=t.slice(0,1).toUpperCase(),null;let o=document.createElement("img");return o.alt="",o.referrerPolicy="no-referrer",o.src=n,i.appendChild(o),n}var st=null;function Zt(){if(st!==null)return st;try{if(typeof document>"u")return st=!1;st=!!document.createElement("canvas").getContext("webgl2")}catch{st=!1}return st}function Zi(i){return wl(i)}var Ct=null;function At(){return Ct||(Ct=(typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(Zi("seatlayer-view3d.mjs")):import("@seatlayer/core/view3d")).catch(e=>{throw Ct=null,e}),Ct)}function Qt(){(typeof navigator>"u"?void 0:navigator.connection)?.saveData||At().catch(()=>{})}async function Jt(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(Zi("seatlayer-panorama.mjs")):import("@seatlayer/core")}async function ei(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(Zi("seatlayer-checkout.mjs")):import("./hostedCheckout-W7QZWSOQ.js")}function po(i){return i==="unavailable_for_event"||i==="payments_off_for_event"?i:"not_configured"}function ti(i,e,t){let n={month:"short",day:"numeric",hour:"numeric",minute:"2-digit"},o=new Date(i);if(e)try{return o.toLocaleString(t,{...n,timeZone:e})}catch{}return o.toLocaleString(t,n)}function Qi(i){return String(i??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function E(i){return String(i??"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Ji(i){return i?Sl(i).map(e=>({...e,title:g(e.titleKey,e.titleFallback)})):[]}function mo(i){return Ji(i).map(e=>e.title)}function Fe(i,e={}){let t=Ji(i);if(!t.length)return"";let n=e.compact?15:17,o=t.map(s=>`<div class="sl-note sl-note-${E(s.tone)}"><span class="sl-note-i">${uo(s.icon,{size:n})}</span><span class="sl-note-t"><b>${E(s.title)}</b>`+(s.note?`<span class="sl-note-n">${E(s.note)}</span>`:"")+"</span></div>").join("");return`<div class="sl-notes${e.compact?" compact":""}">${o}</div>`}function fo(i){return Ji(i).map(e=>{let t=E(e.note?`${e.title}: ${e.note}`:e.title);return`<span class="sl-cx-mark sl-cx-mark-${E(e.tone)}" role="img" aria-label="${t}" title="${t}">${uo(e.icon,{size:13})}</span>`}).join("")}function ii(i){let e=[];return i?.restrictedView&&e.push(g("picker.restrictedView","Restricted view")),i?.obstructedView&&e.push(g("picker.obstructedView","Obstructed view")),e}function en(i,e){if(!i)return"";let t=e?g("picker.viewFromThisSeat","View from this seat"):g("picker.seeItIn3d","See it in 3D"),n=e?g("picker.viewFromHere","View from here"):t;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>${n}</span></button>`}function go(i){if(!i)return"";let e=i.previous.label||i.previous.id,t=i.next.label||i.next.id;return`<span class="sl-seccard-nav" aria-label="${g("picker.browseSections","Browse sections")}"><button type="button" data-section-nav="${I(i.previous.id)}" aria-label="${g("picker.previousSection","Previous section")}: ${I(e)}" title="${I(e)}">\u2190</button><button type="button" data-section-nav="${I(i.next.id)}" aria-label="${g("picker.nextSection","Next section")}: ${I(t)}" title="${I(t)}">\u2192</button></span>`}function bo(i,e){if(!e)return"";let t=e,n=t.includes(i.id),o=n?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"${n&&t.length===1?" disabled":""}><span aria-hidden="true">\u21C4</span><span>${E(o)}</span></button>`}function yo(i,e,t){if(!t)return"";let n=kl(i.confidenceEvidence),o=n.modeledTarget??n.reality;return`<button type="button" class="sl-confirm-confidence" aria-label="Open seat confidence passport for ${E(i.displayLabel??i.label)}"><span><em>${E(e)}</em><strong>${E(n.headline)}</strong><small>${E(o)}</small></span><b>Passport</b></button>`}function U(i){let e=i?.rowLabel,t=i?.sectionLabel;if(!e||!t)return e;for(let n of["-"," ","\xB7","/","_"]){let o=`${t}${n}`;if(e.startsWith(o)&&e.length>o.length)return e.slice(o.length)}return xl(e,t)}function Tl(i){switch(i){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."),action:g("picker.accessRefresh","Refresh")};case"no_token":case"provider_failed":return{title:g("picker.accessExpiredTitle","The seat map timed out"),body:g("picker.accessExpiredBody","Any seats you\u2019re holding stay held. Refresh to see what\u2019s available now."),action:g("picker.accessRefresh","Refresh")};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."),action:g("picker.accessRefresh","Refresh")}}}var El=6;function vo(i,e,t){let n=Qi;return[i?.sectionLabel?`<div class="sl-confirm-field sl-confirm-sec${i.sectionLabel.length>El?" sl-confirm-sec-long":""}"><span class="sl-confirm-key">${g("picker.section","Section")}</span><span class="sl-confirm-value">${n(i.sectionLabel)}</span></div>`:"",i?.rowLabel||i?.objectType==="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${n(t)}</span><span class="sl-confirm-value">${n(U(i)??i?.displayLabel??e)}</span></div>`:"",i?.objectType!=="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${g("picker.seat","Seat")}</span><span class="sl-confirm-value">${n(i?.seatNumber??i?.displayLabel??e)}</span></div>`:""].filter(Boolean).join("")}function wo(i,e,t){let n=Qi,o=i?.objectType==="booth",s=i?.objectType==="table"&&!!i?.bookingMode,r=o||s||!i?.seatNumber,a=i?.sectionLabel??(r?void 0:i?.displayLabel),l=s?`${g("picker.guests","Guests")} ${i?.bookingMode==="variable"?`${i?.minOccupancy}\u2013${i?.maxOccupancy}`:i?.capacity}`:void 0,h=(r?[l,a?i?.rowLabel??i?.displayLabel:void 0]:[i?.rowLabel?`${t} ${U(i)??""}`.trim():void 0,`${g("picker.seat","Seat")} ${i?.seatNumber??e}`]).filter(Boolean).join(" \xB7 ");return(a?`<span class="sl-confirm-place">${n(a)}</span>`:"")+(h?`<span class="sl-confirm-pos">${a?" \xB7 ":""}${n(h)}</span>`:"")+(a||h?"":`<span class="sl-confirm-pos">${n(e)}</span>`)}function xo(i,e){if(!i)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-pill sl-confirm-3dpill" aria-label="${t}" title="${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 aria-hidden="true">3D</span></button>`}function So(i,e){if(!i||e)return"";let t=g("picker.seeItIn3d","See it in 3D");return`<button type="button" class="sl-confirm-3drow" aria-label="${t}" title="${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 aria-hidden="true">3D</span></button>`}function ho(i){return i.buyerMessage?.trim()||(i.restriction==="companion"?g("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):void 0)}function ko(i,e,t){let n=Qi;if(i.length>1)return`<fieldset class="sl-confirm-tiers"><legend>${g("picker.ticketType","Ticket type")}</legend>`+i.map(r=>{let a=ho(r);return`<button type="button" class="sl-confirm-tier" data-confirm-tier="${n(r.id)}" aria-pressed="${r.id===e}"><span class="sl-confirm-tier-copy"><span class="sl-confirm-tier-name">${n(r.name)}</span>`+(a?`<small class="sl-confirm-tier-note">${n(a)}</small>`:"")+`</span><span class="sl-confirm-tier-price">${n(t(r))}</span></button>`}).join("")+"</fieldset>";let o=i[0],s=o?ho(o):void 0;return s?`<p class="sl-confirm-tier-note">${n(s)}</p>`:""}function To(i){return`<span class="sl-seccard-dot" style="background:${E(i.color)}"></span><span class="sl-seccard-name">${E(i.label)}</span><span class="sl-seccard-left" data-full="${E(i.leftLabel)}" data-short="${E(i.leftShortLabel??i.leftLabel)}">${E(i.leftLabel)}</span>`+i.nav+i.close}function Eo(i){return`<div class="sl-seccard-head"><span class="sl-seccard-dot" style="background:${E(i.color)}"></span><span class="sl-seccard-name">${E(i.label)}</span>`+(i.showPrice?`<span class="sl-seccard-price">${E(i.priceLabel)}</span>`:"")+i.close+`</div><div class="sl-seccard-zone">${i.zoneLabel?`${E(i.zoneLabel)} \xB7 `:""}<span class="sl-seccard-left">${E(i.leftLabel)}</span></div>`+(i.entrance?`<div class="sl-seccard-entrance">${E(i.entrance)}</div>`:"")+(i.mix?`<div class="sl-seccard-mix">${i.mix}</div>`:"")+`<div class="sl-seccard-foot"><button type="button" class="sl-seccard-overview">\u2190 ${E(i.overviewLabel)}</button>`+i.nav+`<span class="sl-seccard-hint">${E(i.hint)}</span></div>`}function Co(i){return`<span class="sl-seccard-mix-item${i.dim?" sl-dim":""}"><span class="sl-seccard-mix-dot" style="background:${E(i.color)}"></span>${E(i.label)} <span class="sl-seccard-mix-price">${E(i.rangeLabel)}</span></span>`}function Ao(i){return'<div class="sl-confirm-grid">'+i.identityFields+`</div><div class="sl-confirm-cat"><span class="sl-confirm-cat-name">${E(i.categoryLabel)}</span>`+(i.priceLabel?`<span class="sl-confirm-price">${E(i.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-id">'+i.marker+`<span class="sl-confirm-dot" style="background:${E(i.categoryColor)}" aria-hidden="true"></span><span class="sl-sr">${E(i.categoryLabel)}</span><span class="sl-confirm-who">`+i.identity+"</span>"+(i.priceLabel?`<span class="sl-confirm-idprice">${E(i.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-body">'+i.commercial+i.tierChoices+i.groupDates+i.wheelchair+(i.thumb||i.see3dPill?`<div class="sl-confirm-strip">${i.thumb}<span class="sl-confirm-pills">${i.see3dPill}</span></div>`:"")+i.inspect+'<div class="sl-confirm-row">'+(i.see3dRow??"")+`<button type="button" class="sl-confirm-cancel">${E(i.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><span class="sl-confirm-add-t">${E(i.selectLabel)}</span></button></div></div>`}function Po(i,e){let t=I,{variable:n}=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(n?Ve("picker.flexiblePartyTypeWord",{typeWord:e.typeWord}):Ve("picker.wholeTypeWord",{typeWord:e.typeWord}))}</div><h2 class="sl-table-title" id="sl-table-title">${t(i.displayLabel??i.label)}</h2><p class="sl-table-copy" id="sl-table-copy">${t(n?g("picker.chooseGuestsCopy","Choose how many guests will sit together. This table is held exclusively for your party."):Ve("picker.allPlacesBookedTogether",{count:i.capacity}))}</p></div><div class="sl-table-body"><div class="sl-table-summary"><span>${t(e.categoryLabel)}</span>`+(e.suppressPricing?"":`<b data-table-unit>${t(Ve("picker.perGuestPrice",{price:e.unitPrice}))}</b>`)+`<span class="muted">${t(g("picker.tableCapacity","Table capacity"))}</span><span>${t(Ve("picker.guestsCount",{count:i.capacity}))}</span>`+(e.suppressPricing?"":`<span class="muted">${t(g("picker.total","Total"))}</span><b data-table-total></b>`)+"</div>"+(n?`<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>${i.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(Ve("picker.chooseMinMaxGuests",{min:i.minOccupancy,max:i.maxOccupancy}))}</div>`:`<input type="hidden" data-table-qty value="${i.capacity}">`)+`<div class="sl-table-actions"><button type="button" class="sl-table-cancel">${t(Ve("common.cancel"))}</button><button type="button" class="sl-table-confirm">${t(e.held?g("picker.updateTable","Update table"):n?g("picker.selectTable","Select table"):g("picker.selectWholeTable","Select whole table"))}</button></div></div></section>`}function Lo(i,e){let t=Tl(i),n=document.createElement("div");n.className="sl-interrupt sl-access",n.setAttribute("role","status"),n.setAttribute("aria-live","polite");let o=document.createElement("div");o.className="sl-interrupt-card";let s=document.createElement("div");s.className="sl-interrupt-title",s.textContent=t.title;let r=document.createElement("div");r.className="sl-interrupt-body",r.textContent=t.body,o.append(s,r);let a=document.createElement("div");a.className="sl-interrupt-actions";let l=document.createElement("button");l.type="button",l.className="sl-interrupt-act";let c=document.createElement("span");c.className="sl-interrupt-act-icon",c.setAttribute("aria-hidden","true"),c.textContent="\u21BB";let h=document.createElement("span");return h.textContent=t.action,l.append(c,h),l.addEventListener("click",async()=>{n.classList.add("is-reloading"),l.disabled=!0;try{await e()}catch{}finally{n.isConnected&&(n.classList.remove("is-reloading"),l.disabled=!1)}}),a.appendChild(l),o.appendChild(a),n.appendChild(o),n}function Mo(i,e){return`<div class="sl-a11yhead"><span class="sl-a11yhead-t">${E(i)}</span><button type="button" class="sl-a11yclose" data-a11y-close aria-label="${I(e)}"><svg viewBox="0 0 24 24" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button></div>`}function Ho(i){return i.map(e=>{let t=`<button type="button" role="switch" class="sl-a11yrow${e.className?` ${e.className}`:""}${e.on?" on":""}" data-a11y-row="${E(e.key)}" aria-checked="${e.on}" aria-pressed="${e.on}"`+(e.disabled?' disabled aria-disabled="true"':"")+`><span class="sl-a11yrow-i" aria-hidden="true">${e.iconHtml}</span><span class="sl-a11yrow-t"><span class="sl-a11yrow-l">${E(e.label)}</span></span>`+(e.count?`<span class="sl-a11yrow-c">${E(e.count)}</span>`:"")+'<span class="sl-a11yrow-s" aria-hidden="true"></span></button>';return e.note?`<div class="sl-a11yrow-w">${t}${rt({id:`sl-info-${I(e.key.replace(/[^A-Za-z0-9]+/g,"-"))}`,label:e.note,text:E(e.note)})}</div>`:t}).join("")}function rt(i){return`<span class="sl-info"${i.wrapRef?` data-ref="${I(i.wrapRef)}"`:""}><button type="button" class="sl-info-btn" data-sl-info aria-label="${I(i.label)}" aria-describedby="${I(i.id)}" aria-expanded="false"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 11v5"/><path d="M12 8h.01"/></svg></button><span class="sl-info-pop" role="tooltip" id="${I(i.id)}"${i.ref?` data-ref="${I(i.ref)}"`:""}>${i.text}</span></span>`}function Ll(){return`<svg class="sl-boot-venue" viewBox="0 0 200 140" preserveAspectRatio="xMidYMid meet" aria-hidden="true" focusable="false"><g class="sl-boot-shells">${["M20 92a80 52 0 0 1 160 0v14a94 62 0 0 0-160 0z","M32 74a68 42 0 0 1 136 0v12a80 50 0 0 0-136 0z","M46 58a54 32 0 0 1 108 0v10a64 38 0 0 0-108 0z"].map(e=>`<path d="${e}" />`).join("")}</g><rect class="sl-boot-stage" x="62" y="16" width="76" height="16" rx="4" /></svg>`}function Ro(i,e,t){let n=document.createElement("div");n.className="sl-picker",n.tabIndex=-1,n.lang=Cl(),n.dir=Al(),i.appendChild(n),Object.entries(nt(void 0,t)).forEach(([s,r])=>n.style.setProperty(s,r)),n.innerHTML=`
2
2
  <div class="sl-head">
3
3
  <div class="sl-logo" data-ref="logo"></div>
4
4
  <div class="sl-head-info" data-ref="headInfo">
@@ -23,6 +23,9 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
23
23
  <div class="sl-zoom" data-ref="zoom">
24
24
  <button type="button" data-sl-a="picker.zoomIn" aria-label="${e("picker.zoomIn","Zoom in")}" data-sl-ti="picker.zoomIn" title="${e("picker.zoomIn","Zoom in")}" data-ref="zin">+</button>
25
25
  <button type="button" data-sl-a="picker.zoomOut" aria-label="${e("picker.zoomOut","Zoom out")}" data-sl-ti="picker.zoomOut" title="${e("picker.zoomOut","Zoom out")}" data-ref="zout">\u2212</button>
26
+ <button type="button" data-sl-a="picker.fitWholeVenue" aria-label="${e("picker.fitWholeVenue","Show whole venue")}" data-sl-ti="picker.fitWholeVenue" title="${e("picker.fitWholeVenue","Show whole venue")}" data-ref="zfit">
27
+ <svg viewBox="0 0 24 24"><rect x="4" y="4" width="16" height="16" rx="3"/><circle cx="12" cy="12" r="2"/></svg>
28
+ </button>
26
29
  <button type="button" data-sl-a="picker.fullScreen" aria-label="${e("picker.fullScreen","Full screen")}" data-sl-ti="picker.fullScreen" title="${e("picker.fullScreen","Full screen")}" aria-pressed="false" data-ref="zfs">
27
30
  <svg viewBox="0 0 24 24"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/></svg>
28
31
  <span class="sl-zfs-lbl" data-sl-t="picker.fullScreen" aria-hidden="true">${e("picker.fullScreen","Full screen")}</span>
@@ -30,29 +33,24 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
30
33
  </div>
31
34
  <div class="sl-boot" data-ref="boot">
32
35
  <div class="sl-boot-bar" aria-hidden="true"></div>
33
- ${Tl()}
36
+ ${Ll()}
34
37
  <span class="sl-boot-say" role="status" aria-live="polite" data-sl-t="picker.loadingSeatMap">${e("picker.loadingSeatMap","Loading seat map\u2026")}</span>
35
38
  </div>
36
39
  <div class="sl-toast" data-ref="toast" role="status" aria-live="polite"></div>
37
40
  </div>
38
41
  <div class="sl-side" data-ref="side">
39
42
  <div class="sl-sheet-head" data-ref="sheetHead">
40
- <div class="sl-sheet-grab"></div>
41
- <div class="sl-sheet-bar">
42
- <div class="sl-sheet-peek" data-ref="peek"></div>
43
- <button type="button" class="sl-sheet-toggle" data-ref="sheetToggle" data-sl-a="picker.openTicketPanel" aria-label="${e("picker.openTicketPanel","Open ticket panel")}" aria-expanded="false">
44
- <svg viewBox="0 0 24 24"><path d="M6 15l6-6 6 6"/></svg>
45
- </button>
46
- </div>
43
+ <button type="button" class="sl-sheet-toggle" data-ref="sheetToggle" data-sl-a="picker.openTicketPanel" aria-label="${e("picker.openTicketPanel","Open ticket panel")}" aria-expanded="false">
44
+ <svg viewBox="0 0 24 24"><path d="M6 15l6-6 6 6"/></svg>
45
+ </button>
47
46
  </div>
48
47
  <div class="sl-sec sl-filtersec" data-ref="filtersSec" data-sl-t="picker.filters">${e("picker.filters","Filters")}</div>
49
48
  <div class="sl-filters" data-ref="filters"></div>
50
49
  <div class="sl-offer" data-ref="offer" role="status" aria-live="polite"></div>
51
- <div class="sl-sec sl-prices-sec" data-ref="pricesSec"><span data-sl-t="picker.ticketPrices">${e("picker.ticketPrices","Ticket prices")}</span></div>
52
- <div class="sl-prices-hint" data-ref="pricesHint"></div>
50
+ <div class="sl-sec sl-prices-sec" data-ref="pricesSec"><span data-sl-t="picker.ticketPrices">${e("picker.ticketPrices","Ticket prices")}</span>${rt({id:"sl-info-prices",label:e("picker.aboutTicketPrices","About ticket prices"),text:e("picker.priceHint","Colours on the map are ticket types \u2014 tap one below to show just those seats."),ref:"pricesHint",wrapRef:"pricesInfo"})}</div>
53
51
  <div class="sl-prices" data-ref="prices"></div>
54
52
  <div class="sl-sec sl-seats-sec">
55
- <span data-sl-t="picker.yourSeats">${e("picker.yourSeats","Your seats")}</span>
53
+ <span class="sl-sec-title"><span data-sl-t="picker.yourSeats">${e("picker.yourSeats","Your seats")}</span>${rt({id:"sl-info-seats",label:e("picker.aboutYourSeats","How to choose seats"),text:e("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you."),ref:"trayHint",wrapRef:"seatsInfo"})}</span>
56
54
  <span class="sl-seat-summary" data-ref="seatSummary"></span>
57
55
  </div>
58
56
  <div class="sl-tray" data-ref="tray"></div>
@@ -61,7 +59,7 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
61
59
  <button type="button" class="sl-cta" data-ref="cta" disabled></button>
62
60
  </div>
63
61
  </div>
64
- </div>`;let s={};return n.querySelectorAll("[data-ref]").forEach(r=>{s[r.dataset.ref]=r}),{root:n,mapHost:s.map,els:s}}function fs(i){let e=(t,n)=>{for(let s of i.querySelectorAll(`[${t}]`)){let r=s.getAttribute(t);if(!r)continue;let o=kl(r);o!==r&&n(s,o)}};e("data-sl-t",(t,n)=>{t.textContent=n}),e("data-sl-a",(t,n)=>{t.setAttribute("aria-label",n)}),e("data-sl-ti",(t,n)=>{t.setAttribute("title",n)})}function Jt(i,e){let t=bs(i),n=Ll.includes(t)?t:"en";return e&&Pl(e),{locale:n,direction:gs(n),ready:Cl(i)}}function ei(i,e,t){i.lang=e.locale,i.dir=e.direction,e.ready.then(t)}function ys(i,e){if(!i)return null;let t=(e.languages??[]).map(s=>bs(s)).filter((s,r,o)=>o.indexOf(s)===r);if(t.length<2)return null;let n=document.createElement("select");n.className="sl-langsel",n.setAttribute("aria-label",e.label);for(let s of t){let r=document.createElement("option");r.value=s,r.textContent=Al[s]??s,r.selected=s===El(),n.appendChild(r)}return n.addEventListener("change",()=>e.onChange(n.value)),i.appendChild(n),n}function vs(i,e){e.root.lang=i,e.root.dir=gs(i),fs(e.root);for(let n of e.painters)try{n()}catch{}e.refreshMapCopy();let t=e.languageSelect;t&&t.value!==i&&(t.value=i)}var ne=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}},Ml=new Set(["buyer_access_expired"]),Hl=new Set(["paused","provider_failed","channel_denied","sales_not_open"]);function Rl(i,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";case"audience_not_public":return"audience_not_public";case"sales_not_open":return"sales_not_open";case"origin_not_allowed":return"origin_not_allowed";default:break}return i===401?"invalid":null}function Il(i,e){return i===401&&!!e&&Ml.has(e)}var Ol=3e4,ee,te,st,rt,Ct,He,Se,ot,At,Pt,Lt,Ne,ie,Zi,ti,nt,oe=class{constructor(e){L(this,ie);L(this,ee,null);L(this,te,0);L(this,st,null);L(this,rt);L(this,Ct);L(this,He,null);L(this,Se,null);L(this,ot,null);L(this,At);L(this,Pt);L(this,Lt,!1);L(this,Ne);if(T(this,rt,e.provider),T(this,Ct,e.skewMs??Ol),T(this,At,e.onExpired),T(this,Pt,e.onUnavailable),e.token){let t=typeof e.token=="string"?{token:e.token}:e.token;x(this,ie,Zi).call(this,t)}T(this,Lt,!!m(this,rt)||!!m(this,ee))}get configured(){return m(this,Lt)}onRenewed(e){T(this,Ne,e)}get unavailable(){return m(this,Se)}get hasToken(){return!!m(this,ee)&&(m(this,te)===0||m(this,te)>Date.now())}get expiresAt(){return m(this,te)}async authorization(e="initial"){if(!this.configured)return null;if(m(this,Se))throw new ne(m(this,Se));let t=Date.now();if(!m(this,ee)||m(this,te)>0&&m(this,te)-m(this,Ct)<=t){let s=!!m(this,ee)&&m(this,te)>0&&m(this,te)<=t,r=m(this,ee)?s?"expired":"expiring":e,o=await x(this,ie,ti).call(this,r);if(!o)throw new ne(m(this,Se)??m(this,ot)??x(this,ie,nt).call(this,"provider_failed"));return`Bearer ${o}`}return`Bearer ${m(this,ee)}`}async handleFailure(e,t){var s;if(!this.configured)return!1;if(Il(e,t)){T(this,ee,null),T(this,te,0);let r=await x(this,ie,ti).call(this,"unauthorized",t);return(s=m(this,At))==null||s.call(this,{reason:"unauthorized",code:t,refreshed:!!r}),!!r}let n=Rl(e,t);return n&&x(this,ie,nt).call(this,n,t,e),!1}async refresh(e="manual"){return T(this,Se,null),T(this,ot,null),T(this,ee,null),T(this,te,0),!!await x(this,ie,ti).call(this,e)}clear(){T(this,ee,null),T(this,st,null),T(this,te,0),T(this,He,null),T(this,Ne,void 0)}toJSON(){return{configured:this.configured,hasToken:this.hasToken}}toString(){return"[BuyerAccessContext redacted]"}};ee=new WeakMap,te=new WeakMap,st=new WeakMap,rt=new WeakMap,Ct=new WeakMap,He=new WeakMap,Se=new WeakMap,ot=new WeakMap,At=new WeakMap,Pt=new WeakMap,Lt=new WeakMap,Ne=new WeakMap,ie=new WeakSet,Zi=function(e){return!e||typeof e.token!="string"||!e.token?null:(T(this,st,e.token),T(this,ee,e.token),T(this,te,typeof e.expiresAt=="number"?e.expiresAt:0),m(this,ee))},ti=function(e,t){if(m(this,He))return m(this,He);let n=m(this,rt);if(!n)return x(this,ie,nt).call(this,"no_token",t),Promise.resolve(null);let s=m(this,st),r=(async()=>{try{let o=await n({reason:e}),a=x(this,ie,Zi).call(this,o);if(!a)return x(this,ie,nt).call(this,"provider_failed",t),null;if(s&&s!==a&&m(this,Ne))try{await m(this,Ne).call(this,{previousToken:s,token:a,reason:e})}catch{}return a}catch{return x(this,ie,nt).call(this,"provider_failed",t),null}finally{T(this,He,null)}})();return T(this,He,r),r},nt=function(e,t,n){var r;let s={reason:e,code:t,status:n,retryable:e==="paused"||e==="channel_denied"||e==="sales_not_open"};return T(this,ot,s),Hl.has(e)||(T(this,Se,s),T(this,ee,null),T(this,te,0)),(r=m(this,Pt))==null||r.call(this,s),s};function Mt(i,e={}){return!i.buyerAccessTokenProvider&&!i.buyerAccessToken?null:new oe({provider:i.buyerAccessTokenProvider,token:i.buyerAccessToken,...e})}var _l=3e4;function Dl(i){if(!i||typeof i!="object"||Array.isArray(i))return!1;let e=i;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 Ji=class{constructor(e,t,n){this.base=e;this.event=t;this.publicKey=n;this.value=null;this.inflight=null}async load(e=!1){if(e&&(this.value=null),this.value&&this.value.expiresAt-_l>Date.now())return this.value;if(this.inflight)return this.inflight;let t=(async()=>{let n=await fetch(`${this.base}/pub/events/${encodeURIComponent(this.event)}/bootstrap`,{method:"POST",body:JSON.stringify({publicKey:this.publicKey}),credentials:"omit"}),s=await n.json().catch(()=>null);if(!n.ok){let r=n.status===429?Zt(n.headers.get("Retry-After"),s?.retryAfterSeconds):void 0;throw new $(n.status,s?.error??`request_failed_${n.status}`,s?.code??s?.error,void 0,void 0,r)}if(!Dl(s))throw new $(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",n=await this.load(t);return{token:n.token,expiresAt:n.expiresAt}}},en=class extends Me{constructor(t,n,s,r,o){super(t,{...o,access:r});this.event=n;this.loader=s;this.bootstrapAccess=r;this.initialChartDelivered=!1;this.initialObjectsDelivered=!1}assertEvent(t){if(t!==this.event)throw new $(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 n=await this.bundle(t);return this.initialChartDelivered=!0,{event:n.event,doc:n.doc,chartDelivery:n.chartDelivery}}async objects(t){if(this.assertEvent(t),this.initialObjectsDelivered)return super.objects(t);let n=await this.bundle(t);return this.initialObjectsDelivered=!0,n.objects}};function ii(i){let e=new Ji(i.base,i.event,i.publicKey),t=new oe({provider:({reason:n})=>e.token(n),...i.accessHooks});return{access:t,api:new en(i.base,i.event,e,t,i.apiOptions??{})}}import{t as ke,tCount as Fe}from"@seatlayer/core";var K={enter:260,exit:180,spring:320,flight:500,stagger:30,crossfade:120,collapse:150,rung:200,reducedFade:120,easeEnter:"cubic-bezier(.2,.8,.2,1)",easeExit:"cubic-bezier(.4,0,1,1)",easeSpring:"cubic-bezier(.34,1.56,.64,1)"};var Bl=`.sl-picker,.sl-modal-scrim,.sl-mo-host{--sl-dur-enter:${K.enter}ms;--sl-dur-exit:${K.exit}ms;--sl-dur-spring:${K.spring}ms;--sl-dur-flight:${K.flight}ms;--sl-dur-stagger:${K.stagger}ms;--sl-dur-xfade:${K.crossfade}ms;--sl-dur-collapse:${K.collapse}ms;--sl-dur-rung:${K.rung}ms;--sl-ease-enter:${K.easeEnter};--sl-ease-exit:${K.easeExit};--sl-ease-spring:${K.easeSpring};--sl-mo-ox:50%;--sl-mo-oy:50%}`,Nl=`@media (prefers-reduced-motion:reduce){.sl-picker,.sl-modal-scrim,.sl-mo-host{--sl-dur-enter:0ms;--sl-dur-exit:0ms;--sl-dur-spring:0ms;--sl-dur-flight:0ms;--sl-dur-stagger:0ms;--sl-dur-collapse:0ms;--sl-dur-rung:0ms;--sl-dur-xfade:${K.reducedFade}ms}.sl-mo-in,.sl-mo-out,.sl-mo-slide-up,.sl-mo-slide-down,.sl-mo-spring,.sl-mo-rise,.sl-mo-zoom,.sl-mo-scrim,.sl-mo-stagger > *{animation-name:slMoFade;animation-duration:${K.reducedFade}ms;animation-delay:0ms}.sl-mo-hint,.sl-mo-rotate-in,.sl-mo-fly,.sl-mo-collapse{animation:none}.sl-confirm-add-invite,.sl-confirm-add-invite::after{animation:none}.sl-mo-indicator{transition:none}}`,ws=Bl+`
62
+ </div>`;let o={};return n.querySelectorAll("[data-ref]").forEach(s=>{o[s.dataset.ref]=s}),{root:n,mapHost:o.map,els:o}}function Io(i){let e=(t,n)=>{for(let o of i.querySelectorAll(`[${t}]`)){let s=o.getAttribute(t);if(!s)continue;let r=Pl(s);r!==s&&n(o,r)}};e("data-sl-t",(t,n)=>{t.textContent=n}),e("data-sl-a",(t,n)=>{t.setAttribute("aria-label",n)}),e("data-sl-ti",(t,n)=>{t.setAttribute("title",n)})}function ni(i,e){let t=_o(i),n=Ol.includes(t)?t:"en";return e&&Il(e),{locale:n,direction:Oo(n),ready:Hl(i)}}function oi(i,e,t){i.lang=e.locale,i.dir=e.direction,e.ready.then(t)}function Do(i,e){if(!i)return null;let t=(e.languages??[]).map(o=>_o(o)).filter((o,s,r)=>r.indexOf(o)===s);if(t.length<2)return null;let n=document.createElement("select");n.className="sl-langsel",n.setAttribute("aria-label",e.label);for(let o of t){let s=document.createElement("option");s.value=o,s.textContent=Rl[o]??o,s.selected=o===Ml(),n.appendChild(s)}return n.addEventListener("change",()=>e.onChange(n.value)),i.appendChild(n),n}function No(i,e){e.root.lang=i,e.root.dir=Oo(i),Io(e.root);for(let n of e.painters)try{n()}catch{}e.refreshMapCopy();let t=e.languageSelect;t&&t.value!==i&&(t.value=i)}var ne=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}},_l=new Set(["buyer_access_expired"]),Dl=new Set(["paused","provider_failed","channel_denied","sales_not_open"]);function Nl(i,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";case"audience_not_public":return"audience_not_public";case"sales_not_open":return"sales_not_open";case"origin_not_allowed":return"origin_not_allowed";default:break}return i===401?"invalid":null}function Bl(i,e){return i===401&&!!e&&_l.has(e)}var Vl=3e4,ee,te,lt,ct,Pt,Me,Se,dt,Lt,Mt,Ht,ze,ie,tn,si,at,ae=class{constructor(e){L(this,ie);L(this,ee,null);L(this,te,0);L(this,lt,null);L(this,ct);L(this,Pt);L(this,Me,null);L(this,Se,null);L(this,dt,null);L(this,Lt);L(this,Mt);L(this,Ht,!1);L(this,ze);if(T(this,ct,e.provider),T(this,Pt,e.skewMs??Vl),T(this,Lt,e.onExpired),T(this,Mt,e.onUnavailable),e.token){let t=typeof e.token=="string"?{token:e.token}:e.token;x(this,ie,tn).call(this,t)}T(this,Ht,!!m(this,ct)||!!m(this,ee))}get configured(){return m(this,Ht)}onRenewed(e){T(this,ze,e)}get unavailable(){return m(this,Se)}get hasToken(){return!!m(this,ee)&&(m(this,te)===0||m(this,te)>Date.now())}get expiresAt(){return m(this,te)}async authorization(e="initial"){if(!this.configured)return null;if(m(this,Se))throw new ne(m(this,Se));let t=Date.now();if(!m(this,ee)||m(this,te)>0&&m(this,te)-m(this,Pt)<=t){let o=!!m(this,ee)&&m(this,te)>0&&m(this,te)<=t,s=m(this,ee)?o?"expired":"expiring":e,r=await x(this,ie,si).call(this,s);if(!r)throw new ne(m(this,Se)??m(this,dt)??x(this,ie,at).call(this,"provider_failed"));return`Bearer ${r}`}return`Bearer ${m(this,ee)}`}async handleFailure(e,t){var o;if(!this.configured)return!1;if(Bl(e,t)){T(this,ee,null),T(this,te,0);let s=await x(this,ie,si).call(this,"unauthorized",t);return(o=m(this,Lt))==null||o.call(this,{reason:"unauthorized",code:t,refreshed:!!s}),!!s}let n=Nl(e,t);return n&&x(this,ie,at).call(this,n,t,e),!1}async refresh(e="manual"){return T(this,Se,null),T(this,dt,null),T(this,ee,null),T(this,te,0),!!await x(this,ie,si).call(this,e)}clear(){T(this,ee,null),T(this,lt,null),T(this,te,0),T(this,Me,null),T(this,ze,void 0)}toJSON(){return{configured:this.configured,hasToken:this.hasToken}}toString(){return"[BuyerAccessContext redacted]"}};ee=new WeakMap,te=new WeakMap,lt=new WeakMap,ct=new WeakMap,Pt=new WeakMap,Me=new WeakMap,Se=new WeakMap,dt=new WeakMap,Lt=new WeakMap,Mt=new WeakMap,Ht=new WeakMap,ze=new WeakMap,ie=new WeakSet,tn=function(e){return!e||typeof e.token!="string"||!e.token?null:(T(this,lt,e.token),T(this,ee,e.token),T(this,te,typeof e.expiresAt=="number"?e.expiresAt:0),m(this,ee))},si=function(e,t){if(m(this,Me))return m(this,Me);let n=m(this,ct);if(!n)return x(this,ie,at).call(this,"no_token",t),Promise.resolve(null);let o=m(this,lt),s=(async()=>{try{let r=await n({reason:e}),a=x(this,ie,tn).call(this,r);if(!a)return x(this,ie,at).call(this,"provider_failed",t),null;if(o&&o!==a&&m(this,ze))try{await m(this,ze).call(this,{previousToken:o,token:a,reason:e})}catch{}return a}catch{return x(this,ie,at).call(this,"provider_failed",t),null}finally{T(this,Me,null)}})();return T(this,Me,s),s},at=function(e,t,n){var s;let o={reason:e,code:t,status:n,retryable:e==="paused"||e==="channel_denied"||e==="sales_not_open"};return T(this,dt,o),Dl.has(e)||(T(this,Se,o),T(this,ee,null),T(this,te,0)),(s=m(this,Mt))==null||s.call(this,o),o};function Rt(i,e={}){return!i.buyerAccessTokenProvider&&!i.buyerAccessToken?null:new ae({provider:i.buyerAccessTokenProvider,token:i.buyerAccessToken,...e})}var Fl=3e4;function zl(i){if(!i||typeof i!="object"||Array.isArray(i))return!1;let e=i;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 nn=class{constructor(e,t,n){this.base=e;this.event=t;this.publicKey=n;this.value=null;this.inflight=null}async load(e=!1){if(e&&(this.value=null),this.value&&this.value.expiresAt-Fl>Date.now())return this.value;if(this.inflight)return this.inflight;let t=(async()=>{let n=await fetch(`${this.base}/pub/events/${encodeURIComponent(this.event)}/bootstrap`,{method:"POST",body:JSON.stringify({publicKey:this.publicKey}),credentials:"omit"}),o=await n.json().catch(()=>null);if(!n.ok){let s=n.status===429?Yt(n.headers.get("Retry-After"),o?.retryAfterSeconds):void 0;throw new z(n.status,o?.error??`request_failed_${n.status}`,o?.code??o?.error,void 0,void 0,s)}if(!zl(o))throw new z(502,"invalid_bootstrap_response","invalid_bootstrap_response");return this.value=o,o})();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",n=await this.load(t);return{token:n.token,expiresAt:n.expiresAt}}},on=class extends Le{constructor(t,n,o,s,r){super(t,{...r,access:s});this.event=n;this.loader=o;this.bootstrapAccess=s;this.initialChartDelivered=!1;this.initialObjectsDelivered=!1}assertEvent(t){if(t!==this.event)throw new z(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 n=await this.bundle(t);return this.initialChartDelivered=!0,{event:n.event,doc:n.doc,chartDelivery:n.chartDelivery}}async objects(t){if(this.assertEvent(t),this.initialObjectsDelivered)return super.objects(t);let n=await this.bundle(t);return this.initialObjectsDelivered=!0,n.objects}};function ri(i){let e=new nn(i.base,i.event,i.publicKey),t=new ae({provider:({reason:n})=>e.token(n),...i.accessHooks});return{access:t,api:new on(i.base,i.event,e,t,i.apiOptions??{})}}import{t as ke,tCount as $e}from"@seatlayer/core";var q={enter:260,exit:180,spring:320,flight:500,stagger:30,crossfade:120,collapse:150,rung:200,reducedFade:120,easeEnter:"cubic-bezier(.2,.8,.2,1)",easeExit:"cubic-bezier(.4,0,1,1)",easeSpring:"cubic-bezier(.34,1.56,.64,1)"};var $l=`.sl-picker,.sl-modal-scrim,.sl-mo-host{--sl-dur-enter:${q.enter}ms;--sl-dur-exit:${q.exit}ms;--sl-dur-spring:${q.spring}ms;--sl-dur-flight:${q.flight}ms;--sl-dur-stagger:${q.stagger}ms;--sl-dur-xfade:${q.crossfade}ms;--sl-dur-collapse:${q.collapse}ms;--sl-dur-rung:${q.rung}ms;--sl-ease-enter:${q.easeEnter};--sl-ease-exit:${q.easeExit};--sl-ease-spring:${q.easeSpring};--sl-mo-ox:50%;--sl-mo-oy:50%}`,jl=`@media (prefers-reduced-motion:reduce){.sl-picker,.sl-modal-scrim,.sl-mo-host{--sl-dur-enter:0ms;--sl-dur-exit:0ms;--sl-dur-spring:0ms;--sl-dur-flight:0ms;--sl-dur-stagger:0ms;--sl-dur-collapse:0ms;--sl-dur-rung:0ms;--sl-dur-xfade:${q.reducedFade}ms}.sl-mo-in,.sl-mo-out,.sl-mo-slide-up,.sl-mo-slide-down,.sl-mo-spring,.sl-mo-rise,.sl-mo-zoom,.sl-mo-scrim,.sl-mo-stagger > *{animation-name:slMoFade;animation-duration:${q.reducedFade}ms;animation-delay:0ms}.sl-mo-hint,.sl-mo-rotate-in,.sl-mo-fly,.sl-mo-collapse{animation:none}.sl-confirm-add-invite,.sl-confirm-add-invite::after{animation:none}.sl-mo-indicator{transition:none}}`,Bo=$l+`
65
63
  /* Anchored open/close. The translate is 8px TOWARD the anchor, which is what
66
64
  makes the card look attached to the seat rather than dropped on the map. */
67
65
  .sl-mo-in{transform-origin:var(--sl-mo-ox) var(--sl-mo-oy);
@@ -128,7 +126,7 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
128
126
  @keyframes slMoZoom{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}
129
127
  .sl-mo-rotate-in{animation:slMoSpin var(--sl-dur-spring) var(--sl-ease-spring) 1 both}
130
128
  @keyframes slMoSpin{from{opacity:0;transform:rotate(-140deg) scale(.8)}to{opacity:1;transform:none}}
131
- `+Nl;function ni(){try{return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}catch{return!1}}function tn(i,e){if(!e){i.style.removeProperty("--sl-mo-ox"),i.style.removeProperty("--sl-mo-oy");return}si(i,e,i.getBoundingClientRect())}function si(i,e,t){let n=t.width||1,s=t.height||1,r=o=>Math.max(0,Math.min(100,o));i.style.setProperty("--sl-mo-ox",`${r((e.x-t.left)/n*100).toFixed(1)}%`),i.style.setProperty("--sl-mo-oy",`${r((e.y-t.top)/s*100).toFixed(1)}%`)}function xs(i,e,t){let n=i.getBoundingClientRect(),s=t.getBoundingClientRect();si(i,e,{left:n.left-s.left,top:n.top-s.top,width:n.width,height:n.height})}function ri(i,e){i.classList.remove("sl-mo-out"),e!==void 0&&tn(i,e),i.classList.remove("sl-mo-in"),i.offsetWidth,i.classList.add("sl-mo-in")}function Ss(i){i.classList.add("sl-mo-stagger");let e=0;for(let t of Array.from(i.children))t.style.setProperty("--sl-mo-i",String(e)),e+=1}function at(i,e,t={className:"sl-mo-out",duration:K.exit}){let n=()=>{s||(s=!0,!(typeof window>"u")&&(clearTimeout(r),i.removeEventListener("animationend",n),e?e():i.remove()))},s=!1;i.classList.remove("sl-mo-in","sl-mo-slide-up","sl-mo-spring","sl-mo-zoom","sl-mo-rise"),i.classList.add(t.className),i.addEventListener("animationend",n);let r=setTimeout(n,ni()?0:t.duration+60)}var Oh={className:"sl-mo-slide-down",duration:K.exit};function ks(i){if(ni())return i.onArrive?.(),null;let e=document.createElement("div");e.className="sl-mo-fly sl-mo-host",e.setAttribute("aria-hidden","true"),e.textContent=i.label??"",e.style.left=`${i.from.x}px`,e.style.top=`${i.from.y}px`,e.style.background=i.color??"var(--sl-accent,#6e7bff)",e.style.color=i.ink??"#fff",e.style.setProperty("--sl-fly-dx",`${Math.round(i.to.x-i.from.x)}px`),e.style.setProperty("--sl-fly-dy",`${Math.round(i.to.y-i.from.y)}px`),document.body.appendChild(e);let t=!1,n=()=>{t||(t=!0,window.clearTimeout(s),e.remove(),i.onArrive?.())};e.addEventListener("animationend",n);let s=window.setTimeout(n,K.flight+80);return e}var z=i=>String(i??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e]);function lt(i,e){let t=0;for(let n of i.get(e)?.values()??[])t+=n;return t}function Ts(i){let e=[];for(let[t,n]of i)for(let[s,r]of n)r>0&&e.push({areaId:t,tierId:s,qty:r});return e}function Es(i){let e=new Map;for(let t of i.keys())e.set(t,lt(i,t));return e}function Ht(i,e,t,n){let s=i.get(e)??new Map;n>0?s.set(t,n):s.delete(t),s.size?i.set(e,s):i.delete(e)}function Cs(i){let e=new Map;for(let t of i)t.objectType!=="ga"||!t.objectId||e.set(t.objectId,(e.get(t.objectId)??0)+(t.quantity??1));return e}function Re(i,e){let t=Cs(e),n=0;for(let s of i.keys())n+=Math.max(0,lt(i,s)-(t.get(s)??0));return n}function As(i,e,t){let n=Cs(t),s=0;for(let r of e){let o=i.gaQty.get(r.id);if(!o)continue;let a=n.get(r.id)??0;for(let[l,c]of o){let d=Math.max(0,c-a);a=Math.max(0,a-c),s+=d*i.paidPrice(r.categoryKey,l,Fl(r,l),r.id)}}return s}function Fl(i,e){return e?i.tiers?.find(t=>t.id===e)?.price??i.price:i.price}function Ps(i){let e=[],t=new Map;for(let n of i){if(n.objectType!=="ga"||!n.objectId){e.push({...n,labels:[n.label]});continue}let s=`${n.objectId}\0${n.tierId??""}`,r=t.get(s);if(r){r.quantity=(r.quantity??0)+(n.quantity??1),r.labels.push(n.label);continue}let o={...n,quantity:n.quantity??1,labels:[n.label]};t.set(s,o),e.push(o)}return e}function Ls(i,e,t){let n=new Set(t);for(let s of e)s.objectType==="ga"&&s.objectId&&n.has(s.label)&&Ht(i,s.objectId,s.tierId??null,0)}function sn(i,e){if(i.objectType!=="ga")return i.label;let t=e.find(n=>n.id===i.objectId);return t?.displayLabel??t?.label??i.label}function Vl(i){let e=new Map;for(let t of i){if(t.objectType!=="ga"||!t.objectId)continue;let n=`${t.objectId}\0${t.tierId??""}`;e.set(n,(e.get(n)??0)+(t.quantity??1))}return e}function oi(i){let e=i.tiers??[];return e.length>1?e.map(t=>({id:t.id,label:t.name||t.id,price:t.price})):[{id:null,label:i.displayType??ke("picker.generalAdmission"),price:i.price}]}function Ms(i,e){let t=i.totalTicketCount()-lt(i.gaQty,e.id);return Math.max(0,Math.min(e.available,i.maxTickets-t))}function rn(i,e,t,n){if(fe(i,!1),i.salesClosed){i.toast(i.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let s=oi(e),r=i.gaQty.get(e.id),o=lt(i.gaQty,e.id)>0,a=Ms(i,e);if(a<=0&&!o){i.toast(e.available>0?ke("picker.maxTicketsForOrder",{count:i.maxTickets}):i.tf("picker.soldOutTitle","Sold out"),"warning");return}if(i.onGAPromptHook){let u={};for(let[g,y]of r??[])u[g??""]=y;if(i.onGAPromptHook({area:e,selected:u,min:0,max:a,tiers:s,confirm:g=>{Gl(i,e,s,g,a)},cancel:()=>fe(i)})===!0)return}let l=new Map;for(let u of s)l.set(u.id,r?.get(u.id)??0);!o&&a>0&&l.set(s[0].id,1);let c={area:e,tiers:s,draft:l,max:a,reopened:o},d=i.root?.dataset.layout==="narrow",p=document.createElement("div");p.className=d?"sl-ga-scrim sl-mo-scrim":"sl-ga-pop-layer",p.innerHTML=$l(i,c,d),i.root?.appendChild(p),i.gaPromptEl=p,i.gaPromptReturnFocus=n??document.activeElement,d||Ul(i,p,t),i.reducedMotion()&&(p.dataset.motion="reduced"),Rs(i,c),zl(i,p,c),requestAnimationFrame(()=>p.querySelector('[data-ga-step="1"]')?.focus())}function $l(i,e,t){let{area:n,tiers:s}=e,r=s.length>1,o=n.displayLabel??n.label,a=s.map(l=>`<div class="sl-ga-prompt-row" data-ga-tier="${z(l.id??"")}"><div class="sl-ga-prompt-label"><span>${z(r?l.label:i.tf("picker.gaChooseTickets","How many tickets?"))}</span>`+(r?`<small>${z(i.money(i.paidPrice(n.categoryKey,l.id,l.price,n.id)))}</small>`:"")+`</div><div class="sl-ga-stepper" role="group" aria-label="${z(r?l.label:o)}"><button type="button" data-ga-step="-1" aria-label="${z(i.tf("picker.fewer","Fewer"))}">\u2212</button><output data-ga-qty aria-live="polite">0</output><button type="button" data-ga-step="1" aria-label="${z(i.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="${z(ke("picker.gaChooseForArea",{area:o}))}"><div class="sl-ga-prompt-head"><div class="sl-ga-prompt-eyebrow">${z(n.displayType??i.tf("picker.generalAdmission","General admission"))}</div><h2 class="sl-ga-prompt-title">${z(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="${z(ke("common.close"))}">\xD7</button></div><div class="sl-ga-prompt-body">${a}`+(s.length>1?`<div class="sl-ga-prompt-total"><span>${z(i.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>${z(i.tf("picker.gaRemove","Remove"))}</button>`:`<button type="button" class="sl-ga-prompt-remove" data-ga-cancel>${z(ke("common.cancel"))}</button>`)+'<button type="button" class="sl-ga-prompt-confirm" data-ga-confirm></button></div></section>'}function on(i){let e=0;for(let t of i.draft.values())e+=t;return e}function Hs(i,e){let t=0;for(let n of e.tiers)t+=(e.draft.get(n.id)??0)*i.paidPrice(e.area.categoryKey,n.id,n.price,e.area.id);return t}function Rs(i,e){let t=i.gaPromptEl;if(!t)return;let n=on(e),s=Hs(i,e);t.querySelectorAll("[data-ga-tier]").forEach(c=>{let d=c.dataset.gaTier?c.dataset.gaTier:null,p=e.draft.get(d)??0,u=c.querySelector("[data-ga-qty]");u&&(u.value=String(p)),c.querySelectorAll("[data-ga-step]").forEach(h=>{h.disabled=Number(h.dataset.gaStep)<0?p<=0:n>=e.max})});let r=t.querySelector("[data-ga-sub]");r&&(r.textContent=`${i.money(i.paidPrice(e.area.categoryKey,e.tiers[0].id,e.tiers[0].price,e.area.id))} \xB7 ${Fe("picker.leftCount",e.area.available)}`);let o=t.querySelector("[data-ga-total]");o&&(o.textContent=i.money(s));let a=t.querySelector("[data-ga-hint]");a&&(a.textContent=n>=e.max&&e.max>0?e.area.available<=e.max?Fe("picker.leftCount",e.area.available):ke("picker.maxTicketsForOrder",{count:i.maxTickets}):"");let l=t.querySelector("[data-ga-confirm]");l&&(l.textContent=e.reopened?Fe("picker.gaUpdate",n,{count:n}):Fe("picker.gaAdd",n,{count:n,price:i.money(s)}),l.disabled=n<=0&&!e.reopened)}function zl(i,e,t){e.querySelectorAll("[data-ga-step]").forEach(n=>{n.addEventListener("click",()=>{let s=n.closest("[data-ga-tier]");if(!s)return;let r=s.dataset.gaTier?s.dataset.gaTier:null,o=Number(n.dataset.gaStep),a=t.draft.get(r)??0,l=t.max-on(t);t.draft.set(r,Math.max(0,a+(o>0?Math.min(1,l):-1))),Rs(i,t)})}),e.querySelectorAll("[data-ga-cancel]").forEach(n=>n.addEventListener("click",()=>fe(i))),e.querySelector("[data-ga-remove]")?.addEventListener("click",()=>{i.gaQty.delete(t.area.id),fe(i),i.syncTray(),nn(i,ke("picker.gaRemoved",{area:t.area.displayLabel??t.area.label}))}),e.querySelector("[data-ga-confirm]")?.addEventListener("click",()=>{jl(i,t)}),e.addEventListener("mousedown",n=>{n.target===e&&fe(i)}),e.addEventListener("keydown",n=>{if(n.key==="Escape"){n.stopPropagation(),fe(i);return}if(n.key!=="Tab")return;let s=[...e.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!s.length)return;let r=s[0],o=s[s.length-1];n.shiftKey&&document.activeElement===r?(n.preventDefault(),o.focus()):!n.shiftKey&&document.activeElement===o&&(n.preventDefault(),r.focus())})}function jl(i,e){let t=on(e),n=Hs(i,e);for(let r of e.tiers)Ht(i.gaQty,e.area.id,r.id,e.draft.get(r.id)??0);fe(i),i.syncTray();let s=e.area.displayLabel??e.area.label;t>0?nn(i,Fe("picker.gaAdded",t,{count:t,area:s,price:i.money(n)})):nn(i,ke("picker.gaRemoved",{area:s}))}function Gl(i,e,t,n,s){if(typeof n=="number")Ht(i.gaQty,e.id,t[0].id,Math.max(0,Math.min(s,Math.floor(n))));else{i.gaQty.delete(e.id);let r=s;for(let o of t){let a=Math.max(0,Math.floor(n[o.id??""]??0)),l=Math.min(a,r);r-=l,Ht(i.gaQty,e.id,o.id,l)}}i.syncTray()}function fe(i,e=!0){let t=i.gaPromptReturnFocus;i.gaPromptEl&&at(i.gaPromptEl),i.gaPromptEl=null,i.gaPromptReturnFocus=null,e&&t&&requestAnimationFrame(()=>(t.isConnected?t:i.root)?.focus())}function Ul(i,e,t){let n=i.root,s=e.querySelector(".sl-ga-pop");if(!n||!s||!t)return;let r=n.getBoundingClientRect(),o=t.x-r.left,a=t.y-r.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,d=Math.max(8,Math.min(r.width-l-8,o-l/2)),p=a-c-14,u=p>=8?p:Math.min(r.height-c-8,a+14);s.style.left=`${d}px`,s.style.top=`${Math.max(8,u)}px`,s.dataset.side=p>=8?"above":"below",s.style.setProperty("--sl-ga-arrow-x",`${Math.max(12,Math.min(l-12,o-d))}px`)})}function nn(i,e){i.srEl&&(i.srEl.textContent=e)}function Is(i,e,t=[]){let n=[],s=Vl(t);for(let o of e){let a=i.gaQty.get(o.id);if(!a)continue;let l=oi(o);for(let c of l){let d=(a.get(c.id)??0)-(s.get(`${o.id}\0${c.id??""}`)??0);if(d<=0)continue;let p=i.paidPrice(o.categoryKey,c.id,c.price,o.id);n.push(`<div class="sl-ga" data-ga="${z(o.id)}" data-ga-row-tier="${z(c.id??"")}"><div class="sl-ga-info"><div class="sl-ga-name">${z(o.displayLabel??o.label)}</div><div class="sl-ga-sub">${z(l.length>1?c.label:o.displayType??i.tf("picker.generalAdmission","General admission"))} \xB7 ${z(i.money(p))} \xB7 ${z(Fe("picker.leftCount",o.available))}</div></div><div class="sl-ga-qty"><button type="button" data-d="-1" aria-label="${z(i.tf("picker.fewer","Fewer"))}">\u2212</button><span>${d}</span><button type="button" data-d="1" aria-label="${z(i.tf("picker.more","More"))}">+</button></div></div>`)}}let r=e.filter(o=>lt(i.gaQty,o.id)<=0&&!t.some(a=>a.objectId===o.id));return r.length&&n.push(`<div class="sl-ga-areas" data-ga-areas><button type="button" class="sl-ga-areas-toggle" data-ga-areas-toggle aria-expanded="${i.gaAreasExpanded}"><span>${z(i.tf("picker.gaAreasHeading","Areas"))}</span><small>${r.length}</small></button>`+(i.gaAreasExpanded?`<div class="sl-ga-areas-list">${r.map(o=>`<button type="button" class="sl-ga-area-open" data-ga-open="${z(o.id)}"${o.available<=0?" disabled":""}><span class="name">${z(o.displayLabel??o.label)}<small>${z(o.displayType??i.tf("picker.generalAdmission","General admission"))}</small></span><span class="meta">${z(i.money(i.paidPrice(o.categoryKey,null,o.price,o.id)))} \xB7 ${z(o.available>0?Fe("picker.leftCount",o.available):i.tf("picker.soldOutTitle","Sold out"))}</span></button>`).join("")}</div>`:"")+"</div>"),n.join("")}function Os(i,e,t){e.querySelectorAll(".sl-ga .sl-ga-qty button").forEach(n=>{n.addEventListener("click",()=>{let s=n.closest(".sl-ga");if(!s?.dataset.ga)return;let r=t.find(c=>c.id===s.dataset.ga);if(!r)return;let o=s.dataset.gaRowTier?s.dataset.gaRowTier:null,a=Number(n.dataset.d),l=i.gaQty.get(r.id)?.get(o)??0;if(a>0&&Ms(i,r)-lt(i.gaQty,r.id)<=0){i.toast(ke("picker.maxTicketsForOrder",{count:i.maxTickets}),"warning");return}Ht(i.gaQty,r.id,o,Math.max(0,l+a)),i.syncTray()})}),e.querySelector("[data-ga-areas-toggle]")?.addEventListener("click",()=>{i.gaAreasExpanded=!i.gaAreasExpanded,i.syncTray()}),e.querySelectorAll("[data-ga-open]").forEach(n=>{n.addEventListener("click",()=>{let s=t.find(r=>r.id===n.dataset.gaOpen);s&&rn(i,s,null,n)})})}var ai='<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 ql=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,Kl=/[\s"'<>`\\]/;function Wl(i){return i.startsWith("//")?!1:i.startsWith("/")||i.startsWith("./")||i.startsWith("../")}function Yl(){try{let i=typeof location>"u"?"":location.origin;return i&&i!=="null"?i:null}catch{return null}}function ct(i){if(typeof i!="string"||!i||i.length>2e6||i!==i.trim())return!1;if(i.startsWith("data:"))return ql.test(i);if(Kl.test(i))return!1;let e=Yl();if(Wl(i)){if(!e)return!1;try{let t=new URL(i,e);return t.origin===e&&!t.username&&!t.password}catch{return!1}}try{let t=new URL(i);return t.username||t.password?!1:t.protocol==="https:"||e!=null&&t.origin===e}catch{return!1}}var Xl=/^[a-zA-Z0-9._-]+$/;function an(i){let e;try{e=new URL(i,"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 n=decodeURIComponent(t[1]),s=decodeURIComponent(t[2]);return!n||!Xl.test(s)?null:{eventKey:n,asset:s}}catch{return null}}function Ql(i){try{return/^\/pub\/events\/[^/]+\/assets(?:\/|$)/.test(new URL(i,"https://seatlayer.invalid").pathname)}catch{return!1}}var dt=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=an(e);if(!t)return Promise.resolve(Ql(e)||!ct(e)?null:e);if(t.eventKey!==this.eventKey||!this.load||this.disposed)return Promise.resolve(null);let n=this.pending.get(e);if(n)return n;let s=this.load(this.eventKey,t.asset).then(r=>{let o=URL.createObjectURL(r);return this.disposed?(URL.revokeObjectURL(o),null):(this.created.add(o),o)}).catch(r=>{throw this.pending.delete(e),r});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()}}};import{t as ut}from"@seatlayer/core";import{isAuthoredSeatView as rc,seatViewDisclosure as oc}from"@seatlayer/core/view3d/crossfade/panorama";var _s=`
129
+ `+jl;function ai(){try{return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}catch{return!1}}function sn(i,e){if(!e){i.style.removeProperty("--sl-mo-ox"),i.style.removeProperty("--sl-mo-oy");return}li(i,e,i.getBoundingClientRect())}function li(i,e,t){let n=t.width||1,o=t.height||1,s=r=>Math.max(0,Math.min(100,r));i.style.setProperty("--sl-mo-ox",`${s((e.x-t.left)/n*100).toFixed(1)}%`),i.style.setProperty("--sl-mo-oy",`${s((e.y-t.top)/o*100).toFixed(1)}%`)}function Vo(i,e,t){let n=i.getBoundingClientRect(),o=t.getBoundingClientRect();li(i,e,{left:n.left-o.left,top:n.top-o.top,width:n.width,height:n.height})}function Fo(i,e){i.classList.remove("sl-mo-out"),e!==void 0&&sn(i,e),i.classList.remove("sl-mo-in"),i.offsetWidth,i.classList.add("sl-mo-in")}function zo(i){i.classList.add("sl-mo-stagger");let e=0;for(let t of Array.from(i.children))t.style.setProperty("--sl-mo-i",String(e)),e+=1}function ci(i,e,t={className:"sl-mo-out",duration:q.exit}){let n=()=>{o||(o=!0,!(typeof window>"u")&&(clearTimeout(s),i.removeEventListener("animationend",n),e?e():i.remove()))},o=!1;i.classList.remove("sl-mo-in","sl-mo-slide-up","sl-mo-spring","sl-mo-zoom","sl-mo-rise"),i.classList.add(t.className),i.addEventListener("animationend",n);let s=setTimeout(n,ai()?0:t.duration+60)}var Gh={className:"sl-mo-slide-down",duration:q.exit};function $o(i){if(ai())return i.onArrive?.(),null;let e=document.createElement("div");e.className="sl-mo-fly sl-mo-host",e.setAttribute("aria-hidden","true"),e.textContent=i.label??"",e.style.left=`${i.from.x}px`,e.style.top=`${i.from.y}px`,e.style.background=i.color??"var(--sl-accent,#6e7bff)",e.style.color=i.ink??"#fff",e.style.setProperty("--sl-fly-dx",`${Math.round(i.to.x-i.from.x)}px`),e.style.setProperty("--sl-fly-dy",`${Math.round(i.to.y-i.from.y)}px`),document.body.appendChild(e);let t=!1,n=()=>{t||(t=!0,window.clearTimeout(o),e.remove(),i.onArrive?.())};e.addEventListener("animationend",n);let o=window.setTimeout(n,q.flight+80);return e}var $=i=>String(i??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e]);function pt(i,e){let t=0;for(let n of i.get(e)?.values()??[])t+=n;return t}function jo(i){let e=[];for(let[t,n]of i)for(let[o,s]of n)s>0&&e.push({areaId:t,tierId:o,qty:s});return e}function Go(i){let e=new Map;for(let t of i.keys())e.set(t,pt(i,t));return e}function It(i,e,t,n){let o=i.get(e)??new Map;n>0?o.set(t,n):o.delete(t),o.size?i.set(e,o):i.delete(e)}function Uo(i){let e=new Map;for(let t of i)t.objectType!=="ga"||!t.objectId||e.set(t.objectId,(e.get(t.objectId)??0)+(t.quantity??1));return e}function He(i,e){let t=Uo(e),n=0;for(let o of i.keys())n+=Math.max(0,pt(i,o)-(t.get(o)??0));return n}function qo(i,e,t){let n=Uo(t),o=0;for(let s of e){let r=i.gaQty.get(s.id);if(!r)continue;let a=n.get(s.id)??0;for(let[l,c]of r){let h=Math.max(0,c-a);a=Math.max(0,a-c),o+=h*i.paidPrice(s.categoryKey,l,Gl(s,l),s.id)}}return o}function Gl(i,e){return e?i.tiers?.find(t=>t.id===e)?.price??i.price:i.price}function Ko(i){let e=[],t=new Map;for(let n of i){if(n.objectType!=="ga"||!n.objectId){e.push({...n,labels:[n.label]});continue}let o=`${n.objectId}\0${n.tierId??""}`,s=t.get(o);if(s){s.quantity=(s.quantity??0)+(n.quantity??1),s.labels.push(n.label);continue}let r={...n,quantity:n.quantity??1,labels:[n.label]};t.set(o,r),e.push(r)}return e}function Wo(i,e,t){let n=new Set(t);for(let o of e)o.objectType==="ga"&&o.objectId&&n.has(o.label)&&It(i,o.objectId,o.tierId??null,0)}function an(i,e){if(i.objectType!=="ga")return i.label;let t=e.find(n=>n.id===i.objectId);return t?.displayLabel??t?.label??i.label}function Ul(i){let e=new Map;for(let t of i){if(t.objectType!=="ga"||!t.objectId)continue;let n=`${t.objectId}\0${t.tierId??""}`;e.set(n,(e.get(n)??0)+(t.quantity??1))}return e}function di(i){let e=i.tiers??[];return e.length>1?e.map(t=>({id:t.id,label:t.name||t.id,price:t.price})):[{id:null,label:i.displayType??ke("picker.generalAdmission"),price:i.price}]}function Yo(i,e){let t=i.totalTicketCount()-pt(i.gaQty,e.id);return Math.max(0,Math.min(e.available,i.maxTickets-t))}function ln(i,e,t,n){if(ge(i,!1),i.salesClosed){i.toast(i.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let o=di(e),s=i.gaQty.get(e.id),r=pt(i.gaQty,e.id)>0,a=Yo(i,e);if(a<=0&&!r){i.toast(e.available>0?ke("picker.maxTicketsForOrder",{count:i.maxTickets}):i.tf("picker.soldOutTitle","Sold out"),"warning");return}if(i.onGAPromptHook){let u={};for(let[f,b]of s??[])u[f??""]=b;if(i.onGAPromptHook({area:e,selected:u,min:0,max:a,tiers:o,confirm:f=>{Yl(i,e,o,f,a)},cancel:()=>ge(i)})===!0)return}let l=new Map;for(let u of o)l.set(u.id,s?.get(u.id)??0);!r&&a>0&&l.set(o[0].id,1);let c={area:e,tiers:o,draft:l,max:a,reopened:r},h=i.root?.dataset.layout==="narrow",d=document.createElement("div");d.className=h?"sl-ga-scrim sl-mo-scrim":"sl-ga-pop-layer",d.innerHTML=ql(i,c,h),i.root?.appendChild(d),i.gaPromptEl=d,i.gaPromptReturnFocus=n??document.activeElement,h||Xl(i,d,t),i.reducedMotion()&&(d.dataset.motion="reduced"),Zo(i,c),Kl(i,d,c),requestAnimationFrame(()=>d.querySelector('[data-ga-step="1"]')?.focus())}function ql(i,e,t){let{area:n,tiers:o}=e,s=o.length>1,r=n.displayLabel??n.label,a=o.map(l=>`<div class="sl-ga-prompt-row" data-ga-tier="${$(l.id??"")}"><div class="sl-ga-prompt-label"><span>${$(s?l.label:i.tf("picker.gaChooseTickets","How many tickets?"))}</span>`+(s?`<small>${$(i.money(i.paidPrice(n.categoryKey,l.id,l.price,n.id)))}</small>`:"")+`</div><div class="sl-ga-stepper" role="group" aria-label="${$(s?l.label:r)}"><button type="button" data-ga-step="-1" aria-label="${$(i.tf("picker.fewer","Fewer"))}">\u2212</button><output data-ga-qty aria-live="polite">0</output><button type="button" data-ga-step="1" aria-label="${$(i.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="${$(ke("picker.gaChooseForArea",{area:r}))}"><div class="sl-ga-prompt-head"><div class="sl-ga-prompt-eyebrow">${$(n.displayType??i.tf("picker.generalAdmission","General admission"))}</div><h2 class="sl-ga-prompt-title">${$(r)}</h2><p class="sl-ga-prompt-sub" data-ga-sub></p><button type="button" class="sl-ga-prompt-close" data-ga-cancel aria-label="${$(ke("common.close"))}">\xD7</button></div><div class="sl-ga-prompt-body">${a}`+(o.length>1?`<div class="sl-ga-prompt-total"><span>${$(i.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>${$(i.tf("picker.gaRemove","Remove"))}</button>`:`<button type="button" class="sl-ga-prompt-remove" data-ga-cancel>${$(ke("common.cancel"))}</button>`)+'<button type="button" class="sl-ga-prompt-confirm" data-ga-confirm></button></div></section>'}function cn(i){let e=0;for(let t of i.draft.values())e+=t;return e}function Xo(i,e){let t=0;for(let n of e.tiers)t+=(e.draft.get(n.id)??0)*i.paidPrice(e.area.categoryKey,n.id,n.price,e.area.id);return t}function Zo(i,e){let t=i.gaPromptEl;if(!t)return;let n=cn(e),o=Xo(i,e);t.querySelectorAll("[data-ga-tier]").forEach(c=>{let h=c.dataset.gaTier?c.dataset.gaTier:null,d=e.draft.get(h)??0,u=c.querySelector("[data-ga-qty]");u&&(u.value=String(d)),c.querySelectorAll("[data-ga-step]").forEach(p=>{p.disabled=Number(p.dataset.gaStep)<0?d<=0:n>=e.max})});let s=t.querySelector("[data-ga-sub]");s&&(s.textContent=`${i.money(i.paidPrice(e.area.categoryKey,e.tiers[0].id,e.tiers[0].price,e.area.id))} \xB7 ${$e("picker.leftCount",e.area.available)}`);let r=t.querySelector("[data-ga-total]");r&&(r.textContent=i.money(o));let a=t.querySelector("[data-ga-hint]");a&&(a.textContent=n>=e.max&&e.max>0?e.area.available<=e.max?$e("picker.leftCount",e.area.available):ke("picker.maxTicketsForOrder",{count:i.maxTickets}):"");let l=t.querySelector("[data-ga-confirm]");l&&(l.textContent=e.reopened?$e("picker.gaUpdate",n,{count:n}):$e("picker.gaAdd",n,{count:n,price:i.money(o)}),l.disabled=n<=0&&!e.reopened)}function Kl(i,e,t){e.querySelectorAll("[data-ga-step]").forEach(n=>{n.addEventListener("click",()=>{let o=n.closest("[data-ga-tier]");if(!o)return;let s=o.dataset.gaTier?o.dataset.gaTier:null,r=Number(n.dataset.gaStep),a=t.draft.get(s)??0,l=t.max-cn(t);t.draft.set(s,Math.max(0,a+(r>0?Math.min(1,l):-1))),Zo(i,t)})}),e.querySelectorAll("[data-ga-cancel]").forEach(n=>n.addEventListener("click",()=>ge(i))),e.querySelector("[data-ga-remove]")?.addEventListener("click",()=>{i.gaQty.delete(t.area.id),ge(i),i.syncTray(),rn(i,ke("picker.gaRemoved",{area:t.area.displayLabel??t.area.label}))}),e.querySelector("[data-ga-confirm]")?.addEventListener("click",()=>{Wl(i,t)}),e.addEventListener("mousedown",n=>{n.target===e&&ge(i)}),e.addEventListener("keydown",n=>{if(n.key==="Escape"){n.stopPropagation(),ge(i);return}if(n.key!=="Tab")return;let o=[...e.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!o.length)return;let s=o[0],r=o[o.length-1];n.shiftKey&&document.activeElement===s?(n.preventDefault(),r.focus()):!n.shiftKey&&document.activeElement===r&&(n.preventDefault(),s.focus())})}function Wl(i,e){let t=cn(e),n=Xo(i,e);for(let s of e.tiers)It(i.gaQty,e.area.id,s.id,e.draft.get(s.id)??0);ge(i),i.syncTray();let o=e.area.displayLabel??e.area.label;t>0?rn(i,$e("picker.gaAdded",t,{count:t,area:o,price:i.money(n)})):rn(i,ke("picker.gaRemoved",{area:o}))}function Yl(i,e,t,n,o){if(typeof n=="number")It(i.gaQty,e.id,t[0].id,Math.max(0,Math.min(o,Math.floor(n))));else{i.gaQty.delete(e.id);let s=o;for(let r of t){let a=Math.max(0,Math.floor(n[r.id??""]??0)),l=Math.min(a,s);s-=l,It(i.gaQty,e.id,r.id,l)}}i.syncTray()}function ge(i,e=!0){let t=i.gaPromptReturnFocus;i.gaPromptEl&&ci(i.gaPromptEl),i.gaPromptEl=null,i.gaPromptReturnFocus=null,e&&t&&requestAnimationFrame(()=>(t.isConnected?t:i.root)?.focus())}function Xl(i,e,t){let n=i.root,o=e.querySelector(".sl-ga-pop");if(!n||!o||!t)return;let s=n.getBoundingClientRect(),r=t.x-s.left,a=t.y-s.top;e.style.setProperty("--sl-ga-anchor-x",`${r}px`),e.style.setProperty("--sl-ga-anchor-y",`${a}px`),requestAnimationFrame(()=>{let l=o.offsetWidth||260,c=o.offsetHeight||220,h=Math.max(8,Math.min(s.width-l-8,r-l/2)),d=a-c-14,u=d>=8?d:Math.min(s.height-c-8,a+14);o.style.left=`${h}px`,o.style.top=`${Math.max(8,u)}px`,o.dataset.side=d>=8?"above":"below",o.style.setProperty("--sl-ga-arrow-x",`${Math.max(12,Math.min(l-12,r-h))}px`)})}function rn(i,e){i.srEl&&(i.srEl.textContent=e)}function Qo(i,e,t=[]){let n=[],o=Ul(t);for(let r of e){let a=i.gaQty.get(r.id);if(!a)continue;let l=di(r);for(let c of l){let h=(a.get(c.id)??0)-(o.get(`${r.id}\0${c.id??""}`)??0);if(h<=0)continue;let d=i.paidPrice(r.categoryKey,c.id,c.price,r.id);n.push(`<div class="sl-ga" data-ga="${$(r.id)}" data-ga-row-tier="${$(c.id??"")}"><div class="sl-ga-info"><div class="sl-ga-name">${$(r.displayLabel??r.label)}</div><div class="sl-ga-sub">${$(l.length>1?c.label:r.displayType??i.tf("picker.generalAdmission","General admission"))} \xB7 ${$(i.money(d))} \xB7 ${$($e("picker.leftCount",r.available))}</div></div><div class="sl-ga-qty"><button type="button" data-d="-1" aria-label="${$(i.tf("picker.fewer","Fewer"))}">\u2212</button><span>${h}</span><button type="button" data-d="1" aria-label="${$(i.tf("picker.more","More"))}">+</button></div></div>`)}}let s=e.filter(r=>pt(i.gaQty,r.id)<=0&&!t.some(a=>a.objectId===r.id));return s.length&&n.push(`<div class="sl-ga-areas" data-ga-areas><button type="button" class="sl-ga-areas-toggle" data-ga-areas-toggle aria-expanded="${i.gaAreasExpanded}"><span>${$(i.tf("picker.gaAreasHeading","Areas"))}</span><small>${s.length}</small></button>`+(i.gaAreasExpanded?`<div class="sl-ga-areas-list">${s.map(r=>`<button type="button" class="sl-ga-area-open" data-ga-open="${$(r.id)}"${r.available<=0?" disabled":""}><span class="name">${$(r.displayLabel??r.label)}<small>${$(r.displayType??i.tf("picker.generalAdmission","General admission"))}</small></span><span class="meta">${$(i.money(i.paidPrice(r.categoryKey,null,r.price,r.id)))} \xB7 ${$(r.available>0?$e("picker.leftCount",r.available):i.tf("picker.soldOutTitle","Sold out"))}</span></button>`).join("")}</div>`:"")+"</div>"),n.join("")}function Jo(i,e,t){e.querySelectorAll(".sl-ga .sl-ga-qty button").forEach(n=>{n.addEventListener("click",()=>{let o=n.closest(".sl-ga");if(!o?.dataset.ga)return;let s=t.find(c=>c.id===o.dataset.ga);if(!s)return;let r=o.dataset.gaRowTier?o.dataset.gaRowTier:null,a=Number(n.dataset.d),l=i.gaQty.get(s.id)?.get(r)??0;if(a>0&&Yo(i,s)-pt(i.gaQty,s.id)<=0){i.toast(ke("picker.maxTicketsForOrder",{count:i.maxTickets}),"warning");return}It(i.gaQty,s.id,r,Math.max(0,l+a)),i.syncTray()})}),e.querySelector("[data-ga-areas-toggle]")?.addEventListener("click",()=>{i.gaAreasExpanded=!i.gaAreasExpanded,i.syncTray()}),e.querySelectorAll("[data-ga-open]").forEach(n=>{n.addEventListener("click",()=>{let o=t.find(s=>s.id===n.dataset.gaOpen);o&&ln(i,o,null,n)})})}var pi='<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 Zl=/^[a-zA-Z0-9._-]+$/;function dn(i){let e;try{e=new URL(i,"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 n=decodeURIComponent(t[1]),o=decodeURIComponent(t[2]);return!n||!Zl.test(o)?null:{eventKey:n,asset:o}}catch{return null}}function Ql(i){try{return/^\/pub\/events\/[^/]+\/assets(?:\/|$)/.test(new URL(i,"https://seatlayer.invalid").pathname)}catch{return!1}}var ht=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=dn(e);if(!t)return Promise.resolve(Ql(e)||!ot(e)?null:e);if(t.eventKey!==this.eventKey||!this.load||this.disposed)return Promise.resolve(null);let n=this.pending.get(e);if(n)return n;let o=this.load(this.eventKey,t.asset).then(s=>{let r=URL.createObjectURL(s);return this.disposed?(URL.revokeObjectURL(r),null):(this.created.add(r),r)}).catch(s=>{throw this.pending.delete(e),s});return this.pending.set(e,o),o}dispose(){if(!this.disposed){this.disposed=!0;for(let e of this.created)URL.revokeObjectURL(e);this.created.clear(),this.pending.clear()}}};import{t as mt}from"@seatlayer/core";import{isAuthoredSeatView as oc,seatViewDisclosure as sc}from"@seatlayer/core/view3d/crossfade/panorama";var es=`
132
130
  /* confirm card: a candidate is not in the tray until Select. Map gestures and
133
131
  floating chrome pause while the card owns focus, keeping the camera stable. */
134
132
  .sl-picker[data-confirming="true"] .sl-map-host>:not(.sl-confirm){pointer-events:none}
@@ -210,7 +208,12 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
210
208
  .sl-confirm-id{display:none}
211
209
  .sl-confirm-strip{display:contents}
212
210
  .sl-confirm-pills{display:none}
213
- .sl-confirm-body{padding:11px 12px 12px}
211
+ /* THE BODY'S GUTTERS ARE NAMED. The seat-note bands are full-bleed and live
212
+ inside this padded body, so they cancel it with a negative margin \u2014 and
213
+ they have to cancel the PHONE's tighter padding too. Two custom properties
214
+ mean one rule in pickerStylesNotes does both widths; a hard-coded -12px
215
+ would leave a 2px sliver of surface down each edge on narrow. */
216
+ .sl-confirm-body{--sl-cbody-x:12px;--sl-cbody-y:11px;padding:var(--sl-cbody-y) var(--sl-cbody-x) 12px}
214
217
  .sl-confirm-tiers{display:grid;gap:6px;margin:0 0 9px;padding:0;border:0}
215
218
  .sl-confirm-tiers legend{margin:0 0 6px;padding:0;color:var(--sl-muted);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
216
219
  .sl-confirm-tier{display:flex;align-items:center;gap:9px;width:100%;min-height:40px;padding:8px 10px;border:1px solid var(--sl-line);
@@ -469,7 +472,7 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
469
472
  note keeps its own 10px so the gap never depends on what is above it. The
470
473
  strip carries no margin of its own \u2014 the body's padding IS the gap under the
471
474
  identity line, and having both stacked 20px of air above the photo. */
472
- .sl-picker[data-layout="narrow"] .sl-confirm-body{padding:8px 10px 10px}
475
+ .sl-picker[data-layout="narrow"] .sl-confirm-body{--sl-cbody-x:10px;--sl-cbody-y:8px;padding:var(--sl-cbody-y) var(--sl-cbody-x) 10px}
473
476
  .sl-picker[data-layout="narrow"] .sl-confirm-tier{min-height:38px;padding:7px 9px}
474
477
  .sl-picker[data-layout="narrow"] .sl-confirm-row{margin-top:0}
475
478
  .sl-picker[data-layout="narrow"] .sl-confirm-row:not(:first-child){margin-top:10px}
@@ -506,7 +509,7 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
506
509
  color:var(--sl-text);font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;gap:7px}
507
510
  .sl-confirm-view:hover{border-color:var(--sl-muted)}
508
511
  .sl-confirm-view svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
509
- `;var Ds=`
512
+ `;var ts=`
510
513
  /* Test mode is environment context, not an action. The chip flows in the
511
514
  top-left anchor region: the old rotated corner ribbon sat at a negative
512
515
  offset and was clipped by the widget root's rounded overflow:hidden (its
@@ -672,8 +675,12 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
672
675
  .sl-tip-reason{padding:8px 12px 10px 15px;margin-top:1px;font-size:11.5px;line-height:1.35;
673
676
  font-weight:650;color:var(--sl-muted);
674
677
  border-top:1px solid color-mix(in srgb,var(--sl-line) 60%,transparent)}
675
- .sl-tip-cx{display:flex;align-items:center;gap:6px;padding:5px 10px 7px;font-size:10.5px;font-weight:700;color:#e8b24a}
676
- .sl-tip-cx .g{font-size:12px}
678
+ /* The card's seat notes sit at its foot, under the reason line, and they are
679
+ BANDS \u2014 so the card's own 2px bottom padding has to go, or the last band
680
+ floats on a sliver of surface instead of meeting the card's edge. Only when
681
+ there are notes: a card without them keeps the breathing room. .sl-tip-cx
682
+ was the two hand-picked lines this block replaced. */
683
+ .sl-tip:has(.sl-notes){padding-bottom:0}
677
684
 
678
685
  /* Performance Group: the night strip on a partly-available seat's card, and
679
686
  the per-night pane + mode switch in the selection tray. A card the buyer
@@ -763,7 +770,7 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
763
770
  .sl-pg-switch:hover{border-style:solid;color:var(--sl-text);border-color:var(--sl-accent)}
764
771
  @media(prefers-reduced-motion:reduce){.sl-tip{animation:none!important}.sl-tip,.sl-tip-switch,.sl-pg-switch{transition:none!important}}
765
772
  @media(max-width:639px){.sl-confirm-group-dates{width:min(340px,calc(100% - 20px))}.sl-confirm-date{min-height:32px}}
766
- `;var Bs=`
773
+ `;var is=`
767
774
  /* 3D venue overlay \u2014 mounts over the (paused) Konva stage inside the map host.
768
775
  Carries its own gradient so it paints instantly before the scene builds, and
769
776
  cross-fades on enter/exit via a compositor-only opacity transition. Sits below
@@ -907,17 +914,43 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
907
914
  /* While immersed, the 2D-only chrome is meaningless \u2014 hide it, keep Map|3D. */
908
915
  .sl-picker[data-view3d="on"] .sl-rungs,
909
916
  .sl-picker[data-view3d="on"] .sl-floors,
910
- .sl-picker[data-view3d="on"] .sl-zoom,
911
917
  .sl-picker[data-view3d="on"] .sl-seccard,
912
918
  /* The overview toggle went with the overview: 3D frames itself, and the panel
913
919
  it opens is already hidden by the line above \u2014 leaving the button was
914
920
  leaving a control that does nothing in the buyer's only left-hand column. */
915
921
  .sl-picker[data-view3d="on"] .sl-minimap-toggle,
916
922
  .sl-picker[data-view3d="on"] .sl-minimap{display:none!important}
917
- /* Immersed, the left-hand column carries the accessibility menu and the 3D
918
- navigation next to each other over a moving render. Six pixels between two
919
- 44px targets is a mis-tap; twelve is the same spacing the bottom-right zoom
920
- cluster uses. */
923
+ /* THE ZOOM COLUMN EMPTIES, IT DOES NOT VANISH. Stepping and fitting are
924
+ meaningless while the camera frames itself, so every disc goes \u2014 but the \u267F
925
+ control rides this column now (it used to sit alone in the bottom-left
926
+ corner), and 3D is exactly where a buyer may still need to say "show me the
927
+ wheelchair places". Hiding .sl-zoom outright would have taken the one
928
+ control in it that is not about zoom. So the children go and the column
929
+ stays, holding a single 36px disc. */
930
+ .sl-picker[data-view3d="on"] .sl-zoom>*:not(.sl-a11y){display:none!important}
931
+ /* ...AND THAT ONE DISC HAS TO GET OUT OF THE RAIL'S WAY. On a wide viewport
932
+ the 3D module docks its own controls in the SAME bottom-right corner the zoom
933
+ column anchors to, and the \u267F came to rest on top of the dock's bottom
934
+ control \u2014 "Show whole venue" \u2014 covering about 60% of it, enough that
935
+ elementFromPoint at that control's centre returned the \u267F and the buyer had no
936
+ way back to the whole venue (walk-through, 2026-09-05).
937
+
938
+ The lift is the dock's own geometry (view3d/ui/controlDock): five 44px
939
+ controls in two columns \u2014 rotate/move at gap 6, then +/\u2212/fit at gap 6 \u2014 with
940
+ a 7px gap between the columns, so 5*44 + 3*6 + 7 = 245px, sitting 14px off
941
+ the bottom. Clearing 259px puts the disc the same 12px above the rail that
942
+ the rest of this chrome uses between stacked controls. The --sl-3d-rail-h var is
943
+ honoured first, so the day the dock publishes its measured height this stops
944
+ being arithmetic.
945
+
946
+ WIDE ONLY. The narrow dock drops rotate/move and +/\u2212 to the fit chip alone
947
+ and lifts itself to 76px, so on a phone the two already clear each other and
948
+ this margin would only strand the \u267F in the middle of the map. */
949
+ .sl-picker[data-view3d="on"]:not([data-layout="narrow"]) .sl-zoom{
950
+ margin-bottom:calc(var(--sl-3d-rail-h, 245px) + 14px)}
951
+ /* Immersed, the left-hand column carries the 3D navigation over a moving
952
+ render. Six pixels between two 44px targets is a mis-tap; twelve is the same
953
+ spacing the bottom-right zoom cluster uses. */
921
954
  .sl-picker[data-view3d="on"] .sl-anchor[data-region="bottom-left"],
922
955
  .sl-picker[data-view3d="on"] .sl-anchor[data-region="left-rail"]{gap:12px}
923
956
  /* Room kept clear on the right for the module's own Overview chip. Measured
@@ -993,7 +1026,7 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
993
1026
  .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm{bottom:6px}
994
1027
  .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-grid,
995
1028
  .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-cat,
996
- .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-body>.sl-cx{display:none}
1029
+ .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-body>.sl-notes{display:none}
997
1030
  .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-body{padding:6px 8px 7px}
998
1031
  .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-confidence{margin-top:0}
999
1032
  .sl-picker[data-view3d="on"][data-layout="narrow"][data-density="compact"] .sl-confirm-confidence em{display:block;margin-bottom:2px;
@@ -1108,121 +1141,82 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
1108
1141
  .sl-view3d-passport-shell{padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom))}
1109
1142
  .sl-view3d-passport{width:100%;max-height:100%;padding:14px 14px max(24px,calc(14px + env(safe-area-inset-bottom)));border-radius:15px}
1110
1143
  }
1111
- `;var Ns=`
1112
- /* THE PHONE TICKET LIST (owner 2026-08-27: "on mobile the cards take lots of
1113
- space, lots of white space on each card"). The desktop card spends ~72px per
1114
- ticket on SECTION/ROW/SEAT eyebrows, a category line and a 34px icon rail \u2014
1115
- all of it repeated per seat. On phone the eyebrows are lifted into ONE header
1116
- row, each ticket is a 40px line divided by a hairline rather than a card with
1117
- its own border, and the category name goes: the map already paints the colour
1118
- and the price is on the line. What is left is what a ticket stub prints. */
1119
- .sl-picker[data-layout="narrow"] .sl-tray{padding:8px 10px 10px;gap:6px}
1144
+ `;var ns=`
1145
+ .sl-notes{display:flex;flex-direction:column;gap:0;margin:0}
1146
+ /* No radius, no border, no inset: a band is the card's full width or it is a
1147
+ plate again. The hairline lives on the JOIN, so the first band sits flush
1148
+ against the category band above it and the block reads as a continuation of
1149
+ it rather than as a new object. */
1150
+ .sl-note{display:flex;align-items:flex-start;gap:9px;padding:9px 14px;
1151
+ background:color-mix(in srgb,var(--sl-text) 6%,var(--sl-surface));
1152
+ animation:slNoticeIn .28s ease both}
1153
+ .sl-note+.sl-note{border-top:1px solid color-mix(in srgb,var(--sl-line) 60%,transparent)}
1154
+ .sl-note-i{flex:none;display:flex;align-items:center;justify-content:center;line-height:0;
1155
+ margin-top:1px;color:var(--sl-muted)}
1156
+ .sl-note-i svg{display:block}
1157
+ .sl-note-t{min-width:0;display:flex;flex-direction:column;gap:2px}
1158
+ .sl-note-t b{font-size:12.5px;font-weight:800;color:var(--sl-text)}
1159
+ .sl-note-n{font-size:11px;line-height:1.4;color:color-mix(in srgb,var(--sl-muted) 75%,var(--sl-text))}
1160
+ /* A view restriction keeps the amber caution tone \u2014 deliberately NOT the red of
1161
+ a taken seat: the seat is available, the view is the caveat. */
1162
+ .sl-note-warn{background:color-mix(in srgb,var(--sl-warn) 10%,var(--sl-surface))}
1163
+ .sl-note-warn .sl-note-i,.sl-note-warn .sl-note-t b{color:var(--sl-warn-text)}
1164
+ .sl-note-premium{background:color-mix(in srgb,var(--sl-premium) 10%,var(--sl-surface))}
1165
+ .sl-note-premium .sl-note-i,.sl-note-premium .sl-note-t b{color:var(--sl-premium-text)}
1166
+ /* THE CONFIRM CARD'S BODY IS PADDED AND THE BANDS ARE NOT. The body owns its
1167
+ gutters as custom properties (see pickerStylesConfirm) precisely so this
1168
+ block can cancel them and reach both edges, at desktop width and at the
1169
+ phone's tighter padding, from ONE rule. The notes are the body's first child,
1170
+ so the negative block-start puts them hard against the category band. */
1171
+ .sl-confirm-body>.sl-notes{margin:calc(var(--sl-cbody-y,11px)*-1) calc(var(--sl-cbody-x,12px)*-1) 10px}
1172
+ /* Compact: the tap/hover card is narrower and floats over the map, so the type
1173
+ comes down a rung and the inset moves to 15px \u2014 the tap card's own text
1174
+ inset, which clears the category rail on its leading edge. The bands stay. */
1175
+ .sl-notes.compact{border-top:1px solid color-mix(in srgb,var(--sl-line) 60%,transparent)}
1176
+ .sl-notes.compact .sl-note{padding:7px 12px 7px 15px}
1177
+ .sl-notes.compact .sl-note-t b{font-size:11.5px;font-weight:750}
1178
+ .sl-notes.compact .sl-note-n{font-size:10.5px}
1179
+ `;var os=`
1180
+ /* THE PHONE SHOWS THE DESKTOP CARD (owner call 2026-09-06: "cards should be
1181
+ the same design as desktop"). What used to be here was a second rendering of
1182
+ the cart \u2014 a bordered .sl-tlist box of 44px hairline-divided .sl-tline rows,
1183
+ with consecutive seats folded into runs behind a "+6 more". It saved real
1184
+ pixels, and it cost the sheet its coherence: a bordered list on --sl-surface
1185
+ between a chrome band and a shadowed footer reads as three blocks stacked in
1186
+ a panel, not as one panel. The collapsed sheet caps the tray at three cards
1187
+ and scrolls instead (see the peek rules in the base sheet), which is the
1188
+ same answer without a second design to keep in step.
1189
+
1190
+ Gone with it: .sl-tlist, .sl-tline and its dot/id/mult parts, .sl-trun-toggle
1191
+ and the folded runs it opened, .sl-tmore, and every narrow-only override of
1192
+ .sl-chip. The tray's own narrow padding went too \u2014 the gutters are the
1193
+ desktop panel's 14px now, so the cards line up with the total line under
1194
+ them. */
1120
1195
  /* The map IS the instruction on a phone, so the sentence goes \u2014 but only
1121
1196
  visually. A blind buyer has no map to read it off. */
1122
1197
  .sl-picker[data-layout="narrow"] .sl-tray-hint{position:absolute!important;width:1px!important;height:1px!important;
1123
1198
  padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;
1124
1199
  white-space:nowrap!important;border:0!important}
1125
- /* THE TRAY'S FLOOR IS ONE WHOLE TICKET, not one whole card. 96px was sized for
1126
- the two-line card; against a 40px line it forced 32px of empty tray under a
1127
- one-ticket cart \u2014 the exact whitespace this pass exists to remove. 64px is
1128
- the list header plus one line, which is what "never crushed" has to mean
1129
- here: the buyer can always see a complete ticket. */
1130
- .sl-picker[data-layout="narrow"] .sl-tray{min-height:64px}
1131
- .sl-tlist{display:flex;flex-direction:column;overflow:hidden;background:var(--sl-surface);
1132
- border:1px solid var(--sl-line);border-radius:var(--sl-r-sm)}
1133
- /* 44px, NOT 40. The remove button's target box was nominally 44 and measured
1134
- 41x39: a 32px button with a -6px inset cannot reach the floor inside a 40px
1135
- line, because the line above and below it own those pixels. Four pixels a
1136
- line is what a reachable destructive control costs. */
1137
- .sl-picker[data-layout="narrow"] .sl-tline{display:flex;align-items:center;gap:7px;min-height:44px;
1138
- padding:0 4px 0 9px;border:0;border-radius:0;background:transparent;box-shadow:none;font-size:13px}
1139
- .sl-picker[data-layout="narrow"] .sl-tline+.sl-tline{border-top:1px solid color-mix(in srgb,var(--sl-line) 70%,transparent)}
1140
- .sl-picker[data-layout="narrow"] .sl-tline.sl-held{background:color-mix(in srgb,var(--sl-accent) 7%,transparent);
1141
- box-shadow:inset 3px 0 0 color-mix(in srgb,var(--sl-accent) 72%,transparent)}
1142
- /* Section ellipsizes; row, seat and price are what the buyer checks against the
1143
- map and against their money, so they never wrap and never shrink. */
1144
- .sl-tline-id{flex:1;min-width:0;display:flex;align-items:center;gap:5px;white-space:nowrap;font-variant-numeric:tabular-nums}
1145
- .sl-tline-id b{min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:700}
1146
- .sl-tline-id i{flex:none;font-style:normal;color:var(--sl-muted)}
1147
- .sl-tline-id span{flex:none;font-weight:600}
1148
- .sl-tline-mult{flex:none;color:var(--sl-muted);font-size:11px;font-variant-numeric:tabular-nums}
1149
- .sl-picker[data-layout="narrow"] .sl-tline .amt{flex:none;font-weight:700;font-variant-numeric:tabular-nums}
1150
- /* 32px of ink, 44px of target \u2014 the same grow-the-target-not-the-ink pattern
1151
- the price rail uses. */
1152
- /* Above the price beside it, so the box is the full 44 across and not clipped
1153
- to 41 by a run of text that is not a control anyway. */
1154
- .sl-picker[data-layout="narrow"] .sl-tline .rm{position:relative;z-index:1;flex:none;width:32px;height:32px;min-height:32px;
1155
- border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--sl-muted)}
1156
- .sl-picker[data-layout="narrow"] .sl-tline .rm::before{content:'';position:absolute;top:50%;left:50%;
1157
- width:44px;height:44px;transform:translate(-50%,-50%)}
1158
- .sl-picker[data-layout="narrow"] .sl-tline .rm svg{width:12px;height:12px;stroke:currentColor;stroke-width:2.4;fill:none;stroke-linecap:round}
1159
- /* The selected tick shrinks to the category-coloured dot the legend already
1160
- taught; the held lock keeps its glyph, because a lock is not a colour. */
1161
- .sl-tline-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--sl-accent)}
1162
- .sl-picker[data-layout="narrow"] .sl-tline .sl-ticket-state{width:8px;height:8px;flex:none;background:var(--sl-accent)}
1163
- .sl-picker[data-layout="narrow"] .sl-tline .sl-ticket-state svg{display:none}
1164
- .sl-picker[data-layout="narrow"] .sl-tline.sl-held .sl-ticket-state{width:14px;height:14px}
1165
- .sl-picker[data-layout="narrow"] .sl-tline.sl-held .sl-ticket-state svg{display:block;width:9px;height:9px}
1166
- .sl-picker[data-layout="narrow"] .sl-tline .tier{max-width:104px;min-height:28px;padding:0 22px 0 7px;font-size:11px}
1167
- .sl-picker[data-layout="narrow"] .sl-tline .sl-table-edit{margin:0}
1168
- /* A folded run trades the dot for the chevron that opens it \u2014 one control per
1169
- line, never two competing affordances in 8px. */
1170
- /* 18px WAS NOT A TARGET. This chevron is the only way into a folded run \u2014 the
1171
- control a buyer reaches for to drop one seat out of six \u2014 and it was half the
1172
- width of the \u2715 beside it. The ink stays small so the line still reads as a
1173
- line; the box around it reaches the touch floor, the same way the price
1174
- chips and the remove button do. */
1175
- .sl-trun-toggle{position:relative;flex:none;width:24px;height:32px;margin-left:-4px;display:flex;align-items:center;justify-content:center;color:var(--sl-muted)}
1176
- .sl-trun-toggle::before{content:'';position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
1177
- .sl-trun-toggle svg{width:13px;height:13px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}
1178
- .sl-trun-toggle[aria-expanded="true"] svg{transform:rotate(90deg)}
1179
- /* These carry the SAME narrow prefix as the line rule above on purpose: a bare
1180
- .sl-tline.sl-tsub loses to the [data-layout="narrow"] .sl-tline rule on
1181
- specificity no matter which comes last, and a folded run would then render
1182
- with every one of its members already showing. */
1183
- .sl-picker[data-layout="narrow"] .sl-tline.sl-tsub{display:none}
1184
- .sl-picker[data-layout="narrow"] .sl-tline.sl-tsub[data-open="true"]{display:flex;padding-left:26px;background:color-mix(in srgb,var(--sl-line) 16%,transparent)}
1185
- /* Last, deliberately: a collapsed tail stays hidden even when its run is open. */
1186
- .sl-picker[data-layout="narrow"] .sl-tlist[data-collapsed="true"] .sl-tline[data-overflow="true"]{display:none}
1187
- .sl-tmore{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:40px;
1188
- padding:0 10px;font-size:12.5px;font-weight:650;color:var(--sl-muted);border-top:1px solid var(--sl-line)}
1189
- .sl-tmore svg{width:13px;height:13px;flex:none;stroke:currentColor;stroke-width:2.2;fill:none;
1190
- stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}
1191
- .sl-tmore[aria-expanded="true"] svg{transform:rotate(180deg)}
1192
-
1193
- /* THE SHEET HEAD IS A ROW, NOT A BAND (owner pass 2026-08-27). Open, it held
1194
- "1 ticket \xB7 $180" and a chevron inside 48px of chrome with air on both
1195
- sides \u2014 a title bar's worth of screen for six words and one control. 36px,
1196
- the handle overlapping into it exactly as it does at peek. */
1197
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-head{min-height:36px;padding:0 6px 0 12px}
1198
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-grab{top:4px}
1199
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-bar{min-height:36px}
1200
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-peek{font-size:14px;font-weight:700}
1201
- /* 28px of INK while the panel is open \u2014 the head has no height to spare there
1202
- \u2014 over the 44px pseudo-target the coarse-pointer block now gives it. */
1203
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-toggle{width:28px;height:28px}
1204
- /* THE FOOT SAYS IT ONCE. "Secure 6 more & checkout" already counts the
1205
- pending seats, so nothing under it repeats them, and the by-line is one
1206
- 18px row rather than a padded block. The bottom inset stays on .sl-side, which is the one place
1207
- it can cover the collapsed sheet too (see SeatPickerSafeArea). */
1208
- .sl-picker[data-layout="narrow"] .sl-foot{padding:8px 14px 6px}
1209
- /* NO WAY BACK INTO THE FINDER OVER A NON-EMPTY CART, ON ANY LAYOUT (owner
1210
- call 2026-09-05). A narrow-only rule used to hide the tray's \u2726 re-entry
1211
- and the collapsed bar's ghost twin; both controls are gone from the markup
1212
- now, on every width, so there is nothing left to hide. Once a cart has
1213
- tickets, it stays a cart \u2014 the finder belongs to the empty one. */
1214
- .sl-peek-total{margin-inline-start:6px;font-variant-numeric:tabular-nums}
1215
- .sl-picker[data-layout="narrow"] .sl-powered{min-height:18px;margin-top:6px;margin-bottom:0;padding:0;font-size:11px}
1216
- .sl-picker[data-layout="narrow"] .sl-powered svg{width:14px;height:14px}
1217
- /* THE SECURED STRIP IS GONE (phone: owner call 2026-08-27; every layout:
1218
- owner call 2026-09-05). It was a boxed row above the pay button \u2014 a tick,
1219
- "N secured", a sentence about a clock, and a Change button. Every part of
1220
- it is said better somewhere else: the count is in the cart head, the clock
1221
- is the header pill, and Change released the WHOLE hold when the \u2715 on each
1222
- held line already releases one seat. Below the button there is now only
1223
- the by-line, and nothing at all when white-label hides that too. */
1224
- .sl-picker[data-layout="narrow"] .sl-foot{display:flex;flex-direction:column;gap:0}
1225
-
1200
+ /* THE TOUCH FLOOR ON THE CART CARD, WITHOUT WAITING FOR pointer:coarse. The
1201
+ base sheet grows these two to a real 44px under a coarse pointer, which is
1202
+ every phone \u2014 but a narrow layout is also every phone-sized embed and every
1203
+ responsive preview, and the \u2715 on a ticket is not a control to leave at 30px
1204
+ in any of them. Same grow-the-target-not-the-ink shape the rest of the
1205
+ widget uses: the box reaches the floor, the glyph inside does not move. */
1206
+ .sl-picker[data-layout="narrow"] .sl-chip .rm,
1207
+ .sl-picker[data-layout="narrow"] .sl-chip .view{min-height:44px;height:44px;width:44px}
1208
+
1209
+ /* THE SHEET HEAD IS ONE CHEVRON ON BOTH STATES (owner call 2026-09-05), and
1210
+ its rules live in the base sheet beside the toggle they style. Open, it used
1211
+ to carry "1 ticket \xB7 $180" and a corner arrow; that summary is the footer's
1212
+ total line now, on both widths.
1213
+
1214
+ THE FOOT IS NOT RESTYLED HERE EITHER. It used to take its own phone padding,
1215
+ its own by-line size and a flex column layout, on top of losing its total row
1216
+ in the base sheet. The collapsed sheet IS that block now, so it is the same
1217
+ block on both widths \u2014 one set of tokens, one shadow, one thing to get
1218
+ right. The bottom inset stays on .sl-side, which is the one place it covers
1219
+ both sheet states (see SeatPickerSafeArea). */
1226
1220
  /* THE DEFAULT PHONE TRAY (same owner pass: "even default this much space and
1227
1221
  text"). With an empty cart the tray showed a sentence, a card title, a
1228
1222
  sub-line under the title, two full-width selects and a button \u2014 240px to say
@@ -1238,16 +1232,16 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
1238
1232
  the tab order still follows the page. */
1239
1233
  .sl-picker[data-layout="narrow"] .sl-ba{grid-template-columns:auto minmax(0,1fr);gap:6px;padding:8px;border-radius:11px}
1240
1234
  .sl-picker[data-layout="narrow"] .sl-ba::after{display:none}
1241
- /* The card's own button already says what the card does, so the title and the
1242
- sentence under it go \u2014 but NOT on the confirm face, which is a question the
1243
- buyer has to read before answering. That face marks itself role="alert". */
1244
- .sl-picker[data-layout="narrow"] .sl-ba:not([role="alert"]) .sl-ba-title,
1245
- .sl-picker[data-layout="narrow"] .sl-ba-copy{display:none}
1235
+ /* THE TITLE STAYS ON THE PHONE NOW. It used to be hidden here \u2014 the card's own
1236
+ button already says what the card does, so a wrapping two-line sentence
1237
+ above it was pure cost. It is one short line carrying the \u24D8 and the "\u2605 Best
1238
+ seats" quick-pick (owner call 2026-09-06), and hiding the row would take the
1239
+ premium toggle with it. The base sheet already sizes it for this width, so
1240
+ there is nothing left to override here \u2014 only a rule to NOT write. */
1246
1241
  .sl-picker[data-layout="narrow"] .sl-ba select{min-height:34px;padding:0 24px 0 9px;font-size:12.5px}
1247
1242
  /* Row 1 and row 2: one decision each, the full width of the card. Two selects
1248
1243
  sharing a row at 375px is a listbox you open by aiming \u2014 and a zone name is
1249
1244
  the longest string on the card. */
1250
- .sl-picker[data-layout="narrow"] .sl-ba-premium{order:1}
1251
1245
  .sl-picker[data-layout="narrow"] .sl-ba-cat{order:2;grid-column:1/-1}
1252
1246
  .sl-picker[data-layout="narrow"] .sl-ba-zone{order:3;grid-column:1/-1}
1253
1247
  /* An absent zone select leaves no gap: it is simply not in the DOM, and the
@@ -1304,37 +1298,57 @@ import{a as cs,b as ds,d as Xt,e as tt,f as Qt,g as it}from"./chunk-TNTHWQQ2.js"
1304
1298
  font:inherit;font-size:12px;font-weight:800;color:var(--sl-on-accent,#fff);background:var(--sl-accent)}
1305
1299
  .sl-lapse-note button:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
1306
1300
 
1307
- /* "4 free" / "None left" \u2014 tabular so a column of counts does not jitter as
1308
- other buyers take seats out from under the returning one. */
1309
- .sl-a11yrow-c{flex:none;font-size:10.5px;font-weight:800;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1301
+ /* "4 free" / "0" \u2014 tabular so a column of counts does not jitter as other
1302
+ buyers take seats out from under the returning one. TEXT, NOT A CHIP (owner
1303
+ call 2026-09-06: the bordered pill "does not look good"): the count is a
1304
+ fact about the row it sits in, and a pill gave it the weight of a second
1305
+ control competing with the switch. */
1306
+ .sl-a11yrow-c{flex:none;white-space:nowrap;font-size:10.5px;font-weight:800;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1310
1307
  /* The count as a DESTINATION. Once the engine can step the map through the
1311
1308
  sections that hold the spaces, "12 free" stops being a fact and becomes the
1312
1309
  way to reach one \u2014 so it is a real button beside the switch, not a span
1313
1310
  inside it: keyboard-reachable, and announcing where it is about to go. It
1314
1311
  sits outside the row because a <button> inside a <button> is markup the
1315
- parser discards. */
1316
- .sl-a11yrow-w{display:flex;align-items:center;gap:2px}
1312
+ parser discards.
1313
+
1314
+ IT STILL HAS TO READ AS PART OF THE LINE. The wrapper reserves the switch's
1315
+ own column as padding and the switch is placed into it absolutely \u2014 it is a
1316
+ descendant of the row button, so it stays part of that button's hit area \u2014
1317
+ which leaves the count (and the \u24D8, where a row has one) sitting between the
1318
+ label and the toggle, in the order the row is read: icon, name, count,
1319
+ switch. */
1320
+ .sl-a11yrow-w{position:relative;display:flex;align-items:center;gap:6px;padding-inline-end:42px}
1317
1321
  .sl-a11yrow-w .sl-a11yrow{flex:1;min-width:0}
1318
- button.sl-a11yrow-c{flex:none;min-height:32px;padding:0 9px;border:1px solid var(--sl-line);
1319
- border-radius:999px;background:transparent;cursor:pointer;font:inherit;
1320
- font-size:10.5px;font-weight:800;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1321
- button.sl-a11yrow-c:hover{border-color:var(--sl-muted);color:var(--sl-text)}
1322
- button.sl-a11yrow-c:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
1323
- button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1322
+ .sl-a11yrow-w .sl-a11yrow-s{position:absolute;inset-inline-end:8px;top:50%;transform:translateY(-50%)}
1323
+ button.sl-a11yrow-c{flex:none;width:auto;height:auto;min-height:32px;padding:0;border:0;background:transparent;cursor:pointer;
1324
+ font:inherit;font-size:10.5px;font-weight:800;color:var(--sl-muted);font-variant-numeric:tabular-nums;
1325
+ text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:color .15s,text-decoration-color .15s}
1326
+ button.sl-a11yrow-c:hover{color:var(--sl-text);text-decoration-color:currentColor}
1327
+ button.sl-a11yrow-c:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px;border-radius:6px}
1328
+ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default;text-decoration-color:transparent}
1324
1329
  /* Sold out, not absent. Dimmed and unswitchable, but still read aloud. */
1325
1330
  .sl-a11yrow[disabled]{opacity:.58;cursor:default}
1326
1331
  .sl-a11yrow[disabled]:hover{background:transparent}
1327
1332
  .sl-cx-mark-premium{color:var(--sl-premium-deep)}
1328
- .sl-cx-mark-info{color:var(--sl-muted)}
1329
- .sl-chip-cx{display:grid;gap:4px;padding-top:5px;border-top:1px solid color-mix(in srgb,var(--sl-line) 72%,transparent)}
1330
- .sl-chip-cx-tags{display:flex;flex-wrap:wrap;gap:4px}
1331
- .sl-chip-cx-tag{display:inline-flex;align-items:center;gap:4px;width:fit-content;padding:2px 6px;border-radius:999px;
1332
- font-size:9.5px;font-weight:800;line-height:1.2;white-space:nowrap}
1333
- .sl-chip-cx-tag.premium{color:var(--sl-premium-text);background:color-mix(in srgb,var(--sl-premium) 11%,var(--sl-surface));
1334
- border:1px solid color-mix(in srgb,var(--sl-premium) 30%,var(--sl-line))}
1335
- .sl-chip-cx-tag.limited{color:var(--sl-text);background:color-mix(in srgb,#f4b740 11%,var(--sl-surface));
1336
- border:1px solid color-mix(in srgb,#f4b740 32%,var(--sl-line))}
1337
- .sl-chip-cx-note{font-size:10.5px;line-height:1.35;color:var(--sl-muted)}
1333
+ .sl-cx-mark-note{color:var(--sl-muted)}
1334
+ .sl-cx-mark-access{color:var(--sl-muted)}
1335
+ /* THE CART KEEPS ITS TEXT-ONLY NOTE LINE. Everywhere else the notes are
1336
+ full-bleed bands (pickerStylesNotes) \u2014 the cart chip is the one surface that
1337
+ is NOT a popup: it is a bordered ticket in a list, the column is narrow
1338
+ enough that a band's padding wrapped "Restricted view" onto two lines, and a
1339
+ tinted band inside a bordered ticket reads as a card inside a card. So the
1340
+ ground, the gutters and the hairline between rows all come off, and what is
1341
+ left is icon, title, note \u2014 a footnote under the line it belongs to.
1342
+
1343
+ This is a deliberate exception and it is the reason these overrides look like
1344
+ they are undoing the band: they are. */
1345
+ .sl-chip-main .sl-notes{gap:3px;margin:0;padding-top:5px;
1346
+ border-top:1px solid color-mix(in srgb,var(--sl-line) 72%,transparent)}
1347
+ .sl-chip-main .sl-note{padding:0;background:transparent;gap:6px;align-items:flex-start}
1348
+ .sl-chip-main .sl-note+.sl-note{border-top:0}
1349
+ .sl-chip-main .sl-note-i{margin-top:0}
1350
+ .sl-chip-main .sl-note-t b{font-size:10px;font-weight:800}
1351
+ .sl-chip-main .sl-note-n{font-size:10px;line-height:1.35}
1338
1352
 
1339
1353
  /* PILLS SHRINK, THEN THEY WRAP (fitTextRow, rungs 1-3). "Stattdessen Pl\xE4tze
1340
1354
  nebeneinander finden" is four words longer than "Find seats together
@@ -1356,7 +1370,7 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1356
1370
  .sl-picker .sl-fitpill.sl-fit-p2,.sl-picker .sl-fitpill.sl-fit-p3{font-size:11.5px}
1357
1371
  .sl-picker .sl-fitpill.sl-fit-p3{white-space:normal;text-align:center;
1358
1372
  padding-top:6px;padding-bottom:6px;line-height:1.2}
1359
- `;var Fs="seatlayer-picker-style",Zl=`
1373
+ `;var ss="seatlayer-picker-style",Jl=`
1360
1374
  .sl-picker{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:420px;overflow:hidden;
1361
1375
  background:var(--sl-bg);color:var(--sl-text);font-family:var(--sl-font);border-radius:var(--sl-radius);
1362
1376
  /* iOS INFLATES FIXED-PX TYPE IN A HOST LAYOUT IT DECIDES IS TOO NARROW, and
@@ -1390,7 +1404,16 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1390
1404
  Named once because the sheet's padding and all four of its height rules
1391
1405
  must agree: box-sizing:border-box above means padding EATS a fixed height,
1392
1406
  so every height grows by exactly what the padding reserves. */
1393
- --sl-safe-b:env(safe-area-inset-bottom,0px)}
1407
+ --sl-safe-b:env(safe-area-inset-bottom,0px);
1408
+ /* THE MAP'S OWN CONTROLS NEED THIS MUCH MAP (measured 375x812, 2026-09-06).
1409
+ The right-hand control column is 170px of discs \u2014 \u267F 44 + three 36px zoom
1410
+ discs + three 6px gaps \u2014 pinned 12px off the bottom of the map, and the
1411
+ Map/3D toggle rides the top-right anchor 12px off the top. With an open
1412
+ sheet and four tickets the map host measured 193px, so the column's top
1413
+ disc landed ON the "3D" segment. 12 + 170 + a 58px corridor + 12 + the
1414
+ toggle's own 34px is 264: the smallest map that keeps the two clusters
1415
+ apart. Named once because all three open-sheet caps must agree. */
1416
+ --sl-map-floor:264px}
1394
1417
  .sl-picker *{box-sizing:border-box;margin:0;padding:0}
1395
1418
  /* Keep the reset intentionally specificity-free. Standalone map and panel
1396
1419
  controls must be able to establish their own token surfaces in either theme. */
@@ -1470,13 +1493,12 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1470
1493
  map's raw-pointer gesture pipeline is untouched. */
1471
1494
  .sl-picker[data-layout="narrow"] .sl-body{flex-direction:column}
1472
1495
  .sl-picker[data-layout="narrow"] .sl-map{min-height:0;flex:1}
1473
- /* SAFE AREA LIVES ON THE SHEET, NOT ON THE FOOT. At peek the rule below hides
1474
- everything but the head \u2014 so the FOOT is not the bottom-most element, the
1475
- HEAD is, and it is the head that carries the Continue/Checkout pill. Padding
1476
- the foot alone would fix the opened sheet and leave the collapsed one (where
1477
- most buyers are) still under the home indicator. Padding the container covers
1478
- both states with one rule, and each height below grows by the same amount so
1479
- no content box shrinks. */
1496
+ /* SAFE AREA LIVES ON THE SHEET, NOT ON THE FOOT. The footer is the bottom-most
1497
+ element in both sheet states now, so padding it would work \u2014 but it would be
1498
+ a second place to remember, and everything here is box-sizing:border-box, so
1499
+ padding the foot shortens the button inside it rather than lifting it off the
1500
+ home indicator. Padding the container covers both states with one rule, and
1501
+ each cap below grows by the same amount so no content box shrinks. */
1480
1502
  /* THE SHEET IS AS TALL AS ITS TICKETS, NO TALLER (owner call 2026-08-27). It
1481
1503
  used to be a FIXED height, so a buyer holding ONE ticket lost 50-60% of the
1482
1504
  phone to a mostly-empty panel. The height is now the content's own
@@ -1488,21 +1510,85 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1488
1510
  height:auto alone could never transition. */
1489
1511
  .sl-picker[data-layout="narrow"] .sl-side{width:100%;border-left:0;border-top:1px solid var(--sl-line);
1490
1512
  flex:none;height:auto;max-height:calc(min(72%,480px) + var(--sl-safe-b));padding-bottom:var(--sl-safe-b);
1491
- overflow:hidden;transition:max-height .3s cubic-bezier(.2,.8,.2,1);overscroll-behavior:contain}
1492
- .sl-picker[data-layout="narrow"][data-sheet="open"][data-has-selection="false"] .sl-side{max-height:calc(min(380px,64%) + var(--sl-safe-b))}
1513
+ background:var(--sl-bg);box-shadow:0 -8px 26px -20px rgba(0,0,0,.72);
1514
+ overflow:visible;clip-path:inset(-32px 0 0 0);
1515
+ transition:max-height .3s cubic-bezier(.2,.8,.2,1);overscroll-behavior:contain}
1516
+ /* CLIPPED, NOT overflow:hidden. Half of the 22px grab pill sits ABOVE this
1517
+ box's top edge, which is what makes it a handle ON the panel rather than a
1518
+ button inside it \u2014 and overflow:hidden clips at the padding box, so that
1519
+ half simply vanished. A negative-top inset clip opens exactly that band
1520
+ (plus room for the panel's own upward shadow) and still cuts the bottom,
1521
+ which is the whole job the overflow was doing: hiding the content the
1522
+ max-height animation is squeezing past. */
1523
+ /* AN OPEN SHEET NEVER TAKES THE MAP'S CONTROLS WITH IT. Every open-sheet cap
1524
+ carries the same third term: the sheet may not grow past what leaves the map
1525
+ --sl-map-floor of height. Without it a four-ticket cart drove the map host
1526
+ to 193px and the bottom-right control column climbed into the Map/3D toggle
1527
+ \u2014 two live controls in the same 38x28 box.
1528
+ The 236px inner floor is the sheet's own irreducible content \u2014 10px of sheet
1529
+ head + the tray's 96px floor + the 116px footer that carries the CTA \u2014 so a
1530
+ very short container loses map clearance rather than the button that takes
1531
+ the money. At 375x812 the cap binds (map 264, sheet 411) and four tickets
1532
+ still stand in the tray without scrolling. */
1533
+ .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-side{
1534
+ max-height:calc(min(72%,480px,max(236px,100% - var(--sl-map-floor))) + var(--sl-safe-b))}
1535
+ .sl-picker[data-layout="narrow"][data-sheet="open"][data-has-selection="false"] .sl-side{
1536
+ max-height:calc(min(380px,64%,max(236px,100% - var(--sl-map-floor))) + var(--sl-safe-b))}
1493
1537
  /* With the price list expanded the sheet takes the with-selection height so
1494
1538
  the tray (cart + best-seats) is never crushed under the fixed-size list. */
1495
- .sl-picker[data-layout="narrow"][data-sheet="open"][data-prices-open="true"] .sl-side{max-height:calc(min(480px,74%) + var(--sl-safe-b))}
1496
- /* SLIM CHROME (owner call 2026-08-19): the peek is ONE 50px row. The grab
1497
- handle no longer owns a row of its own \u2014 it is a 4px bar painted at the
1498
- top of the same head, and the pills inside are 34px, so the whole thing
1499
- still clears the 44px touch floor while giving the map 26px back. */
1500
- /* THE PEEK CLIP FOLLOWS THE HEAD. The head grew to 58px (0.77.1) but this
1501
- clip still said 50, so the bottom 8px of the collapsed bar \u2014 the lower edge
1502
- of its 44px buttons \u2014 was cut off on every phone (client screenshot,
1503
- 2026-09-03). One number, read from the head. */
1504
- .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-side{max-height:calc(66px + var(--sl-safe-b));overflow:hidden}
1505
- .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-side > :not(.sl-sheet-head){display:none}
1539
+ .sl-picker[data-layout="narrow"][data-sheet="open"][data-prices-open="true"] .sl-side{
1540
+ max-height:calc(min(480px,74%,max(236px,100% - var(--sl-map-floor))) + var(--sl-safe-b))}
1541
+ /* THE COLLAPSED SHEET IS THE FOOTER (owner call 2026-09-05), and the footer is
1542
+ the SAME block the desktop panel has: the tickets, "1 ticket \u2026 $80", the CTA
1543
+ and the by-line, in one set of rules for both widths.
1544
+
1545
+ It used to be a bespoke one-liner \u2014 "From $30 \xB7 \u2726 Find seats" on an empty
1546
+ cart, "2 tickets \xB7 Continue $60" once seats existed \u2014 with its own markup,
1547
+ stylesheet block and renderer, restating in 50px of chrome what the footer
1548
+ eight lines below already said. Two summaries of one cart drifted: the clock
1549
+ moved between the pill and the header as the sheet opened, and a buyer with
1550
+ seats held could not see the button that takes their money.
1551
+
1552
+ So the peek state no longer hides the sheet's contents; it hides everything
1553
+ that is NOT the cart and the footer, and caps the cart.
1554
+
1555
+ The cap is a fraction rather than a fixed number of pixels because the tray
1556
+ below is a flex item that gives way: on a short container the sheet clamps
1557
+ here, the tray shrinks and scrolls, and the button is never the part that
1558
+ gets cut off. */
1559
+ /* 54% AND 356px, NOT 52% AND 340px. The cap above caps the TRAY, and this one
1560
+ must be able to hand it 228px or that cap never binds. Measured at 375x812
1561
+ with ten tickets: 10 head + 228 tray + 116 footer = 354, and 52% of that
1562
+ body resolved to 350 \u2014 four pixels short, which showed as one pixel of the
1563
+ fourth card rather than five. The fraction still wins on a short phone,
1564
+ where the tray shrinks and scrolls and the button is never cut off. */
1565
+ .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-side{max-height:calc(min(54%,356px) + var(--sl-safe-b))}
1566
+ .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-side > :not(.sl-sheet-head):not(.sl-tray):not(.sl-foot){display:none}
1567
+ /* THREE TICKETS AND A HAIRLINE OF THE FOURTH (owner item 20). Ten tickets used
1568
+ to be a sheet that grew until it owned the phone; the cart scrolls inside
1569
+ its own box now and the map keeps its room.
1570
+
1571
+ RE-DERIVED FOR THE DESKTOP CARD (2026-09-06), which is the card the phone
1572
+ shows now. MEASURED at 375x812: 10px of tray padding-top + three 64px
1573
+ .sl-chip cards + two 7px tray gaps = 216px for three whole tickets, then one
1574
+ more gap and 5px of the fourth so the box reads as scrollable rather than
1575
+ finished \u2014 228px.
1576
+
1577
+ 64px, not the 48px min-height in the rule and not the 52px the card measures
1578
+ on a mouse: a coarse pointer gives the \u2715 and the eye a REAL 44px box (they
1579
+ sit 2px apart, so grown invisible boxes would overlap and the \u2715 would claim
1580
+ part of the eye's own ink), and 44 + 9 + 9 + 2 is 64. A touch desktop has
1581
+ always drawn this card at 64 too. */
1582
+ .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-tray{max-height:228px;min-height:0;overflow-y:auto;overscroll-behavior:contain}
1583
+ /* In peek the tray is the CART and nothing else. The best-seats card, the
1584
+ closed note, the by-night summary and the "Areas" disclosure are all things
1585
+ to read and decide about; they belong to the opened sheet, which has the
1586
+ room. An allowlist rather than a list of what to hide, so the next thing
1587
+ added to the tray does not silently appear in the collapsed sheet. */
1588
+ .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-tray > :not(.sl-chip):not(.sl-ga){display:none}
1589
+ /* An empty cart has no tickets to show at all, and a tray with only its own
1590
+ padding in it would put an 18px band between the chevron and the total. */
1591
+ .sl-picker[data-layout="narrow"][data-sheet="peek"][data-has-selection="false"] .sl-tray{display:none}
1506
1592
  /* flex:1 is 1 1 0%, and a ZERO basis makes the tray contribute nothing to the
1507
1593
  sheet's content height \u2014 the sheet would collapse to its chrome no matter
1508
1594
  how many tickets were in the cart. An auto basis is what lets the cart push
@@ -1518,28 +1604,24 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1518
1604
  the tray scrolls like any other overflowing list. */
1519
1605
  .sl-picker[data-layout="narrow"][data-has-selection="false"] .sl-tray{min-height:0}
1520
1606
  .sl-picker[data-layout="narrow"] .sl-prices{max-height:150px;overflow-y:auto;overscroll-behavior:contain}
1521
- .sl-picker[data-layout="narrow"] .sl-foot{position:static;background:var(--sl-bg)}
1522
- /* NARROW FOOT SAYS EVERYTHING ONCE: the sheet head carries the count and total
1523
- and the header pill ticks the clock, so the total row goes. The rest of the
1524
- phone foot \u2014 padding, the secured caption, the by-line \u2014 is in TRAY_CSS. */
1525
- .sl-picker[data-layout="narrow"] .sl-total{display:none}
1607
+ /* THE FOOT IS NOT RESTYLED ON NARROW AT ALL. It used to lose its total row,
1608
+ hide itself on an empty cart and take its own padding and by-line size, all
1609
+ because a peek bar was saying those things instead. One block on both widths
1610
+ is one set of tokens and one thing to get right; the only narrow-only
1611
+ difference left is the WORD on the button, which syncCta decides. */
1526
1612
  .sl-picker[data-layout="narrow"] .sl-tray{scrollbar-width:thin}
1527
- .sl-picker[data-layout="narrow"] .sl-foot.empty{display:none}
1528
1613
  .sl-picker[data-layout="narrow"] .sl-sheet-head{order:0}
1529
1614
  .sl-picker[data-layout="narrow"] .sl-seats-sec{display:none}
1530
1615
  .sl-picker[data-layout="narrow"] .sl-tray{order:2}
1531
1616
  .sl-picker[data-layout="narrow"] .sl-filtersec{order:3}
1532
1617
  .sl-picker[data-layout="narrow"] .sl-filters{order:4}
1533
1618
  .sl-picker[data-layout="narrow"] .sl-prices-sec{order:5}
1534
- .sl-picker[data-layout="narrow"] .sl-prices-hint{order:6}
1535
1619
  .sl-picker[data-layout="narrow"] .sl-pricef{order:6}
1536
1620
  .sl-picker[data-layout="narrow"] .sl-prices{order:7}
1537
1621
  .sl-picker[data-layout="narrow"] .sl-foot{order:8}
1538
- .sl-picker[data-layout="narrow"] .sl-tray-hint,
1539
1622
  .sl-picker[data-layout="narrow"] .sl-filtersec,
1540
1623
  .sl-picker[data-layout="narrow"] .sl-filters,
1541
1624
  .sl-picker[data-layout="narrow"] .sl-prices-sec,
1542
- .sl-picker[data-layout="narrow"] .sl-prices-hint,
1543
1625
  .sl-picker[data-layout="narrow"] .sl-prices{display:none!important}
1544
1626
  .sl-picker[data-layout="narrow"][data-has-selection="true"] .sl-filtersec,
1545
1627
  .sl-picker[data-layout="narrow"][data-has-selection="true"] .sl-filters,
@@ -1549,27 +1631,32 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1549
1631
  in-flight busy states, which legitimately show with a non-empty cart \u2014 those
1550
1632
  set data-ba-active="true" (see setAttribute alongside data-has-selection). */
1551
1633
  .sl-picker[data-layout="narrow"][data-has-selection="true"]:not([data-ba-active="true"]) .sl-ba{display:none}
1552
- /* Touch chrome: pinch exists, so zoom IN is a gesture and the + button is
1553
- noise. Zoom OUT is not the same case \u2014 pinching outwards repeatedly is the
1554
- fiddliest gesture on a phone, and it is the one a buyer reaches for when
1555
- they are lost. So \u2212 comes back, but only once they are deep enough to BE
1556
- lost (data-zoomed, set from the seats rung), and never +. */
1557
- .sl-picker[data-layout="narrow"] .sl-zoom [data-ref="zin"]{display:none}
1558
- /* ONE CONTROL, NOT TWO. "\u2212" and "fit to screen" were two discs in the same
1559
- corner that both back the camera out, and nothing on either said which was
1560
- which. The phone dropped fit-to-screen first (2026-08); wide followed on
1561
- 2026-09-05 (owner call) \u2014 the stack is "+" and "\u2212" everywhere, the section
1562
- pill's \u2715 and the minimap already take a buyer back to the whole venue, and
1563
- the 3D view keeps its own Fit view because an orbit camera can be lost in a
1564
- way a 2D map cannot. */
1634
+ /* THREE CONTROLS ON THE PHONE (owner call 2026-09-05), and each one says a
1635
+ different thing: "+" steps in, "\u2212" walks one rung back out, and the framed
1636
+ dot puts the whole venue on screen in one tap.
1637
+
1638
+ This corner used to hold "\u2212" alone. The argument for that was that pinch
1639
+ already zooms in, so "+" was noise \u2014 but a phone buyer who has pinched
1640
+ themselves somewhere odd has only ONE control to reason with, and it was
1641
+ the one that also decided, wrongly, when it had nothing left to do. Three
1642
+ labelled discs cost 72 more pixels of a corner and remove every dead end.
1643
+
1644
+ "\u2212" and the fit disc do not duplicate each other: "\u2212" is the ladder (out of
1645
+ the seat, out of the section, then the venue) and the fit disc is the whole
1646
+ venue immediately, however deep the buyer is. Only the fit pose itself dims
1647
+ them, and it dims both \u2014 see syncMapStepBack. */
1648
+ .sl-zoom>[data-ref="zfit"]{display:none}
1649
+ .sl-picker[data-layout="narrow"] .sl-zoom>[data-ref="zfit"]{display:flex}
1650
+ /* Wide keeps its two: the section pill's \u2715, the minimap and a mouse wheel are
1651
+ all right there, and full screen already sits in the header as a labelled
1652
+ pill (dockLayoutChrome). */
1565
1653
 
1566
1654
  /* THE PRICE RAIL \u2014 the phone's legend, and the only one it gets by default.
1567
- On narrow the price LIST lives behind two gates (open the sheet, then open
1568
- the disclosure), so a buyer looking at five colours had nothing on screen
1569
- telling them what any of them costs. The list is still the detail view: it
1570
- carries "N left", offer names and the held/sold key, none of which fit a
1571
- chip. The rail carries the one thing that must never be a tap away \u2014 colour
1572
- to price.
1655
+ On narrow the price LIST lives behind two gates (open the sheet, then the
1656
+ disclosure), so a buyer looking at five colours had nothing on screen saying
1657
+ what any of them costs. The list is still the detail view: it carries "N
1658
+ left", offer names and the held/sold key, none of which fit a chip. The rail
1659
+ carries the one thing that must never be a tap away \u2014 colour to price.
1573
1660
 
1574
1661
  Price-first and name-dropped on purpose: the category name is already
1575
1662
  painted on the map, and a phone buyer is matching a colour to a number.
@@ -1599,16 +1686,28 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1599
1686
  the pinned escape chip, before anyone had touched it. Five short chips gain
1600
1687
  nothing from snapping; landing on the first price is worth more than a tidy
1601
1688
  swipe. */
1689
+ /* THE LAST PRICE IS NOT CUT IN HALF. Measured at 375px: 370px of chips inside
1690
+ a 355px box, so the cheapest chip ended 15px past the edge \u2014 and the end
1691
+ fade was 18px, narrow enough that the chip kept a legible "$3" and then a
1692
+ sliced glyph. It read as a damaged chip rather than as one continuing off
1693
+ the rail. The fade is 30px below, which dissolves the tail instead of
1694
+ cutting it; scroll-padding keeps a chip brought in by keyboard focus clear
1695
+ of that gradient. The rail still scrolls and nothing is hidden.
1696
+ NO END PADDING. It was tried, and it lies to syncRailEdges: the flag is
1697
+ "content wider than the box", so padding past the last chip can raise the
1698
+ fade over a chip that is entirely visible. Overflow must mean a clipped
1699
+ chip, or the gradient stops meaning "there is more". */
1602
1700
  .sl-rail-scroll{display:flex;align-items:center;gap:5px;flex:1;min-width:0;
1603
- overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:1px}
1701
+ overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:1px;
1702
+ scroll-padding-inline:6px 30px}
1604
1703
  /* Fade ONLY a clipping edge, so a hidden sixth chip reads as "more" and a
1605
1704
  rail that fits keeps every rounded end intact (syncRailEdges sets these).
1606
1705
  "start" is the left edge in LTR and the right edge in RTL, so the gradient
1607
1706
  direction follows the root's dir. */
1608
- .sl-rail-scroll[data-fade-end="true"]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 18px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 18px),transparent)}
1707
+ .sl-rail-scroll[data-fade-end="true"]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 30px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 30px),transparent)}
1609
1708
  .sl-rail-scroll[data-fade-start="true"]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 18px);mask-image:linear-gradient(90deg,transparent,#000 18px)}
1610
- .sl-rail-scroll[data-fade-start="true"][data-fade-end="true"]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 18px,#000 calc(100% - 18px),transparent);mask-image:linear-gradient(90deg,transparent,#000 18px,#000 calc(100% - 18px),transparent)}
1611
- .sl-picker[dir="rtl"] .sl-rail-scroll[data-fade-end="true"]{-webkit-mask-image:linear-gradient(-90deg,#000 calc(100% - 18px),transparent);mask-image:linear-gradient(-90deg,#000 calc(100% - 18px),transparent)}
1709
+ .sl-rail-scroll[data-fade-start="true"][data-fade-end="true"]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 18px,#000 calc(100% - 30px),transparent);mask-image:linear-gradient(90deg,transparent,#000 18px,#000 calc(100% - 30px),transparent)}
1710
+ .sl-picker[dir="rtl"] .sl-rail-scroll[data-fade-end="true"]{-webkit-mask-image:linear-gradient(-90deg,#000 calc(100% - 30px),transparent);mask-image:linear-gradient(-90deg,#000 calc(100% - 30px),transparent)}
1612
1711
  .sl-picker[dir="rtl"] .sl-rail-scroll[data-fade-start="true"]{-webkit-mask-image:linear-gradient(-90deg,transparent,#000 18px);mask-image:linear-gradient(-90deg,transparent,#000 18px)}
1613
1712
  .sl-rail-scroll::-webkit-scrollbar{display:none}
1614
1713
  /* 24px ink, taller target: the chip stays small so five prices fit a phone
@@ -1646,102 +1745,36 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1646
1745
  .sl-rc:disabled{opacity:.45;cursor:default}
1647
1746
  .sl-rc:disabled .sl-rc-t{text-decoration:line-through}
1648
1747
 
1649
- /* bottom-sheet head: grab handle + one-line summary (narrow only). The WHOLE
1650
- head is the tap/swipe toggle target (min 44px), so it reads as one control. */
1651
- .sl-sheet-head{display:none;flex-direction:column;justify-content:center;padding:6px 12px 8px;min-height:56px;
1748
+ /* THE SHEET HEAD IS A GRAB HANDLE ON THE PANEL'S EDGE (owner call 2026-09-06:
1749
+ "the arrow looks bad, why give it a whole band"). It was a 44px band with a
1750
+ 32px disc floating in it \u2014 a row of chrome above a panel whose every other
1751
+ row is a ticket, which is what made the sheet read as three stacked blocks.
1752
+ The chevron is a 40x22 pill now, straddling the sheet's own top edge the way
1753
+ a drawer handle sits on a drawer: eleven pixels above the border line and
1754
+ eleven below, with the head reduced to that lower half and NOTHING drawn
1755
+ under it \u2014 no divider, no band.
1756
+
1757
+ The whole row is still the tap and swipe target, and so is the pill: the
1758
+ pointer handlers live on the head, and a press starting on the pill now
1759
+ tracks with them (a 10px strip is not something a thumb can drag). */
1760
+ .sl-sheet-head{display:none;align-items:center;justify-content:center;padding:0;min-height:10px;
1652
1761
  cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;flex:none}
1653
- /* THE COLLAPSED SHEET IS THE LAST 50px OF THE SCREEN, which on a phone with a
1654
- home indicator is the strip the OS also claims. The head is the whole peek
1655
- state, so it carries the inset itself rather than relying on the panel's
1656
- padding \u2014 a gesture bar over the Continue pill is a tap that pays for
1657
- nothing. A max() keeps the ordinary spacing on hardware with no inset. */
1658
- /* THE HANDLE OWNS ITS OWN 8PX. The 44px peek buttons (0.77.0) sit
1659
- align-self:center in a 50px head, which put their top edge 3px below the
1660
- head's top \u2014 straight through the grab handle painted at top:4px. The head
1661
- is 58px with the row pushed 8px down, so the handle's band is clear of any
1662
- button's box; the same 8pt lift ships in the Flutter picker. */
1663
- .sl-picker[data-layout="narrow"] .sl-sheet-head{display:flex;position:relative;min-height:66px;
1664
- padding:8px 12px 0 12px;padding-bottom:max(0px,var(--sl-safe-b))}
1665
- .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-side{padding-bottom:0}
1666
- .sl-picker[data-layout="narrow"] .sl-sheet-grab{position:absolute;top:4px;left:50%;width:35px;height:4px;margin:0;transform:translateX(-50%);opacity:.5}
1667
- .sl-picker[data-layout="narrow"] .sl-sheet-bar{min-height:50px;gap:10px}
1668
- .sl-picker[data-layout="narrow"] .sl-sheet-peek{font-size:12.5px}
1669
- /* The pay button on the collapsed sheet is the single most-pressed control on
1670
- a phone; 34px was under the touch floor and it sat six pixels from the
1671
- chevron that opens the panel, so a miss on one hit the other. */
1672
- .sl-picker[data-layout="narrow"] .sl-sheet-peek .go{min-height:44px;padding:0 14px;font-size:12.5px}
1673
- .sl-picker[data-layout="narrow"] .sl-sheet-peek .go.ghost{padding:0 10px}
1674
- .sl-picker[data-layout="narrow"] .sl-sheet-toggle{width:44px;height:44px;margin:0}
1675
- /* The hold clock rides INSIDE the Continue pill while the sheet is collapsed
1676
- (that pill is the way to pay from the peek), so the header pill can go
1677
- quiet: one live clock on screen, not two. The open sheet hides the peek
1678
- pill, so the header pill comes back there. */
1679
- /* The empty bar's one door. Accent-filled, because with nothing in the cart it
1680
- is not competing with a Continue \u2014 it IS the primary action, and the chevron
1681
- beside it keeps its own job of opening the panel to browse.
1682
-
1683
- SMALLER INK THAN THE PILL IT REPLACES. At the peek bar's full 44px it read
1684
- as a checkout button on a bar with nothing to check out, and it crowded the
1685
- line it shares with the price. Thirty-six pixels of pill carries the same
1686
- weight as the Continue pill's type without claiming a decision that has not
1687
- been made yet; the target underneath it is still 44, reached the same way
1688
- the price chips reach theirs. */
1689
- /* ROUNDED RECTANGLE, LARGER TYPE (client review 2026-09-03, after seats.io's
1690
- BOOK NOW). The 36px pill read as an aside; the empty bar's one door is the
1691
- primary action and should look like one. 44px tall, 11px radius, 14px 800.
1692
- Still "Find seats", not "Book now": nothing is selected yet and the tap
1693
- opens the best-available form, so the button says what the tap does. */
1694
- /* NO CHEVRON ON THE COLLAPSED BAR (owner, 2026-09-03): the whole head is the
1695
- tap and swipe target already, and the arrow only took width from the one
1696
- button the bar exists for. The button is 48px, 16px type, right-aligned. */
1697
- .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-sheet-toggle{display:none}
1698
- .sl-picker[data-layout="narrow"] .sl-sheet-peek .go.sl-sheet-find{position:relative;align-self:center;
1699
- min-height:48px;height:48px;padding:0 20px;gap:6px;border-radius:12px;font-size:16px;font-weight:800}
1700
- /* The amount in "From $42" is the fact; the word is the caption. */
1701
- .sl-picker[data-layout="narrow"] .sl-sheet-peek .sl-peek-sum{font-size:12px;font-weight:700;color:var(--sl-muted)}
1702
- .sl-picker[data-layout="narrow"] .sl-sheet-peek .sl-peek-price{font-size:19px;font-weight:850;color:var(--sl-text);
1703
- font-variant-numeric:tabular-nums;margin:0 2px}
1704
- .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-sheet-peek .sl-sheet-go[data-act="checkout"]{min-height:48px;border-radius:12px;padding:0 18px;font-size:16px}
1705
- .sl-sheet-find::before{content:'';position:absolute;top:50%;left:0;right:0;height:44px;transform:translateY(-50%)}
1706
- /* The line the pill sits on clips its own overflow (that is what ellipsises a
1707
- long summary), so it has to be at least as tall as the target it contains \u2014
1708
- otherwise the four pixels of reach above and below the 36px pill are simply
1709
- cut off and the smaller ink becomes a smaller button after all. */
1710
- .sl-picker[data-layout="narrow"] .sl-sheet-peek{min-height:44px}
1711
- .sl-peek-spark{font-size:12px;line-height:1}
1712
- .sl-peek-time{opacity:.72;font-weight:700;font-variant-numeric:tabular-nums;margin-inline-start:6px}
1713
- .sl-picker[data-layout="narrow"][data-sheet="peek"][data-peek-clock="true"] .sl-hold-pill.on:not(.is-expiring){display:none}
1714
- /* OPEN sheet: the head is context, not controls \u2014 the pill it carries at peek
1715
- ("Best seats"/"Continue") duplicates the card and CTA right below it, and
1716
- every saved pixel is tray room (owner call 2026-08-14). */
1717
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-head{min-height:42px}
1718
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-grab{top:5px}
1719
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-bar{min-height:32px}
1720
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-sheet-peek .go{display:none}
1721
- .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-sheet-head{height:100%}
1722
- .sl-sheet-grab{width:36px;height:4px;border-radius:999px;background:var(--sl-muted);opacity:.55;margin:1px auto 5px}
1723
- .sl-sheet-bar{display:flex;align-items:center;gap:8px;min-height:44px}
1724
- .sl-sheet-peek{display:flex;align-items:center;gap:7px;flex:1;min-width:0;font-size:13px;font-weight:700;color:var(--sl-text);
1725
- white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
1726
- .sl-sheet-peek .sub{color:var(--sl-muted);font-weight:600}
1727
- /* collapsed-peek "Continue" affordance: a real accent pill, not plain text */
1728
- .sl-sheet-peek .go{margin-left:auto;flex:none;display:inline-flex;align-items:center;min-height:30px;
1729
- padding:6px 13px;border-radius:999px;background:var(--sl-accent);color:var(--sl-accent-ink);
1730
- font-weight:800;font-size:12.5px}
1731
- /* The add-more accelerator sits beside the primary pill and must not compete
1732
- with it: outlined, not filled. Only the first .go claims the auto margin, so
1733
- the pair stays together at the right edge rather than splitting apart. */
1734
- .sl-sheet-peek .go.ghost{gap:5px;background:transparent;color:var(--sl-text);border:1px solid var(--sl-line);font-weight:750}
1735
- .sl-sheet-peek .go.ghost:hover,.sl-sheet-peek .go.ghost:focus-visible{border-color:var(--sl-accent);color:var(--sl-accent-text)}
1736
- .sl-sheet-peek .go.ghost + .go{margin-left:0}
1762
+ .sl-picker[data-layout="narrow"] .sl-sheet-head{display:flex;position:relative}
1763
+ /* A PILL ON THE EDGE, NOT A DISC IN A BAND. Absolute rather than a negative
1764
+ margin so the head keeps its own 10px of height whatever the pill does, and
1765
+ the sheet's clip-path (see .sl-side above) is what lets the upper half out. */
1766
+ .sl-sheet-toggle{position:absolute;top:-11px;left:0;right:0;margin:0 auto;
1767
+ width:40px;height:22px;border-radius:999px;flex:none;display:flex;
1768
+ align-items:center;justify-content:center;color:var(--sl-muted);
1769
+ background:color-mix(in srgb,var(--sl-line) 62%,var(--sl-bg));
1770
+ border:1px solid var(--sl-line);
1771
+ transition:color .15s,background .15s}
1772
+ .sl-sheet-toggle:hover,.sl-sheet-toggle:focus-visible{color:var(--sl-text);background:color-mix(in srgb,var(--sl-line) 92%,var(--sl-bg))}
1773
+ .sl-sheet-toggle svg{width:14px;height:14px;stroke:currentColor;stroke-width:2.4;fill:none;
1774
+ stroke-linecap:round;stroke-linejoin:round}
1737
1775
  /* state chevron: points UP while peeking, rotates to point DOWN when open.
1738
1776
  Base keeps an explicit rotate(0) \u2014 transitioning to/from a bare 'none' leaves
1739
1777
  the value stuck in some engines, so both endpoints must be real transforms. */
1740
- .sl-sheet-toggle{width:44px;height:44px;margin:-8px -8px -8px 0;border-radius:999px;flex:none;display:flex;
1741
- align-items:center;justify-content:center;color:var(--sl-muted);transition:color .15s,background .15s}
1742
- .sl-sheet-toggle:hover,.sl-sheet-toggle:focus-visible{color:var(--sl-text);background:color-mix(in srgb,var(--sl-line) 44%,transparent)}
1743
- .sl-sheet-toggle svg{width:21px;height:21px;stroke:currentColor;stroke-width:2.4;fill:none;
1744
- stroke-linecap:round;stroke-linejoin:round}
1745
1778
  .sl-sheet-toggle svg{transform:rotate(0deg);transition:transform .24s cubic-bezier(.2,.8,.2,1)}
1746
1779
  .sl-picker[data-sheet="open"] .sl-sheet-toggle svg{transform:rotate(180deg)}
1747
1780
 
@@ -1764,9 +1797,7 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1764
1797
  /* MOBILE SPACE BELONGS TO THE CART (owner call 2026-08-14): the price list is
1765
1798
  one tap away behind the "Ticket prices" row, not a permanent tenant. Zone
1766
1799
  flags and section taps already answer "what does it cost" in context. */
1767
- .sl-picker[data-layout="narrow"][data-sheet="open"][data-prices-open="true"] .sl-prices-hint{display:block!important}
1768
1800
  .sl-picker[data-layout="narrow"][data-sheet="open"][data-prices-open="true"] .sl-prices{display:flex!important}
1769
- .sl-picker[data-layout="narrow"][data-sheet="open"] .sl-tray-hint{display:block!important}
1770
1801
  /* The row reads as the toggle it is on narrow: chevron + pointer. */
1771
1802
  .sl-picker[data-layout="narrow"] .sl-prices-sec{cursor:pointer}
1772
1803
  .sl-picker[data-layout="narrow"] .sl-prices-sec::after{content:'';width:8px;height:8px;flex:none;margin-left:auto;
@@ -1774,9 +1805,16 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1774
1805
  transform:rotate(45deg);transition:transform .2s cubic-bezier(.2,.8,.2,1)}
1775
1806
  .sl-picker[data-layout="narrow"][data-prices-open="true"] .sl-prices-sec::after{transform:rotate(-135deg)}
1776
1807
  /* THE \u267F CONTROL AND ITS MENU.
1777
- Bottom-left, above the dock bar with the other corner controls, and opening
1778
- UPWARD because below it there is only the dock. */
1808
+ IT RIDES THE RIGHT-HAND CONTROL COLUMN (owner call 2026-09-06), as the top
1809
+ disc above "+", on both layouts. Alone in the bottom-left corner it read as
1810
+ a stray fourth thing on the map \u2014 a lone disc opposite a stack of discs \u2014
1811
+ and the corner it sat in is the minimap's. The column is where a buyer
1812
+ already looks for map controls, so the menu opens UPWARD from it and
1813
+ towards the map, anchored to the column's own edge (inset-inline-end). */
1779
1814
  .sl-a11y{position:relative}
1815
+ /* The zoom discs carry a definite width, so flexbox leaves them at the
1816
+ column's inline start; this wrapper has none and would stretch past them. */
1817
+ .sl-zoom>.sl-a11y{align-self:flex-start}
1780
1818
  /* Same disc tokens as the zoom column, and it was the worse of the two: an
1781
1819
  opaque panel surface with a .24 hairline \u2014 a dark blob with no edge. */
1782
1820
  .sl-a11ybtn{width:36px;height:36px;border-radius:999px;display:grid;place-items:center;
@@ -1791,20 +1829,52 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1791
1829
  .sl-a11ybtn:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
1792
1830
  .sl-picker[data-layout="narrow"] .sl-a11ybtn{width:44px;height:44px}
1793
1831
  .sl-picker[data-layout="narrow"] .sl-a11ybtn svg{width:21px;height:21px}
1794
- .sl-a11ymenu{position:absolute;bottom:calc(100% + 8px);left:0;z-index:8;
1832
+ /* THE PANEL IS BOUNDED AND SCROLLS. With twelve accommodation rows it is 697px
1833
+ tall and opens from a corner ~549px down the map, so unbounded it put its
1834
+ first two rows \u2014 the wheelchair and companion filters \u2014 above the top of the
1835
+ window, unreachable. --sl-a11ymenu-max is measured against the MAP at open
1836
+ time (see pickerAccessibilityMenu.fit); the fallback keeps a no-JS host sane. */
1837
+ .sl-a11ymenu{position:absolute;bottom:calc(100% + 8px);inset-inline-end:0;z-index:8;
1795
1838
  min-width:264px;max-width:min(320px,calc(100vw - 32px));padding:4px;
1839
+ max-height:var(--sl-a11ymenu-max,calc(100dvh - 96px));overflow-y:auto;
1840
+ overscroll-behavior:contain;scrollbar-gutter:stable;
1796
1841
  border:1px solid var(--sl-line);border-radius:12px;background:var(--sl-surface);
1797
1842
  color:var(--sl-text);box-shadow:0 24px 48px -24px rgba(0,0,0,.65)}
1798
1843
  .sl-a11ymenu[hidden]{display:none}
1844
+ /* THE HEADER IS THE PHONE'S WAY OUT, and only the phone's. On a desktop the
1845
+ panel is dismissed by the pointer that is already moving \u2014 click anywhere,
1846
+ press Escape, or press the disc again \u2014 so a title bar there would be one
1847
+ more thing to read above a list that already says what it is. On narrow the
1848
+ \u2715 is the exit every other sheet in this widget offers, and it sticks to the
1849
+ top of the scroller so twelve provisions cannot carry it away. */
1850
+ .sl-a11yhead{display:none;position:sticky;top:-4px;z-index:1;align-items:center;gap:8px;
1851
+ margin:-4px -4px 2px;padding:4px 4px 4px 10px;background:var(--sl-surface);
1852
+ border-bottom:1px solid var(--sl-line)}
1853
+ .sl-picker[data-layout="narrow"] .sl-a11yhead{display:flex}
1854
+ .sl-a11yhead-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
1855
+ font-size:12.5px;font-weight:800;color:var(--sl-text)}
1856
+ .sl-a11yclose{flex:none;width:44px;height:44px;border-radius:999px;display:grid;place-items:center;
1857
+ background:transparent;border:0;color:var(--sl-muted);cursor:pointer}
1858
+ .sl-a11yclose:hover{color:var(--sl-text)}
1859
+ .sl-a11yclose:focus-visible{outline:2px solid var(--sl-accent);outline-offset:-2px}
1860
+ .sl-a11yclose svg{width:17px;height:17px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round}
1799
1861
  .sl-a11yrow{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;
1800
1862
  padding:6px 8px;border:0;border-radius:9px;background:transparent;color:inherit;
1801
1863
  font:inherit;font-size:12.5px;text-align:start;cursor:pointer}
1802
1864
  .sl-a11yrow:hover{background:color-mix(in srgb,var(--sl-muted) 12%,transparent)}
1803
1865
  .sl-a11yrow:focus-visible{outline:2px solid var(--sl-accent);outline-offset:-2px}
1804
1866
  .sl-a11yrow-i{flex:none;width:20px;text-align:center;font-size:14px}
1805
- .sl-a11yrow-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
1867
+ /* ONE LINE PER ROW (owner call 2026-09-06). The row used to be able to grow a
1868
+ second, muted line under the label \u2014 the companion-seat sentence \u2014 and with
1869
+ twelve provisions that turned the menu into a page of prose. That sentence
1870
+ is behind an \u24D8 beside the label now, and the label itself is the SHORT name
1871
+ (picker.accessShort.*), so it fits the line it is given and truncates
1872
+ rather than wrapping if a translation still does not. */
1873
+ .sl-a11yrow-t{flex:1;min-width:0}
1874
+ /* Only the PROVISION rows. The two header switches below them say whole
1875
+ sentences and keep the two lines they have always had. */
1876
+ .sl-a11yrow[data-a11y-row^="a11y:"] .sl-a11yrow-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
1806
1877
  .sl-a11yrow-l{font-weight:700;line-height:1.25}
1807
- .sl-a11yrow-n{font-size:10.5px;font-weight:600;color:var(--sl-muted);line-height:1.3}
1808
1878
  /* The switch: a track that fills with the accent and a knob that slides. It is
1809
1879
  drawn rather than a checkbox so it reads identically on both themes. */
1810
1880
  .sl-a11yrow-s{flex:none;position:relative;width:34px;height:20px;border-radius:999px;
@@ -1848,7 +1918,24 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1848
1918
  display:grid;place-items:center;cursor:pointer;font-size:12px;font-weight:850;color:var(--sl-text);background:var(--sl-surface)}
1849
1919
  .sl-offer-info>summary::-webkit-details-marker{display:none}.sl-offer-info[open]>summary{border-color:var(--sl-accent);color:var(--sl-accent-text)}
1850
1920
  .sl-offer-detail{margin-top:10px;padding-top:9px;border-top:1px solid var(--sl-line);font-size:10.5px;line-height:1.45;color:var(--sl-muted)}
1851
- .sl-sec{padding:14px 14px 4px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--sl-muted);font-weight:700}
1921
+ .sl-sec{position:relative;padding:14px 14px 4px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--sl-muted);font-weight:700}
1922
+ .sl-sec-title{display:inline-flex;align-items:center;gap:6px}
1923
+ /* THE PANEL EXPLAINS ITSELF THROUGH ONE CONTROL (owner call 2026-09-05). The
1924
+ sentences that sat under "Ticket prices", under "Your seats" and inside the
1925
+ best-seats card are behind a small \u24D8 in the header they explain. Hover and
1926
+ keyboard focus open it; a tap toggles it (touch has no hover) and the next
1927
+ press elsewhere closes it. The sentence is positioned by the HEADER or CARD
1928
+ it sits in \u2014 both are position:relative \u2014 so it spans that container and
1929
+ never falls out of the panel, wherever the control lands on the line. */
1930
+ .sl-info{display:inline-flex;align-items:center;margin-inline-start:6px;vertical-align:middle}
1931
+ .sl-info-btn{width:16px;height:16px;padding:0;border-radius:999px;border:1px solid var(--sl-line);background:transparent;
1932
+ color:var(--sl-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s,border-color .15s}
1933
+ .sl-info-btn svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
1934
+ .sl-info-btn:hover,.sl-info-btn:focus-visible,.sl-info.open .sl-info-btn{color:var(--sl-text);border-color:var(--sl-text)}
1935
+ .sl-info-pop{display:none;position:absolute;z-index:9;top:calc(100% - 2px);inset-inline:12px;padding:9px 11px;border-radius:10px;
1936
+ background:var(--sl-surface);border:1px solid var(--sl-line);box-shadow:0 12px 28px -12px rgba(0,0,0,.45);
1937
+ color:var(--sl-text);font-size:11.5px;font-weight:500;line-height:1.45;letter-spacing:0;text-transform:none;text-align:start;white-space:normal}
1938
+ .sl-info:hover .sl-info-pop,.sl-info:focus-within .sl-info-pop,.sl-info.open .sl-info-pop{display:block}
1852
1939
  .sl-prices-sec{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:13px}
1853
1940
  /* A PILL, NOT A FORM CONTROL. It stays a <select> \u2014 the native listbox is the
1854
1941
  only picker that works on every phone, with a keyboard and with a screen
@@ -1860,12 +1947,6 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1860
1947
  .sl-price-select{min-height:30px;max-width:130px;padding:0 26px 0 11px;border:1px solid var(--sl-line);border-radius:999px;
1861
1948
  background-color:var(--sl-surface);color:var(--sl-text);font:inherit;font-size:11px;font-weight:750;letter-spacing:0;text-transform:none}
1862
1949
  .sl-price-select:hover{border-color:var(--sl-muted)}
1863
- /* One sentence that teaches the whole colour code \u2014 a first-time buyer sees
1864
- "Head Tables \xB7 $165" and coloured dots with nothing connecting them. Gone
1865
- the moment they have seats (they've learned it) and while sales are closed. */
1866
- .sl-prices-hint{padding:0 14px 7px;font-size:11px;line-height:1.45;color:var(--sl-muted)}
1867
- .sl-picker[data-has-selection="true"] .sl-prices-hint,
1868
- .sl-picker[data-sales-closed="true"] .sl-prices-hint{display:none}
1869
1950
  .sl-prices{display:flex;flex-direction:column;padding:4px 14px 8px;border-bottom:1px solid var(--sl-line)}
1870
1951
  .sl-prices-sec,.sl-prices,.sl-seats-sec{flex:none}
1871
1952
  .sl-price-row{display:flex;align-items:center;gap:7px;min-height:28px;font-size:12px;
@@ -1876,7 +1957,6 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1876
1957
  .sl-price-row.sl-active .sl-price-label{color:var(--sl-accent-text)}
1877
1958
  .sl-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--sl-cat-dot,var(--sl-accent))}
1878
1959
  .sl-price-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
1879
- .sl-price-left{font-size:11px;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1880
1960
  .sl-price-amt{font-weight:800;font-variant-numeric:tabular-nums}
1881
1961
  /* long category lists: capped by default, scroll once expanded */
1882
1962
  .sl-prices.sl-expanded{max-height:196px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
@@ -1889,22 +1969,18 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1889
1969
  .sl-status-icon{width:13px;height:13px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
1890
1970
  color:#fff;background:#6b7280;line-height:1}
1891
1971
  .sl-status-icon svg{width:8px;height:8px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
1892
- /* These two swatches must be the SAME MARKS the map paints, or the key teaches
1893
- a language the canvas does not speak. Held wears the dashed ring at full
1894
- size; sold is plain and smaller (0.85x, matching SOLD_SEAT_SCALE). An
1895
- an outline rather than a border, so the dash sits outside the disc and the
1896
- swatch keeps its size - and the text token, so the ring flips with the theme
1897
- exactly as the map's ring ink does. */
1898
- .sl-status-icon.held{outline:1px dashed var(--sl-text);outline-offset:1px}
1899
- .sl-status-icon.sold{width:11px;height:11px;background:#8b93a0;outline:none}
1900
- .sl-status-icon.sold svg{width:8px;height:8px;stroke-width:2.4}
1972
+ /* ONE swatch, the SAME MARK the map paints (owner call 2026-09-05): a seat the
1973
+ buyer cannot take \u2014 sold, or held by someone else \u2014 is a flat grey disc with
1974
+ nothing drawn on it, so the key shows exactly that and names it once. The
1975
+ fill and alpha mirror render/seatStatusPaint's UNAVAILABLE_SEAT_FILL and
1976
+ UNAVAILABLE_SEAT_OPACITY, so the key teaches the language the canvas speaks. */
1977
+ .sl-status-icon.unavailable{background:#9ca3af;opacity:.55;outline:none}
1901
1978
 
1902
1979
  /* tray */
1903
1980
  .sl-seats-sec{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:13px}
1904
1981
  .sl-seat-summary{font-size:10px;letter-spacing:0;text-transform:none;white-space:nowrap}
1905
1982
  .sl-tray{flex:1;padding:10px 14px 14px;display:flex;flex-direction:column;gap:7px;min-height:0;overflow-y:auto;
1906
1983
  overscroll-behavior:contain;scrollbar-gutter:stable}
1907
- .sl-tray-hint{font-size:12.5px;color:var(--sl-muted);line-height:1.5}
1908
1984
  /* ONE ROW PER TICKET. The card was a two-column grid with a bordered icon
1909
1985
  column down its right edge \u2014 a second box drawn inside every ticket, holding
1910
1986
  two 26px buttons on a card one line tall. It is a row now: dot, name over a
@@ -2104,11 +2180,12 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2104
2180
  flex-direction:column;align-items:center;gap:8px;max-width:92%}
2105
2181
  .sl-anchor[data-region="bottom-right"]{right:12px;bottom:12px;flex-direction:column;align-items:flex-end;gap:6px}
2106
2182
  /* narrow: tighten the top strip so left/center can't crowd each other */
2107
- .sl-picker[data-layout="narrow"] .sl-anchor[data-region="top-left"]{max-width:30%}
2183
+ .sl-picker[data-layout="narrow"] .sl-anchor[data-region="top-left"]{max-width:calc(100% - 112px)}
2108
2184
  .sl-picker[data-layout="narrow"] .sl-anchor[data-region="top-center"]{max-width:44%}
2109
2185
 
2110
2186
  /* zoom column (flows within the bottom-right region) */
2111
2187
  .sl-zoom{display:flex;flex-direction:column;gap:6px}
2188
+ .sl-picker[data-layout="narrow"] .sl-zoom{flex-direction:row}
2112
2189
  /* CSS-fallback full screen (iOS Safari has no element fullscreen API) */
2113
2190
  .sl-picker.sl-fs{position:fixed;inset:0;z-index:2147483000;width:auto;height:auto;max-height:none;border-radius:0}
2114
2191
  /* A WIDGET THAT IS THE WHOLE VIEWPORT HAS NO CORNERS TO ROUND. The .sl-fs rule above
@@ -2126,16 +2203,22 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2126
2203
  hairline: a control nobody could see was a control, which costs more than a
2127
2204
  hidden label does. The disc tokens are resolved from the ground these are
2128
2205
  really painted on, not from the panel palette \u2014 see resolveMapChromeTokens. */
2129
- .sl-zoom button{width:36px;height:36px;border-radius:999px;
2206
+ /* > , NOT A DESCENDANT SELECTOR. The \u267F menu opens inside this column now, and
2207
+ as .sl-zoom button these rules reached every switch row and every count
2208
+ inside that popover: 36x36 discs on the disc surface, 17px/700 type, a
2209
+ rounded hairline each. The whole menu rendered as a stack of pills, and a
2210
+ "15 free" count squeezed into 36px wrapped onto two lines. The column styles
2211
+ the column's own controls. */
2212
+ .sl-zoom>button{width:36px;height:36px;border-radius:999px;
2130
2213
  background:var(--sl-chrome);
2131
2214
  border:1px solid var(--sl-chrome-line);
2132
2215
  box-shadow:0 6px 16px -8px rgba(0,0,0,.55);
2133
2216
  color:var(--sl-text);font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:border-color .15s,opacity .15s}
2134
- .sl-zoom button:hover:not(:disabled){border-color:var(--sl-text)}
2217
+ .sl-zoom>button:hover:not(:disabled){border-color:var(--sl-text)}
2135
2218
  /* NOTHING LEFT TO BACK OUT OF. It dims rather than disappearing: a corner that
2136
2219
  empties itself as the buyer arrives reads as the map losing a feature. */
2137
- .sl-zoom button:disabled{opacity:.42;cursor:default;box-shadow:none}
2138
- .sl-zoom svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
2220
+ .sl-zoom>button:disabled{opacity:.42;cursor:default;box-shadow:none}
2221
+ .sl-zoom>button svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
2139
2222
  /* Full-screen promotion: the capability existed (native + iOS overlay +
2140
2223
  framed-host paths) but hid as the 4th unlabelled glyph in a corner stack \u2014
2141
2224
  even the owner could not pick it out. dockLayoutChrome docks the SAME
@@ -2202,9 +2285,8 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2202
2285
  /* One control size on phones \u2014 match the 36px round rhythm the rest of the
2203
2286
  zoom column uses, but keep width for the language name to be readable. */
2204
2287
  .sl-picker[data-layout="narrow"] .sl-langsel{height:36px;max-width:112px;font-size:11.5px}
2205
- .sl-picker[data-layout="narrow"] .sl-floors{padding:3px;gap:1px}
2206
- .sl-picker[data-layout="narrow"] .sl-floors button[data-floor]{min-height:28px;padding:4px 10px;font-size:10.5px}
2207
- .sl-picker[data-layout="narrow"] .sl-floor-info{flex-basis:26px;width:26px;height:26px;font-size:11px}
2288
+ .sl-picker[data-layout="narrow"] .sl-floors{max-width:100%}
2289
+ .sl-picker[data-layout="narrow"] .sl-floor-select{max-width:132px}
2208
2290
 
2209
2291
  /* toast + boot states (toast flows in the bottom-center region) */
2210
2292
  /* A toast is a SENTENCE, not a chip. It used to be a nowrap line with
@@ -2265,8 +2347,8 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2265
2347
  .sl-rail.is-in .sl-rc:nth-child(4){animation-delay:120ms}
2266
2348
  .sl-rail.is-in .sl-rc:nth-child(n+5){animation-delay:160ms}
2267
2349
  @keyframes slRailIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
2268
- .sl-picker.is-arriving .sl-sheet-head{animation:slPeekIn 240ms ease-out both;animation-delay:200ms}
2269
- @keyframes slPeekIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
2350
+ .sl-picker.is-arriving .sl-sheet-head{animation:slSheetIn 240ms ease-out both;animation-delay:200ms}
2351
+ @keyframes slSheetIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
2270
2352
  @media(prefers-reduced-motion:reduce){
2271
2353
  .sl-boot,.sl-boot-venue,.sl-boot-bar::after,.sl-shells-in,
2272
2354
  .sl-rail.is-in .sl-rc,.sl-picker.is-arriving .sl-sheet-head{animation:none;transition:none}
@@ -2356,20 +2438,28 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2356
2438
  The 42px \u2726 watermark went with it. It was decoration behind live controls
2357
2439
  that every one of them then needed a z-index to sit in front of. */
2358
2440
  .sl-ba{position:relative;flex:none;overflow:hidden;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;
2359
- padding:13px;border:1px solid color-mix(in srgb,var(--sl-accent) 34%,var(--sl-line));border-radius:13px;
2441
+ padding:12px;border:1px solid color-mix(in srgb,var(--sl-accent) 34%,var(--sl-line));border-radius:13px;
2360
2442
  background:linear-gradient(135deg,color-mix(in srgb,var(--sl-accent) 5%,var(--sl-surface)),color-mix(in srgb,var(--sl-accent) 11%,var(--sl-surface)))}
2361
- .sl-ba-title{grid-column:1/-1;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:850}
2362
- .sl-ba-title .spark{color:var(--sl-accent-text);font-size:16px}
2363
- .sl-ba-copy{grid-column:1/-1;margin:-5px 0 2px 23px;color:var(--sl-muted);font-size:10.5px;line-height:1.35}
2443
+ /* ONE LINE, WHATEVER IS ON IT. The title, its \u24D8 and the premium quick-pick
2444
+ share this row; the words are the only part that may shrink, so they get the
2445
+ ellipsis and the two controls keep their size. */
2446
+ .sl-ba-title{position:relative;grid-column:1/-1;display:flex;align-items:center;gap:5px;
2447
+ flex-wrap:nowrap;font-size:12.5px;font-weight:850}
2448
+ .sl-ba-title-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
2449
+ .sl-ba-title .spark{flex:none;color:var(--sl-accent-text);font-size:16px}
2450
+ .sl-ba-title .sl-info{flex:none;margin-inline-start:auto}
2364
2451
  .sl-ba-cat{grid-column:2}
2365
2452
  .sl-ba-zone{grid-column:1/-1}
2366
2453
  /* "\u2605 Best seats" premium quick-pick \u2014 gold accent echoing the \u2605 Premium pill on
2367
- the confirm popover; deliberately distinct from the accent-toned qty/go. */
2368
- .sl-ba-premium{position:relative;grid-column:1/-1;justify-self:start;display:inline-flex;align-items:center;gap:6px;
2369
- padding:6px 12px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.02em;cursor:pointer;
2454
+ the confirm popover; deliberately distinct from the accent-toned qty/go.
2455
+ IT RIDES THE TITLE LINE (owner call 2026-09-06), so it is a compact pill at
2456
+ the end of that row rather than a full row of its own; the 44px touch box
2457
+ comes from the coarse-pointer block below, not from its ink. */
2458
+ .sl-ba-premium{position:relative;flex:none;display:inline-flex;align-items:center;gap:4px;
2459
+ padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.01em;cursor:pointer;
2370
2460
  color:var(--sl-premium-text);background:color-mix(in srgb,var(--sl-premium) 10%,var(--sl-surface));
2371
2461
  border:1px solid color-mix(in srgb,var(--sl-premium) 34%,var(--sl-line));transition:filter .15s,background .15s,color .15s}
2372
- .sl-ba-premium .star{font-size:12px;line-height:1;color:var(--sl-premium)}
2462
+ .sl-ba-premium .star{font-size:11px;line-height:1;color:var(--sl-premium)}
2373
2463
  .sl-ba-premium:hover{filter:brightness(1.05)}
2374
2464
  .sl-ba-premium.on{color:var(--sl-premium-ink);background:linear-gradient(135deg,#f0cf6b,#e0b23f);border-color:transparent;
2375
2465
  box-shadow:0 6px 16px color-mix(in srgb,var(--sl-premium) 26%,transparent)}
@@ -2408,7 +2498,6 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2408
2498
  .sl-ba-actions .replace{border-color:var(--sl-accent);background:var(--sl-accent);color:var(--sl-accent-ink)}
2409
2499
  .sl-picker[data-layout="narrow"] .sl-ba{padding:10px;gap:8px}
2410
2500
  .sl-picker[data-layout="narrow"] .sl-ba-title{font-size:12.5px}
2411
- .sl-picker[data-layout="narrow"] .sl-ba-copy{display:none}
2412
2501
  /* NOTHING NARROWER THAN A THUMB SITS BESIDE ANYTHING ELSE. At 390px the
2413
2502
  category and zone selects shared a row at ~170px each, which is a listbox
2414
2503
  you open by aiming. Both take the full width here, and every control on this
@@ -2441,14 +2530,17 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2441
2530
  Applied only to controls with clearance around them; tightly stacked pairs
2442
2531
  (the cart chip's remove/view rail) instead get real height on narrow. */
2443
2532
  @media (pointer:coarse){
2444
- .sl-zoom button,.sl-cbbtn,.sl-close,.sl-ga-qty button,.sl-ba-qty button,.sl-price-more,
2445
- .sl-seccard-x,.sl-fs-pill,.sl-side-toggle,.sl-minimap-toggle,.sl-floor-info,
2446
- /* The sheet chevron shrinks to 28px of ink while the panel is open (there is
2447
- no height to spare there) and was never on this list, so the one control
2448
- that closes the panel was a 28px target. */
2449
- .sl-sheet-toggle{position:relative}
2450
- .sl-zoom button::after,.sl-cbbtn::after,.sl-close::after,.sl-ga-qty button::after,.sl-ba-qty button::after,
2451
- .sl-price-more::after,.sl-seccard-x::after,.sl-fs-pill::after,.sl-side-toggle::after,
2533
+ .sl-zoom>button,.sl-a11ybtn,.sl-cbbtn,.sl-close,.sl-ga-qty button,.sl-ba-qty button,.sl-price-more,
2534
+ .sl-seccard-x,.sl-fs-pill,.sl-side-toggle,.sl-minimap-toggle,.sl-ba-premium,
2535
+ .sl-floor-info{position:relative}
2536
+ /* THE SHEET HANDLE IS NOT ON THAT LIST, and putting it back breaks the
2537
+ sheet: the pill is position:absolute on the panel's top edge, and a bare
2538
+ .sl-sheet-toggle{position:relative} here has equal specificity and a later
2539
+ position, so it would win and drop the pill into the head's flex flow \u2014 on
2540
+ every device this block exists for. It is already positioned, so the
2541
+ ::after below has its containing block anyway. */
2542
+ .sl-zoom>button::after,.sl-a11ybtn::after,.sl-cbbtn::after,.sl-close::after,.sl-ga-qty button::after,.sl-ba-qty button::after,
2543
+ .sl-price-more::after,.sl-seccard-x::after,.sl-fs-pill::after,.sl-side-toggle::after,.sl-ba-premium::after,
2452
2544
  .sl-minimap-toggle::after,.sl-floor-info::after,.sl-sheet-toggle::after{
2453
2545
  content:'';position:absolute;top:50%;left:50%;width:max(100%,44px);height:max(100%,44px);
2454
2546
  transform:translate(-50%,-50%)}
@@ -2458,10 +2550,10 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2458
2550
  given real height instead and 32px was the most the stack could spare. The
2459
2551
  row is one 48px line now with the two actions SIDE BY SIDE, so there is
2460
2552
  nothing to overlap and no reason to stop short of the floor.
2461
- The phone's DENSE line is a different row and keeps its own small ink over
2462
- a real box \u2014 see .sl-tline in the tray sheet. */
2463
- .sl-chip:not(.sl-tline) .rm,
2464
- .sl-chip:not(.sl-tline) .view{min-height:44px;height:44px;width:44px}
2553
+ The phone shows this same card now (owner call 2026-09-06), so there is
2554
+ one rule for one row rather than an exception carved out of it. */
2555
+ .sl-chip .rm,
2556
+ .sl-chip .view{min-height:44px;height:44px;width:44px}
2465
2557
  }
2466
2558
 
2467
2559
  /* screen-reader live region */
@@ -2500,24 +2592,20 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2500
2592
  .sl-picker[data-layout="narrow"] .sl-projection button{min-width:38px;min-height:28px;padding:4px 8px;font-size:9.5px}
2501
2593
 
2502
2594
 
2503
- /* One compact multi-floor selector (flows within the left-rail region). */
2504
- .sl-floors{display:none;align-items:center;gap:2px;max-width:min(420px,100%);overflow-x:auto;
2505
- scrollbar-width:none;padding:5px;border-radius:999px;
2595
+ /* One compact multi-floor selector in the top-left map toolbar. */
2596
+ .sl-floors{display:none;align-items:center;gap:5px;max-width:min(220px,100%);
2597
+ padding:3px 4px 3px 9px;border-radius:999px;
2506
2598
  background:color-mix(in srgb,var(--sl-surface) 92%,transparent);border:1px solid var(--sl-line);
2507
2599
  box-shadow:var(--sl-shadow);backdrop-filter:blur(8px)}
2508
2600
  .sl-floors.on{display:flex}
2509
- /* One tap per level. Mirrors .sl-rungs, which sits directly above it and reads
2510
- as the same kind of control \u2014 a dropdown here asked for two interactions and
2511
- hid what the other levels even were. */
2512
- .sl-floors button[data-floor]{min-height:34px;padding:6px 13px;border:0;border-radius:999px;
2513
- font:600 11px/1 inherit;letter-spacing:.05em;color:var(--sl-muted);background:transparent;
2514
- white-space:nowrap;cursor:pointer;transition:color .15s,background-color .15s}
2515
- .sl-floors button[data-floor]:hover{color:var(--sl-text)}
2516
- .sl-floors button[data-floor][aria-pressed="true"]{background:var(--sl-accent);color:var(--sl-accent-ink)}
2517
- .sl-floors button[data-floor]:focus-visible,.sl-floor-info:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
2518
- .sl-floor-info{display:inline-grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:999px;
2519
- border:1px solid var(--sl-line);color:var(--sl-muted);background:transparent;font:800 13px/1 inherit;cursor:help}
2520
- .sl-floor-info:hover{color:var(--sl-text);border-color:var(--sl-accent)}
2601
+ .sl-floor-label{flex:none;padding-left:6px;color:var(--sl-text);font-size:10px;font-weight:850;
2602
+ letter-spacing:.07em;text-transform:uppercase}
2603
+ .sl-floor-select{display:block;appearance:none;min-width:0;max-width:154px;min-height:44px;padding:6px 30px 6px 11px;border:0;
2604
+ border-radius:999px;background-color:var(--sl-surface);color:var(--sl-text);font:700 12px/1 inherit;
2605
+ letter-spacing:0;text-transform:none;cursor:pointer;
2606
+ background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
2607
+ background-position:calc(100% - 13px) 50%,calc(100% - 9px) 50%;background-size:4px 4px;background-repeat:no-repeat}
2608
+ .sl-floor-select:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
2521
2609
 
2522
2610
  /* tapped-section summary card \u2014 docks INSIDE the top-center anchor region on
2523
2611
  wide (flows below the rung pills, never over them, never floating over the
@@ -2555,22 +2643,15 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2555
2643
  .sl-seccard-nav button:hover,.sl-seccard-nav button:focus-visible{border-color:var(--sl-accent);color:var(--sl-accent-text)}
2556
2644
  .sl-seccard.mini .sl-seccard-nav{margin-left:2px}
2557
2645
  .sl-seccard.mini .sl-seccard-nav button{width:24px;height:24px;font-size:12px}
2558
- /* commercial seat flags \u2014 limited-view caution + premium tag. Amber tone,
2559
- deliberately distinct from the red taken/held state; shown on the confirm
2560
- card, echoed as a small \u25D0 marker on cart chips and the hover tip. */
2561
- .sl-cx{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
2562
- .sl-cx-warn{display:flex;align-items:flex-start;gap:7px;padding:8px 10px;border-radius:9px;
2563
- background:color-mix(in srgb,#f4b740 13%,var(--sl-surface));border:1px solid color-mix(in srgb,#f4b740 40%,var(--sl-line));
2564
- animation:slNoticeIn .28s ease both}
2565
- .sl-cx-glyph{flex:none;font-size:14px;line-height:1.2;color:#f4b740}
2566
- .sl-cx-txt{min-width:0;display:flex;flex-direction:column;gap:2px}
2567
- .sl-cx-txt b{font-size:12px;font-weight:800;color:var(--sl-text)}
2568
- .sl-cx-note{font-size:11px;line-height:1.4;color:var(--sl-muted)}
2569
- .sl-cx-premium{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:4px 10px;border-radius:999px;
2570
- font-size:11px;font-weight:800;letter-spacing:.02em;color:#c9a24b;
2571
- background:color-mix(in srgb,#e8c15a 13%,var(--sl-surface));border:1px solid color-mix(in srgb,#e8c15a 38%,var(--sl-line))}
2572
- .sl-cx-star{font-size:12px;line-height:1;color:#e8c15a}
2573
- .sl-cx-mark{flex:none;font-size:12px;line-height:1;color:#f4b740;cursor:help}
2646
+ /* SEAT NOTES \u2014 one BAND per per-seat attribute, on every popup. The rules
2647
+ live in pickerStylesNotes.ts (this sheet is at the app's 1,500-line cap on
2648
+ a vendored source); NOTES_CSS is concatenated immediately after it, which
2649
+ is where the block sat. */
2650
+ /* The cart line's icon-only markers. Same drawings, no words \u2014 the accessible
2651
+ name carries the title, so nothing here is icon-only to a screen reader. */
2652
+ .sl-cx-mark{flex:none;display:inline-flex;align-items:center;line-height:0;color:var(--sl-muted);cursor:help}
2653
+ .sl-cx-mark svg{display:block}
2654
+ .sl-cx-mark-warn{color:var(--sl-warn-text)}
2574
2655
  /* 360\xB0 seat-view modal (fills the widget; drag-to-look-around equirectangular) */
2575
2656
  .sl-view{position:absolute;inset:0;z-index:12;display:flex;flex-direction:column;background:var(--sl-bg);
2576
2657
  transition:opacity .18s ease,transform .18s ease}
@@ -2734,12 +2815,6 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2734
2815
  @keyframes slAccessVeilIn{from{opacity:0}to{opacity:1}}
2735
2816
  @keyframes slAccessCardIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
2736
2817
  @keyframes slAccessSpin{to{transform:rotate(360deg)}}
2737
- /* The collapsed sheet's one-liner reacting to a seat landing in the cart. The
2738
- global reduced-motion block above already neutralises it. */
2739
- @keyframes slPeekBump{0%{transform:scale(1)}45%{transform:scale(1.15)}100%{transform:scale(1)}}
2740
- .sl-peek-sum{display:inline-block;transform-origin:left center}
2741
- .sl-peek-bump{animation:slPeekBump .24s cubic-bezier(.2,.8,.2,1)}
2742
-
2743
2818
  @media(prefers-reduced-motion:reduce){
2744
2819
  .sl-picker *,.sl-modal-scrim *{animation-duration:.001ms!important;animation-iteration-count:1!important;
2745
2820
  transition-duration:.001ms!important;scroll-behavior:auto!important}
@@ -2787,7 +2862,7 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2787
2862
  corners, and it is the frame. */
2788
2863
  .sl-modal-frame > .sl-picker{border-radius:0}
2789
2864
  @media(max-width:640px){.sl-modal-scrim{padding:0}.sl-modal-frame{width:100%;height:100%;border-radius:0}}
2790
- `;function pt(){if(document.getElementById(Fs))return;let i=document.createElement("style");i.id=Fs,i.textContent=Zl+_s+Ns+Bs+Ds+ws,document.head.appendChild(i)}import{t as Jl}from"@seatlayer/core";import{cdnAssetUrl as ec}from"@seatlayer/core/core/cdnAsset";import{SEATLAYER_MODULE_URL as su}from"@seatlayer/core/core/cdnAsset";function b(i,e){let t=Jl(i);return t===i?e:t}function Ve(){return globalThis.matchMedia?.("(pointer: coarse)").matches??!1?b("picker.dragToLookTouch","Drag to look \xB7 pinch to zoom \xB7 tap \u2715 to close"):b("picker.dragToLookMouse","Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close")}function Vs(i,e){let t=e?i.toLocaleUpperCase(e):i.toLocaleUpperCase(),n=e?i.toLocaleLowerCase(e):i.toLocaleLowerCase();if(i!==t||t===n)return i;let s=[...n][0]??"";return(e?s.toLocaleUpperCase(e):s.toLocaleUpperCase())+n.slice(s.length)}function $s(i){if(typeof i=="string"){let e=document.querySelector(i);if(!e)throw new Error(`seatmap: container "${i}" not found`);return e}if(!(i instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return i}function I(i){return String(i??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function zs(i,e,t){let n=e.find(r=>ct(r))??null;if(i.replaceChildren(),!n)return i.textContent=t.slice(0,1).toUpperCase(),null;let s=document.createElement("img");return s.alt="",s.referrerPolicy="no-referrer",s.src=n,i.appendChild(s),n}var ht=null;function li(){if(ht!==null)return ht;try{if(typeof document>"u")return ht=!1;ht=!!document.createElement("canvas").getContext("webgl2")}catch{ht=!1}return ht}function ln(i){return ec(i)}var Rt=null;function It(){return Rt||(Rt=(typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(ln("seatlayer-view3d.mjs")):import("@seatlayer/core/view3d")).catch(e=>{throw Rt=null,e}),Rt)}function ci(){(typeof navigator>"u"?void 0:navigator.connection)?.saveData||It().catch(()=>{})}async function di(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(ln("seatlayer-panorama.mjs")):import("@seatlayer/core")}async function pi(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(ln("seatlayer-checkout.mjs")):import("./hostedCheckout-W7QZWSOQ.js")}function js(i){return i==="unavailable_for_event"||i==="payments_off_for_event"?i:"not_configured"}function hi(i,e,t){let n={month:"short",day:"numeric",hour:"numeric",minute:"2-digit"},s=new Date(i);if(e)try{return s.toLocaleString(t,{...n,timeZone:e})}catch{}return s.toLocaleString(t,n)}async function ui(i,e){let t=i.overlay.productionElements;if(!t?.some(s=>s.contentImageUrl))return i;let n=await Promise.all(t.map(async s=>{if(!s.contentImageUrl)return s;try{let r=await e(s.contentImageUrl);if(!r){let{contentImageUrl:o,...a}=s;return a}return{...s,runtimeContentImageUrl:r}}catch{let{contentImageUrl:r,...o}=s;return o}}));return{...i,overlay:{...i.overlay,productionElements:n}}}async function mi(i,e){if(i)try{let t=await e(i);return t?await(await fetch(t)).arrayBuffer():void 0}catch{return}}import{browserPanoramaConstraints as tc,loadPanoramaImage as ic,planPanoramaDelivery as nc,schedulePanoramaUpgrade as sc}from"@seatlayer/core/view/panoramaDelivery";function fi(i){let{root:e,source:t,caption:n,real:s,closeLabel:r,dragHint:o,viewFromSeatLabel:a,real360Label:l,previewLabel:c,resolveAsset:d,onClose:p}=i,u=i.chrome??{},h=document.createElement("div");h.className="sl-view sl-mo-zoom",h.setAttribute("role","dialog"),h.setAttribute("aria-label",a),h.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>';let g=V=>h.querySelector(V)?.remove();u.title===!1?g(".sl-view-title"):h.querySelector(".sl-view-title").textContent=a,u.caption===!1?g(".sl-view-cap"):h.querySelector(".sl-view-cap").textContent=n,h.querySelector(".sl-view-x").setAttribute("aria-label",r),u.badge===!1?g(".sl-view-badge"):h.querySelector(".sl-view-badge").textContent=s?l:c,h.querySelector(".sl-view-hint").textContent=o,e.appendChild(h);let y=h.querySelector(".sl-view-pano"),k=nc(t,tc()),S=new AbortController;y.style.backgroundImage=`url(${JSON.stringify(k.initialUrl)})`;let v=()=>{};k.upgradeUrl&&(v=sc(()=>{d(k.upgradeUrl).then(V=>!V||S.signal.aborted?null:ic(V,S.signal).then(()=>V)).then(V=>{!V||!h.isConnected||S.signal.aborted||(y.style.backgroundImage=`url(${JSON.stringify(V)})`)}).catch(()=>{})}));let f=70,P=35,_=1,C=y.clientHeight||1,R=y.clientWidth||1,H=-(C*(180/f)*2/2-R/2),A=0,D=()=>{let V=y.clientHeight||1,Qi=V*(180/f)*_,as=Math.max(0,Qi-V),ls=Math.min(as/2,P/180*Qi);A=Math.min(ls,Math.max(-ls,A)),y.style.backgroundSize=`auto ${Qi}px`,y.style.backgroundPosition=`${H}px ${A-as/2}px`};D();let O=!1,N=0,se=0,U=V=>{O=!0,N=V.clientX,se=V.clientY,y.classList.add("drag"),y.setPointerCapture?.(V.pointerId)},ss=V=>{O&&(H+=V.clientX-N,A+=V.clientY-se,N=V.clientX,se=V.clientY,D())},Yt=V=>{O=!1,y.classList.remove("drag"),y.releasePointerCapture?.(V.pointerId)},rs=V=>{V.preventDefault(),_=Math.min(2.4,Math.max(1,_+(V.deltaY<0?.12:-.12))),D()};y.addEventListener("pointerdown",U),y.addEventListener("pointermove",ss),y.addEventListener("pointerup",Yt),y.addEventListener("pointercancel",Yt),y.addEventListener("wheel",rs,{passive:!1});let Xi=h.querySelector(".sl-view-x");Xi.addEventListener("click",p);let os=V=>{V.key==="Escape"&&(V.stopPropagation(),p())};return h.addEventListener("keydown",os),Xi.focus(),{element:h,dispose(){v(),S.abort(),y.removeEventListener("pointerdown",U),y.removeEventListener("pointermove",ss),y.removeEventListener("pointerup",Yt),y.removeEventListener("pointercancel",Yt),y.removeEventListener("wheel",rs),h.removeEventListener("keydown",os),Xi.removeEventListener("click",p)}}}function ac(i,e){if(!e)return{targetSeatId:null,previousSeatId:null,nextSeatId:null};let t=i.find(r=>r.id===e);if(!t?.rowId)return{targetSeatId:e,previousSeatId:null,nextSeatId:null};let n=i.filter(r=>r.rowId===t.rowId),s=n.findIndex(r=>r.id===e);return{targetSeatId:e,previousSeatId:s>0?n[s-1].id:null,nextSeatId:s>=0&&s+1<n.length?n[s+1].id:null}}var Gs=6e4,gi=class{constructor(e){this.buyerView_="map";this.targetSeatId_=null;this.focusedSectionId_=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 focusedSectionId(){return this.focusedSectionId_}get seatPosition(){return ac(this.options.seats(),this.targetSeatId_)}get navigationMode(){return this.navigationMode_}canOffer3D(){return this.options.enable3D?this.handle&&this.overlay?!0:!this.options.doc()||!li()?!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.focusedSectionId_=this.findSeat(t.flyToSeatId)?.sectionId??null,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),n=this.options.host(),s=this.options.doc();if(!t||!n||!s)throw new Error("seat_view_unavailable");let r=++this.seatViewGeneration,o,a,l=!1;if(t.viewUrl){let g=t.viewMeta?.previewUrl,y=!!g&&g!==t.viewUrl,k=y?await this.options.resolveAsset(g):null,S=y?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(r!==this.seatViewGeneration||!S||y&&!k)return;o={url:S,...k?{previewUrl:k}:{},...y?{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=oc(o),l=rc(o)}else{if(!this.hasStage())throw new Error("seat_view_unavailable");let{generateSeatPanorama:g}=await di();if(r!==this.seatViewGeneration)return;let y=s.floors?.find(v=>v.objects.some(f=>f.type==="row"&&f.id===t.rowId)),k=t.focalPoint??y?.focalPoint??s.focalPoint,S=g(t,k,[...this.options.seats()]);o={url:S.url,generated:!0},a=ut("picker.illustrationCaption",{m:S.distanceM})}if(r!==this.seatViewGeneration)return;this.closeSeatView(!1),this.prepareHostTheme(n,s),pt();let c=this.options.chrome??{},d=Ve(),p=ut("picker.viewFromSeat",{label:t.displayLabel||t.label}),u=l?ut("picker.real360"):ut("picker.preview"),h=fi({root:n,source:o,caption:a,real:l,closeLabel:b("picker.close","Close"),dragHint:d,viewFromSeatLabel:p,real360Label:ut("picker.real360"),previewLabel:ut("picker.preview"),chrome:{title:c.seatViewTitle,caption:c.seatViewCaption,badge:c.seatViewBadge},resolveAsset:this.options.resolveAsset,onClose:()=>this.closeSeatView(!0,!0)});this.seatViewElement=h.element,this.seatViewDispose=h.dispose,this.options.onSeatViewChange?.({seatId:t.id,title:p,caption:a,badge:u,real:l,generated:!!o.generated,dragHint:d})}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 n=t.floors.findIndex(s=>s.id===e);return n>=0&&this.handle.focusFloor(n)}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,this.focusedSectionId_=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)?Gs/2:Gs}async enter3D(e){let t=this.options.host(),n=this.options.doc();if(!t||!n||this.overlay)throw new Error("venue_3d_unavailable");pt(),this.prepareHostTheme(t,n);let s=document.createElement("div");s.className="sl-view3d",s.setAttribute("role","group"),s.setAttribute("aria-label",b("picker.interactive3dVenueView","Interactive 3D venue view")),Object.assign(s.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 r=document.createElement("div");r.className="sl-view3d-loading",r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),r.textContent=b("picker.loading3d","Building the 3D venue\u2026"),s.appendChild(r),t.appendChild(s),this.overlay=s;let o=++this.generation;if(this.reducedMotion()?s.style.opacity="1":requestAnimationFrame(()=>{s.style.opacity="1"}),await this.nextPaint(),!(o!==this.generation||this.overlay!==s))try{let[a,l]=await Promise.all([It(),this.options.loadEventConfiguration()]),c=l?await ui(l,this.options.resolveAsset):null,d=await mi(n.theme?.venue3d?.shellAssetUrl,this.options.resolveAsset);if(o!==this.generation||this.overlay!==s)return;let p={doc:n,seats:[...this.options.seats()],...c?{eventConfigurationId:c.id,eventConfiguration:c}:{},...d?{registeredShellGlb:d}:{}};r.textContent=b("picker.building3d","Building venue geometry\u2026");let u=await a.prepareVenue3D(p);if(o!==this.generation||this.overlay!==s)return;let h=this.options.chrome??{},g=a.mountVenue3D(s,{...p,prepared:u},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:Ve(),...h.view3dCaption===!1||h.view3dSeatStepper===!1||h.view3dControlDock===!1?{chrome:{caption:h.view3dCaption!==!1,seatStepper:h.view3dSeatStepper!==!1,controlDock:h.view3dControlDock!==!1}}:{},seatViewActionLabel:y=>this.findSeat(y)?.viewUrl?b("picker.openAuthored360","Open venue 360\xB0"):b("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:y=>this.toggleSeat(y),onSeatInspect:y=>this.toggleSeat(y),onViewTargetChange:y=>{this.targetSeatId_=y,y&&(this.focusedSectionId_=this.findSeat(y)?.sectionId??null),this.options.onViewChange("venue3d",y)},onSectionFocusChange:y=>{this.focusedSectionId_=y,this.options.onViewChange("venue3d",this.targetSeatId_)},...this.options.enableSeatView?{getSeatView:y=>this.seatViewFor3D(y)}:{}});if(o!==this.generation||this.overlay!==s){g.dispose();return}this.handle=g,this.buyerView_="venue3d",this.targetSeatId_=e??null,this.focusedSectionId_=e?this.findSeat(e)?.sectionId??null:null,g.setNavigationMode(this.navigationMode_),requestAnimationFrame(()=>r.remove()),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e&&await g.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.focusedSectionId_=null,this.remove3DOverlay(!0,!!this.handle),this.options.onViewChange("map",null))}remove3DOverlay(e,t=!1){let n=this.handle,s=this.overlay;if(this.options.restoreMap(),t&&n&&s){s.style.pointerEvents="none";let r=()=>{this.buyerView_!=="map"||this.overlay!==s||(s.style.visibility="hidden",this.options.restoreMap())};!e||this.reducedMotion()?(s.style.opacity="0",r()):(requestAnimationFrame(()=>{s.style.opacity="0"}),setTimeout(r,280));return}if(this.handle=null,this.overlay=null,!s){try{n?.dispose()}catch{}this.options.restoreMap();return}if(!e||this.reducedMotion()){try{n?.dispose()}catch{}s.remove(),this.options.restoreMap();return}s.style.pointerEvents="none",requestAnimationFrame(()=>{s.style.opacity="0"}),setTimeout(()=>{try{n?.dispose()}catch{}s.remove(),this.options.restoreMap()},280)}async restore3D(e){let t=this.overlay,n=this.handle;if(!t||!n)throw new Error("venue_3d_unavailable");this.buyerView_="venue3d",this.targetSeatId_=e.flyToSeatId??null,this.focusedSectionId_=e.flyToSeatId?this.findSeat(e.flyToSeatId)?.sectionId??null:null,t.style.visibility="visible",t.style.pointerEvents="auto",this.reducedMotion()?t.style.opacity="1":requestAnimationFrame(()=>{t.style.opacity="1"}),n.resize(),n.setNavigationMode(this.navigationMode_),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e.flyToSeatId?await n.flyToSeat(e.flyToSeatId):e.resetView&&n.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(s=>s.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 n=t.viewMeta?.previewUrl,s=!!n&&n!==t.viewUrl,r=s?await this.options.resolveAsset(n):null,o=s?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(!o||s&&!r)throw new Error("seat_view_unavailable");return{url:o,...r?{previewUrl:r}:{},...s?{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:b("picker.chartDerivedModel","Chart-derived model")}}closeSeatView(e=!0,t=!1){e&&(this.seatViewGeneration+=1);let n=this.seatViewElement;if(this.seatViewDispose?.(),this.seatViewDispose=null,this.seatViewElement=null,!!n){if(this.options.onSeatViewChange?.(null),!t||this.reducedMotion()){n.remove();return}n.classList.add("is-leaving"),setTimeout(()=>n.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(n=>n.objects)??e.objects).some(n=>n.type==="shape"&&(n.role==="stage"||!!n.stageKind)):!1}prepareHostTheme(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");let n=t.theme;e.style.setProperty("--sl-bg",n?.background??"#f6f7fb"),e.style.setProperty("--sl-surface","#ffffff"),e.style.setProperty("--sl-text",n?.textColor??"#10162a"),e.style.setProperty("--sl-muted","#697386"),e.style.setProperty("--sl-line","#d9deea"),e.style.setProperty("--sl-accent",n?.accent??"#ef4056"),e.style.setProperty("--sl-accent-ink",n?.accentInk??"#ffffff")}reducedMotion(){return globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1}};var lc={host:"web",platform:"web",bundle:"",protocol:0,chromeOwner:"web"},cc={...lc},bi=null,Us=null;function dc(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():0}function pc(){let i=e=>Math.max(0,Math.round(e*100)/100);return{bootMs:i(dc()),documentMs:bi==null?0:i(bi),handshakeMs:bi==null||Us==null?0:i(Us-bi)}}function qs(){let{host:i,platform:e,bundle:t,protocol:n,chromeOwner:s}=cc,r=pc();return{host:i,platform:e,...t?{bundle:t}:{},...n?{protocol:n}:{},chromeOwner:s,bootMs:r.bootMs,documentMs:r.documentMs,handshakeMs:r.handshakeMs}}var Ks=new Set;function Ie(i){return Ks.has(i)?"repeat":"cold"}function yi(i){let e=Ie(i);return Ks.add(i),e}function ae(i){return typeof i=="number"&&Number.isFinite(i)&&i>=0?Math.round(i):0}function hc(){return typeof location>"u"?!1:/^(localhost|127\.0\.0\.1|\[::1\])$/i.test(location.hostname)}function uc(i){if(!/^[A-Za-z0-9_-]{1,80}$/.test(i.event))return null;let e=i.performanceProfile??{};return{event:i.event,scope:i.scope,surface:i.surface,outcome:i.outcome,stage:i.stage?.slice(0,32)??"",ms:ae(i.ms),api:ae(e.loadChartAndStatuses)||ae(e.loadChart),scene:ae(e.buildScene),panel:ae(e.buildBuyerControls),paint:ae(e.firstPaint),normalize:ae(e.normalizeBuyerModel),renderer:ae(e.createRenderer),seats:ae(i.seats),floors:ae(i.floors),view:i.view??"map",load:i.load??Ie(i.event),transport:i.transport??"pubapi",chartBytes:ae(i.chartDelivery?.bytes),chartCache:i.chartDelivery?.cache??"",...qs(),availabilityMs:ae(e.loadStatuses)}}var mc=new Set;function Te(i){let e=uc(i);if(e){for(let t of mc)try{t(e)}catch{}typeof fetch>"u"||hc()||fetch(`${i.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(()=>{})}}function Ot(i){if(!i)return null;let e=i.getBoundingClientRect();return e.width>0&&e.height>0?e:null}function fc(i){return Ot(i.peek?.querySelector(".sl-peek-sum"))??Ot(i.foot?.querySelector(".sl-total"))??Ot(i.tray)??Ot(i.sheetHead)}function dn(i,e,t,n){let s=i,r=s.map;if(!r||!e)return;let o=r.getBoundingClientRect(),a={x:o.left+e.x,y:o.top+e.y},l=t.displayLabel??t.label,c=n?.find(p=>p.key===t.categoryKey)?.color,d=()=>{let p=fc(s);p&&ks({from:a,to:{x:p.left+p.width/2,y:p.top+p.height/2},label:l,color:c})};Ot(s.peek)?requestAnimationFrame(d):d()}var cn=60,gc=650;function Ws(i,e){if(!e.length||i.focusSeats?.(e.map(s=>s.id)))return;let t=e.find(s=>s.sectionId)?.sectionId;if(!t)return;let n=e.filter(s=>s.sectionId===t);i.focus(t,{x:n.reduce((s,r)=>s+r.x,0)/n.length,y:n.reduce((s,r)=>s+r.y,0)/n.length})}function Ys(i,e){let t=!ni();Ws({focusSeats:n=>i.focusSeats?.(n,{animate:t})===!0,focus:(n,s)=>i.focusSection(n,s)},(e?.items??[]).filter(n=>n.objectType!=="ga").slice(0,10).map(n=>i.seatByLabel(n.label)).filter(n=>!!n))}function Xs(i,e){if(!e.length)return;let t=i.reducedMotion===!0;t||e.forEach((o,a)=>{i.schedule(()=>i.pop(o.id),a*cn)});let n=t?0:e.length*cn,s=e.find(o=>o.sectionId)?.sectionId;if(i.schedule(()=>Ws(i,e),n),t)return;let r=n+(i.focusSeats||s?gc:0);e.forEach((o,a)=>{i.schedule(()=>dn(i.regions,i.screenPoint(o),o,i.categories),r+a*cn)})}function bc(i,e,t){for(let n of i)if(e>=n.x&&t>=n.y&&e<=n.x+n.w&&t<=n.y+n.h)return!0;return!1}var vi=class{constructor(){this.rects=[];this.host=null;this.pointers=new Set;this.touches=new Set;this.mouseDown=!1;this.onPointerDown=e=>{this.inside(e.clientX,e.clientY)&&(this.pointers.add(e.pointerId),this.swallow(e))};this.onPointerFollow=e=>{this.pointers.has(e.pointerId)&&this.swallow(e)};this.onPointerEnd=e=>{this.pointers.delete(e.pointerId)&&this.swallow(e)};this.onTouchStart=e=>{let t=this.changed(e);if(!t.length)return;let n=!0;for(let s of t)this.inside(s.clientX,s.clientY)?this.touches.add(s.identifier):n=!1;n&&this.swallow(e)};this.onTouchFollow=e=>{let t=this.changed(e);t.length&&t.every(n=>this.touches.has(n.identifier))&&this.swallow(e)};this.onTouchEnd=e=>{let t=this.changed(e);if(!t.length)return;let n=t.every(s=>this.touches.has(s.identifier));for(let s of t)this.touches.delete(s.identifier);n&&this.swallow(e)};this.onMouseDown=e=>{this.inside(e.clientX,e.clientY)&&(this.mouseDown=!0,this.swallow(e))};this.onMouseFollow=e=>{this.mouseDown&&this.swallow(e)};this.onMouseUp=e=>{this.mouseDown&&(this.mouseDown=!1,this.swallow(e))};this.onClick=e=>{this.inside(e.clientX,e.clientY)&&this.swallow(e)}}set(e){this.rects=e.map(t=>({x:t.x,y:t.y,w:t.w,h:t.h})),this.rects.length||(this.pointers.clear(),this.touches.clear(),this.mouseDown=!1)}get(){return this.rects}attach(e){if(this.host===e)return;this.detach(),this.host=e;let t={capture:!0,passive:!1};e.addEventListener("pointerdown",this.onPointerDown,t),e.addEventListener("pointermove",this.onPointerFollow,t),e.addEventListener("pointerup",this.onPointerEnd,t),e.addEventListener("pointercancel",this.onPointerEnd,t),e.addEventListener("touchstart",this.onTouchStart,t),e.addEventListener("touchmove",this.onTouchFollow,t),e.addEventListener("touchend",this.onTouchEnd,t),e.addEventListener("touchcancel",this.onTouchEnd,t),e.addEventListener("mousedown",this.onMouseDown,t),e.addEventListener("mousemove",this.onMouseFollow,t),e.addEventListener("mouseup",this.onMouseUp,t),e.addEventListener("click",this.onClick,t),e.addEventListener("dblclick",this.onClick,t)}detach(){let e=this.host;if(!e)return;let t={capture:!0};e.removeEventListener("pointerdown",this.onPointerDown,t),e.removeEventListener("pointermove",this.onPointerFollow,t),e.removeEventListener("pointerup",this.onPointerEnd,t),e.removeEventListener("pointercancel",this.onPointerEnd,t),e.removeEventListener("touchstart",this.onTouchStart,t),e.removeEventListener("touchmove",this.onTouchFollow,t),e.removeEventListener("touchend",this.onTouchEnd,t),e.removeEventListener("touchcancel",this.onTouchEnd,t),e.removeEventListener("mousedown",this.onMouseDown,t),e.removeEventListener("mousemove",this.onMouseFollow,t),e.removeEventListener("mouseup",this.onMouseUp,t),e.removeEventListener("click",this.onClick,t),e.removeEventListener("dblclick",this.onClick,t),this.host=null,this.pointers.clear(),this.touches.clear(),this.mouseDown=!1}inside(e,t){if(!this.rects.length||!this.host)return!1;let n=this.host.getBoundingClientRect();return bc(this.rects,e-n.left,t-n.top)}swallow(e){e.stopImmediatePropagation(),e.stopPropagation(),e.cancelable&&e.preventDefault()}changed(e){let t=e.changedTouches;return t?Array.from(t):[]}},Qs=.48,yc=8;function vc(i,e,t,n=Qs){let s=Math.max(0,t.top),r=e.height-Math.max(0,t.bottom);if(!(r>s))return 0;let o=Number.isFinite(n)?Math.min(1,Math.max(0,n)):Qs,a=s+(r-s)*o-i;return Math.abs(a)<=yc?0:Math.round(a)}function Zs(i,e,t={}){let n=i.gestureCount();if(t.gestures!==void 0&&t.gestures!==n)return{dy:0,gestures:n};let s=i.seatPoint(e);if(!s)return{dy:0,gestures:n};let r=vc(s.y,{height:i.mapHeight()},i.insets(),t.fraction);return r?{dy:i.panScreenBy({x:0,y:r},t.animate!==!1)?r:0,gestures:n}:{dy:0,gestures:n}}var _t=class i{constructor(e,t=null){this.seams=e;this.watch=null;this.mode=t,this.watchMode()}themeMode(){return this.mode}setThemeMode(e,t){let n=t!==void 0&&"mapTheme"in t;e===this.mode&&!n||(n&&this.seams.setHostMapTheme(t.mapTheme??void 0),this.mode=e,this.watchMode(),this.applyThemeMode())}static groundFor(e){return tt(null,e)}applyThemeMode(){let e=this.seams.mapTheme()??i.groundFor(this.mode);this.seams.applyMapTheme(e??null)&&this.seams.changed()}watchMode(){this.watch?.(),this.watch=null,this.mode==="auto"&&(this.watch=Qt(()=>this.applyThemeMode()))}setViewportInsets(e){this.seams.applyViewportInsets(e),this.seams.changed()}viewportInsets(){return this.seams.readViewportInsets()}dispose(){this.watch?.(),this.watch=null}};import{getLocale as Sc}from"@seatlayer/core";import{seatConfidenceDisclosure as kc}from"@seatlayer/core/core/seatConfidence";import{generateSeatThumb as wc}from"@seatlayer/core";function mt(i){let e=i.viewMeta?.previewUrl??i.viewUrl;return e&&(an(e)||ct(e))?e:null}function xi(i){if(!i)return!1;let e=i.floors?.length?i.floors.map(t=>t.objects??[]):[i.objects??[]];for(let t of e)for(let n of t)if(n.type==="shape"&&(n.role==="stage"||n.stageKind))return!0;return!1}var xc=512,wi=new Map;function Si(i,e){if(!e)return null;let t=`${i.id}|${Math.round(e.x)},${Math.round(e.y)}`,n=wi.get(t);if(n!==void 0)return n;let s=null;try{s=wc(i,e).distanceM??null}catch{s=null}return wi.size>=xc&&wi.clear(),wi.set(t,s),s}function Dt(i){return i.getFocusedSection()!==null||i.seatsRevealed()}function Tc(i,e){return{accessibilityFilter:i.length>0,limitedViewFilter:e.some(t=>t.commercial?.restrictedView||t.commercial?.obstructedView)}}function Ec(i,e,t,n){for(let s of e){if(s.count<=0)continue;let r=i.accessibilitySpread?.([s.key]);for(let o of r?.sections??[]){let a=t.get(o.id)??n.get(o.id);if(!a||o.free<=0)continue;let l=a.accessibleFree??(a.accessibleFree={});l[s.key]=o.free}}}function Js(i,e,t){let n=i.doc,s=n?.theme??{},r=i.categoryAvailability(),o=i.getGAAreas(),a=i.getFloors(),l=i.getExpandedSeats(),c=i.getAccessNeeds(),d=Tc(c,l),p=e.seatPosition,u=p.targetSeatId?i.seatDetails(p.targetSeatId):null,h=new Map(l.map(v=>[v.id,v])),g=xi(n),y=n?.floors?.flatMap(v=>v.objects)??n?.objects??[],k=new Map,S=new Map;for(let v of y){if(v.type!=="section")continue;let f={id:v.id,label:v.label,...v.displayLabel?{displayLabel:v.displayLabel}:{},...v.zone?{zoneId:v.zone}:{}};k.set(v.id,f);let P=v.logicalSectionId??v.id;S.has(P)||S.set(P,f)}return Ec(i,c,k,S),{event:{key:t.event,name:t.eventInfo?.name??n?.name??t.event,venue:t.eventInfo?.venue??null,startsAt:t.eventInfo?.startsAt??null,timezone:t.eventInfo?.timezone??null,currency:t.eventInfo?.currency??t.currency??"USD",locale:Sc()||t.eventLocale,posterUrl:t.eventInfo?.posterUrl??null,mode:t.mode_??"live",salesClosed:t.eventInfo?.salesClosed??!1},branding:{...s.accent?{accent:s.accent}:{},...s.accentInk?{accentInk:s.accentInk}:{},...s.background?{background:s.background}:{},...s.textColor?{textColor:s.textColor}:{},...s.brandName?{brandName:s.brandName}:{},...s.logoUrl?{logoUrl:s.logoUrl}:{},attributionRequired:!s.hideBadge},features:{ga:o.length>0,tiers:!!n?.categories.some(v=>v.tiers?.length),floors:a.length>1,zones:!!n?.zones?.length,sections:k.size>0,bestAvailable:!0,...d,venue3d:e.canOffer3D(),seatView:e.canOfferSeatView()},catalog:{categories:(n?.categories??[]).filter(v=>!v.notForSale).map(v=>({key:v.key,label:v.label,color:v.color,price:v.price??v.tiers?.[0]?.price??0,available:r[v.key]??0,...Object.prototype.hasOwnProperty.call(r,v.key)?{free:r[v.key]}:{},tiers:(v.tiers??[]).map(f=>({id:f.id,name:f.name,price:f.price,...f.currency?{currency:f.currency}:{}}))})),zones:(n?.zones??[]).map(v=>({id:v.id,label:v.label,...v.color?{color:v.color}:{}})),sections:[...k.values()],gaAreas:o,bestAvailableZones:i.getBestAvailableZones()},map:{floors:a,activeFloorId:i.getActiveFloorId()||a[0]?.id||null,floorMode:i.isFloorOverview()?"all":"single",floorLabelStyle:i.getRenderer()?.getFloorLabelStyle?.()??"number",rung:i.getRung(),canZoomOut:Dt(i)||t.focusedSection_!==null,focusedSectionId:i.getFocusedSection(),focusedSection:t.focusedSection_,viewMode:i.getViewMode(),buyerView:e.buyerView,view3dTargetSeatId:p.targetSeatId,view3dTargetSeat:u,view3dPreviousSeatId:p.previousSeatId,view3dNextSeatId:p.nextSeatId,view3dFocusedSectionId:e.focusedSectionId,view3dNavigationMode:e.navigationMode,colorblindSafe:t.colorblindSafe_,viewportInsets:i.getViewportInsets(),categoryFilter:t.categoryFilter_?[...t.categoryFilter_]:null,accessibilityFilter:t.accessibilityFilter_?[...t.accessibilityFilter_]:null,hideLimitedView:t.hideLimitedView_,accessNeeds:c},selection:{seats:i.getSelection().map(v=>{let f=h.get(v.id);if(!f)return v;let P=i.worldToScreen({x:f.x,y:f.y}),_=mt(f),C=g?Si(f,f.focalPoint??n?.focalPoint):null;return{...v,screenPoint:{x:P.x,y:P.y},..._?{seatViewThumb:{reference:_,kind:"real"}}:{},...C!=null?{sightlineMetres:C}:{},...f.confidenceEvidence?{seatViewConfidence:kc(f.confidenceEvidence)}:{}}}),validity:i.getSelectionValidity(),maxSelection:t.maxSelection_},access:{...t.accessState_}}}var Ic="https://api.seatlayer.io",er=10;function Oc(i){if(typeof i=="string"){let e=document.querySelector(i);if(!e)throw new Error(`seatmap: container "${i}" not found`);return e}if(!(i instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return i}var hn=class{constructor(e){this.mount=null;this.hostEl=null;this.interactionEnabled_=!0;this.eventLocale=null;this.localeGeneration=0;this.languageSelect=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.lastReportedCanZoomOut_=!1;this.tipEl=null;this.tipPos={x:0,y:0};this.onTipMove=null;this.blockedRegions=null;this.realtime=null;this.holdingLabels=new Set;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??er,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 n={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()}},s=(e.apiBase??Ic).replace(/\/+$/,"");this.apiBase=s;let r=e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?ii({base:s,event:e.event,publicKey:e.publicKey,accessHooks:n,apiOptions:{onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=r?.access??Mt(e,n);let o=r?.api??new Me(s,{access:this.access??void 0,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)});this.api=o,this.controller=new Cc({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),onDeselect:a=>{this.controller.currentHold()?.labels.includes(a.label)&&this.controller.releaseLabels([a.label])},retapKeepsSelection:!0,onSeatRetap:a=>this.opts.onSeatRetap?.(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??er)-this.controller.getSelection().length)),tiers:oi(l),confirm:c=>{let d=typeof c=="number"?c:Object.values(c).reduce((p,u)=>p+u,0);this.holdGA(l.id,d)},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??_t.groundFor(e.theme?.mode)??null}),this.hostSurface=new _t({mapTheme:()=>this.opts.mapTheme,setHostMapTheme:a=>{this.opts.mapTheme=a},applyMapTheme:a=>this.controller.setMapTheme(a),applyViewportInsets:a=>this.controller.setViewportInsets(a),readViewportInsets:()=>this.controller.getViewportInsets(),changed:()=>this.notifyMapStateChange()},e.theme?.mode??null),this.buyerAssetUrls=new dt(e.event,(a,l)=>o.asset(a,l)),this.immersive=new gi({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,...e.chrome?{chrome:e.chrome}:{},restoreMap:()=>this.controller.refitCurrentView(),onViewChange:(a,l)=>{this.opts.onBuyerViewChange?.({view:a,...l?{seatId:l}:{}}),this.notifyMapStateChange()},onSeatViewChange:a=>this.opts.onSeatViewChange?.(a),onError:a=>this.opts.onError?.(a)}),this.lastReportedViewRung_=this.controller.getRung(),this.lastReportedCanZoomOut_=Dt(this.controller)}handleViewChange(){this.opts.onViewChange?.();let e=this.controller.getRung(),t=Dt(this.controller);e===this.lastReportedViewRung_&&t===this.lastReportedCanZoomOut_||(this.lastReportedViewRung_=e,this.lastReportedCanZoomOut_=t,this.opts.onMapStateChange?.())}notifyMapStateChange(){this.lastReportedViewRung_=this.controller.getRung(),this.lastReportedCanZoomOut_=Dt(this.controller),this.opts.onMapStateChange?.()}async render(){if(this.rendered)return this;let e=performance.now();this.rendered=!0;let t=Jt(this.opts.locale,this.opts.messages),n=this.localeGeneration+=1,s=pn();this.mount=Oc(this.opts.container);let r=document.createElement("div");r.style.width="100%",r.style.height="100%",r.style.position="relative",this.mount.appendChild(r),this.hostEl=r,this.blockedRegions?.attach(r),ei(r,t,a=>{a!==s&&this.applyActiveLocale(a,n)}),this.applyInteractionState();let o=await this.controller.render(r);if(!o)return Te({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"failure",stage:"load_chart",ms:performance.now()-e,load:Ie(this.opts.event),transport:"pubapi"}),this.rendered=!1,this.opts.errorDisplay!=="none"&&this.showLoadFailure(r),this;if(this.eventLocale=o.locale??null,!this.opts.locale&&this.eventLocale&&this.setLocale(this.eventLocale),this.buildLanguageSwitcher(r),this.controller.setViewMode(this.opts.initialView??"flat"),this.opts.floorLabelStyle&&this.setFloorLabelStyle(this.opts.floorLabelStyle),this.startRealtime(),this.mode_=o.mode==="test"?"test":"live",this.eventInfo={name:o.eventName,venue:o.venue??null,startsAt:o.startsAt??null,timezone:o.timezone??null,currency:o.currency??this.opts.currency??"USD",posterUrl:o.posterUrl??null,salesClosed:o.salesClosed},this.opts.seatTooltip!==!1){let a=document.createElement("div");a.setAttribute("role","tooltip"),a.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);',r.appendChild(a),this.tipEl=a,this.onTipMove=l=>{let c=r.getBoundingClientRect();this.tipPos={x:l.clientX-c.left,y:l.clientY-c.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()},r.addEventListener("mousemove",this.onTipMove)}if(o.mode==="test"&&this.opts.showTestModeIndicator!==!1){r.style.overflow="hidden";let a=document.createElement("div");a.dataset.slI18n="testMode",a.textContent=he("picker.testMode"),a.setAttribute("aria-label",he("picker.testMode")),a.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;",r.appendChild(a)}return this.buildBadge(r),Te({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"success",ms:performance.now()-e,performanceProfile:o.performanceProfile,chartDelivery:o.chartDelivery,seats:this.controller.getExpandedSeats().length,floors:this.controller.getFloors().length,view:"map",load:yi(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",he("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 n=document.createElement("span");n.setAttribute("aria-hidden","true"),n.style.cssText="width:16px;height:16px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;background:#0c1220;color:#fcf7ee",n.innerHTML=ai;let s=document.createElement("span");s.textContent=he("picker.poweredBy"),t.append(n,s),e.appendChild(t)}placeTooltip(){if(!this.tipEl||!this.hostEl)return;let e=this.hostEl.clientWidth,t=this.tipEl.offsetWidth,n=this.tipEl.offsetHeight,s=this.tipPos.x+14,r=this.tipPos.y-n-12;s+t>e-8&&(s=this.tipPos.x-t-14),r<8&&(r=this.tipPos.y+18),this.tipEl.style.left=`${Math.max(8,s)}px`,this.tipEl.style.top=`${Math.max(8,r)}px`}updateTooltip(e){if(!this.tipEl)return;if(!e){this.tipEl.style.display="none";return}let t=Ac(e.price,e.currency,{...Number.isInteger(e.price)?{minimumFractionDigits:0,maximumFractionDigits:0}:{},locale:this.opts.locale,fallback:(l,c)=>`${l} ${c}`}),n=document.createElement("div");n.style.cssText="font-weight:700;font-size:13px",n.textContent=e.label;let s=document.createElement("div");s.style.cssText="display:flex;align-items:center;gap:6px;margin-top:4px;color:#c7cddc";let r=document.createElement("span");r.style.cssText="width:9px;height:9px;border-radius:50%;flex:none",r.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(r,o,a),this.tipEl.replaceChildren(n,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"?he("map.statusHeld"):he("map.statusTaken"),this.tipEl.appendChild(l)}this.tipEl.style.display="block",this.placeTooltip()}buildLanguageSwitcher(e){let t=(this.opts.languages??[]).map(s=>Hc(s)).filter((s,r,o)=>o.indexOf(s)===r);if(t.length<2)return;let n=document.createElement("select");n.setAttribute("aria-label",he("picker.preferredTicketType")),n.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 r=document.createElement("option");r.value=s,r.textContent=Mc[s]??s,r.selected=s===pn(),n.appendChild(r)}n.addEventListener("change",()=>{this.setLocale(n.value)}),e.appendChild(n),this.languageSelect=n}async setLocale(e){let t=pn(),n=this.localeGeneration+=1,s=await Pc(e);return this.opts.messages&&Rc(this.opts.messages),s===t||this.applyActiveLocale(s,n),s}applyActiveLocale(e,t){if(t!==this.localeGeneration)return;let n=this.hostEl;if(n){n.lang=e,n.dir=Lc(e);for(let s of n.querySelectorAll("[data-sl-i18n]"))if(s.dataset.slI18n==="testMode")s.textContent=he("picker.testMode"),s.setAttribute("aria-label",he("picker.testMode"));else if(s.dataset.slI18n==="badge"){s.setAttribute("aria-label",he("picker.poweredBy"));let r=s.querySelector("span:last-child");r&&(r.textContent=he("picker.poweredBy"))}this.languageSelect&&this.languageSelect.value!==e&&(this.languageSelect.value=e),this.controller.refreshMapCopy()}}getMode(){return this.mode_}getPickerState(){return Js(this.controller,this.immersive,{event:this.opts.event,currency:this.opts.currency,mode_:this.mode_,eventInfo:this.eventInfo,eventLocale:this.eventLocale,focusedSection_:this.focusedSection_,colorblindSafe_:this.colorblindSafe_,categoryFilter_:this.categoryFilter_,accessibilityFilter_:this.accessibilityFilter_,hideLimitedView_:this.hideLimitedView_,maxSelection_:this.maxSelection_,accessState_: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(),e?.length&&this.focusAccessibilityFilter()}focusAccessibilityFilter(){this.controller.focusAccessibilityFilter?.(),this.notifyMapStateChange()}focusNextAccessibleSection(e){let t=this.controller.focusNextAccessibleSection?.(e)??null;return t&&this.notifyMapStateChange(),t}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 n=t.violations.includes("numberOfPlacesToSelect");throw Object.assign(new Error(n?`seatmap: select exactly ${t.required} places before holding`:"seatmap: adjust the ticket selection before holding"),{code:n?"selection_count_mismatch":"selection_invalid",selection:t})}this.holdingLabels=new Set(this.controller.getSelection().map(n=>n.label));try{let n=await this.controller.hold(void 0,e.ttlMs);return n?{holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.items}:null}finally{this.holdingLabels.clear()}}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,n={}){try{return await this.holdGAOrThrow(e,t,n)}catch(s){return this.opts.onError?.(s),null}}async holdGAOrThrow(e,t,n={}){let s=await this.controller.holdGA(e,t,n);return s?{holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items}:null}async bestAvailable(e,t,n={}){try{return await this.bestAvailableOrThrow(e,t,n)}catch(s){return this.opts.onError?.(s),null}}async bestAvailableOrThrow(e,t,n={}){let s=await this.controller.bestAvailable(e,t,n);return Ys(this.controller,s),s?{holdId:s.holdId,expiresAt:s.expiresAt,labels:s.labels,seats:s.seats,items:s.items,...n.zoneId?{zoneId:n.zoneId}:{}}:null}setSeatTier(e,t){this.controller.setSeatTier(e,t)}setTableQuantity(e,t){return this.controller.setTableQuantity(e,t)}async replaceTableQuantity(e,t,n){try{return await this.replaceTableQuantityOrThrow(e,t,n)}catch(s){return this.opts.onError?.(s),null}}async replaceTableQuantityOrThrow(e,t,n){let s=await this.controller.replaceTableQuantity(e,t,n);return s?{holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items}:null}getFloors(){return this.controller.getFloors()}setFloor(e){if(this.immersive.buyerView==="venue3d"&&e!=="all"&&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}e==="all"?this.controller.setFloorOverview(!0):this.controller.setFloor(e),this.notifyMapStateChange()}setFloorLabelStyle(e){this.controller.getRenderer()?.setFloorLabelStyle?.(e),this.notifyMapStateChange()}setSectionFocusDim(e){this.controller.setSectionFocusDim(e)}setSelectionFocus(e){this.controller.setSelectionFocus(e)}setBlockedRegions(e){if(!this.blockedRegions){if(!e.length)return;this.blockedRegions=new vi,this.hostEl&&this.blockedRegions.attach(this.hostEl)}this.blockedRegions.set(e)}getBlockedRegions(){return this.blockedRegions?.get()??[]}frameSeat(e,t={}){let n=this.controller.getRenderer();return Zs({seatPoint:s=>{let r=this.controller.getExpandedSeats().find(o=>o.id===s);return r?this.controller.worldToScreen({x:r.x,y:r.y}):null},mapHeight:()=>this.hostEl?.clientHeight??0,insets:()=>this.controller.getViewportInsets(),gestureCount:()=>n?.getCameraGestureCount?.()??0,panScreenBy:(s,r)=>n?.panScreenBy?(n.panScreenBy(s,{animate:r}),!0):!1},e,t)}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())}setThemeMode(e,t){this.hostSurface.setThemeMode(e,t)}getThemeMode(){return this.hostSurface.themeMode()}setViewportInsets(e){this.hostSurface.setViewportInsets(e)}getViewportInsets(){return this.hostSurface.viewportInsets()}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 xe({url:this.api.subscribeUrl(this.opts.event),mintTicket:()=>this.api.subscribeTicket(this.opts.event),onAccessUnavailable:e=>this.opts.onAccessUnavailable?.(e),sink:Et(this.controller,{flashOnLiveChange:!0,ownLabels:()=>this.holdingLabels,onStatusChange:()=>{this.immersive.pushLiveState(),this.opts.onStatusChange?.()},onSelectedObjectUnavailable:(e,t)=>this.opts.onSelectedObjectUnavailable?.({labels:e,reason:t})})}),this.realtime.start())}async refreshAvailability(){let e=await this.controller.refreshAvailability();return this.immersive.pushLiveState(),this.opts.onStatusChange?.(),e.lost.length&&this.opts.onSelectedObjectUnavailable?.({labels:e.lost,reason:"taken"}),this.notifyMapStateChange(),e}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 n=document.createElement("div");n.textContent="The seat map didn\u2019t load.",t.appendChild(n);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(r=>this.opts.onError?.(r))}),t.appendChild(s),e.appendChild(t)}destroy(){this.blockedRegions?.detach(),this.hostSurface.dispose(),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.languageSelect=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 tr=["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"],_c={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 Dc(i){let e={};for(let t of tr)e[t]=(...n)=>{let s=i();return s?s[t](...n):_c[t]()};return e}var ir=["event","apiBase","maxSelection","numberOfPlacesToSelect","selectionValidators","publicKey","locale","currency","colorblindSafe","initialView","errorDisplay"],nr=[...ir,"selectedObjects","selectableObjects","messages","seatTooltip","buyerAccessTokenProvider","buyerAccessToken"],sr=["onSelectionChange","onSelectionValidityChange","onSelectionValid","onSelectionInvalid","onSelectionLimit","onHold","onHoldRestored","onHoldExpired","onGAClick","onGAPrompt","onError","onDeckTap","onHint","onSeatHover","onAccessExpired","onAccessUnavailable","onSelectedObjectUnavailable"];function Bc(i,e,t){let n={container:i};for(let s of nr)n[s]=e[s];for(let s of sr)n[s]=t[s];return n}var Nc=new Set(["seatlayer.designer.ready","seatlayer.designer.saved","seatlayer.designer.published","seatlayer.designer.close","seatlayer.designer.error"]),Fc=2e4,Vc=480,$c=180*1e3,zc=900*1e3,jc=.8,Gc=30*1e3,Uc=1e5,qc=4,Kc=50;function un(i){if(typeof i!="string")return i;let e=document.querySelector(i);if(!e)throw new Error(`EmbeddedDesigner container not found: ${i}`);return e}function Wc(i){let e=(i??"").toLowerCase();return e.includes("expire")||e.includes("revoke")||e==="401"?"expired":e.includes("mismatch")?"mismatch":e.includes("timeout")?"timeout":"load"}var Yc={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."}},mn=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"||!Nc.has(t.type))return;let n={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||n.type==="seatlayer.designer.ready"||n.type==="seatlayer.designer.saved"||n.type==="seatlayer.designer.published"||n.type==="seatlayer.designer.close",r=this.options.expectedChartId!==void 0&&n.chartId!==this.options.expectedChartId&&(s||n.chartId!==void 0),o=this.options.expectedWorkspaceId!==void 0&&n.workspaceId!==this.options.expectedWorkspaceId&&(s||n.workspaceId!==void 0);if(r||o){this.showError("mismatch");return}switch(n.type){case"seatlayer.designer.ready":this.identityEstablished=!0,this.sessionExpiresAt=n.expiresAt,this.phase="ready",this.clearTimeoutTimer(),this.removeOverlay(),this.autoRecoverUsed=!1,this.scheduleRenewal(n.expiresAt),this.options.onReady?.(n);break;case"seatlayer.designer.saved":this.options.onSaved?.(n);break;case"seatlayer.designer.published":this.options.onPublished?.(n);break;case"seatlayer.designer.close":this.options.onClose?.(n);break;case"seatlayer.designer.error":{let a=Wc(n.code);if(a==="expired"&&this.autoRenewEnabled()&&!this.autoRecoverUsed){this.autoRecoverUsed=!0,this.clearRenewTimer(),this.options.onRequestRelaunch();return}(typeof n.fatal=="boolean"?n.fatal:a!=="load"||this.phase!=="ready")&&this.showError(a),this.options.onError?.(n);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 n=un(this.options.container);if(this.containerEl=n,window.addEventListener("message",this.handleMessage),n.append(t),this.frame=t,this.fillEnabled()&&this.startFill(),this.phase="loading",this.loadingStateEnabled()){this.ensureContainerPositioned(n),this.renderOverlay(n,"loading");let s=this.options.loadingTimeoutMs??Fc;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 n=()=>e.getBoundingClientRect().height,s=t.style.getPropertyValue("height"),r=t.style.getPropertyPriority("height");t.style.setProperty("height","0px","important");let o=n();t.style.setProperty("height",`${Uc}px`,"important");let a=n();return s?t.style.setProperty("height",s,r):t.style.removeProperty("height"),!(a-o>qc)&&o>=Kc?"container":"viewport"}applyFill(){if(!this.frame||this.pinned)return;let e=this.options.minHeight??Vc;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,n=Math.max(e,Math.round(window.innerHeight-t));this.setFrameHeight(`${n}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[n,s]of Object.entries(e))this.frame.style.setProperty(n,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=n=>{n.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 n=t<zc?t*jc:t-$c,s=Math.max(Gc,n);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{un(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=un(this.options.container)}catch{return}this.renderOverlay(t,"error",e)}handleTryAgain(){if(this.options.onRequestRelaunch){this.options.onRequestRelaunch();return}this.mount()}renderOverlay(e,t,n){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,n??"load"),e.append(s),this.overlay=s}buildSkeleton(e){let t=document.createElement("style");t.textContent=`
2865
+ `;function ut(){if(document.getElementById(ss))return;let i=document.createElement("style");i.id=ss,i.textContent=Jl+ns+es+os+is+ts+Bo,document.head.appendChild(i)}async function hi(i,e){let t=i.overlay.productionElements;if(!t?.some(o=>o.contentImageUrl))return i;let n=await Promise.all(t.map(async o=>{if(!o.contentImageUrl)return o;try{let s=await e(o.contentImageUrl);if(!s){let{contentImageUrl:r,...a}=o;return a}return{...o,runtimeContentImageUrl:s}}catch{let{contentImageUrl:s,...r}=o;return r}}));return{...i,overlay:{...i.overlay,productionElements:n}}}async function ui(i,e){if(i)try{let t=await e(i);return t?await(await fetch(t)).arrayBuffer():void 0}catch{return}}import{browserPanoramaConstraints as ec,loadPanoramaImage as tc,planPanoramaDelivery as ic,schedulePanoramaUpgrade as nc}from"@seatlayer/core/view/panoramaDelivery";function mi(i){let{root:e,source:t,caption:n,real:o,closeLabel:s,dragHint:r,viewFromSeatLabel:a,real360Label:l,previewLabel:c,resolveAsset:h,onClose:d}=i,u=i.chrome??{},p=document.createElement("div");p.className="sl-view sl-mo-zoom",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>';let f=F=>p.querySelector(F)?.remove();u.title===!1?f(".sl-view-title"):p.querySelector(".sl-view-title").textContent=a,u.caption===!1?f(".sl-view-cap"):p.querySelector(".sl-view-cap").textContent=n,p.querySelector(".sl-view-x").setAttribute("aria-label",s),u.badge===!1?f(".sl-view-badge"):p.querySelector(".sl-view-badge").textContent=o?l:c,p.querySelector(".sl-view-hint").textContent=r,e.appendChild(p);let b=p.querySelector(".sl-view-pano"),k=ic(t,ec()),S=new AbortController;b.style.backgroundImage=`url(${JSON.stringify(k.initialUrl)})`;let v=()=>{};k.upgradeUrl&&(v=nc(()=>{h(k.upgradeUrl).then(F=>!F||S.signal.aborted?null:tc(F,S.signal).then(()=>F)).then(F=>{!F||!p.isConnected||S.signal.aborted||(b.style.backgroundImage=`url(${JSON.stringify(F)})`)}).catch(()=>{})}));let A=70,y=35,H=1,C=b.clientHeight||1,O=b.clientWidth||1,M=-(C*(180/A)*2/2-O/2),P=0,_=()=>{let F=b.clientHeight||1,Xi=F*(180/A)*H,eo=Math.max(0,Xi-F),to=Math.min(eo/2,y/180*Xi);P=Math.min(to,Math.max(-to,P)),b.style.backgroundSize=`auto ${Xi}px`,b.style.backgroundPosition=`${M}px ${P-eo/2}px`};_();let D=!1,B=0,se=0,re=F=>{D=!0,B=F.clientX,se=F.clientY,b.classList.add("drag"),b.setPointerCapture?.(F.pointerId)},X=F=>{D&&(M+=F.clientX-B,P+=F.clientY-se,B=F.clientX,se=F.clientY,_())},qt=F=>{D=!1,b.classList.remove("drag"),b.releasePointerCapture?.(F.pointerId)},Qn=F=>{F.preventDefault(),H=Math.min(2.4,Math.max(1,H+(F.deltaY<0?.12:-.12))),_()};b.addEventListener("pointerdown",re),b.addEventListener("pointermove",X),b.addEventListener("pointerup",qt),b.addEventListener("pointercancel",qt),b.addEventListener("wheel",Qn,{passive:!1});let Yi=p.querySelector(".sl-view-x");Yi.addEventListener("click",d);let Jn=F=>{F.key==="Escape"&&(F.stopPropagation(),d())};return p.addEventListener("keydown",Jn),Yi.focus(),{element:p,dispose(){v(),S.abort(),b.removeEventListener("pointerdown",re),b.removeEventListener("pointermove",X),b.removeEventListener("pointerup",qt),b.removeEventListener("pointercancel",qt),b.removeEventListener("wheel",Qn),p.removeEventListener("keydown",Jn),Yi.removeEventListener("click",d)}}}function rc(i,e){if(!e)return{targetSeatId:null,previousSeatId:null,nextSeatId:null};let t=i.find(s=>s.id===e);if(!t?.rowId)return{targetSeatId:e,previousSeatId:null,nextSeatId:null};let n=i.filter(s=>s.rowId===t.rowId),o=n.findIndex(s=>s.id===e);return{targetSeatId:e,previousSeatId:o>0?n[o-1].id:null,nextSeatId:o>=0&&o+1<n.length?n[o+1].id:null}}var rs=6e4,fi=class{constructor(e){this.buyerView_="map";this.targetSeatId_=null;this.focusedSectionId_=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 focusedSectionId(){return this.focusedSectionId_}get seatPosition(){return rc(this.options.seats(),this.targetSeatId_)}get navigationMode(){return this.navigationMode_}canOffer3D(){return this.options.enable3D?this.handle&&this.overlay?!0:!this.options.doc()||!Zt()?!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.focusedSectionId_=this.findSeat(t.flyToSeatId)?.sectionId??null,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),n=this.options.host(),o=this.options.doc();if(!t||!n||!o)throw new Error("seat_view_unavailable");let s=++this.seatViewGeneration,r,a,l=!1;if(t.viewUrl){let f=t.viewMeta?.previewUrl,b=!!f&&f!==t.viewUrl,k=b?await this.options.resolveAsset(f):null,S=b?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(s!==this.seatViewGeneration||!S||b&&!k)return;r={url:S,...k?{previewUrl:k}:{},...b?{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=sc(r),l=oc(r)}else{if(!this.hasStage())throw new Error("seat_view_unavailable");let{generateSeatPanorama:f}=await Jt();if(s!==this.seatViewGeneration)return;let b=o.floors?.find(v=>v.objects.some(A=>A.type==="row"&&A.id===t.rowId)),k=t.focalPoint??b?.focalPoint??o.focalPoint,S=f(t,k,[...this.options.seats()]);r={url:S.url,generated:!0},a=mt("picker.illustrationCaption",{m:S.distanceM})}if(s!==this.seatViewGeneration)return;this.closeSeatView(!1),this.prepareHostTheme(n,o),ut();let c=this.options.chrome??{},h=Be(),d=mt("picker.viewFromSeat",{label:t.displayLabel||t.label}),u=l?mt("picker.real360"):mt("picker.preview"),p=mi({root:n,source:r,caption:a,real:l,closeLabel:g("picker.close","Close"),dragHint:h,viewFromSeatLabel:d,real360Label:mt("picker.real360"),previewLabel:mt("picker.preview"),chrome:{title:c.seatViewTitle,caption:c.seatViewCaption,badge:c.seatViewBadge},resolveAsset:this.options.resolveAsset,onClose:()=>this.closeSeatView(!0,!0)});this.seatViewElement=p.element,this.seatViewDispose=p.dispose,this.options.onSeatViewChange?.({seatId:t.id,title:d,caption:a,badge:u,real:l,generated:!!r.generated,dragHint:h})}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 n=t.floors.findIndex(o=>o.id===e);return n>=0&&this.handle.focusFloor(n)}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,this.focusedSectionId_=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)?rs/2:rs}async enter3D(e){let t=this.options.host(),n=this.options.doc();if(!t||!n||this.overlay)throw new Error("venue_3d_unavailable");ut(),this.prepareHostTheme(t,n);let o=document.createElement("div");o.className="sl-view3d",o.setAttribute("role","group"),o.setAttribute("aria-label",g("picker.interactive3dVenueView","Interactive 3D venue view")),Object.assign(o.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 s=document.createElement("div");s.className="sl-view3d-loading",s.setAttribute("role","status"),s.setAttribute("aria-live","polite"),s.textContent=g("picker.loading3d","Building the 3D venue\u2026"),o.appendChild(s),t.appendChild(o),this.overlay=o;let r=++this.generation;if(this.reducedMotion()?o.style.opacity="1":requestAnimationFrame(()=>{o.style.opacity="1"}),await this.nextPaint(),!(r!==this.generation||this.overlay!==o))try{let[a,l]=await Promise.all([At(),this.options.loadEventConfiguration()]),c=l?await hi(l,this.options.resolveAsset):null,h=await ui(n.theme?.venue3d?.shellAssetUrl,this.options.resolveAsset);if(r!==this.generation||this.overlay!==o)return;let d={doc:n,seats:[...this.options.seats()],...c?{eventConfigurationId:c.id,eventConfiguration:c}:{},...h?{registeredShellGlb:h}:{}};s.textContent=g("picker.building3d","Building venue geometry\u2026");let u=await a.prepareVenue3D(d);if(r!==this.generation||this.overlay!==o)return;let p=this.options.chrome??{},f=a.mountVenue3D(o,{...d,prepared:u},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:Be(),navLabels:Xt(),...p.view3dCaption===!1||p.view3dSeatStepper===!1||p.view3dControlDock===!1?{chrome:{caption:p.view3dCaption!==!1,seatStepper:p.view3dSeatStepper!==!1,controlDock:p.view3dControlDock!==!1}}:{},seatViewActionLabel:b=>this.findSeat(b)?.viewUrl?g("picker.openAuthored360","Open venue 360\xB0"):g("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:b=>this.toggleSeat(b),onSeatInspect:b=>this.toggleSeat(b),onViewTargetChange:b=>{this.targetSeatId_=b,b&&(this.focusedSectionId_=this.findSeat(b)?.sectionId??null),this.options.onViewChange("venue3d",b)},onSectionFocusChange:b=>{this.focusedSectionId_=b,this.options.onViewChange("venue3d",this.targetSeatId_)},...this.options.enableSeatView?{getSeatView:b=>this.seatViewFor3D(b)}:{}});if(r!==this.generation||this.overlay!==o){f.dispose();return}this.handle=f,this.buyerView_="venue3d",this.targetSeatId_=e??null,this.focusedSectionId_=e?this.findSeat(e)?.sectionId??null:null,f.setNavigationMode(this.navigationMode_),requestAnimationFrame(()=>s.remove()),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e&&await f.flyToSeat(e)}catch(a){if(r!==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.focusedSectionId_=null,this.remove3DOverlay(!0,!!this.handle),this.options.onViewChange("map",null))}remove3DOverlay(e,t=!1){let n=this.handle,o=this.overlay;if(this.options.restoreMap(),t&&n&&o){o.style.pointerEvents="none";let s=()=>{this.buyerView_!=="map"||this.overlay!==o||(o.style.visibility="hidden",this.options.restoreMap())};!e||this.reducedMotion()?(o.style.opacity="0",s()):(requestAnimationFrame(()=>{o.style.opacity="0"}),setTimeout(s,280));return}if(this.handle=null,this.overlay=null,!o){try{n?.dispose()}catch{}this.options.restoreMap();return}if(!e||this.reducedMotion()){try{n?.dispose()}catch{}o.remove(),this.options.restoreMap();return}o.style.pointerEvents="none",requestAnimationFrame(()=>{o.style.opacity="0"}),setTimeout(()=>{try{n?.dispose()}catch{}o.remove(),this.options.restoreMap()},280)}async restore3D(e){let t=this.overlay,n=this.handle;if(!t||!n)throw new Error("venue_3d_unavailable");this.buyerView_="venue3d",this.targetSeatId_=e.flyToSeatId??null,this.focusedSectionId_=e.flyToSeatId?this.findSeat(e.flyToSeatId)?.sectionId??null:null,t.style.visibility="visible",t.style.pointerEvents="auto",this.reducedMotion()?t.style.opacity="1":requestAnimationFrame(()=>{t.style.opacity="1"}),n.resize(),n.setNavigationMode(this.navigationMode_),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e.flyToSeatId?await n.flyToSeat(e.flyToSeatId):e.resetView&&n.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(o=>o.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 n=t.viewMeta?.previewUrl,o=!!n&&n!==t.viewUrl,s=o?await this.options.resolveAsset(n):null,r=o?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(!r||o&&!s)throw new Error("seat_view_unavailable");return{url:r,...s?{previewUrl:s}:{},...o?{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 n=this.seatViewElement;if(this.seatViewDispose?.(),this.seatViewDispose=null,this.seatViewElement=null,!!n){if(this.options.onSeatViewChange?.(null),!t||this.reducedMotion()){n.remove();return}n.classList.add("is-leaving"),setTimeout(()=>n.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(n=>n.objects)??e.objects).some(n=>n.type==="shape"&&(n.role==="stage"||!!n.stageKind)):!1}prepareHostTheme(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");let n=t.theme;e.style.setProperty("--sl-bg",n?.background??"#f6f7fb"),e.style.setProperty("--sl-surface","#ffffff"),e.style.setProperty("--sl-text",n?.textColor??"#10162a"),e.style.setProperty("--sl-muted","#697386"),e.style.setProperty("--sl-line","#d9deea"),e.style.setProperty("--sl-accent",n?.accent??"#ef4056"),e.style.setProperty("--sl-accent-ink",n?.accentInk??"#ffffff")}reducedMotion(){return globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1}};var ac={host:"web",platform:"web",bundle:"",protocol:0,chromeOwner:"web"},lc={...ac},gi=null,as=null;function cc(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():0}function dc(){let i=e=>Math.max(0,Math.round(e*100)/100);return{bootMs:i(cc()),documentMs:gi==null?0:i(gi),handshakeMs:gi==null||as==null?0:i(as-gi)}}function ls(){let{host:i,platform:e,bundle:t,protocol:n,chromeOwner:o}=lc,s=dc();return{host:i,platform:e,...t?{bundle:t}:{},...n?{protocol:n}:{},chromeOwner:o,bootMs:s.bootMs,documentMs:s.documentMs,handshakeMs:s.handshakeMs}}var cs=new Set;function Re(i){return cs.has(i)?"repeat":"cold"}function bi(i){let e=Re(i);return cs.add(i),e}function le(i){return typeof i=="number"&&Number.isFinite(i)&&i>=0?Math.round(i):0}function pc(){return typeof location>"u"?!1:/^(localhost|127\.0\.0\.1|\[::1\])$/i.test(location.hostname)}function hc(i){if(!/^[A-Za-z0-9_-]{1,80}$/.test(i.event))return null;let e=i.performanceProfile??{};return{event:i.event,scope:i.scope,surface:i.surface,outcome:i.outcome,stage:i.stage?.slice(0,32)??"",ms:le(i.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(i.seats),floors:le(i.floors),view:i.view??"map",load:i.load??Re(i.event),transport:i.transport??"pubapi",chartBytes:le(i.chartDelivery?.bytes),chartCache:i.chartDelivery?.cache??"",...ls(),availabilityMs:le(e.loadStatuses)}}var uc=new Set;function Te(i){let e=hc(i);if(e){for(let t of uc)try{t(e)}catch{}typeof fetch>"u"||pc()||fetch(`${i.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(()=>{})}}function yi(i){if(!i)return null;let e=i.getBoundingClientRect();return e.width>0&&e.height>0?e:null}function mc(i){return yi(i.foot?.querySelector(".sl-total"))??yi(i.tray)??yi(i.sheetHead)}function hn(i,e,t,n){let o=i,s=o.map;if(!s||!e)return;let r=s.getBoundingClientRect(),a={x:r.left+e.x,y:r.top+e.y},l=t.displayLabel??t.label,c=n?.find(d=>d.key===t.categoryKey)?.color,h=()=>{let d=mc(o);d&&$o({from:a,to:{x:d.left+d.width/2,y:d.top+d.height/2},label:l,color:c})};o.sheetHead&&yi(o.sheetHead)?requestAnimationFrame(h):h()}var pn=60,fc=650;function ds(i,e){if(!e.length||i.focusSeats?.(e.map(o=>o.id)))return;let t=e.find(o=>o.sectionId)?.sectionId;if(!t)return;let n=e.filter(o=>o.sectionId===t);i.focus(t,{x:n.reduce((o,s)=>o+s.x,0)/n.length,y:n.reduce((o,s)=>o+s.y,0)/n.length})}function ps(i,e){let t=!ai();ds({focusSeats:n=>i.focusSeats?.(n,{animate:t})===!0,focus:(n,o)=>i.focusSection(n,o)},(e?.items??[]).filter(n=>n.objectType!=="ga").slice(0,10).map(n=>i.seatByLabel(n.label)).filter(n=>!!n))}function hs(i,e){if(!e.length)return;let t=i.reducedMotion===!0;t||e.forEach((r,a)=>{i.schedule(()=>i.pop(r.id),a*pn)});let n=t?0:e.length*pn,o=e.find(r=>r.sectionId)?.sectionId;if(i.schedule(()=>ds(i,e),n),t)return;let s=n+(i.focusSeats||o?fc:0);e.forEach((r,a)=>{i.schedule(()=>hn(i.regions,i.screenPoint(r),r,i.categories),s+a*pn)})}function gc(i,e,t){for(let n of i)if(e>=n.x&&t>=n.y&&e<=n.x+n.w&&t<=n.y+n.h)return!0;return!1}var vi=class{constructor(){this.rects=[];this.host=null;this.pointers=new Set;this.touches=new Set;this.mouseDown=!1;this.onPointerDown=e=>{this.inside(e.clientX,e.clientY)&&(this.pointers.add(e.pointerId),this.swallow(e))};this.onPointerFollow=e=>{this.pointers.has(e.pointerId)&&this.swallow(e)};this.onPointerEnd=e=>{this.pointers.delete(e.pointerId)&&this.swallow(e)};this.onTouchStart=e=>{let t=this.changed(e);if(!t.length)return;let n=!0;for(let o of t)this.inside(o.clientX,o.clientY)?this.touches.add(o.identifier):n=!1;n&&this.swallow(e)};this.onTouchFollow=e=>{let t=this.changed(e);t.length&&t.every(n=>this.touches.has(n.identifier))&&this.swallow(e)};this.onTouchEnd=e=>{let t=this.changed(e);if(!t.length)return;let n=t.every(o=>this.touches.has(o.identifier));for(let o of t)this.touches.delete(o.identifier);n&&this.swallow(e)};this.onMouseDown=e=>{this.inside(e.clientX,e.clientY)&&(this.mouseDown=!0,this.swallow(e))};this.onMouseFollow=e=>{this.mouseDown&&this.swallow(e)};this.onMouseUp=e=>{this.mouseDown&&(this.mouseDown=!1,this.swallow(e))};this.onClick=e=>{this.inside(e.clientX,e.clientY)&&this.swallow(e)}}set(e){this.rects=e.map(t=>({x:t.x,y:t.y,w:t.w,h:t.h})),this.rects.length||(this.pointers.clear(),this.touches.clear(),this.mouseDown=!1)}get(){return this.rects}attach(e){if(this.host===e)return;this.detach(),this.host=e;let t={capture:!0,passive:!1};e.addEventListener("pointerdown",this.onPointerDown,t),e.addEventListener("pointermove",this.onPointerFollow,t),e.addEventListener("pointerup",this.onPointerEnd,t),e.addEventListener("pointercancel",this.onPointerEnd,t),e.addEventListener("touchstart",this.onTouchStart,t),e.addEventListener("touchmove",this.onTouchFollow,t),e.addEventListener("touchend",this.onTouchEnd,t),e.addEventListener("touchcancel",this.onTouchEnd,t),e.addEventListener("mousedown",this.onMouseDown,t),e.addEventListener("mousemove",this.onMouseFollow,t),e.addEventListener("mouseup",this.onMouseUp,t),e.addEventListener("click",this.onClick,t),e.addEventListener("dblclick",this.onClick,t)}detach(){let e=this.host;if(!e)return;let t={capture:!0};e.removeEventListener("pointerdown",this.onPointerDown,t),e.removeEventListener("pointermove",this.onPointerFollow,t),e.removeEventListener("pointerup",this.onPointerEnd,t),e.removeEventListener("pointercancel",this.onPointerEnd,t),e.removeEventListener("touchstart",this.onTouchStart,t),e.removeEventListener("touchmove",this.onTouchFollow,t),e.removeEventListener("touchend",this.onTouchEnd,t),e.removeEventListener("touchcancel",this.onTouchEnd,t),e.removeEventListener("mousedown",this.onMouseDown,t),e.removeEventListener("mousemove",this.onMouseFollow,t),e.removeEventListener("mouseup",this.onMouseUp,t),e.removeEventListener("click",this.onClick,t),e.removeEventListener("dblclick",this.onClick,t),this.host=null,this.pointers.clear(),this.touches.clear(),this.mouseDown=!1}inside(e,t){if(!this.rects.length||!this.host)return!1;let n=this.host.getBoundingClientRect();return gc(this.rects,e-n.left,t-n.top)}swallow(e){e.stopImmediatePropagation(),e.stopPropagation(),e.cancelable&&e.preventDefault()}changed(e){let t=e.changedTouches;return t?Array.from(t):[]}},us=.48,bc=8;function yc(i,e,t,n=us){let o=Math.max(0,t.top),s=e.height-Math.max(0,t.bottom);if(!(s>o))return 0;let r=Number.isFinite(n)?Math.min(1,Math.max(0,n)):us,a=o+(s-o)*r-i;return Math.abs(a)<=bc?0:Math.round(a)}function ms(i,e,t={}){let n=i.gestureCount();if(t.gestures!==void 0&&t.gestures!==n)return{dy:0,gestures:n};let o=i.seatPoint(e);if(!o)return{dy:0,gestures:n};let s=yc(o.y,{height:i.mapHeight()},i.insets(),t.fraction);return s?{dy:i.panScreenBy({x:0,y:s},t.animate!==!1)?s:0,gestures:n}:{dy:0,gestures:n}}var Ot=class i{constructor(e,t=null){this.seams=e;this.watch=null;this.mode=t,this.watchMode()}themeMode(){return this.mode}setThemeMode(e,t){let n=t!==void 0&&"mapTheme"in t;e===this.mode&&!n||(n&&this.seams.setHostMapTheme(t.mapTheme??void 0),this.mode=e,this.watchMode(),this.applyThemeMode())}static groundFor(e){return it(null,e)}applyThemeMode(){let e=this.seams.mapTheme()??i.groundFor(this.mode);this.seams.applyMapTheme(e??null)&&this.seams.changed()}watchMode(){this.watch?.(),this.watch=null,this.mode==="auto"&&(this.watch=Wt(()=>this.applyThemeMode()))}setViewportInsets(e){this.seams.applyViewportInsets(e),this.seams.changed()}viewportInsets(){return this.seams.readViewportInsets()}dispose(){this.watch?.(),this.watch=null}};import{getLocale as xc}from"@seatlayer/core";import{seatConfidenceDisclosure as Sc}from"@seatlayer/core/core/seatConfidence";import{generateSeatThumb as vc}from"@seatlayer/core";function ft(i){let e=i.viewMeta?.previewUrl??i.viewUrl;return e&&(dn(e)||ot(e))?e:null}function xi(i){if(!i)return!1;let e=i.floors?.length?i.floors.map(t=>t.objects??[]):[i.objects??[]];for(let t of e)for(let n of t)if(n.type==="shape"&&(n.role==="stage"||n.stageKind))return!0;return!1}var wc=512,wi=new Map;function Si(i,e){if(!e)return null;let t=`${i.id}|${Math.round(e.x)},${Math.round(e.y)}`,n=wi.get(t);if(n!==void 0)return n;let o=null;try{o=vc(i,e).distanceM??null}catch{o=null}return wi.size>=wc&&wi.clear(),wi.set(t,o),o}function _t(i){return i.getFocusedSection()!==null||i.seatsRevealed()}function kc(i){let e=i.atVenueFit?.(),t=i.canZoomIn?.();return{...typeof e=="boolean"?{atVenueFit:e}:{},...typeof t=="boolean"?{canZoomIn:t}:{}}}function Tc(i,e){return{accessibilityFilter:i.length>0,limitedViewFilter:e.some(t=>t.commercial?.restrictedView||t.commercial?.obstructedView)}}function Ec(i,e,t,n){for(let o of e){if(o.count<=0)continue;let s=i.accessibilitySpread?.([o.key]);for(let r of s?.sections??[]){let a=t.get(r.id)??n.get(r.id);if(!a||r.free<=0)continue;let l=a.accessibleFree??(a.accessibleFree={});l[o.key]=r.free}}}function fs(i,e,t){let n=i.doc,o=n?.theme??{},s=i.categoryAvailability(),r=i.getGAAreas(),a=i.getFloors(),l=i.getExpandedSeats(),c=i.getAccessNeeds(),h=Tc(c,l),d=e.seatPosition,u=d.targetSeatId?i.seatDetails(d.targetSeatId):null,p=new Map(l.map(v=>[v.id,v])),f=xi(n),b=n?.floors?.flatMap(v=>v.objects)??n?.objects??[],k=new Map,S=new Map;for(let v of b){if(v.type!=="section")continue;let A={id:v.id,label:v.label,...v.displayLabel?{displayLabel:v.displayLabel}:{},...v.zone?{zoneId:v.zone}:{}};k.set(v.id,A);let y=v.logicalSectionId??v.id;S.has(y)||S.set(y,A)}return Ec(i,c,k,S),{event:{key:t.event,name:t.eventInfo?.name??n?.name??t.event,venue:t.eventInfo?.venue??null,startsAt:t.eventInfo?.startsAt??null,timezone:t.eventInfo?.timezone??null,currency:t.eventInfo?.currency??t.currency??"USD",locale:xc()||t.eventLocale,posterUrl:t.eventInfo?.posterUrl??null,mode:t.mode_??"live",salesClosed:t.eventInfo?.salesClosed??!1},branding:{...o.accent?{accent:o.accent}:{},...o.accentInk?{accentInk:o.accentInk}:{},...o.background?{background:o.background}:{},...o.textColor?{textColor:o.textColor}:{},...o.brandName?{brandName:o.brandName}:{},...o.logoUrl?{logoUrl:o.logoUrl}:{},attributionRequired:!o.hideBadge},features:{ga:r.length>0,tiers:!!n?.categories.some(v=>v.tiers?.length),floors:a.length>1,zones:!!n?.zones?.length,sections:k.size>0,bestAvailable:!0,...h,venue3d:e.canOffer3D(),seatView:e.canOfferSeatView()},catalog:{categories:(n?.categories??[]).filter(v=>!v.notForSale).map(v=>({key:v.key,label:v.label,color:v.color,price:v.price??v.tiers?.[0]?.price??0,available:s[v.key]??0,...Object.prototype.hasOwnProperty.call(s,v.key)?{free:s[v.key]}:{},tiers:(v.tiers??[]).map(A=>({id:A.id,name:A.name,price:A.price,...A.currency?{currency:A.currency}:{}}))})),zones:(n?.zones??[]).map(v=>({id:v.id,label:v.label,...v.color?{color:v.color}:{}})),sections:[...k.values()],gaAreas:r,bestAvailableZones:i.getBestAvailableZones()},map:{floors:a,activeFloorId:i.getActiveFloorId()||a[0]?.id||null,floorMode:i.isFloorOverview()?"all":"single",floorLabelStyle:i.getRenderer()?.getFloorLabelStyle?.()??"number",rung:i.getRung(),canZoomOut:_t(i)||t.focusedSection_!==null,...kc(i),focusedSectionId:i.getFocusedSection(),focusedSection:t.focusedSection_,viewMode:i.getViewMode(),buyerView:e.buyerView,view3dTargetSeatId:d.targetSeatId,view3dTargetSeat:u,view3dPreviousSeatId:d.previousSeatId,view3dNextSeatId:d.nextSeatId,view3dFocusedSectionId:e.focusedSectionId,view3dNavigationMode:e.navigationMode,colorblindSafe:t.colorblindSafe_,viewportInsets:i.getViewportInsets(),categoryFilter:t.categoryFilter_?[...t.categoryFilter_]:null,accessibilityFilter:t.accessibilityFilter_?[...t.accessibilityFilter_]:null,hideLimitedView:t.hideLimitedView_,accessNeeds:c},selection:{seats:i.getSelection().map(v=>{let A=p.get(v.id);if(!A)return v;let y=i.worldToScreen({x:A.x,y:A.y}),H=ft(A),C=f?Si(A,A.focalPoint??n?.focalPoint):null;return{...v,screenPoint:{x:y.x,y:y.y},...H?{seatViewThumb:{reference:H,kind:"real"}}:{},...C!=null?{sightlineMetres:C}:{},...A.confidenceEvidence?{seatViewConfidence:Sc(A.confidenceEvidence)}:{}}}),validity:i.getSelectionValidity(),maxSelection:t.maxSelection_},access:{...t.accessState_}}}var Ic="https://api.seatlayer.io",gs=10;function Oc(i){if(typeof i=="string"){let e=document.querySelector(i);if(!e)throw new Error(`seatmap: container "${i}" not found`);return e}if(!(i instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return i}var mn=class{constructor(e){this.mount=null;this.hostEl=null;this.interactionEnabled_=!0;this.eventLocale=null;this.localeGeneration=0;this.languageSelect=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.lastReportedCanZoomOut_=!1;this.tipEl=null;this.tipPos={x:0,y:0};this.onTipMove=null;this.blockedRegions=null;this.realtime=null;this.holdingLabels=new Set;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??gs,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 n={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()}},o=(e.apiBase??Ic).replace(/\/+$/,"");this.apiBase=o;let s=e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?ri({base:o,event:e.event,publicKey:e.publicKey,accessHooks:n,apiOptions:{onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=s?.access??Rt(e,n);let r=s?.api??new Le(o,{access:this.access??void 0,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)});this.api=r,this.controller=new Cc({transport:r,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),onDeselect:a=>{this.controller.currentHold()?.labels.includes(a.label)&&this.controller.releaseLabels([a.label])},retapKeepsSelection:!0,onSeatRetap:a=>this.opts.onSeatRetap?.(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??gs)-this.controller.getSelection().length)),tiers:di(l),confirm:c=>{let h=typeof c=="number"?c:Object.values(c).reduce((d,u)=>d+u,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??Ot.groundFor(e.theme?.mode)??null}),this.hostSurface=new Ot({mapTheme:()=>this.opts.mapTheme,setHostMapTheme:a=>{this.opts.mapTheme=a},applyMapTheme:a=>this.controller.setMapTheme(a),applyViewportInsets:a=>this.controller.setViewportInsets(a),readViewportInsets:()=>this.controller.getViewportInsets(),changed:()=>this.notifyMapStateChange()},e.theme?.mode??null),this.buyerAssetUrls=new ht(e.event,(a,l)=>r.asset(a,l)),this.immersive=new fi({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,...e.chrome?{chrome:e.chrome}:{},restoreMap:()=>this.controller.refitCurrentView(),onViewChange:(a,l)=>{this.opts.onBuyerViewChange?.({view:a,...l?{seatId:l}:{}}),this.notifyMapStateChange()},onSeatViewChange:a=>this.opts.onSeatViewChange?.(a),onError:a=>this.opts.onError?.(a)}),this.lastReportedViewRung_=this.controller.getRung(),this.lastReportedCanZoomOut_=_t(this.controller)}handleViewChange(){this.opts.onViewChange?.();let e=this.controller.getRung(),t=_t(this.controller);e===this.lastReportedViewRung_&&t===this.lastReportedCanZoomOut_||(this.lastReportedViewRung_=e,this.lastReportedCanZoomOut_=t,this.opts.onMapStateChange?.())}notifyMapStateChange(){this.lastReportedViewRung_=this.controller.getRung(),this.lastReportedCanZoomOut_=_t(this.controller),this.opts.onMapStateChange?.()}async render(){if(this.rendered)return this;let e=performance.now();this.rendered=!0;let t=ni(this.opts.locale,this.opts.messages),n=this.localeGeneration+=1,o=un();this.mount=Oc(this.opts.container);let s=document.createElement("div");s.style.width="100%",s.style.height="100%",s.style.position="relative",this.mount.appendChild(s),this.hostEl=s,this.blockedRegions?.attach(s),oi(s,t,a=>{a!==o&&this.applyActiveLocale(a,n)}),this.applyInteractionState();let r=await this.controller.render(s);if(!r)return Te({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"failure",stage:"load_chart",ms:performance.now()-e,load:Re(this.opts.event),transport:"pubapi"}),this.rendered=!1,this.opts.errorDisplay!=="none"&&this.showLoadFailure(s),this;if(this.eventLocale=r.locale??null,!this.opts.locale&&this.eventLocale&&this.setLocale(this.eventLocale),this.buildLanguageSwitcher(s),this.controller.setViewMode(this.opts.initialView??"flat"),this.opts.floorLabelStyle&&this.setFloorLabelStyle(this.opts.floorLabelStyle),this.startRealtime(),this.mode_=r.mode==="test"?"test":"live",this.eventInfo={name:r.eventName,venue:r.venue??null,startsAt:r.startsAt??null,timezone:r.timezone??null,currency:r.currency??this.opts.currency??"USD",posterUrl:r.posterUrl??null,salesClosed:r.salesClosed},this.opts.seatTooltip!==!1){let a=document.createElement("div");a.setAttribute("role","tooltip"),a.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);',s.appendChild(a),this.tipEl=a,this.onTipMove=l=>{let c=s.getBoundingClientRect();this.tipPos={x:l.clientX-c.left,y:l.clientY-c.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()},s.addEventListener("mousemove",this.onTipMove)}if(r.mode==="test"&&this.opts.showTestModeIndicator!==!1){s.style.overflow="hidden";let a=document.createElement("div");a.dataset.slI18n="testMode",a.textContent=ue("picker.testMode"),a.setAttribute("aria-label",ue("picker.testMode")),a.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;",s.appendChild(a)}return this.buildBadge(s),Te({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"success",ms:performance.now()-e,performanceProfile:r.performanceProfile,chartDelivery:r.chartDelivery,seats:this.controller.getExpandedSeats().length,floors:this.controller.getFloors().length,view:"map",load:bi(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",ue("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 n=document.createElement("span");n.setAttribute("aria-hidden","true"),n.style.cssText="width:16px;height:16px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;background:#0c1220;color:#fcf7ee",n.innerHTML=pi;let o=document.createElement("span");o.textContent=ue("picker.poweredBy"),t.append(n,o),e.appendChild(t)}placeTooltip(){if(!this.tipEl||!this.hostEl)return;let e=this.hostEl.clientWidth,t=this.tipEl.offsetWidth,n=this.tipEl.offsetHeight,o=this.tipPos.x+14,s=this.tipPos.y-n-12;o+t>e-8&&(o=this.tipPos.x-t-14),s<8&&(s=this.tipPos.y+18),this.tipEl.style.left=`${Math.max(8,o)}px`,this.tipEl.style.top=`${Math.max(8,s)}px`}updateTooltip(e){if(!this.tipEl)return;if(!e){this.tipEl.style.display="none";return}let t=Ac(e.price,e.currency,{...Number.isInteger(e.price)?{minimumFractionDigits:0,maximumFractionDigits:0}:{},locale:this.opts.locale,fallback:(l,c)=>`${l} ${c}`}),n=document.createElement("div");n.style.cssText="font-weight:700;font-size:13px",n.textContent=e.label;let o=document.createElement("div");o.style.cssText="display:flex;align-items:center;gap:6px;margin-top:4px;color:#c7cddc";let s=document.createElement("span");s.style.cssText="width:9px;height:9px;border-radius:50%;flex:none",s.style.background=e.categoryColor;let r=document.createElement("span");r.textContent=e.categoryLabel;let a=document.createElement("span");if(a.style.cssText="margin-left:auto;font-weight:700;color:#fff",a.textContent=t,o.append(s,r,a),this.tipEl.replaceChildren(n,o),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"?ue("map.statusHeld"):ue("map.statusTaken"),this.tipEl.appendChild(l)}this.tipEl.style.display="block",this.placeTooltip()}buildLanguageSwitcher(e){let t=(this.opts.languages??[]).map(o=>Hc(o)).filter((o,s,r)=>r.indexOf(o)===s);if(t.length<2)return;let n=document.createElement("select");n.setAttribute("aria-label",ue("picker.preferredTicketType")),n.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 o of t){let s=document.createElement("option");s.value=o,s.textContent=Mc[o]??o,s.selected=o===un(),n.appendChild(s)}n.addEventListener("change",()=>{this.setLocale(n.value)}),e.appendChild(n),this.languageSelect=n}async setLocale(e){let t=un(),n=this.localeGeneration+=1,o=await Pc(e);return this.opts.messages&&Rc(this.opts.messages),o===t||this.applyActiveLocale(o,n),o}applyActiveLocale(e,t){if(t!==this.localeGeneration)return;let n=this.hostEl;if(n){n.lang=e,n.dir=Lc(e);for(let o of n.querySelectorAll("[data-sl-i18n]"))if(o.dataset.slI18n==="testMode")o.textContent=ue("picker.testMode"),o.setAttribute("aria-label",ue("picker.testMode"));else if(o.dataset.slI18n==="badge"){o.setAttribute("aria-label",ue("picker.poweredBy"));let s=o.querySelector("span:last-child");s&&(s.textContent=ue("picker.poweredBy"))}this.languageSelect&&this.languageSelect.value!==e&&(this.languageSelect.value=e),this.controller.refreshMapCopy()}}getMode(){return this.mode_}getPickerState(){return fs(this.controller,this.immersive,{event:this.opts.event,currency:this.opts.currency,mode_:this.mode_,eventInfo:this.eventInfo,eventLocale:this.eventLocale,focusedSection_:this.focusedSection_,colorblindSafe_:this.colorblindSafe_,categoryFilter_:this.categoryFilter_,accessibilityFilter_:this.accessibilityFilter_,hideLimitedView_:this.hideLimitedView_,maxSelection_:this.maxSelection_,accessState_: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(),e?.length&&this.focusAccessibilityFilter()}focusAccessibilityFilter(){this.controller.focusAccessibilityFilter?.(),this.notifyMapStateChange()}focusNextAccessibleSection(e){let t=this.controller.focusNextAccessibleSection?.(e)??null;return t&&this.notifyMapStateChange(),t}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 n=t.violations.includes("numberOfPlacesToSelect");throw Object.assign(new Error(n?`seatmap: select exactly ${t.required} places before holding`:"seatmap: adjust the ticket selection before holding"),{code:n?"selection_count_mismatch":"selection_invalid",selection:t})}this.holdingLabels=new Set(this.controller.getSelection().map(n=>n.label));try{let n=await this.controller.hold(void 0,e.ttlMs);return n?{holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.items}:null}finally{this.holdingLabels.clear()}}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,n={}){try{return await this.holdGAOrThrow(e,t,n)}catch(o){return this.opts.onError?.(o),null}}async holdGAOrThrow(e,t,n={}){let o=await this.controller.holdGA(e,t,n);return o?{holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items}:null}async bestAvailable(e,t,n={}){try{return await this.bestAvailableOrThrow(e,t,n)}catch(o){return this.opts.onError?.(o),null}}async bestAvailableOrThrow(e,t,n={}){let o=await this.controller.bestAvailable(e,t,n);return ps(this.controller,o),o?{holdId:o.holdId,expiresAt:o.expiresAt,labels:o.labels,seats:o.seats,items:o.items,...n.zoneId?{zoneId:n.zoneId}:{}}:null}setSeatTier(e,t){this.controller.setSeatTier(e,t)}setTableQuantity(e,t){return this.controller.setTableQuantity(e,t)}async replaceTableQuantity(e,t,n){try{return await this.replaceTableQuantityOrThrow(e,t,n)}catch(o){return this.opts.onError?.(o),null}}async replaceTableQuantityOrThrow(e,t,n){let o=await this.controller.replaceTableQuantity(e,t,n);return o?{holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items}:null}getFloors(){return this.controller.getFloors()}setFloor(e){if(this.immersive.buyerView==="venue3d"&&e!=="all"&&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}e==="all"?this.controller.setFloorOverview(!0):this.controller.setFloor(e),this.notifyMapStateChange()}setFloorLabelStyle(e){this.controller.getRenderer()?.setFloorLabelStyle?.(e),this.notifyMapStateChange()}setSectionFocusDim(e){this.controller.setSectionFocusDim(e)}setSelectionFocus(e){this.controller.setSelectionFocus(e)}setBlockedRegions(e){if(!this.blockedRegions){if(!e.length)return;this.blockedRegions=new vi,this.hostEl&&this.blockedRegions.attach(this.hostEl)}this.blockedRegions.set(e)}getBlockedRegions(){return this.blockedRegions?.get()??[]}frameSeat(e,t={}){let n=this.controller.getRenderer();return ms({seatPoint:o=>{let s=this.controller.getExpandedSeats().find(r=>r.id===o);return s?this.controller.worldToScreen({x:s.x,y:s.y}):null},mapHeight:()=>this.hostEl?.clientHeight??0,insets:()=>this.controller.getViewportInsets(),gestureCount:()=>n?.getCameraGestureCount?.()??0,panScreenBy:(o,s)=>n?.panScreenBy?(n.panScreenBy(o,{animate:s}),!0):!1},e,t)}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())}setThemeMode(e,t){this.hostSurface.setThemeMode(e,t)}getThemeMode(){return this.hostSurface.themeMode()}setViewportInsets(e){this.hostSurface.setViewportInsets(e)}getViewportInsets(){return this.hostSurface.viewportInsets()}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 xe({url:this.api.subscribeUrl(this.opts.event),mintTicket:()=>this.api.subscribeTicket(this.opts.event),onAccessUnavailable:e=>this.opts.onAccessUnavailable?.(e),sink:Et(this.controller,{flashOnLiveChange:!0,ownLabels:()=>this.holdingLabels,onStatusChange:()=>{this.immersive.pushLiveState(),this.opts.onStatusChange?.()},onSelectedObjectUnavailable:(e,t)=>this.opts.onSelectedObjectUnavailable?.({labels:e,reason:t})})}),this.realtime.start())}async refreshAvailability(){let e=await this.controller.refreshAvailability();return this.immersive.pushLiveState(),this.opts.onStatusChange?.(),e.lost.length&&this.opts.onSelectedObjectUnavailable?.({labels:e.lost,reason:"taken"}),this.notifyMapStateChange(),e}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 n=document.createElement("div");n.textContent="The seat map didn\u2019t load.",t.appendChild(n);let o=document.createElement("button");o.type="button",o.textContent="Try again",o.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;",o.addEventListener("click",()=>{this.destroy(),this.render().catch(s=>this.opts.onError?.(s))}),t.appendChild(o),e.appendChild(t)}destroy(){this.blockedRegions?.detach(),this.hostSurface.dispose(),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.languageSelect=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 bs=["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"],_c={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 Dc(i){let e={};for(let t of bs)e[t]=(...n)=>{let o=i();return o?o[t](...n):_c[t]()};return e}var ys=["event","apiBase","maxSelection","numberOfPlacesToSelect","selectionValidators","publicKey","locale","currency","colorblindSafe","initialView","errorDisplay"],vs=[...ys,"selectedObjects","selectableObjects","messages","seatTooltip","buyerAccessTokenProvider","buyerAccessToken"],ws=["onSelectionChange","onSelectionValidityChange","onSelectionValid","onSelectionInvalid","onSelectionLimit","onHold","onHoldRestored","onHoldExpired","onGAClick","onGAPrompt","onError","onDeckTap","onHint","onSeatHover","onAccessExpired","onAccessUnavailable","onSelectedObjectUnavailable"];function Nc(i,e,t){let n={container:i};for(let o of vs)n[o]=e[o];for(let o of ws)n[o]=t[o];return n}var Bc=new Set(["seatlayer.designer.ready","seatlayer.designer.saved","seatlayer.designer.published","seatlayer.designer.close","seatlayer.designer.error"]),Vc=2e4,Fc=480,zc=180*1e3,$c=900*1e3,jc=.8,Gc=30*1e3,Uc=1e5,qc=4,Kc=50;function fn(i){if(typeof i!="string")return i;let e=document.querySelector(i);if(!e)throw new Error(`EmbeddedDesigner container not found: ${i}`);return e}function Wc(i){let e=(i??"").toLowerCase();return e.includes("expire")||e.includes("revoke")||e==="401"?"expired":e.includes("mismatch")?"mismatch":e.includes("timeout")?"timeout":"load"}var Yc={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."}},gn=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"||!Bc.has(t.type))return;let n={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},o=this.identityEstablished||n.type==="seatlayer.designer.ready"||n.type==="seatlayer.designer.saved"||n.type==="seatlayer.designer.published"||n.type==="seatlayer.designer.close",s=this.options.expectedChartId!==void 0&&n.chartId!==this.options.expectedChartId&&(o||n.chartId!==void 0),r=this.options.expectedWorkspaceId!==void 0&&n.workspaceId!==this.options.expectedWorkspaceId&&(o||n.workspaceId!==void 0);if(s||r){this.showError("mismatch");return}switch(n.type){case"seatlayer.designer.ready":this.identityEstablished=!0,this.sessionExpiresAt=n.expiresAt,this.phase="ready",this.clearTimeoutTimer(),this.removeOverlay(),this.autoRecoverUsed=!1,this.scheduleRenewal(n.expiresAt),this.options.onReady?.(n);break;case"seatlayer.designer.saved":this.options.onSaved?.(n);break;case"seatlayer.designer.published":this.options.onPublished?.(n);break;case"seatlayer.designer.close":this.options.onClose?.(n);break;case"seatlayer.designer.error":{let a=Wc(n.code);if(a==="expired"&&this.autoRenewEnabled()&&!this.autoRecoverUsed){this.autoRecoverUsed=!0,this.clearRenewTimer(),this.options.onRequestRelaunch();return}(typeof n.fatal=="boolean"?n.fatal:a!=="load"||this.phase!=="ready")&&this.showError(a),this.options.onError?.(n);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 n=fn(this.options.container);if(this.containerEl=n,window.addEventListener("message",this.handleMessage),n.append(t),this.frame=t,this.fillEnabled()&&this.startFill(),this.phase="loading",this.loadingStateEnabled()){this.ensureContainerPositioned(n),this.renderOverlay(n,"loading");let o=this.options.loadingTimeoutMs??Vc;o>0&&Number.isFinite(o)&&(this.timeoutTimer=setTimeout(()=>{this.phase==="loading"&&this.showError("timeout")},o))}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 n=()=>e.getBoundingClientRect().height,o=t.style.getPropertyValue("height"),s=t.style.getPropertyPriority("height");t.style.setProperty("height","0px","important");let r=n();t.style.setProperty("height",`${Uc}px`,"important");let a=n();return o?t.style.setProperty("height",o,s):t.style.removeProperty("height"),!(a-r>qc)&&r>=Kc?"container":"viewport"}applyFill(){if(!this.frame||this.pinned)return;let e=this.options.minHeight??Fc;if(this.fillMode==="container"&&this.containerEl){let o=Math.max(e,Math.round(this.containerEl.getBoundingClientRect().height));this.setFrameHeight(`${o}px`);return}let t=this.frame.getBoundingClientRect().top,n=Math.max(e,Math.round(window.innerHeight-t));this.setFrameHeight(`${n}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[n,o]of Object.entries(e))this.frame.style.setProperty(n,o,"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=n=>{n.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 n=t<$c?t*jc:t-zc,o=Math.max(Gc,n);this.renewTimer=setTimeout(()=>{this.renewTimer=null,this.autoRenewEnabled()&&this.options.onRequestRelaunch()},o)}ensureContainerPositioned(e){getComputedStyle(e).position==="static"&&(this.restoreContainerPosition=e.style.position,e.style.position="relative")}restoreContainerStyle(){if(this.restoreContainerPosition!==null){try{fn(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=fn(this.options.container)}catch{return}this.renderOverlay(t,"error",e)}handleTryAgain(){if(this.options.onRequestRelaunch){this.options.onRequestRelaunch();return}this.mount()}renderOverlay(e,t,n){this.removeOverlay();let o=document.createElement("div");o.setAttribute("data-seatlayer-designer-overlay",t),o.setAttribute("role",t==="error"?"alert":"status"),o.setAttribute("aria-live","polite"),Object.assign(o.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(o):this.buildErrorCard(o,n??"load"),e.append(o),this.overlay=o}buildSkeleton(e){let t=document.createElement("style");t.textContent=`
2791
2866
  @media (prefers-reduced-motion: no-preference) {
2792
2867
  @keyframes seatlayer-designer-shimmer {
2793
2868
  0% { background-position: -320px 0; }
@@ -2797,9 +2872,9 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2797
2872
  animation: seatlayer-designer-shimmer 1.25s ease-in-out infinite;
2798
2873
  background-size: 640px 100%;
2799
2874
  }
2800
- }`,e.append(t);let n="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 r=c=>{let d=document.createElement("div");return d.className="sl-shimmer",Object.assign(d.style,{background:n,borderRadius:"8px"}),Object.assign(d.style,c),d};s.append(r({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(r({width:"220px",height:"100%",flex:"0 0 auto"})),o.append(r({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:n,flex:"0 0 auto"}),a.append(l),a.append(document.createTextNode("Loading designer\u2026")),e.append(a)}buildErrorCard(e,t){let n=Yc[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 r=document.createElement("h2");r.textContent=n.title,Object.assign(r.style,{margin:"0 0 8px",fontSize:"17px",fontWeight:"600",color:"#f4f7ff"});let o=document.createElement("p");o.textContent=n.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(r,o,a),e.append(s)}};import{PickerController as Ep,formatMoney as Cp,getLocale as Ua,loadLocale as Ap,setStringOverrides as Pp,t as B,tCount as Gi}from"@seatlayer/core";import{isAuthoredSeatView as Lp,seatViewDisclosure as Mp}from"@seatlayer/core/view3d/crossfade/panorama";function rr(i){return!!i&&i.clientWidth>0&&i.scrollWidth>i.clientWidth+1}function Xc(i){return i.some(e=>rr(e))}var ki="data-fit-gone",Qc=12;function fn(i,e,t=rr){if(!i)return 0;for(let n of e)i.classList.remove(n.cls);if(i.querySelectorAll(`[${ki}]`).forEach(n=>{n.removeAttribute(ki),n.hidden=!1}),i.dataset.fit="0",i.clientWidth<=0||!t(i))return 0;for(let n=0;n<e.length;n+=1){let s=e[n];n>0&&i.classList.remove(e[n-1].cls),i.classList.add(s.cls),i.dataset.fit=String(n+1);let r=s.give?s.give(i):!0;if(!t(i))return n+1;if(s.repeat&&s.give){for(let o=1;r&&o<Qc;o+=1)if(r=s.give(i),!t(i))return n+1}}return e.length}function Zc(i,e="[data-fit-seg]"){let t=[...i.querySelectorAll(e)].filter(n=>!n.hidden);return t.length<2?!1:or(t[t.length-1])}function Jc(i,e){let t=i.querySelector(e);return t&&!t.hidden?or(t):!1}function or(i){let e=i.previousElementSibling;return e instanceof HTMLElement&&e.tagName==="I"&&(e.setAttribute(ki,""),e.hidden=!0),i.setAttribute(ki,""),i.hidden=!0,!0}function ed(i){if(!i)return!1;let e=(i.getAttribute("aria-label")||i.textContent||"").trim();return e?(i.setAttribute("aria-label",e),i.setAttribute("title",e),!0):!1}function ar(i){if(!i)return 0;let e=i.querySelector(".sl-confirm-cancel"),t=i.querySelector(".sl-confirm-add-t");return fn(i,[{cls:"sl-fit-track"},{cls:"sl-fit-type"},{cls:"sl-fit-icon",give:()=>ed(e)}],()=>Xc([e,t]))}function lr(i){return fn(i,[{cls:"sl-fit-notype",give:e=>Jc(e,"[data-fit-type]")},{cls:"sl-fit-short",give:e=>Zc(e),repeat:!0}])}function gn(i){return i?(i.classList.add("sl-fitpill"),fn(i,[{cls:"sl-fit-p1"},{cls:"sl-fit-p2"},{cls:"sl-fit-p3"}])):0}var td=["on-sale","low","sold-out","presale","closed"];function Bt(i){return i==null?null:typeof i=="number"&&Number.isFinite(i)&&i>=0?i:void 0}function dr(i){return i==null?null:typeof i=="number"&&Number.isFinite(i)&&i>=0?i:void 0}function cr(i){if(i==null)return null;if(typeof i!="object"||Array.isArray(i))return;let e=i,t=e.count,n=e.index;if(typeof n!="number"||!Number.isInteger(n)||n<1||typeof t!="number"||!Number.isInteger(t)||t<n)return;let s=e.remaining;if(s!=null&&(typeof s!="number"||!Number.isInteger(s)||s<0))return;let r={index:n,count:t,remaining:s??null};if(e.id!==void 0){if(typeof e.id!="string"||!e.id.trim())return;r.id=e.id.trim()}if(e.name!==void 0){if(typeof e.name!="string"||!e.name.trim())return;r.name=e.name.trim()}if(e.categoryKey!==void 0){if(e.categoryKey!==null&&(typeof e.categoryKey!="string"||!e.categoryKey.trim()))return;r.categoryKey=e.categoryKey==null?null:e.categoryKey.trim()}for(let o of["startsAt","endsAt"]){if(e[o]===void 0)continue;let a=dr(e[o]);if(a===void 0)return;r[o]=a}return r}function id(i){if(i==null)return null;if(typeof i!="object"||Array.isArray(i))return;let e=i;if(!Number.isInteger(e.assignmentVersion)||e.assignmentVersion<0||!Array.isArray(e.channels)||!Array.isArray(e.objects))return;let t=[],n=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||n.has(l)||!Number.isInteger(a.pricingVersion)||a.pricingVersion<0||!Array.isArray(a.priceOverrides))return;let c=[],d=new Set;for(let p of a.priceOverrides){if(!p||typeof p!="object"||Array.isArray(p))return;let u=p,h=typeof u.categoryKey=="string"?u.categoryKey.trim():"",g=u.tierId===null?null:typeof u.tierId=="string"&&u.tierId.trim()?u.tierId.trim():void 0,y=Bt(u.price);if(!h||g===void 0||y===void 0||y===null)return;let k=`${h}\0${g??""}`;if(d.has(k))return;d.add(k),c.push({categoryKey:h,tierId:g,price:y})}n.add(l),t.push({channelId:l,pricingVersion:a.pricingVersion,priceOverrides:c})}let s=[],r=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||r.has(l)||!n.has(c))return;r.add(l),s.push({label:l,channelId:c})}return{assignmentVersion:e.assignmentVersion,channels:t,objects:s}}function bn(i){if(!i||typeof i!="object"||Array.isArray(i))return null;let e=i,t=td.find(d=>d===e.state);if(!t)return null;let n=Bt(e.fromPrice),s=Bt(e.previousPrice);if(n===void 0||s===void 0)return null;let r=e.currency==null?null:typeof e.currency=="string"&&e.currency.trim()?e.currency.trim():void 0;if(r===void 0)return null;let o=cr(e.release);if(o===void 0)return null;let a=e.upcoming===void 0?null:cr(e.upcoming);if(a===void 0)return null;let l=[];if(e.prices!=null){if(!Array.isArray(e.prices))return null;let d=[];for(let p of e.prices){if(!p||typeof p!="object"||Array.isArray(p))return null;let u=p,h=typeof u.categoryKey=="string"?u.categoryKey.trim():"";if(!h)return null;let g=Bt(u.price),y=Bt(u.previousPrice);if(g==null||y===void 0)return null;let k={categoryKey:h,price:g,previousPrice:y};if(u.offerId!==void 0){if(typeof u.offerId!="string"||!u.offerId.trim())return null;k.offerId=u.offerId.trim()}if(u.offerName!==void 0){if(typeof u.offerName!="string"||!u.offerName.trim())return null;k.offerName=u.offerName.trim()}if(u.remaining!==void 0){if(u.remaining!==null&&(typeof u.remaining!="number"||!Number.isInteger(u.remaining)||u.remaining<0))return null;k.remaining=u.remaining==null?null:u.remaining}for(let S of["startsAt","endsAt"]){if(u[S]===void 0)continue;let v=dr(u[S]);if(v===void 0)return null;k[S]=v}d.push(k)}l=d}let c=id(e.channelPricing);return c===void 0?null:{state:t,fromPrice:n,previousPrice:s,currency:r,release:o,upcoming:a,prices:l,channelPricing:c}}function pr(i){return i?.changed!==!1}function hr(i,e){if(!i)return null;let t=null,n=s=>{s!=null&&s>e&&(t===null||s<t)&&(t=s)};for(let s of[i.release,i.upcoming])n(s?.startsAt),n(s?.endsAt);for(let s of i.prices)n(s.startsAt),n(s.endsAt);return t}function yn(i){let e={};for(let t of i?.prices??[])e[t.categoryKey]=t.price;return e}function ur(i){return i.focusedSection!==null?i.deeperThanSectionFrame===!1?"venue":"section":i.seatsRevealed?"venue":"none"}import{compactRowLabel as nd,t as $e}from"@seatlayer/core";import{seatConfidenceDisclosure as sd}from"@seatlayer/core/core/seatConfidence";function vn(i){return String(i??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function E(i){return String(i??"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Ee(i){return i?.restrictedView?b("picker.restrictedView","Restricted view"):i?.obstructedView?b("picker.obstructedView","Obstructed view"):""}function fr(i){if(!i)return"";let e=[];i.premium&&e.push(`<div class="sl-cx-premium"><span class="sl-cx-star" aria-hidden="true">\u2605</span>${b("picker.premiumSeat","Premium seat")}</div>`);let t=Ee(i);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>${i.note?`<span class="sl-cx-note">${E(i.note)}</span>`:""}</span></div>`):i.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(i.note)}</span></span></div>`),e.length?`<div class="sl-cx">${e.join("")}</div>`:""}function wn(i){if(!i)return"";let e=[];if(i.premium){let n=E(b("picker.premiumSeat","Premium seat"));e.push(`<span class="sl-cx-mark sl-cx-mark-premium" role="img" aria-label="${n}" title="${n}">\u2605</span>`)}let t=Ee(i);if(t){let n=E(i.note?`${t}: ${i.note}`:t);e.push(`<span class="sl-cx-mark sl-cx-mark-limited" role="img" aria-label="${n}" title="${n}">\u25D0</span>`)}else if(i.note){let n=E(i.note);e.push(`<span class="sl-cx-mark sl-cx-mark-info" role="img" aria-label="${n}" title="${n}">\u2139</span>`)}return e.join("")}function xn(i){if(!i)return"";let e=[];i.premium&&e.push(`<span class="sl-chip-cx-tag premium"><span aria-hidden="true">\u2605</span>${b("picker.premiumSeat","Premium seat")}</span>`);let t=Ee(i);return t&&e.push(`<span class="sl-chip-cx-tag limited"><span aria-hidden="true">\u25D0</span>${E(t)}</span>`),!e.length&&!i.note?"":'<div class="sl-chip-cx">'+(e.length?`<div class="sl-chip-cx-tags">${e.join("")}</div>`:"")+(i.note?`<div class="sl-chip-cx-note">${E(i.note)}</div>`:"")+"</div>"}function ft(i){return i==="no-seat"?b("picker.emptyWheelchairSpace","Empty wheelchair space"):i==="seat-present"?b("picker.accessiblePhysicalSeat","Accessible physical seat"):""}function gr(i){let e=ft(i);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 Nt(i){let e=ft(i);return e?`<span class="sl-cx-mark" role="img" aria-label="${e}" title="${e}">\u267F</span>`:""}function Sn(i,e){if(!i)return"";let t=e?b("picker.viewFromThisSeat","View from this seat"):b("picker.seeItIn3d","See it in 3D"),n=e?b("picker.viewFromHere","View from here"):t;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>${n}</span></button>`}function br(i){if(!i)return"";let e=i.previous.label||i.previous.id,t=i.next.label||i.next.id;return`<span class="sl-seccard-nav" aria-label="${b("picker.browseSections","Browse sections")}"><button type="button" data-section-nav="${I(i.previous.id)}" aria-label="${b("picker.previousSection","Previous section")}: ${I(e)}" title="${I(e)}">\u2190</button><button type="button" data-section-nav="${I(i.next.id)}" aria-label="${b("picker.nextSection","Next section")}: ${I(t)}" title="${I(t)}">\u2192</button></span>`}function yr(i,e){if(!e)return"";let t=e,n=t.includes(i.id),s=n?t.length>1?b("picker.openComparison","Open comparison"):b("picker.savedForComparison","Saved for comparison"):t.length?b("picker.compareWithSaved","Compare with saved"):b("picker.saveToCompare","Save to compare");return`<button type="button" class="sl-confirm-compare"${n&&t.length===1?" disabled":""}><span aria-hidden="true">\u21C4</span><span>${E(s)}</span></button>`}function vr(i,e,t){if(!t)return"";let n=sd(i.confidenceEvidence),s=n.modeledTarget??n.reality;return`<button type="button" class="sl-confirm-confidence" aria-label="Open seat confidence passport for ${E(i.displayLabel??i.label)}"><span><em>${E(e)}</em><strong>${E(n.headline)}</strong><small>${E(s)}</small></span><b>Passport</b></button>`}function q(i){let e=i?.rowLabel,t=i?.sectionLabel;if(!e||!t)return e;for(let n of["-"," ","\xB7","/","_"]){let s=`${t}${n}`;if(e.startsWith(s)&&e.length>s.length)return e.slice(s.length)}return nd(e,t)}function rd(i){switch(i){case"paused":return{title:b("picker.accessPausedTitle","These seats are on hold right now"),body:b("picker.accessPausedBody","The organizer has paused this selection. Try again in a few minutes."),action:b("picker.accessRetry","Try again")};case"revoked":return{title:b("picker.accessRevokedTitle","This access link is no longer active"),body:b("picker.accessRevokedBody","Ask whoever sent you here for a new link to keep booking these seats."),action:b("picker.accessRefresh","Refresh")};case"no_token":case"provider_failed":return{title:b("picker.accessExpiredTitle","The seat map timed out"),body:b("picker.accessExpiredBody","Any seats you\u2019re holding stay held. Refresh to see what\u2019s available now."),action:b("picker.accessRefresh","Refresh")};default:return{title:b("picker.accessInvalidTitle","We couldn\u2019t verify your access"),body:b("picker.accessInvalidBody","You can still book anything shown as available. Contact whoever sent you here for access to the rest."),action:b("picker.accessRefresh","Refresh")}}}var od=6;function wr(i,e,t){let n=vn;return[i?.sectionLabel?`<div class="sl-confirm-field sl-confirm-sec${i.sectionLabel.length>od?" sl-confirm-sec-long":""}"><span class="sl-confirm-key">${b("picker.section","Section")}</span><span class="sl-confirm-value">${n(i.sectionLabel)}</span></div>`:"",i?.rowLabel||i?.objectType==="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${n(t)}</span><span class="sl-confirm-value">${n(q(i)??i?.displayLabel??e)}</span></div>`:"",i?.objectType!=="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${b("picker.seat","Seat")}</span><span class="sl-confirm-value">${n(i?.seatNumber??i?.displayLabel??e)}</span></div>`:""].filter(Boolean).join("")}function xr(i,e,t){let n=vn,s=i?.objectType==="booth",r=i?.objectType==="table"&&!!i?.bookingMode,o=s||r||!i?.seatNumber,a=i?.sectionLabel??(o?void 0:i?.displayLabel),l=r?`${b("picker.guests","Guests")} ${i?.bookingMode==="variable"?`${i?.minOccupancy}\u2013${i?.maxOccupancy}`:i?.capacity}`:void 0,d=(o?[l,a?i?.rowLabel??i?.displayLabel:void 0]:[i?.rowLabel?`${t} ${q(i)??""}`.trim():void 0,`${b("picker.seat","Seat")} ${i?.seatNumber??e}`]).filter(Boolean).join(" \xB7 ");return(a?`<span class="sl-confirm-place">${n(a)}</span>`:"")+(d?`<span class="sl-confirm-pos">${a?" \xB7 ":""}${n(d)}</span>`:"")+(a||d?"":`<span class="sl-confirm-pos">${n(e)}</span>`)}function Sr(i,e){if(!i)return"";let t=e?b("picker.viewFromThisSeat","View from this seat"):b("picker.seeItIn3d","See it in 3D");return`<button type="button" class="sl-confirm-pill sl-confirm-3dpill" aria-label="${t}" title="${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 aria-hidden="true">3D</span></button>`}function kr(i,e){if(!i||e)return"";let t=b("picker.seeItIn3d","See it in 3D");return`<button type="button" class="sl-confirm-3drow" aria-label="${t}" title="${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 aria-hidden="true">3D</span></button>`}function mr(i){return i.buyerMessage?.trim()||(i.restriction==="companion"?b("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):void 0)}function Tr(i,e,t){let n=vn;if(i.length>1)return`<fieldset class="sl-confirm-tiers"><legend>${b("picker.ticketType","Ticket type")}</legend>`+i.map(o=>{let a=mr(o);return`<button type="button" class="sl-confirm-tier" data-confirm-tier="${n(o.id)}" aria-pressed="${o.id===e}"><span class="sl-confirm-tier-copy"><span class="sl-confirm-tier-name">${n(o.name)}</span>`+(a?`<small class="sl-confirm-tier-note">${n(a)}</small>`:"")+`</span><span class="sl-confirm-tier-price">${n(t(o))}</span></button>`}).join("")+"</fieldset>";let s=i[0],r=s?mr(s):void 0;return r?`<p class="sl-confirm-tier-note">${n(r)}</p>`:""}function Er(i){return`<span class="sl-seccard-dot" style="background:${E(i.color)}"></span><span class="sl-seccard-name">${E(i.label)}</span><span class="sl-seccard-left" data-full="${E(i.leftLabel)}" data-short="${E(i.leftShortLabel??i.leftLabel)}">${E(i.leftLabel)}</span>`+i.nav+i.close}function Cr(i){return`<div class="sl-seccard-head"><span class="sl-seccard-dot" style="background:${E(i.color)}"></span><span class="sl-seccard-name">${E(i.label)}</span>`+(i.showPrice?`<span class="sl-seccard-price">${E(i.priceLabel)}</span>`:"")+i.close+`</div><div class="sl-seccard-zone">${i.zoneLabel?`${E(i.zoneLabel)} \xB7 `:""}<span class="sl-seccard-left">${E(i.leftLabel)}</span></div>`+(i.entrance?`<div class="sl-seccard-entrance">${E(i.entrance)}</div>`:"")+(i.mix?`<div class="sl-seccard-mix">${i.mix}</div>`:"")+`<div class="sl-seccard-foot"><button type="button" class="sl-seccard-overview">\u2190 ${E(i.overviewLabel)}</button>`+i.nav+`<span class="sl-seccard-hint">${E(i.hint)}</span></div>`}function Ar(i){return`<span class="sl-seccard-mix-item${i.dim?" sl-dim":""}"><span class="sl-seccard-mix-dot" style="background:${E(i.color)}"></span>${E(i.label)} <span class="sl-seccard-mix-price">${E(i.rangeLabel)}</span></span>`}function Pr(i){return'<div class="sl-confirm-grid">'+i.identityFields+`</div><div class="sl-confirm-cat"><span class="sl-confirm-cat-name">${E(i.categoryLabel)}</span>`+(i.priceLabel?`<span class="sl-confirm-price">${E(i.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-id">'+i.marker+`<span class="sl-confirm-dot" style="background:${E(i.categoryColor)}" aria-hidden="true"></span><span class="sl-sr">${E(i.categoryLabel)}</span><span class="sl-confirm-who">`+i.identity+"</span>"+(i.priceLabel?`<span class="sl-confirm-idprice">${E(i.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-body">'+i.tierChoices+i.groupDates+i.wheelchair+i.commercial+(i.thumb||i.see3dPill?`<div class="sl-confirm-strip">${i.thumb}<span class="sl-confirm-pills">${i.see3dPill}</span></div>`:"")+i.inspect+'<div class="sl-confirm-row">'+(i.see3dRow??"")+`<button type="button" class="sl-confirm-cancel">${E(i.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><span class="sl-confirm-add-t">${E(i.selectLabel)}</span></button></div></div>`}function Lr(i,e){let t=I,{variable:n}=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(n?$e("picker.flexiblePartyTypeWord",{typeWord:e.typeWord}):$e("picker.wholeTypeWord",{typeWord:e.typeWord}))}</div><h2 class="sl-table-title" id="sl-table-title">${t(i.displayLabel??i.label)}</h2><p class="sl-table-copy" id="sl-table-copy">${t(n?b("picker.chooseGuestsCopy","Choose how many guests will sit together. This table is held exclusively for your party."):$e("picker.allPlacesBookedTogether",{count:i.capacity}))}</p></div><div class="sl-table-body"><div class="sl-table-summary"><span>${t(e.categoryLabel)}</span>`+(e.suppressPricing?"":`<b data-table-unit>${t($e("picker.perGuestPrice",{price:e.unitPrice}))}</b>`)+`<span class="muted">${t(b("picker.tableCapacity","Table capacity"))}</span><span>${t($e("picker.guestsCount",{count:i.capacity}))}</span>`+(e.suppressPricing?"":`<span class="muted">${t(b("picker.total","Total"))}</span><b data-table-total></b>`)+"</div>"+(n?`<label class="sl-table-qtylabel" id="sl-table-qty-label">${t(b("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(b("picker.fewerGuests","Fewer guests"))}">\u2212</button><output aria-live="polite" data-table-qty>${i.quantity}</output><button type="button" data-table-step="1" aria-label="${t(b("picker.moreGuests","More guests"))}">+</button></div><div class="sl-table-range">${t($e("picker.chooseMinMaxGuests",{min:i.minOccupancy,max:i.maxOccupancy}))}</div>`:`<input type="hidden" data-table-qty value="${i.capacity}">`)+`<div class="sl-table-actions"><button type="button" class="sl-table-cancel">${t($e("common.cancel"))}</button><button type="button" class="sl-table-confirm">${t(e.held?b("picker.updateTable","Update table"):n?b("picker.selectTable","Select table"):b("picker.selectWholeTable","Select whole table"))}</button></div></div></section>`}function Mr(i,e){let t=rd(i),n=document.createElement("div");n.className="sl-interrupt sl-access",n.setAttribute("role","status"),n.setAttribute("aria-live","polite");let s=document.createElement("div");s.className="sl-interrupt-card";let r=document.createElement("div");r.className="sl-interrupt-title",r.textContent=t.title;let o=document.createElement("div");o.className="sl-interrupt-body",o.textContent=t.body,s.append(r,o);let a=document.createElement("div");a.className="sl-interrupt-actions";let l=document.createElement("button");l.type="button",l.className="sl-interrupt-act";let c=document.createElement("span");c.className="sl-interrupt-act-icon",c.setAttribute("aria-hidden","true"),c.textContent="\u21BB";let d=document.createElement("span");return d.textContent=t.action,l.append(c,d),l.addEventListener("click",async()=>{n.classList.add("is-reloading"),l.disabled=!0;try{await e()}catch{}finally{n.isConnected&&(n.classList.remove("is-reloading"),l.disabled=!1)}}),a.appendChild(l),s.appendChild(a),n.appendChild(s),n}function Hr(i){return i.map(e=>`<button type="button" role="switch" class="sl-a11yrow${e.className?` ${e.className}`:""}${e.on?" on":""}" data-a11y-row="${E(e.key)}" aria-checked="${e.on}" aria-pressed="${e.on}"`+(e.disabled?' disabled aria-disabled="true"':"")+`><span class="sl-a11yrow-i" aria-hidden="true">${E(e.icon)}</span><span class="sl-a11yrow-t"><span class="sl-a11yrow-l">${E(e.label)}</span>`+(e.note?`<span class="sl-a11yrow-n">${E(e.note)}</span>`:"")+"</span>"+(e.count?`<span class="sl-a11yrow-c">${E(e.count)}</span>`:"")+'<span class="sl-a11yrow-s" aria-hidden="true"></span></button>').join("")}function Rr(i){let e=document.createElement("div");e.className="sl-floors on",e.setAttribute("role","group"),e.setAttribute("aria-label",i.tf("picker.chooseLevel","Choose level"));let t=[{id:"",name:i.tf("picker.allFloors","All floors")},...i.floors.map(r=>({id:r.id,name:r.name}))];for(let r of t){let o=document.createElement("button");o.type="button",o.dataset.floor=r.id,o.textContent=r.name,o.setAttribute("aria-pressed","false"),o.addEventListener("click",()=>i.onChoose(r.id)),e.appendChild(o)}let n=document.createElement("button");n.type="button",n.className="sl-floor-info",n.textContent="i";let s=i.tf("picker.floorHelp","All floors shows the complete venue. Choose one level to inspect and select its seats.");return n.setAttribute("aria-label",s),n.title=s,e.appendChild(n),e}function Ir(i,e,t){if(!i)return;let n=t?"":e;i.querySelectorAll("button[data-floor]").forEach(s=>{s.setAttribute("aria-pressed",String(s.dataset.floor===n))})}import{t as ze,tCount as ad}from"@seatlayer/core";var Ti=class{constructor(e){this.el=null;this.current=null;this.collapsed=!1;this.shownAt=0;this.host=e}get summary(){return this.current}adopt(e){this.current=e}get element(){return this.el}show(e){if(e&&e.id!==this.current?.id&&this.host.collapseSheet(),this.current=e,!e){this.el?.remove(),this.el=null,this.host.refreshMinimap();return}this.collapsed=this.host.controller.getRung()==="seats",this.shownAt=Date.now(),this.render(e),this.host.refreshMinimap()}wireNavigation(e){e.querySelectorAll("[data-section-nav]").forEach(t=>{t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation();let s=t.dataset.sectionNav;s&&this.host.controller.focusSection(s)})})}render(e){let t=this.host.map();if(!t)return;if(this.host.root()?.dataset.layout==="narrow"){this.el?.remove(),this.el=null;return}let n=e.categories.length?e.categories.map(h=>{let g=this.host.controller.doc?.categories.find(y=>y.key===h.key);return g?this.host.catPriceRange(g):{min:h.priceMin,max:h.priceMax}}).filter(h=>h!=null):[{min:e.priceMin,max:e.priceMax}],s=Math.min(...n.map(h=>h.min)),r=Math.max(...n.map(h=>h.max)),o=s===r?this.host.money(s):`${this.host.money(s)}\u2013${this.host.money(r)}`,a=ad("picker.seatsLeftInSection",e.seatsLeft),l=ze("picker.seatsLeftShort",{count:e.seatsLeft}),c=`<button type="button" class="sl-seccard-x" aria-label="${ze("picker.closeSectionSummary")}">\u2715</button>`,d=br(this.host.sectionNeighbours(e.id)),p={label:e.label,color:e.color,leftLabel:a,leftShortLabel:l,nav:d,close:c};this.el?.remove();let u=document.createElement("div");if(this.collapsed)u.className="sl-seccard mini on",u.setAttribute("role","button"),u.setAttribute("aria-label",ze("picker.sectionSummaryAria",{label:e.label})),u.innerHTML=Er(p),this.wireNavigation(u),u.addEventListener("click",h=>{h.target.closest(".sl-seccard-x")||(this.collapsed=!1,this.shownAt=Date.now(),this.render(e))}),u.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(u);else{u.className="sl-seccard on",u.setAttribute("role","dialog"),u.setAttribute("aria-label",ze("picker.sectionSummaryAria",{label:e.label}));let h=this.host.priceBandKeys(),g=this.host.suppressPricing(),y=e.categories.map(k=>{let S=this.host.controller.doc?.categories.find(f=>f.key===k.key),v=S?this.host.catPriceRange(S):{min:k.priceMin,max:k.priceMax};return Ar({label:k.label,color:k.color,dim:h!=null&&!h.has(k.key),rangeLabel:g?"":v&&v.min!==v.max?`${this.host.money(v.min)}\u2013${this.host.money(v.max)}`:this.host.money(v?.min??k.price)})}).join("");u.innerHTML=Cr({...p,priceLabel:o,showPrice:!g&&e.categories.length>0,zoneLabel:e.zoneLabel,entrance:e.entrance?`${ze("picker.entrance")} ${e.entrance}`:void 0,mix:y,overviewLabel:ze("picker.overview"),hint:ze("picker.tapSeatHint")}),this.wireNavigation(u),u.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),u.querySelector(".sl-seccard-overview").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(u)}this.el=u}collapse(){!this.el||this.collapsed||!this.current||(this.collapsed=!0,this.render(this.current))}onView(){if(!(!this.el||this.collapsed||!this.current)){if(this.host.controller.getRung()==="seats"){this.collapse();return}if(Date.now()-this.shownAt<1400){this.coverage()>.25&&this.collapse();return}this.collapse()}}coverage(){let e=this.el,t=this.current,n=this.host.map();if(!e||!t||!n)return 0;let s=this.host.activeFloorObjects().find(v=>v.type==="section"&&v.id===t.id)?.outline;if(!s||s.length<3)return 0;let r=s.map(v=>this.host.controller.worldToScreen(v)),o=r.map(v=>v.x),a=r.map(v=>v.y),l=Math.min(...o),c=Math.min(...a),d=Math.max(...o)-l,p=Math.max(...a)-c;if(d<=0||p<=0)return 0;let u=n.getBoundingClientRect(),h=e.getBoundingClientRect(),g=h.left-u.left,y=h.top-u.top,k=Math.max(0,Math.min(g+h.width,l+d)-Math.max(g,l)),S=Math.max(0,Math.min(y+h.height,c+p)-Math.max(y,c));return k*S/(d*p)}};import{t as Li,tCount as xd}from"@seatlayer/core";import{contrastRatio as Sd}from"@seatlayer/core/core/color";import{t as Or,tCount as Ei}from"@seatlayer/core";function kn(i,e,t){try{return new Intl.DateTimeFormat(e,{...t,...i.timezone?{timeZone:i.timezone}:{}}).format(new Date(i.startsAt))}catch{return new Date(i.startsAt).toLocaleString(e)}}var Ci=(i,e)=>kn(i,e,{dateStyle:"medium"}),Ai=(i,e)=>kn(i,e,{timeStyle:"short"}),Pi=(i,e)=>kn(i,e,{weekday:"short",day:"numeric",month:"short"});function _r(i,e,t,n){return!i.length||i.length>=e?null:{summary:n,labels:i.map(s=>`${Ci(s,t)} \xB7 ${Ai(s,t)}`)}}function ld(i,e){let t=new Set(e);return i.map(n=>({...n,free:!t.has(n.eventKey)}))}function Dr(i,e){let t=[...i];if(t.length<=1)return t[0]??"";try{return new Intl.ListFormat(e,{style:"long",type:"conjunction"}).format(t)}catch{return t.join(", ")}}function cd(i,e,t="",n=!1){if(!i.length)return"";let s=i.map(r=>{let o=r.free?e.free:e.blocked,a=n&&r.free?`<input class="sl-night-choice" type="checkbox" data-pg-event-key="${E(r.eventKey)}" aria-label="${E(`${r.shortDate}: ${o}`)}" checked>`:"";return`<li class="sl-night${r.free?" ok":" no"}" aria-label="${E(`${r.shortDate}: ${o}`)}">`+a+`<i class="sl-night-dot" aria-hidden="true"></i><span class="d">${E(r.shortDate)}</span><span class="st">${E(o)}</span></li>`}).join("");return`<div class="sl-tip-nights"><div class="sl-tip-nights-title">${E(e.title)}</div><ul class="sl-nightstrip">${s}</ul><p class="sl-tip-nights-note">${E(e.notAvailableOn)}</p>`+t+"</div>"}function dd(i){return i.selectPartialLabel&&i.pinned?`<button type="button" class="sl-tip-switch" data-pg-select-partial>${E(i.selectPartialLabel)}</button>`:i.switchLabel&&i.pinned?`<button type="button" class="sl-tip-switch" data-pg-switch-mode>${E(i.switchLabel)}</button>`:i.switchLabel||i.selectPartialLabel?"":`<p class="sl-tip-advice">${E(i.advice)}</p>`}function pd(i){return Number(i.available)+Number(i.selected)+Number(i.partial)+Number(i.unavailable)}function Br(i,e,t){if(pd(i)<2)return"";let n=(r,o,a="")=>`<li class="sl-pg-legend-item"><i class="sl-pg-sw ${r}"${a}></i>${E(o)}</li>`,s=[];return i.available&&s.push(n("sl-pg-sw-free",e.available,` style="background:${E(t)}"`)),i.selected&&s.push(n("sl-pg-sw-sel",e.selected)),i.partial&&s.push(n("sl-pg-sw-split",e.partial,` style="--sl-pg-sw-cat:${E(t)}"`)),i.unavailable&&s.push(n("sl-pg-sw-off",e.unavailable)),`<ul class="sl-pg-legend-list" aria-label="${E(e.title)}">${s.join("")}</ul>`}function Nr(i,e){if(!i.length)return"";let t=i.map(n=>{let s=n.labels.length?n.labels.join(", "):e.empty;return`<li class="sl-pg-night-row${n.labels.length?"":" empty"}${n.active?" active":""}" role="button" tabindex="0"${n.active?' aria-current="true"':""} data-event-key="${E(n.eventKey)}"><span class="n">${E(n.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 Tn(i,e){if(i?.kind!=="partial"||!e?.length)return null;let t=i.data?.blockedEventKeys??[],n=ld(e,t);return{states:n,missing:n.filter(s=>!s.free).map(s=>s.shortDate)}}function Fr(i,e){return i?cd(i.states,{title:b("picker.group.partlyAvailableTitle","Free on some nights only"),free:b("picker.group.nightFree","Free"),blocked:b("picker.group.nightBlocked","Not available"),notAvailableOn:Or("picker.group.notAvailableOn",{dates:Dr(i.missing,e.locale)})},dd({switchLabel:e.switchLabel??null,selectPartialLabel:e.selectPartialLabel??null,pinned:e.pinned,advice:b("picker.group.pickSeatFreeEveryNight","Pick a seat that is free every night.")}),!!e.selectPartialLabel&&!!e.pinned):""}function hd(i,e,t,n){if(!i.length)return"";let s=new Set(e),r=new Set(t),o=i.map(a=>{let l=s.has(a.eventKey);return`<li class="sl-confirm-date${l?"":" blocked"}"><label><input type="checkbox" data-pg-confirm-event-key="${E(a.eventKey)}" aria-label="${E(`${a.shortDate}: ${l?n.available:n.unavailable}`)}"${l&&r.has(a.eventKey)?" checked":""}${l?"":" disabled"}><span class="sl-confirm-date-label">${E(a.shortDate)}</span><span class="sl-confirm-date-state">${E(l?n.available:n.unavailable)}</span></label></li>`}).join("");return`<fieldset class="sl-confirm-dates" data-pg-confirm-dates><legend>${E(n.title)}</legend><p class="sl-confirm-dates-copy">${E(n.copy)}</p><label class="sl-confirm-date-all"><input type="checkbox" data-pg-confirm-all><span>${E(n.selectAll)}</span></label><ul>${o}</ul><p class="sl-confirm-dates-summary" data-pg-confirm-summary aria-live="polite"></p></fieldset>`}function Vr(i,e,t,n){let s=e.availableEventKeys(t);return hd(i,s,e.includedEventKeys(),{title:n("picker.group.confirmDatesTitle","Choose performance dates"),copy:s.length===i.length?n("picker.group.confirmAllDatesCopy","This seat is available for all {count} dates. Keep all selected, or remove dates you do not want.").replace("{count}",String(i.length)):n("picker.group.confirmPartialDatesCopy","This seat is available for {available} of {total} dates. Choose one date or keep every available date.").replace("{available}",String(s.length)).replace("{total}",String(i.length)),selectAll:n("picker.group.confirmSelectAll","Select all available dates"),available:n("picker.group.nightFree","Available"),unavailable:n("picker.group.nightBlocked","Unavailable")})}function $r(i){return[...i.querySelectorAll("[data-pg-confirm-event-key]")].filter(e=>e.checked&&!e.disabled).map(e=>e.dataset.pgConfirmEventKey).filter(Boolean)}function zr(i,e,t,n){let s=[...i.querySelectorAll("[data-pg-confirm-event-key]")];if(!e||!s.length)return;let r=i.querySelector(".sl-confirm-add"),o=i.querySelector("[data-pg-confirm-all]"),a=()=>{let l=s.filter(p=>!p.disabled),c=$r(i).length;o&&(o.checked=c===l.length,o.indeterminate=c>0&&c<l.length);let d=i.querySelector("[data-pg-confirm-summary]");d&&(d.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))),r.disabled=c===0,r.textContent=c?e.label(c):t("picker.group.confirmChooseOne","Choose at least 1 date"),n()};s.forEach(l=>l.addEventListener("change",a)),o?.addEventListener("change",()=>{s.filter(l=>!l.disabled).forEach(l=>{l.checked=o.checked}),a()}),a()}async function jr(i,e,t){if(!i||!t||!i.querySelector("[data-pg-confirm-event-key]"))return!0;let n=$r(i);if(!n.length)return!1;let s=i.querySelector(".sl-confirm-add");return s?.setAttribute("aria-busy","true"),s&&(s.disabled=!0),await t.apply(e,n)?!0:(s?.removeAttribute("aria-busy"),s?.isConnected&&(s.disabled=!1),!1)}function Gr(i,e,t){return i?Or("picker.group.seatPartlyAvailable",{label:e,free:i.states.length-i.missing.length,total:i.states.length,dates:Dr(i.missing,t)}):""}function Ur(i,e){let t=i.map((n,s)=>{let r=n.state==="done"?e.done:n.state==="current"?e.current:e.upcoming;return`<li class="sl-pg-step-item" data-step="${E(n.id)}" data-state="${E(n.state)}"${n.state==="current"?' aria-current="step"':""}><span class="i" aria-hidden="true">${n.state==="done"?"\u2713":String(s+1)}</span><span class="l">${E(n.label)}</span><span class="sl-pg-sr">${E(r)}</span></li>`}).join("");return`<ol class="sl-pg-steps" aria-label="${E(e.label)}">${t}</ol>`}function En(i,e){return`<ul class="sl-pg-cards">${i.map(n=>`<li class="sl-pg-card" data-event-key="${E(n.eventKey)}"><span class="n">${E(n.name)}</span><time datetime="${E(n.iso)}"><span class="d">${E(n.date)}</span><span class="t">${E(n.time)}</span></time></li>`).join("")}</ul><p class="sl-pg-included">${E(e)}</p>`}function qr(i){let e=i.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(", "):i.empty)}</span></li>`).join("");return`<div class="sl-pg-pane-title">${E(i.title)}</div><ul class="sl-pg-pane-list">${e}</ul>`+(i.note?`<p class="sl-pg-pane-note">${E(i.note)}</p>`:"")+(i.total?`<div class="sl-pg-pane-total"><span>${E(i.total.label)}</span><b>${E(i.total.amount)}</b></div>`:"")+(i.holdStatus?`<p class="sl-pg-hold-status" role="status">${E(i.holdStatus)}</p>`:"")}function Kr(i){let e=Math.max(0,i);return`${Math.floor(e/6e4)}:${String(Math.floor(e/1e3)%60).padStart(2,"0")}`}function Wr(i,e){if(!i||i.seats<=0)return"";if(e==="same_seat"){let t=i.perPerformance??i.seats;return i.totalPerformances&&i.performances<i.totalPerformances?Ei("picker.group.performancesChosenOf",t,{chosen:i.performances,total:i.totalPerformances}):Ei("picker.group.seatsEveryPerformance",t)}return i.perPerformance!=null&&i.performancesChosen===i.performances?Ei("picker.group.seatsPerPerformance",i.seats,{per:i.perPerformance}):Ei("picker.group.performancesChosenOf",i.seats,{chosen:i.performancesChosen,total:i.performances})}function Yr(i,e){i.querySelectorAll(".sl-pg-night-row[data-event-key]").forEach(t=>{let n=()=>e(t.dataset.eventKey);t.addEventListener("click",n),t.addEventListener("keydown",s=>{s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),n())})})}import{t as ud}from"@seatlayer/core";function ge(i){return String(i??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function md(i,e){let t=i.objectType==="table"&&!!i.bookingMode,n=i.objectType==="booth",s=t||n||!i.seatNumber,r=s?i.rowLabel??i.displayLabel??i.label:i.seatNumber,o=t?`${b("picker.guests","Guests")} ${i.bookingMode==="variable"?`${i.minOccupancy}\u2013${i.maxOccupancy}`:i.capacity}`:!n&&i.rowLabel?`${e} ${q(i)??""}`.trim():"";return`<div class="sl-tip-head"><div class="sl-tip-id"><span class="sl-tip-seat${s?" name":""}">${ge(r)}</span>`+(o?`<span class="sl-tip-row">${ge(o)}</span>`:"")+"</div>"+(i.sectionLabel?`<div class="sl-tip-sec"><span class="sl-tip-eyebrow">${b("picker.section","Section")}</span><span class="sl-tip-secname">${ge(i.sectionLabel)}</span></div>`:"")+"</div>"}function Xr(i,e){let t=i.status==="not_for_sale",n=i.mark?.kind==="partial",s=i.status==="free"||n?"":`<span class="sl-tip-tag">${t?b("picker.notAvailable","Not available"):i.status==="held"?ud("map.statusHeld"):b("picker.sold","Sold")}</span>`,r=t?"":e.price,o=r?`<span class="sl-tip-amt">${ge(r)}</span>`:"",a=!r&&e.priceNote?`<div class="sl-tip-note">${ge(e.priceNote)}</div>`:"",l=Ee(i.commercial),c=l?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u25D0</span>${ge(l)}</div>`:"",d=ft(i.wheelchairSpaceType),p=d?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u267F</span>${ge(d)}</div>`:"",u=e.reason?`<div class="sl-tip-reason">${ge(e.reason)}</div>`:"";return'<i class="sl-tip-rail" aria-hidden="true"></i>'+md(i,e.rowTypeWord)+`<div class="sl-tip-cat"><span class="sl-tip-dot" style="background:${ge(i.categoryColor)}"></span><span class="sl-tip-name">${ge(i.categoryLabel)}</span>`+s+o+"</div>"+a+u+p+c+(e.extra??"")}function Qr(i,e,t,n){let s=i.x+14,r=i.y-n.height-12,o=i.y+18,a=r;s+n.width>e-8&&(s=i.x-n.width-14),r<8&&o+n.height<=t-8&&(a=o);let l=Math.max(8,t-n.height-8);return{left:Math.max(8,Math.min(s,Math.max(8,e-n.width-8))),top:Math.max(8,Math.min(a,l))}}function Zr(i,e,t,n=22){let s=Math.max(8,Math.min(i.x-t.width/2,Math.max(8,e.width-t.width-8))),r=i.y-n-t.height,o=i.y+n;return r>=8?{left:s,top:r,placement:"above"}:o+t.height<=e.height-8?{left:s,top:o,placement:"below"}:{left:s,top:Math.max(8,Math.min(r<8?o:r,Math.max(8,e.height-t.height-8))),placement:r<8?"below":"above"}}var Cn=14,fd=12,gd=12,bd=8;function Jr(i,e,t,n=fd){let s=e.height-Cn-t.height,r=gd,o=s-n;if(o<=r)return{placement:"sheet",nudgeY:0};let a=(r+o)/2-i;return Math.abs(a)<=bd?{placement:"sheet",nudgeY:0}:{placement:"sheet",nudgeY:Math.round(a)}}function eo(i,e,t,n,s=0){let r=t.width/2+12,o=Math.max(r,Math.min(e.width-r,i.x)),a=i.y+s+t.height+24<=e.height,l=i.y-s<t.height+24&&a?"below":"above",c=l==="above"?i.y-s:i.y+s,d=n&&l==="above"?Math.max(t.height+24,c):c;return{left:o,top:Math.max(8,Math.min(e.height-8,d)),placement:l}}function to(i,e,t){let n=i.querySelector("[data-pg-select-partial]"),s=[...i.querySelectorAll("[data-pg-event-key]")],r=()=>s.filter(a=>a.checked).map(a=>a.dataset.pgEventKey).filter(Boolean),o=()=>{if(!n)return;let a=r().length;n.disabled=a===0,n.textContent=e?.(a)??n.textContent};s.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())})}),n?.addEventListener("click",()=>{let a=r();a.length&&t?.(a)})}function je(i){let e=i?.displayType?.trim()||i?.rowType?.trim();return e||(i?.objectType==="table"?b("picker.table","Table"):i?.objectType==="booth"?b("picker.booth","Booth"):b("picker.row","Row"))}var yd="sl-confirm-scrim",vd="--sl-scrim-mask";function wd(i){let e=Math.round(i.x),t=Math.round(i.y);return`radial-gradient(circle at ${e}px ${t}px, transparent 0 56px, #000 88px)`}function io(i,e,t,n){let s=i??document.createElement("div");return i||(s.className=yd),s.style.setProperty(vd,wd(n)),t.parentNode===e?s.nextSibling!==t&&e.insertBefore(s,t):s.parentNode!==e&&e.appendChild(s),s}function An(i){return i?.remove(),null}var kd=360,Td=160,Ed=700,no=450;function so(){try{return globalThis.matchMedia?.("(pointer: coarse)").matches??!1}catch{return!1}}function Cd(i){return Sd("#ffffff",i)>=3?"#ffffff":"#0b0f19"}var Mi=class{constructor(e){this.el=null;this.seat=null;this.outsideTap=null;this.scrim=null;this.shownAt=0;this.lift=null;this.framing=null;this.mode="add";this.host=e}get element(){return this.el}set element(e){this.el=e}get candidate(){return this.seat}set candidate(e){this.seat=e}thumbHtml(e){let t=this.host.controller.doc;if(!t)return"";let n=mt(e)?e.viewUrl??"":"",s=xi(t);if(!n&&!s)return"";let r=n?null:Si(e,e.focalPoint??t.focalPoint);if(!n&&r==null)return"";let o=s&&r!=null?`<div class="sl-confirm-sight">${I(Li("picker.sightline",{m:r}))}</div>`:"";if(!n)return o;let a=I(Li("picker.viewFromSeat",{label:e.label})),l=I(this.host.tf("picker.viewFromHere","View from here"));return`<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>`+o}show(e,t="add"){let n=this.host;this.mode=t;let s=this.seat?.id;this.el?.remove(),this.el=null,this.seat=e,n.root()?.setAttribute("data-confirming","true"),n.els().side?.toggleAttribute("inert",!0),Object.values(n.regions()).forEach(H=>H.toggleAttribute("inert",!0)),n.controller.setSelectionFocus(e.id),s&&s!==e.id&&n.controller.deselect([s]),n.hideTooltip();let r=n.controller.seatDetails(e.id),o=n.controller.doc?.categories.find(H=>H.key===e.categoryKey),a=r?.price??(o?.tiers?.length?o.tiers[0].price:o?.price),l=a!=null?n.paidPrice(e.categoryKey,r?.tierId??o?.tiers?.[0]?.id??null,a,e.label):void 0,c=wr(r,e.displayLabel??e.label,je(r)),d=r?.tiers??o?.tiers??[],p=r?.tierId??d[0]?.id,u=n.suppressPricing()?"":Tr(d,p,H=>n.money(n.paidPrice(e.categoryKey,H.id,H.price,e.label))),h=n.buyerView()==="venue3d",g=n.performanceGroup()?.confirmDateSelection??void 0,y=g?n.performanceGroup()?.nights?.()??[]:[],k=g?Vr(y,g,e.id,(H,A)=>n.tf(H,A)):"";this.shownAt=performance.now();let S=document.createElement("div");S.className="sl-confirm sl-mo-in",t==="remove"&&S.classList.add("sl-confirm-removing"),k&&S.classList.add("sl-confirm-group-dates"),S.setAttribute("role","dialog"),S.setAttribute("aria-label",Li("picker.confirmSeatLabel",{label:e.label}));let v=n.controller.getRenderer?.()?.categoryDisplayColor?.(e.categoryKey)??o?.color??"#6e7bff";S.style.setProperty("--sl-cat",v),S.style.setProperty("--sl-cat-ink",Cd(v));let f=String(r?.categoryLabel??o?.label??e.categoryKey),P=n.controller.categoryAvailability()[e.categoryKey],_=typeof P=="number"&&P>0?xd("picker.leftCount",P):"";S.innerHTML=Pr({identityFields:c,identity:xr(r,e.displayLabel??e.label,je(r)),marker:Nt(r?.wheelchairSpaceType),see3dPill:Sr(n.canOffer3d(),h),categoryColor:v,categoryLabel:f,priceLabel:!n.suppressPricing()&&l!=null?n.money(l):"",categoryLeftLabel:_,tierChoices:u,groupDates:k,wheelchair:gr(r?.wheelchairSpaceType),commercial:fr(e.commercial),thumb:n.seatViewEnabled()&&n.buyerView()!=="venue3d"?this.thumbHtml(e):"",inspect:h?`<div class="sl-confirm-inspect-row">${vr(e,n.suppressPricing()?`${r?.displayLabel??e.displayLabel??e.label}`:`${r?.displayLabel??e.displayLabel??e.label} \xB7 ${l==null?n.tf("picker.priceNotSupplied","Price not supplied"):n.money(l)}`,h)}${yr(e,h?n.view3dCompareSeatIds():null)}${Sn(n.canOffer3d(),h)}</div>`:Sn(n.canOffer3d(),h),see3dRow:kr(n.canOffer3d(),h),cancelLabel:Li("common.cancel"),selectLabel:t==="remove"?n.tf("picker.removeSeat","Remove seat"):n.addSeatLabel(r?.objectType)}),t==="remove"&&S.querySelector(".sl-confirm-add svg path")?.setAttribute("d","M6 6l12 12M18 6L6 18"),n.els().map.appendChild(S),this.el=S;let C=S.querySelector(".sl-confirm-thumb"),R=C?.closest(".sl-confirm-thumbwrap")??null;if(C&&R){let H=!1,A=()=>{if(H||!R.isConnected)return;H=!0;let O=()=>{R.remove(),this.el===S&&n.reanchor()};if(n.reducedMotion()||typeof requestAnimationFrame!="function"){O();return}R.style.height=`${R.offsetHeight}px`,R.classList.add("sl-confirm-thumb-out"),requestAnimationFrame(()=>{R.style.height="0px",R.style.opacity="0"}),setTimeout(O,Td)};C.addEventListener("error",A),C.addEventListener("load",()=>{C.naturalWidth||A()});let D=e.viewMeta?.previewUrl??e.viewUrl;D?n.resolveAssetUrl(D).then(O=>{if(!(!S.isConnected||this.el!==S)){if(!O){A();return}C.src=O}}).catch(O=>{A(),n.onError(O)}):A()}n.reanchor(),this.liftSeatClearOfSheet(e),S.querySelector(".sl-confirm-view")?.addEventListener("click",()=>{n.openSeatView(e)}),S.querySelector(".sl-confirm-confidence")?.addEventListener("click",H=>{n.openSeatConfidencePassport(e,H.currentTarget instanceof HTMLElement?H.currentTarget:null)}),S.querySelector(".sl-confirm-compare")?.addEventListener("click",()=>n.saveView3dComparisonSeat(e)),S.querySelectorAll("[data-confirm-tier]").forEach(H=>{H.addEventListener("click",()=>{let A=H.dataset.confirmTier,D=d.find(N=>N.id===A);if(!D)return;n.controller.setSeatTier(e.id,D.id),S.querySelectorAll("[data-confirm-tier]").forEach(N=>{N.setAttribute("aria-pressed",String(N===H))});let O=S.querySelector(".sl-confirm-price");O&&(O.textContent=n.money(n.paidPrice(e.categoryKey,D.id,D.price,e.label))),n.reanchor()})}),S.querySelectorAll(".sl-confirm-3d,.sl-confirm-3dpill,.sl-confirm-3drow").forEach(H=>{H.addEventListener("pointerdown",ci,{once:!0}),H.addEventListener("click",()=>{n.buyerView()==="venue3d"?(n.dismiss(),n.view3dHandle()?.flyToSeat(e.id)):(n.rememberView3dReturnSeat(e),n.dismiss(),n.enter3d(e.id))})}),zr(S,g,(H,A)=>n.tf(H,A),()=>n.reanchor()),S.querySelector(".sl-confirm-add").addEventListener("click",()=>{if(!this.ghostActivation()){if(this.mode==="remove"){this.removeCommitted();return}this.commit()}}),S.querySelector(".sl-confirm-cancel").addEventListener("click",()=>{this.ghostActivation()||this.cancel()}),this.armOutsideTap(S),requestAnimationFrame(()=>{let H=S.querySelector(".sl-confirm-add");H?.focus(),n.liftToastOverConfirm(),n.fitTranslatedRows(),n.inviteCommit(S,H)})}liftSeatClearOfSheet(e){let t=this.host.controller.getRenderer();this.framing={gestures:t?.getCameraGestureCount?.()??0,quietUntil:0},this.frameSeatForSheet(e)}frameSeatForSheet(e){let t=this.host,n=t.root();if(!this.el||n?.dataset.layout!=="narrow"||n?.dataset.view3d==="on")return;let s=t.els().map;if(!s)return;let r=t.controller.worldToScreen({x:e.x,y:e.y}),o=t.controller.getRenderer(),a=o?.getCameraGestureCount?.()??0,{nudgeY:l}=Jr(r.y,{height:s.clientHeight},{height:this.el.offsetHeight||230}),c=this.lift&&this.lift.gestures===a?this.lift.dy:0;if(!l){this.lift=c?{dy:c,gestures:a}:null;return}let d=!t.reducedMotion();o?.panScreenBy?.({x:0,y:l},{animate:d}),this.lift={dy:c+l,gestures:a},this.framing&&(this.framing.gestures=a,this.framing.quietUntil=d?this.now()+Ed:0)}reframeSeatForSheet(){let e=this.framing,t=this.seat;!e||!t||e.quietUntil&&this.now()<e.quietUntil||(this.host.controller.getRenderer()?.getCameraGestureCount?.()??e.gestures)!==e.gestures||this.frameSeatForSheet(t)}now(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}settleLift(){let e=this.lift;if(this.lift=null,this.framing=null,!e)return;let t=this.host.controller.getRenderer();(t?.getCameraGestureCount?.()??e.gestures)===e.gestures&&t?.panScreenBy?.({x:0,y:-e.dy},{animate:!this.host.reducedMotion()})}reanchor(){let e=this.host;if(!this.el||!this.seat||e.root()?.dataset.view3d==="on")return;let t=e.controller.worldToScreen({x:this.seat.x,y:this.seat.y}),n=e.els().map;if(e.root()?.dataset.layout==="narrow"){this.el.removeAttribute("data-placement"),this.el.style.removeProperty("bottom"),this.scrim=io(this.scrim,n,this.el,t),xs(this.el,t,n),e.liftToastOverConfirm(),this.reframeSeatForSheet();return}this.scrim=An(this.scrim);let s=n.clientWidth,r=n.clientHeight,o=this.el.offsetWidth||276,a=this.el.offsetHeight||230,l=this.el.classList.contains("sl-confirm-group-dates"),c=e.controller.seatScreenRadius()*1.5,d=eo(t,{width:s,height:r},{width:o,height:a},l,c);this.el.dataset.placement=d.placement,this.el.style.left=`${d.left}px`,this.el.style.top=`${d.top}px`,si(this.el,t,{left:d.left,top:d.top,width:o,height:a})}ghostActivation(){return so()?performance.now()-this.shownAt<no:!1}armOutsideTap(e){this.disarmOutsideTap();let t=this.host,n=r=>{if(this.el!==e){this.disarmOutsideTap();return}let o=r.target;!o||e.contains(o)||t.els().tray?.contains(o)||this.cancel()};this.outsideTap=n;let s=t.root();setTimeout(()=>{this.outsideTap===n&&(s??document).addEventListener("pointerdown",n,!0)},so()?no:0)}disarmOutsideTap(){if(!this.outsideTap)return;let e=this.outsideTap;this.outsideTap=null,(this.host.root()??document).removeEventListener("pointerdown",e,!0),document.removeEventListener("pointerdown",e,!0)}dismiss(){let e=this.host;this.disarmOutsideTap(),this.scrim=An(this.scrim),this.settleLift(),this.el&&at(this.el),this.el=null,this.seat=null,e.liftToastOverConfirm(),e.root()?.removeAttribute("data-confirming"),Object.values(e.regions()).forEach(t=>t.toggleAttribute("inert",!1)),e.applyPanelCollapsed(),e.controller.setSelectionFocus(null)}async commit(){let e=this.host,t=this.seat;if(!t)return;let s=this.el?.querySelector(".sl-confirm-add")??null;if(s?.classList.contains("is-adding")||!await jr(this.el,t.id,e.performanceGroup()?.confirmDateSelection??void 0))return;e.collapseSectionCard(),this.seat=null,e.syncTray(),e.syncSelectionTo3d();let r=()=>{e.dismiss(),dn(e.els(),e.controller.worldToScreen(t),t,e.controller.doc?.categories)};if(!s||e.reducedMotion()){r();return}s.classList.remove("sl-confirm-add-invite"),s.classList.add("is-adding"),s.setAttribute("aria-disabled","true");let o=s.querySelector(".sl-confirm-add-t");o&&(o.textContent=e.tf("picker.added","Added")),e.scheduleMotion(r,kd)}cancel(){let e=this.host,t=this.seat;t&&(this.mode!=="remove"&&e.controller.deselect([t.id]),this.seat&&e.dismiss(),e.syncSelectionTo3d(),e.root()?.focus({preventScroll:!0}))}removeCommitted(){let e=this.host,t=this.seat;t&&(e.controller.deselect([t.id]),e.dismiss(),e.syncTray(),e.syncSelectionTo3d(),e.root()?.focus({preventScroll:!0}))}};function ro(i,e,t){if(!e||t)return;e.classList.add("sl-confirm-add-invite");let n=()=>e.classList.remove("sl-confirm-add-invite");i.addEventListener("pointerdown",n,{once:!0}),i.addEventListener("keydown",n,{once:!0}),e.addEventListener("focus",n,{once:!0})}function oo(i,e){return i&&i!=="seat"?e("picker.select","Select"):e("picker.addSeat","Add seat")}import{pointInPolygon as Ad}from"@seatlayer/core";import{createMinimapTransform as Pd,minimapPointToWorld as Ld,minimapViewportPlan as Md}from"@seatlayer/core/picker/minimapGeometry";function Hd(i,e){return i.x<=e.x&&i.y<=e.y&&i.x+i.width>=e.x+e.width&&i.y+i.height>=e.y+e.height}function ao(i,e){let t=new Pn(i);return t.build(e),t}var Pn=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}dispose(){this.miniToggle?.remove(),this.miniWrap?.remove(),this.miniToggle=null,this.miniWrap=null,this.miniCanvas=null,this.miniBase=null,this.miniLabel=null,this.miniTf=null,this.miniDrag=null,this.host.root()?.removeAttribute("data-minimap-open")}build(e){if(!this.host.controller.getViewport())return;let n=document.createElement("button");n.type="button",n.className="sl-minimap-toggle",n.setAttribute("aria-label",b("picker.openVenueMap","Open venue overview map")),n.setAttribute("aria-expanded","false"),n.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(n),this.miniToggle=n;let s=document.createElement("div");s.className="sl-minimap",s.setAttribute("role","group");let r=document.createElement("div");r.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",b("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",b("picker.closeVenueMap","Close venue overview map")),l.textContent="\xD7",r.append(o,a,l);let c=document.createElement("canvas");c.tabIndex=0,c.setAttribute("role","application"),c.setAttribute("aria-label",b("picker.venueMapInstructions","Venue overview map. Drag the viewport, click a section, or use arrow keys to pan.")),s.append(r,c),e.appendChild(s),this.miniWrap=s,this.miniLabel=o,this.miniCanvas=c;let d=document.createElement("canvas");this.miniBase=d,n.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,n=this.host.controller.getViewport()?.bounds;if(!e||!t||!n||!(n.width>0&&n.height>0))return;let s=196,r=146,o=6,a=n.width/Math.max(1,n.height),l=s,c=Math.round(s/a);c>r&&(c=r,l=Math.round(r*a)),l=Math.max(64,l),c=Math.max(48,c);let d=Math.min(2,window.devicePixelRatio||1);e.width=Math.round(l*d),e.height=Math.round(c*d),e.style.width=`${l}px`,e.style.height=`${c}px`,t.width=e.width,t.height=e.height,this.miniTf=Pd(n,e.width,e.height,d,o)}syncMinimapLabel(){if(!this.miniLabel||!this.miniWrap)return;let e=this.host.controller.getFloors(),t=this.host.controller.isFloorOverview()?b("picker.allFloors","All floors"):e.find(d=>d.id===this.host.controller.getActiveFloorId())?.name??b("picker.venueOverview","Venue overview"),n=this.host.controller.getMinimapSnapshot().sections,r=n.find(d=>d.active)?.label??this.host.focusedSectionLabel(),o=r?`${t} \xB7 ${r}`:t;this.miniLabel.textContent=o;let a=n.filter(d=>d.state==="selected").length,l=n.filter(d=>d.state==="available").length,c=n.filter(d=>d.state==="inactive").length;this.miniWrap.setAttribute("aria-label",n.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections.`:o),this.miniCanvas?.setAttribute("aria-label",n.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections. ${b("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click a section, or use arrow keys to pan.")}`:`${o}. ${b("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 n=e.getContext("2d");if(!n)return;n.clearRect(0,0,e.width,e.height);let s=p=>p*t.scale+t.offX,r=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",d=this.host.controller.getMinimapSnapshot();for(let p of d.sections){if(p.outline.length<3)continue;n.beginPath(),p.outline.forEach((h,g)=>g===0?n.moveTo(s(h.x),r(h.y)):n.lineTo(s(h.x),r(h.y))),n.closePath();let u=p.paint;if(n.globalAlpha=p.state==="inactive"?.5:.92,u?n.fillStyle=u.fill:(n.globalAlpha=p.state==="inactive"?.18:p.state==="selected"?.72:.34,n.fillStyle=p.state==="inactive"?a:p.state==="selected"?l:c),n.fill(),n.globalAlpha=.82,n.lineWidth=Math.max(1,t.dpr),n.strokeStyle=u?.stroke||o,n.stroke(),p.owned){n.globalAlpha=1,n.lineWidth=Math.max(2,t.dpr*1.5),n.strokeStyle=l,n.stroke();let h=p.outline.reduce((g,y)=>({x:g.x+y.x,y:g.y+y.y}),{x:0,y:0});n.beginPath(),n.arc(s(h.x/p.outline.length),r(h.y/p.outline.length),Math.max(1.5,t.dpr*1.6),0,Math.PI*2),n.fillStyle=l,n.fill(),n.beginPath(),p.outline.forEach((g,y)=>y===0?n.moveTo(s(g.x),r(g.y)):n.lineTo(s(g.x),r(g.y))),n.closePath()}p.active&&(n.globalAlpha=1,n.lineJoin="round",n.lineWidth=Math.max(4,t.dpr*3.5),n.strokeStyle=this.host.cssVar("--sl-surface")||"#fff",n.stroke(),n.lineWidth=Math.max(2,t.dpr*1.75),n.strokeStyle=l,n.stroke())}if(n.globalAlpha=1,!d.sections.length){let p=Math.max(1,t.dpr),u=this.host.controller.getRenderer?.(),h=new Map,g=y=>{let k=h.get(y);if(k)return k;let S=u?.categoryDisplayColor?.(y)||c;return h.set(y,S),S};for(let y of d.seats)n.globalAlpha=y.state==="inactive"?.22:.78,n.fillStyle=y.state==="inactive"?a:y.state==="selected"?l:g(y.categoryKey),n.beginPath(),n.arc(s(y.x),r(y.y),p,0,Math.PI*2),n.fill();n.globalAlpha=1}}drawMinimapRect(){let e=this.miniCanvas,t=this.miniBase,n=this.miniTf;if(!e||!t||!n)return;let s=e.getContext("2d");if(!s)return;s.clearRect(0,0,e.width,e.height),s.drawImage(t,0,0);let r=this.host.controller.getViewport();if(!r||Hd(r.visible,r.bounds))return;let o=Md(r.visible,n,e.width,e.height,Math.max(2,n.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,n.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,n.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,n.dpr*3),Math.max(2,n.dpr*2)]),s.strokeRect(o.clipped.x,o.clipped.y,o.clipped.width,o.clipped.height)),s.restore()}minimapWorldPoint(e){let t=this.miniCanvas,n=this.miniTf;if(!t||!n)return null;let s=t.getBoundingClientRect(),r=(e.clientX-s.left)*(t.width/Math.max(1,s.width)),o=(e.clientY-s.top)*(t.height/Math.max(1,s.height));return{...Ld({x:r,y:o},n),px:r,py:o}}minimapPointerDown(e){let t=this.minimapWorldPoint(e),n=this.host.controller.getViewport()?.visible;!t||!n||!(t.x>=n.x&&t.x<=n.x+n.width&&t.y>=n.y&&t.y<=n.y+n.height)||(this.miniDrag={pointerId:e.pointerId,offsetX:t.x-(n.x+n.width/2),offsetY:t.y-(n.y+n.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 n=this.minimapWorldPoint(e);n&&(!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:n.x-t.offsetX,y:n.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 n=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;!n&&!s||(this.host.controller.clearSectionFocus(),this.host.controller.panToWorld({x:t.x+t.width/2+n,y:t.y+t.height/2+s}),e.preventDefault())}minimapJump(e){let t=this.minimapWorldPoint(e);if(t){for(let n of this.host.controller.getMinimapSnapshot().sections)if(!(n.state==="inactive"||n.outline.length<3)&&Ad(t,n.outline)){this.host.controller.focusSection(n.id);return}this.host.controller.clearSectionFocus(),this.host.controller.panToWorld(t)}}};import{t as Ln}from"@seatlayer/core";var Rd=12;function lo(i,e){let t=e.floors(),n=new Set(t.map(C=>C.label.trim().toLocaleLowerCase())),s=e.zones().filter(C=>C.seatCount>0&&!n.has(C.label.trim().toLocaleLowerCase())),r=e.sections().filter(C=>C.seatCount>0&&!n.has(C.label.trim().toLocaleLowerCase())),o=s.length>1?[]:r,a=t.length>1,l=s.length>1,c=o.length>1;if(!a&&!l&&!c)return null;let d=document.createElement("div");d.className="sl-view3d-nav";let p=null,u=document.createElement("button");u.type="button",u.className="sl-view3d-nav-toggle",u.setAttribute("aria-expanded","false");let h='<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>',g=document.createElement("span");u.innerHTML=h,u.appendChild(g);let y=()=>{for(let C of d.querySelectorAll(":scope > div")){let R=C.querySelector('[aria-pressed="true"]');!R||C.scrollWidth<=C.clientWidth||R.scrollIntoView({block:"nearest",inline:"nearest"})}},k=()=>{if(p)return p;for(let C of d.querySelectorAll(":scope > div")){let R=C.querySelector('button[aria-pressed="true"]'),H=R?.textContent?.trim();if(H&&R?.dataset.floor!=="")return H}return a&&(l||c)?b("picker.levelsAndAreas","Levels & areas"):a?b("picker.levels","Levels"):b("picker.areas","Areas")},S=C=>{d.classList.toggle("is-open",C),u.setAttribute("aria-expanded",String(C)),C&&typeof requestAnimationFrame=="function"&&requestAnimationFrame(y),g.textContent=k()};u.addEventListener("click",()=>S(!d.classList.contains("is-open"))),d.addEventListener("keydown",C=>{C.key!=="Escape"||!d.classList.contains("is-open")||(C.preventDefault(),C.stopPropagation(),S(!1),u.focus())});let v=document.createElement("button");v.type="button",v.className="sl-view3d-nav-close",v.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12"/></svg>';let f=b("picker.closeVenueNavigation","Close venue navigation");v.setAttribute("aria-label",f),v.title=f,v.addEventListener("click",()=>{S(!1),u.focus()}),S(!1),d.appendChild(u);let P=C=>{},_=C=>{};if(a){let C=document.createElement("div");C.setAttribute("role","group"),C.setAttribute("aria-label",b("picker.levels","Levels"));let R=[];_=D=>{R.forEach(O=>{O.setAttribute("aria-pressed",String((O.dataset.floor===""?null:Number(O.dataset.floor))===D))})};let H=D=>{e.focusFloor(D)&&(_(D),P(D))},A=(D,O)=>{let N=document.createElement("button");N.type="button",N.textContent=D,N.dataset.floor=O===null?"":String(O),N.setAttribute("aria-pressed",String(O===null)),N.addEventListener("click",()=>{H(O),S(!1)}),R.push(N),C.appendChild(N)};A(b("picker.allLevels","All levels"),null);for(let D of t)A(D.label||Ln("picker.levelNumber",{number:D.index+1}),D.index);d.appendChild(C)}if(l||c){let C=document.createElement("div");C.setAttribute("role","group"),C.setAttribute("aria-label",b("picker.areas","Areas"));let R=l?s.map(A=>({id:A.id,label:A.label||A.id,go:()=>{e.focusZone(A.id)}})):o.map(A=>({id:A.id,label:A.label||A.id,floorIndex:A.floorIndex,go:()=>{e.focusSection(A.id),Number.isFinite(A.floorIndex)&&_(A.floorIndex)}})),H=A=>{let D=l||A===null?R:R.filter(O=>O.floorIndex===void 0||O.floorIndex===A);if(C.replaceChildren(),!D.length){C.remove();return}if(C.isConnected||d.insertBefore(C,v.isConnected?v:null),!l&&D.length>Rd){let O=document.createElement("select");O.setAttribute("aria-label",b("picker.jumpToSection","Jump to section"));let N=document.createElement("option");N.value="",N.textContent=b("picker.jumpToSection","Jump to section"),O.appendChild(N);for(let se of D){let U=document.createElement("option");U.value=se.id,U.textContent=se.label,O.appendChild(U)}O.addEventListener("change",()=>{D.find(se=>se.id===O.value)?.go()}),C.appendChild(O);return}for(let O of D){let N=document.createElement("button");N.type="button",N.textContent=O.label,N.dataset.area=O.id,N.addEventListener("click",()=>{p=O.label,O.go(),S(!1)}),C.appendChild(N)}};P=H,H(null)}return d.appendChild(v),i.appendChild(d),d}var Hi=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",b("picker.savedSeatComparison","Saved seat comparison"));let r=document.createElement("button");r.type="button",r.className="main",r.addEventListener("click",()=>{this.host.savedSeatIds().length>1?this.host.openComparison():this.host.toast(b("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",b("picker.clearSavedSeatComparison","Clear saved seat comparison")),o.addEventListener("click",()=>this.host.clearComparison()),t.append(r,o),e.appendChild(t),this.chip=t}let n=this.host.savedSeatIds().length,s=t.querySelector(".main");s&&(s.textContent=n>1?Ln("picker.compareCount",{count:n}):b("picker.oneSeatSaved","1 seat saved"),s.setAttribute("aria-label",n>1?Ln("picker.openComparisonOfSeats",{count:n}):b("picker.oneSeatSavedChooseAnother","One seat saved; choose another to compare")))}remove(){this.chip?.remove(),this.chip=null}mainButton(){return this.chip?.querySelector(".main")??null}};function co(i){return!i?.querySelector('[data-ref="zfs"]')}var po="sl:sheet-hint";function ho(i){let e=i.boot;if(!e?.isConnected)return;if(i.reducedMotion){e.remove();return}e.classList.add("is-going"),setTimeout(()=>e.remove(),200);let t=document.createElement("div");t.className="sl-shells-in",t.setAttribute("aria-hidden","true"),i.map?.appendChild(t),setTimeout(()=>t.remove(),650),i.rail?.classList.add("is-in"),i.root?.classList.add("is-arriving"),setTimeout(()=>{i.rail?.classList.remove("is-in"),i.root?.classList.remove("is-arriving"),Id(i.root)},900)}function Id(i){if(!i||i.dataset.layout!=="narrow")return;try{if(window.sessionStorage.getItem(po))return;window.sessionStorage.setItem(po,"1")}catch{}let e=i.querySelector(".sl-sheet-grab");e&&(e.classList.add("sl-mo-hint"),e.addEventListener("animationend",()=>e.classList.remove("sl-mo-hint"),{once:!0}))}function uo(i,e){i.addEventListener("keydown",t=>{if(t.key==="Escape"){for(let n of e())if(n.open()){t.preventDefault(),t.stopPropagation(),n.close();return}}})}function Ri(i){let e=i.committedSelection(),t=i.controller.getGAAreas(),n=i.hold?.items??[],s=new Set(n.map(u=>u.label)),r=As(i,t,n),o=Re(i.gaQty,n),a=n.reduce((u,h)=>u+i.paidPrice(h.categoryKey,h.tierId,h.unitPrice,h.label)*(h.quantity??1),0),l=n.reduce((u,h)=>u+(h.quantity??1),0),c=e.filter(u=>!s.has(u.label)),d=c.reduce((u,h)=>u+i.paidPrice(h.categoryKey,h.tierId??null,h.price,h.label)*(h.quantity??1),0)+r+a,p=c.reduce((u,h)=>u+(h.quantity??1),0)+o+l;return{seats:e,freshSeats:c,gaAreas:t,heldItems:n,heldLabels:s,heldCount:l,total:d,count:p}}function Ii(i,e){let t=e.tiers?.length?e.tiers[0].price:e.price;return t===void 0||!e.key?t:i.paidPrice(e.key,e.tiers?.[0]?.id??null,t)}function Oi(i,e){let t=e.tiers?.length?e.tiers.map(n=>i.paidPrice(e.key,n.id??null,n.price)):e.price==null?[]:[i.paidPrice(e.key,null,e.price)];if(e.key)for(let n of i.pricesByChannel.values())for(let s of n)s.categoryKey===e.key&&t.push(s.price);return t.length?{min:Math.min(...t),max:Math.max(...t)}:void 0}var Ft="seatlayer_";function Od(){let i=globalThis;return i.document?.modelContext??i.navigator?.modelContext??null}function le(i,e){return e?{ok:!1,reason:i,message:e}:{ok:!1,reason:i}}function _d(i){return Array.isArray(i)?i.filter(e=>typeof e=="string"&&!!e):[]}function Dd(i,e){let t=i.event();if(!t)return le("not_loaded","The seat map has not finished loading.");let n=i.selectionLimits();return{ok:!0,event:t,selection:{max:n.max,...n.required!=null?{required:n.required}:{}},categories:i.categories(),zones:i.zones(),hasPremiumSeats:i.hasPremiumSeats(),holdsAllowed:e}}function mo(i,e){let t=s=>!!s&&s.toLowerCase()===e.toLowerCase(),n=i.find(s=>t(s.key??s.id))??i.find(s=>t(s.label));return n?.key??n?.id??null}function fo(i,e){let t=e.map(n=>i.describeSeat(n.id));return{seatIds:e.map(n=>n.id),labels:e.map(n=>n.label),section:t[0]?.section??"",row:t[0]?.row??"",seats:e.map((n,s)=>t[s]?.seat||n.label),category:t[0]?.category??e[0].categoryKey,unitPrice:e[0].price,total:e.reduce((n,s)=>n+s.price,0)}}function Bd(i,e,t){let n=new Map;for(let r of e){let o=n.get(r.rowKey);o?o.push(r):n.set(r.rowKey,[r])}let s=[];for(let r of n.values()){let o=[...r].sort((l,c)=>l.index-c.index),a=0;for(let l=1;l<=o.length;l++)if(l===o.length||o[l].index!==o[l-1].index+1||o[l].categoryKey!==o[l-1].categoryKey){for(let d=a;d+t<=l;d+=t)s.push(fo(i,o.slice(d,d+t)));a=l}}return s}function Nd(i,e,t){let n=new Map;for(let r of e){let o=n.get(r.sectionKey);o?o.push(r):n.set(r.sectionKey,[r])}let s=[];for(let r of n.values()){if(r.length<t)continue;let o=[...r].sort((a,l)=>a.price!==l.price?l.price-a.price:a.rowKey.localeCompare(l.rowKey)||a.index-l.index);s.push(fo(i,o.slice(0,t)))}return s}function Fd(i,e){if(!i.event())return le("not_loaded","The seat map has not finished loading.");let n=i.selectionLimits(),s=Math.floor(Number(e.count));if(!Number.isInteger(s)||s<1||s>n.max)return le("bad_count",`count must be a whole number between 1 and ${n.max}.`);let r=Number.isInteger(Number(e.limit))?Math.max(1,Math.min(20,Number(e.limit))):5,o=e.together===void 0?!0:!!e.together,a=typeof e.max_price=="number"&&Number.isFinite(e.max_price)?e.max_price:null,l=typeof e.category=="string"&&e.category?e.category:null,c=typeof e.zone=="string"&&e.zone?e.zone:null,d=l?mo(i.categories(),l):null;if(l&&!d)return le("no_match",`No ticket type called "${l}".`);let p=c?mo(i.zones(),c):null;if(c&&!p)return le("no_match",`No zone called "${c}".`);let u=i.seats().filter(y=>y.available);if(!u.length)return le("sold_out");let h=u.filter(y=>(!d||y.categoryKey===d)&&(!p||y.zoneId===p)&&(a==null||y.price<=a));if(!h.length)return le("no_match");let g=o?Bd(i,h,s):Nd(i,h,s);return g.length?(g.sort((y,k)=>k.unitPrice!==y.unitPrice?k.unitPrice-y.unitPrice:y.row.localeCompare(k.row)||y.labels[0].localeCompare(k.labels[0])),{ok:!0,groups:g.slice(0,r),searched:{count:s,filters:{...a!=null?{max_price:a}:{},...d?{category:d}:{},...p?{zone:p}:{},together:o}}}):le(o?"not_enough_together":"no_match")}function go(i){return{ok:!0,...i.selection()}}function Vd(i,e){let t=i.event();if(!t)return le("not_loaded","The seat map has not finished loading.");if(t.salesClosed)return le("event_closed","Sales are closed for this event.");let n=_d(e.seat_ids);return n.length?(i.clearSelection(),i.selectObjects(n),go(i)):le("nothing_requested","Pass one or more seat ids or labels in seat_ids.")}function $d(i,e){let t=async s=>{try{return await s()}catch(r){return le("error",r instanceof Error?r.message:String(r))}},n=[{name:`${Ft}describe_event`,title:"Describe this seated event",description:"Read the event, its ticket types with live availability and prices, its zones, and how many seats this buyer may select. Call this first.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:()=>t(()=>Dd(i,e))},{name:`${Ft}find_seats`,title:"Find available seats",description:"Search the seat map for groups of available seats. Read-only: it never selects, holds or reserves anything. Returns candidate groups with their seat ids, prices and location.",inputSchema:{type:"object",properties:{count:{type:"integer",minimum:1,description:"How many seats are needed."},max_price:{type:"number",description:"Highest acceptable price per seat."},category:{type:"string",description:"Ticket type key or label to restrict the search to."},zone:{type:"string",description:"Zone id or label to restrict the search to."},together:{type:"boolean",description:"Require the seats to be side by side in one row (default true)."},limit:{type:"integer",minimum:1,maximum:20,description:"How many candidate groups to return (default 5)."}},required:["count"],additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:s=>t(()=>Fd(i,s))},{name:`${Ft}select_seats`,title:"Select seats on the map",description:"Replace the current selection with the given seats, exactly as tapping them would. The buyer sees the seats light up and the basket update. No reservation is made.",inputSchema:{type:"object",properties:{seat_ids:{type:"array",items:{type:"string"},description:"Seat ids or labels, e.g. from find_seats."}},required:["seat_ids"],additionalProperties:!1},annotations:{readOnlyHint:!1,untrustedContentHint:!0},execute:s=>t(()=>Vd(i,s))},{name:`${Ft}get_selection`,title:"Read the current selection",description:"Read the seats currently selected in the basket, their total, any open reservation, and whether the selection satisfies this event\u2019s rules.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:()=>t(()=>go(i))}];return e&&n.push({name:`${Ft}hold_selection`,title:"Reserve the selected seats",description:"Reserve the currently selected seats for this buyer for a limited time, exactly as pressing the checkout button would. Confirm with the buyer before calling this.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!1,untrustedContentHint:!0},execute:()=>t(()=>i.hold())}),n}async function bo(i,e={}){let t=Od();if(!t||typeof t.registerTool!="function")return null;let n=new AbortController,s=$d(i,!!e.holds),r=[],o=e.exposedTo?.length?[...new Set(e.exposedTo)]:void 0;try{for(let a of s)await t.registerTool(a,{signal:n.signal,...o?{exposedTo:o}:{}}),r.push(a.name)}catch(a){console.warn("seatmap: WebMCP tools could not be registered",a)}return r.length?{names:r,dispose:()=>{if(n.abort(),typeof t.unregisterTool=="function")for(let a of r)try{t.unregisterTool(a)}catch{}}}:null}async function yo(i){let e=i.opts.webMcp;if(!e||i.destroyed)return;let t=typeof e=="object"&&!!e.holds,n=typeof e=="object"?e.exposedTo:void 0;try{i.webMcp=await bo(Hn(i,t),{holds:t,exposedTo:n}),i.destroyed&&Mn(i)}catch(s){console.warn("seatmap: WebMCP registration failed",s)}}function Mn(i){i.webMcp?.dispose(),i.webMcp=null}function Hn(i,e){let t=(n,s)=>{if(Number.isInteger(n.logicalSeatIndex))return n.logicalSeatIndex;let r=n.id.lastIndexOf(":"),o=r<0?NaN:Number(n.id.slice(r+1));return Number.isFinite(o)?o:s};return{event:()=>{let n=i.renderInfo;return n?{name:n.eventName??"",venue:n.venue??null,startsAt:n.startsAt??null,timezone:n.timezone??null,currency:i.currency,salesClosed:i.salesClosed}:null},selectionLimits:()=>({max:i.maxTickets,required:i.exactTickets}),categories:()=>{let n=i.controller.categoryAvailability();return(i.controller.doc?.categories??[]).filter(s=>!s.notForSale).map(s=>{let r=Oi(i,s),o=Ii(i,s);return{key:s.key,label:s.label??s.key,...o===void 0?{}:{price:o},...r&&r.min!==r.max?{priceRange:r}:{},available:n[s.key]??0}})},zones:()=>i.controller.getBestAvailableZones(),hasPremiumSeats:()=>i.controller.hasPremiumSeats(),seats:()=>{let n=i.controller.getActiveFloorId(),s=[];return i.allSeats().forEach((r,o)=>{if(r.floorId&&n&&r.floorId!==n)return;let a=i.controller.getStatus(r.id)??"free",l=i.controller.doc?.categories.find(d=>d.key===r.categoryKey),c=l?.tiers?.length?l.tiers[0].price:l?.price??0;s.push({id:r.id,label:r.label,rowKey:r.logicalRowId??r.rowId,sectionKey:r.sectionId??r.rowId,index:t(r,o),categoryKey:r.categoryKey,price:i.paidPrice(r.categoryKey,l?.tiers?.[0]?.id??null,c,r.label),...r.zoneId?{zoneId:r.zoneId}:{},available:a==="free"&&!l?.notForSale})}),s},describeSeat:n=>{let s=i.controller.seatDetails(n);return s?{section:s.sectionLabel??"",row:q(s)??"",seat:s.seatNumber??s.label,category:s.categoryLabel??s.categoryKey}:null},selection:()=>{let{freshSeats:n,total:s,count:r}=Ri(i);return{seats:n.map(o=>({id:o.id,label:o.label,section:o.sectionLabel??"",row:q(o)??"",seat:o.seatNumber??o.label,category:o.categoryKey,price:i.paidPrice(o.categoryKey,o.tierId??null,o.price,o.label)})),count:r,total:s,currency:i.currency,hold:i.hold?{id:i.hold.holdId,expiresAt:i.hold.expiresAt}:null,validity:i.getSelectionValidity()}},clearSelection:()=>i.clearSelection(),selectObjects:n=>{i.selectObjects(n)},hold:()=>e?zd(i):Promise.resolve({ok:!1,reason:"not_allowed"})}}async function zd(i){if(i.salesClosed)return{ok:!1,reason:"event_closed"};if(!i.totalTicketCount())return{ok:!1,reason:"nothing_selected"};let e=i.controller.getSelectionValidity(i.totalTicketCount());return e&&!e.isValid?{ok:!1,reason:"invalid_selection"}:(await i.handleCta(),i.hold?{ok:!0,hold:{id:i.hold.holdId,expiresAt:i.hold.expiresAt}}:{ok:!1,reason:"hold_failed"})}function Rn(i){return{renderingTimeMillis:i.ms,performanceProfile:i.performanceProfile,seatCount:i.seatCount,objectCount:i.objectCount,sectionCount:i.sectionCount,view:i.view,eventKey:i.eventKey,chartName:i.chartName,floorCount:i.floorCount,transport:i.transport,load:i.load,metricScope:i.metricScope,operationalTelemetryReporter:"sdk"}}function vo(i,e){Te({apiBase:i.apiBase,event:i.eventKey,scope:i.metricScope,surface:i.surface,outcome:"success",ms:i.ms,performanceProfile:i.performanceProfile,chartDelivery:i.chartDelivery,seats:i.seatCount,floors:i.floorCount,view:i.view,load:i.load,transport:i.transport}),e("chart_rendered",Rn(i))}import{seatConfidenceDisclosure as jd}from"@seatlayer/core/core/seatConfidence";function Q(i){return String(i??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function wo(i){let e=jd(i.seat.confidenceEvidence),t=i.seat.confidenceEvidence,n=e.limitations.length?`<h4>Known limits</h4><ul>${e.limitations.map(c=>`<li>${Q(c)}</li>`).join("")}</ul>`:"",s=e.modeledTarget?`<div><dt>Modeled target</dt><dd>${Q(e.modeledTarget)}</dd></div>`:"",r=t?`<div><dt>Evidence ID</dt><dd>${Q(t.evidenceId)}</dd></div><div><dt>Model version</dt><dd>${Q(t.modelVersion)}</dd></div><div><dt>Event configuration</dt><dd>${Q(t.eventConfigurationId??"Not configuration-specific")}</dd></div><div><dt>Approval</dt><dd>${Q(t.approvedByRole??"No external approval supplied")}</dd></div>`+(t.validUntil?`<div><dt>Valid until</dt><dd>${Q(t.validUntil.slice(0,10))}</dd></div>`:""):"<div><dt>Evidence ID</dt><dd>None supplied</dd></div>",o=Ee(i.seat.commercial)||i.restrictionFallback,a=`<div><dt>View restriction</dt><dd>${Q(o)}</dd></div>`+(i.seat.commercial?.note?`<div><dt>Organizer note</dt><dd>${Q(i.seat.commercial.note)}</dd></div>`:""),l=i.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">${Q(i.title)}</strong></div><button type="button" data-close aria-label="Close seat confidence passport">\xD7</button></header><div class="sl-view3d-passport-summary"><strong>${Q(e.headline)}</strong><span>${Q(e.coverage)} \xB7 ${Q(e.freshness)}</span></div><dl><div><dt>Model status</dt><dd>${Q(e.model)}</dd></div><div><dt>Reality evidence</dt><dd>${Q(e.reality)}</dd></div><div><dt>Source</dt><dd>${Q(e.provenance)}</dd></div>`+a+s+r+`</dl>${n}<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 xo(i){return i?i.closest("[data-report]")?"report":i.closest("[data-close]")||i.classList.contains("sl-view3d-passport-scrim")?"close":null:null}function _i(i,e,t){let n=i?.querySelector("[data-report]"),s=i?.querySelector("[data-report-status]");n&&(n.disabled=e!=="failed",n.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 In(i,e,t=null){let n=i.view3dEl;if(!n)return;Vt(i,!1);let s=e.confidenceEvidence,r=i.controller.seatDetails(e.id),o=document.createElement("div");o.className="sl-view3d-passport-shell",o.innerHTML=wo({seat:e,title:r?.displayLabel??e.displayLabel??e.label,restrictionFallback:i.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),canReport:typeof i.api.reportViewEvidence=="function"});let a=[...new Set([...n.children,...[...i.els.map.children].filter(u=>u!==n)])].filter(u=>u instanceof HTMLElement),l=a.map(u=>({element:u,inert:u.inert,ariaHidden:u.getAttribute("aria-hidden")}));for(let u of a)u.inert=!0,u.setAttribute("aria-hidden","true");n.appendChild(o),n.classList.add("has-passport"),i.view3dPassportEl=o;let c=o.querySelector(".sl-view3d-passport"),d=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],p=u=>{if(u.key==="Escape"){u.preventDefault(),u.stopPropagation(),u.stopImmediatePropagation(),Vt(i);return}if(u.key!=="Tab")return;let h=d();if(!h.length)return;let g=h[0],y=h[h.length-1];u.shiftKey&&document.activeElement===g?(u.preventDefault(),y.focus()):!u.shiftKey&&document.activeElement===y&&(u.preventDefault(),g.focus())};window.addEventListener("keydown",p,!0),i.view3dPassportCleanup=()=>{window.removeEventListener("keydown",p,!0);for(let y of l)y.element.inert=y.inert,y.ariaHidden===null?y.element.removeAttribute("aria-hidden"):y.element.setAttribute("aria-hidden",y.ariaHidden);let u=t?.isConnected?t:i.confirmEl?.querySelector(".sl-confirm-confidence")??i.view3dCompareEl?.querySelector("[data-passport-seat]")??null,h=u?.closest(".sl-confirm,.sl-view3d-compare");h?.isConnected&&(h.inert=!1,h.removeAttribute("aria-hidden")),o.remove(),n.classList.remove("has-passport"),i.view3dPassportEl===o&&(i.view3dPassportEl=null);let g=u??i.view3dCompareEl?.querySelector("[data-passport-seat]")??i.confirmEl?.querySelector(".sl-confirm-confidence")??i.view3dCompareChip.mainButton();(t?.isConnected?t:g)?.focus()},o.addEventListener("click",u=>{let h=xo(u.target instanceof HTMLElement?u.target:null);h==="close"&&Vt(i),h==="report"&&Gd(i,e)}),requestAnimationFrame(()=>d()[0]?.focus()),i.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 function Gd(i,e){if(i.api.reportViewEvidence){_i(i.view3dPassportEl,"sending");try{let t=await i.api.reportViewEvidence(i.opts.event,{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId});i.emit3dAnalytics("3d_confidence_view_reported",{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId??null}),_i(i.view3dPassportEl,"received",t.report.id)}catch{_i(i.view3dPassportEl,"failed")}}}function Vt(i,e=!0){let t=i.view3dPassportCleanup;if(i.view3dPassportCleanup=null,!t){i.view3dPassportEl?.remove(),i.view3dPassportEl=null,i.view3dEl?.classList.remove("has-passport");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||i.root?.focus({preventScroll:!0})}function So(i){let e=i.view3dEl;if(!e||i.view3dCompareSeatIds.length<2)return;Ge(i,!1);let t=i.view3dCompareSeatIds.map(h=>i.view3dComparisonSnapshot(h)).filter(h=>!!h);if(t.length<2){i.clearView3dComparison();return}let n=h=>E(h),s=t.some(h=>!!h.price),r=document.createElement("div");r.className="sl-view3d-compare-shell";let o=t.map((h,g)=>`<article><span>Seat ${g===0?"A":"B"}</span><strong>${n(h.label)}</strong><small>Section ${n(h.section)} \xB7 Row ${n(h.row)}</small><dl>`+(s?`<div><dt>Current price</dt><dd>${n(h.price)}</dd></div>`:"")+`<div><dt>Ticket type</dt><dd>${n(h.category)}</dd></div><div><dt>Availability</dt><dd>${n(h.availability)}</dd></div><div><dt>View source</dt><dd>${n(h.viewSource)}</dd></div><div><dt>View restriction</dt><dd>${n(h.limited)}</dd></div><div><dt>Seat confidence</dt><dd>${n(h.confidence.headline)}</dd></div><div><dt>Reality check</dt><dd>${n(h.confidence.reality)}</dd></div><div><dt>Accessibility</dt><dd>${n(h.accessibility)}</dd></div></dl><div class="sl-view3d-compare-actions"><button type="button" data-passport-seat="${n(h.seat.id)}">Passport</button><button type="button" data-view-seat="${n(h.seat.id)}">View seat</button><button type="button" class="select" data-select-seat="${n(h.seat.id)}"${h.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">${s?"Current price and availability":"Availability"} comes from this picker. Modeled views are chart-derived unless organizer media is labeled.</p><div class="sl-view3d-compare-grid">${o}</div></section>`;let a=document.activeElement instanceof HTMLElement?document.activeElement:null,l=[...e.children].filter(h=>h instanceof HTMLElement),c=l.map(h=>({element:h,inert:h.inert,ariaHidden:h.getAttribute("aria-hidden")}));for(let h of l)h.inert=!0,h.setAttribute("aria-hidden","true");e.appendChild(r),e.classList.add("has-comparison"),i.view3dCompareEl=r;let d=r.querySelector(".sl-view3d-compare"),p=()=>[...d.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],u=h=>{if(h.key==="Escape"){h.preventDefault(),Ge(i);return}if(h.key!=="Tab")return;let g=p();if(!g.length)return;let y=g[0],k=g[g.length-1];h.shiftKey&&document.activeElement===y?(h.preventDefault(),k.focus()):!h.shiftKey&&document.activeElement===k&&(h.preventDefault(),y.focus())};window.addEventListener("keydown",u),i.view3dCompareCleanup=()=>{window.removeEventListener("keydown",u);for(let h of c)h.element.inert=h.inert,h.ariaHidden===null?h.element.removeAttribute("aria-hidden"):h.element.setAttribute("aria-hidden",h.ariaHidden);r.remove(),e.classList.remove("has-comparison"),i.view3dCompareEl===r&&(i.view3dCompareEl=null),a?.isConnected?a.focus():i.view3dCompareChip.mainButton()?.focus()},r.querySelector("[data-close]")?.addEventListener("click",()=>Ge(i)),r.querySelectorAll("[data-passport-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.passportSeat,y=g?i.allSeats().find(k=>k.id===g):void 0;y&&In(i,y,h)})),r.querySelectorAll("[data-view-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.viewSeat;Ge(i,!1),g&&i.view3dHandle?.flyToSeat(g)})),r.querySelectorAll("[data-select-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.selectSeat;g&&Ud(i,g)})),requestAnimationFrame(()=>p()[0]?.focus()),i.emit3dAnalytics("3d_comparison_opened",{seatIds:i.view3dCompareSeatIds.slice()})}function Ge(i,e=!0){let t=i.view3dCompareCleanup;if(i.view3dCompareCleanup=null,!t){i.view3dCompareEl?.remove(),i.view3dCompareEl=null,i.view3dEl?.classList.remove("has-comparison");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||i.root?.focus({preventScroll:!0})}function Ud(i,e){if(i.salesClosed){i.toast(i.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let t=i.allSeats().find(s=>s.id===e);if(!t)return;if(Ge(i,!1),!i.controller.select([e]).length){i.syncSelectionTo3d(),i.toast(i.tf("picker.seatNoLongerAvailable","That seat is no longer available."),"warning");return}i.syncSelectionTo3d(),i.showConfirm(t),i.emit3dAnalytics("3d_comparison_selected",{seatId:e})}import{t as Zd}from"@seatlayer/core";import{seatViewDisclosure as Jd}from"@seatlayer/core/view3d/crossfade/panorama";import{t as ko}from"@seatlayer/core";var qd=900,Kd=450;function Wd(i){switch(i){case"seat":return b("picker.stopYourSeat","Your seat");case"row":return b("picker.stopYourRow","Your row");case"section":return b("picker.stopYourSection","Your section");default:return b("picker.stopWholeVenue","Whole venue")}}function To(i,e){let t=document.createElement("button");t.type="button",t.className="sl-view3d-recentre sl-mo-rotate-in",t.textContent="\u25CE";let n=b("picker.recentreOnStage","Recentre on the stage");t.setAttribute("aria-label",n),t.title=n,t.addEventListener("click",()=>{e.handle()?.recentreSeatView()});let s=document.createElement("div");s.className="sl-view3d-stop",s.setAttribute("role","status"),s.setAttribute("aria-live","polite"),i.append(t,s);let r=null,o=null;return{onStopChange(a){if(r&&(clearTimeout(r),r=null),o&&(clearTimeout(o),o=null),!a){s.classList.remove("is-shown"),s.textContent="",o=setTimeout(()=>{o=null,i.classList.remove("is-seat-view")},Kd);return}i.classList.add("is-seat-view"),s.textContent=Wd(a),s.classList.add("is-shown"),r=setTimeout(()=>{r=null,s.classList.remove("is-shown")},qd)},dispose(){r&&(clearTimeout(r),r=null),o&&(clearTimeout(o),o=null),t.remove(),s.remove(),i.classList.remove("is-seat-view")}}}var Yd=44,Xd=92;function Eo(i,e,t,n={}){let s=i?.sectionLabel,r=q(i),o=Qd(i,e),a=[s,r?ko("picker.rowLabel",{label:r}):null,o?ko("picker.seatLabel",{label:o}):null].filter(Boolean).join(" \xB7 "),l=n.maxChars??(n.narrow?Yd:Xd);for(let c of[t,n.shortTail??t,null]){let d=[a,c].filter(Boolean).join(" \xB7 ");if(d.length<=l||c==null)return d}return a}function Qd(i,e){if(i?.seatNumber)return i.seatNumber;let t=i?.displayLabel??e,n=s=>{!s||!t.startsWith(s)||t.length<=s.length||(t=t.slice(s.length).replace(/^[\s·\-\/_]+/,""))};return n(i?.sectionLabel),n(q(i)),t}import{seatConfidenceDisclosure as ep}from"@seatlayer/core/core/seatConfidence";function Co(i,e){i.querySelector(".sl-view3d-unavailable")?.remove();let{tf:t}=e,n=e.status==="held"?{title:t("picker.temporarilyHeld","Temporarily held"),message:t("picker.heldSeatExplanation","Another buyer is holding this seat. It may become available again.")}:e.status==="booked"?{title:t("picker.sold","Sold"),message:t("picker.soldSeatExplanation","This seat has already been booked.")}:{title:t("picker.notForSale","Not for sale"),message:t("picker.notForSaleExplanation","This seat is not included in the current sale.")},s=document.createElement("div");s.className="sl-view3d-unavailable",s.dataset.state=e.visualState,s.setAttribute("role","status"),s.setAttribute("aria-live","polite");let r=document.createElement("span");r.className="sl-view3d-unavailable-eyebrow",r.textContent=e.location;let o=document.createElement("strong");o.textContent=n.title;let a=document.createElement("div");a.className="sl-view3d-unavailable-copy",a.append(r,o);let l=document.createElement("button");l.type="button",l.setAttribute("aria-label",t("picker.closeSeatStatus","Close seat status")),l.textContent="\xD7";let c=document.createElement("p");c.textContent=n.message,s.append(a,l,c),l.addEventListener("click",()=>On(i)),i.appendChild(s),ri(s,e.anchor??null)}function On(i){let e=i?.querySelector(".sl-view3d-unavailable:not([data-leaving])");e&&(e.dataset.leaving="true",at(e))}function Ao(i){return i.buyerView}function Po(i,e,t){if(e==="map"){i.exit3d();return}let n=t?.flyToSeatId;if(i.buyerView==="venue3d"){n?(i.opts.onBuyerViewChange?.({view:"venue3d",seatId:n}),i.view3dHandle?.flyToSeat(n)):t?.resetView&&i.view3dHandle?.focusOverview();return}i.enter3d(n)}function Lo(i,e){switch(i.controller.getStatus(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:break}return i.priceBandKeys!=null&&!i.priceBandKeys.has(e.categoryKey)||i.controller.accessibilityFilterDims?.(e)||i.limitedViewFilter&&(e.commercial?.restrictedView||e.commercial?.obstructedView)?"dimmed":"available"}function Mo(i){if(!i.view3dHandle)return;let e=i.allSeats().map(t=>({seatId:t.id,state:i.seatState3dFor(t)}));i.view3dHandle.setAvailability(e)}function Ho(i){i.view3dHandle&&i.view3dHandle.setSelection(i.controller.getSelection().map(e=>e.id))}async function Ro(i,e){let t=i.allSeats().find(n=>n.id===e);if(!t)return null;if(t.viewUrl)try{let n=t.viewMeta?.previewUrl,s=!!n&&n!==t.viewUrl,r=s?await i.buyerAssetUrls.resolve(n):null,o=s?t.viewUrl:await i.buyerAssetUrls.resolve(t.viewUrl);return!o||s&&!r?null:{url:o,...r?{previewUrl:r}:{},...s?{resolveUrl:a=>i.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(n){return i.opts.onError?.(n),null}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:i.tf("picker.chartDerivedModel","Chart-derived model")}}function Io(i,e){if(i.salesClosed){i.toast(i.tf("picker.salesClosedToast","Sales are closed for this event."),"warning"),i.syncSelectionTo3d();return}let t=i.allSeats().find(a=>a.id===e);if(!t)return;let n=i.controller.tableSelection(e);if(i.committedSelection().some(a=>n?a.label===n.label:a.id===e)){i.controller.deselect([e]),i.dismissConfirm(),i.syncSelectionTo3d();return}let r=i.controller.getStatus(t.id);if(r==="held"||r==="booked"||r==="not_for_sale"){i.showUnavailable3dSeat(t,i.seatState3dFor(t),r),i.syncSelectionTo3d();return}if(i.dismissUnavailable3dSeat(),!i.controller.select([e]).length){i.syncSelectionTo3d(),i.dismissConfirm();return}if(i.opts.onBuyerViewChange?.({view:"venue3d",seatId:e}),i.flashPickedSeat(e),n){i.showTableDialog(n,!1),i.syncSelectionTo3d();return}i.opts.confirmSelection!==!1?i.showConfirm(t):i.syncTray(),i.syncSelectionTo3d()}function Oo(i,e){let t=i.allSeats().find(n=>n.id===e);return Eo(i.controller.seatDetails(e),t?.displayLabel??t?.label??e,i.tf("picker.viewFromYourSeat","view from your seat"),{narrow:i.root?.dataset.layout==="narrow",shortTail:i.tf("picker.fromYourSeat","from your seat")})}function _o(i,e,t,n){let s=i.view3dEl;if(!s)return;let r=i.controller.seatDetails(e.id),o=r?.displayLabel??e.displayLabel??e.label,a=q(r);Co(s,{status:n,visualState:t,location:[r?.sectionLabel,a?Zd("picker.rowLabel",{label:a}):null,o].filter(Boolean).join(" \xB7 ")||o,tf:(l,c)=>i.tf(l,c)}),i.announceSeat(e)}function Do(i){On(i.view3dEl)}function Bo(i,e){if(i.buyerView!=="venue3d")return;let t=i.view3dCompareSeatIds;t.includes(e.id)||(i.view3dCompareSeatIds=t.length===0?[e.id]:[t[0],e.id]),i.confirmSeat?.id===e.id&&(i.controller.deselect([e.id]),i.dismissConfirm(),i.syncSelectionTo3d(),i.syncTray()),i.view3dCompareChip.sync(),i.emit3dAnalytics("3d_comparison_saved",{seatId:e.id,count:i.view3dCompareSeatIds.length}),i.view3dCompareSeatIds.length>1?i.openView3dComparison():i.toast(i.tf("picker.chooseAnotherToCompare","Seat saved. Choose another seat to compare."),"success")}function No(i){i.closeView3dComparison(!1),i.view3dCompareSeatIds=[],i.view3dCompareChip.remove(),i.emit3dAnalytics("3d_comparison_cleared")}function Fo(i,e){let t=i.allSeats().find(h=>h.id===e);if(!t)return null;let n=i.controller.seatDetails(t.id),s=i.controller.doc?.categories.find(h=>h.key===t.categoryKey),r=n?.price??(s?.tiers?.length?s.tiers[0].price:s?.price),o=r!=null?i.paidPrice(t.categoryKey,n?.tierId??s?.tiers?.[0]?.id??null,r,t.label):void 0,a=i.controller.getStatus(t.id),l=a==="held"?i.tf("picker.temporarilyHeld","Temporarily held"):a==="booked"?i.tf("picker.sold","Sold"):a==="not_for_sale"?i.tf("picker.notForSale","Not for sale"):i.tf("picker.available","Available"),c=t.viewUrl?Jd({url:t.viewUrl,...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}):i.tf("picker.chartDerivedSeatEye","Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed"),d=Ee(t.commercial)||i.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),p=n?.wheelchairSpaceType?`${ft(n.wheelchairSpaceType)} \xB7 metadata, not access certification`:i.tf("picker.noAccessibilityMetadata","No accessibility metadata supplied"),u=ep(t.confidenceEvidence);return{seat:t,label:n?.displayLabel??t.displayLabel??t.label,section:n?.sectionLabel??t.sectionId??"\u2014",row:q(n)??n?.rowLabel??"\u2014",category:n?.categoryLabel??s?.label??t.categoryKey,price:i.suppressPricing||o==null?"":i.money(o),availability:l,selectable:a==null||a==="free",viewSource:c,limited:d,accessibility:p,confidence:u}}async function Vo(i,e){if(i.view3dEl||!i.canOffer3d()||!i.els.map)return;let t=i.controller.doc;if(!t)return;i.buyerView="venue3d",i.view3dTargetSeatId=null,i.opts.onBuyerViewChange?.({view:"venue3d",...e?{seatId:e}:{}}),i.root?.setAttribute("data-view3d","on"),i.dismissConfirm(),i.syncProjection(),i.syncTray();let n=document.createElement("div");n.className="sl-view3d sl-mo-zoom",n.setAttribute("role","group"),n.setAttribute("aria-label",i.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>${i.tf("picker.backToMap","Back to map")}</span>`;let r=s.querySelector("span"),o=c=>{i.view3dTargetSeatId=c;let d=!!c;n.classList.toggle("is-seat-focused",d),i.root&&(i.root.dataset.view3dSeat=d?"on":"off");let p=d?i.tf("picker.backToVenue","Back to venue"):i.tf("picker.backToMap","Back to map");r&&(r.textContent=p),s.setAttribute("aria-label",p)};if(s.addEventListener("click",()=>{if(i.view3dTargetSeatId&&i.view3dHandle){i.view3dHandle.focusOverview();return}i.exit3d()}),i.regions["top-left"]?.prepend(s),i.view3dBack=s,i.publish3dTopInset(),co(i.root)){let c=document.createElement("button");c.type="button",c.className="sl-view3d-fs",c.textContent="\u26F6",c.setAttribute("aria-label",i.tf("picker.fullScreen","Full screen")),c.setAttribute("aria-pressed",String(!!document.fullscreenElement||i.fsFallback||i.framedFs)),c.addEventListener("click",()=>i.toggleFullscreen()),n.appendChild(c)}let a=document.createElement("div");a.className="sl-view3d-loading",a.setAttribute("role","status"),a.setAttribute("aria-live","polite"),a.textContent=i.tf("picker.loading3d","Building the 3D venue\u2026"),n.appendChild(a),i.els.map.appendChild(n),i.view3dEl=n,i.view3dCompareChip.sync(),requestAnimationFrame(()=>{n.style.opacity="1"});let l=++i.view3dGen;try{let c=i.allSeats(),[d,p]=await Promise.all([It(),i.controller.loadEventConfiguration()]),u=p?await ui(p,v=>i.buyerAssetUrls.resolve(v)):null,h=t.theme?.venue3d?.shellAssetUrl,g=await mi(h,v=>i.buyerAssetUrls.resolve(v));if(l!==i.view3dGen||i.buyerView!=="venue3d"||i.view3dEl!==n)return;let y={doc:t,seats:c,...u?{eventConfigurationId:u.id,eventConfiguration:u}:{},...g?{registeredShellGlb:g}:{}};a.textContent=i.tf("picker.building3d","Building venue geometry\u2026");let k=await d.prepareVenue3D(y);if(l!==i.view3dGen||i.buyerView!=="venue3d"||i.view3dEl!==n)return;let S=d.mountVenue3D(n,{...y,prepared:k},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:Ve(),seatViewActionLabel:v=>i.allSeats().find(f=>f.id===v)?.viewUrl?i.tf("picker.openAuthored360","Open venue 360\xB0"):i.tf("picker.lookAroundLive3d","Look around in live 3D"),seatViewCaption:v=>i.seatViewCaption(v),onSeatViewStopChange:v=>i.view3dSeatViewChrome?.onStopChange(v),onSeatPick:v=>i.onView3dSeatPick(v),onSeatInspect:v=>i.onView3dSeatPick(v),onSectionFocusChange:v=>{let f=n.querySelector('select[data-locator="section"]'),P=v??"";!f||f.value===P||(f.value=P,f.dispatchEvent(new Event("change")))},onViewTargetChange:v=>{n.querySelector(".sl-view3d-nav")?.classList.toggle("is-seat-focused",!!v),o(v),i.opts.onBuyerViewChange?.({view:"venue3d",...v?{seatId:v}:{}})},...i.seatViewEnabled()?{getSeatView:v=>new Promise((f,P)=>{let _=()=>{i.seatViewFor3d(v).then(R=>{R?f(R):P(new Error("seat_view_unavailable"))})},C=globalThis.requestIdleCallback;typeof C=="function"?C(_,{timeout:1500}):setTimeout(_,50)})}:{},onAnalytics:(v,f)=>i.emit3dAnalytics(v,f)});i.view3dHandle=S,i.view3dSeatViewChrome=To(n,{handle:()=>i.view3dHandle}),requestAnimationFrame(()=>a.remove()),i.pushAvailabilityTo3d(),i.syncSelectionTo3d(),i.view3dNav=lo(i.regions["bottom-left"]??n,S),e&&S.flyToSeat(e)}catch(c){if(l!==i.view3dGen||i.buyerView!=="venue3d"||i.view3dEl!==n)return;i.opts.onError?.(c),i.toast(i.tf("picker.unavailable3d","3D could not start. The seat map is still available."),"warning"),i.exit3d()}}function $o(i){let e=i.regions["top-left"];if(!i.root||!e)return;let t=()=>{!i.root||i.root.dataset.view3d!=="on"||i.root.style.setProperty("--sl-3d-top-inset",`${Math.max(44,Math.ceil(e.offsetHeight))}px`)};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}function zo(i){if(i.buyerView!=="venue3d"&&!i.view3dEl)return;i.view3dGen++,i.buyerView="map",i.view3dTargetSeatId=null,i.opts.onBuyerViewChange?.({view:"map"}),i.root?.removeAttribute("data-view3d"),i.closeSeatConfidencePassport(!1),i.closeView3dComparison(!1),i.view3dCompareChip.remove(),i.view3dSeatViewChrome?.dispose(),i.view3dSeatViewChrome=null,i.view3dBack?.remove(),i.view3dBack=null,i.view3dNav?.remove(),i.view3dNav=null,i.root?.removeAttribute("data-view3d-seat"),i.root?.style.removeProperty("--sl-3d-top-inset");try{i.view3dHandle?.dispose()}catch{}i.view3dHandle=null;let e=i.view3dEl;i.view3dEl=null,e&&(e.style.opacity="0",setTimeout(()=>e.remove(),320)),i.syncProjection(),i.syncTray();let t=i.view3dReturnSeat;i.view3dReturnSeat=null,t&&i.committedSelection().some(n=>n.id===t.id)&&i.opts.confirmSelection!==!1&&i.showConfirm(t)}import{t as np}from"@seatlayer/core";import{t as Di}from"@seatlayer/core";function jo(i){return Array.isArray(i)?i.reduce((e,t)=>t.type==="minimumSelectedPlaces"?Math.max(e,t.minimum):e,0):0}function Bi(i,e,t=!1){let n=i.violations[0];return n==="numberOfPlacesToSelect"?i.remaining>0?Di("picker.selectExactMore",{count:i.remaining}):Di("picker.selectExactCount",{count:i.required}):n==="minimumSelectedPlaces"?Di("picker.selectMinimumMore",{count:i.remaining}):t?e("picker.adjustSeatSelection","Adjust seat selection"):n==="consecutiveSeats"?e("picker.selectSeatsTogether","Choose seats together in the same row and ticket category."):Di("picker.orphanHint")}import{t as Ni,tCount as Go}from"@seatlayer/core";function $t(i){let e=Math.max(0,i),t=Math.floor(e/6e4),n=String(Math.floor(e%6e4/1e3)).padStart(2,"0");return`${t}:${n}`}function Uo(i){let e=i.performanceLabel?`<div class="sl-chip-when">${I(i.performanceLabel)}</div>`:"",t=i.performanceDates?.labels.length?`<div class="sl-chip-dates"><span class="sl-chip-dates-summary">${I(i.performanceDates.summary)}</span><span class="sl-chip-date-list">${i.performanceDates.labels.map(n=>`<span class="sl-chip-date">${I(n)}</span>`).join("")}</span></div>`:"";return e+ip(i)+t}function ip(i){let{d:e,area:t,label:n,objectType:s,quantity:r=1,identity:o}=i,a=f=>String(f??"\u2014").replace(/[&<>"]/g,P=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[P]),l=s==="ga"?"ga":e?.objectType??s,c=o?.displayType?.trim()||e?.displayType?.trim()||t?.displayType?.trim()||(l==="table"?b("picker.table","Table"):l==="booth"?b("picker.booth","Booth"):l==="ga"?b("picker.generalAdmission","General admission"):b("picker.row","Row")),d=o?.rowLabel??o?.displayLabel??e?.rowLabel??e?.displayLabel??t?.label??n,p=i.categoryLabel?.trim()??"",u="",h=[];l==="table"&&o?.bookingMode?(u=`${c} ${d}`,h.push([b("picker.guests","Guests"),String(r)])):l==="ga"?(u=String(t?.displayLabel??d),r>1&&h.push([b("picker.tickets","Tickets"),String(r)])):l==="booth"?(u=e?.sectionLabel??`${c} ${d}`,e?.sectionLabel&&h.push([c,String(d)])):!e?.sectionLabel&&!e?.rowLabel&&!e?.seatNumber?u=String(d):(u=e.sectionLabel??"",e.rowLabel&&h.push([c,String(q(e)??e.rowLabel)]),e.seatNumber&&h.push([b("picker.seat","Seat"),String(e.seatNumber)]));let g=!u&&!!p,y=u||p||String(d),k=!!p&&!g&&p!==y,S=h.map(([f,P])=>`<span class="sl-chip-seg" data-fit-seg><span class="w">${a(f)}</span> <b>${a(P)}</b></span>`);k&&S.push(`<span class="sl-chip-seg" data-fit-seg data-fit-type><span class="w">${a(p)}</span></span>`);let v=[y,...h.map(([f,P])=>`${f} ${P}`),k?p:""].filter(Boolean).join(" \xB7 ");return`<div class="sl-chip-id"><span class="sl-sr">${a(v)}</span><span class="sl-chip-name" aria-hidden="true">${a(y)}</span>`+(S.length?`<span class="sl-chip-pos" aria-hidden="true">${S.join("<i>\xB7</i>")}</span>`:"")+"</div>"}function _n(i,e){let t=I(i),n=e?I(e):"";return'<div class="sl-chip-rail">'+(e?`<button type="button" class="view" data-view-label="${n}" aria-label="${I(Ni("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>`:"")+`<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></div>`}function qo({count:i,total:e,pendingCount:t,ctaPhase:n,hasHold:s,salesClosed:r,suppressPricing:o=!1,fromPrice:a,offerFind:l=!1,holdTime:c,money:d}){if(i&&n==="holding")return`<span>${b("picker.securingSeats","Securing your seats\u2026")}</span>`;if(i&&n==="checkout")return o?`<span>${b("picker.seatsSecuredOpeningCheckout","Seats secured. Opening checkout\u2026")}</span>`:`<span>${Ni("picker.peekSecured",{count:i,total:d(e)})}</span>`;if(i)return`<span class="sl-peek-sum">${Go("picker.ticketsCount",i)}</span><button type="button" class="go sl-sheet-go" data-act="checkout">${s&&t?b("picker.secureMore","Secure more"):b("picker.continue","Continue")}`+(o?"":`<span class="sl-peek-total">${d(e)}</span>`)+(s&&c?`<span class="sl-peek-time" aria-hidden="true">${c}</span>`:"")+"</button>";if(r)return`<span>${b("picker.salesClosedPill","Sales are closed")}</span>`;let p=!o&&a!=null?d(a):null;return`<span class="sl-peek-sum">${p!=null?Ni("picker.peekFromPrice",{price:p}).replace(p,`<b class="sl-peek-price">${p}</b>`):b("picker.pickYourSeats","Pick your seats")}</span>`+(l?`<button type="button" class="go sl-sheet-go sl-sheet-find" data-act="find"><span class="sl-peek-spark" aria-hidden="true">\u2726</span>${b("picker.findSeats","Find seats")}</button>`:"")}function Ko(i){return i.confirming?`<div class="sl-ba" role="alert"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${b("picker.replaceCurrentChoices","Replace your current choices?")}</div><div class="sl-ba-replace"><b>${Ni("picker.willFindSeatsTogether",{count:i.quantity})}</b><span>${b("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>${b("picker.keepMine","Keep mine")}</button><button type="button" class="replace" data-ba-replace>${b("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>${b("picker.findClosestSeatsTogether","Find the closest seats together")}</div><div class="sl-ba-copy">${b("picker.closestGroupChosenInstantly","Closest available group, chosen instantly.")}</div>`+(i.offerPremium?`<button type="button" class="sl-ba-premium${i.premium?" on":""}" data-ba-premium aria-pressed="${i.premium?"true":"false"}"><span class="star" aria-hidden="true">\u2605</span>${b("picker.bestSeatsPremium","Best seats")}</button>`:"")+`<div class="sl-ba-qty"><button type="button" data-ba="-1" aria-label="${b("picker.fewerSeats","Fewer seats")}">\u2212</button><span>${i.quantity}</span><button type="button" data-ba="1" aria-label="${b("picker.moreSeats","More seats")}">+</button></div>`+(i.categories.length>1?`<select class="sl-ba-cat" aria-label="${I(b("picker.preferredTicketType","Preferred ticket type"))}" data-ba-cat><option value="">${I(b("picker.anyTicketType","Any ticket type"))}</option>`+i.categories.map(e=>`<option value="${I(e.key)}"${i.selectedCategory===e.key?" selected":""}>${I(e.label)}</option>`).join("")+"</select>":'<span class="sl-ba-cat" aria-hidden="true"></span>')+(i.zones.length?`<select class="sl-ba-zone" aria-label="${b("picker.preferredVenueZone","Preferred venue zone")}" data-ba-zone><option value="">${b("picker.anyVenueZone","Any venue zone")}</option>`+i.zones.map(e=>`<option value="${I(e.id)}"${i.selectedZone===e.id?" selected":""}>${I(e.label)}</option>`).join("")+"</select>":"")+`<button type="button" class="sl-ba-go${i.busy?" sl-busy":""}"${i.busy?" disabled":""}>`+(i.busy?`<span class="sl-ba-spin" aria-hidden="true"></span>${b("picker.findingBestSeats","Finding the best seats\u2026")}`:Go("picker.findBestSeatsCount",i.quantity))+"</button>"+(i.reopened?`<button type="button" class="sl-ba-back" data-ba-close>${b("picker.keepMyPicks","Keep my picks")}</button>`:"")+"</div>"}function Wo(i){if(i.salesClosed&&!i.hasPicks){let e=i.whenText?`<span class="when">${I(i.whenText)}</span>`:"";return`<div class="sl-closed-note" role="status"><b>${b("picker.salesClosedPill","Sales are closed")}</b><span>${b("picker.salesClosedCopy","Ticket sales for this event have ended.")}${e}</span></div>`}return i.hasPicks?"":i.hasGaAreas?`<div class="sl-tray-hint">${i.seated?i.venue3d?b("picker.trayHintChoose3dOrStanding","Choose a seat in the 3D venue \u2014 or grab standing tickets below."):b("picker.trayHintTapOrStanding","Tap a seat on the map \u2014 or grab standing tickets below."):i.venue3d?b("picker.gaTrayHintChoose3dArea","Choose an area in the 3D venue to select tickets."):b("picker.gaTrayHintTapArea","Tap an area on the map to choose tickets.")}</div>`:`<div class="sl-tray-hint">${i.groupMode==="per_performance"?b("picker.groupPerPerformanceTrayHint","Choose seats for this performance, then complete every date above."):i.groupMode?b("picker.groupTrayHint","Choose seats once \u2014 the same seats will be held for every performance."):i.venue3d?b("picker.trayHintChoose3dOrBest","Choose a seat in the 3D venue, or let us pick the best available for you."):b("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you.")}</div>`}var Dn=6e4,Yo=5*6e4,sp=String(Math.round(Yo/6e4));function Xo(i){let e=document.createElement("div");e.className="sl-extend",e.dataset.dock="map",e.setAttribute("role","status"),e.innerHTML='<button type="button" class="sl-extend-btn" data-ref="extendBtn"></button><button type="button" class="sl-extend-x" data-ref="extendDismiss" aria-label=""><svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false"><path d="M3.5 3.5 12.5 12.5M12.5 3.5 3.5 12.5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></button>',(i.regions["bottom-center"]??i.els.map).appendChild(e),i.extendEl=e,i.els.extendBtn=e.querySelector('[data-ref="extendBtn"]'),i.els.extendDismiss=e.querySelector('[data-ref="extendDismiss"]'),i.els.extendBtn.textContent=Qo(i),i.els.extendDismiss.setAttribute("aria-label",i.tf("picker.close","Close")),i.els.extendBtn.addEventListener("click",()=>{i.handleExtend()}),i.els.extendDismiss.addEventListener("click",()=>{i.extendDismissed=!0,i.setExtendPrompt(!1,0)})}function Qo(i){return i.tf("picker.addMinutes","+{count} min").replace("{count}",sp)}function Zo(i){let e=i.hold?.items??[],t=new Set(e.map(s=>s.label));return i.committedSelection().filter(s=>!t.has(s.label)).reduce((s,r)=>s+(r.quantity??1),0)+Re(i.gaQty,i.hold?.items??[])}function Jo(i){return(i.hold?.items??[]).reduce((e,t)=>e+(t.quantity??1),0)}function ea(i){let e=new Set((i.hold?.items??[]).map(n=>n.label)),t=i.committedSelection().filter(n=>!e.has(n.label)).reduce((n,s)=>n+(s.quantity??1),0);return i.heldTicketCount()+t+Re(i.gaQty,i.hold?.items??[])}function ta(i){let e=new Set((i.hold?.items??[]).map(s=>s.label)),t=i.committedSelection().filter(s=>e.has(s.label)).reduce((s,r)=>s+(r.quantity??1),0),n=Math.max(0,i.maxTickets-i.heldTicketCount()-Re(i.gaQty,i.hold?.items??[]));i.controller.setMaxSelection(t+n)}function ia(i,e=i.lastTrayCount,t=i.pendingSelectionCount()){let n=i.els.cta;if(!n)return;if(i.salesClosed){n.disabled=!0,n.textContent=i.tf("picker.salesClosedCta","Sales closed");return}if(i.confirmSeat||i.tableDialog&&!i.tableDialogHeld){n.disabled=!0,n.textContent=i.tableDialog?i.tf("picker.confirmYourTable","Confirm your table"):i.tf("picker.confirmOrCancelSeat","Confirm or cancel this seat");return}if(i.ctaPhase==="holding"){n.disabled=!0,n.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${i.tf("picker.securingSeats","Securing your seats\u2026")}`;return}if(i.ctaPhase==="checkout"){n.disabled=!0,n.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${i.tf("picker.openingCheckout","Opening secure checkout\u2026")}`;return}let s=!i.hold&&i.performanceGroup?.selectionMode==="per_performance"?i.performanceGroup.submissionState?.():null;if(s&&!s.ready){n.disabled=!0,n.textContent=i.tf("picker.completeAllPerformances","Complete all performances ({complete}/{total})").replace("{complete}",String(s.complete)).replace("{total}",String(s.total));return}let r=i.controller.getSelectionValidity(e);if(r&&!r.isValid){n.disabled=!0,n.textContent=Bi(r,(o,a)=>i.tf(o,a),!0);return}n.disabled=e===0,n.textContent=i.hold?t?np("picker.secureMoreAndCheckout",{count:t}):i.tf("picker.continueToCheckout","Continue to checkout"):e?i.performanceGroup?i.tf("picker.holdSeatsForAllPerformances","Hold seats for all {count} performances").replace("{count}",String(i.performanceGroup.performanceCount)):i.tf("picker.holdSeatsAndCheckout","Hold seats & checkout"):i.tf("picker.selectSeats","Select seats")}function na(i,e){i.ctaPhase=e,i.syncCta(),i.renderPeek(i.lastTrayCount,i.lastTrayTotal,i.pendingSelectionCount())}async function sa(i,e,t){i.setCtaPhase("checkout");try{await i.checkoutHandoff(e,t)}finally{i.ctaPhase==="checkout"&&!i.bookedShown&&i.setCtaPhase("idle")}}function ra(i){return`@seatlayer/hold/v1/${encodeURIComponent(i.apiBase)}/${encodeURIComponent(i.opts.event)}`}function oa(i){if(i.opts.initialHoldId)return i.opts.initialHoldId;if(i.opts.restoreHold===!1||typeof window>"u")return null;try{return window.sessionStorage.getItem(i.holdStorageKey())}catch{return null}}function aa(i,e){if(!(i.opts.restoreHold===!1||typeof window>"u"))try{window.sessionStorage.setItem(i.holdStorageKey(),e.holdId)}catch{}}function la(i){if(!(typeof window>"u"))try{window.sessionStorage.removeItem(i.holdStorageKey())}catch{}}async function ca(i,e){try{let t=await i.controller.resumeHold(e);if(!t||i.destroyed)return null;let n={holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items};return i.hold=n,i.handedOff=!0,i.bookedShown=!1,i.ctaPhase="idle",i.startHoldTimer(n.expiresAt),i.rememberHold(n),i.syncTray(),i.emitHoldChange(),i.opts.onHoldRestored?.(n,n.seats??[],i.buildHandoff(n)),n}catch(t){let n=t?.status;return n===404||n===409?i.forgetHold():i.opts.onError?.(t),null}}async function da(i){let e=i.rememberedHoldId();e&&await i.resumeHoldFromServer(e)}function pa(i,e){i.stopHoldTimer(),i.holdExpiresAt=e,i.extendDismissed=!1,i.extendUsed=!1,i.hold&&i.rememberHold(i.hold);let t=i.els.hold;t.innerHTML=`<span class="sl-hold-dot" aria-hidden="true"></span><span>${i.tf("picker.held","Held")}</span><span class="sl-hold-time" data-ref="holdTime"></span>`;let n=t.querySelector('[data-ref="holdTime"]'),s=()=>{let r=Math.max(0,i.holdExpiresAt-Date.now());n&&(n.textContent=$t(r));let o=i.els.peek?.querySelector(".sl-peek-time");o&&(o.textContent=$t(r)),t.classList.add("on"),t.classList.toggle("is-expiring",r>0&&r<=Dn),i.setExtendPrompt(r>0&&r<=Dn,r),(r<=0||!i.controller.currentHold())&&i.stopHoldTimer()};i.holdTimer=setInterval(s,500),s()}function ha(i){i.holdTimer&&clearInterval(i.holdTimer),i.holdTimer=null,i.els.hold?.classList.remove("on","is-expiring"),i.root&&delete i.root.dataset.peekClock,i.setExtendPrompt(!1,0)}function ua(i,e,t){if(!i.extendEl)return;let n=e&&t>0&&i.root?.dataset.layout!=="narrow"&&!i.extendDismissed&&!i.extendUsed&&!!i.controller.currentHold()&&!i.bookedShown;i.extendEl.classList.toggle("on",n)}function ma(i){if(!i.holdTimer)return;let e=Math.max(0,i.holdExpiresAt-Date.now());i.setExtendPrompt(e>0&&e<=Dn,e)}async function fa(i){let e=i.els.extendBtn,t=i.controller.currentHold();if(!(!t||!i.api.extend||i.extendUsed)){e.disabled=!0,e.textContent=i.tf("picker.addingEllipsis","Adding\u2026");try{let n=await i.api.extend(i.controller.key,t.holdId,Yo);if(i.controller.currentHold()?.holdId!==t.holdId)return;i.controller.setHold({holdId:t.holdId,labels:t.labels,expiresAt:n.expiresAt,items:t.items});let s=i.controller.currentHold();if(!s)return;i.hold={holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items},i.holdExpiresAt=s.expiresAt,i.extendUsed=!0,i.extendEl?.classList.remove("on"),i.rememberHold(i.hold),i.emitHoldChange(),i.toast(i.tf("picker.moreTimeAdded","More time added \u2014 your seats are still held."),"success")}catch(n){if(n?.reason==="extend_limit"){i.extendUsed=!0,i.setExtendPrompt(!1,0);return}i.opts.onError?.(n),i.toast(i.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}finally{e.disabled=!1,e.textContent=Qo(i)}}}import{t as wa,tCount as lp}from"@seatlayer/core";function ga(i){return i?.previousPrice!=null&&i.previousPrice>i.price?i.previousPrice:null}function ba(i){return op(i)+(i.moreLabel?`<button type="button" class="sl-price-more" aria-expanded="${!i.collapsed}">${i.esc(i.moreLabel)}</button>`:"")+ap(i.status)}function op(i){let{esc:e,money:t}=i;return i.categories.map(n=>{let s=i.priceOf(n),r=i.rangeOf(n),o=i.offerOf(n.key),a=ga(o),l=i.activeKey===n.key;return`<div class="sl-price-row${i.bandKeys!=null&&!i.bandKeys.has(n.key)?" sl-dim":""}${l?" sl-active":""}" data-cat="${e(n.key)}" role="button" tabindex="0" aria-pressed="${l}" title="${e(i.titleFor(n,l))}"><span class="sl-dot" style="--sl-cat-dot:${e(i.colorOf(n))}"></span><span class="sl-price-label">${e(n.label)}`+(o?.offerName?`<small class="sl-price-offer">${e(o.offerName)}</small>`:"")+`</span><span class="sl-price-left">${e(i.leftCount(i.left[n.key]??0))}</span>`+(a!=null?`<span class="sl-price-was">${e(t(a))}</span>`:"")+(r!=null?`<span class="sl-price-amt">${r.min===r.max?e(t(r.min)):`${e(t(r.min))}\u2013${e(t(r.max))}`}</span>`:s!=null?`<span class="sl-price-amt">${e(t(s))}</span>`:"")+"</div>"}).join("")}function ap(i){let e=t=>t.replace(/[&<>"']/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[n]);return`<div class="sl-status-key" aria-label="${e(i.legend)}"><span class="sl-status-item"><i class="sl-status-icon held" 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(i.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(i.sold)}</span></div>`}function Bn(i){let e=Math.abs(i.scrollLeft),t=e>2,n=e+i.clientWidth<i.scrollWidth-2;return i.dataset.fadeStart=String(t),i.dataset.fadeEnd=String(n),{start:t,end:n}}function ya(i){let{esc:e,money:t}=i;return`<button type="button" class="sl-rc sl-rc-all" data-rail-all aria-pressed="${i.allActive}" title="${e(i.allWord)}"><span class="sl-rc-t">${e(i.allWord)}</span></button>`+i.categories.map(s=>{let r=i.rangeOf(s),o=i.priceOf(s),a=r?r.min===r.max?t(r.min):`${t(r.min)}+`:o!=null?t(o):null,l=Object.prototype.hasOwnProperty.call(i.left,s.key)&&i.left[s.key]<=0,c=ga(i.offerOf(s.key)),d=a?`${s.label} \u2014 ${a}${l?` (${i.soldOutWord})`:""}`:s.label;return`<button type="button" class="sl-rc" data-cat="${e(s.key)}" aria-pressed="${i.activeKey===s.key}" aria-label="${e(d)}" title="${e(d)}"${l?" disabled":""}><i class="sl-rc-dot" style="--sl-cat-dot:${e(i.colorOf(s))}"></i>`+(c!=null?`<span class="sl-rc-was">${e(t(c))}</span>`:"")+`<span class="sl-rc-t">${e(a??s.label)}</span></button>`}).join("")}function va(i,e){let t=i.map(a=>({key:a.key,range:e.rangeOf(a)})).filter(a=>a.range!=null);if(!t.length)return[];let n=[...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(n.length<=5)return n.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),r=Math.ceil(s.length/4),o=[];for(let a=0;a<s.length;a+=r){let l=s.slice(a,a+r),c=Math.min(...l.map(p=>p.range.min)),d=Math.max(...l.map(p=>p.range.max));o.push({id:`b${a}`,label:c===d?e.money(c):`${e.money(c)}\u2013${e.money(d)}`,keys:l.map(p=>p.key),min:c,max:d})}return o}function xa(i){if(i.suppressPricing||!i.els.prices||!i.els.pricesSec)return;let e=va(i.controller.doc?.categories??[],i.legendDeps());if(e.length<2)return;let t=document.createElement("select");t.className="sl-price-select",t.setAttribute("aria-label",i.tf("picker.filterAndFocusByPrice","Filter and focus seats by price"));let n=document.createElement("option");n.value="all",n.textContent=i.tf("picker.allPrices","All prices"),t.appendChild(n);for(let s of e){let r=document.createElement("option");r.value=s.id,r.textContent=s.label,t.appendChild(r)}i.els.pricesSec.appendChild(t),i.priceSelect=t,t.addEventListener("change",()=>{i.applyPriceBand(e.find(s=>s.id===t.value)?.keys??null)})}function Sa(i,e){if(i.focusedCatKey=null,i.priceBandKeys=e?new Set(e):null,i.priceSelect){let t=e?i.priceSelect.value:"all";i.priceSelect.value!==t&&(i.priceSelect.value=t)}i.controller.setCategoryFilter(e),i.controller.focusCategoryFilter(e),i.pushAvailabilityTo3d(),i.syncFloors(),i.syncRung(),i.minimap?.refreshMinimap(),i.syncPrices(),i.lastSection&&i.showSectionCard(i.lastSection)}function ka(i){return{colorOf:e=>i.controller.getRenderer()?.categoryDisplayColor?.(e.key)??e.color,rangeOf:e=>i.catPriceRange(e),priceOf:e=>i.catPrice(e),offerOf:e=>i.offerPrice(e),money:e=>i.money(e),esc:I}}function Ta(i,e,t,n=i.legendDeps()){let s=i.els.railScroll,r=e.length>1;if(i.els.rail?.classList.toggle("has",r),!s)return;s.innerHTML=r?ya({...n,categories:e,left:t,activeKey:i.focusedCatKey,soldOutWord:i.tf("picker.soldOut","Sold out"),allWord:i.tf("picker.allPrices","All prices"),allActive:!i.focusedCatKey&&!i.priceBandKeys}):"";let o=e.map(a=>a.key).join("|");i.lastRailSignature!==o&&(i.lastRailSignature=o,s.scrollLeft=0),s.querySelectorAll(".sl-rc").forEach(a=>{a.addEventListener("click",()=>{if(a.hasAttribute("data-rail-all")){i.applyPriceBand(null);return}i.focusCategory(a.dataset.cat??"")})}),i.railEdgesBound||(i.railEdgesBound=!0,s.addEventListener("scroll",()=>Bn(s),{passive:!0})),requestAnimationFrame(()=>Bn(s))}function Ea(i){let e=i.controller.doc;if(!e||!i.els.prices)return;let t=i.controller.categoryAvailability(),n=e.categories.filter(p=>!p.notForSale);i.syncSoldout(n,t);let s=i.legendDeps(),r=i.suppressPricing,o=r?{...s,priceOf:()=>{},rangeOf:()=>{},offerOf:()=>null}:s;r&&(i.els.pricesSec?.querySelector("span")?.replaceChildren(i.tf("picker.seatCategories","Seat categories")),i.els.pricesHint?.remove()),i.syncPriceRail(n,t,o);let a=5,l=n.length-a,c=l>1&&!i.pricesExpanded,d=c?n.slice(0,a):n;i.els.prices.classList.toggle("sl-expanded",l>1&&i.pricesExpanded),i.els.prices.innerHTML=ba({...o,categories:d,left:t,collapsed:c,activeKey:i.focusedCatKey,bandKeys:i.priceBandKeys,leftCount:p=>lp("picker.leftCount",p),titleFor:(p,u)=>u?i.tf("picker.showAllSeats","Show all seats"):wa("picker.showLabelSeatsOnMap",{label:p.label}),moreLabel:l>1?c?r?i.tf("picker.showAllCategories","Show all categories"):wa("picker.showAllTicketTypes",{count:n.length}):i.tf("picker.showFewer","Show fewer"):null,status:{legend:i.tf("picker.seatStatusLegend","Seat status legend"),held:i.tf("picker.temporarilyHeld","Temporarily held"),sold:i.tf("picker.sold","Sold")}}),i.els.prices.querySelectorAll(".sl-price-row").forEach(p=>{p.addEventListener("mouseenter",()=>i.controller.getRenderer()?.setCategoryHighlight?.(p.dataset.cat??null)),p.addEventListener("mouseleave",()=>i.controller.getRenderer()?.setCategoryHighlight?.(null));let u=()=>i.focusCategory(p.dataset.cat??"");p.addEventListener("click",u),p.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),u())})}),i.els.prices.querySelector(".sl-price-more")?.addEventListener("click",()=>{i.pricesExpanded=!i.pricesExpanded,i.syncPrices()})}function Ca(i,e){if(!e)return;let t=i.focusedCatKey===e?null:e;i.focusedCatKey=t,i.priceBandKeys=t?new Set([t]):null;let n=i.els.pricesSec?.querySelector(".sl-price-select");n&&(n.value="all"),i.controller.setCategoryFilter(t?[t]:null),i.controller.focusCategoryFilter(t?[t]:null),i.pushAvailabilityTo3d(),i.syncFloors(),i.syncRung(),i.minimap?.refreshMinimap(),i.syncPrices(),i.lastSection&&i.showSectionCard(i.lastSection)}import{t as Aa,tCount as Pa}from"@seatlayer/core";function ce(i,e,t){let n=Aa(i,t);return n&&n!==i?n:t?e.replace(/\{(\w+)\}/g,(s,r)=>r in t?String(t[r]):s):e}function dp(i){let e=Pa("picker.seatCount",i);return e.includes("picker.seatCount")?`${i} ${i===1?"seat":"seats"}`:e}function pp(i){try{let e=Intl.ListFormat;if(e)return new e(void 0,{style:"long",type:"conjunction"}).format(i)}catch{}return i.join(", ")}function hp(i){if(i.length<2)return!1;let e=[...i].sort((t,n)=>t-n);return new Set(e).size!==e.length?!1:e[e.length-1]-e[0]===e.length-1}function up(i){let e=i.filter(s=>s.objectType==="ga"),t=i.filter(s=>s.objectType!=="ga"),n=[];if(t.length){let s=dp(t.length),r=[...new Set(t.map(l=>l.sectionLabel).filter(Boolean))],o=[...new Set(t.map(l=>l.rowLabel).filter(Boolean))],a=t.map(l=>Number(l.seatNumber)).filter(l=>Number.isFinite(l));if(r.length===1&&o.length===1&&a.length===t.length){let l=t.length===1?ce("picker.releasedSeatPlace","Section {section}, Row {row}, Seat {seat}",{section:r[0],row:o[0],seat:String(t[0].seatNumber??"")}):hp(a)?ce("picker.releasedSeatRange","Section {section}, Row {row}, Seats {from}\u2013{to}",{section:r[0],row:o[0],from:Math.min(...a),to:Math.max(...a)}):"";n.push(l?ce("picker.releasedPair","{first} \xB7 {second}",{first:s,second:l}):ce("picker.releasedInSection","{seats} in Section {section}",{seats:s,section:r[0]}))}else r.length===1?n.push(ce("picker.releasedInSection","{seats} in Section {section}",{seats:s,section:r[0]})):r.length>1?n.push(ce("picker.releasedInSections","{seats} in Sections {sections}",{seats:s,sections:pp(r)})):n.push(s)}for(let s of e)n.push(ce("picker.releasedGa","{quantity} \xD7 {area}",{quantity:s.quantity??1,area:s.label}));return n.length?n.reduce((s,r)=>ce("picker.releasedPair","{first} \xB7 {second}",{first:s,second:r})):""}function La(i){if(!i)return[];let e=new Map((i.seats??[]).map(s=>[s.label,s])),t=i.items??[];return(t.length?t.map(s=>({label:s.label,objectType:s.objectType,quantity:s.quantity})):[...e.keys()].map(s=>({label:s}))).map(s=>{let r=e.get(s.label);return{label:s.label,...s.objectType?{objectType:s.objectType}:{},...s.quantity==null?{}:{quantity:s.quantity},...r?.sectionLabel?{sectionLabel:r.sectionLabel}:{},...r?.rowLabel?{rowLabel:q(r)??r.rowLabel}:{},...r?.seatNumber?{seatNumber:r.seatNumber}:{}}})}function Ma(i,e){if(!i.reducedMotion)for(let t of e.slice(0,10)){if(t.objectType==="ga")continue;let n=i.seatByLabel(t.label);!n||i.statusOf(n.id)!=="free"||i.flash(n.id,i.accent)}}function Ha(i,e){if(!e.recoverable.length||!i.isConnected)return;let t=i.querySelector(".sl-hold-expired-next");t&&(e.taken.length?t.textContent=e.taken.slice(0,3).map(o=>Aa("picker.seatJustTakenByAnother",{label:o})).join(" "):t.remove());let n=i.querySelector(".sl-interrupt-actions"),s=n?.querySelector(".sl-interrupt-act");if(!n||!s)return;s.classList.add("sl-interrupt-act-secondary");let r=document.createElement("button");r.type="button",r.className="sl-interrupt-act sl-hold-expired-recover",r.textContent=Pa("picker.holdLapsedSelectAgain",e.recoverable.length),r.addEventListener("click",()=>e.onRecover([...e.recoverable])),n.insertBefore(r,s),i.classList.add("has-recovery"),r.focus()}function Ra(i,e=[]){let t=document.createElement("div");t.className="sl-interrupt sl-hold-expired sl-mo-scrim",t.setAttribute("role","alertdialog"),t.setAttribute("aria-modal","true");let n=document.createElement("div");n.className="sl-interrupt-card sl-mo-in";let s=document.createElement("div");s.className="sl-interrupt-title",s.id="sl-hold-expired-title";let r=document.createElement("span");r.className="sl-interrupt-glyph",r.setAttribute("aria-hidden","true"),r.textContent="\u23F1";let o=document.createElement("span");o.textContent=ce("picker.holdExpiredTitle","Your seats were released"),s.append(r,o);let a=document.createElement("div");a.className="sl-interrupt-body",a.id="sl-hold-expired-body",a.textContent=ce("picker.holdExpiredBody","Your hold time ran out and the seats went back on sale."),n.append(s,a);let l=up(e);if(l){let u=document.createElement("div");u.className="sl-interrupt-body sl-interrupt-fact sl-hold-expired-seats",u.textContent=l,n.appendChild(u)}let c=document.createElement("div");c.className="sl-interrupt-body sl-hold-expired-next",c.textContent=ce("picker.holdExpiredPickAgain","Pick your seats again to continue \u2014 they may already be taken."),n.appendChild(c),t.setAttribute("aria-labelledby",s.id),t.setAttribute("aria-describedby",a.id);let d=document.createElement("div");d.className="sl-interrupt-actions";let p=document.createElement("button");return p.type="button",p.className="sl-interrupt-act sl-hold-expired-restart",p.textContent=ce("picker.holdExpiredRestart","Choose seats again"),p.addEventListener("click",()=>i.restart()),d.appendChild(p),n.appendChild(d),t.appendChild(n),t.addEventListener("pointerdown",u=>{u.target===t&&i.restart()}),t}import{t as Fn,tCount as mp}from"@seatlayer/core";var Nn=4,fp=6;function gp(i){let e=i.trim();return/^[0-9]{1,4}$/.test(e)?Number(e):null}function Ia(i){return[i.held?"h":"s",i.section,i.rowLabel,i.categoryLabel,i.amountText].join(" ")}function bp(i){if(i.length===1)return i[0];let e=i.map(gp);if(e.every(n=>n!==null)){let n=[...e].sort((o,a)=>o-a);if(n.every((o,a)=>a===0||o===n[a-1]+1))return`${n[0]}\u2013${n[n.length-1]}`;let r=n.slice(0,3).join(", ");return n.length>3?`${r} +${n.length-3}`:r}let t=i.slice(0,3).join(", ");return i.length>3?`${t} +${i.length-3}`:t}function yp(i){let e=[];for(let t of i){let n=e[e.length-1];!!n&&t.groupable&&n.members[0].groupable&&Ia(n.members[0])===Ia(t)?n.members.push(t):e.push({members:[t],seatsLabel:""})}for(let t of e)t.seatsLabel=bp(t.members.map(n=>n.seatLabel));return e}function _a(i,e,t,n){let s=I;return` data-key="${s(i)}"`+(t.length?` data-held="${s(encodeURIComponent(t.join(`
2801
- `)))}"`:"")+(e.length?` data-seat="${s(e.join(" "))}"`:"")+(n?` data-locate="${s(n)}"`:"")}function Da(i){let e=I;return`<div class="sl-chip${i.held?" sl-held":""}${i.fresh?" sl-enter":""}"`+_a(i.key,i.seatIds,i.heldLabels,i.locateId)+">"+(i.held?i.stateHtml:`<span class="sl-chip-dot" style="background:${E(i.categoryColor)}" aria-hidden="true"></span>`)+`<div class="sl-chip-main">${i.identityHtml}`+(i.extrasHtml?`<div class="sl-chip-sub">${i.extrasHtml}</div>`:"")+`${i.noteHtml}</div>`+(i.amountText?`<span class="amt">${e(i.amountText)}</span>`:"")+i.railHtml+"</div>"}function Oa(i,e,t,n,s){let r=I,o=e?.members.length??1,a=o>1,l=e?e.seatsLabel:i.seatLabel,c=e?e.members.reduce((u,h)=>u+h.amount,0):i.amount,d=e?e.members.flatMap(u=>u.seatIds):i.seatIds,p=e?e.members.flatMap(u=>u.heldLabels):i.heldLabels;return`<div class="sl-chip sl-tline${i.held?" sl-held":""}${i.fresh?" sl-enter":""}${e?"":" sl-tsub"}"${n?' data-overflow="true"':""}`+(e?` data-run="${t}"`:` data-run-of="${t}"`)+_a(i.key,d,p,i.locateId)+">"+(a?`<button type="button" class="sl-trun-toggle" aria-expanded="false" aria-label="${r(mp("picker.seatsSelectedCount",o))}"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></button>`:i.held?i.stateHtml:`<span class="sl-tline-dot" style="background:${E(i.categoryColor)}" aria-hidden="true"></span>`)+`<span class="sl-sr">${r(i.categoryLabel)}</span><span class="sl-tline-id"><b>${r(i.section||i.seatLabel)}</b>`+(i.rowLabel?`<i>\xB7</i><span>${r(i.rowLabel)}</span>`:"")+(i.section&&l?`<i>\xB7</i><span>${r(l)}</span>`:"")+"</span>"+i.extrasHtml+(s.suppressPricing||!i.amountText?"":(a?`<span class="sl-tline-mult">${o}\xD7</span>`:"")+`<span class="amt">${r(s.money(c))}</span>`)+(i.railHtml?`<button type="button" class="rm" aria-label="${r(a?Fn("picker.removeSeatLabel",{label:[i.section,i.rowLabel,l].filter(Boolean).join(" \xB7 ")}):i.removeAria)}"><svg viewBox="0 0 24 24" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button>`:"")+"</div>"}function Ba(i,e){if(!i.length)return"";let t=yp(i),n=[b("picker.section","Section"),b("picker.row","Row"),b("picker.seat","Seat")].join(" \xB7 "),s=t.length>=fp,r=t.map((a,l)=>{let c=s&&l>=Nn;return Oa(a.members[0],a,l,c,e)+(a.members.length>1?a.members.map(d=>Oa(d,null,l,c,e)).join(""):"")}).join(""),o=s?`<button type="button" class="sl-tmore" data-tmore aria-expanded="false" data-more="${I(Fn("picker.moreCount",{count:t.length-Nn}))}" data-less="${I(b("picker.showLess","Show less"))}"><span>${I(Fn("picker.moreCount",{count:t.length-Nn}))}</span><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg></button>`:"";return`<div class="sl-tlist"${s?' data-collapsed="true"':""}><div class="sl-tlist-head sl-sr">${I(n)}</div>${r}${o}</div>`}function Na(i){i.dataset.denseWired!=="true"&&(i.dataset.denseWired="true",i.addEventListener("click",e=>{let t=e.target,n=t.closest("[data-tmore]");if(n){let l=n.closest(".sl-tlist"),c=l?.getAttribute("data-collapsed")==="true";l?.setAttribute("data-collapsed",c?"false":"true"),n.setAttribute("aria-expanded",c?"true":"false");let d=n.querySelector("span");d&&(d.textContent=(c?n.dataset.less:n.dataset.more)??d.textContent);return}let s=t.closest(".sl-trun-toggle");if(!s)return;e.stopPropagation();let r=s.closest(".sl-tline"),o=r?.dataset.run;if(!r||o===void 0)return;let a=s.getAttribute("aria-expanded")!=="true";s.setAttribute("aria-expanded",a?"true":"false"),r.setAttribute("data-open",a?"true":"false"),r.parentElement?.querySelectorAll(`.sl-tsub[data-run-of="${o}"]`).forEach(l=>l.setAttribute("data-open",a?"true":"false"))}))}import{ACCESSIBILITY_TYPES as Vn,t as Fa}from"@seatlayer/core";var vp='<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="13" cy="4.4" r="1.9"/><path d="M11 8.2v5.1h5.1"/><path d="M16.6 13.3l1.9 6.3"/><path d="M15.4 14.9a5.6 5.6 0 1 1-5.9-3.4"/></svg>',wp='<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="8.4"/><circle cx="8.6" cy="10.2" r="1.15"/><circle cx="12" cy="8.2" r="1.15"/><circle cx="15.4" cy="10.2" r="1.15"/><path d="M12 20.4a2.6 2.6 0 0 1 0-5.2 2.2 2.2 0 0 0 0-4.4"/></svg>',Fi=class{constructor(e,t){this.active=new Set;this.deps=t,this.root=document.createElement("div"),this.root.className="sl-a11y",this.button=document.createElement("button"),this.button.type="button",this.button.className="sl-a11ybtn",this.button.setAttribute("aria-haspopup","true"),this.button.setAttribute("aria-expanded","false");let n=this.offered().length>0;this.button.setAttribute("aria-label",n?t.tf("picker.accessibilityOptions","Accessibility and colour options"):t.tf("picker.displayOptions","Display options")),this.button.innerHTML=n?vp:wp,this.menu=document.createElement("div"),this.menu.className="sl-a11ymenu",this.menu.hidden=!0;for(let s of this.stored())this.offeredFree().has(s)&&this.active.add(s);if(this.menu.innerHTML=Hr(this.rows()),this.root.append(this.menu,this.button),e.appendChild(this.root),this.button.addEventListener("click",s=>{s.stopPropagation(),this.open(this.menu.hidden)}),this.menu.addEventListener("pointerdown",s=>s.stopPropagation()),this.menu.addEventListener("click",s=>s.stopPropagation()),this.dismiss=()=>this.open(!1),this.escape=s=>{s.key==="Escape"&&this.open(!1)},document.addEventListener("pointerdown",this.dismiss),document.addEventListener("keydown",this.escape),this.promoteCounts(),this.wire(),this.active.size){this.applyFilter({focus:!1});let s=()=>this.deps.focusSeatsForFilter();typeof requestAnimationFrame=="function"?requestAnimationFrame(s):s()}}colorblindRow(){return this.menu.querySelector(".sl-cbbtn")}syncCounts(){let e=new Map(this.offered().map(({key:n,count:s})=>[n,s])),t=!1;for(let n of this.menu.querySelectorAll("[data-a11y-row]")){let s=n.dataset.a11yRow??"";if(!s.startsWith("a11y:"))continue;let r=s.slice(5),o=e.get(r);if(o===void 0)continue;let a=this.countNode(n),l=o==null?"":o>0?Fa("picker.accessFreeCount",{count:o}):this.deps.tf("picker.accessNoneLeft","None left");a&&(a.textContent=l);let c=o===0;a instanceof HTMLButtonElement&&(a.disabled=c,a.setAttribute("aria-label",this.jumpLabel(r,l))),n.disabled=c,c?n.setAttribute("aria-disabled","true"):n.removeAttribute("aria-disabled"),c&&this.active.delete(r)&&(this.paint(n,!1),t=!0)}t&&this.applyFilter()}syncAccessibilityFilter(e){this.active.clear();for(let t of e??[])this.active.add(t);this.remember(e&&e.length?e:null);for(let t of this.menu.querySelectorAll("[data-a11y-row]")){let n=t.dataset.a11yRow??"";n.startsWith("a11y:")&&this.paint(t,this.active.has(n.slice(5)))}}destroy(){document.removeEventListener("pointerdown",this.dismiss),document.removeEventListener("keydown",this.escape),this.root.remove()}open(e){if(e===!this.menu.hidden)return;if(this.button.setAttribute("aria-expanded",String(e)),!e){this.menu.hidden=!0,this.menu.classList.remove("sl-mo-in","sl-mo-stagger");return}this.menu.hidden=!1;let t=this.button.getBoundingClientRect();tn(this.menu,{x:t.left+t.width/2,y:t.top}),Ss(this.menu),ri(this.menu)}rows(){return[...this.filterRows(),...this.deps.hasLimitedView?[{key:"limited",icon:"\u25D0",label:this.deps.tf("picker.hideLimitedView","Hide limited-view seats"),on:this.deps.isLimitedViewHidden()}]:[],{key:"colorblind",icon:"\u25D0",className:"sl-cbbtn",label:this.deps.tf("picker.colorblindColors","Colourblind-friendly colours"),on:this.deps.isColorblindSafe()}]}offered(){let e=this.deps.needs?.();if(e)return e.map(({key:n,count:s})=>({key:n,count:s}));let t=this.deps.present;return t?Vn.filter(({key:n})=>t.has(n)).map(({key:n})=>({key:n,count:null})):[]}offeredKeys(){return new Set(this.offered().map(({key:e})=>e))}offeredFree(){return new Set(this.offered().filter(({count:e})=>e!==0).map(({key:e})=>e))}filterRows(){let e=this.offeredKeys(),t=new Map(Vn.map(n=>[n.key,n]));return this.offered().flatMap(({key:n,count:s})=>{let r=t.get(n);return r?[{key:`a11y:${n}`,icon:r.icon,label:r.label,...n==="wheelchair"&&e.has("companion")?{note:this.deps.tf("picker.companionSeatsNote","Companion places beside them stay selectable")}:{},...s==null?{}:{count:s>0?Fa("picker.accessFreeCount",{count:s}):this.deps.tf("picker.accessNoneLeft","None left"),disabled:s===0},on:this.active.has(n)}]:[]})}wire(){for(let e of this.menu.querySelectorAll("[data-a11y-row]"))e.addEventListener("click",()=>{let t=e.dataset.a11yRow??"";if(t==="colorblind"){let r=!this.deps.isColorblindSafe();this.deps.setColorblindSafe(r),this.paint(e,r);return}if(t==="limited"){let r=!this.deps.isLimitedViewHidden();this.deps.setLimitedViewHidden(r),r&&this.deps.focusSeatsForFilter(),this.paint(e,r);return}let n=t.slice(5),s=!this.active.has(n);s?this.active.add(n):this.active.delete(n),this.paint(e,s),this.applyFilter()})}promoteCounts(){if(this.deps.stepToAccessibleSection)for(let e of this.menu.querySelectorAll('[data-a11y-row^="a11y:"]')){let t=e.querySelector(".sl-a11yrow-c");if(!t)continue;let n=(e.dataset.a11yRow??"").slice(5),s=document.createElement("div");s.className="sl-a11yrow-w",e.replaceWith(s);let r=document.createElement("button");r.type="button",r.className="sl-a11yrow-c sl-a11yjump",r.dataset.a11yJump=n,r.textContent=t.textContent,r.disabled=e.disabled,r.setAttribute("aria-label",this.jumpLabel(n,t.textContent??"")),t.remove(),e.setAttribute("aria-label",this.rowLabel(n,r.textContent??"")),s.append(e,r),r.addEventListener("click",o=>{o.stopPropagation(),this.active.has(n)||(this.active.add(n),this.paint(e,!0),this.applyFilter({focus:!1}));let a=this.deps.stepToAccessibleSection?.(n);a&&r.setAttribute("aria-label",this.jumpLabel(n,r.textContent??"",a.label))})}}countNode(e){return e.querySelector(".sl-a11yrow-c")??e.parentElement?.querySelector(".sl-a11yrow-c")??null}typeLabel(e){return Vn.find(t=>t.key===e)?.label??e}jumpLabel(e,t,n){return[this.deps.tf("picker.jumpToSection","Jump to section"),this.typeLabel(e),t,...n?[`${this.deps.tf("picker.section","Section")} ${n}`]:[]].filter(Boolean).join(" \xB7 ")}rowLabel(e,t){return[this.typeLabel(e),t].filter(Boolean).join(" \xB7 ")}paint(e,t){e.classList.toggle("on",t),e.setAttribute("aria-checked",String(t)),e.setAttribute("aria-pressed",String(t))}applyFilter(e={}){let t=this.active.size?[...this.active]:null;this.deps.applyAccessibilityFilter(t),this.remember(t),t&&e.focus!==!1&&this.deps.focusSeatsForFilter()}key(){let e=this.deps.chart?.();return`seatmap.a11y.filter.${this.deps.event}${e?`.${e}`:""}`}stored(){try{let e=window.sessionStorage.getItem(this.key()),t=e?JSON.parse(e):null;return Array.isArray(t)?t:[]}catch{return[]}}remember(e){try{e&&e.length?window.sessionStorage.setItem(this.key(),JSON.stringify(e)):window.sessionStorage.removeItem(this.key())}catch{}}};import{attachVisibilityCatchUp as xp}from"@seatlayer/core";var Sp=250;function Va(i,e=Sp){let t=null,n=()=>{t===null&&(t=setTimeout(()=>{t=null,i()},e))},s=xp(n),r=typeof window<"u"&&typeof window.addEventListener=="function";return r&&window.addEventListener("focus",n),()=>{t!==null&&(clearTimeout(t),t=null),s(),r&&window.removeEventListener("focus",n)}}import{holdRecoveryShape as kp,tCount as Vi}from"@seatlayer/core";var $i=class{constructor(e){this.note=null;this.told=!1;this.deps=e}deferExpiryToast(e){this.told=!1,queueMicrotask(()=>{this.told||e()})}handle(e){if(!e.holdLapsed)return;this.told=!0;let t=kp(e),n=e.lapsedLabels.length,s=n-e.recoverable.length,r=t==="all"?Vi("picker.holdLapsedStillFree",n):t==="partial"?Vi("picker.holdLapsedSomeTaken",s):Vi("picker.holdLapsedAllTaken",n);this.note={message:r,recoverable:t==="none"?[]:[...e.recoverable]},this.deps.toast(r,t==="none"?"error":"warning",t==="none"?void 0:{label:this.actionLabel(),onClick:()=>this.recover()}),this.deps.syncTray()}noteHtml(){if(!this.note)return"";let e=this.note.recoverable.length?`<button type="button" data-lapse-again>${I(this.actionLabel())}</button>`:"";return`<div class="sl-lapse-note" role="status"><span>${I(this.note.message)}</span>${e}</div>`}wire(e){e?.querySelector("[data-lapse-again]")?.addEventListener("click",()=>this.recover())}clear(){this.note&&(this.note=null,this.deps.syncTray())}actionLabel(){return Vi("picker.holdLapsedSelectAgain",this.note?.recoverable.length??0)}recover(){let e=this.note?.recoverable??[];this.note=null,this.deps.syncTray(),e.length&&this.deps.reselect(e)}};var $a=Symbol("seatlayer.performance-group-picker");function zi(i,e){return Object.defineProperty(i,$a,{configurable:!1,enumerable:!1,value:Object.freeze({...e})}),i}function za(i){return i[$a]??null}var ja="@seatlayer/pending-checkout/v1";function Tp(i){return typeof i=="string"&&i.length<=160&&/^ord_[A-Za-z0-9_-]+$/.test(i)}function ji(i){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 n=null;try{let s=window.sessionStorage.getItem(ja);if(s){let r=null;try{r=JSON.parse(s)}catch{}if(r&&Tp(r.orderId)){let o=Date.now()-Number(r.storedAt);if(o>=0&&o<=144e5){if(r.eventKey&&r.eventKey!==i)return null;n=r.orderId}}}window.sessionStorage.removeItem(ja)}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:n}}function Ga(i){if(!i.framed)return null;let e=i.ancestorOrigins?.length?i.ancestorOrigins[0]:null;for(let t of[e,i.referrer])if(t)try{return new URL(t).origin}catch{}return null}var Hp="https://api.seatlayer.io",Rp=10,Ip=250,qa=6e4,Ka=4,Op=10,_p=40,Dp=220,Wa="seatmap.a11y.cb";function Bp(){try{if(typeof window>"u")return null;let i=window.localStorage.getItem(Wa);return i==null?null:i==="1"}catch{return null}}function Np(i){try{window.localStorage.setItem(Wa,i?"1":"0")}catch{}}var Ue=class i{constructor(e){this.realtime=null;this.accessEl=null;this.lastSelectionValidity=null;this.root=null;this.mapHost=null;this.rendered=!1;this.destroyed=!1;this.renderInfo=null;this.webMcp=null;this.localeGeneration=0;this.els={};this.regions={};this.ro=null;this.holdTimer=null;this.toastTimer=null;this.offerReadInFlight=null;this.offerReadSettledAt=0;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.holdConflicted=!1;this.paymentOptions=null;this.checkoutPanel=null;this.extendEl=null;this.extendDismissed=!1;this.extendUsed=!1;this.bookedEl=null;this.holdExpiredEl=null;this.holdExpiredFresh=!1;this.holdExpiredUnits=[];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.themeMode=null;this.colorSchemeStop=null;this.seatsRevealed=!1;this.seatsRevealedReport=null;this.confirmCardCache=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.bestAvailableConfirm=!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 Hi({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.view3dSeatViewChrome=null;this.view3dPassportEl=null;this.view3dPassportCleanup=null;this.floorsEl=null;this.viewEl=null;this.viewCleanup=null;this.seatViewGen=0;this.allSeatsCache=null;this.view3dBack=null;this.view3dNav=null;this.lastRailSignature="";this.priceSelect=null;this.minimap=null;this.pickerLayoutSize={width:0,height:0};this.priceBandKeys=null;this.focusedCatKey=null;this.limitedViewFilter=!1;this.pricesExpanded=!1;this.sectionCardCache=null;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.a11yMenu=null;this.detachAttention=null;this.lapse=new $i({toast:(e,t,n)=>this.toast(e,t,n),reselect:e=>{this.controller.select(e),this.handleCta()},syncTray:()=>this.syncTray()});this.railEdgesBound=!1;this.fsFallback=!1;this.fsChangeHandler=null;this.fsEscHandler=null;this.eventDetailsHidden=!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.fitScheduled=!1;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=za(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??Hp).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)}},n=!e.transport&&e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?ii({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:n?.access??Mt(e,t),this.pubApi=e.transport?null:n?.api??new Me(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 dt(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 r=jo(e.selectionValidators);if(this.exactTickets!=null&&r>this.exactTickets)throw new Error("seatmap: `minimumSelectedPlaces.minimum` cannot exceed `numberOfPlacesToSelect`");let o=Math.max(1,Math.floor(e.maxSelection??this.exactTickets??Math.max(Rp,r)));if(this.exactTickets!=null&&o<this.exactTickets)throw new Error("seatmap: `maxSelection` cannot be lower than `numberOfPlacesToSelect`");if(e.maxSelection!=null&&o<r)throw new Error("seatmap: `maxSelection` cannot be lower than `minimumSelectedPlaces.minimum`");this.maxTickets=this.exactTickets??o,this.cbSafe=Bp()??!!e.colorblindSafe,this.controller=this.wireController(e)}get confirmEl(){return this.confirmCard.element}set confirmEl(e){this.confirmCard.element=e}get confirmSeat(){return this.confirmCard.candidate}set confirmSeat(e){this.confirmCard.candidate=e}get lastSection(){return this.sectionCard.summary}set lastSection(e){this.sectionCard.adopt(e)}deliverableViewReference(e){return mt(e)}isFramed(){return typeof window<"u"&&window.parent!==window}postToHost(e){if(!this.isFramed())return;let t=Ga({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 n=t<640?1.2:.62;return Math.max(420,Math.round(t*n))}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()}fillsViewport(){let e=this.root;if(!e||typeof window>"u")return!1;let t=e.getBoundingClientRect();return t.height>=window.innerHeight-Ka&&t.width>=window.innerWidth-Ka}syncFullscreenAffordance(){let e=this.els.zfs;if(!e)return;let n=!(!!document.fullscreenElement||this.fsFallback||this.framedFs)&&this.root?.dataset.layout==="narrow"&&this.fillsViewport();e.hidden=n,e.tabIndex=n?-1:0,e.setAttribute("aria-hidden",String(n))}syncFullscreenButtons(){let e=!!document.fullscreenElement||this.fsFallback||this.framedFs,t=this.eventDetailsHidden&&!e;this.root?.setAttribute("data-event-details-hidden",String(t)),this.root?.setAttribute("data-fs",String(e)),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 n=this.els.zfs?.querySelector(".sl-zfs-lbl");n&&(n.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)),this.syncFullscreenAffordance()}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,background:this.cssVar("--sl-bg")||void 0}),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){pt();let t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=document.createElement("div");n.className="sl-modal-scrim";let s=document.createElement("div");s.className="sl-modal-frame",s.style.setProperty("--sl-bg",it(void 0,e.theme)["--sl-bg"]),s.setAttribute("role","dialog"),s.setAttribute("aria-modal","true"),s.setAttribute("aria-label",b("picker.seatSelection","Seat selection")),s.tabIndex=-1,n.appendChild(s),document.body.appendChild(n);let r=document.body.style.overflow;document.body.style.overflow="hidden";let o=new i({...e,container:s});o.modalScrim=n,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(y=>y.isConnected&&!y.closest('[hidden], [aria-hidden="true"], [inert]'));return g[g.length-1]??s},c=(g,y)=>{let k=g;for(;k;){let S=window.getComputedStyle(k);if(k.hidden||k.getAttribute("aria-hidden")==="true"||k.hasAttribute("inert")||S.display==="none"||S.visibility==="hidden"||S.visibility==="collapse")return!0;if(k===y)return!1;k=k.parentElement}return!0},d=g=>[...g.querySelectorAll(a)].filter(y=>y.tabIndex>=0&&!y.matches(":disabled")&&!c(y,g)),p=(g,y)=>{let k=d(g),S=y?k[k.length-1]:k[0];S?S.focus({preventScroll:!0}):(g.hasAttribute("tabindex")||(g.tabIndex=-1),g.focus({preventScroll:!0}))},u=!1,h=()=>{if(u)return;u=!0,document.body.style.overflow=r,o.escHandler&&document.removeEventListener("keydown",o.escHandler),n.remove(),o.modalScrim=null;let g=o.prevFocus;o.prevFocus=null,g?.isConnected&&g.focus({preventScroll:!0});let y=()=>{o.destroy(),e.onClose?.()};o.hold&&!o.handedOff?o.release().finally(y):y()};return o.closeModal=h,n.addEventListener("mousedown",g=>{g.target===n&&h()}),o.escHandler=g=>{if(g.key==="Tab"){if(g.defaultPrevented)return;let y=l(),k=d(y),S=k[0],v=k[k.length-1],f=document.activeElement;!S||!v?(g.preventDefault(),p(y,g.shiftKey)):f===y||!f||!y.contains(f)?(g.preventDefault(),(g.shiftKey?v:S).focus({preventScroll:!0})):g.shiftKey&&f===S?(g.preventDefault(),v.focus({preventScroll:!0})):!g.shiftKey&&f===v&&(g.preventDefault(),S.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(),h()))},document.addEventListener("keydown",o.escHandler),await o.render(),o.els.close?.classList.add("on"),o.els.close?.addEventListener("click",h),p(l(),!1),o}wireController(e){return new Ep({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,...e.loadingReveal?{loadingReveal:e.loadingReveal}:{},mapTheme:tt(e.theme),onSeatsRevealed:()=>{this.seatsRevealed=!0,e.onSeatsRevealed?.(),this.seatsRevealedReport?.()},onGAClick:t=>{let n=this.controller.getGAAreas().find(s=>s.id===t);n&&(this.collapseSheet(),rn(this,n,this.lastMapPoint))},onSelectionChange:()=>{this.syncTray(),this.minimap?.refreshMinimap(),this.committedSelection().length&&this.collapseSectionCard(),this.syncSelectionTo3d()},onStatusChange:(t=>{this.syncSeatMarks(),this.syncPrices(),this.a11yMenu?.syncCounts(),pr(t)&&this.scheduleOfferRefresh(!0),this.evictTakenSelections(),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()}),onHoldExpired:()=>{let t=this.handedOff,n=this.holdConflicted;this.holdExpiredUnits=La(this.hold),this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.holdConflicted=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.lapse.deferExpiryToast(()=>{if(t||n){this.toast(B("picker.holdExpired",void 0)||"Your hold expired \u2014 seats released. Pick again.","warning");return}this.showHoldExpired()}),this.syncTray(),this.emitHoldChange(),this.opts.onHoldExpired?.()},onAvailabilityRefresh:t=>this.lapse.handle(t),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.collapseSheet(),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=>{if(this.controller.currentHold()?.labels.includes(t.label)){this.removeHeldLabels([t.label]);return}if(this.confirmSeat?.id===t.id){this.dismissConfirm();return}if(this.tableDialog?.physicalSeatIds.includes(t.id)){this.dismissTableDialog();return}this.opts.confirmSelection===!1||this.salesClosed||this.controller.tableSelection(t.id)||(this.controller.select([t.id]),this.showConfirm(t,"remove"))},onSelectionLimit:()=>{this.toast(B("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),hostCardOpen:()=>this.tipPinned||!!this.confirmSeat,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={},n=A=>Math.round((performance.now()-A)*100)/100;this.rendered=!0,pt();let s=performance.now(),r=Jt(this.opts.locale,this.opts.messages),o=this.localeGeneration+=1;this.checkoutMode==="hosted"&&(this.paymentOptions=this.pubApi.paymentOptions(this.opts.event));let a=performance.now(),l=$s(this.opts.container),{root:c,els:d,mapHost:p}=ms(l,(A,D)=>this.tf(A,D),this.opts.theme);this.root=c,this.els=d,this.mapHost=p,ei(c,r,A=>{t.loadLocale=n(s),this.destroyed||this.applyActiveLocale(A,o)}),uo(c,()=>[{open:()=>!!this.holdExpiredEl,close:()=>this.restartAfterHoldExpiry()},{open:()=>this.tipPinned,close:()=>this.unpinTooltip()},{open:()=>!!this.tableDialog,close:()=>this.cancelTableDialog()},{open:()=>!!this.confirmSeat,close:()=>this.cancelConfirm()},{open:()=>this.bestAvailableConfirm,close:()=>{this.bestAvailableConfirm=!1,this.syncTray()}}]),this.syncFullscreenButtons(),this.wireBuyerShell(c);let u=document.createElement("div");u.style.cssText="position:absolute;inset:0",this.mapHost.appendChild(u),t.mountBuyerShell=n(a),t.skeletonPaint=n(e),this.startRealtime();let h=await this.loadChart(u,t,n);if(!h)return this.realtime?.stop(),this.realtime=null,this;t.shellsPaint=n(e);let g=performance.now();if(this.salesClosed=!!h.salesClosed||!!this.opts.readOnly,c.dataset.eventMode=h.mode==="test"?"test":"live",!this.opts.locale&&h.locale&&this.setLocale(h.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),h.mode==="test"){let A=document.createElement("div");A.className="sl-testbadge",A.textContent=Vs(B("picker.testMode"),Ua()),A.setAttribute("aria-label",B("picker.testMode")),A.title=this.tf("picker.testModeExplained","Bookings here are not real and no card is charged"),this.regions["top-left"].appendChild(A)}let y=this.controller.doc?.theme;this.themeMode=this.opts.theme?.mode??null,this.applyThemeTokens(c),this.watchThemeMode(),this.currency=h.currency??this.opts.currency??"USD",this.eventTimezone=h.timezone??null,zs(this.els.logo,[this.opts.theme?.logoUrl,y?.logoUrl,h.posterUrl],this.opts.theme?.brandName??y?.brandName??h.eventName??"?"),this.els.name.textContent=h.eventName??"";let k=h.startsAt?hi(h.startsAt,h.timezone??null,this.opts.locale):"";this.eventWhenText=k||null,this.els.meta.textContent=[h.venue,k].filter(Boolean).join(" \xB7 "),this.syncProjection(),this.buildBadge(y);let S=!!this.controller.doc&&this.controller.getExpandedSeats().some(A=>A.commercial?.restrictedView||A.commercial?.obstructedView);this.buildAccessibilityMenu(S),this.buildLanguageSwitcher(this.els.zoom??this.regions["bottom-right"]),this.srEl=document.createElement("div"),this.srEl.className="sl-sr",this.srEl.setAttribute("aria-live","polite"),c.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=n(g);let v=performance.now();if(await this.restoreRememberedHold(),t.restoreHold=n(v),this.destroyed)return this;this.dismissSkeleton(),this.salesClosed&&this.applySalesClosed(),this.syncPrices(),this.syncTray(),this.resumeHostedOrder();let f=this.controller.doc,P=yi(this.opts.event),_=this.performanceGroup?.surface??(this.performanceGroup?"performance_group":null),C=_??"event",R={apiBase:this.apiBase,eventKey:this.opts.event,metricScope:C,surface:_==="season"?"season_picker":_==="performance_group"?"performance_group_picker":"seat_picker",ms:n(e),performanceProfile:t,chartDelivery:h.chartDelivery,seatCount:this.allSeats().length,objectCount:f?.objects.length??0,sectionCount:f?.objects.filter(A=>A.type==="section").length??0,floorCount:this.controller.getFloors().length,chartName:f?.name,view:this.buyerView,load:P,transport:this.opts.transport?"custom":"pubapi"};vo(R,(A,D)=>this.emitAnalytics(A,D));let H=h.performanceProfile;return this.seatsRevealedReport=()=>this.emitAnalytics("chart_seats_revealed",Rn({...R,performanceProfile:{...R.performanceProfile,...H}})),this.seatsRevealed&&this.seatsRevealedReport(),this.renderInfo=h,await this.registerAgentTools(),this}registerAgentTools(){return yo(this)}webMcpHost(e){return Hn(this,e)}wireBuyerShell(e){this.refreshOfferAvailability(!1),this.api.availability&&(this.offerVisibilityHandler=()=>{!document.hidden&&!this.destroyed&&this.refreshOfferAvailability(!1)},document.addEventListener("visibilitychange",this.offerVisibilityHandler)),this.detachAttention=Va(()=>{this.destroyed||this.controller.refreshAvailability()}),this.observeLayout(e),this.els.zin.addEventListener("click",()=>this.controller.zoomIn()),this.els.zout.addEventListener("click",()=>this.controller.zoomOut()),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,r=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"))};r(e.dataset.sheet==="open"),s?.addEventListener("click",c=>{c.stopPropagation(),r(e.dataset.sheet!=="open")}),this.els.peek?.addEventListener("click",c=>{let d=c.target.closest(".sl-sheet-go");d&&(c.stopPropagation(),d.dataset.act==="checkout"?this.handleCta():d.dataset.act==="find"?(r(!0),this.els.tray?.querySelector(".sl-ba")?.scrollIntoView({block:"nearest",behavior:this.reducedMotion()?"auto":"smooth"}),this.els.tray?.querySelector(".sl-ba-go")?.focus()):r(!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 d=c.clientY-o;d<-18?(r(!0),a=!0):d>18&&(r(!1),a=!0)}),t.addEventListener("pointerup",c=>{l&&!a&&Math.abs(c.clientY-o)<6&&r(e.dataset.sheet!=="open"),l=!1,t.releasePointerCapture?.(c.pointerId)})}let n=()=>{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 r=this.els.sheetToggle;r?.setAttribute("aria-expanded","true"),r?.setAttribute("aria-label","Collapse ticket panel")}};this.els.pricesSec?.addEventListener("click",s=>{s.target.closest("select,button")||n()}),this.els.pricesSec?.addEventListener("keydown",s=>{s.key!=="Enter"&&s.key!==" "||s.target.closest("select,button")||(s.preventDefault(),n())}),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.handleMapPointerDown(s)},!0),this.els.map.addEventListener("mousemove",s=>{if(this.tipPinned)return;let r=this.els.map.getBoundingClientRect();this.tipPos={x:s.clientX-r.left,y:s.clientY-r.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()}),this.els.cta.addEventListener("click",()=>{this.handleCta()})}collapseSheet(){let e=this.root;!e||e.dataset.layout!=="narrow"||e.dataset.sheet!=="open"||(e.dataset.sheet="peek",this.els.sheetToggle?.setAttribute("aria-expanded","false"),this.els.sheetToggle?.setAttribute("aria-label",this.tf("picker.openTicketPanel","Open ticket panel")))}observeLayout(e){let t=()=>{let n=e.clientWidth;if(n<=0)return;let s=e.clientHeight,r=n!==this.pickerLayoutSize.width||s!==this.pickerLayoutSize.height;this.pickerLayoutSize={width:n,height:s},this.reportFramedHeight();let o=n<640?"narrow":"wide",a=s<560?"compact":"comfortable";(e.dataset.layout!==o||e.dataset.density!==a)&&(e.dataset.layout=o,e.dataset.density=a,this.controller.getRenderer()?.setSectionFocusDim?.(o!=="narrow"),o==="narrow"&&!e.dataset.sheet&&(e.dataset.sheet="peek"),this.dockLayoutChrome(),this.syncMinimapForLayout(),this.lastTrayKeys.size&&this.syncTray(),this.syncMapStepBack(),this.refreshExtendPrompt()),this.syncFullscreenAffordance(),r&&(this.minimap?.refreshMinimap(),this.scheduleFit())};this.ro=new ResizeObserver(t),this.ro.observe(e),t(),requestAnimationFrame(t)}async loadChart(e,t,n){let s=performance.now(),r=await this.controller.render(e);return t.loadChartAndStatuses=n(s),this.destroyed?null:r?(Object.assign(t,r.performanceProfile),r):(Te({apiBase:this.apiBase,event:this.opts.event,scope:this.performanceGroup?.surface??(this.performanceGroup?"performance_group":"event"),surface:this.performanceGroup?.surface==="season"?"season_picker":this.performanceGroup?"performance_group_picker":"seat_picker",outcome:"failure",stage:"load_chart",ms:t.loadChartAndStatuses,performanceProfile:t,view:"map",load:Ie(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 i({...a,container:o}).render()}),null)}resumeHostedOrder(){if(this.checkoutMode!=="hosted")return;let e=ji(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()}buildAccessibilityMenu(e){let t=this.regions["bottom-left"]??this.els.map;t&&(this.a11yMenu=new Fi(t,{event:String(this.opts.event),chart:()=>this.controller.doc?.name??null,needs:()=>this.controller.getAccessNeeds(),hasLimitedView:e,tf:(n,s)=>this.tf(n,s),isColorblindSafe:()=>this.cbSafe,setColorblindSafe:n=>this.setColorblindSafe(n),isLimitedViewHidden:()=>this.limitedViewFilter,setLimitedViewHidden:n=>{this.limitedViewFilter=n,this.controller.setCommercialLimitedFilter(n),this.pushAvailabilityTo3d()},applyAccessibilityFilter:n=>this.applyAccessibilityFilter(n),focusSeatsForFilter:()=>this.focusSeatsForFilter(),stepToAccessibleSection:n=>this.controller.focusNextAccessibleSection?.([n])??null}),this.cbEl=this.a11yMenu.colorblindRow())}focusSeatsForFilter(){if(this.controller.focusAccessibilityFilter?.()){this.explainAccessibilitySpread();return}this.rungsEl&&this.controller.getRung()!=="seats"&&(this.controller.setRung("seats"),this.collapseSectionCard(),this.syncRung())}explainAccessibilitySpread(){let e=this.controller.accessibilitySpread?.();!e?.wholeVenue||e.sections.length<2||this.toast(B("picker.accessSpreadHint",{count:e.spaces,sections:e.sections.length}),"neutral")}applyAccessibilityFilter(e){this.controller.setAccessibilityFilter(e),this.syncPrices(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()}setAccessibilityFilter(e){this.applyAccessibilityFilter(e),this.a11yMenu?.syncAccessibilityFilter(e),e?.length&&this.focusSeatsForFilter()}focusAccessibilityFilter(){this.focusSeatsForFilter()}dockLayoutChrome(){let e=this.root?.dataset.layout==="narrow";this.applyPanelCollapsed();let t=this.els.zfs,n=this.els.headInfo?.parentElement;t&&n&&t.parentElement!==n&&(t.classList.add("sl-fs-pill"),n.insertBefore(t,this.els.hold??null));let s=this.extendEl;if(s){let o=e?this.regions["bottom-center"]??this.els.map:n;o&&s.parentElement!==o&&(s.dataset.dock=e?"map":"head",o===n?o.insertBefore(s,this.els.close??null):o.appendChild(s))}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.lastSection&&this.renderSectionCard(this.lastSection)}buildExtendPrompt(){Xo(this)}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><ul class="sl-booked-list" data-ref="bookedList"></ul><button type="button" class="sl-booked-back" data-ref="bookedBack"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${I(this.tf("picker.backToMap","Back to map"))}</span></button>`,this.root.appendChild(e),this.bookedEl=e,this.els.bookedSub=e.querySelector('[data-ref="bookedSub"]'),this.els.bookedList=e.querySelector('[data-ref="bookedList"]'),e.querySelector('[data-ref="bookedBack"]')?.addEventListener("click",()=>this.dismissBooked())}get onGAPromptHook(){return this.opts.onGAPrompt}tf(e,t){return b(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(),n=document.createElement("div");n.className="sl-soldout-eyebrow",n.textContent=t;let s=document.createElement("div");s.className="sl-soldout-title",s.textContent=this.tf("picker.soldOutTitle","Sold out");let r=document.createElement("p");r.className="sl-soldout-copy",r.textContent=this.tf("picker.soldOutCopy","No reserved seats are currently available for this event."),e.append(n,s,r),this.els.map.appendChild(e),this.soldoutEl=e}syncSoldout(e,t){let n=this.controller.getGAAreas().length>0,s=this.isSoldOut(e,t,n);s!==this.soldOut&&(this.soldOut=s,this.soldoutEl?.classList.toggle("on",s))}isSoldOut(e,t,n){return!n&&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!!e?.hideBadge}buildBadge(e){if(this.badgeHidden(e))return;let t=this.els.foot;if(!t)return;let n=document.createElement("a");n.className="sl-powered",n.href="https://seatlayer.io/?ref=picker",n.target="_blank",n.rel="noopener noreferrer",n.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=ai;let r=document.createElement("span");r.textContent=this.tf("picker.poweredBy","Powered by SeatLayer"),n.append(s,r),t.appendChild(n)}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 n=document.createElement("div");n.className="sl-anchor",n.dataset.region=t,this.els.map.appendChild(n),this.regions[t]=n}}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 n=setTimeout(()=>{this.motionTimers.delete(n),this.destroyed||e()},t);this.motionTimers.add(n)}animateOnce(e,t,n=600){!e||this.reducedMotion()||(e.classList.remove(t),e.offsetWidth,e.classList.add(t),this.scheduleMotion(()=>e.classList.remove(t),n))}flashPickedSeat(e){this.reducedMotion()||this.controller.flashSeat(e,this.cssVar("--sl-accent")||"#f4b740")}flashHeldSeats(e){let t=this.reducedMotion(),n=(e.items??[]).filter(s=>s.objectType!=="ga").slice(0,10).map(s=>this.controller.seatByLabel(s.label)).filter(s=>!!s);Xs({regions:this.els,categories:this.controller.doc?.categories,pop:s=>this.controller.flashSeat(s,this.cssVar("--sl-accent")||"#f4b740"),focus:(s,r)=>this.controller.focusSection(s,r),focusSeats:s=>this.controller.focusSeats?.(s,{animate:!t})===!0,reducedMotion:t,screenPoint:s=>this.controller.worldToScreen(s),schedule:(s,r)=>this.scheduleMotion(s,r)},n)}committedSelection(){let e=this.confirmSeat?.id,t=this.tableDialog&&!this.tableDialogHeld?this.tableDialog.id:null;return this.controller.getSelection().filter(n=>n.id!==e&&n.id!==t)}pendingSelectionCount(){return Zo(this)}heldTicketCount(){return Jo(this)}totalTicketCount(){return ea(this)}updateSelectionCapacity(){ta(this)}syncCta(e=this.lastTrayCount,t=this.pendingSelectionCount()){ia(this,e,t)}setCtaPhase(e){na(this,e)}runCheckoutHandoff(e,t){return sa(this,e,t)}holdStorageKey(){return ra(this)}rememberedHoldId(){return oa(this)}rememberHold(e){aa(this,e)}forgetHold(){la(this)}resumeHoldFromServer(e){return ca(this,e)}restoreRememberedHold(){return da(this)}activeFloorObjects(){let e=this.controller.doc;if(!e)return[];let t=e.floors;if(t?.length){let n=this.controller.getActiveFloorId();return(t.find(s=>s.id===n)??t[0]).objects??[]}return e.objects??[]}buildMinimap(){!this.els.map||this.root?.dataset.layout==="narrow"||(this.minimap=ao({controller:this.controller,root:()=>this.root,cssVar:e=>this.cssVar(e),focusedSectionLabel:()=>this.lastSection?.label},this.regions["bottom-left"]??this.els.map))}syncMinimapForLayout(){let e=this.root?.dataset.layout==="narrow";if(e&&this.minimap){this.minimap.dispose(),this.minimap=null;return}!e&&!this.minimap&&this.buildMinimap()}catPrice(e){return Ii(this,e)}catPriceRange(e){return Oi(this,e)}buildPriceFilter(){xa(this)}applyPriceBand(e){Sa(this,e)}buildArenaChrome(){let e=this.controller.doc;if(!e||!this.els.map)return;let t=e.objects.some(n=>n.type==="section")||(e.floors??[]).some(n=>n.objects.some(s=>s.type==="section"));if(this.canOffer3d()){let n=document.createElement("div");n.className="sl-projection",n.setAttribute("role","group"),n.setAttribute("aria-label",this.tf("picker.venueView","Venue view")),n.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>`,n.querySelectorAll("button").forEach(s=>{if(s.dataset.view==="venue3d")for(let r of["pointerenter","focus","pointerdown"])s.addEventListener(r,ci,{once:!0});s.addEventListener("click",()=>{this.setBuyerView(s.dataset.view)})}),this.regions["top-right"].appendChild(n),this.projectionEl=n,this.syncProjection()}if(t){let n=[...e.objects,...(e.floors??[]).flatMap(d=>d.objects)],s=new Set((e.zones??[]).map(d=>d.id)),o=n.some(d=>d.type==="section"&&typeof d.zone=="string"&&s.has(d.zone))?["zones","sections","seats"]:["sections","seats"],a=document.createElement("div");a.className="sl-rungs on sl-mo-indicator",a.setAttribute("role","group"),a.setAttribute("aria-label",B("picker.zoomLevel"));let l={zones:B("picker.rungLabel.zones"),sections:B("picker.rungLabel.sections"),seats:B("picker.rungLabel.seats")},c={zones:B("picker.rungTip.zones"),sections:B("picker.rungTip.sections"),seats:B("picker.rungTip.seats")};a.innerHTML=o.map(d=>`<button type="button" data-rung="${d}" title="${c[d]}" aria-pressed="false">${l[d]}</button>`).join(""),a.querySelectorAll("button").forEach(d=>{d.addEventListener("click",()=>{let p=d.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 n=Rr({floors:this.controller.getFloors(),tf:(s,r)=>this.tf(s,r),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(n),this.floorsEl=n,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.syncMapStepBack(),this.minimap?.setAutoOpen(!1),this.rungsEl&&this.rungsEl.querySelectorAll("button").forEach(n=>{let s=n.dataset.rung===e;n.classList.toggle("on",s),n.setAttribute("aria-pressed",String(s))})}syncMapStepBack(){let e=this.els?.zout;if(!(!e||!this.root)){if(this.root.dataset.layout!=="narrow"){e.disabled&&(e.disabled=!1);return}e.disabled=ur({focusedSection:this.controller.getFocusedSection?.()??null,seatsRevealed:this.controller.seatsRevealed?.()??!0})==="none"}}syncProjection(){this.els.pricesHint&&(this.els.pricesHint.textContent=this.buyerView==="venue3d"?this.tf("picker.priceHint3d","Colours in the venue are ticket types \u2014 choose one below to show just those seats."):this.tf("picker.priceHint","Colours on the map are ticket types \u2014 tap one below to show just those seats.")),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||!li()?!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)?qa/2:qa}syncFloors(){Ir(this.floorsEl,this.controller.getActiveFloorId(),this.controller.isFloorOverview())}get sectionCard(){return this.sectionCardCache||(this.sectionCardCache=new Ti({controller:this.controller,map:()=>this.els.map,root:()=>this.root,collapseSheet:()=>this.collapseSheet(),region:e=>this.regions[e],refreshMinimap:()=>this.minimap?.refreshMinimap(),activeFloorObjects:()=>this.activeFloorObjects(),sectionNeighbours:e=>this.sectionNeighbours(e),catPriceRange:e=>this.catPriceRange(e),money:e=>this.money(e),suppressPricing:()=>this.suppressPricing,priceBandKeys:()=>this.priceBandKeys})),this.sectionCardCache}showSectionCard(e){this.sectionCard.show(e)}renderSectionCard(e){this.sectionCard.render(e)}collapseSectionCard(){this.sectionCard.collapse()}sectionCardOnView(){this.sectionCard.onView()}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 n=t.findIndex(s=>s.id===e);return n<0?null:{previous:t[(n-1+t.length)%t.length],next:t[(n+1)%t.length]}}markedSeatAnnouncement(e){let t=Tn(this.controller.getRenderer()?.getSeatMark?.(e.id),this.performanceGroup?.nights?.());return Gr(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 n=this.controller.doc?.categories.find(h=>h.key===e.categoryKey),s=this.controller.getStatus(e.id)??"free",r=s==="free"?this.tf("picker.statusAvailable","available"):s==="held"?this.tf("picker.statusOnHold","on hold"):this.tf("picker.statusTaken2","taken"),o=n?this.catPriceRange(n):void 0,a=!this.suppressPricing&&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),d=je(c),p=c?.rowLabel??c?.displayLabel??e.displayLabel??e.label,u=l?`${d} ${p}, ${l.bookingMode==="variable"?B("picker.minToMaxGuests",{min:l.minOccupancy,max:l.maxOccupancy}):B("picker.capacityGuests",{count:l.capacity})}`:c?.objectType==="booth"?`${d} ${p}`:c?.objectType==="table"?`${d} ${p}, ${B("picker.seatNumberLower",{label:c.seatNumber??e.label})}`:B("picker.seatLabel",{label:c?.displayLabel??e.displayLabel??e.label});this.srEl.textContent=`${u}, ${n?.label??e.categoryKey}${a?`, ${a}`:""}, ${r}`}showTableDialog(e,t,n){this.dismissTableDialog(!1),this.tableDialog={...e},this.tableDialogHeld=t,this.tableDialogReturnFocus=n??document.activeElement;let s=this.controller.doc?.categories.find(a=>a.key===e.categoryKey),r=e.bookingMode==="variable",o=document.createElement("div");o.className="sl-table-scrim",o.innerHTML=Lr(e,{variable:r,held:t,typeWord:je(e),categoryLabel:s?.label??e.categoryKey,suppressPricing:this.suppressPricing,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],d=l[l.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),d.focus()):!a.shiftKey&&document.activeElement===d&&(a.preventDefault(),c.focus())}),requestAnimationFrame(()=>o.querySelector(r?'[data-table-step="-1"]':".sl-table-confirm")?.focus())}renderTableDialogState(){let e=this.tableDialog,t=this.tableDialogEl;if(!e||!t)return;let n=t.querySelector("output[data-table-qty]");n&&(n.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 r=this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label),o=t.querySelector("[data-table-total]");o&&(o.textContent=this.money(r*e.quantity))}async confirmTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;if(!e)return;let n=this.tableDialogEl?.querySelector(".sl-table-confirm");if(n&&(n.disabled=!0,n.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(),n&&(n.disabled=!1,n.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(B("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"),n&&(n.disabled=!1,n.textContent=this.tf("picker.updateTable","Update table"))}return}if(!this.controller.setTableQuantity(e.label,e.quantity)){n&&(n.disabled=!1,n.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())}get confirmCard(){return this.confirmCardCache||(this.confirmCardCache=new Mi({controller:this.controller,root:()=>this.root,els:()=>this.els,regions:()=>this.regions,hideTooltip:()=>{this.tipEl&&(this.tipEl.style.display="none")},tf:(e,t)=>this.tf(e,t),money:e=>this.money(e),paidPrice:(e,t,n,s)=>this.paidPrice(e,t,n,s),suppressPricing:()=>this.suppressPricing,reducedMotion:()=>this.reducedMotion(),scheduleMotion:(e,t)=>this.scheduleMotion(e,t),canOffer3d:()=>this.canOffer3d(),buyerView:()=>this.buyerView,view3dHandle:()=>this.view3dHandle,view3dCompareSeatIds:()=>this.view3dCompareSeatIds,rememberView3dReturnSeat:e=>{this.view3dReturnSeat=e},enter3d:e=>{this.enter3d(e)},performanceGroup:()=>this.performanceGroup,seatViewEnabled:()=>this.seatViewEnabled(),openSeatView:e=>{this.openSeatView(e)},openSeatConfidencePassport:(e,t)=>this.openSeatConfidencePassport(e,t),saveView3dComparisonSeat:e=>this.saveView3dComparisonSeat(e),resolveAssetUrl:e=>this.buyerAssetUrls.resolve(e),onError:e=>this.opts.onError?.(e),liftToastOverConfirm:()=>this.liftToastOverConfirm(),fitTranslatedRows:()=>this.fitTranslatedRows(),syncTray:()=>this.syncTray(),syncSelectionTo3d:()=>this.syncSelectionTo3d(),collapseSectionCard:()=>this.collapseSectionCard(),applyPanelCollapsed:()=>this.applyPanelCollapsed(),dismiss:()=>this.dismissConfirm(),reanchor:()=>this.reanchorConfirm(),inviteCommit:(e,t)=>this.inviteCommit(e,t),addSeatLabel:e=>this.addSeatLabel(e)})),this.confirmCardCache}showConfirm(e,t="add"){this.confirmCard.show(e,t)}reanchorConfirm(){this.confirmCard.reanchor()}dismissConfirm(){this.confirmCard.dismiss()}async commitConfirm(){await this.confirmCard.commit()}cancelConfirm(){this.confirmCard.cancel()}closeConfirm(){this.dismissConfirm()}inviteCommit(e,t){ro(e,t,this.reducedMotion())}addSeatLabel(e){return oo(e,(t,n)=>this.tf(t,n))}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,n=this.controller.doc,s=this.controller.getActiveFloorId(),r=e.focalPoint??n?.floors?.find(p=>p.id===s)?.focalPoint??n?.focalPoint??{x:0,y:0},o,a,l=!1;if(e.viewUrl){let p,u=null;try{let g=e.viewMeta?.previewUrl;g&&g!==e.viewUrl?(u=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&&!u||!this.root||!this.seatViewEnabled())return;let h={url:p,...u?{previewUrl:u}:{},...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=h,a=Mp(h),l=Lp(h)}else{let p;try{let{generateSeatPanorama:u}=await di();p=u(e,r,this.allSeats())}catch(u){t===this.seatViewGen&&this.opts.onError?.(u);return}if(t!==this.seatViewGen||!this.root||!this.seatViewEnabled())return;o={url:p.url,generated:!0},a=B("picker.illustrationCaption",{m:p.distanceM})}this.closeSeatView(!1);let c=B("picker.viewFromSeat",{label:e.label}),d=fi({root:this.root,source:o,caption:a,real:l,closeLabel:this.tf("picker.close","Close"),dragHint:Ve(),viewFromSeatLabel:c,real360Label:B("picker.real360"),previewLabel:B("picker.preview"),resolveAsset:p=>this.buyerAssetUrls.resolve(p),onClose:()=>this.closeSeatView()});this.viewEl=d.element,this.viewCleanup=()=>d.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 n=Number.isInteger(e);return Cp(e,this.currency,{locale:this.opts.locale,fallback:(s,r)=>`${s} ${r}`,...n?{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(),n=hr(e,t);if(n==null)return;let s=6*36e5,r=Math.min(Math.max(n-t+1e3,1e3),s);this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},r)}offerReadIsCurrent(){return!!this.offerReadInFlight||Date.now()-this.offerReadSettledAt<Ip}scheduleOfferRefresh(e){!this.api.availability||this.destroyed||this.offerReadIsCurrent()||(this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerRefreshTimer=setTimeout(()=>{this.offerRefreshTimer=null,this.refreshOfferAvailability(e)},e?180:0))}refreshOfferAvailability(e){if(!this.api.availability||this.destroyed)return Promise.resolve();if(this.offerReadInFlight)return this.offerReadInFlight;if(this.offerReadIsCurrent())return Promise.resolve();let t=this.readOfferAvailability(e).finally(()=>{this.offerReadInFlight===t&&(this.offerReadInFlight=null)});return this.offerReadInFlight=t,t}async readOfferAvailability(e){if(!(!this.api.availability||this.destroyed))try{let t=await this.api.availability(this.opts.event,e);if(this.destroyed)return;this.offerReadSettledAt=Date.now();let n=bn(t);if(!n)return;this.offerAvailability=n,this.applyChannelPricing(n.channelPricing),this.scheduleOfferBoundary(n);let s=yn(n),r={...this.hostPricing?.prices??{},...s},o=Object.keys(r).length>0||this.hostPricing?.formatter?{prices:r,...this.hostPricing?.formatter?{formatter:this.hostPricing.formatter}:{}}:void 0;this.setPricing(o),this.syncOffer(),this.opts.onOfferAvailabilityChange?.(n)}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;if(this.suppressPricing){e.classList.remove("has"),e.replaceChildren();return}let t=this.offerAvailability,n=t?.release??null,s=n?null:t?.upcoming??null;if(!t||t.state==="closed"||t.state==="sold-out"||!n&&!s){e.classList.remove("has"),e.replaceChildren();return}let r=n??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=n?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=r.name||(n?this.tf("picker.currentOffer","Current offer"):this.tf("picker.scheduledOffer","Scheduled offer"));let d=document.createElement("span");d.className="sl-offer-line";let p=[];n&&t.fromPrice!=null&&p.push(this.money(t.fromPrice/100)),n&&r.remaining!=null&&p.push(B("picker.offerRemainingAvailable",{count:r.remaining})),n&&r.endsAt!=null&&p.push(B("picker.offerUntil",{time:hi(r.endsAt,this.eventTimezone,this.opts.locale)})),s?.startsAt!=null&&p.push(B("picker.offerStarts",{time:hi(s.startsAt,this.eventTimezone,this.opts.locale)})),d.textContent=p.join(" \xB7 "),a.append(l,c,d);let u=document.createElement("details");u.className="sl-offer-info";let h=document.createElement("summary");h.setAttribute("aria-label",B("picker.howOfferWorks",{name:c.textContent??""})),h.textContent="i";let g=document.createElement("div");g.className="sl-offer-detail",g.textContent=n?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."),u.append(h,g),o.append(a,u),e.replaceChildren(o),e.classList.add("has")}paidPrice(e,t,n,s){let r=s?this.channelByObject.get(s):void 0;if(r&&e){let a=this.pricesByChannel.get(r)?.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?n:typeof o=="number"?o:t&&o.tiers?.[t]!==void 0?o.tiers[t]:o.base??n}legendDeps(){return ka(this)}syncPriceRail(e,t,n=this.legendDeps()){Ta(this,e,t,n)}syncPrices(){Ea(this)}focusCategory(e){Ca(this,e)}evictTakenSelections(){let e=new Set([...this.controller.currentHold()?.labels??[],...this.holdingLabels]),t=this.controller.getSelection().filter(n=>!e.has(n.label)&&(this.controller.getStatus(n.id)??"free")!=="free");t.length&&(this.controller.deselect(t.map(n=>n.id)),this.toast(B("picker.seatJustTakenByAnother",{label:t[0].label}),"error"))}syncTray(){if(!this.els.tray)return;this.updateSelectionCapacity();let{seats:e,gaAreas:t,heldItems:n,heldLabels:s,total:r,count:o}=Ri(this),a=[],l=new Set;if(!this.salesClosed){let f=this.performanceGroup?.nightSummary?.()??[];f.length&&a.push(Nr(f,{title:this.tf("picker.group.yourSeatsByNight","Your seats by night"),empty:this.tf("picker.group.noSeatsChosenYet","No seats yet")}));let P=this.performanceGroup?.selectionModeSwitch;P&&a.push(`<button type="button" class="sl-pg-switch" data-pg-switch-mode>${I(P.label)}</button>`)}a.push(Wo({salesClosed:this.salesClosed,hasPicks:e.length>0||n.length>0,hasGaAreas:t.length>0,groupMode:this.performanceGroup?this.performanceGroup.selectionMode??"same_seat":null,seated:!!this.controller.doc?.objects?.some(f=>f.type!=="gaArea"),venue3d:this.buyerView==="venue3d",whenText:this.eventWhenText?String(this.eventWhenText):void 0}));let c=!e.length&&!n.length&&!Re(this.gaQty,this.hold?.items??[]);if(!this.performanceGroup&&!this.salesClosed&&!this.hold&&(c||this.bestAvailableBusy||this.bestAvailableConfirm)){let f=(this.controller.doc?.categories??[]).filter(_=>!_.notForSale),P=this.controller.getBestAvailableZones();this.baZone&&!P.some(_=>_.id===this.baZone)&&(this.baZone=""),a.push(Ko({confirming:this.bestAvailableConfirm,busy:this.bestAvailableBusy,reopened:!1,quantity:this.baQty,premium:this.baPremium,offerPremium:this.controller.hasPremiumSeats(),categories:f,zones:P,selectedCategory:this.baCat,selectedZone:this.baZone}))}let d=(f,P,_,C=1,R,H,A)=>Uo({categoryLabel:A,d:f?this.controller.seatDetails(f):null,area:_==="ga"?t.find(D=>D.id===R):void 0,label:P,objectType:_,quantity:C,identity:H,performanceLabel:this.performanceGroup?.activePerformanceLabel?.(),performanceDates:this.performanceGroup?.selectedPerformanceDates?.()}),p=I,u=[];for(let f of Ps(n)){let P=f.objectType==="ga"?`held:ga:${f.objectId}:${f.tierId??""}`:`held:${f.label}`;l.add(P);let _=this.controller.doc?.categories.find(U=>U.key===f.categoryKey),C=f.tierId?_?.tiers?.find(U=>U.id===f.tierId)?.name:void 0,R=f.objectType!=="ga"?this.controller.seatByLabel(f.label):null,H=f.objectType==="table"?this.controller.tableSelection(f.label):null,A=R?this.controller.seatDetails(R.id):null,D=this.seatViewEnabled()&&!!R&&f.objectType!=="table"&&!!this.deliverableViewReference(R),O=p(this.tf("picker.heldForYou","Held for you")),N=(H?.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${p(encodeURIComponent(f.label))}">${p(B("picker.guestsCountEdit",{count:f.quantity??1}))}</button>`:"")+Nt(R?.wheelchairSpaceType)+wn(R?.commercial),se=this.paidPrice(f.categoryKey,f.tierId,f.unitPrice,f.label)*(f.quantity??1);u.push({key:P,fresh:!this.lastTrayKeys.has(P),held:!0,seatIds:[],heldLabels:f.labels,removeAria:B("picker.removeHeldTicketLabel",{label:sn(f,t)}),locateId:R?.id??null,section:A?.sectionLabel??"",rowLabel:A&&q(A)||"",seatLabel:A?.seatNumber??f.label,categoryLabel:`${_?.label??f.categoryKey}${C?` \xB7 ${C}`:""}`,categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(f.categoryKey)??_?.color??"",identityHtml:d(R?.id??null,f.label,f.objectType,f.quantity??1,f.objectId,H??void 0,`${_?.label??f.categoryKey}${C?` \xB7 ${C}`:""}`),stateHtml:`<span class="sl-ticket-state held" aria-label="${O}" title="${O}"><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>`,extrasHtml:N,amount:se,amountText:this.suppressPricing?"":this.money(se),noteHtml:xn(R?.commercial),railHtml:this.performanceGroup?"":_n(B("picker.removeHeldTicketLabel",{label:sn(f,t)}),D?f.label:null),groupable:!N&&!!A?.sectionLabel&&!this.performanceGroup})}let h=this.seatViewEnabled();for(let f of e.filter(P=>!s.has(P.label))){let P=`seat:${f.id}`;l.add(P);let _=this.controller.doc?.categories.find(U=>U.key===f.categoryKey),C=f.tiers&&f.tiers.length&&!this.suppressPricing?`<select class="tier" data-tier="${p(f.id)}" aria-label="${p(B("picker.ticketTierFor",{label:f.label}))}">`+f.tiers.map(U=>`<option value="${p(U.id)}"${U.id===f.tierId?" selected":""}>${p(U.name)} \xB7 ${p(this.money(this.paidPrice(f.categoryKey,U.id,U.price,f.label)))}</option>`).join("")+"</select>":"",R=f.tiers?.find(U=>U.id===f.tierId)??f.tiers?.[0],H=R?.buyerMessage?.trim()||(R?.restriction==="companion"?this.tf("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):""),A=this.controller.seatDetails(f.id),D=p(this.tf("picker.selected","Selected")),O=B("picker.removeSeatLabel",{label:f.label}),N=(f.objectType==="table"&&f.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${p(encodeURIComponent(f.label))}">${p(B("picker.guestsCountEdit",{count:f.quantity??1}))}</button>`:"")+Nt(f.wheelchairSpaceType)+wn(f.commercial)+C,se=this.paidPrice(f.categoryKey,f.tierId??null,f.price,f.label)*(f.quantity??1);u.push({key:P,fresh:!this.lastTrayKeys.has(P),held:!1,seatIds:[f.id],heldLabels:[],locateId:f.id,section:A?.sectionLabel??"",rowLabel:A&&q(A)||"",seatLabel:A?.seatNumber??f.label,categoryLabel:_?.label??f.categoryKey,identityHtml:d(f.id,f.label,f.objectType,f.quantity??1,f.objectId,f,_?.label??f.categoryKey),categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(f.categoryKey)??_?.color??"",stateHtml:`<span class="sl-ticket-state" aria-label="${D}" title="${D}"><svg viewBox="0 0 24 24"><path d="M5 12l4 4L19 6"/></svg></span>`,extrasHtml:N,amount:se,amountText:this.suppressPricing?"":this.money(se),removeAria:O,noteHtml:xn(f.commercial)+(H?`<small class="sl-tier-note">${p(H)}</small>`:""),railHtml:_n(O,h&&f.objectType!=="table"&&this.deliverableViewReference(this.controller.seatByLabel(f.label)??{})?f.label:null),groupable:!N&&!H&&!!A?.sectionLabel&&!this.performanceGroup})}u.length&&a.push(this.root?.dataset.layout==="narrow"?Ba(u,{money:f=>this.money(f),suppressPricing:this.suppressPricing}):u.map(Da).join("")),t.length&&a.push(Is(this,t,n)),this.els.tray.innerHTML=a.join("")+(this.salesClosed?"":this.lapse.noteHtml()),this.lastTrayKeys=l,Na(this.els.tray),this.lapse.wire(this.els.tray),this.els.tray.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>this.performanceGroup?.selectionModeSwitch?.activate());let g=this.performanceGroup?.selectNight;g&&Yr(this.els.tray,f=>g(f)),this.els.tray.querySelectorAll("[data-ba]").forEach(f=>{f.addEventListener("click",()=>{this.baQty=Math.max(1,Math.min(this.maxTickets,this.baQty+Number(f.dataset.ba))),this.syncTray()})}),this.els.tray.querySelector("[data-ba-cat]")?.addEventListener("change",f=>{this.baCat=f.target.value}),this.els.tray.querySelector("[data-ba-zone]")?.addEventListener("change",f=>{this.baZone=f.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-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(f=>{f.addEventListener("click",()=>{let P=f.closest(".sl-chip");if(P.dataset.held){this.removeHeldLabels(decodeURIComponent(P.dataset.held).split(`
2802
- `),P);return}let _=P.dataset.seat.split(" "),C=()=>{this.controller.deselect(_)};if(this.reducedMotion()){C();return}P.classList.remove("sl-enter"),P.classList.add("sl-leave","sl-mo-collapse"),this.scheduleMotion(C,K.collapse)})}),this.els.tray.querySelectorAll("[data-table-edit]").forEach(f=>{f.addEventListener("click",P=>{P.stopPropagation();let _=decodeURIComponent(f.dataset.tableEdit??""),C=this.controller.tableSelection(_);if(!C)return;let R=n.find(H=>H.label===_&&H.objectType==="table");this.showTableDialog({...C,quantity:R?.quantity??C.quantity},!!R,f)})}),this.els.tray.querySelectorAll(".sl-chip .tier").forEach(f=>{f.addEventListener("change",()=>this.controller.setSeatTier(f.dataset.tier,f.value||null))}),this.els.tray.querySelectorAll(".sl-chip .view[data-view-label]").forEach(f=>{f.addEventListener("click",()=>{let P=this.controller.seatByLabel(f.dataset.viewLabel);P&&this.openSeatView(P)})}),this.els.tray.querySelectorAll(".sl-chip[data-locate]").forEach(f=>{let P=()=>this.controller.flashSeat(f.dataset.locate,this.cssVar("--sl-accent")||"#f4b740");f.addEventListener("mouseenter",P),f.addEventListener("focusin",P)}),Os(this,this.els.tray,t),this.controller.setGASelection(Es(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(f=>{f.disabled=!0});let y=this.pendingSelectionCount(),k=this.lastTrayCount,S=this.lastTrayTotal,v=Wr(this.performanceGroup?.groupSelectionSummary?.(),this.performanceGroup?.selectionMode??"same_seat");this.els.count.textContent=v||(o?Gi("picker.ticketsCount",o):this.tf("picker.noSeatsSelected","No seats selected")),this.els.total.textContent=o&&!this.suppressPricing?this.money(r):"",this.root?.setAttribute("data-has-selection",String(o>0)),this.root?.setAttribute("data-ba-active",String(this.bestAvailableConfirm||this.bestAvailableBusy)),this.els.foot?.classList.toggle("empty",o===0),this.els.seatSummary&&(this.els.seatSummary.textContent=v||(o?Gi("picker.seatsSelectedCount",o):"")),this.syncCta(o,y),o!==k&&this.animateOnce(this.els.count,"sl-value-pop",380),r!==S&&this.animateOnce(this.els.total,"sl-value-pop",380),k===0&&o>0&&(this.animateOnce(this.els.cta,"sl-ready",520),this.sideCollapsed&&this.root?.dataset.layout!=="narrow"&&this.setPanelCollapsed(!1)),this.renderPeek(o,r,y,o>k),this.lastTrayCount=o,this.lastTrayTotal=r,this.opts.onSelectionChange?.(e),this.emitSelectionValidity(o,e),this.scheduleFit()}scheduleFit(){if(this.fitScheduled||this.destroyed)return;this.fitScheduled=!0;let e=()=>{this.fitScheduled=!1,this.destroyed||this.fitTranslatedRows()};typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()}fitTranslatedRows(){ar(this.confirmEl?.querySelector(".sl-confirm-row")),this.els.tray?.querySelectorAll(".sl-chip-pos").forEach(lr),this.els.tray?.querySelectorAll(".sl-ba-go").forEach(gn),this.els.peek?.querySelectorAll(".sl-sheet-go").forEach(gn)}emitSelectionValidity(e,t){let n=this.controller.getSelectionValidity(e);n&&(n.seats=t,this.opts.onSelectionValidityChange?.(n),n.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(t):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(n),this.lastSelectionValidity=n.isValid)}renderPeek(e,t,n,s=!1){if(!this.els.peek)return;let r=(this.controller.doc?.categories??[]).map(o=>this.catPrice(o)).filter(o=>o!=null);this.els.peek.innerHTML=qo({count:e,total:t,pendingCount:n,ctaPhase:this.ctaPhase,hasHold:!!this.hold,salesClosed:this.salesClosed,suppressPricing:this.suppressPricing,fromPrice:r.length?Math.min(...r):null,offerFind:!this.performanceGroup&&!this.salesClosed&&!this.hold,holdTime:this.hold&&this.holdTimer?$t(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"))),s&&this.animateOnce(this.els.peek.querySelector(".sl-peek-sum")??void 0,"sl-peek-bump",240),this.scheduleFit()}async removeHeldLabels(e,t){let n=e.filter(o=>o&&!this.releasingLabels.has(o));if(!n.length)return!1;let s=n[0];n.forEach(o=>this.releasingLabels.add(o)),t?.setAttribute("aria-busy","true");let r=t?.querySelector(".rm");r&&(r.disabled=!0);try{let o=this.handedOff;if(!await this.controller.releaseLabels(n))return this.toast(B("picker.couldNotRemoveLabel",{label:s}),"error"),!1;Ls(this.gaQty,this.hold?.items??[],n);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(),!0}finally{n.forEach(o=>this.releasingLabels.delete(o)),t?.removeAttribute("aria-busy"),r?.isConnected&&(r.disabled=!1)}}async handleCta(){if(this.salesClosed)return;let e=this.controller.getSelectionValidity(this.totalTicketCount());if(e&&!e.isValid){this.toast(Bi(e,(n,s)=>this.tf(n,s)),"warning");return}if(this.totalTicketCount()>this.maxTickets){this.toast(B("picker.removeTicketsUntilOrFewer",{count:this.maxTickets}),"warning");return}let t=this.committedSelection();if(this.hold&&!t.some(n=>!(this.hold.items??[]).some(s=>s.label===n.label))){let n=this.hold.seats??t;this.handedOff=!0,this.holdConflicted=!1,await this.runCheckoutHandoff(this.hold,n);return}this.holdingLabels=new Set(t.map(n=>n.label)),this.setCtaPhase("holding");try{let n=null,s=Ts(this.gaQty),r=this.committedSelection();if(r.length){let o=await this.controller.hold(void 0,this.opts.holdTtlMs);n=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});n=c?{holdId:c.holdId,expiresAt:c.expiresAt,seats:c.seats,items:c.items}:n}if(!n){this.raiseHoldConflict(this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.")),this.setCtaPhase("idle"),this.syncTray();return}this.hold=n,this.holdConflicted=!1,this.handedOff=!this.performanceGroup,this.startHoldTimer(n.expiresAt),this.flashHeldSeats(n),this.emitHoldChange(),this.performanceGroup?this.setCtaPhase("idle"):await this.runCheckoutHandoff(n,n.seats??r)}catch(n){this.opts.onError?.(n);let s=n,r=(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."):r.length?r.length===1?B("picker.labelsNoLongerAvailable.one",{labels:r.join(", ")}):B("picker.labelsNoLongerAvailable.other",{labels:r.join(", ")}):this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.");this.raiseHoldConflict(o),this.setCtaPhase("idle")}finally{this.holdingLabels.clear(),this.ctaPhase==="holding"&&(this.ctaPhase="idle"),this.syncTray()}}startHoldTimer(e){pa(this,e)}stopHoldTimer(){ha(this)}setExtendPrompt(e,t){ua(this,e,t)}refreshExtendPrompt(){ma(this)}handleExtend(){return fa(this)}detectBooked(){this.bookedShown||!this.handedOff||!this.hold||this.controller.currentHold()===null&&(this.holdConflicted||this.showBooked())}raiseHoldConflict(e){this.holdConflicted=!0,this.bookedShown&&(this.bookedShown=!1,this.bookedEl?.classList.remove("on")),this.toast(e,"error")}showBooked(){if(this.bookedShown||!this.hold||this.holdConflicted)return;this.bookedShown=!0;let e=this.buildHandoff(this.hold);this.stopHoldTimer(),this.forgetHold();let t=e.lineItems.reduce((s,r)=>s+r.quantity,0),n=this.performanceGroup?.groupSelectionSummary?.();this.els.bookedSub&&(this.els.bookedSub.innerHTML=n?.seats?`<span class="sl-booked-seats">${Gi("picker.group.ticketsConfirmedAcross",n.seats,{performances:n.performances})}</span>`:`<span class="sl-booked-seats">${Gi("picker.ticketsCount",t)}</span> ${this.tf("picker.confirmedAndOnWay","confirmed. A confirmation is on its way.")}`),this.els.bookedList&&(this.els.bookedList.innerHTML=e.lineItems.map(s=>{let o=[s.sectionLabel,s.rowLabel&&`${this.tf("picker.row","Row")} ${s.rowLabel}`,s.seatNumber&&`${this.tf("picker.seat","Seat")} ${s.seatNumber}`].filter(Boolean).join(" \xB7 ")||s.displayLabel||s.label,a=s.quantity>1?` <span class="sl-booked-qty">\xD7${s.quantity}</span>`:"";return`<li>${I(o)}${a}</li>`}).join(""),this.els.bookedList.hidden=e.lineItems.length===0),this.bookedEl?.classList.add("on"),requestAnimationFrame(()=>this.bookedEl?.querySelector(".sl-booked-back")?.focus()),this.opts.onBooked?.(e)}dismissBooked(){this.bookedEl?.classList.remove("on"),this.root?.focus({preventScroll:!0})}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()}async checkoutHandoff(e,t){if(this.checkoutMode==="hosted"){await this.startHostedCheckout(e,t);return}await this.opts.onCheckout?.(e,t,this.buildHandoff(e))}async startHostedCheckout(e,t){let n=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 r=s?.providers?.[0];if(!r){let o=js(s?.reason),a=!!this.opts.onCheckoutUnavailable||!!this.opts.onCheckout;this.opts.onCheckoutUnavailable?.({reason:o,handoff:n}),this.opts.onCheckout?.(e,t,n),a||this.openCheckoutPanel({kind:"unavailable",reason:o,seatCount:n.lineItems.reduce((l,c)=>l+c.quantity,0)});return}await this.openCheckoutPanel({kind:"pay",provider:r,order:{holdId:n.holdId,expiresAt:n.expiresAt,currency:n.currency,total:n.total,labels:n.lineItems.map(o=>o.displayLabel??o.label)}})}async openCheckoutPanel(e){let t;try{({mountCheckout:t}=await pi())}catch(n){this.opts.onError?.(n),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:n=>this.money(n),startSession:n=>this.pubApi.startCheckout(this.opts.event,{...n,...this.opts.returnUrl?{returnUrl:this.opts.returnUrl}:{}}),orderStatus:n=>this.pubApi.orderStatus(n),onCancel:()=>{this.checkoutPanel=null,this.hold||this.setCtaPhase("idle")},onConfirmed:n=>{this.opts.onOrderConfirmed?.(n),this.controller.refresh()},onError:n=>this.opts.onError?.(n)}))}closeCheckoutPanel(){this.checkoutPanel?.destroy(),this.checkoutPanel=null}buildHandoff(e){let n=(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=n[0]?.currency??this.currency,r=n.reduce((o,a)=>o+a.unitPrice*a.quantity,0);return{holdId:e.holdId,expiresAt:e.expiresAt,currency:s,lineItems:n,total:r}}emitHoldChange(){let e=this.hold;this.scheduleOfferRefresh(!0),this.opts.onHoldChange?.(e,e?.seats??[],e?this.buildHandoff(e):null)}toast(e,t="neutral",n){let s=this.els.toast;if(!s)return;s.replaceChildren();let r=document.createElement("span");if(r.textContent=e,s.appendChild(r),s.classList.toggle("has-action",!!n),n){let o=document.createElement("button");o.type="button",o.className="sl-toast-action",o.textContent=n.label,o.addEventListener("click",n.onClick,{once:!0}),s.appendChild(o)}s.dataset.tone=t,s.classList.add("on","sl-mo-rise"),this.liftToastOverConfirmSoon(),this.toastTimer&&clearTimeout(this.toastTimer),this.toastTimer=setTimeout(()=>{s.classList.remove("on","sl-mo-rise"),s.classList.remove("has-action"),s.dataset.tone="neutral",this.liftToastOverConfirm()},4200)}liftToastOverConfirm(){let e=this.regions["bottom-center"];if(!e)return;let t=this.els.toast?.classList.contains("on")||this.extendEl?.classList.contains("on"),n=this.confirmEl;if(!t||!n?.isConnected){e.style.removeProperty("bottom");return}let s=this.els.map.clientHeight;if(s<=0)return;let r=n.getBoundingClientRect(),o=r.height||n.offsetHeight||Dp,a=r.height?r.top-this.els.map.getBoundingClientRect().top:s-Cn-o,l=Math.round(s-a+Op);if(l+_p>s){e.style.removeProperty("bottom");return}e.style.bottom=`${l}px`}liftToastOverConfirmSoon(){this.liftToastOverConfirm(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{this.destroyed||this.liftToastOverConfirm()})}dismissSkeleton(){ho({boot:this.els.boot,map:this.els.map,rail:this.els.rail,root:this.root,reducedMotion:this.reducedMotion()})}placeTooltip(){if(!this.tipEl)return;let e={width:this.els.map.clientWidth,height:this.els.map.clientHeight},t={width:this.tipEl.offsetWidth,height:this.tipEl.offsetHeight},n=this.tipPinned?Zr(this.tipPos,e,t):null,s=n??Qr(this.tipPos,e.width,e.height,t);this.tipEl.style.left=`${s.left}px`,this.tipEl.style.top=`${s.top}px`,n?this.tipEl.dataset.placement=n.placement:delete this.tipEl.dataset.placement}nightStripFor(e,t){let n=this.performanceGroup,s=Tn(e.mark,n?.nights?.()),r=s?.states.filter(o=>o.free).length??0;return Fr(s,{locale:this.opts.locale,switchLabel:n?.selectionModeSwitch?.label??null,selectPartialLabel:n?.partialSeatSelection?.label(r)??null,pinned:t})}unavailableReason(e){return!e.unavailable||e.mark?.kind==="partial"?"":e.status==="held"?this.tf("picker.heldByOther","Held by another buyer \u2014 may become available"):e.status==="not_for_sale"?this.tf("picker.notForSaleExplanation","This seat is not included in the current sale."):e.status==="free"?"":this.tf("picker.soldSeatExplanation","This seat has already been booked.")}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;if(e.interaction!=="press"&&this.lastPointerType==="mouse"&&!e.mark&&!this.tipPinned){this.tipEl.style.display="none",this.tipMarkedHoverLabel=null;return}if(e.unavailable&&e.status==="free"&&e.interaction==="press"){this.toast(this.tf("picker.turnOffAccessibilityFilter","Turn off the wheelchair filter to pick this seat"),"neutral"),this.tipEl.style.display="none";return}let n=this.unavailableReason(e),s=e.mark?.kind==="partial"&&(e.interaction==="press"||this.lastPointerType!=="mouse"||t)||!!n&&e.interaction==="press";this.tipMarkedHoverLabel=e.mark?.kind==="partial"?e.label:null;let r=this.nightStripFor(e,s);this.tipEl.style.setProperty("--sl-cat",e.categoryColor),this.tipEl.innerHTML=Xr(e,{price:this.suppressPricing?"":this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label)),priceNote:this.suppressPricing?this.performanceGroup?.surface==="season"?this.tf("picker.season.includedInPackage","Included in the Season package"):this.tf("picker.group.pricesPerPerformance","Prices shown per performance"):"",rowTypeWord:je(e),reason:n,extra:r+(s?`<button type="button" class="sl-tip-close" data-pg-tip-close aria-label="${I(this.tf("picker.group.closeSeatDetails","Close seat details"))}">\xD7</button>`:"")}),this.tipPinned=s,this.tipEl.classList.toggle("sl-tip-pinned",s),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()}),to(this.tipEl,this.performanceGroup?.partialSeatSelection?.label,o=>{this.unpinTooltip(),this.performanceGroup?.partialSeatSelection?.activate(e.id,o)}),this.tipEl.style.display="block",this.placeTooltip()}syncSeatMarks(){let e=this.performanceGroup?.seatMarks,t=this.controller.getRenderer();if(!e||!t?.setSeatMarks)return;let n={};for(let[s,r]of Object.entries(e())){let o=this.controller.idForLabel(s);o&&(n[o]=r)}Object.keys(n).length&&t.setSeatMarks(n)}getSelection(){return this.committedSelection()}selectObjects(e){return this.controller.select(e)}selectObjectsWithoutConfirmation(e){let t=new Set(e),n=this.controller.getSelection().filter(s=>t.has(s.id)||t.has(s.label));if(n.length===t.size)return n;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)}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(),this.minimap?.refreshMinimap())}applyThemeTokens(e){let t=Xt(this.themeMode),n=it(this.controller.doc?.theme,this.opts.theme,t);for(let[s,r]of Object.entries(n))e.style.setProperty(s,r);t?e.dataset.theme=t:delete e.dataset.theme,this.applyMapChromeTokens()}watchThemeMode(){this.colorSchemeStop?.(),this.colorSchemeStop=null,this.themeMode==="auto"&&(this.colorSchemeStop=Qt(()=>{this.destroyed||this.repaintForThemeMode()}))}repaintForThemeMode(){this.root&&(this.applyThemeTokens(this.root),this.controller.setMapTheme(tt(this.opts.theme,this.themeMode)),this.applyMapChromeTokens(),this.minimap?.refreshMinimap(),this.syncPrices())}setThemeMode(e){this.destroyed||e===this.themeMode||(this.themeMode=e,this.opts.theme={...this.opts.theme??{},...e?{mode:e}:{mode:void 0}},this.watchThemeMode(),this.repaintForThemeMode(),this.emitAnalytics("theme_mode_changed",{mode:e,resolved:Xt(e)??null}))}getThemeMode(){return this.themeMode}applyMapChromeTokens(){let e=this.els.map?.parentElement;if(!e||!this.root)return;let t=Xt(this.themeMode),n=it(this.controller.doc?.theme,this.opts.theme,t),s=tt(this.opts.theme,this.themeMode)?.background??this.controller.doc?.theme?.background??void 0,r=ds(n,s);for(let o of cs)r?e.style.setProperty(o,r[o]):e.style.removeProperty(o)}setEventDetailsHidden(e){this.eventDetailsHidden=e,this.syncFullscreenButtons()}setPricing(e){let t=JSON.stringify(this.opts.pricing??null),n=JSON.stringify(e??null);t!==n&&(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){this.langSel=ys(e,{languages:this.opts.languages,label:this.tf("picker.preferredTicketType","Language"),onChange:t=>{this.setLocale(t)}})}async setLocale(e){let t=Ua(),n=this.localeGeneration+=1,s=await Ap(e);return this.opts.messages&&Pp(this.opts.messages),s===t||this.applyActiveLocale(s,n),s}applyActiveLocale(e,t){t===this.localeGeneration&&this.root&&(vs(e,{root:this.root,painters:[()=>this.syncTray(),()=>this.syncPrices(),()=>this.syncOffer(),()=>this.syncRung(),()=>this.syncFloors(),()=>this.syncPanelToggle(),()=>this.syncFullscreenButtons()],refreshMapCopy:()=>this.controller.refreshMapCopy(),languageSelect:this.langSel}),this.scheduleFit())}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(),this.minimap?.refreshMinimap(),Np(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"}emitAnalytics(e,t){try{this.opts.onAnalytics?.(e,t??{})}catch{}}emit3dAnalytics(e,t){this.emitAnalytics(e,t)}getBuyerView(){return Ao(this)}setBuyerView(e,t){Po(this,e,t)}seatState3dFor(e){return Lo(this,e)}pushAvailabilityTo3d(){Mo(this)}syncSelectionTo3d(){Ho(this)}seatViewFor3d(e){return Ro(this,e)}onView3dSeatPick(e){Io(this,e)}seatViewCaption(e){return Oo(this,e)}showUnavailable3dSeat(e,t,n){_o(this,e,t,n)}dismissUnavailable3dSeat(){Do(this)}saveView3dComparisonSeat(e){Bo(this,e)}clearView3dComparison(){No(this)}view3dComparisonSnapshot(e){return Fo(this,e)}enter3d(e){return Vo(this,e)}publish3dTopInset(){$o(this)}exit3d(){zo(this)}openSeatConfidencePassport(e,t=null){In(this,e,t)}closeSeatConfidencePassport(e=!0){Vt(this,e)}openView3dComparison(){So(this)}closeView3dComparison(e=!0){Ge(this,e)}getCurrentHold(){return this.hold}async resumeHold(e){return this.resumeHoldFromServer(e)}async removeHeldTicket(e){return this.removeHeldLabels([e])}async bestAvailable(e,t,n={}){if(this.salesClosed||this.bestAvailableBusy)return null;e=Math.max(1,Math.min(this.maxTickets,Math.floor(e)));try{return await this.bestAvailableOrThrow(e,t,n)}catch(s){this.opts.onError?.(s);let r=s?.reason,o=r==="not_enough_together"?B("picker.couldNotFindSeatsTogether",{count:e}):r==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):r==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):r==="sold_out"?this.tf("picker.ticketTypeSoldOut","That ticket type is sold out. Try another ticket type."):r==="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(o,"error"),null}}async bestAvailableOrThrow(e,t,n={}){if(this.salesClosed)throw new Error("seatlayer: seat sales are closed");if(this.bestAvailableBusy)throw new Error("seatlayer: Best Available is already in progress");if(!Number.isInteger(e)||e<1)throw new Error("seatlayer: Best Available quantity must be a positive integer");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 r=await this.controller.bestAvailable(e,t,{...n,ttlMs:this.opts.holdTtlMs});return r?(this.hold={holdId:r.holdId,expiresAt:r.expiresAt,seats:r.seats,items:r.items},this.handedOff=!1,this.bookedShown=!1,this.gaQty.clear(),this.startHoldTimer(r.expiresAt),this.flashHeldSeats(this.hold),this.syncTray(),this.emitHoldChange(),n.preferPremium&&r.seats.length&&!r.seats.every(o=>o.commercial?.premium)&&this.toast(B("picker.premiumFallbackNote",{count:e}),"neutral"),this.hold):null}finally{this.bestAvailableBusy=!1,this.syncTray()}}async release(){let e=this.hold,t=this.controller.currentHold(),n=!0;if(t)n=await this.controller.release();else if(e){let s=[...new Set([...(e.items??[]).map(r=>r.label),...(e.seats??[]).map(r=>r.label)])];if(s.length)try{await this.api.release(this.opts.event,s,e.holdId)}catch(r){this.opts.onError?.(r),n=!1}}if(!n){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 xe({url:this.pubApi.subscribeUrl(e),mintTicket:()=>this.pubApi.subscribeTicket(e),onAccessUnavailable:t=>{this.opts.onAccessUnavailable?.(t),this.showAccessPanel(t)},sink:Et(this.controller,{flashOnLiveChange:!0,ownLabels:()=>this.holdingLabels,onStatusChange:()=>{this.syncPrices(),this.scheduleOfferRefresh(!0),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onSelectedObjectUnavailable:(t,n)=>{this.opts.onSelectedObjectUnavailable?.({labels:t,reason:n}),this.syncTray(),this.toast(n==="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)}clearDecisionSurfaces(){this.dismissConfirm(),this.dismissTableDialog(!1),fe(this,!1)}showAccessPanel(e){if(this.destroyed||!this.root)return;this.dismissAccessPanel(),this.clearDecisionSurfaces();let t=Mr(e.reason,()=>this.recoverAccess());(this.root.querySelector(".sl-body")??this.root).appendChild(t),this.accessEl=t}async recoverAccess(){return await this.refreshAccess()?!0:(this.opts.onAccessUnavailable||typeof window>"u"||window.location.reload(),!1)}dismissAccessPanel(){this.accessEl?.remove(),this.accessEl=null}showHoldExpired(){if(this.destroyed||!this.root||this.holdExpiredEl)return;this.clearDecisionSurfaces();let e=Ra({restart:()=>this.restartAfterHoldExpiry()},this.holdExpiredUnits);this.root.appendChild(e),this.holdExpiredEl=e,requestAnimationFrame(()=>e.querySelector(".sl-interrupt-act")?.focus());let t=this.holdExpiredUnits;this.holdExpiredFresh=!1,this.refreshAvailability().then(()=>{if(this.destroyed||this.holdExpiredEl!==e)return;this.holdExpiredFresh=!0;let n=t.filter(o=>o.objectType!=="ga"),s=[],r=[];for(let o of n){let a=this.controller.seatByLabel(o.label);(a&&this.controller.getStatus(a.id)==="free"?s:r).push(o.label)}Ha(e,{recoverable:s,taken:r,onRecover:o=>this.recoverAfterHoldExpiry(o)})}).catch(()=>{})}recoverAfterHoldExpiry(e){this.holdExpiredUnits=[],this.dismissHoldExpired(),this.lapse.clear(),this.clearSelection(),this.controller.select(e),this.syncTray(),this.handleCta()}dismissHoldExpired(){this.holdExpiredEl?.remove(),this.holdExpiredEl=null}restartAfterHoldExpiry(){let e=this.holdExpiredUnits;this.holdExpiredUnits=[],this.dismissHoldExpired(),this.lapse.clear(),this.clearSelection(),this.controller.overview(),this.syncTray(),this.syncCta(),this.root?.focus({preventScroll:!0});let t=this.holdExpiredFresh;this.holdExpiredFresh=!1,(t?Promise.resolve():this.refreshAvailability()).then(()=>{this.destroyed||Ma({reducedMotion:this.reducedMotion(),accent:this.cssVar("--sl-accent")||"#f4b740",seatByLabel:n=>this.controller.seatByLabel(n),statusOf:n=>this.controller.getStatus(n),flash:(n,s)=>this.controller.flashSeat(n,s)},e)}).catch(()=>{})}destroy(){this.destroyed=!0,Mn(this),this.colorSchemeStop?.(),this.colorSchemeStop=null,this.realtime?.stop(),this.realtime=null,this.dismissAccessPanel(),this.dismissHoldExpired(),this.access?.clear(),this.hold&&!this.handedOff&&this.controller.release(),this.closeConfirm(),this.dismissTableDialog(!1),fe(this,!1),this.closeSeatView(),this.closeCheckoutPanel(),this.exit3d(),this.buyerAssetUrls.dispose(),this.stopHoldTimer(),this.detachAttention?.(),this.toastTimer&&clearTimeout(this.toastTimer),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)}};import{formatMoney as Xp,loadLocale as Qp,setStringOverrides as Zp,t as Jp}from"@seatlayer/core";var Ya="seatlayer-performance-group-picker-style";function Xa(){if(document.getElementById(Ya))return;let i=document.createElement("style");i.id=Ya,i.textContent=`
2875
+ }`,e.append(t);let n="linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.10) 37%, rgba(255,255,255,0.04) 63%)",o=document.createElement("div");Object.assign(o.style,{position:"absolute",inset:"0",display:"flex",flexDirection:"column",padding:"16px",gap:"14px",opacity:"0.9"});let s=c=>{let h=document.createElement("div");return h.className="sl-shimmer",Object.assign(h.style,{background:n,borderRadius:"8px"}),Object.assign(h.style,c),h};o.append(s({height:"40px",width:"100%",flex:"0 0 auto"}));let r=document.createElement("div");Object.assign(r.style,{display:"flex",gap:"14px",flex:"1 1 auto",minHeight:"0"}),r.append(s({width:"220px",height:"100%",flex:"0 0 auto"})),r.append(s({flex:"1 1 auto",height:"100%"})),o.append(r),e.append(o);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:n,flex:"0 0 auto"}),a.append(l),a.append(document.createTextNode("Loading designer\u2026")),e.append(a)}buildErrorCard(e,t){let n=Yc[t],o=document.createElement("div");Object.assign(o.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 s=document.createElement("h2");s.textContent=n.title,Object.assign(s.style,{margin:"0 0 8px",fontSize:"17px",fontWeight:"600",color:"#f4f7ff"});let r=document.createElement("p");r.textContent=n.body,Object.assign(r.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()),o.append(s,r,a),e.append(o)}};import{PickerController as kp,formatMoney as Tp,getLocale as Va,loadLocale as Ep,setStringOverrides as Cp,t as N,tCount as ji}from"@seatlayer/core";import{isAuthoredSeatView as Ap,seatViewDisclosure as Pp}from"@seatlayer/core/view3d/crossfade/panorama";function xs(i){return!!i&&i.clientWidth>0&&i.scrollWidth>i.clientWidth+1}function Xc(i){return i.some(e=>xs(e))}var ki="data-fit-gone",Zc=12;function bn(i,e,t=xs){if(!i)return 0;for(let n of e)i.classList.remove(n.cls);if(i.querySelectorAll(`[${ki}]`).forEach(n=>{n.removeAttribute(ki),n.hidden=!1}),i.dataset.fit="0",i.clientWidth<=0||!t(i))return 0;for(let n=0;n<e.length;n+=1){let o=e[n];n>0&&i.classList.remove(e[n-1].cls),i.classList.add(o.cls),i.dataset.fit=String(n+1);let s=o.give?o.give(i):!0;if(!t(i))return n+1;if(o.repeat&&o.give){for(let r=1;s&&r<Zc;r+=1)if(s=o.give(i),!t(i))return n+1}}return e.length}function Qc(i,e="[data-fit-seg]"){let t=[...i.querySelectorAll(e)].filter(n=>!n.hidden);return t.length<2?!1:Ss(t[t.length-1])}function Jc(i,e){let t=i.querySelector(e);return t&&!t.hidden?Ss(t):!1}function Ss(i){let e=i.previousElementSibling;return e instanceof HTMLElement&&e.tagName==="I"&&(e.setAttribute(ki,""),e.hidden=!0),i.setAttribute(ki,""),i.hidden=!0,!0}function ed(i){if(!i)return!1;let e=(i.getAttribute("aria-label")||i.textContent||"").trim();return e?(i.setAttribute("aria-label",e),i.setAttribute("title",e),!0):!1}function ks(i){if(!i)return 0;let e=i.querySelector(".sl-confirm-cancel"),t=i.querySelector(".sl-confirm-add-t");return bn(i,[{cls:"sl-fit-track"},{cls:"sl-fit-type"},{cls:"sl-fit-icon",give:()=>ed(e)}],()=>Xc([e,t]))}function Ts(i){return bn(i,[{cls:"sl-fit-notype",give:e=>Jc(e,"[data-fit-type]")},{cls:"sl-fit-short",give:e=>Qc(e),repeat:!0}])}function Es(i){return i?(i.classList.add("sl-fitpill"),bn(i,[{cls:"sl-fit-p1"},{cls:"sl-fit-p2"},{cls:"sl-fit-p3"}])):0}var td=["on-sale","low","sold-out","presale","closed"];function Dt(i){return i==null?null:typeof i=="number"&&Number.isFinite(i)&&i>=0?i:void 0}function As(i){return i==null?null:typeof i=="number"&&Number.isFinite(i)&&i>=0?i:void 0}function Cs(i){if(i==null)return null;if(typeof i!="object"||Array.isArray(i))return;let e=i,t=e.count,n=e.index;if(typeof n!="number"||!Number.isInteger(n)||n<1||typeof t!="number"||!Number.isInteger(t)||t<n)return;let o=e.remaining;if(o!=null&&(typeof o!="number"||!Number.isInteger(o)||o<0))return;let s={index:n,count:t,remaining:o??null};if(e.id!==void 0){if(typeof e.id!="string"||!e.id.trim())return;s.id=e.id.trim()}if(e.name!==void 0){if(typeof e.name!="string"||!e.name.trim())return;s.name=e.name.trim()}if(e.categoryKey!==void 0){if(e.categoryKey!==null&&(typeof e.categoryKey!="string"||!e.categoryKey.trim()))return;s.categoryKey=e.categoryKey==null?null:e.categoryKey.trim()}for(let r of["startsAt","endsAt"]){if(e[r]===void 0)continue;let a=As(e[r]);if(a===void 0)return;s[r]=a}return s}function id(i){if(i==null)return null;if(typeof i!="object"||Array.isArray(i))return;let e=i;if(!Number.isInteger(e.assignmentVersion)||e.assignmentVersion<0||!Array.isArray(e.channels)||!Array.isArray(e.objects))return;let t=[],n=new Set;for(let r of e.channels){if(!r||typeof r!="object"||Array.isArray(r))return;let a=r,l=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||n.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 u=d,p=typeof u.categoryKey=="string"?u.categoryKey.trim():"",f=u.tierId===null?null:typeof u.tierId=="string"&&u.tierId.trim()?u.tierId.trim():void 0,b=Dt(u.price);if(!p||f===void 0||b===void 0||b===null)return;let k=`${p}\0${f??""}`;if(h.has(k))return;h.add(k),c.push({categoryKey:p,tierId:f,price:b})}n.add(l),t.push({channelId:l,pricingVersion:a.pricingVersion,priceOverrides:c})}let o=[],s=new Set;for(let r of e.objects){if(!r||typeof r!="object"||Array.isArray(r))return;let a=r,l=typeof a.label=="string"?a.label.trim():"",c=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||s.has(l)||!n.has(c))return;s.add(l),o.push({label:l,channelId:c})}return{assignmentVersion:e.assignmentVersion,channels:t,objects:o}}function yn(i){if(!i||typeof i!="object"||Array.isArray(i))return null;let e=i,t=td.find(h=>h===e.state);if(!t)return null;let n=Dt(e.fromPrice),o=Dt(e.previousPrice);if(n===void 0||o===void 0)return null;let s=e.currency==null?null:typeof e.currency=="string"&&e.currency.trim()?e.currency.trim():void 0;if(s===void 0)return null;let r=Cs(e.release);if(r===void 0)return null;let a=e.upcoming===void 0?null:Cs(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 u=d,p=typeof u.categoryKey=="string"?u.categoryKey.trim():"";if(!p)return null;let f=Dt(u.price),b=Dt(u.previousPrice);if(f==null||b===void 0)return null;let k={categoryKey:p,price:f,previousPrice:b};if(u.offerId!==void 0){if(typeof u.offerId!="string"||!u.offerId.trim())return null;k.offerId=u.offerId.trim()}if(u.offerName!==void 0){if(typeof u.offerName!="string"||!u.offerName.trim())return null;k.offerName=u.offerName.trim()}if(u.remaining!==void 0){if(u.remaining!==null&&(typeof u.remaining!="number"||!Number.isInteger(u.remaining)||u.remaining<0))return null;k.remaining=u.remaining==null?null:u.remaining}for(let S of["startsAt","endsAt"]){if(u[S]===void 0)continue;let v=As(u[S]);if(v===void 0)return null;k[S]=v}h.push(k)}l=h}let c=id(e.channelPricing);return c===void 0?null:{state:t,fromPrice:n,previousPrice:o,currency:s,release:r,upcoming:a,prices:l,channelPricing:c}}function Ps(i){return i?.changed!==!1}function Ls(i,e){if(!i)return null;let t=null,n=o=>{o!=null&&o>e&&(t===null||o<t)&&(t=o)};for(let o of[i.release,i.upcoming])n(o?.startsAt),n(o?.endsAt);for(let o of i.prices)n(o.startsAt),n(o.endsAt);return t}function vn(i){let e={};for(let t of i?.prices??[])e[t.categoryKey]=t.price;return e}function Ms(i){return i.focusedSection!==null?i.deeperThanSectionFrame===!1?"venue":"section":i.atVenueFit!==void 0?i.atVenueFit?"none":"venue":i.seatsRevealed?"venue":"none"}function Hs(i,e,t=[],n=8){let o=e.reduce((r,a)=>!a||a.width<=0||a.height<=0?r:Math.max(r,a.bottom-i.top+n),0),s=t.reduce((r,a)=>!a||a.width<=0||a.height<=0?r:Math.max(r,i.bottom-a.top+n),o>0?n:0);return{top:Math.max(0,Math.ceil(o)),right:0,bottom:Math.max(0,Math.ceil(s)),left:0}}function Rs(i){let e=document.createElement("div");e.className="sl-floors on",e.setAttribute("role","group"),e.setAttribute("aria-label",i.tf("picker.chooseLevel","Choose level"));let t=[{id:"",name:i.tf("picker.allLevels","All levels")},...i.floors.map(r=>({id:r.id,name:r.name}))],n=document.createElement("span");n.className="sl-floor-label",n.textContent=`${i.tf("picker.levels","Level")}:`,e.appendChild(n);let o=document.createElement("select");o.className="sl-floor-select",o.setAttribute("aria-label",i.tf("picker.chooseLevel","Choose level"));for(let r of t){let a=document.createElement("option");a.value=r.id,a.textContent=r.name,o.appendChild(a)}let s=i.tf("picker.floorHelp","All levels shows the complete venue. Choose one level to inspect and select its seats.");return o.title=s,o.addEventListener("change",()=>i.onChoose(o.value)),e.appendChild(o),e}function Is(i,e,t){if(!i)return;let n=t?"":e,o=i.querySelector(".sl-floor-select");o&&(o.value=n)}import{t as je,tCount as nd}from"@seatlayer/core";function Os(i){return typeof i?.min=="number"&&Number.isFinite(i.min)&&typeof i.max=="number"&&Number.isFinite(i.max)}var Ti=class{constructor(e){this.el=null;this.current=null;this.collapsed=!1;this.shownAt=0;this.host=e}get summary(){return this.current}adopt(e){this.current=e}get element(){return this.el}show(e){if(e&&e.id!==this.current?.id&&this.host.collapseSheet(),this.current=e,!e){this.el?.remove(),this.el=null,this.host.refreshMinimap();return}this.collapsed=this.host.controller.getRung()==="seats",this.shownAt=Date.now(),this.render(e),this.host.refreshMinimap()}wireNavigation(e){e.querySelectorAll("[data-section-nav]").forEach(t=>{t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation();let o=t.dataset.sectionNav;o&&this.host.controller.focusSection(o)})})}render(e){let t=this.host.map();if(!t)return;if(this.host.root()?.dataset.layout==="narrow"){this.el?.remove(),this.el=null;return}let n=(e.categories.length?e.categories.map(p=>{let f=this.host.controller.doc?.categories.find(b=>b.key===p.key);return f?this.host.catPriceRange(f):{min:p.priceMin,max:p.priceMax}}):[{min:e.priceMin,max:e.priceMax}]).filter(Os),o=n.length?Math.min(...n.map(p=>p.min)):null,s=n.length?Math.max(...n.map(p=>p.max)):null,r=o==null||s==null?"":o===s?this.host.money(o):`${this.host.money(o)}\u2013${this.host.money(s)}`,a=nd("picker.seatsLeftInSection",e.seatsLeft),l=je("picker.seatsLeftShort",{count:e.seatsLeft}),c=`<button type="button" class="sl-seccard-x" aria-label="${je("picker.closeSectionSummary")}">\u2715</button>`,h=go(this.host.sectionNeighbours(e.id)),d={label:e.label,color:e.color,leftLabel:a,leftShortLabel:l,nav:h,close:c};this.el?.remove();let u=document.createElement("div");if(this.collapsed)u.className="sl-seccard mini on",u.setAttribute("role","button"),u.setAttribute("aria-label",je("picker.sectionSummaryAria",{label:e.label})),u.innerHTML=To(d),this.wireNavigation(u),u.addEventListener("click",p=>{p.target.closest(".sl-seccard-x")||(this.collapsed=!1,this.shownAt=Date.now(),this.render(e))}),u.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(u);else{u.className="sl-seccard on",u.setAttribute("role","dialog"),u.setAttribute("aria-label",je("picker.sectionSummaryAria",{label:e.label}));let p=this.host.priceBandKeys(),f=this.host.suppressPricing(),b=e.categories.map(k=>{let S=this.host.controller.doc?.categories.find(y=>y.key===k.key),v=S?this.host.catPriceRange(S):{min:k.priceMin,max:k.priceMax},A=Os(v)?v:void 0;return Co({label:k.label,color:k.color,dim:p!=null&&!p.has(k.key),rangeLabel:f||!A?"":A.min!==A.max?`${this.host.money(A.min)}\u2013${this.host.money(A.max)}`:this.host.money(A.min)})}).join("");u.innerHTML=Eo({...d,priceLabel:r,showPrice:!f&&n.length>0,zoneLabel:[e.floorLabel,e.zoneLabel].filter((k,S,v)=>!!k&&v.indexOf(k)===S).join(" \xB7 "),entrance:e.entrance?`${je("picker.entrance")} ${e.entrance}`:void 0,mix:b,overviewLabel:je("picker.backToVenue"),hint:je("picker.tapSeatHint")}),this.wireNavigation(u),u.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),u.querySelector(".sl-seccard-overview").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(u)}this.el=u}collapse(){!this.el||this.collapsed||!this.current||(this.collapsed=!0,this.render(this.current))}onView(){if(!(!this.el||this.collapsed||!this.current)){if(this.host.controller.getRung()==="seats"){this.collapse();return}if(Date.now()-this.shownAt<1400){this.coverage()>.25&&this.collapse();return}this.collapse()}}coverage(){let e=this.el,t=this.current,n=this.host.map();if(!e||!t||!n)return 0;let o=this.host.activeFloorObjects().find(v=>v.type==="section"&&v.id===t.id)?.outline;if(!o||o.length<3)return 0;let s=o.map(v=>this.host.controller.worldToScreen(v)),r=s.map(v=>v.x),a=s.map(v=>v.y),l=Math.min(...r),c=Math.min(...a),h=Math.max(...r)-l,d=Math.max(...a)-c;if(h<=0||d<=0)return 0;let u=n.getBoundingClientRect(),p=e.getBoundingClientRect(),f=p.left-u.left,b=p.top-u.top,k=Math.max(0,Math.min(f+p.width,l+h)-Math.max(f,l)),S=Math.max(0,Math.min(b+p.height,c+d)-Math.max(b,c));return k*S/(h*d)}};import{t as Li,tCount as bd}from"@seatlayer/core";import{contrastRatio as yd}from"@seatlayer/core/core/color";import{t as _s,tCount as Ei}from"@seatlayer/core";function wn(i,e,t){try{return new Intl.DateTimeFormat(e,{...t,...i.timezone?{timeZone:i.timezone}:{}}).format(new Date(i.startsAt))}catch{return new Date(i.startsAt).toLocaleString(e)}}var Ci=(i,e)=>wn(i,e,{dateStyle:"medium"}),Ai=(i,e)=>wn(i,e,{timeStyle:"short"}),Pi=(i,e)=>wn(i,e,{weekday:"short",day:"numeric",month:"short"});function Ds(i,e,t,n){return!i.length||i.length>=e?null:{summary:n,labels:i.map(o=>`${Ci(o,t)} \xB7 ${Ai(o,t)}`)}}function od(i,e){let t=new Set(e);return i.map(n=>({...n,free:!t.has(n.eventKey)}))}function Ns(i,e){let t=[...i];if(t.length<=1)return t[0]??"";try{return new Intl.ListFormat(e,{style:"long",type:"conjunction"}).format(t)}catch{return t.join(", ")}}function sd(i,e,t="",n=!1){if(!i.length)return"";let o=i.map(s=>{let r=s.free?e.free:e.blocked,a=n&&s.free?`<input class="sl-night-choice" type="checkbox" data-pg-event-key="${E(s.eventKey)}" aria-label="${E(`${s.shortDate}: ${r}`)}" checked>`:"";return`<li class="sl-night${s.free?" ok":" no"}" aria-label="${E(`${s.shortDate}: ${r}`)}">`+a+`<i class="sl-night-dot" aria-hidden="true"></i><span class="d">${E(s.shortDate)}</span><span class="st">${E(r)}</span></li>`}).join("");return`<div class="sl-tip-nights"><div class="sl-tip-nights-title">${E(e.title)}</div><ul class="sl-nightstrip">${o}</ul><p class="sl-tip-nights-note">${E(e.notAvailableOn)}</p>`+t+"</div>"}function rd(i){return i.selectPartialLabel&&i.pinned?`<button type="button" class="sl-tip-switch" data-pg-select-partial>${E(i.selectPartialLabel)}</button>`:i.switchLabel&&i.pinned?`<button type="button" class="sl-tip-switch" data-pg-switch-mode>${E(i.switchLabel)}</button>`:i.switchLabel||i.selectPartialLabel?"":`<p class="sl-tip-advice">${E(i.advice)}</p>`}function ad(i){return Number(i.available)+Number(i.selected)+Number(i.partial)+Number(i.unavailable)}function Bs(i,e,t){if(ad(i)<2)return"";let n=(s,r,a="")=>`<li class="sl-pg-legend-item"><i class="sl-pg-sw ${s}"${a}></i>${E(r)}</li>`,o=[];return i.available&&o.push(n("sl-pg-sw-free",e.available,` style="background:${E(t)}"`)),i.selected&&o.push(n("sl-pg-sw-sel",e.selected)),i.partial&&o.push(n("sl-pg-sw-split",e.partial,` style="--sl-pg-sw-cat:${E(t)}"`)),i.unavailable&&o.push(n("sl-pg-sw-off",e.unavailable)),`<ul class="sl-pg-legend-list" aria-label="${E(e.title)}">${o.join("")}</ul>`}function Vs(i,e){if(!i.length)return"";let t=i.map(n=>{let o=n.labels.length?n.labels.join(", "):e.empty;return`<li class="sl-pg-night-row${n.labels.length?"":" empty"}${n.active?" active":""}" role="button" tabindex="0"${n.active?' aria-current="true"':""} data-event-key="${E(n.eventKey)}"><span class="n">${E(n.name)}</span><span class="s">${E(o)}</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 xn(i,e){if(i?.kind!=="partial"||!e?.length)return null;let t=i.data?.blockedEventKeys??[],n=od(e,t);return{states:n,missing:n.filter(o=>!o.free).map(o=>o.shortDate)}}function Fs(i,e){return i?sd(i.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:_s("picker.group.notAvailableOn",{dates:Ns(i.missing,e.locale)})},rd({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 ld(i,e,t,n){if(!i.length)return"";let o=new Set(e),s=new Set(t),r=i.map(a=>{let l=o.has(a.eventKey);return`<li class="sl-confirm-date${l?"":" blocked"}"><label><input type="checkbox" data-pg-confirm-event-key="${E(a.eventKey)}" aria-label="${E(`${a.shortDate}: ${l?n.available:n.unavailable}`)}"${l&&s.has(a.eventKey)?" checked":""}${l?"":" disabled"}><span class="sl-confirm-date-label">${E(a.shortDate)}</span><span class="sl-confirm-date-state">${E(l?n.available:n.unavailable)}</span></label></li>`}).join("");return`<fieldset class="sl-confirm-dates" data-pg-confirm-dates><legend>${E(n.title)}</legend><p class="sl-confirm-dates-copy">${E(n.copy)}</p><label class="sl-confirm-date-all"><input type="checkbox" data-pg-confirm-all><span>${E(n.selectAll)}</span></label><ul>${r}</ul><p class="sl-confirm-dates-summary" data-pg-confirm-summary aria-live="polite"></p></fieldset>`}function zs(i,e,t,n){let o=e.availableEventKeys(t);return ld(i,o,e.includedEventKeys(),{title:n("picker.group.confirmDatesTitle","Choose performance dates"),copy:o.length===i.length?n("picker.group.confirmAllDatesCopy","This seat is available for all {count} dates. Keep all selected, or remove dates you do not want.").replace("{count}",String(i.length)):n("picker.group.confirmPartialDatesCopy","This seat is available for {available} of {total} dates. Choose one date or keep every available date.").replace("{available}",String(o.length)).replace("{total}",String(i.length)),selectAll:n("picker.group.confirmSelectAll","Select all available dates"),available:n("picker.group.nightFree","Available"),unavailable:n("picker.group.nightBlocked","Unavailable")})}function $s(i){return[...i.querySelectorAll("[data-pg-confirm-event-key]")].filter(e=>e.checked&&!e.disabled).map(e=>e.dataset.pgConfirmEventKey).filter(Boolean)}function js(i,e,t,n){let o=[...i.querySelectorAll("[data-pg-confirm-event-key]")];if(!e||!o.length)return;let s=i.querySelector(".sl-confirm-add"),r=i.querySelector("[data-pg-confirm-all]"),a=()=>{let l=o.filter(d=>!d.disabled),c=$s(i).length;r&&(r.checked=c===l.length,r.indeterminate=c>0&&c<l.length);let h=i.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))),s.disabled=c===0,s.textContent=c?e.label(c):t("picker.group.confirmChooseOne","Choose at least 1 date"),n()};o.forEach(l=>l.addEventListener("change",a)),r?.addEventListener("change",()=>{o.filter(l=>!l.disabled).forEach(l=>{l.checked=r.checked}),a()}),a()}async function Gs(i,e,t){if(!i||!t||!i.querySelector("[data-pg-confirm-event-key]"))return!0;let n=$s(i);if(!n.length)return!1;let o=i.querySelector(".sl-confirm-add");return o?.setAttribute("aria-busy","true"),o&&(o.disabled=!0),await t.apply(e,n)?!0:(o?.removeAttribute("aria-busy"),o?.isConnected&&(o.disabled=!1),!1)}function Us(i,e,t){return i?_s("picker.group.seatPartlyAvailable",{label:e,free:i.states.length-i.missing.length,total:i.states.length,dates:Ns(i.missing,t)}):""}function qs(i,e){let t=i.map((n,o)=>{let s=n.state==="done"?e.done:n.state==="current"?e.current:e.upcoming;return`<li class="sl-pg-step-item" data-step="${E(n.id)}" data-state="${E(n.state)}"${n.state==="current"?' aria-current="step"':""}><span class="i" aria-hidden="true">${n.state==="done"?"\u2713":String(o+1)}</span><span class="l">${E(n.label)}</span><span class="sl-pg-sr">${E(s)}</span></li>`}).join("");return`<ol class="sl-pg-steps" aria-label="${E(e.label)}">${t}</ol>`}function Sn(i,e){return`<ul class="sl-pg-cards">${i.map(n=>`<li class="sl-pg-card" data-event-key="${E(n.eventKey)}"><span class="n">${E(n.name)}</span><time datetime="${E(n.iso)}"><span class="d">${E(n.date)}</span><span class="t">${E(n.time)}</span></time></li>`).join("")}</ul><p class="sl-pg-included">${E(e)}</p>`}function Ks(i){let e=i.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(", "):i.empty)}</span></li>`).join("");return`<div class="sl-pg-pane-title">${E(i.title)}</div><ul class="sl-pg-pane-list">${e}</ul>`+(i.note?`<p class="sl-pg-pane-note">${E(i.note)}</p>`:"")+(i.total?`<div class="sl-pg-pane-total"><span>${E(i.total.label)}</span><b>${E(i.total.amount)}</b></div>`:"")+(i.holdStatus?`<p class="sl-pg-hold-status" role="status">${E(i.holdStatus)}</p>`:"")}function Ws(i){let e=Math.max(0,i);return`${Math.floor(e/6e4)}:${String(Math.floor(e/1e3)%60).padStart(2,"0")}`}function Ys(i,e){if(!i||i.seats<=0)return"";if(e==="same_seat"){let t=i.perPerformance??i.seats;return i.totalPerformances&&i.performances<i.totalPerformances?Ei("picker.group.performancesChosenOf",t,{chosen:i.performances,total:i.totalPerformances}):Ei("picker.group.seatsEveryPerformance",t)}return i.perPerformance!=null&&i.performancesChosen===i.performances?Ei("picker.group.seatsPerPerformance",i.seats,{per:i.perPerformance}):Ei("picker.group.performancesChosenOf",i.seats,{chosen:i.performancesChosen,total:i.performances})}function Xs(i,e){i.querySelectorAll(".sl-pg-night-row[data-event-key]").forEach(t=>{let n=()=>e(t.dataset.eventKey);t.addEventListener("click",n),t.addEventListener("keydown",o=>{o.key!=="Enter"&&o.key!==" "||(o.preventDefault(),n())})})}import{t as cd}from"@seatlayer/core";function Ie(i){return String(i??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function dd(i,e){let t=i.objectType==="table"&&!!i.bookingMode,n=i.objectType==="booth",o=t||n||!i.seatNumber,s=o?i.rowLabel??i.displayLabel??i.label:i.seatNumber,r=t?`${g("picker.guests","Guests")} ${i.bookingMode==="variable"?`${i.minOccupancy}\u2013${i.maxOccupancy}`:i.capacity}`:!n&&i.rowLabel?`${e} ${U(i)??""}`.trim():"";return`<div class="sl-tip-head"><div class="sl-tip-id"><span class="sl-tip-seat${o?" name":""}">${Ie(s)}</span>`+(r?`<span class="sl-tip-row">${Ie(r)}</span>`:"")+"</div>"+(i.sectionLabel?`<div class="sl-tip-sec"><span class="sl-tip-eyebrow">${g("picker.section","Section")}</span><span class="sl-tip-secname">${Ie(i.sectionLabel)}</span></div>`:"")+"</div>"}function Zs(i,e){let t=i.status==="not_for_sale",n=i.mark?.kind==="partial",o=i.status==="free"||n?"":`<span class="sl-tip-tag">${t?g("picker.notAvailable","Not available"):i.status==="held"?cd("map.statusHeld"):g("picker.sold","Sold")}</span>`,s=t?"":e.price,r=s?`<span class="sl-tip-amt">${Ie(s)}</span>`:"",a=!s&&e.priceNote?`<div class="sl-tip-note">${Ie(e.priceNote)}</div>`:"",l=Fe(i,{compact:!0}),c=e.reason?`<div class="sl-tip-reason">${Ie(e.reason)}</div>`:"";return'<i class="sl-tip-rail" aria-hidden="true"></i>'+dd(i,e.rowTypeWord)+`<div class="sl-tip-cat"><span class="sl-tip-dot" style="background:${Ie(i.categoryColor)}"></span><span class="sl-tip-name">${Ie(i.categoryLabel)}</span>`+o+r+"</div>"+a+c+l+(e.extra??"")}function Qs(i,e,t,n){let o=i.x+14,s=i.y-n.height-12,r=i.y+18,a=s;o+n.width>e-8&&(o=i.x-n.width-14),s<8&&r+n.height<=t-8&&(a=r);let l=Math.max(8,t-n.height-8);return{left:Math.max(8,Math.min(o,Math.max(8,e-n.width-8))),top:Math.max(8,Math.min(a,l))}}function Js(i,e,t,n=22){let o=Math.max(8,Math.min(i.x-t.width/2,Math.max(8,e.width-t.width-8))),s=i.y-n-t.height,r=i.y+n;return s>=8?{left:o,top:s,placement:"above"}:r+t.height<=e.height-8?{left:o,top:r,placement:"below"}:{left:o,top:Math.max(8,Math.min(s<8?r:s,Math.max(8,e.height-t.height-8))),placement:s<8?"below":"above"}}var kn=14,pd=12,hd=12,ud=8;function er(i,e,t,n=pd){let o=e.height-kn-t.height,s=hd,r=o-n;if(r<=s)return{placement:"sheet",nudgeY:0};let a=(s+r)/2-i;return Math.abs(a)<=ud?{placement:"sheet",nudgeY:0}:{placement:"sheet",nudgeY:Math.round(a)}}function tr(i,e,t,n,o=0){let s=t.width/2+12,r=Math.max(s,Math.min(e.width-s,i.x)),a=i.y+o+t.height+24<=e.height,l=i.y-o<t.height+24&&a?"below":"above",c=l==="above"?i.y-o:i.y+o,h=n&&l==="above"?Math.max(t.height+24,c):c;return{left:r,top:Math.max(8,Math.min(e.height-8,h)),placement:l}}function ir(i,e,t){let n=i.querySelector("[data-pg-select-partial]"),o=[...i.querySelectorAll("[data-pg-event-key]")],s=()=>o.filter(a=>a.checked).map(a=>a.dataset.pgEventKey).filter(Boolean),r=()=>{if(!n)return;let a=s().length;n.disabled=a===0,n.textContent=e?.(a)??n.textContent};o.forEach(a=>{a.addEventListener("change",r);let l=a.closest(".sl-night");l?.classList.add("selectable"),l?.addEventListener("click",c=>{c.target!==a&&(a.checked=!a.checked,r())})}),n?.addEventListener("click",()=>{let a=s();a.length&&t?.(a)})}function Ge(i){let e=i?.displayType?.trim()||i?.rowType?.trim();return e||(i?.objectType==="table"?g("picker.table","Table"):i?.objectType==="booth"?g("picker.booth","Booth"):g("picker.row","Row"))}var md="sl-confirm-scrim",fd="--sl-scrim-mask";function gd(i){let e=Math.round(i.x),t=Math.round(i.y);return`radial-gradient(circle at ${e}px ${t}px, transparent 0 56px, #000 88px)`}function nr(i,e,t,n){let o=i??document.createElement("div");return i||(o.className=md),o.style.setProperty(fd,gd(n)),t.parentNode===e?o.nextSibling!==t&&e.insertBefore(o,t):o.parentNode!==e&&e.appendChild(o),o}function Tn(i){return i?.remove(),null}var vd=360,wd=160,xd=700,or=450;function sr(){try{return globalThis.matchMedia?.("(pointer: coarse)").matches??!1}catch{return!1}}function Sd(i){return yd("#ffffff",i)>=3?"#ffffff":"#0b0f19"}var Mi=class{constructor(e){this.el=null;this.seat=null;this.outsideTap=null;this.scrim=null;this.shownAt=0;this.lift=null;this.framing=null;this.mode="add";this.host=e}get element(){return this.el}set element(e){this.el=e}get candidate(){return this.seat}set candidate(e){this.seat=e}thumbHtml(e){let t=this.host.controller.doc;if(!t)return"";let n=ft(e)?e.viewUrl??"":"",o=xi(t);if(!n&&!o)return"";let s=n?null:Si(e,e.focalPoint??t.focalPoint);if(!n&&s==null)return"";let r=o&&s!=null?`<div class="sl-confirm-sight">${I(Li("picker.sightline",{m:s}))}</div>`:"";if(!n)return r;let a=I(Li("picker.viewFromSeat",{label:e.label})),l=I(this.host.tf("picker.viewFromHere","View from here"));return`<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>`+r}show(e,t="add"){let n=this.host;this.mode=t;let o=this.seat?.id;this.el?.remove(),this.el=null,this.seat=e,n.root()?.setAttribute("data-confirming","true"),n.els().side?.toggleAttribute("inert",!0),Object.values(n.regions()).forEach(M=>M.toggleAttribute("inert",!0)),n.controller.setSelectionFocus(e.id),o&&o!==e.id&&n.controller.deselect([o]),n.hideTooltip();let s=n.controller.seatDetails(e.id),r=n.controller.doc?.categories.find(M=>M.key===e.categoryKey),a=s?.price??(r?.tiers?.length?r.tiers[0].price:r?.price),l=a!=null?n.paidPrice(e.categoryKey,s?.tierId??r?.tiers?.[0]?.id??null,a,e.label):void 0,c=vo(s,e.displayLabel??e.label,Ge(s)),h=s?.tiers??r?.tiers??[],d=s?.tierId??h[0]?.id,u=n.suppressPricing()?"":ko(h,d,M=>n.money(n.paidPrice(e.categoryKey,M.id,M.price,e.label))),p=n.buyerView()==="venue3d",f=n.performanceGroup()?.confirmDateSelection??void 0,b=f?n.performanceGroup()?.nights?.()??[]:[],k=f?zs(b,f,e.id,(M,P)=>n.tf(M,P)):"";this.shownAt=performance.now();let S=document.createElement("div");S.className="sl-confirm sl-mo-in",t==="remove"&&S.classList.add("sl-confirm-removing"),k&&S.classList.add("sl-confirm-group-dates"),S.setAttribute("role","dialog"),S.setAttribute("aria-label",Li("picker.confirmSeatLabel",{label:e.label}));let v=n.controller.getRenderer?.()?.categoryDisplayColor?.(e.categoryKey)??r?.color??"#6e7bff";S.style.setProperty("--sl-cat",v),S.style.setProperty("--sl-cat-ink",Sd(v));let A=String(s?.categoryLabel??r?.label??e.categoryKey),y=n.controller.categoryAvailability()[e.categoryKey],H=typeof y=="number"&&y>0?bd("picker.leftCount",y):"";S.innerHTML=Ao({identityFields:c,identity:wo(s,e.displayLabel??e.label,Ge(s)),marker:fo({...s?.wheelchairSpaceType?{wheelchairSpaceType:s.wheelchairSpaceType}:{}}),see3dPill:xo(n.canOffer3d(),p),categoryColor:v,categoryLabel:A,priceLabel:!n.suppressPricing()&&l!=null?n.money(l):"",categoryLeftLabel:H,tierChoices:u,groupDates:k,wheelchair:"",commercial:Fe({...e.accessibility?.length?{accessibility:e.accessibility}:{},...s?.wheelchairSpaceType?{wheelchairSpaceType:s.wheelchairSpaceType}:{},...e.commercial?{commercial:e.commercial}:{}}),thumb:n.seatViewEnabled()&&n.buyerView()!=="venue3d"?this.thumbHtml(e):"",inspect:p?`<div class="sl-confirm-inspect-row">${yo(e,n.suppressPricing()?`${s?.displayLabel??e.displayLabel??e.label}`:`${s?.displayLabel??e.displayLabel??e.label} \xB7 ${l==null?n.tf("picker.priceNotSupplied","Price not supplied"):n.money(l)}`,p)}${bo(e,p?n.view3dCompareSeatIds():null)}${en(n.canOffer3d(),p)}</div>`:en(n.canOffer3d(),p),see3dRow:So(n.canOffer3d(),p),cancelLabel:Li("common.cancel"),selectLabel:t==="remove"?n.tf("picker.removeSeat","Remove seat"):n.addSeatLabel(s?.objectType)}),t==="remove"&&S.querySelector(".sl-confirm-add svg path")?.setAttribute("d","M6 6l12 12M18 6L6 18"),n.els().map.appendChild(S),this.el=S;let C=S.querySelector(".sl-confirm-thumb"),O=C?.closest(".sl-confirm-thumbwrap")??null;if(C&&O){let M=!1,P=()=>{if(M||!O.isConnected)return;M=!0;let D=()=>{O.remove(),this.el===S&&n.reanchor()};if(n.reducedMotion()||typeof requestAnimationFrame!="function"){D();return}O.style.height=`${O.offsetHeight}px`,O.classList.add("sl-confirm-thumb-out"),requestAnimationFrame(()=>{O.style.height="0px",O.style.opacity="0"}),setTimeout(D,wd)};C.addEventListener("error",P),C.addEventListener("load",()=>{C.naturalWidth||P()});let _=e.viewMeta?.previewUrl??e.viewUrl;_?n.resolveAssetUrl(_).then(D=>{if(!(!S.isConnected||this.el!==S)){if(!D){P();return}C.src=D}}).catch(D=>{P(),n.onError(D)}):P()}n.reanchor(),this.liftSeatClearOfSheet(e),S.querySelector(".sl-confirm-view")?.addEventListener("click",()=>{n.openSeatView(e)}),S.querySelector(".sl-confirm-confidence")?.addEventListener("click",M=>{n.openSeatConfidencePassport(e,M.currentTarget instanceof HTMLElement?M.currentTarget:null)}),S.querySelector(".sl-confirm-compare")?.addEventListener("click",()=>n.saveView3dComparisonSeat(e)),S.querySelectorAll("[data-confirm-tier]").forEach(M=>{M.addEventListener("click",()=>{let P=M.dataset.confirmTier,_=h.find(B=>B.id===P);if(!_)return;n.controller.setSeatTier(e.id,_.id),S.querySelectorAll("[data-confirm-tier]").forEach(B=>{B.setAttribute("aria-pressed",String(B===M))});let D=S.querySelector(".sl-confirm-price");D&&(D.textContent=n.money(n.paidPrice(e.categoryKey,_.id,_.price,e.label))),n.reanchor()})}),S.querySelectorAll(".sl-confirm-3d,.sl-confirm-3dpill,.sl-confirm-3drow").forEach(M=>{M.addEventListener("pointerdown",Qt,{once:!0}),M.addEventListener("click",()=>{n.buyerView()==="venue3d"?(n.dismiss(),n.view3dHandle()?.flyToSeat(e.id)):(n.rememberView3dReturnSeat(e),n.dismiss(),n.enter3d(e.id))})}),js(S,f,(M,P)=>n.tf(M,P),()=>n.reanchor()),S.querySelector(".sl-confirm-add").addEventListener("click",()=>{if(!this.ghostActivation()){if(this.mode==="remove"){this.removeCommitted();return}this.commit()}}),S.querySelector(".sl-confirm-cancel").addEventListener("click",()=>{this.ghostActivation()||this.cancel()}),this.armOutsideTap(S),requestAnimationFrame(()=>{let M=S.querySelector(".sl-confirm-add");M?.focus(),n.liftToastOverConfirm(),n.fitTranslatedRows(),n.inviteCommit(S,M)})}liftSeatClearOfSheet(e){let t=this.host.controller.getRenderer();this.framing={gestures:t?.getCameraGestureCount?.()??0,quietUntil:0},this.frameSeatForSheet(e)}frameSeatForSheet(e){let t=this.host,n=t.root();if(!this.el||n?.dataset.layout!=="narrow"||n?.dataset.view3d==="on")return;let o=t.els().map;if(!o)return;let s=t.controller.worldToScreen({x:e.x,y:e.y}),r=t.controller.getRenderer(),a=r?.getCameraGestureCount?.()??0,{nudgeY:l}=er(s.y,{height:o.clientHeight},{height:this.el.offsetHeight||230}),c=this.lift&&this.lift.gestures===a?this.lift.dy:0;if(!l){this.lift=c?{dy:c,gestures:a}:null;return}let h=!t.reducedMotion();r?.panScreenBy?.({x:0,y:l},{animate:h}),this.lift={dy:c+l,gestures:a},this.framing&&(this.framing.gestures=a,this.framing.quietUntil=h?this.now()+xd:0)}reframeSeatForSheet(){let e=this.framing,t=this.seat;!e||!t||e.quietUntil&&this.now()<e.quietUntil||(this.host.controller.getRenderer()?.getCameraGestureCount?.()??e.gestures)!==e.gestures||this.frameSeatForSheet(t)}now(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}settleLift(){let e=this.lift;if(this.lift=null,this.framing=null,!e)return;let t=this.host.controller.getRenderer();(t?.getCameraGestureCount?.()??e.gestures)===e.gestures&&t?.panScreenBy?.({x:0,y:-e.dy},{animate:!this.host.reducedMotion()})}reanchor(){let e=this.host;if(!this.el||!this.seat||e.root()?.dataset.view3d==="on")return;let t=e.controller.worldToScreen({x:this.seat.x,y:this.seat.y}),n=e.els().map;if(e.root()?.dataset.layout==="narrow"){this.el.removeAttribute("data-placement"),this.el.style.removeProperty("bottom"),this.scrim=nr(this.scrim,n,this.el,t),Vo(this.el,t,n),e.liftToastOverConfirm(),this.reframeSeatForSheet();return}this.scrim=Tn(this.scrim);let o=n.clientWidth,s=n.clientHeight,r=this.el.offsetWidth||276,a=this.el.offsetHeight||230,l=this.el.classList.contains("sl-confirm-group-dates"),c=e.controller.seatScreenRadius()*1.5,h=tr(t,{width:o,height:s},{width:r,height:a},l,c);this.el.dataset.placement=h.placement,this.el.style.left=`${h.left}px`,this.el.style.top=`${h.top}px`,li(this.el,t,{left:h.left,top:h.top,width:r,height:a})}ghostActivation(){return sr()?performance.now()-this.shownAt<or:!1}armOutsideTap(e){this.disarmOutsideTap();let t=this.host,n=s=>{if(this.el!==e){this.disarmOutsideTap();return}let r=s.target;!r||e.contains(r)||t.els().tray?.contains(r)||this.cancel()};this.outsideTap=n;let o=t.root();setTimeout(()=>{this.outsideTap===n&&(o??document).addEventListener("pointerdown",n,!0)},sr()?or:0)}disarmOutsideTap(){if(!this.outsideTap)return;let e=this.outsideTap;this.outsideTap=null,(this.host.root()??document).removeEventListener("pointerdown",e,!0),document.removeEventListener("pointerdown",e,!0)}dismiss(){let e=this.host;this.disarmOutsideTap(),this.scrim=Tn(this.scrim),this.settleLift(),this.el&&ci(this.el),this.el=null,this.seat=null,e.liftToastOverConfirm(),e.root()?.removeAttribute("data-confirming"),Object.values(e.regions()).forEach(t=>t.toggleAttribute("inert",!1)),e.applyPanelCollapsed(),e.controller.setSelectionFocus(null)}async commit(){let e=this.host,t=this.seat;if(!t)return;let o=this.el?.querySelector(".sl-confirm-add")??null;if(o?.classList.contains("is-adding")||!await Gs(this.el,t.id,e.performanceGroup()?.confirmDateSelection??void 0))return;e.collapseSectionCard(),this.seat=null,e.syncTray(),e.syncSelectionTo3d();let s=()=>{e.dismiss(),hn(e.els(),e.controller.worldToScreen(t),t,e.controller.doc?.categories)};if(!o||e.reducedMotion()){s();return}o.classList.remove("sl-confirm-add-invite"),o.classList.add("is-adding"),o.setAttribute("aria-disabled","true");let r=o.querySelector(".sl-confirm-add-t");r&&(r.textContent=e.tf("picker.added","Added")),e.scheduleMotion(s,vd)}cancel(){let e=this.host,t=this.seat;t&&(this.mode!=="remove"&&e.controller.deselect([t.id]),this.seat&&e.dismiss(),e.syncSelectionTo3d(),e.root()?.focus({preventScroll:!0}))}removeCommitted(){let e=this.host,t=this.seat;t&&(e.controller.deselect([t.id]),e.dismiss(),e.syncTray(),e.syncSelectionTo3d(),e.root()?.focus({preventScroll:!0}))}};function rr(i,e,t){if(!e||t||i.classList.contains("sl-confirm-removing"))return;e.classList.add("sl-confirm-add-invite");let n=()=>e.classList.remove("sl-confirm-add-invite");i.addEventListener("pointerdown",n,{once:!0}),i.addEventListener("keydown",n,{once:!0}),e.addEventListener("focus",n,{once:!0})}function ar(i,e){return i&&i!=="seat"?e("picker.select","Select"):e("picker.addSeat","Add seat")}import{pointInPolygon as kd}from"@seatlayer/core";import{createMinimapTransform as Td,minimapPointToWorld as Ed,minimapViewportPlan as Cd}from"@seatlayer/core/picker/minimapGeometry";function Ad(i){let e={inactive:0,available:1,selected:2},t=new Map;for(let o of i){let s=t.get(o.id);(!s||e[o.state]>e[s])&&t.set(o.id,o.state)}let n={selected:0,available:0,inactive:0};for(let o of t.values())n[o]+=1;return n}function Pd(i,e){return i.x<=e.x&&i.y<=e.y&&i.x+i.width>=e.x+e.width&&i.y+i.height>=e.y+e.height}function lr(i,e){let t=new En(i);return t.build(e),t}var En=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}dispose(){this.miniToggle?.remove(),this.miniWrap?.remove(),this.miniToggle=null,this.miniWrap=null,this.miniCanvas=null,this.miniBase=null,this.miniLabel=null,this.miniTf=null,this.miniDrag=null,this.host.root()?.removeAttribute("data-minimap-open")}build(e){if(!this.host.controller.getViewport())return;let n=document.createElement("button");n.type="button",n.className="sl-minimap-toggle",n.setAttribute("aria-label",g("picker.openVenueMap","Open venue overview map")),n.setAttribute("aria-expanded","false"),n.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(n),this.miniToggle=n;let o=document.createElement("div");o.className="sl-minimap",o.setAttribute("role","group");let s=document.createElement("div");s.className="sl-minimap-bar";let r=document.createElement("span");r.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",s.append(r,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.")),o.append(s,c),e.appendChild(o),this.miniWrap=o,this.miniLabel=r,this.miniCanvas=c;let h=document.createElement("canvas");this.miniBase=h,n.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,n=this.host.controller.getViewport()?.bounds;if(!e||!t||!n||!(n.width>0&&n.height>0))return;let o=196,s=146,r=6,a=n.width/Math.max(1,n.height),l=o,c=Math.round(o/a);c>s&&(c=s,l=Math.round(s*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=Td(n,e.width,e.height,h,r)}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"),n=this.host.controller.getMinimapSnapshot().sections,s=n.find(h=>h.active)?.label??this.host.focusedSectionLabel(),r=s?`${t} \xB7 ${s}`:t;this.miniLabel.textContent=r;let{selected:a,available:l,inactive:c}=Ad(n);this.miniWrap.setAttribute("aria-label",n.length?`${r}. ${a} selected, ${l} available, ${c} inactive sections.`:r),this.miniCanvas?.setAttribute("aria-label",n.length?`${r}. ${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.")}`:`${r}. ${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 n=e.getContext("2d");if(!n)return;n.clearRect(0,0,e.width,e.height);let o=d=>d*t.scale+t.offX,s=d=>d*t.scale+t.offY,r=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){if(d.outline.length<3)continue;n.beginPath(),d.outline.forEach((p,f)=>f===0?n.moveTo(o(p.x),s(p.y)):n.lineTo(o(p.x),s(p.y))),n.closePath();let u=d.paint;if(n.globalAlpha=d.state==="inactive"?.5:.92,u?n.fillStyle=u.fill:(n.globalAlpha=d.state==="inactive"?.18:d.state==="selected"?.72:.34,n.fillStyle=d.state==="inactive"?a:d.state==="selected"?l:c),n.fill(),n.globalAlpha=.82,n.lineWidth=Math.max(1,t.dpr),n.strokeStyle=u?.stroke||r,n.stroke(),d.owned){n.globalAlpha=1,n.lineWidth=Math.max(2,t.dpr*1.5),n.strokeStyle=l,n.stroke();let p=d.outline.reduce((f,b)=>({x:f.x+b.x,y:f.y+b.y}),{x:0,y:0});n.beginPath(),n.arc(o(p.x/d.outline.length),s(p.y/d.outline.length),Math.max(1.5,t.dpr*1.6),0,Math.PI*2),n.fillStyle=l,n.fill(),n.beginPath(),d.outline.forEach((f,b)=>b===0?n.moveTo(o(f.x),s(f.y)):n.lineTo(o(f.x),s(f.y))),n.closePath()}d.active&&(n.globalAlpha=1,n.lineJoin="round",n.lineWidth=Math.max(4,t.dpr*3.5),n.strokeStyle=this.host.cssVar("--sl-surface")||"#fff",n.stroke(),n.lineWidth=Math.max(2,t.dpr*1.75),n.strokeStyle=l,n.stroke())}if(n.globalAlpha=1,!h.sections.length){let d=Math.max(1,t.dpr),u=this.host.controller.getRenderer?.(),p=new Map,f=b=>{let k=p.get(b);if(k)return k;let S=u?.categoryDisplayColor?.(b)||c;return p.set(b,S),S};for(let b of h.seats)n.globalAlpha=b.state==="inactive"?.22:.78,n.fillStyle=b.state==="inactive"?a:b.state==="selected"?l:f(b.categoryKey),n.beginPath(),n.arc(o(b.x),s(b.y),d,0,Math.PI*2),n.fill();n.globalAlpha=1}}drawMinimapRect(){let e=this.miniCanvas,t=this.miniBase,n=this.miniTf;if(!e||!t||!n)return;let o=e.getContext("2d");if(!o)return;o.clearRect(0,0,e.width,e.height),o.drawImage(t,0,0);let s=this.host.controller.getViewport();if(!s||Pd(s.visible,s.bounds))return;let r=Cd(s.visible,n,e.width,e.height,Math.max(2,n.dpr*2)),a=this.host.cssVar("--sl-text")||"#12151c",l=this.host.cssVar("--sl-surface")||"#fff";o.save(),o.globalAlpha=.1,o.fillStyle=a,o.fillRect(r.raw.x,r.raw.y,r.raw.width,r.raw.height),o.globalAlpha=.9,o.lineJoin="round",o.lineWidth=Math.max(4,n.dpr*3.25),o.strokeStyle=l,o.strokeRect(r.raw.x,r.raw.y,r.raw.width,r.raw.height),o.globalAlpha=1,o.lineWidth=Math.max(2,n.dpr*1.75),o.strokeStyle=a,o.strokeRect(r.raw.x,r.raw.y,r.raw.width,r.raw.height),r.clipped&&Object.values(r.clippedEdges).some(Boolean)&&(o.setLineDash([Math.max(3,n.dpr*3),Math.max(2,n.dpr*2)]),o.strokeRect(r.clipped.x,r.clipped.y,r.clipped.width,r.clipped.height)),o.restore()}minimapWorldPoint(e){let t=this.miniCanvas,n=this.miniTf;if(!t||!n)return null;let o=t.getBoundingClientRect(),s=(e.clientX-o.left)*(t.width/Math.max(1,o.width)),r=(e.clientY-o.top)*(t.height/Math.max(1,o.height));return{...Ed({x:s,y:r},n),px:s,py:r}}minimapPointerDown(e){let t=this.minimapWorldPoint(e),n=this.host.controller.getViewport()?.visible;!t||!n||!(t.x>=n.x&&t.x<=n.x+n.width&&t.y>=n.y&&t.y<=n.y+n.height)||(this.miniDrag={pointerId:e.pointerId,offsetX:t.x-(n.x+n.width/2),offsetY:t.y-(n.y+n.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 n=this.minimapWorldPoint(e);n&&(!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:n.x-t.offsetX,y:n.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 n=e.key==="ArrowLeft"?-t.width*.2:e.key==="ArrowRight"?t.width*.2:0,o=e.key==="ArrowUp"?-t.height*.2:e.key==="ArrowDown"?t.height*.2:0;!n&&!o||(this.host.controller.clearSectionFocus(),this.host.controller.panToWorld({x:t.x+t.width/2+n,y:t.y+t.height/2+o}),e.preventDefault())}minimapJump(e){let t=this.minimapWorldPoint(e);if(t){for(let n of this.host.controller.getMinimapSnapshot().sections)if(!(n.state==="inactive"||n.outline.length<3)&&kd(t,n.outline)){this.host.controller.focusSection(n.id);return}this.host.controller.clearSectionFocus(),this.host.controller.panToWorld(t)}}};import{t as Cn}from"@seatlayer/core";var Ld=12;function cr(i,e){let t=e.floors(),n=new Set(t.map(C=>C.label.trim().toLocaleLowerCase())),o=e.zones().filter(C=>C.seatCount>0&&!n.has(C.label.trim().toLocaleLowerCase())),s=e.sections().filter(C=>C.seatCount>0&&!n.has(C.label.trim().toLocaleLowerCase())),r=o.length>1?[]:s,a=t.length>1,l=o.length>1,c=r.length>1;if(!a&&!l&&!c)return null;let h=document.createElement("div");h.className="sl-view3d-nav";let d=null,u=document.createElement("button");u.type="button",u.className="sl-view3d-nav-toggle",u.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>',f=document.createElement("span");u.innerHTML=p,u.appendChild(f);let b=()=>{for(let C of h.querySelectorAll(":scope > div")){let O=C.querySelector('[aria-pressed="true"]');!O||C.scrollWidth<=C.clientWidth||O.scrollIntoView({block:"nearest",inline:"nearest"})}},k=()=>{if(d)return d;for(let C of h.querySelectorAll(":scope > div")){let O=C.querySelector('button[aria-pressed="true"]'),M=O?.textContent?.trim();if(M&&O?.dataset.floor!=="")return M}return a&&(l||c)?g("picker.levelsAndAreas","Levels & areas"):a?g("picker.levels","Levels"):g("picker.areas","Areas")},S=C=>{h.classList.toggle("is-open",C),u.setAttribute("aria-expanded",String(C)),C&&typeof requestAnimationFrame=="function"&&requestAnimationFrame(b),f.textContent=k()};u.addEventListener("click",()=>S(!h.classList.contains("is-open"))),h.addEventListener("keydown",C=>{C.key!=="Escape"||!h.classList.contains("is-open")||(C.preventDefault(),C.stopPropagation(),S(!1),u.focus())});let v=document.createElement("button");v.type="button",v.className="sl-view3d-nav-close",v.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12"/></svg>';let A=g("picker.closeVenueNavigation","Close venue navigation");v.setAttribute("aria-label",A),v.title=A,v.addEventListener("click",()=>{S(!1),u.focus()}),S(!1),h.appendChild(u);let y=C=>{},H=C=>{};if(a){let C=document.createElement("div");C.setAttribute("role","group"),C.setAttribute("aria-label",g("picker.levels","Levels"));let O=[];H=_=>{O.forEach(D=>{D.setAttribute("aria-pressed",String((D.dataset.floor===""?null:Number(D.dataset.floor))===_))})};let M=_=>{e.focusFloor(_)&&(H(_),y(_))},P=(_,D)=>{let B=document.createElement("button");B.type="button",B.textContent=_,B.dataset.floor=D===null?"":String(D),B.setAttribute("aria-pressed",String(D===null)),B.addEventListener("click",()=>{M(D),S(!1)}),O.push(B),C.appendChild(B)};P(g("picker.allLevels","All levels"),null);for(let _ of t)P(_.label||Cn("picker.levelNumber",{number:_.index+1}),_.index);h.appendChild(C)}if(l||c){let C=document.createElement("div");C.setAttribute("role","group"),C.setAttribute("aria-label",g("picker.areas","Areas"));let O=l?o.map(P=>({id:P.id,label:P.label||P.id,go:()=>{e.focusZone(P.id)}})):r.map(P=>({id:P.id,label:P.label||P.id,floorIndex:P.floorIndex,go:()=>{e.focusSection(P.id),Number.isFinite(P.floorIndex)&&H(P.floorIndex)}})),M=P=>{let _=l||P===null?O:O.filter(D=>D.floorIndex===void 0||D.floorIndex===P);if(C.replaceChildren(),!_.length){C.remove();return}if(C.isConnected||h.insertBefore(C,v.isConnected?v:null),!l&&_.length>Ld){let D=document.createElement("select");D.setAttribute("aria-label",g("picker.jumpToSection","Jump to section"));let B=document.createElement("option");B.value="",B.textContent=g("picker.jumpToSection","Jump to section"),D.appendChild(B);for(let se of _){let re=document.createElement("option");re.value=se.id,re.textContent=se.label,D.appendChild(re)}D.addEventListener("change",()=>{_.find(se=>se.id===D.value)?.go()}),C.appendChild(D);return}for(let D of _){let B=document.createElement("button");B.type="button",B.textContent=D.label,B.dataset.area=D.id,B.addEventListener("click",()=>{d=D.label,D.go(),S(!1)}),C.appendChild(B)}};y=M,M(null)}return h.appendChild(v),i.appendChild(h),h}var Hi=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 s=document.createElement("button");s.type="button",s.className="main",s.addEventListener("click",()=>{this.host.savedSeatIds().length>1?this.host.openComparison():this.host.toast(g("picker.chooseAnotherToCompare","Choose another seat to compare."),"neutral")});let r=document.createElement("button");r.type="button",r.className="clear",r.textContent="\xD7",r.setAttribute("aria-label",g("picker.clearSavedSeatComparison","Clear saved seat comparison")),r.addEventListener("click",()=>this.host.clearComparison()),t.append(s,r),e.appendChild(t),this.chip=t}let n=this.host.savedSeatIds().length,o=t.querySelector(".main");o&&(o.textContent=n>1?Cn("picker.compareCount",{count:n}):g("picker.oneSeatSaved","1 seat saved"),o.setAttribute("aria-label",n>1?Cn("picker.openComparisonOfSeats",{count:n}):g("picker.oneSeatSavedChooseAnother","One seat saved; choose another to compare")))}remove(){this.chip?.remove(),this.chip=null}mainButton(){return this.chip?.querySelector(".main")??null}};function dr(i){return!i?.querySelector('[data-ref="zfs"]')}var pr="sl:sheet-hint";function hr(i){let e=i.boot;if(!e?.isConnected)return;if(i.reducedMotion){e.remove();return}e.classList.add("is-going"),setTimeout(()=>e.remove(),200);let t=document.createElement("div");t.className="sl-shells-in",t.setAttribute("aria-hidden","true"),i.map?.appendChild(t),setTimeout(()=>t.remove(),650),i.rail?.classList.add("is-in"),i.root?.classList.add("is-arriving"),setTimeout(()=>{i.rail?.classList.remove("is-in"),i.root?.classList.remove("is-arriving"),Md(i.root)},900)}function Md(i){if(!i||i.dataset.layout!=="narrow")return;try{if(window.sessionStorage.getItem(pr))return;window.sessionStorage.setItem(pr,"1")}catch{}let e=i.querySelector(".sl-sheet-toggle");e&&(e.classList.add("sl-mo-hint"),e.addEventListener("animationend",()=>e.classList.remove("sl-mo-hint"),{once:!0}))}function ur(i,e){i.addEventListener("keydown",t=>{if(t.key==="Escape"){for(let n of e())if(n.open()){t.preventDefault(),t.stopPropagation(),n.close();return}}})}function Ri(i){let e=i.committedSelection(),t=i.controller.getGAAreas(),n=i.hold?.items??[],o=new Set(n.map(u=>u.label)),s=qo(i,t,n),r=He(i.gaQty,n),a=n.reduce((u,p)=>u+i.paidPrice(p.categoryKey,p.tierId,p.unitPrice,p.label)*(p.quantity??1),0),l=n.reduce((u,p)=>u+(p.quantity??1),0),c=e.filter(u=>!o.has(u.label)),h=c.reduce((u,p)=>u+i.paidPrice(p.categoryKey,p.tierId??null,p.price,p.label)*(p.quantity??1),0)+s+a,d=c.reduce((u,p)=>u+(p.quantity??1),0)+r+l;return{seats:e,freshSeats:c,gaAreas:t,heldItems:n,heldLabels:o,heldCount:l,total:h,count:d}}function Ii(i,e){let t=e.tiers?.length?e.tiers[0].price:e.price;return t===void 0||!e.key?t:i.paidPrice(e.key,e.tiers?.[0]?.id??null,t)}function Oi(i,e){let t=e.tiers?.length?e.tiers.map(n=>i.paidPrice(e.key,n.id??null,n.price)):e.price==null?[]:[i.paidPrice(e.key,null,e.price)];if(e.key)for(let n of i.pricesByChannel.values())for(let o of n)o.categoryKey===e.key&&t.push(o.price);return t.length?{min:Math.min(...t),max:Math.max(...t)}:void 0}var Nt="seatlayer_";function Hd(){let i=globalThis;return i.document?.modelContext??i.navigator?.modelContext??null}function ce(i,e){return e?{ok:!1,reason:i,message:e}:{ok:!1,reason:i}}function Rd(i){return Array.isArray(i)?i.filter(e=>typeof e=="string"&&!!e):[]}function Id(i,e){let t=i.event();if(!t)return ce("not_loaded","The seat map has not finished loading.");let n=i.selectionLimits();return{ok:!0,event:t,selection:{max:n.max,...n.required!=null?{required:n.required}:{}},categories:i.categories(),zones:i.zones(),hasPremiumSeats:i.hasPremiumSeats(),holdsAllowed:e}}function mr(i,e){let t=o=>!!o&&o.toLowerCase()===e.toLowerCase(),n=i.find(o=>t(o.key??o.id))??i.find(o=>t(o.label));return n?.key??n?.id??null}function fr(i,e){let t=e.map(n=>i.describeSeat(n.id));return{seatIds:e.map(n=>n.id),labels:e.map(n=>n.label),section:t[0]?.section??"",row:t[0]?.row??"",seats:e.map((n,o)=>t[o]?.seat||n.label),category:t[0]?.category??e[0].categoryKey,unitPrice:e[0].price,total:e.reduce((n,o)=>n+o.price,0)}}function Od(i,e,t){let n=new Map;for(let s of e){let r=n.get(s.rowKey);r?r.push(s):n.set(s.rowKey,[s])}let o=[];for(let s of n.values()){let r=[...s].sort((l,c)=>l.index-c.index),a=0;for(let l=1;l<=r.length;l++)if(l===r.length||r[l].index!==r[l-1].index+1||r[l].categoryKey!==r[l-1].categoryKey){for(let h=a;h+t<=l;h+=t)o.push(fr(i,r.slice(h,h+t)));a=l}}return o}function _d(i,e,t){let n=new Map;for(let s of e){let r=n.get(s.sectionKey);r?r.push(s):n.set(s.sectionKey,[s])}let o=[];for(let s of n.values()){if(s.length<t)continue;let r=[...s].sort((a,l)=>a.price!==l.price?l.price-a.price:a.rowKey.localeCompare(l.rowKey)||a.index-l.index);o.push(fr(i,r.slice(0,t)))}return o}function Dd(i,e){if(!i.event())return ce("not_loaded","The seat map has not finished loading.");let n=i.selectionLimits(),o=Math.floor(Number(e.count));if(!Number.isInteger(o)||o<1||o>n.max)return ce("bad_count",`count must be a whole number between 1 and ${n.max}.`);let s=Number.isInteger(Number(e.limit))?Math.max(1,Math.min(20,Number(e.limit))):5,r=e.together===void 0?!0:!!e.together,a=typeof e.max_price=="number"&&Number.isFinite(e.max_price)?e.max_price:null,l=typeof e.category=="string"&&e.category?e.category:null,c=typeof e.zone=="string"&&e.zone?e.zone:null,h=l?mr(i.categories(),l):null;if(l&&!h)return ce("no_match",`No ticket type called "${l}".`);let d=c?mr(i.zones(),c):null;if(c&&!d)return ce("no_match",`No zone called "${c}".`);let u=i.seats().filter(b=>b.available);if(!u.length)return ce("sold_out");let p=u.filter(b=>(!h||b.categoryKey===h)&&(!d||b.zoneId===d)&&(a==null||b.price<=a));if(!p.length)return ce("no_match");let f=r?Od(i,p,o):_d(i,p,o);return f.length?(f.sort((b,k)=>k.unitPrice!==b.unitPrice?k.unitPrice-b.unitPrice:b.row.localeCompare(k.row)||b.labels[0].localeCompare(k.labels[0])),{ok:!0,groups:f.slice(0,s),searched:{count:o,filters:{...a!=null?{max_price:a}:{},...h?{category:h}:{},...d?{zone:d}:{},together:r}}}):ce(r?"not_enough_together":"no_match")}function gr(i){return{ok:!0,...i.selection()}}function Nd(i,e){let t=i.event();if(!t)return ce("not_loaded","The seat map has not finished loading.");if(t.salesClosed)return ce("event_closed","Sales are closed for this event.");let n=Rd(e.seat_ids);return n.length?(i.clearSelection(),i.selectObjects(n),gr(i)):ce("nothing_requested","Pass one or more seat ids or labels in seat_ids.")}function Bd(i,e){let t=async o=>{try{return await o()}catch(s){return ce("error",s instanceof Error?s.message:String(s))}},n=[{name:`${Nt}describe_event`,title:"Describe this seated event",description:"Read the event, its ticket types with live availability and prices, its zones, and how many seats this buyer may select. Call this first.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:()=>t(()=>Id(i,e))},{name:`${Nt}find_seats`,title:"Find available seats",description:"Search the seat map for groups of available seats. Read-only: it never selects, holds or reserves anything. Returns candidate groups with their seat ids, prices and location.",inputSchema:{type:"object",properties:{count:{type:"integer",minimum:1,description:"How many seats are needed."},max_price:{type:"number",description:"Highest acceptable price per seat."},category:{type:"string",description:"Ticket type key or label to restrict the search to."},zone:{type:"string",description:"Zone id or label to restrict the search to."},together:{type:"boolean",description:"Require the seats to be side by side in one row (default true)."},limit:{type:"integer",minimum:1,maximum:20,description:"How many candidate groups to return (default 5)."}},required:["count"],additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:o=>t(()=>Dd(i,o))},{name:`${Nt}select_seats`,title:"Select seats on the map",description:"Replace the current selection with the given seats, exactly as tapping them would. The buyer sees the seats light up and the basket update. No reservation is made.",inputSchema:{type:"object",properties:{seat_ids:{type:"array",items:{type:"string"},description:"Seat ids or labels, e.g. from find_seats."}},required:["seat_ids"],additionalProperties:!1},annotations:{readOnlyHint:!1,untrustedContentHint:!0},execute:o=>t(()=>Nd(i,o))},{name:`${Nt}get_selection`,title:"Read the current selection",description:"Read the seats currently selected in the basket, their total, any open reservation, and whether the selection satisfies this event\u2019s rules.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!0,untrustedContentHint:!0},execute:()=>t(()=>gr(i))}];return e&&n.push({name:`${Nt}hold_selection`,title:"Reserve the selected seats",description:"Reserve the currently selected seats for this buyer for a limited time, exactly as pressing the checkout button would. Confirm with the buyer before calling this.",inputSchema:{type:"object",properties:{},additionalProperties:!1},annotations:{readOnlyHint:!1,untrustedContentHint:!0},execute:()=>t(()=>i.hold())}),n}async function br(i,e={}){let t=Hd();if(!t||typeof t.registerTool!="function")return null;let n=new AbortController,o=Bd(i,!!e.holds),s=[],r=e.exposedTo?.length?[...new Set(e.exposedTo)]:void 0;try{for(let a of o)await t.registerTool(a,{signal:n.signal,...r?{exposedTo:r}:{}}),s.push(a.name)}catch(a){console.warn("seatmap: WebMCP tools could not be registered",a)}return s.length?{names:s,dispose:()=>{if(n.abort(),typeof t.unregisterTool=="function")for(let a of s)try{t.unregisterTool(a)}catch{}}}:null}async function yr(i){let e=i.opts.webMcp;if(!e||i.destroyed)return;let t=typeof e=="object"&&!!e.holds,n=typeof e=="object"?e.exposedTo:void 0;try{i.webMcp=await br(Pn(i,t),{holds:t,exposedTo:n}),i.destroyed&&An(i)}catch(o){console.warn("seatmap: WebMCP registration failed",o)}}function An(i){i.webMcp?.dispose(),i.webMcp=null}function Pn(i,e){let t=(n,o)=>{if(Number.isInteger(n.logicalSeatIndex))return n.logicalSeatIndex;let s=n.id.lastIndexOf(":"),r=s<0?NaN:Number(n.id.slice(s+1));return Number.isFinite(r)?r:o};return{event:()=>{let n=i.renderInfo;return n?{name:n.eventName??"",venue:n.venue??null,startsAt:n.startsAt??null,timezone:n.timezone??null,currency:i.currency,salesClosed:i.salesClosed}:null},selectionLimits:()=>({max:i.maxTickets,required:i.exactTickets}),categories:()=>{let n=i.controller.categoryAvailability();return(i.controller.doc?.categories??[]).filter(o=>!o.notForSale).map(o=>{let s=Oi(i,o),r=Ii(i,o);return{key:o.key,label:o.label??o.key,...r===void 0?{}:{price:r},...s&&s.min!==s.max?{priceRange:s}:{},available:n[o.key]??0}})},zones:()=>i.controller.getBestAvailableZones(),hasPremiumSeats:()=>i.controller.hasPremiumSeats(),seats:()=>{let n=i.controller.getActiveFloorId(),o=[];return i.allSeats().forEach((s,r)=>{if(s.floorId&&n&&s.floorId!==n)return;let a=i.controller.getStatus(s.id)??"free",l=i.controller.doc?.categories.find(h=>h.key===s.categoryKey),c=l?.tiers?.length?l.tiers[0].price:l?.price??0;o.push({id:s.id,label:s.label,rowKey:s.logicalRowId??s.rowId,sectionKey:s.sectionId??s.rowId,index:t(s,r),categoryKey:s.categoryKey,price:i.paidPrice(s.categoryKey,l?.tiers?.[0]?.id??null,c,s.label),...s.zoneId?{zoneId:s.zoneId}:{},available:a==="free"&&!l?.notForSale})}),o},describeSeat:n=>{let o=i.controller.seatDetails(n);return o?{section:o.sectionLabel??"",row:U(o)??"",seat:o.seatNumber??o.label,category:o.categoryLabel??o.categoryKey}:null},selection:()=>{let{freshSeats:n,total:o,count:s}=Ri(i);return{seats:n.map(r=>({id:r.id,label:r.label,section:r.sectionLabel??"",row:U(r)??"",seat:r.seatNumber??r.label,category:r.categoryKey,price:i.paidPrice(r.categoryKey,r.tierId??null,r.price,r.label)})),count:s,total:o,currency:i.currency,hold:i.hold?{id:i.hold.holdId,expiresAt:i.hold.expiresAt}:null,validity:i.getSelectionValidity()}},clearSelection:()=>i.clearSelection(),selectObjects:n=>{i.selectObjects(n)},hold:()=>e?Vd(i):Promise.resolve({ok:!1,reason:"not_allowed"})}}async function Vd(i){if(i.salesClosed)return{ok:!1,reason:"event_closed"};if(!i.totalTicketCount())return{ok:!1,reason:"nothing_selected"};let e=i.controller.getSelectionValidity(i.totalTicketCount());return e&&!e.isValid?{ok:!1,reason:"invalid_selection"}:(await i.handleCta(),i.hold?{ok:!0,hold:{id:i.hold.holdId,expiresAt:i.hold.expiresAt}}:{ok:!1,reason:"hold_failed"})}function Ln(i){return{renderingTimeMillis:i.ms,performanceProfile:i.performanceProfile,seatCount:i.seatCount,objectCount:i.objectCount,sectionCount:i.sectionCount,view:i.view,eventKey:i.eventKey,chartName:i.chartName,floorCount:i.floorCount,transport:i.transport,load:i.load,metricScope:i.metricScope,operationalTelemetryReporter:"sdk"}}function vr(i,e){Te({apiBase:i.apiBase,event:i.eventKey,scope:i.metricScope,surface:i.surface,outcome:"success",ms:i.ms,performanceProfile:i.performanceProfile,chartDelivery:i.chartDelivery,seats:i.seatCount,floors:i.floorCount,view:i.view,load:i.load,transport:i.transport}),e("chart_rendered",Ln(i))}import{seatConfidenceDisclosure as Fd}from"@seatlayer/core/core/seatConfidence";function Z(i){return String(i??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function wr(i){let e=Fd(i.seat.confidenceEvidence),t=i.seat.confidenceEvidence,n=e.limitations.length?`<h4>Known limits</h4><ul>${e.limitations.map(c=>`<li>${Z(c)}</li>`).join("")}</ul>`:"",o=e.modeledTarget?`<div><dt>Modeled target</dt><dd>${Z(e.modeledTarget)}</dd></div>`:"",s=t?`<div><dt>Evidence ID</dt><dd>${Z(t.evidenceId)}</dd></div><div><dt>Model version</dt><dd>${Z(t.modelVersion)}</dd></div><div><dt>Event configuration</dt><dd>${Z(t.eventConfigurationId??"Not configuration-specific")}</dd></div><div><dt>Approval</dt><dd>${Z(t.approvedByRole??"No external approval supplied")}</dd></div>`+(t.validUntil?`<div><dt>Valid until</dt><dd>${Z(t.validUntil.slice(0,10))}</dd></div>`:""):"<div><dt>Evidence ID</dt><dd>None supplied</dd></div>",r=ii(i.seat.commercial).join(" \xB7 ")||i.restrictionFallback,a=`<div><dt>View restriction</dt><dd>${Z(r)}</dd></div>`+(i.seat.commercial?.note?`<div><dt>Organizer note</dt><dd>${Z(i.seat.commercial.note)}</dd></div>`:""),l=i.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">${Z(i.title)}</strong></div><button type="button" data-close aria-label="Close seat confidence passport">\xD7</button></header><div class="sl-view3d-passport-summary"><strong>${Z(e.headline)}</strong><span>${Z(e.coverage)} \xB7 ${Z(e.freshness)}</span></div><dl><div><dt>Model status</dt><dd>${Z(e.model)}</dd></div><div><dt>Reality evidence</dt><dd>${Z(e.reality)}</dd></div><div><dt>Source</dt><dd>${Z(e.provenance)}</dd></div>`+a+o+s+`</dl>${n}<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 xr(i){return i?i.closest("[data-report]")?"report":i.closest("[data-close]")||i.classList.contains("sl-view3d-passport-scrim")?"close":null:null}function _i(i,e,t){let n=i?.querySelector("[data-report]"),o=i?.querySelector("[data-report-status]");n&&(n.disabled=e!=="failed",n.textContent=e==="received"?"Report received":"Report this view"),o&&(o.setAttribute("role",e==="failed"?"alert":"status"),o.textContent=e==="sending"?"Sending report\u2026":e==="received"?`Report received. Reference ${t??""}.`:"The report could not be sent. Please try again.")}function Mn(i,e,t=null){let n=i.view3dEl;if(!n)return;Bt(i,!1);let o=e.confidenceEvidence,s=i.controller.seatDetails(e.id),r=document.createElement("div");r.className="sl-view3d-passport-shell",r.innerHTML=wr({seat:e,title:s?.displayLabel??e.displayLabel??e.label,restrictionFallback:i.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),canReport:typeof i.api.reportViewEvidence=="function"});let a=[...new Set([...n.children,...[...i.els.map.children].filter(u=>u!==n)])].filter(u=>u instanceof HTMLElement),l=a.map(u=>({element:u,inert:u.inert,ariaHidden:u.getAttribute("aria-hidden")}));for(let u of a)u.inert=!0,u.setAttribute("aria-hidden","true");n.appendChild(r),n.classList.add("has-passport"),i.view3dPassportEl=r;let c=r.querySelector(".sl-view3d-passport"),h=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],d=u=>{if(u.key==="Escape"){u.preventDefault(),u.stopPropagation(),u.stopImmediatePropagation(),Bt(i);return}if(u.key!=="Tab")return;let p=h();if(!p.length)return;let f=p[0],b=p[p.length-1];u.shiftKey&&document.activeElement===f?(u.preventDefault(),b.focus()):!u.shiftKey&&document.activeElement===b&&(u.preventDefault(),f.focus())};window.addEventListener("keydown",d,!0),i.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 u=t?.isConnected?t:i.confirmEl?.querySelector(".sl-confirm-confidence")??i.view3dCompareEl?.querySelector("[data-passport-seat]")??null,p=u?.closest(".sl-confirm,.sl-view3d-compare");p?.isConnected&&(p.inert=!1,p.removeAttribute("aria-hidden")),r.remove(),n.classList.remove("has-passport"),i.view3dPassportEl===r&&(i.view3dPassportEl=null);let f=u??i.view3dCompareEl?.querySelector("[data-passport-seat]")??i.confirmEl?.querySelector(".sl-confirm-confidence")??i.view3dCompareChip.mainButton();(t?.isConnected?t:f)?.focus()},r.addEventListener("click",u=>{let p=xr(u.target instanceof HTMLElement?u.target:null);p==="close"&&Bt(i),p==="report"&&zd(i,e)}),requestAnimationFrame(()=>h()[0]?.focus()),i.emit3dAnalytics("3d_confidence_passport_opened",{seatId:e.id,evidenceId:o?.evidenceId??null,eventConfigurationId:o?.eventConfigurationId??null,modelLevel:o?.modelLevel??"unverified",realityLevel:o?.realityLevel??"none"})}async function zd(i,e){if(i.api.reportViewEvidence){_i(i.view3dPassportEl,"sending");try{let t=await i.api.reportViewEvidence(i.opts.event,{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId});i.emit3dAnalytics("3d_confidence_view_reported",{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId??null}),_i(i.view3dPassportEl,"received",t.report.id)}catch{_i(i.view3dPassportEl,"failed")}}}function Bt(i,e=!0){let t=i.view3dPassportCleanup;if(i.view3dPassportCleanup=null,!t){i.view3dPassportEl?.remove(),i.view3dPassportEl=null,i.view3dEl?.classList.remove("has-passport");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||i.root?.focus({preventScroll:!0})}function Sr(i){let e=i.view3dEl;if(!e||i.view3dCompareSeatIds.length<2)return;Ue(i,!1);let t=i.view3dCompareSeatIds.map(p=>i.view3dComparisonSnapshot(p)).filter(p=>!!p);if(t.length<2){i.clearView3dComparison();return}let n=p=>E(p),o=t.some(p=>!!p.price),s=document.createElement("div");s.className="sl-view3d-compare-shell";let r=t.map((p,f)=>`<article><span>Seat ${f===0?"A":"B"}</span><strong>${n(p.label)}</strong><small>Section ${n(p.section)} \xB7 Row ${n(p.row)}</small><dl>`+(o?`<div><dt>Current price</dt><dd>${n(p.price)}</dd></div>`:"")+`<div><dt>Ticket type</dt><dd>${n(p.category)}</dd></div><div><dt>Availability</dt><dd>${n(p.availability)}</dd></div><div><dt>View source</dt><dd>${n(p.viewSource)}</dd></div><div><dt>View restriction</dt><dd>${n(p.limited)}</dd></div><div><dt>Seat confidence</dt><dd>${n(p.confidence.headline)}</dd></div><div><dt>Reality check</dt><dd>${n(p.confidence.reality)}</dd></div><div><dt>Accessibility</dt><dd>${n(p.accessibility)}</dd></div></dl><div class="sl-view3d-compare-actions"><button type="button" data-passport-seat="${n(p.seat.id)}">Passport</button><button type="button" data-view-seat="${n(p.seat.id)}">View seat</button><button type="button" class="select" data-select-seat="${n(p.seat.id)}"${p.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">${o?"Current price and availability":"Availability"} comes from this picker. Modeled views are chart-derived unless organizer media is labeled.</p><div class="sl-view3d-compare-grid">${r}</div></section>`;let a=document.activeElement instanceof HTMLElement?document.activeElement:null,l=[...e.children].filter(p=>p instanceof HTMLElement),c=l.map(p=>({element:p,inert:p.inert,ariaHidden:p.getAttribute("aria-hidden")}));for(let p of l)p.inert=!0,p.setAttribute("aria-hidden","true");e.appendChild(s),e.classList.add("has-comparison"),i.view3dCompareEl=s;let h=s.querySelector(".sl-view3d-compare"),d=()=>[...h.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],u=p=>{if(p.key==="Escape"){p.preventDefault(),Ue(i);return}if(p.key!=="Tab")return;let f=d();if(!f.length)return;let b=f[0],k=f[f.length-1];p.shiftKey&&document.activeElement===b?(p.preventDefault(),k.focus()):!p.shiftKey&&document.activeElement===k&&(p.preventDefault(),b.focus())};window.addEventListener("keydown",u),i.view3dCompareCleanup=()=>{window.removeEventListener("keydown",u);for(let p of c)p.element.inert=p.inert,p.ariaHidden===null?p.element.removeAttribute("aria-hidden"):p.element.setAttribute("aria-hidden",p.ariaHidden);s.remove(),e.classList.remove("has-comparison"),i.view3dCompareEl===s&&(i.view3dCompareEl=null),a?.isConnected?a.focus():i.view3dCompareChip.mainButton()?.focus()},s.querySelector("[data-close]")?.addEventListener("click",()=>Ue(i)),s.querySelectorAll("[data-passport-seat]").forEach(p=>p.addEventListener("click",()=>{let f=p.dataset.passportSeat,b=f?i.allSeats().find(k=>k.id===f):void 0;b&&Mn(i,b,p)})),s.querySelectorAll("[data-view-seat]").forEach(p=>p.addEventListener("click",()=>{let f=p.dataset.viewSeat;Ue(i,!1),f&&i.view3dHandle?.flyToSeat(f)})),s.querySelectorAll("[data-select-seat]").forEach(p=>p.addEventListener("click",()=>{let f=p.dataset.selectSeat;f&&$d(i,f)})),requestAnimationFrame(()=>d()[0]?.focus()),i.emit3dAnalytics("3d_comparison_opened",{seatIds:i.view3dCompareSeatIds.slice()})}function Ue(i,e=!0){let t=i.view3dCompareCleanup;if(i.view3dCompareCleanup=null,!t){i.view3dCompareEl?.remove(),i.view3dCompareEl=null,i.view3dEl?.classList.remove("has-comparison");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||i.root?.focus({preventScroll:!0})}function $d(i,e){if(i.salesClosed){i.toast(i.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let t=i.allSeats().find(o=>o.id===e);if(!t)return;if(Ue(i,!1),!i.controller.select([e]).length){i.syncSelectionTo3d(),i.toast(i.tf("picker.seatNoLongerAvailable","That seat is no longer available."),"warning");return}i.syncSelectionTo3d(),i.showConfirm(t),i.emit3dAnalytics("3d_comparison_selected",{seatId:e})}import{seatViewDisclosure as Yd}from"@seatlayer/core/view3d/crossfade/panorama";import{t as kr}from"@seatlayer/core";var jd=900,Gd=450;function Ud(i){switch(i){case"seat":return g("picker.stopYourSeat","Your seat");case"row":return g("picker.stopYourRow","Your row");case"section":return g("picker.stopYourSection","Your section");default:return g("picker.stopWholeVenue","Whole venue")}}function Tr(i,e){let t=document.createElement("button");t.type="button",t.className="sl-view3d-recentre sl-mo-rotate-in",t.textContent="\u25CE";let n=g("picker.recentreOnStage","Recentre on the stage");t.setAttribute("aria-label",n),t.title=n,t.addEventListener("click",()=>{e.handle()?.recentreSeatView()});let o=document.createElement("div");o.className="sl-view3d-stop",o.setAttribute("role","status"),o.setAttribute("aria-live","polite"),i.append(t,o);let s=null,r=null;return{onStopChange(a){if(s&&(clearTimeout(s),s=null),r&&(clearTimeout(r),r=null),!a){o.classList.remove("is-shown"),o.textContent="",r=setTimeout(()=>{r=null,i.classList.remove("is-seat-view")},Gd);return}i.classList.add("is-seat-view"),o.textContent=Ud(a),o.classList.add("is-shown"),s=setTimeout(()=>{s=null,o.classList.remove("is-shown")},jd)},dispose(){s&&(clearTimeout(s),s=null),r&&(clearTimeout(r),r=null),t.remove(),o.remove(),i.classList.remove("is-seat-view")}}}var qd=44,Kd=92;function Er(i,e,t,n={}){let o=i?.sectionLabel,s=U(i),r=Wd(i,e),a=[o,s?kr("picker.rowLabel",{label:s}):null,r?kr("picker.seatLabel",{label:r}):null].filter(Boolean).join(" \xB7 "),l=n.maxChars??(n.narrow?qd:Kd);for(let c of[t,n.shortTail??t,null]){let h=[a,c].filter(Boolean).join(" \xB7 ");if(h.length<=l||c==null)return h}return a}function Wd(i,e){if(i?.seatNumber)return i.seatNumber;let t=i?.displayLabel??e,n=o=>{!o||!t.startsWith(o)||t.length<=o.length||(t=t.slice(o.length).replace(/^[\s·\-\/_]+/,""))};return n(i?.sectionLabel),n(U(i)),t}import{seatConfidenceDisclosure as Xd}from"@seatlayer/core/core/seatConfidence";function Cr(i){return i.buyerView}function Ar(i,e,t){if(e==="map"){i.exit3d();return}let n=t?.flyToSeatId;if(i.buyerView==="venue3d"){n?(i.opts.onBuyerViewChange?.({view:"venue3d",seatId:n}),i.view3dHandle?.flyToSeat(n)):t?.resetView&&i.view3dHandle?.focusOverview();return}i.enter3d(n)}function Pr(i,e){switch(i.controller.getStatus(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:break}return i.priceBandKeys!=null&&!i.priceBandKeys.has(e.categoryKey)||i.controller.accessibilityFilterDims?.(e)||i.limitedViewFilter&&(e.commercial?.restrictedView||e.commercial?.obstructedView)?"dimmed":"available"}function Lr(i){if(!i.view3dHandle)return;let e=i.allSeats().map(t=>({seatId:t.id,state:i.seatState3dFor(t)}));i.view3dHandle.setAvailability(e)}function Mr(i){i.view3dHandle&&i.view3dHandle.setSelection(i.controller.getSelection().map(e=>e.id))}async function Hr(i,e){let t=i.allSeats().find(n=>n.id===e);if(!t)return null;if(t.viewUrl)try{let n=t.viewMeta?.previewUrl,o=!!n&&n!==t.viewUrl,s=o?await i.buyerAssetUrls.resolve(n):null,r=o?t.viewUrl:await i.buyerAssetUrls.resolve(t.viewUrl);return!r||o&&!s?null:{url:r,...s?{previewUrl:s}:{},...o?{resolveUrl:a=>i.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(n){return i.opts.onError?.(n),null}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:i.tf("picker.chartDerivedModel","Chart-derived model")}}function Rr(i,e){if(i.salesClosed){i.toast(i.tf("picker.salesClosedToast","Sales are closed for this event."),"warning"),i.syncSelectionTo3d();return}let t=i.allSeats().find(a=>a.id===e);if(!t)return;let n=i.controller.tableSelection(e);if(i.committedSelection().some(a=>n?a.label===n.label:a.id===e)){i.controller.deselect([e]),i.dismissConfirm(),i.syncSelectionTo3d();return}let s=i.controller.getStatus(t.id);if(s==="held"||s==="booked"||s==="not_for_sale"){i.syncSelectionTo3d();return}if(!i.controller.select([e]).length){i.syncSelectionTo3d(),i.dismissConfirm();return}if(i.opts.onBuyerViewChange?.({view:"venue3d",seatId:e}),i.flashPickedSeat(e),n){i.showTableDialog(n,!1),i.syncSelectionTo3d();return}i.opts.confirmSelection!==!1?i.showConfirm(t):i.syncTray(),i.syncSelectionTo3d()}function Ir(i,e){let t=i.allSeats().find(n=>n.id===e);return Er(i.controller.seatDetails(e),t?.displayLabel??t?.label??e,i.tf("picker.viewFromYourSeat","view from your seat"),{narrow:i.root?.dataset.layout==="narrow",shortTail:i.tf("picker.fromYourSeat","from your seat")})}function Or(i,e){if(i.buyerView!=="venue3d")return;let t=i.view3dCompareSeatIds;t.includes(e.id)||(i.view3dCompareSeatIds=t.length===0?[e.id]:[t[0],e.id]),i.confirmSeat?.id===e.id&&(i.controller.deselect([e.id]),i.dismissConfirm(),i.syncSelectionTo3d(),i.syncTray()),i.view3dCompareChip.sync(),i.emit3dAnalytics("3d_comparison_saved",{seatId:e.id,count:i.view3dCompareSeatIds.length}),i.view3dCompareSeatIds.length>1?i.openView3dComparison():i.toast(i.tf("picker.chooseAnotherToCompare","Seat saved. Choose another seat to compare."),"success")}function _r(i){i.closeView3dComparison(!1),i.view3dCompareSeatIds=[],i.view3dCompareChip.remove(),i.emit3dAnalytics("3d_comparison_cleared")}function Dr(i,e){let t=i.allSeats().find(f=>f.id===e);if(!t)return null;let n=i.controller.seatDetails(t.id),o=i.controller.doc?.categories.find(f=>f.key===t.categoryKey),s=n?.price??(o?.tiers?.length?o.tiers[0].price:o?.price),r=s!=null?i.paidPrice(t.categoryKey,n?.tierId??o?.tiers?.[0]?.id??null,s,t.label):void 0,a=i.controller.getStatus(t.id),l=a==="held"?i.tf("picker.temporarilyHeld","Temporarily held"):a==="booked"?i.tf("picker.sold","Sold"):a==="not_for_sale"?i.tf("picker.notForSale","Not for sale"):i.tf("picker.available","Available"),c=t.viewUrl?Yd({url:t.viewUrl,...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}):i.tf("picker.chartDerivedSeatEye","Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed"),h=ii(t.commercial).join(" \xB7 ")||i.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),d=mo({...t.accessibility?.length?{accessibility:t.accessibility}:{},...n?.wheelchairSpaceType?{wheelchairSpaceType:n.wheelchairSpaceType}:{}}),u=d.length?`${d.join(" \xB7 ")} \xB7 metadata, not access certification`:i.tf("picker.noAccessibilityMetadata","No accessibility metadata supplied"),p=Xd(t.confidenceEvidence);return{seat:t,label:n?.displayLabel??t.displayLabel??t.label,section:n?.sectionLabel??t.sectionId??"\u2014",row:U(n)??n?.rowLabel??"\u2014",category:n?.categoryLabel??o?.label??t.categoryKey,price:i.suppressPricing||r==null?"":i.money(r),availability:l,selectable:a==null||a==="free",viewSource:c,limited:h,accessibility:u,confidence:p}}async function Nr(i,e){if(i.view3dEl||!i.canOffer3d()||!i.els.map)return;let t=i.controller.doc;if(!t)return;i.buyerView="venue3d",i.view3dTargetSeatId=null,i.opts.onBuyerViewChange?.({view:"venue3d",...e?{seatId:e}:{}}),i.root?.setAttribute("data-view3d","on"),i.dismissConfirm(),i.syncProjection(),i.syncTray();let n=document.createElement("div");n.className="sl-view3d sl-mo-zoom",n.setAttribute("role","group"),n.setAttribute("aria-label",i.tf("picker.interactive3dVenueView","Interactive 3D venue view"));let o=document.createElement("button");o.type="button",o.className="sl-view3d-back",o.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${i.tf("picker.backToMap","Back to map")}</span>`;let s=o.querySelector("span"),r=c=>{i.view3dTargetSeatId=c;let h=!!c;n.classList.toggle("is-seat-focused",h),i.root&&(i.root.dataset.view3dSeat=h?"on":"off");let d=h?i.tf("picker.backToVenue","Back to venue"):i.tf("picker.backToMap","Back to map");s&&(s.textContent=d),o.setAttribute("aria-label",d)};if(o.addEventListener("click",()=>{if(i.view3dTargetSeatId&&i.view3dHandle){i.view3dHandle.focusOverview();return}i.exit3d()}),i.regions["top-left"]?.prepend(o),i.view3dBack=o,i.publish3dTopInset(),dr(i.root)){let c=document.createElement("button");c.type="button",c.className="sl-view3d-fs",c.textContent="\u26F6";let h=i.tf("picker.fullScreen","Full screen");c.setAttribute("aria-label",h),c.title=h,c.setAttribute("aria-pressed",String(!!document.fullscreenElement||i.fsFallback||i.framedFs)),c.addEventListener("click",()=>i.toggleFullscreen()),n.appendChild(c)}let a=document.createElement("div");a.className="sl-view3d-loading",a.setAttribute("role","status"),a.setAttribute("aria-live","polite"),a.textContent=i.tf("picker.loading3d","Building the 3D venue\u2026"),n.appendChild(a),i.els.map.appendChild(n),i.view3dEl=n,i.view3dCompareChip.sync(),requestAnimationFrame(()=>{n.style.opacity="1"});let l=++i.view3dGen;try{let c=i.allSeats(),[h,d]=await Promise.all([At(),i.controller.loadEventConfiguration()]),u=d?await hi(d,v=>i.buyerAssetUrls.resolve(v)):null,p=t.theme?.venue3d?.shellAssetUrl,f=await ui(p,v=>i.buyerAssetUrls.resolve(v));if(l!==i.view3dGen||i.buyerView!=="venue3d"||i.view3dEl!==n)return;let b={doc:t,seats:c,...u?{eventConfigurationId:u.id,eventConfiguration:u}:{},...f?{registeredShellGlb:f}:{}};a.textContent=i.tf("picker.building3d","Building venue geometry\u2026");let k=await h.prepareVenue3D(b);if(l!==i.view3dGen||i.buyerView!=="venue3d"||i.view3dEl!==n)return;let S=h.mountVenue3D(n,{...b,prepared:k},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:Be(),navLabels:Xt(),seatViewActionLabel:v=>i.allSeats().find(A=>A.id===v)?.viewUrl?i.tf("picker.openAuthored360","Open venue 360\xB0"):i.tf("picker.lookAroundLive3d","Look around in live 3D"),seatViewCaption:v=>i.seatViewCaption(v),onSeatViewStopChange:v=>i.view3dSeatViewChrome?.onStopChange(v),onSeatPick:v=>i.onView3dSeatPick(v),onSeatInspect:v=>i.onView3dSeatPick(v),onSectionFocusChange:v=>{let A=n.querySelector('select[data-locator="section"]'),y=v??"";!A||A.value===y||(A.value=y,A.dispatchEvent(new Event("change")))},onViewTargetChange:v=>{n.querySelector(".sl-view3d-nav")?.classList.toggle("is-seat-focused",!!v),r(v),i.opts.onBuyerViewChange?.({view:"venue3d",...v?{seatId:v}:{}})},...i.seatViewEnabled()?{getSeatView:v=>new Promise((A,y)=>{let H=()=>{i.seatViewFor3d(v).then(O=>{O?A(O):y(new Error("seat_view_unavailable"))})},C=globalThis.requestIdleCallback;typeof C=="function"?C(H,{timeout:1500}):setTimeout(H,50)})}:{},onAnalytics:(v,A)=>i.emit3dAnalytics(v,A)});i.view3dHandle=S,i.view3dSeatViewChrome=Tr(n,{handle:()=>i.view3dHandle}),requestAnimationFrame(()=>a.remove()),i.pushAvailabilityTo3d(),i.syncSelectionTo3d(),i.view3dNav=cr(i.regions["bottom-left"]??n,S),e&&S.flyToSeat(e)}catch(c){if(l!==i.view3dGen||i.buyerView!=="venue3d"||i.view3dEl!==n)return;i.opts.onError?.(c),i.toast(i.tf("picker.unavailable3d","3D could not start. The seat map is still available."),"warning"),i.exit3d()}}function Br(i){let e=i.regions["top-left"];if(!i.root||!e)return;let t=()=>{!i.root||i.root.dataset.view3d!=="on"||i.root.style.setProperty("--sl-3d-top-inset",`${Math.max(44,Math.ceil(e.offsetHeight))}px`)};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}function Vr(i){if(i.buyerView!=="venue3d"&&!i.view3dEl)return;i.view3dGen++,i.buyerView="map",i.view3dTargetSeatId=null,i.opts.onBuyerViewChange?.({view:"map"}),i.root?.removeAttribute("data-view3d"),i.closeSeatConfidencePassport(!1),i.closeView3dComparison(!1),i.view3dCompareChip.remove(),i.view3dSeatViewChrome?.dispose(),i.view3dSeatViewChrome=null,i.view3dBack?.remove(),i.view3dBack=null,i.view3dNav?.remove(),i.view3dNav=null,i.root?.removeAttribute("data-view3d-seat"),i.root?.style.removeProperty("--sl-3d-top-inset");try{i.view3dHandle?.dispose()}catch{}i.view3dHandle=null;let e=i.view3dEl;i.view3dEl=null,e&&(e.style.opacity="0",setTimeout(()=>e.remove(),320)),i.syncProjection(),i.syncTray();let t=i.view3dReturnSeat;i.view3dReturnSeat=null,t&&i.committedSelection().some(n=>n.id===t.id)&&i.opts.confirmSelection!==!1&&i.showConfirm(t)}import{t as tp}from"@seatlayer/core";import{t as Di}from"@seatlayer/core";function Fr(i){return Array.isArray(i)?i.reduce((e,t)=>t.type==="minimumSelectedPlaces"?Math.max(e,t.minimum):e,0):0}function Ni(i,e,t=!1){let n=i.violations[0];return n==="numberOfPlacesToSelect"?i.remaining>0?Di("picker.selectExactMore",{count:i.remaining}):Di("picker.selectExactCount",{count:i.required}):n==="minimumSelectedPlaces"?Di("picker.selectMinimumMore",{count:i.remaining}):t?e("picker.adjustSeatSelection","Adjust seat selection"):n==="consecutiveSeats"?e("picker.selectSeatsTogether","Choose seats together in the same row and ticket category."):Di("picker.orphanHint")}import{t as zr,tCount as Qd}from"@seatlayer/core";function $r(i){let e=Math.max(0,i),t=Math.floor(e/6e4),n=String(Math.floor(e%6e4/1e3)).padStart(2,"0");return`${t}:${n}`}function jr(i){let e=i.performanceLabel?`<div class="sl-chip-when">${I(i.performanceLabel)}</div>`:"",t=i.performanceDates?.labels.length?`<div class="sl-chip-dates"><span class="sl-chip-dates-summary">${I(i.performanceDates.summary)}</span><span class="sl-chip-date-list">${i.performanceDates.labels.map(n=>`<span class="sl-chip-date">${I(n)}</span>`).join("")}</span></div>`:"";return e+Jd(i)+t}function Jd(i){let{d:e,area:t,label:n,objectType:o,quantity:s=1,identity:r}=i,a=A=>String(A??"\u2014").replace(/[&<>"]/g,y=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[y]),l=o==="ga"?"ga":e?.objectType??o,c=r?.displayType?.trim()||e?.displayType?.trim()||t?.displayType?.trim()||(l==="table"?g("picker.table","Table"):l==="booth"?g("picker.booth","Booth"):l==="ga"?g("picker.generalAdmission","General admission"):g("picker.row","Row")),h=r?.rowLabel??r?.displayLabel??e?.rowLabel??e?.displayLabel??t?.label??n,d=i.categoryLabel?.trim()??"",u="",p=[];l==="table"&&r?.bookingMode?(u=`${c} ${h}`,p.push([g("picker.guests","Guests"),String(s)])):l==="ga"?(u=String(t?.displayLabel??h),s>1&&p.push([g("picker.tickets","Tickets"),String(s)])):l==="booth"?(u=e?.sectionLabel??`${c} ${h}`,e?.sectionLabel&&p.push([c,String(h)])):!e?.sectionLabel&&!e?.rowLabel&&!e?.seatNumber?u=String(h):(u=e.sectionLabel??"",e.rowLabel&&p.push([c,String(U(e)??e.rowLabel)]),e.seatNumber&&p.push([g("picker.seat","Seat"),String(e.seatNumber)]));let f=!u&&!!d,b=u||d||String(h),k=!!d&&!f&&d!==b,S=p.map(([A,y])=>`<span class="sl-chip-seg" data-fit-seg><span class="w">${a(A)}</span> <b>${a(y)}</b></span>`);k&&S.push(`<span class="sl-chip-seg" data-fit-seg data-fit-type><span class="w">${a(d)}</span></span>`);let v=[b,...p.map(([A,y])=>`${A} ${y}`),k?d:""].filter(Boolean).join(" \xB7 ");return`<div class="sl-chip-id"><span class="sl-sr">${a(v)}</span><span class="sl-chip-name" aria-hidden="true">${a(b)}</span>`+(S.length?`<span class="sl-chip-pos" aria-hidden="true">${S.join("<i>\xB7</i>")}</span>`:"")+"</div>"}function ep(i){let e=I;return` data-key="${e(i.key)}"`+(i.heldLabels.length?` data-held="${e(encodeURIComponent(i.heldLabels.join(`
2876
+ `)))}"`:"")+(i.seatIds.length?` data-seat="${e(i.seatIds.join(" "))}"`:"")+(i.locateId?` data-locate="${e(i.locateId)}"`:"")}function Gr(i){let e=I;return`<div class="sl-chip${i.held?" sl-held":""}${i.fresh?" sl-enter":""}"`+ep(i)+">"+(i.held?i.stateHtml:`<span class="sl-chip-dot" style="background:${E(i.categoryColor)}" aria-hidden="true"></span>`)+`<div class="sl-chip-main">${i.identityHtml}`+(i.extrasHtml?`<div class="sl-chip-sub">${i.extrasHtml}</div>`:"")+`${i.noteHtml}</div>`+(i.amountText?`<span class="amt">${e(i.amountText)}</span>`:"")+i.railHtml+"</div>"}function Hn(i,e){let t=I(i),n=e?I(e):"";return'<div class="sl-chip-rail">'+(e?`<button type="button" class="view" data-view-label="${n}" aria-label="${I(zr("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>`:"")+`<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></div>`}function Ur(i){return i.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>${zr("picker.willFindSeatsTogether",{count:i.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="sl-ba-title-t">${g("picker.findSeatsTogether","Find seats together")}</span>`+rt({id:"sl-info-best-seats",label:g("picker.aboutBestSeats","About finding seats together"),text:g("picker.closestGroupChosenInstantly","Closest available group, chosen instantly.")})+(i.offerPremium?`<button type="button" class="sl-ba-premium${i.premium?" on":""}" data-ba-premium aria-pressed="${i.premium?"true":"false"}"><span class="star" aria-hidden="true">\u2605</span>${g("picker.bestSeatsPremium","Best seats")}</button>`:"")+`</div><div class="sl-ba-qty"><button type="button" data-ba="-1" aria-label="${g("picker.fewerSeats","Fewer seats")}">\u2212</button><span>${i.quantity}</span><button type="button" data-ba="1" aria-label="${g("picker.moreSeats","More seats")}">+</button></div>`+(i.categories.length>1?`<select class="sl-ba-cat" aria-label="${I(g("picker.preferredTicketType","Preferred ticket type"))}" data-ba-cat><option value="">${I(g("picker.anyTicketType","Any ticket type"))}</option>`+i.categories.map(e=>`<option value="${I(e.key)}"${i.selectedCategory===e.key?" selected":""}>${I(e.label)}</option>`).join("")+"</select>":'<span class="sl-ba-cat" aria-hidden="true"></span>')+(i.zones.length?`<select class="sl-ba-zone" aria-label="${g("picker.preferredVenueZone","Preferred venue zone")}" data-ba-zone><option value="">${g("picker.anyVenueZone","Any venue zone")}</option>`+i.zones.map(e=>`<option value="${I(e.id)}"${i.selectedZone===e.id?" selected":""}>${I(e.label)}</option>`).join("")+"</select>":"")+`<button type="button" class="sl-ba-go${i.busy?" sl-busy":""}"${i.busy?" disabled":""}>`+(i.busy?`<span class="sl-ba-spin" aria-hidden="true"></span>${g("picker.findingBestSeats","Finding the best seats\u2026")}`:Qd("picker.findBestSeatsCount",i.quantity))+"</button>"+(i.reopened?`<button type="button" class="sl-ba-back" data-ba-close>${g("picker.keepMyPicks","Keep my picks")}</button>`:"")+"</div>"}function qr(i){if(i.salesClosed&&!i.hasPicks){let e=i.whenText?`<span class="when">${I(i.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""}function Kr(i){return i.hasGaAreas?i.seated?i.venue3d?g("picker.trayHintChoose3dOrStanding","Choose a seat in the 3D venue \u2014 or grab standing tickets below."):g("picker.trayHintTapOrStanding","Tap a seat on the map \u2014 or grab standing tickets below."):i.venue3d?g("picker.gaTrayHintChoose3dArea","Choose an area in the 3D venue to select tickets."):g("picker.gaTrayHintTapArea","Tap an area on the map to choose tickets."):i.groupMode==="per_performance"?g("picker.groupPerPerformanceTrayHint","Choose seats for this performance, then complete every date above."):i.groupMode?g("picker.groupTrayHint","Choose seats once \u2014 the same seats will be held for every performance."):i.venue3d?g("picker.trayHintChoose3dOrBest","Choose a seat in the 3D venue, or let us pick the best available for you."):g("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you.")}var Rn=6e4,Wr=5*6e4,ip=String(Math.round(Wr/6e4));function Yr(i){let e=document.createElement("div");e.className="sl-extend",e.dataset.dock="map",e.setAttribute("role","status"),e.innerHTML='<button type="button" class="sl-extend-btn" data-ref="extendBtn"></button><button type="button" class="sl-extend-x" data-ref="extendDismiss" aria-label=""><svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false"><path d="M3.5 3.5 12.5 12.5M12.5 3.5 3.5 12.5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></button>',(i.regions["bottom-center"]??i.els.map).appendChild(e),i.extendEl=e,i.els.extendBtn=e.querySelector('[data-ref="extendBtn"]'),i.els.extendDismiss=e.querySelector('[data-ref="extendDismiss"]'),i.els.extendBtn.textContent=Xr(i),i.els.extendDismiss.setAttribute("aria-label",i.tf("picker.close","Close")),i.els.extendBtn.addEventListener("click",()=>{i.handleExtend()}),i.els.extendDismiss.addEventListener("click",()=>{i.extendDismissed=!0,i.setExtendPrompt(!1,0)})}function Xr(i){return i.tf("picker.addMinutes","+{count} min").replace("{count}",ip)}function Zr(i){let e=i.hold?.items??[],t=new Set(e.map(o=>o.label));return i.committedSelection().filter(o=>!t.has(o.label)).reduce((o,s)=>o+(s.quantity??1),0)+He(i.gaQty,i.hold?.items??[])}function Qr(i){return(i.hold?.items??[]).reduce((e,t)=>e+(t.quantity??1),0)}function Jr(i){let e=new Set((i.hold?.items??[]).map(n=>n.label)),t=i.committedSelection().filter(n=>!e.has(n.label)).reduce((n,o)=>n+(o.quantity??1),0);return i.heldTicketCount()+t+He(i.gaQty,i.hold?.items??[])}function ea(i){let e=new Set((i.hold?.items??[]).map(o=>o.label)),t=i.committedSelection().filter(o=>e.has(o.label)).reduce((o,s)=>o+(s.quantity??1),0),n=Math.max(0,i.maxTickets-i.heldTicketCount()-He(i.gaQty,i.hold?.items??[]));i.controller.setMaxSelection(t+n)}function ta(i,e=i.lastTrayCount,t=i.pendingSelectionCount()){let n=i.els.cta;if(!n)return;if(delete n.dataset.act,i.salesClosed){n.disabled=!0,n.textContent=i.tf("picker.salesClosedCta","Sales closed");return}if(i.confirmSeat||i.tableDialog&&!i.tableDialogHeld){n.disabled=!0,n.textContent=i.tableDialog?i.tf("picker.confirmYourTable","Confirm your table"):i.tf("picker.confirmOrCancelSeat","Confirm or cancel this seat");return}if(i.ctaPhase==="holding"){n.disabled=!0,n.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${i.tf("picker.securingSeats","Securing your seats\u2026")}`;return}if(i.ctaPhase==="checkout"){n.disabled=!0,n.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${i.tf("picker.openingCheckout","Opening secure checkout\u2026")}`;return}let o=!i.hold&&i.performanceGroup?.selectionMode==="per_performance"?i.performanceGroup.submissionState?.():null;if(o&&!o.ready){n.disabled=!0,n.textContent=i.tf("picker.completeAllPerformances","Complete all performances ({complete}/{total})").replace("{complete}",String(o.complete)).replace("{total}",String(o.total));return}let s=i.controller.getSelectionValidity(e);if(s&&!s.isValid){n.disabled=!0,n.textContent=Ni(s,(r,a)=>i.tf(r,a),!0);return}if(!e&&i.root?.dataset.layout==="narrow"&&!i.performanceGroup&&!i.hold){n.disabled=!1,n.dataset.act="find",n.textContent=i.tf("picker.findBestSeats","Find best seats");return}n.disabled=e===0,n.textContent=i.hold?t?tp("picker.secureMoreAndCheckout",{count:t}):i.tf("picker.continueToCheckout","Continue to checkout"):e?i.performanceGroup?i.tf("picker.holdSeatsForAllPerformances","Hold seats for all {count} performances").replace("{count}",String(i.performanceGroup.performanceCount)):i.tf("picker.holdSeatsAndCheckout","Hold seats & checkout"):i.tf("picker.selectSeats","Select seats")}function ia(i,e){i.ctaPhase=e,i.syncCta()}async function na(i,e,t){i.setCtaPhase("checkout");try{await i.checkoutHandoff(e,t)}finally{i.ctaPhase==="checkout"&&!i.bookedShown&&i.setCtaPhase("idle")}}function oa(i){return`@seatlayer/hold/v1/${encodeURIComponent(i.apiBase)}/${encodeURIComponent(i.opts.event)}`}function sa(i){if(i.opts.initialHoldId)return i.opts.initialHoldId;if(i.opts.restoreHold===!1||typeof window>"u")return null;try{return window.sessionStorage.getItem(i.holdStorageKey())}catch{return null}}function ra(i,e){if(!(i.opts.restoreHold===!1||typeof window>"u"))try{window.sessionStorage.setItem(i.holdStorageKey(),e.holdId)}catch{}}function aa(i){if(!(typeof window>"u"))try{window.sessionStorage.removeItem(i.holdStorageKey())}catch{}}async function la(i,e){try{let t=await i.controller.resumeHold(e);if(!t||i.destroyed)return null;let n={holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items};return i.hold=n,i.handedOff=!0,i.bookedShown=!1,i.ctaPhase="idle",i.startHoldTimer(n.expiresAt),i.rememberHold(n),i.syncTray(),i.emitHoldChange(),i.opts.onHoldRestored?.(n,n.seats??[],i.buildHandoff(n)),n}catch(t){let n=t?.status;return n===404||n===409?i.forgetHold():i.opts.onError?.(t),null}}async function ca(i){let e=i.rememberedHoldId();e&&await i.resumeHoldFromServer(e)}function da(i,e){i.stopHoldTimer(),i.holdExpiresAt=e,i.extendDismissed=!1,i.extendUsed=!1,i.hold&&i.rememberHold(i.hold);let t=i.els.hold;t.innerHTML=`<span class="sl-hold-dot" aria-hidden="true"></span><span>${i.tf("picker.held","Held")}</span><span class="sl-hold-time" data-ref="holdTime"></span>`;let n=t.querySelector('[data-ref="holdTime"]'),o=()=>{let s=Math.max(0,i.holdExpiresAt-Date.now());n&&(n.textContent=$r(s)),t.classList.add("on"),t.classList.toggle("is-expiring",s>0&&s<=Rn),i.setExtendPrompt(s>0&&s<=Rn,s),(s<=0||!i.controller.currentHold())&&i.stopHoldTimer()};i.holdTimer=setInterval(o,500),o()}function pa(i){i.holdTimer&&clearInterval(i.holdTimer),i.holdTimer=null,i.els.hold?.classList.remove("on","is-expiring"),i.setExtendPrompt(!1,0)}function ha(i,e,t){if(!i.extendEl)return;let n=e&&t>0&&i.root?.dataset.layout!=="narrow"&&!i.extendDismissed&&!i.extendUsed&&!!i.controller.currentHold()&&!i.bookedShown;i.extendEl.classList.toggle("on",n)}function ua(i){if(!i.holdTimer)return;let e=Math.max(0,i.holdExpiresAt-Date.now());i.setExtendPrompt(e>0&&e<=Rn,e)}async function ma(i){let e=i.els.extendBtn,t=i.controller.currentHold();if(!(!t||!i.api.extend||i.extendUsed)){e.disabled=!0,e.textContent=i.tf("picker.addingEllipsis","Adding\u2026");try{let n=await i.api.extend(i.controller.key,t.holdId,Wr);if(i.controller.currentHold()?.holdId!==t.holdId)return;i.controller.setHold({holdId:t.holdId,labels:t.labels,expiresAt:n.expiresAt,items:t.items});let o=i.controller.currentHold();if(!o)return;i.hold={holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items},i.holdExpiresAt=o.expiresAt,i.extendUsed=!0,i.extendEl?.classList.remove("on"),i.rememberHold(i.hold),i.emitHoldChange(),i.toast(i.tf("picker.moreTimeAdded","More time added \u2014 your seats are still held."),"success")}catch(n){if(n?.reason==="extend_limit"){i.extendUsed=!0,i.setExtendPrompt(!1,0);return}i.opts.onError?.(n),i.toast(i.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}finally{e.disabled=!1,e.textContent=Xr(i)}}}import{t as va}from"@seatlayer/core";function fa(i){return i?.previousPrice!=null&&i.previousPrice>i.price?i.previousPrice:null}function ga(i){return op(i)+(i.moreLabel?`<button type="button" class="sl-price-more" aria-expanded="${!i.collapsed}">${i.esc(i.moreLabel)}</button>`:"")+sp(i.status)}function op(i){let{esc:e,money:t}=i;return i.categories.map(n=>{let o=i.priceOf(n),s=i.rangeOf(n),r=i.offerOf(n.key),a=fa(r),l=i.activeKey===n.key;return`<div class="sl-price-row${i.bandKeys!=null&&!i.bandKeys.has(n.key)?" sl-dim":""}${l?" sl-active":""}" data-cat="${e(n.key)}" role="button" tabindex="0" aria-pressed="${l}" title="${e(i.titleFor(n,l))}"><span class="sl-dot" style="--sl-cat-dot:${e(i.colorOf(n))}"></span><span class="sl-price-label">${e(n.label)}`+(r?.offerName?`<small class="sl-price-offer">${e(r.offerName)}</small>`:"")+"</span>"+(a!=null?`<span class="sl-price-was">${e(t(a))}</span>`:"")+(s!=null?`<span class="sl-price-amt">${s.min===s.max?e(t(s.min)):`${e(t(s.min))}\u2013${e(t(s.max))}`}</span>`:o!=null?`<span class="sl-price-amt">${e(t(o))}</span>`:"")+"</div>"}).join("")}function sp(i){let e=t=>t.replace(/[&<>"']/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[n]);return`<div class="sl-status-key" aria-label="${e(i.legend)}"><span class="sl-status-item"><i class="sl-status-icon unavailable" aria-hidden="true"></i>${e(i.unavailable)}</span></div>`}function In(i){let e=Math.abs(i.scrollLeft),t=e>2,n=e+i.clientWidth<i.scrollWidth-2;return i.dataset.fadeStart=String(t),i.dataset.fadeEnd=String(n),{start:t,end:n}}function ba(i){let{esc:e,money:t}=i;return`<button type="button" class="sl-rc sl-rc-all" data-rail-all aria-pressed="${i.allActive}" title="${e(i.allWord)}"><span class="sl-rc-t">${e(i.allWord)}</span></button>`+i.categories.map(o=>{let s=i.rangeOf(o),r=i.priceOf(o),a=s?s.min===s.max?t(s.min):`${t(s.min)}+`:r!=null?t(r):null,l=Object.prototype.hasOwnProperty.call(i.left,o.key)&&i.left[o.key]<=0,c=fa(i.offerOf(o.key)),h=a?`${o.label} \u2014 ${a}${l?` (${i.soldOutWord})`:""}`:o.label;return`<button type="button" class="sl-rc" data-cat="${e(o.key)}" aria-pressed="${i.activeKey===o.key}" aria-label="${e(h)}" title="${e(h)}"${l?" disabled":""}><i class="sl-rc-dot" style="--sl-cat-dot:${e(i.colorOf(o))}"></i>`+(c!=null?`<span class="sl-rc-was">${e(t(c))}</span>`:"")+`<span class="sl-rc-t">${e(a??o.label)}</span></button>`}).join("")}function ya(i,e){let t=i.map(a=>({key:a.key,range:e.rangeOf(a)})).filter(a=>a.range!=null);if(!t.length)return[];let n=[...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(n.length<=5)return n.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 o=[...t].sort((a,l)=>a.range.min-l.range.min||a.range.max-l.range.max),s=Math.ceil(o.length/4),r=[];for(let a=0;a<o.length;a+=s){let l=o.slice(a,a+s),c=Math.min(...l.map(d=>d.range.min)),h=Math.max(...l.map(d=>d.range.max));r.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 r}function wa(i){if(i.suppressPricing||!i.els.prices||!i.els.pricesSec)return;let e=ya(i.controller.doc?.categories??[],i.legendDeps());if(e.length<2)return;let t=document.createElement("select");t.className="sl-price-select",t.setAttribute("aria-label",i.tf("picker.filterAndFocusByPrice","Filter and focus seats by price"));let n=document.createElement("option");n.value="all",n.textContent=i.tf("picker.allPrices","All prices"),t.appendChild(n);for(let o of e){let s=document.createElement("option");s.value=o.id,s.textContent=o.label,t.appendChild(s)}i.els.pricesSec.appendChild(t),i.priceSelect=t,t.addEventListener("change",()=>{i.applyPriceBand(e.find(o=>o.id===t.value)?.keys??null)})}function xa(i,e){if(i.focusedCatKey=null,i.priceBandKeys=e?new Set(e):null,i.priceSelect){let t=e?i.priceSelect.value:"all";i.priceSelect.value!==t&&(i.priceSelect.value=t)}i.controller.setCategoryFilter(e),i.controller.focusCategoryFilter(e),i.pushAvailabilityTo3d(),i.syncFloors(),i.syncRung(),i.minimap?.refreshMinimap(),i.syncPrices(),i.lastSection&&i.showSectionCard(i.lastSection)}function Sa(i){return{colorOf:e=>i.controller.getRenderer()?.categoryDisplayColor?.(e.key)??e.color,rangeOf:e=>i.catPriceRange(e),priceOf:e=>i.catPrice(e),offerOf:e=>i.offerPrice(e),money:e=>i.money(e),esc:I}}function ka(i,e,t,n=i.legendDeps()){let o=i.els.railScroll,s=e.length>1;if(i.els.rail?.classList.toggle("has",s),!o)return;o.innerHTML=s?ba({...n,categories:e,left:t,activeKey:i.focusedCatKey,soldOutWord:i.tf("picker.soldOut","Sold out"),allWord:i.tf("picker.allPrices","All prices"),allActive:!i.focusedCatKey&&!i.priceBandKeys}):"";let r=e.map(a=>a.key).join("|");i.lastRailSignature!==r&&(i.lastRailSignature=r,o.scrollLeft=0),o.querySelectorAll(".sl-rc").forEach(a=>{a.addEventListener("click",()=>{if(a.hasAttribute("data-rail-all")){i.applyPriceBand(null);return}i.focusCategory(a.dataset.cat??"")})}),i.railEdgesBound||(i.railEdgesBound=!0,o.addEventListener("scroll",()=>In(o),{passive:!0})),requestAnimationFrame(()=>In(o))}function Ta(i){let e=i.controller.doc;if(!e||!i.els.prices)return;let t=i.controller.categoryAvailability(),n=e.categories.filter(d=>!d.notForSale);i.syncSoldout(n,t);let o=i.legendDeps(),s=i.suppressPricing,r=s?{...o,priceOf:()=>{},rangeOf:()=>{},offerOf:()=>null}:o;s&&(i.els.pricesSec?.querySelector("span")?.replaceChildren(i.tf("picker.seatCategories","Seat categories")),i.els.pricesInfo?.remove()),i.syncPriceRail(n,t,r);let a=5,l=n.length-a,c=l>1&&!i.pricesExpanded,h=c?n.slice(0,a):n;i.els.prices.classList.toggle("sl-expanded",l>1&&i.pricesExpanded),i.els.prices.innerHTML=ga({...r,categories:h,left:t,collapsed:c,activeKey:i.focusedCatKey,bandKeys:i.priceBandKeys,titleFor:(d,u)=>u?i.tf("picker.showAllSeats","Show all seats"):va("picker.showLabelSeatsOnMap",{label:d.label}),moreLabel:l>1?c?s?i.tf("picker.showAllCategories","Show all categories"):va("picker.showAllTicketTypes",{count:n.length}):i.tf("picker.showFewer","Show fewer"):null,status:{legend:i.tf("picker.seatStatusLegend","Seat status legend"),unavailable:i.tf("picker.notAvailable","Not available")}}),i.els.prices.querySelectorAll(".sl-price-row").forEach(d=>{d.addEventListener("mouseenter",()=>i.controller.getRenderer()?.setCategoryHighlight?.(d.dataset.cat??null)),d.addEventListener("mouseleave",()=>i.controller.getRenderer()?.setCategoryHighlight?.(null));let u=()=>i.focusCategory(d.dataset.cat??"");d.addEventListener("click",u),d.addEventListener("keydown",p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),u())})}),i.els.prices.querySelector(".sl-price-more")?.addEventListener("click",()=>{i.pricesExpanded=!i.pricesExpanded,i.syncPrices()})}function Ea(i,e){if(!e)return;let t=i.focusedCatKey===e?null:e;i.focusedCatKey=t,i.priceBandKeys=t?new Set([t]):null;let n=i.els.pricesSec?.querySelector(".sl-price-select");n&&(n.value="all"),i.controller.setCategoryFilter(t?[t]:null),i.controller.focusCategoryFilter(t?[t]:null),i.pushAvailabilityTo3d(),i.syncFloors(),i.syncRung(),i.minimap?.refreshMinimap(),i.syncPrices(),i.lastSection&&i.showSectionCard(i.lastSection)}import{t as Ca,tCount as Aa}from"@seatlayer/core";function de(i,e,t){let n=Ca(i,t);return n&&n!==i?n:t?e.replace(/\{(\w+)\}/g,(o,s)=>s in t?String(t[s]):o):e}function ap(i){let e=Aa("picker.seatCount",i);return e.includes("picker.seatCount")?`${i} ${i===1?"seat":"seats"}`:e}function lp(i){try{let e=Intl.ListFormat;if(e)return new e(void 0,{style:"long",type:"conjunction"}).format(i)}catch{}return i.join(", ")}function cp(i){if(i.length<2)return!1;let e=[...i].sort((t,n)=>t-n);return new Set(e).size!==e.length?!1:e[e.length-1]-e[0]===e.length-1}function dp(i){let e=i.filter(o=>o.objectType==="ga"),t=i.filter(o=>o.objectType!=="ga"),n=[];if(t.length){let o=ap(t.length),s=[...new Set(t.map(l=>l.sectionLabel).filter(Boolean))],r=[...new Set(t.map(l=>l.rowLabel).filter(Boolean))],a=t.map(l=>Number(l.seatNumber)).filter(l=>Number.isFinite(l));if(s.length===1&&r.length===1&&a.length===t.length){let l=t.length===1?de("picker.releasedSeatPlace","Section {section}, Row {row}, Seat {seat}",{section:s[0],row:r[0],seat:String(t[0].seatNumber??"")}):cp(a)?de("picker.releasedSeatRange","Section {section}, Row {row}, Seats {from}\u2013{to}",{section:s[0],row:r[0],from:Math.min(...a),to:Math.max(...a)}):"";n.push(l?de("picker.releasedPair","{first} \xB7 {second}",{first:o,second:l}):de("picker.releasedInSection","{seats} in Section {section}",{seats:o,section:s[0]}))}else s.length===1?n.push(de("picker.releasedInSection","{seats} in Section {section}",{seats:o,section:s[0]})):s.length>1?n.push(de("picker.releasedInSections","{seats} in Sections {sections}",{seats:o,sections:lp(s)})):n.push(o)}for(let o of e)n.push(de("picker.releasedGa","{quantity} \xD7 {area}",{quantity:o.quantity??1,area:o.label}));return n.length?n.reduce((o,s)=>de("picker.releasedPair","{first} \xB7 {second}",{first:o,second:s})):""}function Pa(i){if(!i)return[];let e=new Map((i.seats??[]).map(o=>[o.label,o])),t=i.items??[];return(t.length?t.map(o=>({label:o.label,objectType:o.objectType,quantity:o.quantity})):[...e.keys()].map(o=>({label:o}))).map(o=>{let s=e.get(o.label);return{label:o.label,...o.objectType?{objectType:o.objectType}:{},...o.quantity==null?{}:{quantity:o.quantity},...s?.sectionLabel?{sectionLabel:s.sectionLabel}:{},...s?.rowLabel?{rowLabel:U(s)??s.rowLabel}:{},...s?.seatNumber?{seatNumber:s.seatNumber}:{}}})}function La(i,e){if(!i.reducedMotion)for(let t of e.slice(0,10)){if(t.objectType==="ga")continue;let n=i.seatByLabel(t.label);!n||i.statusOf(n.id)!=="free"||i.flash(n.id,i.accent)}}function Ma(i,e){if(!e.recoverable.length||!i.isConnected)return;let t=i.querySelector(".sl-hold-expired-next");t&&(e.taken.length?t.textContent=e.taken.slice(0,3).map(r=>Ca("picker.seatJustTakenByAnother",{label:r})).join(" "):t.remove());let n=i.querySelector(".sl-interrupt-actions"),o=n?.querySelector(".sl-interrupt-act");if(!n||!o)return;o.classList.add("sl-interrupt-act-secondary");let s=document.createElement("button");s.type="button",s.className="sl-interrupt-act sl-hold-expired-recover",s.textContent=Aa("picker.holdLapsedSelectAgain",e.recoverable.length),s.addEventListener("click",()=>e.onRecover([...e.recoverable])),n.insertBefore(s,o),i.classList.add("has-recovery"),s.focus()}function Ha(i,e=[]){let t=document.createElement("div");t.className="sl-interrupt sl-hold-expired sl-mo-scrim",t.setAttribute("role","alertdialog"),t.setAttribute("aria-modal","true");let n=document.createElement("div");n.className="sl-interrupt-card sl-mo-in";let o=document.createElement("div");o.className="sl-interrupt-title",o.id="sl-hold-expired-title";let s=document.createElement("span");s.className="sl-interrupt-glyph",s.setAttribute("aria-hidden","true"),s.textContent="\u23F1";let r=document.createElement("span");r.textContent=de("picker.holdExpiredTitle","Your seats were released"),o.append(s,r);let a=document.createElement("div");a.className="sl-interrupt-body",a.id="sl-hold-expired-body",a.textContent=de("picker.holdExpiredBody","Your hold time ran out and the seats went back on sale."),n.append(o,a);let l=dp(e);if(l){let u=document.createElement("div");u.className="sl-interrupt-body sl-interrupt-fact sl-hold-expired-seats",u.textContent=l,n.appendChild(u)}let c=document.createElement("div");c.className="sl-interrupt-body sl-hold-expired-next",c.textContent=de("picker.holdExpiredPickAgain","Pick your seats again to continue \u2014 they may already be taken."),n.appendChild(c),t.setAttribute("aria-labelledby",o.id),t.setAttribute("aria-describedby",a.id);let h=document.createElement("div");h.className="sl-interrupt-actions";let d=document.createElement("button");return d.type="button",d.className="sl-interrupt-act sl-hold-expired-restart",d.textContent=de("picker.holdExpiredRestart","Choose seats again"),d.addEventListener("click",()=>i.restart()),h.appendChild(d),n.appendChild(h),t.appendChild(n),t.addEventListener("pointerdown",u=>{u.target===t&&i.restart()}),t}import{ACCESSIBILITY_TYPES as On,seatTypeIconSvg as Ra,t as pp}from"@seatlayer/core";var Ia={wheelchair:"Wheelchair space",companion:"Companion seat","semi-ambulatory":"Limited mobility","designated-aisle":"Aisle / transfer","step-free":"Step-free",hearing:"Assistive listening",cart:"Live captions","sign-language":"Sign language","low-vision":"Low vision","sensory-friendly":"Sensory-friendly","plus-size":"Plus-size","lift-armrest":"Lift-up armrest"},hp='<svg viewBox="0 0 20 20" width="17" height="17" fill="none" stroke="currentColor" stroke-width="1.45" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="10" cy="10" r="7.5" /><path d="M10 2.5a7.5 7.5 0 0 1 0 15Z" fill="currentColor" stroke="none" /></svg>',up='<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="13" cy="4.4" r="1.9"/><path d="M11 8.2v5.1h5.1"/><path d="M16.6 13.3l1.9 6.3"/><path d="M15.4 14.9a5.6 5.6 0 1 1-5.9-3.4"/></svg>',mp='<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="8.4"/><circle cx="8.6" cy="10.2" r="1.15"/><circle cx="12" cy="8.2" r="1.15"/><circle cx="15.4" cy="10.2" r="1.15"/><path d="M12 20.4a2.6 2.6 0 0 1 0-5.2 2.2 2.2 0 0 0 0-4.4"/></svg>',fp=8,gp=8,bp=88;function yp(i){let e=i.gap??fp,t=i.margin??gp,n=i.min??bp,o=Math.max(i.boundsTop,0);return Math.max(Math.round(i.buttonTop-o-e-t),n)}var Bi=class{constructor(e,t){this.active=new Set;this.deps=t,this.root=document.createElement("div"),this.root.className="sl-a11y",this.button=document.createElement("button"),this.button.type="button",this.button.className="sl-a11ybtn",this.button.setAttribute("aria-haspopup","true"),this.button.setAttribute("aria-expanded","false");let n=this.offered().length>0,o=n?t.tf("picker.accessibilityOptions","Accessibility and colour options"):t.tf("picker.displayOptions","Display options");this.button.setAttribute("aria-label",o),this.button.innerHTML=n?up:mp,this.menu=document.createElement("div"),this.menu.className="sl-a11ymenu",this.menu.hidden=!0;for(let s of this.stored())this.offeredFree().has(s)&&this.active.add(s);if(this.menu.innerHTML=Mo(o,t.tf("picker.close","Close"))+Ho(this.rows()),this.root.append(this.menu,this.button),e.prepend(this.root),this.button.addEventListener("pointerdown",s=>s.stopPropagation()),this.button.addEventListener("click",s=>{s.stopPropagation(),this.open(this.menu.hidden)}),this.menu.querySelector("[data-a11y-close]")?.addEventListener("click",s=>{s.stopPropagation(),this.open(!1),this.button.focus({preventScroll:!0})}),this.menu.addEventListener("pointerdown",s=>s.stopPropagation()),this.menu.addEventListener("click",s=>s.stopPropagation()),this.menu.addEventListener("focusin",s=>{let r=s.target;r&&typeof r.scrollIntoView=="function"&&r.scrollIntoView({block:"nearest"})}),this.dismiss=()=>this.open(!1),this.escape=s=>{s.key==="Escape"&&this.open(!1)},this.reflow=()=>{this.menu.hidden||this.fit()},document.addEventListener("pointerdown",this.dismiss),document.addEventListener("keydown",this.escape),window.addEventListener("resize",this.reflow),this.promoteCounts(),this.wire(),this.active.size){this.applyFilter({focus:!1});let s=()=>this.deps.focusSeatsForFilter();typeof requestAnimationFrame=="function"?requestAnimationFrame(s):s()}}colorblindRow(){return this.menu.querySelector(".sl-cbbtn")}syncCounts(){let e=new Map(this.offered().map(({key:n,count:o})=>[n,o])),t=!1;for(let n of this.menu.querySelectorAll("[data-a11y-row]")){let o=n.dataset.a11yRow??"";if(!o.startsWith("a11y:"))continue;let s=o.slice(5),r=e.get(s);if(r===void 0)continue;let a=this.countNode(n),l=r==null?"":this.countText(r);a&&(a.textContent=l);let c=r===0;a instanceof HTMLButtonElement&&(a.disabled=c,a.setAttribute("aria-label",this.jumpLabel(s,l))),n.disabled=c,c?n.setAttribute("aria-disabled","true"):n.removeAttribute("aria-disabled"),c&&this.active.delete(s)&&(this.paint(n,!1),t=!0)}t&&this.applyFilter()}syncAccessibilityFilter(e){this.active.clear();for(let t of e??[])this.active.add(t);this.remember(e&&e.length?e:null);for(let t of this.menu.querySelectorAll("[data-a11y-row]")){let n=t.dataset.a11yRow??"";n.startsWith("a11y:")&&this.paint(t,this.active.has(n.slice(5)))}}destroy(){document.removeEventListener("pointerdown",this.dismiss),document.removeEventListener("keydown",this.escape),window.removeEventListener("resize",this.reflow),this.root.remove()}fit(){this.menu.style.setProperty("--sl-a11ymenu-max",`${yp({boundsTop:this.boundsTop(),buttonTop:this.button.getBoundingClientRect().top})}px`)}boundsTop(){let e=this.root.closest(".sl-map")??this.root.closest(".sl-picker");return e instanceof HTMLElement?e.getBoundingClientRect().top:0}open(e){if(e===!this.menu.hidden)return;if(this.button.setAttribute("aria-expanded",String(e)),!e){this.menu.hidden=!0,this.menu.classList.remove("sl-mo-in","sl-mo-stagger");return}this.menu.hidden=!1,this.fit(),this.menu.scrollTop=0;let t=this.button.getBoundingClientRect();sn(this.menu,{x:t.left+t.width/2,y:t.top}),zo(this.menu),Fo(this.menu)}rows(){return[...this.filterRows(),...this.deps.hasLimitedView?[{key:"limited",iconHtml:Ra("restrictedView",{size:17}),label:this.deps.tf("picker.hideLimitedView","Hide limited-view seats"),on:this.deps.isLimitedViewHidden()}]:[],{key:"colorblind",iconHtml:hp,className:"sl-cbbtn",label:this.deps.tf("picker.colorblindColors","Colourblind-friendly colours"),on:this.deps.isColorblindSafe()}]}offered(){let e=this.deps.needs?.();if(e)return e.map(({key:n,count:o})=>({key:n,count:o}));let t=this.deps.present;return t?On.filter(({key:n})=>t.has(n)).map(({key:n})=>({key:n,count:null})):[]}offeredKeys(){return new Set(this.offered().map(({key:e})=>e))}offeredFree(){return new Set(this.offered().filter(({count:e})=>e!==0).map(({key:e})=>e))}filterRows(){let e=this.offeredKeys(),t=new Map(On.map(n=>[n.key,n]));return this.offered().flatMap(({key:n,count:o})=>{let s=t.get(n);return s?[{key:`a11y:${n}`,iconHtml:Ra(n,{size:17}),label:this.deps.tf(`picker.accessShort.${n}`,Ia[n]??s.label),...n==="wheelchair"&&e.has("companion")?{note:this.deps.tf("picker.companionSeatsNote","Companion places beside them stay selectable")}:{},...o==null?{}:{count:this.countText(o),disabled:o===0},on:this.active.has(n)}]:[]})}wire(){for(let e of this.menu.querySelectorAll("[data-sl-info]"))e.addEventListener("click",()=>{let t=e.closest(".sl-info"),n=!t?.classList.contains("open");for(let o of this.menu.querySelectorAll(".sl-info.open"))o.classList.remove("open"),o.querySelector("[data-sl-info]")?.setAttribute("aria-expanded","false");t?.classList.toggle("open",n),e.setAttribute("aria-expanded",String(n))});for(let e of this.menu.querySelectorAll("[data-a11y-row]"))e.addEventListener("click",()=>{let t=e.dataset.a11yRow??"";if(t==="colorblind"){let s=!this.deps.isColorblindSafe();this.deps.setColorblindSafe(s),this.paint(e,s);return}if(t==="limited"){let s=!this.deps.isLimitedViewHidden();this.deps.setLimitedViewHidden(s),s&&this.deps.focusSeatsForFilter(),this.paint(e,s);return}let n=t.slice(5),o=!this.active.has(n);o?this.active.add(n):this.active.delete(n),this.paint(e,o),this.applyFilter()})}promoteCounts(){if(this.deps.stepToAccessibleSection)for(let e of this.menu.querySelectorAll('[data-a11y-row^="a11y:"]')){let t=e.querySelector(".sl-a11yrow-c");if(!t)continue;let n=(e.dataset.a11yRow??"").slice(5),o=e.parentElement;o?.classList.contains("sl-a11yrow-w")||(o=document.createElement("div"),o.className="sl-a11yrow-w",e.replaceWith(o),o.appendChild(e));let s=document.createElement("button");s.type="button",s.className="sl-a11yrow-c sl-a11yjump",s.dataset.a11yJump=n,s.textContent=t.textContent,s.disabled=e.disabled,s.setAttribute("aria-label",this.jumpLabel(n,t.textContent??"")),t.remove(),e.setAttribute("aria-label",this.rowLabel(n,s.textContent??"")),e.after(s),s.addEventListener("click",r=>{r.stopPropagation(),this.active.has(n)||(this.active.add(n),this.paint(e,!0),this.applyFilter({focus:!1}));let a=this.deps.stepToAccessibleSection?.(n);a&&s.setAttribute("aria-label",this.jumpLabel(n,s.textContent??"",a.label))})}}countText(e){return e>0?pp("picker.accessFreeCount",{count:e}):"0"}countNode(e){return e.querySelector(".sl-a11yrow-c")??e.parentElement?.querySelector(".sl-a11yrow-c")??null}typeLabel(e){let t=Ia[e]??On.find(n=>n.key===e)?.label??e;return this.deps.tf(`picker.accessShort.${e}`,t)}jumpLabel(e,t,n){return[this.deps.tf("picker.jumpToSection","Jump to section"),this.typeLabel(e),t,...n?[`${this.deps.tf("picker.section","Section")} ${n}`]:[]].filter(Boolean).join(" \xB7 ")}rowLabel(e,t){return[this.typeLabel(e),t].filter(Boolean).join(" \xB7 ")}paint(e,t){e.classList.toggle("on",t),e.setAttribute("aria-checked",String(t)),e.setAttribute("aria-pressed",String(t))}applyFilter(e={}){let t=this.active.size?[...this.active]:null;this.deps.applyAccessibilityFilter(t),this.remember(t),t&&e.focus!==!1&&this.deps.focusSeatsForFilter()}key(){let e=this.deps.chart?.();return`seatmap.a11y.filter.${this.deps.event}${e?`.${e}`:""}`}stored(){try{let e=window.sessionStorage.getItem(this.key()),t=e?JSON.parse(e):null;return Array.isArray(t)?t:[]}catch{return[]}}remember(e){try{e&&e.length?window.sessionStorage.setItem(this.key(),JSON.stringify(e)):window.sessionStorage.removeItem(this.key())}catch{}}};import{attachVisibilityCatchUp as vp}from"@seatlayer/core";var wp=250;function Oa(i,e=wp){let t=null,n=()=>{t===null&&(t=setTimeout(()=>{t=null,i()},e))},o=vp(n),s=typeof window<"u"&&typeof window.addEventListener=="function";return s&&window.addEventListener("focus",n),()=>{t!==null&&(clearTimeout(t),t=null),o(),s&&window.removeEventListener("focus",n)}}import{holdRecoveryShape as xp,tCount as Vi}from"@seatlayer/core";var Fi=class{constructor(e){this.note=null;this.told=!1;this.deps=e}deferExpiryToast(e){this.told=!1,queueMicrotask(()=>{this.told||e()})}handle(e){if(!e.holdLapsed)return;this.told=!0;let t=xp(e),n=e.lapsedLabels.length,o=n-e.recoverable.length,s=t==="all"?Vi("picker.holdLapsedStillFree",n):t==="partial"?Vi("picker.holdLapsedSomeTaken",o):Vi("picker.holdLapsedAllTaken",n);this.note={message:s,recoverable:t==="none"?[]:[...e.recoverable]},this.deps.toast(s,t==="none"?"error":"warning",t==="none"?void 0:{label:this.actionLabel(),onClick:()=>this.recover()}),this.deps.syncTray()}noteHtml(){if(!this.note)return"";let e=this.note.recoverable.length?`<button type="button" data-lapse-again>${I(this.actionLabel())}</button>`:"";return`<div class="sl-lapse-note" role="status"><span>${I(this.note.message)}</span>${e}</div>`}wire(e){e?.querySelector("[data-lapse-again]")?.addEventListener("click",()=>this.recover())}clear(){this.note&&(this.note=null,this.deps.syncTray())}actionLabel(){return Vi("picker.holdLapsedSelectAgain",this.note?.recoverable.length??0)}recover(){let e=this.note?.recoverable??[];this.note=null,this.deps.syncTray(),e.length&&this.deps.reselect(e)}};var _a=Symbol("seatlayer.performance-group-picker");function zi(i,e){return Object.defineProperty(i,_a,{configurable:!1,enumerable:!1,value:Object.freeze({...e})}),i}function Da(i){return i[_a]??null}var Na="@seatlayer/pending-checkout/v1";function Sp(i){return typeof i=="string"&&i.length<=160&&/^ord_[A-Za-z0-9_-]+$/.test(i)}function $i(i){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 n=null;try{let o=window.sessionStorage.getItem(Na);if(o){let s=null;try{s=JSON.parse(o)}catch{}if(s&&Sp(s.orderId)){let r=Date.now()-Number(s.storedAt);if(r>=0&&r<=144e5){if(s.eventKey&&s.eventKey!==i)return null;n=s.orderId}}}window.sessionStorage.removeItem(Na)}catch{}e.delete("seatlayer_checkout");try{let o=e.toString();history.replaceState(history.state,"",`${location.pathname}${o?`?${o}`:""}${location.hash}`)}catch{}return{outcome:t,orderId:n}}function Ba(i){if(!i.framed)return null;let e=i.ancestorOrigins?.length?i.ancestorOrigins[0]:null;for(let t of[e,i.referrer])if(t)try{return new URL(t).origin}catch{}return null}var Lp="https://api.seatlayer.io",Mp=10,Hp=250,Fa=6e4,za=4,Rp=10,Ip=40,Op=220,$a="seatmap.a11y.cb";function _p(){try{if(typeof window>"u")return null;let i=window.localStorage.getItem($a);return i==null?null:i==="1"}catch{return null}}function Dp(i){try{window.localStorage.setItem($a,i?"1":"0")}catch{}}var qe=class i{constructor(e){this.realtime=null;this.accessEl=null;this.lastSelectionValidity=null;this.root=null;this.mapHost=null;this.rendered=!1;this.destroyed=!1;this.renderInfo=null;this.webMcp=null;this.localeGeneration=0;this.els={};this.regions={};this.ro=null;this.viewportResizeHandler=null;this.holdTimer=null;this.toastTimer=null;this.offerReadInFlight=null;this.offerReadSettledAt=0;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.holdConflicted=!1;this.paymentOptions=null;this.checkoutPanel=null;this.extendEl=null;this.extendDismissed=!1;this.extendUsed=!1;this.bookedEl=null;this.holdExpiredEl=null;this.holdExpiredFresh=!1;this.holdExpiredUnits=[];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.themeMode=null;this.colorSchemeStop=null;this.seatsRevealed=!1;this.seatsRevealedReport=null;this.confirmCardCache=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.bestAvailableConfirm=!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 Hi({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.view3dSeatViewChrome=null;this.view3dPassportEl=null;this.view3dPassportCleanup=null;this.floorsEl=null;this.arenaViewportInsets={top:0,right:0,bottom:0,left:0};this.viewEl=null;this.viewCleanup=null;this.seatViewGen=0;this.allSeatsCache=null;this.view3dBack=null;this.view3dNav=null;this.lastRailSignature="";this.priceSelect=null;this.minimap=null;this.pickerLayoutSize={width:0,height:0};this.fullscreenAffordanceSize={rootWidth:-1,rootHeight:-1,viewportWidth:-1,viewportHeight:-1};this.priceBandKeys=null;this.focusedCatKey=null;this.limitedViewFilter=!1;this.pricesExpanded=!1;this.sectionCardCache=null;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.a11yMenu=null;this.detachAttention=null;this.lapse=new Fi({toast:(e,t,n)=>this.toast(e,t,n),reselect:e=>{this.controller.select(e),this.handleCta()},syncTray:()=>this.syncTray()});this.railEdgesBound=!1;this.fsFallback=!1;this.fsChangeHandler=null;this.fsEscHandler=null;this.eventDetailsHidden=!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.fitScheduled=!1;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=Da(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??Lp).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)}},n=!e.transport&&e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?ri({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:n?.access??Rt(e,t),this.pubApi=e.transport?null:n?.api??new Le(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 ht(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 o=e.numberOfPlacesToSelect;if(o!=null&&(!Number.isInteger(o)||o<1))throw new Error("seatmap: `numberOfPlacesToSelect` must be a positive integer");this.exactTickets=o??null;let s=Fr(e.selectionValidators);if(this.exactTickets!=null&&s>this.exactTickets)throw new Error("seatmap: `minimumSelectedPlaces.minimum` cannot exceed `numberOfPlacesToSelect`");let r=Math.max(1,Math.floor(e.maxSelection??this.exactTickets??Math.max(Mp,s)));if(this.exactTickets!=null&&r<this.exactTickets)throw new Error("seatmap: `maxSelection` cannot be lower than `numberOfPlacesToSelect`");if(e.maxSelection!=null&&r<s)throw new Error("seatmap: `maxSelection` cannot be lower than `minimumSelectedPlaces.minimum`");this.maxTickets=this.exactTickets??r,this.cbSafe=_p()??!!e.colorblindSafe,this.controller=this.wireController(e)}get confirmEl(){return this.confirmCard.element}set confirmEl(e){this.confirmCard.element=e}get confirmSeat(){return this.confirmCard.candidate}set confirmSeat(e){this.confirmCard.candidate=e}get lastSection(){return this.sectionCard.summary}set lastSection(e){this.sectionCard.adopt(e)}deliverableViewReference(e){return ft(e)}isFramed(){return typeof window<"u"&&window.parent!==window}postToHost(e){if(!this.isFramed())return;let t=Ba({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 n=t<640?1.2:.62;return Math.max(420,Math.round(t*n))}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()}fillsViewport(){let e=this.root;if(!e||typeof window>"u")return!1;let t=e.getBoundingClientRect();return t.height>=window.innerHeight-za&&t.width>=window.innerWidth-za}syncFullscreenAffordance(){let e=this.els.zfs;if(!e)return;let n=!(!!document.fullscreenElement||this.fsFallback||this.framedFs)&&this.root?.dataset.layout==="narrow"&&this.fillsViewport();e.hidden=n,e.tabIndex=n?-1:0,e.setAttribute("aria-hidden",String(n))}fullscreenMeasurementChanged(e,t){let n=typeof window>"u"?0:window.innerWidth,o=typeof window>"u"?0:window.innerHeight,s=e!==this.fullscreenAffordanceSize.rootWidth||t!==this.fullscreenAffordanceSize.rootHeight||n!==this.fullscreenAffordanceSize.viewportWidth||o!==this.fullscreenAffordanceSize.viewportHeight;return this.fullscreenAffordanceSize={rootWidth:e,rootHeight:t,viewportWidth:n,viewportHeight:o},s}syncFullscreenButtons(){let e=!!document.fullscreenElement||this.fsFallback||this.framedFs,t=this.eventDetailsHidden&&!e;this.root?.setAttribute("data-event-details-hidden",String(t)),this.root?.setAttribute("data-fs",String(e)),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 n=this.els.zfs?.querySelector(".sl-zfs-lbl");n&&(n.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)),this.syncFullscreenAffordance()}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,background:this.cssVar("--sl-bg")||void 0}),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){ut();let t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=document.createElement("div");n.className="sl-modal-scrim";let o=document.createElement("div");o.className="sl-modal-frame",o.style.setProperty("--sl-bg",nt(void 0,e.theme)["--sl-bg"]),o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.setAttribute("aria-label",g("picker.seatSelection","Seat selection")),o.tabIndex=-1,n.appendChild(o),document.body.appendChild(n);let s=document.body.style.overflow;document.body.style.overflow="hidden";let r=new i({...e,container:o});r.modalScrim=n,r.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=[...o.querySelectorAll('[role="dialog"][aria-modal="true"]')].filter(b=>b.isConnected&&!b.closest('[hidden], [aria-hidden="true"], [inert]'));return f[f.length-1]??o},c=(f,b)=>{let k=f;for(;k;){let S=window.getComputedStyle(k);if(k.hidden||k.getAttribute("aria-hidden")==="true"||k.hasAttribute("inert")||S.display==="none"||S.visibility==="hidden"||S.visibility==="collapse")return!0;if(k===b)return!1;k=k.parentElement}return!0},h=f=>[...f.querySelectorAll(a)].filter(b=>b.tabIndex>=0&&!b.matches(":disabled")&&!c(b,f)),d=(f,b)=>{let k=h(f),S=b?k[k.length-1]:k[0];S?S.focus({preventScroll:!0}):(f.hasAttribute("tabindex")||(f.tabIndex=-1),f.focus({preventScroll:!0}))},u=!1,p=()=>{if(u)return;u=!0,document.body.style.overflow=s,r.escHandler&&document.removeEventListener("keydown",r.escHandler),n.remove(),r.modalScrim=null;let f=r.prevFocus;r.prevFocus=null,f?.isConnected&&f.focus({preventScroll:!0});let b=()=>{r.destroy(),e.onClose?.()};r.hold&&!r.handedOff?r.release().finally(b):b()};return r.closeModal=p,n.addEventListener("mousedown",f=>{f.target===n&&p()}),r.escHandler=f=>{if(f.key==="Tab"){if(f.defaultPrevented)return;let b=l(),k=h(b),S=k[0],v=k[k.length-1],A=document.activeElement;!S||!v?(f.preventDefault(),d(b,f.shiftKey)):A===b||!A||!b.contains(A)?(f.preventDefault(),(f.shiftKey?v:S).focus({preventScroll:!0})):f.shiftKey&&A===S?(f.preventDefault(),v.focus({preventScroll:!0})):!f.shiftKey&&A===v&&(f.preventDefault(),S.focus({preventScroll:!0}));return}f.key==="Escape"&&(r.tableDialog?(f.preventDefault(),r.cancelTableDialog()):r.confirmSeat?(f.preventDefault(),r.cancelConfirm()):r.bestAvailableConfirm?(f.preventDefault(),r.bestAvailableConfirm=!1,r.syncTray()):(f.preventDefault(),p()))},document.addEventListener("keydown",r.escHandler),await r.render(),r.els.close?.classList.add("on"),r.els.close?.addEventListener("click",p),d(l(),!1),r}wireController(e){return new kp({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,...e.loadingReveal?{loadingReveal:e.loadingReveal}:{},mapTheme:it(e.theme),onSeatsRevealed:()=>{this.seatsRevealed=!0,e.onSeatsRevealed?.(),this.seatsRevealedReport?.()},onGAClick:t=>{let n=this.controller.getGAAreas().find(o=>o.id===t);n&&(this.collapseSheet(),ln(this,n,this.lastMapPoint))},onSelectionChange:()=>{this.syncTray(),this.minimap?.refreshMinimap(),this.committedSelection().length&&this.collapseSectionCard(),this.syncSelectionTo3d()},onStatusChange:(t=>{this.syncSeatMarks(),this.syncPrices(),this.a11yMenu?.syncCounts(),Ps(t)&&this.scheduleOfferRefresh(!0),this.evictTakenSelections(),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()}),onHoldExpired:()=>{let t=this.handedOff,n=this.holdConflicted;this.holdExpiredUnits=Pa(this.hold),this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.holdConflicted=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.lapse.deferExpiryToast(()=>{if(t||n){this.toast(N("picker.holdExpired",void 0)||"Your hold expired \u2014 seats released. Pick again.","warning");return}this.showHoldExpired()}),this.syncTray(),this.emitHoldChange(),this.opts.onHoldExpired?.()},onAvailabilityRefresh:t=>this.lapse.handle(t),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.collapseSheet(),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=>{if(this.controller.currentHold()?.labels.includes(t.label)){this.removeHeldLabels([t.label]);return}if(this.confirmSeat?.id===t.id){this.dismissConfirm();return}if(this.tableDialog?.physicalSeatIds.includes(t.id)){this.dismissTableDialog();return}this.opts.confirmSelection===!1||this.salesClosed||this.controller.tableSelection(t.id)||(this.controller.select([t.id]),this.showConfirm(t,"remove"))},onSelectionLimit:()=>{this.toast(N("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),hostCardOpen:()=>this.tipPinned||!!this.confirmSeat,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={},n=P=>Math.round((performance.now()-P)*100)/100;this.rendered=!0,ut();let o=performance.now(),s=ni(this.opts.locale,this.opts.messages),r=this.localeGeneration+=1;this.checkoutMode==="hosted"&&(this.paymentOptions=this.pubApi.paymentOptions(this.opts.event));let a=performance.now(),l=lo(this.opts.container),{root:c,els:h,mapHost:d}=Ro(l,(P,_)=>this.tf(P,_),this.opts.theme);this.root=c,this.els=h,this.mapHost=d,oi(c,s,P=>{t.loadLocale=n(o),this.destroyed||this.applyActiveLocale(P,r)}),ur(c,()=>[{open:()=>!!this.holdExpiredEl,close:()=>this.restartAfterHoldExpiry()},{open:()=>this.tipPinned,close:()=>this.unpinTooltip()},{open:()=>!!this.tableDialog,close:()=>this.cancelTableDialog()},{open:()=>!!this.confirmSeat,close:()=>this.cancelConfirm()},{open:()=>this.bestAvailableConfirm,close:()=>{this.bestAvailableConfirm=!1,this.syncTray()}}]),this.syncFullscreenButtons(),this.wireBuyerShell(c);let u=document.createElement("div");u.style.cssText="position:absolute;inset:0",this.mapHost.appendChild(u),t.mountBuyerShell=n(a),t.skeletonPaint=n(e),this.startRealtime();let p=await this.loadChart(u,t,n);if(!p)return this.realtime?.stop(),this.realtime=null,this;t.shellsPaint=n(e);let f=performance.now();if(this.salesClosed=!!p.salesClosed||!!this.opts.readOnly,c.dataset.eventMode=p.mode==="test"?"test":"live",!this.opts.locale&&p.locale&&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 P=document.createElement("div");P.className="sl-testbadge",P.textContent=ao(N("picker.testMode"),Va()),P.setAttribute("aria-label",N("picker.testMode")),P.title=this.tf("picker.testModeExplained","Bookings here are not real and no card is charged"),this.regions["top-left"].appendChild(P)}let b=this.controller.doc?.theme;this.themeMode=this.opts.theme?.mode??null,this.applyThemeTokens(c),this.watchThemeMode(),this.currency=p.currency??this.opts.currency??"USD",this.eventTimezone=p.timezone??null,co(this.els.logo,[this.opts.theme?.logoUrl,b?.logoUrl,p.posterUrl],this.opts.theme?.brandName??b?.brandName??p.eventName??"?"),this.els.name.textContent=p.eventName??"";let k=p.startsAt?ti(p.startsAt,p.timezone??null,this.opts.locale):"";this.eventWhenText=k||null,this.els.meta.textContent=[p.venue,k].filter(Boolean).join(" \xB7 "),this.syncProjection(),this.buildBadge(b);let S=!!this.controller.doc&&this.controller.getExpandedSeats().some(P=>P.commercial?.restrictedView||P.commercial?.obstructedView);this.buildAccessibilityMenu(S),this.buildLanguageSwitcher(this.els.zoom??this.regions["bottom-right"]),this.srEl=document.createElement("div"),this.srEl.className="sl-sr",this.srEl.setAttribute("aria-live","polite"),c.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=n(f);let v=performance.now();if(await this.restoreRememberedHold(),t.restoreHold=n(v),this.destroyed)return this;this.dismissSkeleton(),this.salesClosed&&this.applySalesClosed(),this.syncPrices(),this.syncTray(),this.resumeHostedOrder();let A=this.controller.doc,y=bi(this.opts.event),H=this.performanceGroup?.surface??(this.performanceGroup?"performance_group":null),C=H??"event",O={apiBase:this.apiBase,eventKey:this.opts.event,metricScope:C,surface:H==="season"?"season_picker":H==="performance_group"?"performance_group_picker":"seat_picker",ms:n(e),performanceProfile:t,chartDelivery:p.chartDelivery,seatCount:this.allSeats().length,objectCount:A?.objects.length??0,sectionCount:A?.objects.filter(P=>P.type==="section").length??0,floorCount:this.controller.getFloors().length,chartName:A?.name,view:this.buyerView,load:y,transport:this.opts.transport?"custom":"pubapi"};vr(O,(P,_)=>this.emitAnalytics(P,_));let M=p.performanceProfile;return this.seatsRevealedReport=()=>this.emitAnalytics("chart_seats_revealed",Ln({...O,performanceProfile:{...O.performanceProfile,...M}})),this.seatsRevealed&&this.seatsRevealedReport(),this.renderInfo=p,await this.registerAgentTools(),this}registerAgentTools(){return yr(this)}webMcpHost(e){return Pn(this,e)}wireBuyerShell(e){this.refreshOfferAvailability(!1),this.api.availability&&(this.offerVisibilityHandler=()=>{!document.hidden&&!this.destroyed&&this.refreshOfferAvailability(!1)},document.addEventListener("visibilitychange",this.offerVisibilityHandler)),this.detachAttention=Oa(()=>{this.destroyed||this.controller.refreshAvailability()}),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.overview()),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 o=this.els.sheetToggle,s=h=>this.setSheetOpen(h);s(e.dataset.sheet==="open");let r=0,a=!1,l=!1,c=!1;o?.addEventListener("click",h=>{h.stopPropagation(),!a&&s(e.dataset.sheet!=="open")}),t.addEventListener("pointerdown",h=>{if(h.target.closest?.(".sl-seccard")){l=!1;return}c=!!h.target.closest?.(".sl-sheet-toggle"),l=!0,a=!1,r=h.clientY,t.setPointerCapture?.(h.pointerId)}),t.addEventListener("pointermove",h=>{if(!l||a)return;let d=h.clientY-r;d<-18?(s(!0),a=!0):d>18&&(s(!1),a=!0)}),t.addEventListener("pointerup",h=>{l&&!a&&!c&&Math.abs(h.clientY-r)<6&&s(e.dataset.sheet!=="open"),l=!1,c=!1,t.releasePointerCapture?.(h.pointerId)})}let n=()=>{if(this.root?.dataset.layout!=="narrow")return;let o=this.root.getAttribute("data-prices-open")==="true";this.root.setAttribute("data-prices-open",String(!o)),this.els.pricesSec?.setAttribute("aria-expanded",String(!o)),!o&&this.root.dataset.sheet!=="open"&&this.setSheetOpen(!0)};this.els.pricesSec?.addEventListener("click",o=>{o.target.closest("select,button")||n()}),this.els.pricesSec?.addEventListener("keydown",o=>{o.key!=="Enter"&&o.key!==" "||o.target.closest("select,button")||(o.preventDefault(),n())}),e.addEventListener("click",o=>{let s=o.target.closest("[data-sl-info]");if(!s||!e.contains(s))return;o.stopPropagation();let r=s.closest(".sl-info"),a=!r?.classList.contains("open");this.closeInfoPops(r),r?.classList.toggle("open",a),s.setAttribute("aria-expanded",String(a))}),e.addEventListener("pointerdown",o=>{o.target.closest(".sl-info")||this.closeInfoPops()}),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",o=>{this.handleMapPointerDown(o)},!0),this.els.map.addEventListener("mousemove",o=>{if(this.tipPinned)return;let s=this.els.map.getBoundingClientRect();this.tipPos={x:o.clientX-s.left,y:o.clientY-s.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()}),this.els.cta.addEventListener("click",()=>{this.els.cta.dataset.act==="find"?this.openBestSeatsForm():this.handleCta()})}setSheetOpen(e){let t=this.root;if(!t)return;t.dataset.sheet=e?"open":"peek";let n=this.els.sheetToggle;n?.setAttribute("aria-expanded",String(e)),n?.setAttribute("aria-label",e?this.tf("picker.collapseTicketPanel","Collapse ticket panel"):this.tf("picker.openTicketPanel","Open ticket panel"))}openBestSeatsForm(){this.setSheetOpen(!0),this.els.tray?.querySelector(".sl-ba")?.scrollIntoView({block:"nearest",behavior:this.reducedMotion()?"auto":"smooth"}),this.els.tray?.querySelector(".sl-ba-go")?.focus()}collapseSheet(){let e=this.root;!e||e.dataset.layout!=="narrow"||e.dataset.sheet!=="open"||(e.dataset.sheet="peek",this.els.sheetToggle?.setAttribute("aria-expanded","false"),this.els.sheetToggle?.setAttribute("aria-label",this.tf("picker.openTicketPanel","Open ticket panel")))}observeLayout(e){let t=()=>{let n=e.clientWidth;if(n<=0)return;let o=e.clientHeight,s=n!==this.pickerLayoutSize.width||o!==this.pickerLayoutSize.height;this.pickerLayoutSize={width:n,height:o};let r=this.fullscreenMeasurementChanged(n,o);this.reportFramedHeight();let a=n<640?"narrow":"wide",l=o<560?"compact":"comfortable",c=e.dataset.layout!==a||e.dataset.density!==l;c&&(e.dataset.layout=a,e.dataset.density=l,this.controller.getRenderer()?.setSectionFocusDim?.(a!=="narrow"),a==="narrow"&&!e.dataset.sheet&&(e.dataset.sheet="peek"),this.dockLayoutChrome(),this.syncMinimapForLayout(),this.lastTrayKeys.size&&this.syncTray(),this.syncMapStepBack(),this.refreshExtendPrompt()),(r||c)&&this.syncFullscreenAffordance(),this.syncArenaViewportInsets(),s&&(this.minimap?.refreshMinimap(),this.scheduleFit())};this.ro=new ResizeObserver(t),this.ro.observe(e),this.viewportResizeHandler=()=>{this.fullscreenMeasurementChanged(e.clientWidth,e.clientHeight)&&this.syncFullscreenAffordance()},window.addEventListener("resize",this.viewportResizeHandler),t(),requestAnimationFrame(t)}async loadChart(e,t,n){let o=performance.now(),s=await this.controller.render(e);return t.loadChartAndStatuses=n(o),this.destroyed?null:s?(Object.assign(t,s.performanceProfile),s):(Te({apiBase:this.apiBase,event:this.opts.event,scope:this.performanceGroup?.surface??(this.performanceGroup?"performance_group":"event"),surface:this.performanceGroup?.surface==="season"?"season_picker":this.performanceGroup?"performance_group_picker":"seat_picker",outcome:"failure",stage:"load_chart",ms:t.loadChartAndStatuses,performanceProfile:t,view:"map",load:Re(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 r=this.opts.container,a=this.opts;this.destroy(),new i({...a,container:r}).render()}),null)}resumeHostedOrder(){if(this.checkoutMode!=="hosted")return;let e=$i(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()}buildAccessibilityMenu(e){let t=this.els.zoom??this.regions["bottom-right"]??this.els.map;t&&(this.a11yMenu=new Bi(t,{event:String(this.opts.event),chart:()=>this.controller.doc?.name??null,needs:()=>this.controller.getAccessNeeds(),hasLimitedView:e,tf:(n,o)=>this.tf(n,o),isColorblindSafe:()=>this.cbSafe,setColorblindSafe:n=>this.setColorblindSafe(n),isLimitedViewHidden:()=>this.limitedViewFilter,setLimitedViewHidden:n=>{this.limitedViewFilter=n,this.controller.setCommercialLimitedFilter(n),this.pushAvailabilityTo3d()},applyAccessibilityFilter:n=>this.applyAccessibilityFilter(n),focusSeatsForFilter:()=>this.focusSeatsForFilter(),stepToAccessibleSection:n=>this.controller.focusNextAccessibleSection?.([n])??null}),this.cbEl=this.a11yMenu.colorblindRow())}focusSeatsForFilter(){if(this.controller.focusAccessibilityFilter?.()){this.explainAccessibilitySpread();return}this.rungsEl&&this.controller.getRung()!=="seats"&&(this.controller.setRung("seats"),this.collapseSectionCard(),this.syncRung())}explainAccessibilitySpread(){let e=this.controller.accessibilitySpread?.();!e?.wholeVenue||e.sections.length<2||this.toast(N("picker.accessSpreadHint",{count:e.spaces,sections:e.sections.length}),"neutral")}applyAccessibilityFilter(e){this.controller.setAccessibilityFilter(e),this.syncPrices(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()}setAccessibilityFilter(e){this.applyAccessibilityFilter(e),this.a11yMenu?.syncAccessibilityFilter(e),e?.length&&this.focusSeatsForFilter()}focusAccessibilityFilter(){this.focusSeatsForFilter()}dockLayoutChrome(){let e=this.root?.dataset.layout==="narrow";this.applyPanelCollapsed();let t=this.els.zfs,n=this.els.headInfo?.parentElement;t&&n&&t.parentElement!==n&&(t.classList.add("sl-fs-pill"),n.insertBefore(t,this.els.hold??null));let o=this.extendEl;if(o){let r=e?this.regions["bottom-center"]??this.els.map:n;r&&o.parentElement!==r&&(o.dataset.dock=e?"map":"head",r===n?r.insertBefore(o,this.els.close??null):r.appendChild(o))}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.lastSection&&this.renderSectionCard(this.lastSection)}buildExtendPrompt(){Yr(this)}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><ul class="sl-booked-list" data-ref="bookedList"></ul><button type="button" class="sl-booked-back" data-ref="bookedBack"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${I(this.tf("picker.backToMap","Back to map"))}</span></button>`,this.root.appendChild(e),this.bookedEl=e,this.els.bookedSub=e.querySelector('[data-ref="bookedSub"]'),this.els.bookedList=e.querySelector('[data-ref="bookedList"]'),e.querySelector('[data-ref="bookedBack"]')?.addEventListener("click",()=>this.dismissBooked())}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(),n=document.createElement("div");n.className="sl-soldout-eyebrow",n.textContent=t;let o=document.createElement("div");o.className="sl-soldout-title",o.textContent=this.tf("picker.soldOutTitle","Sold out");let s=document.createElement("p");s.className="sl-soldout-copy",s.textContent=this.tf("picker.soldOutCopy","No reserved seats are currently available for this event."),e.append(n,o,s),this.els.map.appendChild(e),this.soldoutEl=e}syncSoldout(e,t){let n=this.controller.getGAAreas().length>0,o=this.isSoldOut(e,t,n);o!==this.soldOut&&(this.soldOut=o,this.soldoutEl?.classList.toggle("on",o))}isSoldOut(e,t,n){return!n&&e.length>0&&e.every(o=>(t[o.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!!e?.hideBadge}buildBadge(e){if(this.badgeHidden(e))return;let t=this.els.foot;if(!t)return;let n=document.createElement("a");n.className="sl-powered",n.href="https://seatlayer.io/?ref=picker",n.target="_blank",n.rel="noopener noreferrer",n.setAttribute("aria-label",this.tf("picker.poweredBy","Powered by SeatLayer"));let o=document.createElement("span");o.className="sl-powered-mark",o.setAttribute("aria-hidden","true"),o.innerHTML=pi;let s=document.createElement("span");s.textContent=this.tf("picker.poweredBy","Powered by SeatLayer"),n.append(o,s),t.appendChild(n)}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 n=document.createElement("div");n.className="sl-anchor",n.dataset.region=t,this.els.map.appendChild(n),this.regions[t]=n}}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 n=setTimeout(()=>{this.motionTimers.delete(n),this.destroyed||e()},t);this.motionTimers.add(n)}animateOnce(e,t,n=600){!e||this.reducedMotion()||(e.classList.remove(t),e.offsetWidth,e.classList.add(t),this.scheduleMotion(()=>e.classList.remove(t),n))}flashPickedSeat(e){this.reducedMotion()||this.controller.flashSeat(e,this.cssVar("--sl-accent")||"#f4b740")}flashHeldSeats(e){let t=this.reducedMotion(),n=(e.items??[]).filter(o=>o.objectType!=="ga").slice(0,10).map(o=>this.controller.seatByLabel(o.label)).filter(o=>!!o);hs({regions:this.els,categories:this.controller.doc?.categories,pop:o=>this.controller.flashSeat(o,this.cssVar("--sl-accent")||"#f4b740"),focus:(o,s)=>this.controller.focusSection(o,s),focusSeats:o=>this.controller.focusSeats?.(o,{animate:!t})===!0,reducedMotion:t,screenPoint:o=>this.controller.worldToScreen(o),schedule:(o,s)=>this.scheduleMotion(o,s)},n)}committedSelection(){let e=this.confirmSeat?.id,t=this.tableDialog&&!this.tableDialogHeld?this.tableDialog.id:null;return this.controller.getSelection().filter(n=>n.id!==e&&n.id!==t)}pendingSelectionCount(){return Zr(this)}heldTicketCount(){return Qr(this)}totalTicketCount(){return Jr(this)}updateSelectionCapacity(){ea(this)}syncCta(e=this.lastTrayCount,t=this.pendingSelectionCount()){ta(this,e,t)}setCtaPhase(e){ia(this,e)}runCheckoutHandoff(e,t){return na(this,e,t)}holdStorageKey(){return oa(this)}rememberedHoldId(){return sa(this)}rememberHold(e){ra(this,e)}forgetHold(){aa(this)}resumeHoldFromServer(e){return la(this,e)}restoreRememberedHold(){return ca(this)}activeFloorObjects(){let e=this.controller.doc;if(!e)return[];let t=e.floors;if(t?.length){let n=this.controller.getActiveFloorId();return(t.find(o=>o.id===n)??t[0]).objects??[]}return e.objects??[]}buildMinimap(){!this.els.map||this.root?.dataset.layout==="narrow"||(this.minimap=lr({controller:this.controller,root:()=>this.root,cssVar:e=>this.cssVar(e),focusedSectionLabel:()=>this.lastSection?.label},this.regions["bottom-left"]??this.els.map))}syncMinimapForLayout(){let e=this.root?.dataset.layout==="narrow";if(e&&this.minimap){this.minimap.dispose(),this.minimap=null;return}!e&&!this.minimap&&this.buildMinimap()}catPrice(e){return Ii(this,e)}catPriceRange(e){return Oi(this,e)}buildPriceFilter(){wa(this)}applyPriceBand(e){xa(this,e)}buildArenaChrome(){let e=this.controller.doc;if(this.rungsEl=null,this.projectionEl=null,this.floorsEl=null,!e||!this.els.map){this.syncArenaViewportInsets();return}let t=e.objects.some(n=>n.type==="section")||(e.floors??[]).some(n=>n.objects.some(o=>o.type==="section"));if(this.canOffer3d()){let n=document.createElement("div");n.className="sl-projection",n.setAttribute("role","group"),n.setAttribute("aria-label",this.tf("picker.venueView","Venue view")),n.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>`,n.querySelectorAll("button").forEach(o=>{if(o.dataset.view==="venue3d")for(let s of["pointerenter","focus","pointerdown"])o.addEventListener(s,Qt,{once:!0});o.addEventListener("click",()=>{this.setBuyerView(o.dataset.view)})}),this.regions["top-right"].appendChild(n),this.projectionEl=n,this.syncProjection()}if(t){let n=[...e.objects,...(e.floors??[]).flatMap(d=>d.objects)],o=new Set((e.zones??[]).map(d=>d.id)),a=e.floorOverview==="combined"&&(e.floors?.length??0)>1&&o.size===0||n.some(d=>d.type==="section"&&typeof d.zone=="string"&&o.has(d.zone))?["zones","sections","seats"]:["sections","seats"],l=document.createElement("div");l.className="sl-rungs on sl-mo-indicator",l.setAttribute("role","group"),l.setAttribute("aria-label",N("picker.zoomLevel"));let c={zones:N("picker.rungLabel.zones"),sections:N("picker.rungLabel.sections"),seats:N("picker.rungLabel.seats")},h={zones:N("picker.rungTip.zones"),sections:N("picker.rungTip.sections"),seats:N("picker.rungTip.seats")};l.innerHTML=a.map(d=>`<button type="button" data-rung="${d}" title="${h[d]}" aria-pressed="false">${c[d]}</button>`).join(""),l.querySelectorAll("button").forEach(d=>{d.addEventListener("click",()=>{let u=d.dataset.rung;this.controller.setRung(u),u==="seats"&&this.collapseSectionCard()})}),this.regions["top-center"].appendChild(l),this.rungsEl=l,this.syncRung()}if(this.controller.isMultiFloor()){let n=Rs({floors:this.controller.getFloors(),tf:(o,s)=>this.tf(o,s),onChoose:o=>{o===""?this.controller.setFloorOverview(!0):this.controller.setFloor(o),this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()}});this.regions["top-left"].appendChild(n),this.floorsEl=n,this.syncFloors()}this.syncArenaViewportInsets()}syncArenaViewportInsets(){let e=this.els.map,t=e?Hs(e.getBoundingClientRect(),[this.floorsEl,this.rungsEl,this.projectionEl].map(n=>n?.isConnected?n.getBoundingClientRect():null),this.root?.dataset.layout==="narrow"&&this.els.zoom?.isConnected?[this.els.zoom.getBoundingClientRect()]:[]):{top:0,right:0,bottom:0,left:0};Object.keys(t).every(n=>t[n]===this.arenaViewportInsets[n])||(this.arenaViewportInsets=t,this.controller.setViewportInsets(t))}syncRung(){let e=this.controller.getRung(),t=this.controller.seatsRevealed?.()??(e==="seats"||!!this.controller.getFocusedSection?.());this.root&&(this.root.dataset.zoomed=String(t)),this.syncMapStepBack(),this.minimap?.setAutoOpen(!1),this.rungsEl&&this.rungsEl.querySelectorAll("button").forEach(n=>{let o=n.dataset.rung===e;n.classList.toggle("on",o),n.setAttribute("aria-pressed",String(o))})}syncMapStepBack(){let e=this.els?.zout,t=this.els?.zfit;if(!e||!this.root)return;if(this.root.dataset.layout!=="narrow"){e.disabled&&(e.disabled=!1),t?.disabled&&(t.disabled=!1);return}let n=Ms({focusedSection:this.controller.getFocusedSection?.()??null,seatsRevealed:this.controller.seatsRevealed?.()??!0,atVenueFit:this.controller.atVenueFit?.()})==="none";e.disabled=n,t&&(t.disabled=n)}syncProjection(){this.els.pricesHint&&(this.els.pricesHint.textContent=this.buyerView==="venue3d"?this.tf("picker.priceHint3d","Colours in the venue are ticket types \u2014 choose one below to show just those seats."):this.tf("picker.priceHint","Colours on the map are ticket types \u2014 tap one below to show just those seats.")),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||!Zt()?!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)?Fa/2:Fa}syncFloors(){Is(this.floorsEl,this.controller.getActiveFloorId(),this.controller.isFloorOverview())}get sectionCard(){return this.sectionCardCache||(this.sectionCardCache=new Ti({controller:this.controller,map:()=>this.els.map,root:()=>this.root,collapseSheet:()=>this.collapseSheet(),region:e=>this.regions[e],refreshMinimap:()=>this.minimap?.refreshMinimap(),activeFloorObjects:()=>this.activeFloorObjects(),sectionNeighbours:e=>this.sectionNeighbours(e),catPriceRange:e=>this.catPriceRange(e),money:e=>this.money(e),suppressPricing:()=>this.suppressPricing,priceBandKeys:()=>this.priceBandKeys})),this.sectionCardCache}showSectionCard(e){this.sectionCard.show(e)}renderSectionCard(e){this.sectionCard.render(e)}collapseSectionCard(){this.sectionCard.collapse()}sectionCardOnView(){this.sectionCard.onView()}sectionNeighbours(e){let t=this.activeFloorObjects().filter(o=>o.type==="section"&&!this.controller.isSectionClosed(o.id)&&this.controller.getSectionSeatCount(o.id)>0);if(t.length<2)return null;let n=t.findIndex(o=>o.id===e);return n<0?null:{previous:t[(n-1+t.length)%t.length],next:t[(n+1)%t.length]}}markedSeatAnnouncement(e){let t=xn(this.controller.getRenderer()?.getSeatMark?.(e.id),this.performanceGroup?.nights?.());return Us(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 n=this.controller.doc?.categories.find(p=>p.key===e.categoryKey),o=this.controller.getStatus(e.id)??"free",s=o==="free"?this.tf("picker.statusAvailable","available"):o==="held"?this.tf("picker.statusOnHold","on hold"):this.tf("picker.statusTaken2","taken"),r=n?this.catPriceRange(n):void 0,a=!this.suppressPricing&&r?r.min===r.max?this.money(r.min):`${this.money(r.min)}\u2013${this.money(r.max)}`:void 0,l=this.controller.tableSelection(e.id),c=l??this.controller.seatDetails(e.id),h=Ge(c),d=c?.rowLabel??c?.displayLabel??e.displayLabel??e.label,u=l?`${h} ${d}, ${l.bookingMode==="variable"?N("picker.minToMaxGuests",{min:l.minOccupancy,max:l.maxOccupancy}):N("picker.capacityGuests",{count:l.capacity})}`:c?.objectType==="booth"?`${h} ${d}`:c?.objectType==="table"?`${h} ${d}, ${N("picker.seatNumberLower",{label:c.seatNumber??e.label})}`:N("picker.seatLabel",{label:c?.displayLabel??e.displayLabel??e.label});this.srEl.textContent=`${u}, ${n?.label??e.categoryKey}${a?`, ${a}`:""}, ${s}`}showTableDialog(e,t,n){this.dismissTableDialog(!1),this.tableDialog={...e},this.tableDialogHeld=t,this.tableDialogReturnFocus=n??document.activeElement;let o=this.controller.doc?.categories.find(a=>a.key===e.categoryKey),s=e.bookingMode==="variable",r=document.createElement("div");r.className="sl-table-scrim",r.innerHTML=Po(e,{variable:s,held:t,typeWord:Ge(e),categoryLabel:o?.label??e.categoryKey,suppressPricing:this.suppressPricing,unitPrice:this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label))}),this.root.appendChild(r),this.tableDialogEl=r,this.renderTableDialogState(),r.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()})}),r.querySelector(".sl-table-cancel").addEventListener("click",()=>this.cancelTableDialog()),r.querySelector(".sl-table-confirm").addEventListener("click",()=>{this.confirmTableDialog()}),r.addEventListener("mousedown",a=>{a.target===r&&this.cancelTableDialog()}),r.addEventListener("keydown",a=>{if(a.key!=="Tab")return;let l=[...r.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(()=>r.querySelector(s?'[data-table-step="-1"]':".sl-table-confirm")?.focus())}renderTableDialogState(){let e=this.tableDialog,t=this.tableDialogEl;if(!e||!t)return;let n=t.querySelector("output[data-table-qty]");n&&(n.value=String(e.quantity));let o=t.querySelector("input[data-table-qty]");o&&(o.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 s=this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label),r=t.querySelector("[data-table-total]");r&&(r.textContent=this.money(s*e.quantity))}async confirmTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;if(!e)return;let n=this.tableDialogEl?.querySelector(".sl-table-confirm");if(n&&(n.disabled=!0,n.textContent=t?this.tf("picker.updatingEllipsis","Updating\u2026"):this.tf("picker.selectingEllipsis","Selecting\u2026")),t){try{let o=await this.controller.replaceTableQuantity(e.label,e.quantity,this.opts.holdTtlMs);if(!o){this.toast(this.tf("picker.guestCountCouldNotBeSecured","That guest count could not be secured. Your current table hold is unchanged."),"warning"),this.renderTableDialogState(),n&&(n.disabled=!1,n.textContent=this.tf("picker.updateTable","Update table"));return}this.hold={holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items},this.startHoldTimer(o.expiresAt),this.dismissTableDialog(),this.syncTray(),this.emitHoldChange(),this.toast(N("picker.tableUpdatedForGuests",{label:e.label,count:e.quantity}),"success")}catch(o){this.opts.onError?.(o),this.toast(this.tf("picker.guestCountNoLongerAvailable","That guest count is no longer available. Your current hold is unchanged."),"error"),n&&(n.disabled=!1,n.textContent=this.tf("picker.updateTable","Update table"))}return}if(!this.controller.setTableQuantity(e.label,e.quantity)){n&&(n.disabled=!1,n.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())}get confirmCard(){return this.confirmCardCache||(this.confirmCardCache=new Mi({controller:this.controller,root:()=>this.root,els:()=>this.els,regions:()=>this.regions,hideTooltip:()=>{this.tipEl&&(this.tipEl.style.display="none")},tf:(e,t)=>this.tf(e,t),money:e=>this.money(e),paidPrice:(e,t,n,o)=>this.paidPrice(e,t,n,o),suppressPricing:()=>this.suppressPricing,reducedMotion:()=>this.reducedMotion(),scheduleMotion:(e,t)=>this.scheduleMotion(e,t),canOffer3d:()=>this.canOffer3d(),buyerView:()=>this.buyerView,view3dHandle:()=>this.view3dHandle,view3dCompareSeatIds:()=>this.view3dCompareSeatIds,rememberView3dReturnSeat:e=>{this.view3dReturnSeat=e},enter3d:e=>{this.enter3d(e)},performanceGroup:()=>this.performanceGroup,seatViewEnabled:()=>this.seatViewEnabled(),openSeatView:e=>{this.openSeatView(e)},openSeatConfidencePassport:(e,t)=>this.openSeatConfidencePassport(e,t),saveView3dComparisonSeat:e=>this.saveView3dComparisonSeat(e),resolveAssetUrl:e=>this.buyerAssetUrls.resolve(e),onError:e=>this.opts.onError?.(e),liftToastOverConfirm:()=>this.liftToastOverConfirm(),fitTranslatedRows:()=>this.fitTranslatedRows(),syncTray:()=>this.syncTray(),syncSelectionTo3d:()=>this.syncSelectionTo3d(),collapseSectionCard:()=>this.collapseSectionCard(),applyPanelCollapsed:()=>this.applyPanelCollapsed(),dismiss:()=>this.dismissConfirm(),reanchor:()=>this.reanchorConfirm(),inviteCommit:(e,t)=>this.inviteCommit(e,t),addSeatLabel:e=>this.addSeatLabel(e)})),this.confirmCardCache}showConfirm(e,t="add"){this.confirmCard.show(e,t)}reanchorConfirm(){this.confirmCard.reanchor()}dismissConfirm(){this.confirmCard.dismiss()}async commitConfirm(){await this.confirmCard.commit()}cancelConfirm(){this.confirmCard.cancel()}closeConfirm(){this.dismissConfirm()}inviteCommit(e,t){rr(e,t,this.reducedMotion())}addSeatLabel(e){return ar(e,(t,n)=>this.tf(t,n))}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,n=this.controller.doc,o=this.controller.getActiveFloorId(),s=e.focalPoint??n?.floors?.find(d=>d.id===o)?.focalPoint??n?.focalPoint??{x:0,y:0},r,a,l=!1;if(e.viewUrl){let d,u=null;try{let f=e.viewMeta?.previewUrl;f&&f!==e.viewUrl?(u=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&&!u||!this.root||!this.seatViewEnabled())return;let p={url:d,...u?{previewUrl:u}:{},...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}:{}};r=p,a=Pp(p),l=Ap(p)}else{let d;try{let{generateSeatPanorama:u}=await Jt();d=u(e,s,this.allSeats())}catch(u){t===this.seatViewGen&&this.opts.onError?.(u);return}if(t!==this.seatViewGen||!this.root||!this.seatViewEnabled())return;r={url:d.url,generated:!0},a=N("picker.illustrationCaption",{m:d.distanceM})}this.closeSeatView(!1);let c=N("picker.viewFromSeat",{label:e.label}),h=mi({root:this.root,source:r,caption:a,real:l,closeLabel:this.tf("picker.close","Close"),dragHint:Be(),viewFromSeatLabel:c,real360Label:N("picker.real360"),previewLabel:N("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 n=Number.isInteger(e);return Tp(e,this.currency,{locale:this.opts.locale,fallback:(o,s)=>`${o} ${s}`,...n?{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(),n=Ls(e,t);if(n==null)return;let o=6*36e5,s=Math.min(Math.max(n-t+1e3,1e3),o);this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},s)}offerReadIsCurrent(){return!!this.offerReadInFlight||Date.now()-this.offerReadSettledAt<Hp}scheduleOfferRefresh(e){!this.api.availability||this.destroyed||this.offerReadIsCurrent()||(this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerRefreshTimer=setTimeout(()=>{this.offerRefreshTimer=null,this.refreshOfferAvailability(e)},e?180:0))}refreshOfferAvailability(e){if(!this.api.availability||this.destroyed)return Promise.resolve();if(this.offerReadInFlight)return this.offerReadInFlight;if(this.offerReadIsCurrent())return Promise.resolve();let t=this.readOfferAvailability(e).finally(()=>{this.offerReadInFlight===t&&(this.offerReadInFlight=null)});return this.offerReadInFlight=t,t}async readOfferAvailability(e){if(!(!this.api.availability||this.destroyed))try{let t=await this.api.availability(this.opts.event,e);if(this.destroyed)return;this.offerReadSettledAt=Date.now();let n=yn(t);if(!n)return;this.offerAvailability=n,this.applyChannelPricing(n.channelPricing),this.scheduleOfferBoundary(n);let o=vn(n),s={...this.hostPricing?.prices??{},...o},r=Object.keys(s).length>0||this.hostPricing?.formatter?{prices:s,...this.hostPricing?.formatter?{formatter:this.hostPricing.formatter}:{}}:void 0;this.setPricing(r),this.syncOffer(),this.opts.onOfferAvailabilityChange?.(n)}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;if(this.suppressPricing){e.classList.remove("has"),e.replaceChildren();return}let t=this.offerAvailability,n=t?.release??null,o=n?null:t?.upcoming??null;if(!t||t.state==="closed"||t.state==="sold-out"||!n&&!o){e.classList.remove("has"),e.replaceChildren();return}let s=n??o,r=document.createElement("div");r.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=n?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=s.name||(n?this.tf("picker.currentOffer","Current offer"):this.tf("picker.scheduledOffer","Scheduled offer"));let h=document.createElement("span");h.className="sl-offer-line";let d=[];n&&t.fromPrice!=null&&d.push(this.money(t.fromPrice/100)),n&&s.remaining!=null&&d.push(N("picker.offerRemainingAvailable",{count:s.remaining})),n&&s.endsAt!=null&&d.push(N("picker.offerUntil",{time:ti(s.endsAt,this.eventTimezone,this.opts.locale)})),o?.startsAt!=null&&d.push(N("picker.offerStarts",{time:ti(o.startsAt,this.eventTimezone,this.opts.locale)})),h.textContent=d.join(" \xB7 "),a.append(l,c,h);let u=document.createElement("details");u.className="sl-offer-info";let p=document.createElement("summary");p.setAttribute("aria-label",N("picker.howOfferWorks",{name:c.textContent??""})),p.textContent="i";let f=document.createElement("div");f.className="sl-offer-detail",f.textContent=n?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."),u.append(p,f),r.append(a,u),e.replaceChildren(r),e.classList.add("has")}paidPrice(e,t,n,o){let s=o?this.channelByObject.get(o):void 0;if(s&&e){let a=this.pricesByChannel.get(s)?.find(l=>l.categoryKey===e&&l.tierId===(t??null));if(a)return a.price}let r=e?this.opts.pricing?.prices?.[e]:void 0;return r===void 0?n:typeof r=="number"?r:t&&r.tiers?.[t]!==void 0?r.tiers[t]:r.base??n}legendDeps(){return Sa(this)}syncPriceRail(e,t,n=this.legendDeps()){ka(this,e,t,n)}syncPrices(){Ta(this)}focusCategory(e){Ea(this,e)}evictTakenSelections(){let e=new Set([...this.controller.currentHold()?.labels??[],...this.holdingLabels]),t=this.controller.getSelection().filter(n=>!e.has(n.label)&&(this.controller.getStatus(n.id)??"free")!=="free");t.length&&(this.controller.deselect(t.map(n=>n.id)),this.toast(N("picker.seatJustTakenByAnother",{label:t[0].label}),"error"))}syncTray(){if(!this.els.tray)return;this.updateSelectionCapacity();let{seats:e,gaAreas:t,heldItems:n,heldLabels:o,total:s,count:r}=Ri(this),a=[],l=new Set;if(!this.salesClosed){let y=this.performanceGroup?.nightSummary?.()??[];y.length&&a.push(Vs(y,{title:this.tf("picker.group.yourSeatsByNight","Your seats by night"),empty:this.tf("picker.group.noSeatsChosenYet","No seats yet")}));let H=this.performanceGroup?.selectionModeSwitch;H&&a.push(`<button type="button" class="sl-pg-switch" data-pg-switch-mode>${I(H.label)}</button>`)}let c={salesClosed:this.salesClosed,hasPicks:e.length>0||n.length>0,hasGaAreas:t.length>0,groupMode:this.performanceGroup?this.performanceGroup.selectionMode??"same_seat":null,seated:!!this.controller.doc?.objects?.some(y=>y.type!=="gaArea"),venue3d:this.buyerView==="venue3d",whenText:this.eventWhenText?String(this.eventWhenText):void 0};a.push(qr(c)),this.els.trayHint&&(this.els.trayHint.textContent=Kr(c)),this.els.seatsInfo&&(this.els.seatsInfo.hidden=this.salesClosed);let h=!e.length&&!n.length&&!He(this.gaQty,this.hold?.items??[]);if(!this.performanceGroup&&!this.salesClosed&&!this.hold&&(h||this.bestAvailableBusy||this.bestAvailableConfirm)){let y=(this.controller.doc?.categories??[]).filter(C=>!C.notForSale),H=this.controller.getBestAvailableZones();this.baZone&&!H.some(C=>C.id===this.baZone)&&(this.baZone=""),a.push(Ur({confirming:this.bestAvailableConfirm,busy:this.bestAvailableBusy,reopened:!1,quantity:this.baQty,premium:this.baPremium,offerPremium:this.controller.hasPremiumSeats(),categories:y,zones:H,selectedCategory:this.baCat,selectedZone:this.baZone}))}let d=(y,H,C,O=1,M,P,_)=>jr({categoryLabel:_,d:y?this.controller.seatDetails(y):null,area:C==="ga"?t.find(D=>D.id===M):void 0,label:H,objectType:C,quantity:O,identity:P,performanceLabel:this.performanceGroup?.activePerformanceLabel?.(),performanceDates:this.performanceGroup?.selectedPerformanceDates?.()}),u=I,p=[];for(let y of Ko(n)){let H=y.objectType==="ga"?`held:ga:${y.objectId}:${y.tierId??""}`:`held:${y.label}`;l.add(H);let C=this.controller.doc?.categories.find(X=>X.key===y.categoryKey),O=y.tierId?C?.tiers?.find(X=>X.id===y.tierId)?.name:void 0,M=y.objectType!=="ga"?this.controller.seatByLabel(y.label):null,P=y.objectType==="table"?this.controller.tableSelection(y.label):null,_=M?this.controller.seatDetails(M.id):null,D=this.seatViewEnabled()&&!!M&&y.objectType!=="table"&&!!this.deliverableViewReference(M),B=u(this.tf("picker.heldForYou","Held for you")),se=P?.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${u(encodeURIComponent(y.label))}">${u(N("picker.guestsCountEdit",{count:y.quantity??1}))}</button>`:"",re=this.paidPrice(y.categoryKey,y.tierId,y.unitPrice,y.label)*(y.quantity??1);p.push({key:H,fresh:!this.lastTrayKeys.has(H),held:!0,seatIds:[],heldLabels:y.labels,removeAria:N("picker.removeHeldTicketLabel",{label:an(y,t)}),locateId:M?.id??null,section:_?.sectionLabel??"",rowLabel:_&&U(_)||"",seatLabel:_?.seatNumber??y.label,categoryLabel:`${C?.label??y.categoryKey}${O?` \xB7 ${O}`:""}`,categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(y.categoryKey)??C?.color??"",identityHtml:d(M?.id??null,y.label,y.objectType,y.quantity??1,y.objectId,P??void 0,`${C?.label??y.categoryKey}${O?` \xB7 ${O}`:""}`),stateHtml:`<span class="sl-ticket-state held" aria-label="${B}" title="${B}"><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>`,extrasHtml:se,amount:re,amountText:this.suppressPricing?"":this.money(re),noteHtml:Fe(M??void 0),railHtml:this.performanceGroup?"":Hn(N("picker.removeHeldTicketLabel",{label:an(y,t)}),D?y.label:null)})}let f=this.seatViewEnabled();for(let y of e.filter(H=>!o.has(H.label))){let H=`seat:${y.id}`;l.add(H);let C=this.controller.doc?.categories.find(X=>X.key===y.categoryKey),O=y.tiers&&y.tiers.length&&!this.suppressPricing?`<select class="tier" data-tier="${u(y.id)}" aria-label="${u(N("picker.ticketTierFor",{label:y.label}))}">`+y.tiers.map(X=>`<option value="${u(X.id)}"${X.id===y.tierId?" selected":""}>${u(X.name)} \xB7 ${u(this.money(this.paidPrice(y.categoryKey,X.id,X.price,y.label)))}</option>`).join("")+"</select>":"",M=y.tiers?.find(X=>X.id===y.tierId)??y.tiers?.[0],P=M?.buyerMessage?.trim()||(M?.restriction==="companion"?this.tf("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):""),_=this.controller.seatDetails(y.id),D=u(this.tf("picker.selected","Selected")),B=N("picker.removeSeatLabel",{label:y.label}),se=(y.objectType==="table"&&y.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${u(encodeURIComponent(y.label))}">${u(N("picker.guestsCountEdit",{count:y.quantity??1}))}</button>`:"")+O,re=this.paidPrice(y.categoryKey,y.tierId??null,y.price,y.label)*(y.quantity??1);p.push({key:H,fresh:!this.lastTrayKeys.has(H),held:!1,seatIds:[y.id],heldLabels:[],locateId:y.id,section:_?.sectionLabel??"",rowLabel:_&&U(_)||"",seatLabel:_?.seatNumber??y.label,categoryLabel:C?.label??y.categoryKey,identityHtml:d(y.id,y.label,y.objectType,y.quantity??1,y.objectId,y,C?.label??y.categoryKey),categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(y.categoryKey)??C?.color??"",stateHtml:`<span class="sl-ticket-state" aria-label="${D}" title="${D}"><svg viewBox="0 0 24 24"><path d="M5 12l4 4L19 6"/></svg></span>`,extrasHtml:se,amount:re,amountText:this.suppressPricing?"":this.money(re),removeAria:B,noteHtml:Fe(y)+(P?`<small class="sl-tier-note">${u(P)}</small>`:""),railHtml:Hn(B,f&&y.objectType!=="table"&&this.deliverableViewReference(this.controller.seatByLabel(y.label)??{})?y.label:null)})}p.length&&a.push(p.map(Gr).join("")),t.length&&a.push(Qo(this,t,n)),this.els.tray.innerHTML=a.join("")+(this.salesClosed?"":this.lapse.noteHtml()),this.lastTrayKeys=l,this.lapse.wire(this.els.tray),this.els.tray.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>this.performanceGroup?.selectionModeSwitch?.activate());let b=this.performanceGroup?.selectNight;b&&Xs(this.els.tray,y=>b(y)),this.els.tray.querySelectorAll("[data-ba]").forEach(y=>{y.addEventListener("click",()=>{this.baQty=Math.max(1,Math.min(this.maxTickets,this.baQty+Number(y.dataset.ba))),this.syncTray()})}),this.els.tray.querySelector("[data-ba-cat]")?.addEventListener("change",y=>{this.baCat=y.target.value}),this.els.tray.querySelector("[data-ba-zone]")?.addEventListener("change",y=>{this.baZone=y.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-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(y=>{y.addEventListener("click",()=>{let H=y.closest(".sl-chip");if(H.dataset.held){this.removeHeldLabels(decodeURIComponent(H.dataset.held).split(`
2877
+ `),H);return}let C=H.dataset.seat.split(" "),O=()=>{this.controller.deselect(C)};if(this.reducedMotion()){O();return}H.classList.remove("sl-enter"),H.classList.add("sl-leave","sl-mo-collapse"),this.scheduleMotion(O,q.collapse)})}),this.els.tray.querySelectorAll("[data-table-edit]").forEach(y=>{y.addEventListener("click",H=>{H.stopPropagation();let C=decodeURIComponent(y.dataset.tableEdit??""),O=this.controller.tableSelection(C);if(!O)return;let M=n.find(P=>P.label===C&&P.objectType==="table");this.showTableDialog({...O,quantity:M?.quantity??O.quantity},!!M,y)})}),this.els.tray.querySelectorAll(".sl-chip .tier").forEach(y=>{y.addEventListener("change",()=>this.controller.setSeatTier(y.dataset.tier,y.value||null))}),this.els.tray.querySelectorAll(".sl-chip .view[data-view-label]").forEach(y=>{y.addEventListener("click",()=>{let H=this.controller.seatByLabel(y.dataset.viewLabel);H&&this.openSeatView(H)})}),this.els.tray.querySelectorAll(".sl-chip[data-locate]").forEach(y=>{let H=()=>this.controller.flashSeat(y.dataset.locate,this.cssVar("--sl-accent")||"#f4b740");y.addEventListener("mouseenter",H),y.addEventListener("focusin",H)}),Jo(this,this.els.tray,t),this.controller.setGASelection(Go(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(y=>{y.disabled=!0});let k=this.pendingSelectionCount(),S=this.lastTrayCount,v=this.lastTrayTotal,A=Ys(this.performanceGroup?.groupSelectionSummary?.(),this.performanceGroup?.selectionMode??"same_seat");this.els.count.textContent=A||(r?ji("picker.ticketsCount",r):this.tf("picker.noSeatsSelected","No seats selected")),this.els.total.textContent=r&&!this.suppressPricing?this.money(s):"",this.root?.setAttribute("data-has-selection",String(r>0)),this.root?.setAttribute("data-ba-active",String(this.bestAvailableConfirm||this.bestAvailableBusy)),this.els.seatSummary&&(this.els.seatSummary.textContent=A||(r?ji("picker.seatsSelectedCount",r):"")),this.syncCta(r,k),r!==S&&this.animateOnce(this.els.count,"sl-value-pop",380),s!==v&&this.animateOnce(this.els.total,"sl-value-pop",380),S===0&&r>0&&(this.animateOnce(this.els.cta,"sl-ready",520),this.sideCollapsed&&this.root?.dataset.layout!=="narrow"&&this.setPanelCollapsed(!1)),this.lastTrayCount=r,this.lastTrayTotal=s,this.opts.onSelectionChange?.(e),this.emitSelectionValidity(r,e),this.scheduleFit()}scheduleFit(){if(this.fitScheduled||this.destroyed)return;this.fitScheduled=!0;let e=()=>{this.fitScheduled=!1,this.destroyed||this.fitTranslatedRows()};typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()}fitTranslatedRows(){ks(this.confirmEl?.querySelector(".sl-confirm-row")),this.els.tray?.querySelectorAll(".sl-chip-pos").forEach(Ts),this.els.tray?.querySelectorAll(".sl-ba-go").forEach(Es)}emitSelectionValidity(e,t){let n=this.controller.getSelectionValidity(e);n&&(n.seats=t,this.opts.onSelectionValidityChange?.(n),n.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(t):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(n),this.lastSelectionValidity=n.isValid)}async removeHeldLabels(e,t){let n=e.filter(r=>r&&!this.releasingLabels.has(r));if(!n.length)return!1;let o=n[0];n.forEach(r=>this.releasingLabels.add(r)),t?.setAttribute("aria-busy","true");let s=t?.querySelector(".rm");s&&(s.disabled=!0);try{let r=this.handedOff;if(!await this.controller.releaseLabels(n))return this.toast(N("picker.couldNotRemoveLabel",{label:o}),"error"),!1;Wo(this.gaQty,this.hold?.items??[],n);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&&r,this.bookedShown=!1,this.ctaPhase="idle",this.hold?this.startHoldTimer(this.hold.expiresAt):(this.stopHoldTimer(),this.forgetHold()),this.syncTray(),this.emitHoldChange(),!0}finally{n.forEach(r=>this.releasingLabels.delete(r)),t?.removeAttribute("aria-busy"),s?.isConnected&&(s.disabled=!1)}}async handleCta(){if(this.salesClosed)return;let e=this.controller.getSelectionValidity(this.totalTicketCount());if(e&&!e.isValid){this.toast(Ni(e,(n,o)=>this.tf(n,o)),"warning");return}if(this.totalTicketCount()>this.maxTickets){this.toast(N("picker.removeTicketsUntilOrFewer",{count:this.maxTickets}),"warning");return}let t=this.committedSelection();if(this.hold&&!t.some(n=>!(this.hold.items??[]).some(o=>o.label===n.label))){let n=this.hold.seats??t;this.handedOff=!0,this.holdConflicted=!1,await this.runCheckoutHandoff(this.hold,n);return}this.holdingLabels=new Set(t.map(n=>n.label)),this.setCtaPhase("holding");try{let n=null,o=jo(this.gaQty),s=this.committedSelection();if(s.length){let r=await this.controller.hold(void 0,this.opts.holdTtlMs);n=r?{holdId:r.holdId,expiresAt:r.expiresAt,seats:r.seats,items:r.items}:null}for(let{areaId:r,tierId:a,qty:l}of o){let c=await this.controller.holdGA(r,l,{tierId:a,ttlMs:this.opts.holdTtlMs});n=c?{holdId:c.holdId,expiresAt:c.expiresAt,seats:c.seats,items:c.items}:n}if(!n){this.raiseHoldConflict(this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.")),this.setCtaPhase("idle"),this.syncTray();return}this.hold=n,this.holdConflicted=!1,this.handedOff=!this.performanceGroup,this.startHoldTimer(n.expiresAt),this.flashHeldSeats(n),this.emitHoldChange(),this.performanceGroup?this.setCtaPhase("idle"):await this.runCheckoutHandoff(n,n.seats??s)}catch(n){this.opts.onError?.(n);let o=n,s=(o.conflicts??[]).map(a=>a.label).filter(Boolean).slice(0,3);o.reason==="event_closed"&&this.setSalesClosed(!0);let r=o.reason==="event_closed"?this.tf("picker.seatSalesClosedForEvent","Seat sales have closed for this event."):o.reason==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):o.reason==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):s.length?s.length===1?N("picker.labelsNoLongerAvailable.one",{labels:s.join(", ")}):N("picker.labelsNoLongerAvailable.other",{labels:s.join(", ")}):this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.");this.raiseHoldConflict(r),this.setCtaPhase("idle")}finally{this.holdingLabels.clear(),this.ctaPhase==="holding"&&(this.ctaPhase="idle"),this.syncTray()}}startHoldTimer(e){da(this,e)}stopHoldTimer(){pa(this)}setExtendPrompt(e,t){ha(this,e,t)}refreshExtendPrompt(){ua(this)}handleExtend(){return ma(this)}detectBooked(){this.bookedShown||!this.handedOff||!this.hold||this.controller.currentHold()===null&&(this.holdConflicted||this.showBooked())}raiseHoldConflict(e){this.holdConflicted=!0,this.bookedShown&&(this.bookedShown=!1,this.bookedEl?.classList.remove("on")),this.toast(e,"error")}showBooked(){if(this.bookedShown||!this.hold||this.holdConflicted)return;this.bookedShown=!0;let e=this.buildHandoff(this.hold);this.stopHoldTimer(),this.forgetHold();let t=e.lineItems.reduce((o,s)=>o+s.quantity,0),n=this.performanceGroup?.groupSelectionSummary?.();this.els.bookedSub&&(this.els.bookedSub.innerHTML=n?.seats?`<span class="sl-booked-seats">${ji("picker.group.ticketsConfirmedAcross",n.seats,{performances:n.performances})}</span>`:`<span class="sl-booked-seats">${ji("picker.ticketsCount",t)}</span> ${this.tf("picker.confirmedAndOnWay","confirmed. A confirmation is on its way.")}`),this.els.bookedList&&(this.els.bookedList.innerHTML=e.lineItems.map(o=>{let r=[o.sectionLabel,o.rowLabel&&`${this.tf("picker.row","Row")} ${o.rowLabel}`,o.seatNumber&&`${this.tf("picker.seat","Seat")} ${o.seatNumber}`].filter(Boolean).join(" \xB7 ")||o.displayLabel||o.label,a=o.quantity>1?` <span class="sl-booked-qty">\xD7${o.quantity}</span>`:"";return`<li>${I(r)}${a}</li>`}).join(""),this.els.bookedList.hidden=e.lineItems.length===0),this.bookedEl?.classList.add("on"),requestAnimationFrame(()=>this.bookedEl?.querySelector(".sl-booked-back")?.focus()),this.opts.onBooked?.(e)}dismissBooked(){this.bookedEl?.classList.remove("on"),this.resetAfterBooking(),this.root?.focus({preventScroll:!0})}resetAfterBooking(){this.bookedShown=!1,this.hold=null,this.handedOff=!1,this.holdConflicted=!1,this.holdingLabels.clear(),this.gaQty.clear(),this.stopHoldTimer(),this.forgetHold(),this.clearSelection(),this.setCtaPhase("idle"),this.setSheetOpen(!1),this.syncTray(),this.syncCta(),this.emitHoldChange()}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()}async checkoutHandoff(e,t){if(this.checkoutMode==="hosted"){await this.startHostedCheckout(e,t);return}await this.opts.onCheckout?.(e,t,this.buildHandoff(e))}async startHostedCheckout(e,t){let n=this.buildHandoff(e),o=null;try{o=await(this.paymentOptions??=this.pubApi.paymentOptions(this.opts.event))}catch(r){this.opts.onError?.(r)}if(this.destroyed)return;let s=o?.providers?.[0];if(!s){let r=po(o?.reason),a=!!this.opts.onCheckoutUnavailable||!!this.opts.onCheckout;this.opts.onCheckoutUnavailable?.({reason:r,handoff:n}),this.opts.onCheckout?.(e,t,n),a||this.openCheckoutPanel({kind:"unavailable",reason:r,seatCount:n.lineItems.reduce((l,c)=>l+c.quantity,0)});return}await this.openCheckoutPanel({kind:"pay",provider:s,order:{holdId:n.holdId,expiresAt:n.expiresAt,currency:n.currency,total:n.total,labels:n.lineItems.map(r=>r.displayLabel??r.label)}})}async openCheckoutPanel(e){let t;try{({mountCheckout:t}=await ei())}catch(n){this.opts.onError?.(n),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:n=>this.money(n),startSession:n=>this.pubApi.startCheckout(this.opts.event,{...n,...this.opts.returnUrl?{returnUrl:this.opts.returnUrl}:{}}),orderStatus:n=>this.pubApi.orderStatus(n),onCancel:()=>{this.checkoutPanel=null,this.hold||this.setCtaPhase("idle")},onConfirmed:n=>{this.opts.onOrderConfirmed?.(n),this.controller.refresh()},onError:n=>this.opts.onError?.(n)}))}closeCheckoutPanel(){this.checkoutPanel?.destroy(),this.checkoutPanel=null}buildHandoff(e){let n=(e.items??[]).map(r=>{let a=this.controller.lineItemDisplay(r);return{label:r.label,...a.displayLabel?{displayLabel:a.displayLabel}:{},...a.displayType?{displayType:a.displayType}:{},objectId:r.objectId,objectType:r.objectType,categoryKey:r.categoryKey,tierId:r.tierId,unitPrice:this.paidPrice(r.categoryKey,r.tierId,r.unitPrice,r.label),currency:r.currency??this.currency,quantity:r.quantity??1}}),o=n[0]?.currency??this.currency,s=n.reduce((r,a)=>r+a.unitPrice*a.quantity,0);return{holdId:e.holdId,expiresAt:e.expiresAt,currency:o,lineItems:n,total:s}}emitHoldChange(){let e=this.hold;this.scheduleOfferRefresh(!0),this.opts.onHoldChange?.(e,e?.seats??[],e?this.buildHandoff(e):null)}toast(e,t="neutral",n){let o=this.els.toast;if(!o)return;o.replaceChildren();let s=document.createElement("span");if(s.textContent=e,o.appendChild(s),o.classList.toggle("has-action",!!n),n){let r=document.createElement("button");r.type="button",r.className="sl-toast-action",r.textContent=n.label,r.addEventListener("click",n.onClick,{once:!0}),o.appendChild(r)}o.dataset.tone=t,o.classList.add("on","sl-mo-rise"),this.liftToastOverConfirmSoon(),this.toastTimer&&clearTimeout(this.toastTimer),this.toastTimer=setTimeout(()=>{o.classList.remove("on","sl-mo-rise"),o.classList.remove("has-action"),o.dataset.tone="neutral",this.liftToastOverConfirm()},4200)}liftToastOverConfirm(){let e=this.regions["bottom-center"];if(!e)return;let t=this.els.toast?.classList.contains("on")||this.extendEl?.classList.contains("on"),n=this.confirmEl;if(!t||!n?.isConnected){e.style.removeProperty("bottom");return}let o=this.els.map.clientHeight;if(o<=0)return;let s=n.getBoundingClientRect(),r=s.height||n.offsetHeight||Op,a=s.height?s.top-this.els.map.getBoundingClientRect().top:o-kn-r,l=Math.round(o-a+Rp);if(l+Ip>o){e.style.removeProperty("bottom");return}e.style.bottom=`${l}px`}liftToastOverConfirmSoon(){this.liftToastOverConfirm(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{this.destroyed||this.liftToastOverConfirm()})}dismissSkeleton(){hr({boot:this.els.boot,map:this.els.map,rail:this.els.rail,root:this.root,reducedMotion:this.reducedMotion()})}placeTooltip(){if(!this.tipEl)return;let e={width:this.els.map.clientWidth,height:this.els.map.clientHeight},t={width:this.tipEl.offsetWidth,height:this.tipEl.offsetHeight},n=this.tipPinned?Js(this.tipPos,e,t):null,o=n??Qs(this.tipPos,e.width,e.height,t);this.tipEl.style.left=`${o.left}px`,this.tipEl.style.top=`${o.top}px`,n?this.tipEl.dataset.placement=n.placement:delete this.tipEl.dataset.placement}nightStripFor(e,t){let n=this.performanceGroup,o=xn(e.mark,n?.nights?.()),s=o?.states.filter(r=>r.free).length??0;return Fs(o,{locale:this.opts.locale,switchLabel:n?.selectionModeSwitch?.label??null,selectPartialLabel:n?.partialSeatSelection?.label(s)??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()}closeInfoPops(e){this.root?.querySelectorAll(".sl-info.open").forEach(t=>{t!==e&&(t.classList.remove("open"),t.querySelector("[data-sl-info]")?.setAttribute("aria-expanded","false"))})}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;if(e.interaction!=="press"&&this.lastPointerType==="mouse"&&!e.mark&&!this.tipPinned){this.tipEl.style.display="none",this.tipMarkedHoverLabel=null;return}if(e.unavailable&&e.status==="free"&&e.interaction==="press"){this.toast(this.tf("picker.turnOffAccessibilityFilter","Turn off the wheelchair filter to pick this seat"),"neutral"),this.tipEl.style.display="none";return}if(e.unavailable&&!e.mark){this.tipEl.style.display="none",this.tipMarkedHoverLabel=null;return}let n=e.mark?.kind==="partial"&&(e.interaction==="press"||this.lastPointerType!=="mouse"||t);this.tipMarkedHoverLabel=e.mark?.kind==="partial"?e.label:null;let o=this.nightStripFor(e,n);this.tipEl.style.setProperty("--sl-cat",e.categoryColor),this.tipEl.innerHTML=Zs(e,{price:this.suppressPricing?"":this.money(this.paidPrice(e.categoryKey,e.tierId??null,e.price,e.label)),priceNote:this.suppressPricing?this.performanceGroup?.surface==="season"?this.tf("picker.season.includedInPackage","Included in the Season package"):this.tf("picker.group.pricesPerPerformance","Prices shown per performance"):"",rowTypeWord:Ge(e),extra:o+(n?`<button type="button" class="sl-tip-close" data-pg-tip-close aria-label="${I(this.tf("picker.group.closeSeatDetails","Close seat details"))}">\xD7</button>`:"")}),this.tipPinned=n,this.tipEl.classList.toggle("sl-tip-pinned",n),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()}),ir(this.tipEl,this.performanceGroup?.partialSeatSelection?.label,s=>{this.unpinTooltip(),this.performanceGroup?.partialSeatSelection?.activate(e.id,s)}),this.tipEl.style.display="block",this.placeTooltip()}syncSeatMarks(){let e=this.performanceGroup?.seatMarks,t=this.controller.getRenderer();if(!e||!t?.setSeatMarks)return;let n={};for(let[o,s]of Object.entries(e())){let r=this.controller.idForLabel(o);r&&(n[r]=s)}Object.keys(n).length&&t.setSeatMarks(n)}getSelection(){return this.committedSelection()}selectObjects(e){return this.controller.select(e)}selectObjectsWithoutConfirmation(e){let t=new Set(e),n=this.controller.getSelection().filter(o=>t.has(o.id)||t.has(o.label));if(n.length===t.size)return n;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)}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(),this.minimap?.refreshMinimap())}applyThemeTokens(e){let t=Kt(this.themeMode),n=nt(this.controller.doc?.theme,this.opts.theme,t);for(let[o,s]of Object.entries(n))e.style.setProperty(o,s);t?e.dataset.theme=t:delete e.dataset.theme,this.applyMapChromeTokens()}watchThemeMode(){this.colorSchemeStop?.(),this.colorSchemeStop=null,this.themeMode==="auto"&&(this.colorSchemeStop=Wt(()=>{this.destroyed||this.repaintForThemeMode()}))}repaintForThemeMode(){this.root&&(this.applyThemeTokens(this.root),this.controller.setMapTheme(it(this.opts.theme,this.themeMode)),this.applyMapChromeTokens(),this.minimap?.refreshMinimap(),this.syncPrices())}setThemeMode(e){this.destroyed||e===this.themeMode||(this.themeMode=e,this.opts.theme={...this.opts.theme??{},...e?{mode:e}:{mode:void 0}},this.watchThemeMode(),this.repaintForThemeMode(),this.emitAnalytics("theme_mode_changed",{mode:e,resolved:Kt(e)??null}))}getThemeMode(){return this.themeMode}applyMapChromeTokens(){let e=this.els.map?.parentElement;if(!e||!this.root)return;let t=Kt(this.themeMode),n=nt(this.controller.doc?.theme,this.opts.theme,t),o=it(this.opts.theme,this.themeMode)?.background??this.controller.doc?.theme?.background??void 0,s=no(n,o);for(let r of io)s?e.style.setProperty(r,s[r]):e.style.removeProperty(r)}setEventDetailsHidden(e){this.eventDetailsHidden=e,this.syncFullscreenButtons()}setPricing(e){let t=JSON.stringify(this.opts.pricing??null),n=JSON.stringify(e??null);t!==n&&(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){this.langSel=Do(e,{languages:this.opts.languages,label:this.tf("picker.preferredTicketType","Language"),onChange:t=>{this.setLocale(t)}})}async setLocale(e){let t=Va(),n=this.localeGeneration+=1,o=await Ep(e);return this.opts.messages&&Cp(this.opts.messages),o===t||this.applyActiveLocale(o,n),o}applyActiveLocale(e,t){t===this.localeGeneration&&this.root&&(No(e,{root:this.root,painters:[()=>this.syncTray(),()=>this.syncPrices(),()=>this.syncOffer(),()=>this.syncRung(),()=>this.syncFloors(),()=>this.syncPanelToggle(),()=>this.syncFullscreenButtons()],refreshMapCopy:()=>this.controller.refreshMapCopy(),languageSelect:this.langSel}),this.scheduleFit())}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(),this.minimap?.refreshMinimap(),Dp(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"}emitAnalytics(e,t){try{this.opts.onAnalytics?.(e,t??{})}catch{}}emit3dAnalytics(e,t){this.emitAnalytics(e,t)}getBuyerView(){return Cr(this)}setBuyerView(e,t){Ar(this,e,t)}seatState3dFor(e){return Pr(this,e)}pushAvailabilityTo3d(){Lr(this)}syncSelectionTo3d(){Mr(this)}seatViewFor3d(e){return Hr(this,e)}onView3dSeatPick(e){Rr(this,e)}seatViewCaption(e){return Ir(this,e)}saveView3dComparisonSeat(e){Or(this,e)}clearView3dComparison(){_r(this)}view3dComparisonSnapshot(e){return Dr(this,e)}enter3d(e){return Nr(this,e)}publish3dTopInset(){Br(this)}exit3d(){Vr(this)}openSeatConfidencePassport(e,t=null){Mn(this,e,t)}closeSeatConfidencePassport(e=!0){Bt(this,e)}openView3dComparison(){Sr(this)}closeView3dComparison(e=!0){Ue(this,e)}getCurrentHold(){return this.hold}async resumeHold(e){return this.resumeHoldFromServer(e)}async removeHeldTicket(e){return this.removeHeldLabels([e])}async bestAvailable(e,t,n={}){if(this.salesClosed||this.bestAvailableBusy)return null;e=Math.max(1,Math.min(this.maxTickets,Math.floor(e)));try{return await this.bestAvailableOrThrow(e,t,n)}catch(o){this.opts.onError?.(o);let s=o?.reason,r=s==="not_enough_together"?N("picker.couldNotFindSeatsTogether",{count:e}):s==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):s==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):s==="sold_out"?this.tf("picker.ticketTypeSoldOut","That ticket type is sold out. Try another ticket type."):s==="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(r,"error"),null}}async bestAvailableOrThrow(e,t,n={}){if(this.salesClosed)throw new Error("seatlayer: seat sales are closed");if(this.bestAvailableBusy)throw new Error("seatlayer: Best Available is already in progress");if(!Number.isInteger(e)||e<1)throw new Error("seatlayer: Best Available quantity must be a positive integer");this.confirmSeat&&this.cancelConfirm(),this.bestAvailableConfirm=!1,this.bestAvailableBusy=!0;let o=this.els.tray?.querySelector(".sl-ba-go");o&&(o.disabled=!0,o.classList.add("sl-busy"),o.innerHTML=`<span class="sl-ba-spin" aria-hidden="true"></span>${this.tf("picker.findingEllipsis","Finding\u2026")}`);try{let s=await this.controller.bestAvailable(e,t,{...n,ttlMs:this.opts.holdTtlMs});return s?(this.hold={holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items},this.handedOff=!1,this.bookedShown=!1,this.gaQty.clear(),this.startHoldTimer(s.expiresAt),this.flashHeldSeats(this.hold),this.syncTray(),this.emitHoldChange(),n.preferPremium&&s.seats.length&&!s.seats.every(r=>r.commercial?.premium)&&this.toast(N("picker.premiumFallbackNote",{count:e}),"neutral"),this.hold):null}finally{this.bestAvailableBusy=!1,this.syncTray()}}async release(){let e=this.hold,t=this.controller.currentHold(),n=!0;if(t)n=await this.controller.release();else if(e){let o=[...new Set([...(e.items??[]).map(s=>s.label),...(e.seats??[]).map(s=>s.label)])];if(o.length)try{await this.api.release(this.opts.event,o,e.holdId)}catch(s){this.opts.onError?.(s),n=!1}}if(!n){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 xe({url:this.pubApi.subscribeUrl(e),mintTicket:()=>this.pubApi.subscribeTicket(e),onAccessUnavailable:t=>{this.opts.onAccessUnavailable?.(t),this.showAccessPanel(t)},sink:Et(this.controller,{flashOnLiveChange:!0,ownLabels:()=>this.holdingLabels,onStatusChange:()=>{this.syncPrices(),this.scheduleOfferRefresh(!0),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onSelectedObjectUnavailable:(t,n)=>{this.opts.onSelectedObjectUnavailable?.({labels:t,reason:n}),this.syncTray(),this.toast(n==="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)}clearDecisionSurfaces(){this.dismissConfirm(),this.dismissTableDialog(!1),ge(this,!1)}showAccessPanel(e){if(this.destroyed||!this.root)return;this.dismissAccessPanel(),this.clearDecisionSurfaces();let t=Lo(e.reason,()=>this.recoverAccess());(this.root.querySelector(".sl-body")??this.root).appendChild(t),this.accessEl=t}async recoverAccess(){return await this.refreshAccess()?!0:(this.opts.onAccessUnavailable||typeof window>"u"||window.location.reload(),!1)}dismissAccessPanel(){this.accessEl?.remove(),this.accessEl=null}showHoldExpired(){if(this.destroyed||!this.root||this.holdExpiredEl)return;this.clearDecisionSurfaces();let e=Ha({restart:()=>this.restartAfterHoldExpiry()},this.holdExpiredUnits);this.root.appendChild(e),this.holdExpiredEl=e,requestAnimationFrame(()=>e.querySelector(".sl-interrupt-act")?.focus());let t=this.holdExpiredUnits;this.holdExpiredFresh=!1,this.refreshAvailability().then(()=>{if(this.destroyed||this.holdExpiredEl!==e)return;this.holdExpiredFresh=!0;let n=t.filter(r=>r.objectType!=="ga"),o=[],s=[];for(let r of n){let a=this.controller.seatByLabel(r.label);(a&&this.controller.getStatus(a.id)==="free"?o:s).push(r.label)}Ma(e,{recoverable:o,taken:s,onRecover:r=>this.recoverAfterHoldExpiry(r)})}).catch(()=>{})}recoverAfterHoldExpiry(e){this.holdExpiredUnits=[],this.dismissHoldExpired(),this.lapse.clear(),this.clearSelection(),this.controller.select(e),this.syncTray(),this.handleCta()}dismissHoldExpired(){this.holdExpiredEl?.remove(),this.holdExpiredEl=null}restartAfterHoldExpiry(){let e=this.holdExpiredUnits;this.holdExpiredUnits=[],this.dismissHoldExpired(),this.lapse.clear(),this.clearSelection(),this.controller.overview(),this.syncTray(),this.syncCta(),this.root?.focus({preventScroll:!0});let t=this.holdExpiredFresh;this.holdExpiredFresh=!1,(t?Promise.resolve():this.refreshAvailability()).then(()=>{this.destroyed||La({reducedMotion:this.reducedMotion(),accent:this.cssVar("--sl-accent")||"#f4b740",seatByLabel:n=>this.controller.seatByLabel(n),statusOf:n=>this.controller.getStatus(n),flash:(n,o)=>this.controller.flashSeat(n,o)},e)}).catch(()=>{})}destroy(){this.destroyed=!0,An(this),this.colorSchemeStop?.(),this.colorSchemeStop=null,this.realtime?.stop(),this.realtime=null,this.dismissAccessPanel(),this.dismissHoldExpired(),this.access?.clear(),this.hold&&!this.handedOff&&this.controller.release(),this.closeConfirm(),this.dismissTableDialog(!1),ge(this,!1),this.closeSeatView(),this.closeCheckoutPanel(),this.exit3d(),this.buyerAssetUrls.dispose(),this.stopHoldTimer(),this.detachAttention?.(),this.toastTimer&&clearTimeout(this.toastTimer),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.viewportResizeHandler&&window.removeEventListener("resize",this.viewportResizeHandler),this.viewportResizeHandler=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)}};import{formatMoney as Wp,loadLocale as Yp,setStringOverrides as Xp,t as Zp}from"@seatlayer/core";var ja="seatlayer-performance-group-picker-style";function Ga(){if(document.getElementById(ja))return;let i=document.createElement("style");i.id=ja,i.textContent=`
2803
2878
  .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)}
2804
2879
  .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)}
2805
2880
  .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}
@@ -2859,7 +2934,7 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2859
2934
  @media(min-width:900px){.sl-pg-legend-list{justify-content:flex-start}}
2860
2935
  .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}
2861
2936
  @media(max-width:640px){.sl-pg-head{padding:13px 14px}.sl-pg-head h2{font-size:18px}.sl-pg-inner{min-height:590px}}
2862
- `,document.head.appendChild(i)}var Fp="https://api.seatlayer.io",Vp=6e4,$p=2e3,zp=1e3,jp=36e5,Gp=5e3,Up=5e3,qp=15e3,Kp=12e4,Wp=new Set(["preparing","commit_pending","abort_pending","expire_pending"]),W=class extends Error{constructor(){super("performance_group_destroyed"),this.name="PerformanceGroupDestroyedError"}};function Yp(i){return new Promise(e=>setTimeout(e,i))}function $n(i){let e=Number(i.headers.get("Retry-After")??"1");return Number.isFinite(e)?Math.max(50,Math.min(Gp,e*1e3)):1e3}function gt(i,e){return`/pub/performance-groups/${encodeURIComponent(i)}/operations/${encodeURIComponent(e)}`}function zt(i){return i.replace(/^pghop_/,"").replace(/-/g,"").slice(-8).toUpperCase()}var zn=class{constructor(e,t,n){this.api=e;this.sink=t;this.intervalMs=n;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(r=>this.prior.get(r)!==t.get(r)).map(r=>({label:r,status:t.get(r)??"blocked"}));this.prior=t,s.length&&this.sink.applyStatuses(s),this.sink.onSections?.(e.hidden??[],e.closed??[])}catch(e){if(e instanceof W){this.stop();return}this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},Ui=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??Fp).replace(/\/+$/,""),this.access=t.access,this.fetcher=t.fetch??globalThis.fetch.bind(globalThis),this.recoveryTimeoutMs=t.recoveryTimeoutMs??Vp,this.realtimePollMs=Math.max(500,t.realtimePollMs??$p),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 n=this.readOperationRecord();n&&this.storedIsUndecided(n)&&(this.pendingOperationId=n.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(s=>{throw this.chartRequest=null,s});let[t,n]=await Promise.all([this.descriptorCache?Promise.resolve(this.descriptorCache):this.descriptor(),this.chartRequest]);return{doc:n,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 $(404,"not_found","not_found"))}async objects(e){let t=this.descriptorCache?.inclusionMode==="flexible_dates",n=`/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(n,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 $(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 s=this.objectsCache;if(this.selectionMode==="same_seat"){let o=s.performances.filter(p=>this.includedEventKeys.has(p.eventKey));if(!o.length)throw new $(409,"group_selection_incomplete","group_selection_incomplete");let a=Object.keys(o[0]?.seats??{}),l=Object.fromEntries(a.map(p=>[p,o.every(u=>u.seats[p]==="free")?"free":"blocked"])),c=Object.fromEntries(a.flatMap(p=>{let u=o.filter(h=>h.seats[p]!=="free").map(h=>h.eventKey);return u.length>0&&u.length<o.length?[[p,u]]:[]})),d={seats:l,partial:c,hidden:[...new Set(o.flatMap(p=>p.hidden??[]))],closed:[...new Set(o.flatMap(p=>p.closed??[]))],revision:s.revision,state:s.state,salesClosed:o.some(p=>p.salesClosed)};return this.noteAvailability(s,d.salesClosed,d),d}let r=s.performances.find(o=>o.eventKey===this.activePerformanceKey);if(!r)throw new $(409,"group_performance_unavailable","group_performance_unavailable");return this.noteAvailability(s,s.salesClosed||s.performances.some(o=>o.salesClosed),r),r}setSelectionMode(e,t){if(this.pendingOperationId||this.holdBlocked)throw new $(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 $(404,"group_performance_not_found","group_performance_not_found");this.activePerformanceKey=e}setIncludedEventKeys(e){let t=new Set(this.descriptorCache?.performances.map(n=>n.eventKey)??[]);if(!e.length||new Set(e).size!==e.length||e.some(n=>!t.has(n)))throw new $(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(n=>({...n})))}allocationsForHold(e){return(this.allocationsByHold.get(e)??[]).map(t=>({eventKey:t.eventKey,items:t.items.map(n=>({...n}))}))}async hold(e,t,n,s){if(this.assertUsable(),s)throw new $(409,"group_hold_replace_unsupported","group_hold_replace_unsupported");let r=t.map(c=>c.label),o={labels:r};if(this.descriptorCache?.inclusionMode==="flexible_dates"&&(o.eventKeys=this.includedPerformanceKeys()),this.selectionMode==="per_performance"){if(!this.activePerformanceKey||!this.descriptorCache||!this.partySize)throw new $(409,"group_selection_incomplete","group_selection_incomplete");this.setPerformanceSelections(this.activePerformanceKey,t);let c=this.descriptorCache.performances.filter(d=>this.includedEventKeys.has(d.eventKey)).map(d=>({eventKey:d.eventKey,selections:this.selectionsByEvent.get(d.eventKey)??[]}));if(c.some(d=>d.selections.length!==this.partySize))throw new $(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,...n?{ttlMs:n}:{}})})}catch(c){if(c instanceof W)throw c;if(c instanceof ne)throw this.failOperation(a),c;return this.recover(a,r,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,r,Date.now()+this.recoveryTimeoutMs,$n(l))}if(l.status===503){let c=await l.clone().json().catch(()=>null);if((c?.code??c?.error)==="performance_group_abort_pending"){let d=c?.operation?.operationId??a;return this.beginOperation(d),c?.operation&&this.emit(c.operation),this.recover(d,r,Date.now()+this.recoveryTimeoutMs,$n(l))}}try{return await this.throwResponse(l,r)}catch(c){throw this.failOperation(a),c}}async release(e,t,n){this.assertUsable();let s=this.operationForHold(n),r=await this.json(`${gt(this.groupKey,s)}/release`,{method:"POST",body:"{}"});return this.operationByHold.delete(n),this.allocationsByHold.delete(n),this.clearOperationRecord(),r}async resume(e,t){this.assertUsable();let n=this.operationForHold(t),s=await this.json(gt(this.groupKey,n));return this.complete(s.operation)}async extend(e,t,n=12e4){this.assertUsable();let s=this.operationForHold(t),r=Math.max(zp,Math.min(jp,Math.round(n))),o=await this.json(`${gt(this.groupKey,s)}/extend`,{method:"POST",body:JSON.stringify({ttlMs:r})}),a=this.complete(o.operation);return{holdId:a.holdId,expiresAt:a.expiresAt}}bestAvailable(){return Promise.reject(new $(400,"group_best_available_unsupported","group_best_available_unsupported"))}socketUrl(){return""}createRealtime(e,t){return new zn(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:zt(e.operationId)});let t;try{t=await this.authorized(gt(this.groupKey,e.operationId))}catch(r){return r instanceof W||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 n=await this.responseJson(t);this.emit(n.operation);let s=n.operation.state;return s==="committed"||s==="booked"?(this.emitRecovery({kind:"idle"}),this.complete(n.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>=Kp?qp:Up;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(gt(this.groupKey,e));if(!s.ok)return this.scheduleSettlementPoll();t=(await this.responseJson(s)).operation}catch(s){return s instanceof W?this.stopSettlementWatch():this.scheduleSettlementPoll()}if(this.destroyed||this.settleOperationId!==e)return;let n=t.state!==this.settleState;if(this.settleState=t.state,n&&this.noteOperationState(e,t.state),this.settled(t.state)){this.stopSettlementWatch(),t.state!=="booked"&&this.clearOperationRecord(),this.emit(t);return}n&&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"||Wp.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 n=this.readOperationRecord();!n||n.operationId!==e||this.writeOperationRecord({...n,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 $(409,"performance_group_session_adopt_failed","performance_group_session_adopt_failed");let n=this.pendingOperationId??"";throw this.emitRecovery({kind:"failed",operationId:n,reference:n?zt(n):"",reason:"session_adopt_failed",retryable:!1}),this.adoptFailure}async recover(e,t,n,s=100){let r=s,o=Date.now()+Math.min(8e3,Math.max(500,this.recoveryTimeoutMs/2)),a="unknown";for(;Date.now()<=n;){if(this.destroyed)throw new W;if(this.emitRecovery({kind:"pending",operationId:e,phase:a,longRunning:Date.now()>=o,reference:zt(e)}),await Yp(r),this.destroyed)throw new W;let l;try{l=await this.authorized(gt(this.groupKey,e))}catch(p){if(p instanceof W)throw p;if(p instanceof ne)throw this.recoveryFailed(e,"request_failed"),p;r=Math.min(2e3,Math.max(100,r*2));continue}if(l.status===404){r=Math.min(1e3,Math.max(100,r*2));continue}if(!l.ok){this.recoveryFailed(e,"request_failed");try{return await this.throwResponse(l,t)}finally{this.pendingOperationId=null,this.clearOperationRecord()}}let d=(await this.responseJson(l)).operation;if(a=d.state,this.noteOperationState(e,d.state),this.emit(d),d.state==="committed"||d.state==="booked")return this.emitRecovery({kind:"idle"}),this.complete(d);if(d.state==="aborted"||d.state==="expired")throw this.failOperation(e),new $(409,"conflict","conflict",t.map(p=>({label:p,status:"held"})));r=$n(l)}throw this.recoveryFailed(e,"deadline"),new $(504,"performance_group_outcome_unknown","performance_group_outcome_unknown")}recoveryFailed(e,t){this.emitRecovery({kind:"failed",operationId:e,reference:zt(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,n){if(this.destroyed||!this.onAvailability)return;let s=e.state??this.descriptorCache?.state??"active",r=e.revision??null,o=!!r&&!!this.knownRevision&&r!==this.knownRevision;r&&!this.knownRevision&&(this.knownRevision=r);let a=n?.partial??{},l=Object.values(n?.seats??{});this.onAvailability({partial:a,freeCount:l.filter(c=>c==="free").length,blockedCount:Object.keys(n?.seats??{}).filter(c=>n.seats[c]!=="free"&&!(c in a)).length,state:s,salesClosed:!!t||s!=="active",revision:r,revisionChanged:o})}acceptRevision(e){this.knownRevision=e}complete(e){if(!e.hold||e.hold.expiresAt==null)throw new $(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 n=t.find(s=>s.eventKey===this.activePerformanceKey)?.items;return{holdId:e.hold.id,expiresAt:e.hold.expiresAt,items:n??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 $(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 W;if(this.adoptFailure)throw this.adoptFailure}async authorized(e,t={},n=!1){if(this.destroyed)throw new W;if(this.adoptFailure)throw this.adoptFailure;let s={...t.headers};t.body!==void 0&&(s["Content-Type"]="application/json");let r=await this.access.authorization(n?"unauthorized":"initial");if(this.destroyed)throw new W;if(this.adoptFailure)throw this.adoptFailure;if(!r)throw new Error("performance_group_buyer_access_required");s.Authorization=r;let o=await this.fetcher(`${this.base}${e}`,{method:t.method??"GET",headers:s,body:t.body,credentials:"omit",signal:this.aborter.signal});if(!n&&(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 n=await this.authorized(e,t);return n.ok?this.responseJson(n):this.throwResponse(n)}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)??{},r=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 $(e.status,s.error??r,r,s.conflicts)}};var eh="https://api.seatlayer.io";function Qa(i){let e=typeof i=="string"?document.querySelector(i):i;if(!e)throw new Error("seatlayer: Performance Group picker container was not found");return e}var jn=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 oe({provider:e.buyerAccessTokenProvider,token:e.buyerAccessToken,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable}),this.api=new Ui(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,Xa(),await Qp(this.options.locale),this.options.messages&&Zp(this.options.messages),this.destroyed)return this;let t;try{t=await this.api.descriptor()}catch(n){throw Te({apiBase:this.options.apiBase??eh,event:this.options.performanceGroup,scope:"performance_group",surface:"performance_group_picker",outcome:"failure",stage:"group_descriptor",ms:performance.now()-e,load:Ie(this.options.performanceGroup),transport:"pubapi"}),n}return this.destroyed?this:(this.descriptorValue=t,this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(Qa(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 n=document.createElement("div");n.className="sl-pg-root",n.dataset.performanceGroup=t.key,n.dataset.selectionMode=this.mode;let s=document.createElement("div");s.className="sl-pg-progress";let r=document.createElement("section");r.className="sl-pg-head",r.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 d=document.createElement("summary");d.textContent=this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:t.performanceCount});let p=document.createElement("div");p.innerHTML=En(this.performanceCards(t),this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.performanceCount})),c.append(d,p);let u=document.createElement("div");u.className="sl-pg-held-summary",u.hidden=!0,r.append(o,a,l,c,u);let h=document.createElement("div");h.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 y=this.mode==="per_performance"?this.performanceTabs(t):null,k=document.createElement("div");k.className="sl-pg-inner",k.id=this.panelId,k.setAttribute("aria-busy","false"),k.dataset.locked="false",this.mode==="per_performance"&&(k.setAttribute("role","tabpanel"),k.tabIndex=-1);let S=document.createElement("div");S.className="sl-pg-status",S.setAttribute("role","status"),S.setAttribute("aria-live","polite"),S.hidden=!0;let v=document.createElement("p"),f=document.createElement("button");f.type="button",f.hidden=!0,f.textContent=this.copy("picker.group.retry"),f.addEventListener("click",()=>{this.retryRecovery()}),S.append(v,f),k.appendChild(S);let P=document.createElement("div");P.className="sl-pg-live",P.setAttribute("role","status"),P.setAttribute("aria-live","polite"),n.append(s,r),y&&n.append(y),n.append(h,k,g,P),e.appendChild(n),this.root=n,this.progressHost=s,this.legendHost=h,this.paneHost=g,this.datesSummaryHost=d,this.datesCardsHost=p,this.innerHost=k,this.heldSummary=u,this.live=P,this.statusHost=S,this.statusCopy=v,this.statusAction=f,this.syncProgress(),this.syncLegend(),this.syncPane()}async mountPicker(e){let t=new Ue(zi({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:(n,s)=>{try{this.options.onAnalytics?.(n,{...s,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:n=>this.selectionChanged(n),onSelectionValidityChange:n=>this.selectionValidityChanged(n),onSelectionValid:this.options.onSelectionValid,onSelectionInvalid:this.options.onSelectionInvalid,onSelectionLimit:this.options.onSelectionLimit,onHoldChange:(n,s)=>this.holdChanged(n,s),onCheckout:(n,s)=>this.checkout(n,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(),selectedPerformanceDates:()=>this.mode==="same_seat"&&e.inclusionMode==="flexible_dates"?_r(this.includedPerformances(),e.performanceCount,this.options.locale,this.copy("picker.group.flexibleSelectedNote",{count:this.includedPerformances().length})):null,selectNight:n=>{this.switchPerformance(n)},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:n=>this.copy("picker.group.selectAvailableDates",{count:n}),activate:(n,s)=>{this.selectPartialSeat(n,s)}}:null,confirmDateSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{includedEventKeys:()=>this.api.includedPerformanceKeys(),availableEventKeys:n=>this.partialSeatDates.get(n)??this.nights().map(s=>s.eventKey),label:n=>this.copy("picker.group.selectAvailableDates",{count:n}),apply:(n,s)=>this.applySeatDates(n,s,!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:Ci(t,this.options.locale),time:Ai(t,this.options.locale)}))}nights(){return(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:e.name,shortDate:Pi(e,this.options.locale)}))}seatMarks(){let e=this.descriptorValue?.performanceCount??0,t=this.availability,n=!!t?.salesClosed||!!t&&t.state!=="active",s=this.mode==="same_seat"&&!n?t?.partial??{}:{},r={};for(let o of this.markedLabels)r[o]=null;if(this.markedLabels.clear(),e>0)for(let[o,a]of Object.entries(s))!a.length||a.length>=e||(r[o]={kind:"partial",fraction:(e-a.length)/e,data:{blockedEventKeys:[...a]}},this.markedLabels.add(o));return r}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=Pi(e,this.options.locale),n=e.name?.trim();return n&&n!==t?`${n} \xB7 ${t}`:t}nightSummary(){return this.mode!=="per_performance"?[]:(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:Pi(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 r=this.activeHandoff?.seatLabels.length??this.picker?.getSelection().length??0;return{seats:r*e.length,performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:r?e.length:0,perPerformance:r}}let t=e.map(r=>this.selectionsByEvent.get(r.eventKey)?.length??0),n=t.filter(r=>r>0),s=n.length===t.length&&n.every(r=>r===n[0]);return{seats:t.reduce((r,o)=>r+o,0),performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:n.length,perPerformance:s&&n.length?n[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=Ur(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=Br({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 n=this.activeHandoff?.seatLabels??this.picker?.getSelection().map(r=>r.label)??[],s=this.heldTotal();e.hidden=!1,e.innerHTML=qr({title:this.copy("picker.group.yourSelection"),rows:t.map(r=>({eventKey:r.eventKey,name:`${Ci(r,this.options.locale)} ${Ai(r,this.options.locale)}`,labels:n})),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:Kr(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 r=s.reduce((a,l)=>a+l.unitPrice*(l.quantity??1),0),o=s[0]?.currency??t.currency;try{return Xp(r,o,void 0,this.options.locale)}catch{return`${o} ${r.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(n=>t.has(n.eventKey))}syncIncludedDates(){let e=this.descriptorValue;if(!e||!this.datesSummaryHost||!this.datesCardsHost)return;let t=this.includedPerformances(),n=e.inclusionMode==="flexible_dates";this.datesSummaryHost.textContent=n&&t.length<e.performanceCount?this.copy("picker.group.flexibleDatesSelected",{selected:t.length,total:e.performanceCount}):this.copy(n?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:e.performanceCount}),this.datesCardsHost.innerHTML=En(this.performanceCards({...e,performances:t}),this.copy(n&&t.length<e.performanceCount?"picker.group.flexibleSelectedNote":n?"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,n){if(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)return!1;let s=this.api.includedPerformanceKeys();if(s.length===t.length&&s.every(r=>t.includes(r)))return!0;this.selectingPartialSeat=!0;try{if(this.api.setIncludedEventKeys(t),this.syncIncludedDates(),await this.picker?.refreshAvailability(),!(n?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(r){return s.length&&(this.api.setIncludedEventKeys(s),this.syncIncludedDates(),await this.picker?.refreshAvailability().catch(()=>{})),this.options.onError?.(r),!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(Qa(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 W)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 n=this.options.messages?.[e];return n!==void 0?t?n.replace(/\{(\w+)\}/g,(s,r)=>String(t[r]??`{${r}}`)):n:Jp(e,t)}performanceTabs(e){let t=document.createElement("div");t.className="sl-pg-tabsbar";let n=document.createElement("button");n.type="button",n.className="sl-pg-step",n.dataset.step="previous",n.setAttribute("aria-label",this.copy("picker.group.previousPerformance")),n.textContent="\u2039",n.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 r=document.createElement("div");return r.className="sl-pg-tabs",r.setAttribute("role","tablist"),r.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 d=document.createElement("span");d.className="sl-pg-tab-state",d.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,d),l.addEventListener("click",()=>{this.switchPerformance(o.eventKey)}),l.addEventListener("keydown",u=>this.tabKeydown(u)),r.appendChild(l)}),t.append(n,r,s),this.tabsHost=r,this.prevButton=n,this.nextButton=s,t}tabButtons(){return[...this.tabsHost?.querySelectorAll(".sl-pg-tab")??[]]}tabKeydown(e){let t=this.tabButtons(),n=t.findIndex(a=>a===e.target);if(n<0)return;let s=getComputedStyle(this.tabsHost??document.body).direction==="rtl",r=-1;switch(e.key){case"ArrowRight":r=n+(s?-1:1);break;case"ArrowLeft":r=n+(s?1:-1);break;case"ArrowDown":r=n+1;break;case"ArrowUp":r=n-1;break;case"Home":r=0;break;case"End":r=t.length-1;break;default:return}if(r<0||r>=t.length)return;e.preventDefault();let o=t[r];o.focus({preventScroll:!0}),o.disabled||this.switchPerformance(o.dataset.eventKey)}stepPerformance(e){let t=this.tabButtons(),n=t.findIndex(r=>r.dataset.eventKey===this.activePerformanceKey),s=t[n+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,n=e.filter(s=>this.selectionsByEvent.get(s.eventKey)?.length===t&&this.validByEvent.get(s.eventKey)!==!1).length;return{complete:n,total:e.length,ready:n===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(n=>n.eventKey)),this.syncIncludedDates(),this.picker?.refreshAvailability().catch(n=>this.options.onError?.(n)).finally(()=>{this.resettingFlexibleSelection=!1}));return}if(this.refreshingComposition||this.switchingPerformance||!this.activePerformanceKey)return;let t=e.map(n=>({...n}));this.selectionsByEvent.set(this.activePerformanceKey,t),this.api.setPerformanceSelections(this.activePerformanceKey,t.map(n=>({label:n.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,n=(this.selectionsByEvent.get(e)??[]).map(r=>r.label),s=this.copy("picker.group.chosenOfTotal",{chosen:n.length,total:t});return n.length===0?{key:"not-started",label:this.copy("picker.group.stillNeedsSeat"),badge:s}:n.length===t&&this.validByEvent.get(e)!==!1?{key:"complete",label:this.copy("picker.group.completeWithSeats",{seats:n.join(", ")}),badge:s}:n.length===t?{key:"needs-attention",label:this.copy("picker.group.needsAttention"),badge:s}:{key:"in-progress",label:this.copy("picker.group.needsMoreSeats",{count:t-n.length}),badge:s}}updateTabs(){let e=this.tabButtons(),t=this.switchingPerformance||this.operationPending||this.recovery.kind!=="idle"||!!this.activeHandoff;e.forEach(s=>{let r=s.dataset.eventKey,o=this.tabState(r),a=r===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 d=s.querySelector(".sl-pg-tab-name")?.textContent??r;s.setAttribute("aria-label",`${d}: ${o.badge} \xB7 ${o.label}`),a&&this.innerHost?.setAttribute("aria-labelledby",s.id)});let n=e.findIndex(s=>s.dataset.eventKey===this.activePerformanceKey);this.prevButton&&(this.prevButton.disabled=t||n<=0),this.nextButton&&(this.nextButton.disabled=t||n<0||n>=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(n=>n.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 n=this.picker.selectObjects(t);this.switchingPerformance=!1,this.selectionChanged(n),n.length!==t.length&&this.validByEvent.set(e,!1),this.options.onSelectionChange?.(n);let s=this.descriptorValue?.performances.find(r=>r.eventKey===e);s&&this.announce(this.copy("picker.group.performanceOpened",{performance:s.name}))}catch(n){this.options.onError?.(n)}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,n={}){this.statusHost&&this.statusCopy&&this.statusAction&&(this.statusCopy.textContent=t,this.statusHost.hidden=!t,this.statusAction.hidden=!n.retry),this.announce(t),this.options.onStatusChange?.({kind:e,message:t,...n.reference?{reference:n.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 W)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 W)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 W)return;this.options.onError?.(t)}}handoff(e,t){let n=this.descriptorValue,s=this.api.operationIdForHold(e.holdId);if(!n||!s)throw new Error("seatlayer: Performance Group hold identity is unavailable");let r=this.api.allocationsForHold(e.holdId);return{operationId:s,holdId:e.holdId,expiresAt:e.expiresAt,performanceGroup:n,selectionMode:this.mode,performanceKeys:r.map(o=>o.eventKey),bookingState:this.booked?"booked":"held",seatLabels:t.map(o=>o.label),...this.mode==="per_performance"?{allocations:r.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 n=this.descriptorValue?.performances.find(o=>o.eventKey===t.eventKey),s=document.createElement("p"),r=document.createElement("strong");r.textContent=n?.name??t.eventKey,s.append(r,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 n=this.handoff(e,t),s=this.activeHandoff?.holdId!==n.holdId;this.activeHandoff=n,this.renderHeldAllocations(this.api.allocationsForHold(e.holdId)),this.updateTabs(),this.api.watchSettlement(e.holdId),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),s&&this.options.onHold?.(n),this.options.onHoldChange?.(n)}checkout(e,t){let n=this.handoff(e,t);this.continued=!0,this.activeHandoff=n,this.options.onCheckout?.(n)}};import{formatMoney as sl,fromMinorUnits as rl}from"@seatlayer/core";var Za="seatlayer-season-picker-style";function Ja(){if(document.getElementById(Za))return;let i=document.createElement("style");i.id=Za,i.textContent=`
2937
+ `,document.head.appendChild(i)}var Np="https://api.seatlayer.io",Bp=6e4,Vp=2e3,Fp=1e3,zp=36e5,$p=5e3,jp=5e3,Gp=15e3,Up=12e4,qp=new Set(["preparing","commit_pending","abort_pending","expire_pending"]),K=class extends Error{constructor(){super("performance_group_destroyed"),this.name="PerformanceGroupDestroyedError"}};function Kp(i){return new Promise(e=>setTimeout(e,i))}function _n(i){let e=Number(i.headers.get("Retry-After")??"1");return Number.isFinite(e)?Math.max(50,Math.min($p,e*1e3)):1e3}function gt(i,e){return`/pub/performance-groups/${encodeURIComponent(i)}/operations/${encodeURIComponent(e)}`}function Vt(i){return i.replace(/^pghop_/,"").replace(/-/g,"").slice(-8).toUpperCase()}var Dn=class{constructor(e,t,n){this.api=e;this.sink=t;this.intervalMs=n;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)),o=[...new Set([...this.prior.keys(),...t.keys()])].filter(s=>this.prior.get(s)!==t.get(s)).map(s=>({label:s,status:t.get(s)??"blocked"}));this.prior=t,o.length&&this.sink.applyStatuses(o),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))}}},Gi=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??Np).replace(/\/+$/,""),this.access=t.access,this.fetcher=t.fetch??globalThis.fetch.bind(globalThis),this.recoveryTimeoutMs=t.recoveryTimeoutMs??Bp,this.realtimePollMs=Math.max(500,t.realtimePollMs??Vp),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(o=>this.adoptSession(o));let n=this.readOperationRecord();n&&this.storedIsUndecided(n)&&(this.pendingOperationId=n.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(o=>{throw this.chartRequest=null,o});let[t,n]=await Promise.all([this.descriptorCache?Promise.resolve(this.descriptorCache):this.descriptor(),this.chartRequest]);return{doc:n,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 z(404,"not_found","not_found"))}async objects(e){let t=this.descriptorCache?.inclusionMode==="flexible_dates",n=`/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 r=await this.authorized(n,this.objectsCache?.revision?{headers:{"If-None-Match":`"${this.objectsCache.revision}"`}}:{});if(r.status!==304){if(!r.ok)return this.throwResponse(r);this.objectsCache=await this.responseJson(r)}}if(!this.objectsCache)throw new z(502,"group_projection_unavailable","group_projection_unavailable");if(this.selectionMode==="same_seat"&&!t){let r=this.objectsCache;return this.noteAvailability(r,r.salesClosed,r),r}let o=this.objectsCache;if(this.selectionMode==="same_seat"){let r=o.performances.filter(d=>this.includedEventKeys.has(d.eventKey));if(!r.length)throw new z(409,"group_selection_incomplete","group_selection_incomplete");let a=Object.keys(r[0]?.seats??{}),l=Object.fromEntries(a.map(d=>[d,r.every(u=>u.seats[d]==="free")?"free":"blocked"])),c=Object.fromEntries(a.flatMap(d=>{let u=r.filter(p=>p.seats[d]!=="free").map(p=>p.eventKey);return u.length>0&&u.length<r.length?[[d,u]]:[]})),h={seats:l,partial:c,hidden:[...new Set(r.flatMap(d=>d.hidden??[]))],closed:[...new Set(r.flatMap(d=>d.closed??[]))],revision:o.revision,state:o.state,salesClosed:r.some(d=>d.salesClosed)};return this.noteAvailability(o,h.salesClosed,h),h}let s=o.performances.find(r=>r.eventKey===this.activePerformanceKey);if(!s)throw new z(409,"group_performance_unavailable","group_performance_unavailable");return this.noteAvailability(o,o.salesClosed||o.performances.some(r=>r.salesClosed),s),s}setSelectionMode(e,t){if(this.pendingOperationId||this.holdBlocked)throw new z(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 z(404,"group_performance_not_found","group_performance_not_found");this.activePerformanceKey=e}setIncludedEventKeys(e){let t=new Set(this.descriptorCache?.performances.map(n=>n.eventKey)??[]);if(!e.length||new Set(e).size!==e.length||e.some(n=>!t.has(n)))throw new z(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(n=>({...n})))}allocationsForHold(e){return(this.allocationsByHold.get(e)??[]).map(t=>({eventKey:t.eventKey,items:t.items.map(n=>({...n}))}))}async hold(e,t,n,o){if(this.assertUsable(),o)throw new z(409,"group_hold_replace_unsupported","group_hold_replace_unsupported");let s=t.map(c=>c.label),r={labels:s};if(this.descriptorCache?.inclusionMode==="flexible_dates"&&(r.eventKeys=this.includedPerformanceKeys()),this.selectionMode==="per_performance"){if(!this.activePerformanceKey||!this.descriptorCache||!this.partySize)throw new z(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 z(409,"group_selection_incomplete","group_selection_incomplete");r={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,...r,...n?{ttlMs:n}:{}})})}catch(c){if(c instanceof K)throw c;if(c instanceof ne)throw this.failOperation(a),c;return this.recover(a,s,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,s,Date.now()+this.recoveryTimeoutMs,_n(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,s,Date.now()+this.recoveryTimeoutMs,_n(l))}}try{return await this.throwResponse(l,s)}catch(c){throw this.failOperation(a),c}}async release(e,t,n){this.assertUsable();let o=this.operationForHold(n),s=await this.json(`${gt(this.groupKey,o)}/release`,{method:"POST",body:"{}"});return this.operationByHold.delete(n),this.allocationsByHold.delete(n),this.clearOperationRecord(),s}async resume(e,t){this.assertUsable();let n=this.operationForHold(t),o=await this.json(gt(this.groupKey,n));return this.complete(o.operation)}async extend(e,t,n=12e4){this.assertUsable();let o=this.operationForHold(t),s=Math.max(Fp,Math.min(zp,Math.round(n))),r=await this.json(`${gt(this.groupKey,o)}/extend`,{method:"POST",body:JSON.stringify({ttlMs:s})}),a=this.complete(r.operation);return{holdId:a.holdId,expiresAt:a.expiresAt}}bestAvailable(){return Promise.reject(new z(400,"group_best_available_unsupported","group_best_available_unsupported"))}socketUrl(){return""}createRealtime(e,t){return new Dn(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:Vt(e.operationId)});let t;try{t=await this.authorized(gt(this.groupKey,e.operationId))}catch(s){return s 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 n=await this.responseJson(t);this.emit(n.operation);let o=n.operation.state;return o==="committed"||o==="booked"?(this.emitRecovery({kind:"idle"}),this.complete(n.operation)):o==="aborted"||o==="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>=Up?Gp:jp;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 o=await this.authorized(gt(this.groupKey,e));if(!o.ok)return this.scheduleSettlementPoll();t=(await this.responseJson(o)).operation}catch(o){return o instanceof K?this.stopSettlementWatch():this.scheduleSettlementPoll()}if(this.destroyed||this.settleOperationId!==e)return;let n=t.state!==this.settleState;if(this.settleState=t.state,n&&this.noteOperationState(e,t.state),this.settled(t.state)){this.stopSettlementWatch(),t.state!=="booked"&&this.clearOperationRecord(),this.emit(t);return}n&&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"||qp.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 n=this.readOperationRecord();!n||n.operationId!==e||this.writeOperationRecord({...n,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 o=0;o<2;o++){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 z(409,"performance_group_session_adopt_failed","performance_group_session_adopt_failed");let n=this.pendingOperationId??"";throw this.emitRecovery({kind:"failed",operationId:n,reference:n?Vt(n):"",reason:"session_adopt_failed",retryable:!1}),this.adoptFailure}async recover(e,t,n,o=100){let s=o,r=Date.now()+Math.min(8e3,Math.max(500,this.recoveryTimeoutMs/2)),a="unknown";for(;Date.now()<=n;){if(this.destroyed)throw new K;if(this.emitRecovery({kind:"pending",operationId:e,phase:a,longRunning:Date.now()>=r,reference:Vt(e)}),await Kp(s),this.destroyed)throw new K;let l;try{l=await this.authorized(gt(this.groupKey,e))}catch(d){if(d instanceof K)throw d;if(d instanceof ne)throw this.recoveryFailed(e,"request_failed"),d;s=Math.min(2e3,Math.max(100,s*2));continue}if(l.status===404){s=Math.min(1e3,Math.max(100,s*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 z(409,"conflict","conflict",t.map(d=>({label:d,status:"held"})));s=_n(l)}throw this.recoveryFailed(e,"deadline"),new z(504,"performance_group_outcome_unknown","performance_group_outcome_unknown")}recoveryFailed(e,t){this.emitRecovery({kind:"failed",operationId:e,reference:Vt(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,n){if(this.destroyed||!this.onAvailability)return;let o=e.state??this.descriptorCache?.state??"active",s=e.revision??null,r=!!s&&!!this.knownRevision&&s!==this.knownRevision;s&&!this.knownRevision&&(this.knownRevision=s);let a=n?.partial??{},l=Object.values(n?.seats??{});this.onAvailability({partial:a,freeCount:l.filter(c=>c==="free").length,blockedCount:Object.keys(n?.seats??{}).filter(c=>n.seats[c]!=="free"&&!(c in a)).length,state:o,salesClosed:!!t||o!=="active",revision:s,revisionChanged:r})}acceptRevision(e){this.knownRevision=e}complete(e){if(!e.hold||e.hold.expiresAt==null)throw new z(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 n=t.find(o=>o.eventKey===this.activePerformanceKey)?.items;return{holdId:e.hold.id,expiresAt:e.hold.expiresAt,items:n??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 z(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={},n=!1){if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure;let o={...t.headers};t.body!==void 0&&(o["Content-Type"]="application/json");let s=await this.access.authorization(n?"unauthorized":"initial");if(this.destroyed)throw new K;if(this.adoptFailure)throw this.adoptFailure;if(!s)throw new Error("performance_group_buyer_access_required");o.Authorization=s;let r=await this.fetcher(`${this.base}${e}`,{method:t.method??"GET",headers:o,body:t.body,credentials:"omit",signal:this.aborter.signal});if(!n&&(r.status===401||r.status===403||r.status===422)){let a=await r.clone().json().catch(()=>null);if(await this.access.handleFailure(r.status,a?.code??a?.error))return this.authorized(e,t,!0)}return r}async json(e,t={}){let n=await this.authorized(e,t);return n.ok?this.responseJson(n):this.throwResponse(n)}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 o=await e.json().catch(()=>null)??{},s=o.code??o.error??`request_failed_${e.status}`;throw e.status===409&&!o.conflicts?.length&&t.length&&(o.conflicts=t.map(r=>({label:r,status:"held"}))),new z(e.status,o.error??s,s,o.conflicts)}};var Qp="https://api.seatlayer.io";function Ua(i){let e=typeof i=="string"?document.querySelector(i):i;if(!e)throw new Error("seatlayer: Performance Group picker container was not found");return e}var Nn=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 ae({provider:e.buyerAccessTokenProvider,token:e.buyerAccessToken,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable}),this.api=new Gi(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,Ga(),await Yp(this.options.locale),this.options.messages&&Xp(this.options.messages),this.destroyed)return this;let t;try{t=await this.api.descriptor()}catch(n){throw Te({apiBase:this.options.apiBase??Qp,event:this.options.performanceGroup,scope:"performance_group",surface:"performance_group_picker",outcome:"failure",stage:"group_descriptor",ms:performance.now()-e,load:Re(this.options.performanceGroup),transport:"pubapi"}),n}return this.destroyed?this:(this.descriptorValue=t,this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(Ua(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 n=document.createElement("div");n.className="sl-pg-root",n.dataset.performanceGroup=t.key,n.dataset.selectionMode=this.mode;let o=document.createElement("div");o.className="sl-pg-progress";let s=document.createElement("section");s.className="sl-pg-head",s.setAttribute("aria-labelledby",`sl-pg-title-${t.key}`);let r=document.createElement("h2");r.id=`sl-pg-title-${t.key}`,r.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=Sn(this.performanceCards(t),this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.performanceCount})),c.append(h,d);let u=document.createElement("div");u.className="sl-pg-held-summary",u.hidden=!0,s.append(r,a,l,c,u);let p=document.createElement("div");p.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,k=document.createElement("div");k.className="sl-pg-inner",k.id=this.panelId,k.setAttribute("aria-busy","false"),k.dataset.locked="false",this.mode==="per_performance"&&(k.setAttribute("role","tabpanel"),k.tabIndex=-1);let S=document.createElement("div");S.className="sl-pg-status",S.setAttribute("role","status"),S.setAttribute("aria-live","polite"),S.hidden=!0;let v=document.createElement("p"),A=document.createElement("button");A.type="button",A.hidden=!0,A.textContent=this.copy("picker.group.retry"),A.addEventListener("click",()=>{this.retryRecovery()}),S.append(v,A),k.appendChild(S);let y=document.createElement("div");y.className="sl-pg-live",y.setAttribute("role","status"),y.setAttribute("aria-live","polite"),n.append(o,s),b&&n.append(b),n.append(p,k,f,y),e.appendChild(n),this.root=n,this.progressHost=o,this.legendHost=p,this.paneHost=f,this.datesSummaryHost=h,this.datesCardsHost=d,this.innerHost=k,this.heldSummary=u,this.live=y,this.statusHost=S,this.statusCopy=v,this.statusAction=A,this.syncProgress(),this.syncLegend(),this.syncPane()}async mountPicker(e){let t=new qe(zi({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:(n,o)=>{try{this.options.onAnalytics?.(n,{...o,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:n=>this.selectionChanged(n),onSelectionValidityChange:n=>this.selectionValidityChanged(n),onSelectionValid:this.options.onSelectionValid,onSelectionInvalid:this.options.onSelectionInvalid,onSelectionLimit:this.options.onSelectionLimit,onHoldChange:(n,o)=>this.holdChanged(n,o),onCheckout:(n,o)=>this.checkout(n,o),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"?Ds(this.includedPerformances(),e.performanceCount,this.options.locale,this.copy("picker.group.flexibleSelectedNote",{count:this.includedPerformances().length})):null,selectNight:n=>{this.switchPerformance(n)},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:n=>this.copy("picker.group.selectAvailableDates",{count:n}),activate:(n,o)=>{this.selectPartialSeat(n,o)}}:null,confirmDateSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{includedEventKeys:()=>this.api.includedPerformanceKeys(),availableEventKeys:n=>this.partialSeatDates.get(n)??this.nights().map(o=>o.eventKey),label:n=>this.copy("picker.group.selectAvailableDates",{count:n}),apply:(n,o)=>this.applySeatDates(n,o,!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:Ci(t,this.options.locale),time:Ai(t,this.options.locale)}))}nights(){return(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:e.name,shortDate:Pi(e,this.options.locale)}))}seatMarks(){let e=this.descriptorValue?.performanceCount??0,t=this.availability,n=!!t?.salesClosed||!!t&&t.state!=="active",o=this.mode==="same_seat"&&!n?t?.partial??{}:{},s={};for(let r of this.markedLabels)s[r]=null;if(this.markedLabels.clear(),e>0)for(let[r,a]of Object.entries(o))!a.length||a.length>=e||(s[r]={kind:"partial",fraction:(e-a.length)/e,data:{blockedEventKeys:[...a]}},this.markedLabels.add(r));return s}activePerformanceLabel(){if(this.mode!=="per_performance")return null;let e=this.descriptorValue?.performances.find(o=>o.eventKey===this.activePerformanceKey);if(!e)return null;let t=Pi(e,this.options.locale),n=e.name?.trim();return n&&n!==t?`${n} \xB7 ${t}`:t}nightSummary(){return this.mode!=="per_performance"?[]:(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:Pi(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 s=this.activeHandoff?.seatLabels.length??this.picker?.getSelection().length??0;return{seats:s*e.length,performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:s?e.length:0,perPerformance:s}}let t=e.map(s=>this.selectionsByEvent.get(s.eventKey)?.length??0),n=t.filter(s=>s>0),o=n.length===t.length&&n.every(s=>s===n[0]);return{seats:t.reduce((s,r)=>s+r,0),performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:n.length,perPerformance:o&&n.length?n[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=qs(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=Bs({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 n=this.activeHandoff?.seatLabels??this.picker?.getSelection().map(s=>s.label)??[],o=this.heldTotal();e.hidden=!1,e.innerHTML=Ks({title:this.copy("picker.group.yourSelection"),rows:t.map(s=>({eventKey:s.eventKey,name:`${Ci(s,this.options.locale)} ${Ai(s,this.options.locale)}`,labels:n})),empty:this.copy("picker.group.noSeatsChosenYet"),note:o?null:this.copy("picker.group.pricesPerPerformance"),total:o?{label:this.copy("picker.group.total"),amount:o}:null,holdStatus:this.booked?this.copy("picker.group.bookedAll",{count:t.length}):this.activeHandoff?this.copy("picker.group.heldTogether",{count:t.length,time:Ws(this.activeHandoff.expiresAt-Date.now())}):null})}heldTotal(){let e=this.activeHandoff,t=this.descriptorValue;if(!e||!t)return null;let o=this.api.allocationsForHold(e.holdId).flatMap(a=>a.items);if(!o.length)return null;let s=o.reduce((a,l)=>a+l.unitPrice*(l.quantity??1),0),r=o[0]?.currency??t.currency;try{return Wp(s,r,void 0,this.options.locale)}catch{return`${r} ${s.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(n=>t.has(n.eventKey))}syncIncludedDates(){let e=this.descriptorValue;if(!e||!this.datesSummaryHost||!this.datesCardsHost)return;let t=this.includedPerformances(),n=e.inclusionMode==="flexible_dates";this.datesSummaryHost.textContent=n&&t.length<e.performanceCount?this.copy("picker.group.flexibleDatesSelected",{selected:t.length,total:e.performanceCount}):this.copy(n?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:e.performanceCount}),this.datesCardsHost.innerHTML=Sn(this.performanceCards({...e,performances:t}),this.copy(n&&t.length<e.performanceCount?"picker.group.flexibleSelectedNote":n?"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,n){if(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)return!1;let o=this.api.includedPerformanceKeys();if(o.length===t.length&&o.every(s=>t.includes(s)))return!0;this.selectingPartialSeat=!0;try{if(this.api.setIncludedEventKeys(t),this.syncIncludedDates(),await this.picker?.refreshAvailability(),!(n?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(s){return o.length&&(this.api.setIncludedEventKeys(o),this.syncIncludedDates(),await this.picker?.refreshAvailability().catch(()=>{})),this.options.onError?.(s),!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(Ua(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 n=this.options.messages?.[e];return n!==void 0?t?n.replace(/\{(\w+)\}/g,(o,s)=>String(t[s]??`{${s}}`)):n:Zp(e,t)}performanceTabs(e){let t=document.createElement("div");t.className="sl-pg-tabsbar";let n=document.createElement("button");n.type="button",n.className="sl-pg-step",n.dataset.step="previous",n.setAttribute("aria-label",this.copy("picker.group.previousPerformance")),n.textContent="\u2039",n.addEventListener("click",()=>{this.stepPerformance(-1)});let o=document.createElement("button");o.type="button",o.className="sl-pg-step",o.dataset.step="next",o.setAttribute("aria-label",this.copy("picker.group.nextPerformance")),o.textContent="\u203A",o.addEventListener("click",()=>{this.stepPerformance(1)});let s=document.createElement("div");return s.className="sl-pg-tabs",s.setAttribute("role","tablist"),s.setAttribute("aria-label",this.copy("picker.group.performances")),e.performances.forEach((r,a)=>{let l=document.createElement("button");l.type="button",l.className="sl-pg-tab",l.id=`sl-pg-tab-${e.key}-${r.eventKey}`,l.dataset.eventKey=r.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=r.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(r.eventKey)}),l.addEventListener("keydown",u=>this.tabKeydown(u)),s.appendChild(l)}),t.append(n,s,o),this.tabsHost=s,this.prevButton=n,this.nextButton=o,t}tabButtons(){return[...this.tabsHost?.querySelectorAll(".sl-pg-tab")??[]]}tabKeydown(e){let t=this.tabButtons(),n=t.findIndex(a=>a===e.target);if(n<0)return;let o=getComputedStyle(this.tabsHost??document.body).direction==="rtl",s=-1;switch(e.key){case"ArrowRight":s=n+(o?-1:1);break;case"ArrowLeft":s=n+(o?1:-1);break;case"ArrowDown":s=n+1;break;case"ArrowUp":s=n-1;break;case"Home":s=0;break;case"End":s=t.length-1;break;default:return}if(s<0||s>=t.length)return;e.preventDefault();let r=t[s];r.focus({preventScroll:!0}),r.disabled||this.switchPerformance(r.dataset.eventKey)}stepPerformance(e){let t=this.tabButtons(),n=t.findIndex(s=>s.dataset.eventKey===this.activePerformanceKey),o=t[n+e];!o||o.disabled||(o.focus({preventScroll:!0}),this.switchPerformance(o.dataset.eventKey))}submissionState(){let e=this.descriptorValue?.performances??[];if(this.mode!=="per_performance"){let o=!this.holdBlocked();return{complete:e.length,total:e.length,ready:o}}let t=this.options.numberOfPlacesToSelect,n=e.filter(o=>this.selectionsByEvent.get(o.eventKey)?.length===t&&this.validByEvent.get(o.eventKey)!==!1).length;return{complete:n,total:e.length,ready:n===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(n=>n.eventKey)),this.syncIncludedDates(),this.picker?.refreshAvailability().catch(n=>this.options.onError?.(n)).finally(()=>{this.resettingFlexibleSelection=!1}));return}if(this.refreshingComposition||this.switchingPerformance||!this.activePerformanceKey)return;let t=e.map(n=>({...n}));this.selectionsByEvent.set(this.activePerformanceKey,t),this.api.setPerformanceSelections(this.activePerformanceKey,t.map(n=>({label:n.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,n=(this.selectionsByEvent.get(e)??[]).map(s=>s.label),o=this.copy("picker.group.chosenOfTotal",{chosen:n.length,total:t});return n.length===0?{key:"not-started",label:this.copy("picker.group.stillNeedsSeat"),badge:o}:n.length===t&&this.validByEvent.get(e)!==!1?{key:"complete",label:this.copy("picker.group.completeWithSeats",{seats:n.join(", ")}),badge:o}:n.length===t?{key:"needs-attention",label:this.copy("picker.group.needsAttention"),badge:o}:{key:"in-progress",label:this.copy("picker.group.needsMoreSeats",{count:t-n.length}),badge:o}}updateTabs(){let e=this.tabButtons(),t=this.switchingPerformance||this.operationPending||this.recovery.kind!=="idle"||!!this.activeHandoff;e.forEach(o=>{let s=o.dataset.eventKey,r=this.tabState(s),a=s===this.activePerformanceKey;o.dataset.state=r.key,o.disabled=t,o.setAttribute("aria-selected",String(a)),o.tabIndex=a?0:-1;let l=o.querySelector(".sl-pg-tab-state");l&&(l.textContent=r.label);let c=o.querySelector(".sl-pg-tab-badge");c&&(c.textContent=r.badge);let h=o.querySelector(".sl-pg-tab-name")?.textContent??s;o.setAttribute("aria-label",`${h}: ${r.badge} \xB7 ${r.label}`),a&&this.innerHost?.setAttribute("aria-labelledby",o.id)});let n=e.findIndex(o=>o.dataset.eventKey===this.activePerformanceKey);this.prevButton&&(this.prevButton.disabled=t||n<=0),this.nextButton&&(this.nextButton.disabled=t||n<0||n>=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(n=>n.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 n=this.picker.selectObjects(t);this.switchingPerformance=!1,this.selectionChanged(n),n.length!==t.length&&this.validByEvent.set(e,!1),this.options.onSelectionChange?.(n);let o=this.descriptorValue?.performances.find(s=>s.eventKey===e);o&&this.announce(this.copy("picker.group.performanceOpened",{performance:o.name}))}catch(n){this.options.onError?.(n)}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,n={}){this.statusHost&&this.statusCopy&&this.statusAction&&(this.statusCopy.textContent=t,this.statusHost.hidden=!t,this.statusAction.hidden=!n.retry),this.announce(t),this.options.onStatusChange?.({kind:e,message:t,...n.reference?{reference:n.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 n=this.descriptorValue,o=this.api.operationIdForHold(e.holdId);if(!n||!o)throw new Error("seatlayer: Performance Group hold identity is unavailable");let s=this.api.allocationsForHold(e.holdId);return{operationId:o,holdId:e.holdId,expiresAt:e.expiresAt,performanceGroup:n,selectionMode:this.mode,performanceKeys:s.map(r=>r.eventKey),bookingState:this.booked?"booked":"held",seatLabels:t.map(r=>r.label),...this.mode==="per_performance"?{allocations:s.map(r=>({eventKey:r.eventKey,seatLabels:r.items.map(a=>a.label)}))}:{}}}renderHeldAllocations(e){if(!(!this.heldSummary||this.mode!=="per_performance")){this.heldSummary.replaceChildren();for(let t of e){let n=this.descriptorValue?.performances.find(r=>r.eventKey===t.eventKey),o=document.createElement("p"),s=document.createElement("strong");s.textContent=n?.name??t.eventKey,o.append(s,document.createTextNode(t.items.map(r=>r.label).join(", "))),this.heldSummary.appendChild(o)}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 n=this.handoff(e,t),o=this.activeHandoff?.holdId!==n.holdId;this.activeHandoff=n,this.renderHeldAllocations(this.api.allocationsForHold(e.holdId)),this.updateTabs(),this.api.watchSettlement(e.holdId),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),o&&this.options.onHold?.(n),this.options.onHoldChange?.(n)}checkout(e,t){let n=this.handoff(e,t);this.continued=!0,this.activeHandoff=n,this.options.onCheckout?.(n)}};import{formatMoney as Qa,fromMinorUnits as Ja}from"@seatlayer/core";var qa="seatlayer-season-picker-style";function Ka(){if(document.getElementById(qa))return;let i=document.createElement("style");i.id=qa,i.textContent=`
2863
2938
  .sl-season-root{--sl-season-accent:var(--sl-accent,#7357d8);box-sizing:border-box;display:grid;gap:12px;min-width:0;max-width:100%;color:var(--sl-text,#18202b);font-family:var(--sl-font,Inter,system-ui,sans-serif)}
2864
2939
  .sl-season-root *{box-sizing:border-box}.sl-season-root button,.sl-season-root summary{font:inherit}
2865
2940
  .sl-season-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;padding:20px;border:1px solid var(--sl-line,#dde3ea);border-radius:18px;background:linear-gradient(135deg,color-mix(in srgb,var(--sl-season-accent) 10%,var(--sl-surface,#fff)),var(--sl-surface,#fff) 58%);box-shadow:0 10px 30px #18202b0a}
@@ -2875,4 +2950,4 @@ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
2875
2950
  .sl-season-status{min-height:20px;margin:0;padding:0 4px;color:var(--sl-muted,#627081);font-size:13px}.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}.sl-season-status[data-kind=failed],.sl-season-status[data-kind=partial_terminal]{position:static;width:auto;height:auto;margin:0;padding:10px 12px;overflow:visible;clip:auto;border-radius:10px;background:#fff1f0;color:var(--sl-danger,#b42318);font-weight:700}.sl-season-root[data-busy=true] .sl-season-map{opacity:.82;pointer-events:none}
2876
2951
  @media(max-width:820px){.sl-season-stage{grid-template-columns:1fr}.sl-season-summary-card{position:static;order:-1}.sl-season-map{min-height:590px}}
2877
2952
  @media(max-width:560px){.sl-season-root{gap:9px}.sl-season-hero{grid-template-columns:1fr;padding:15px;border-radius:14px}.sl-season-offer{min-width:0}.sl-season-progress{grid-template-columns:1fr}.sl-season-progress li+li{border-inline-start:0;border-top:1px solid var(--sl-line,#dde3ea)}.sl-season-progress li[data-state=upcoming]{display:none}.sl-season-date-list{grid-template-columns:1fr}.sl-season-map{min-height:560px}.sl-season-summary-card{padding:13px}.sl-season-benefits{display:grid;grid-template-columns:1fr}}
2878
- `,document.head.appendChild(i)}var th=new Set(["audience_not_public","sales_not_open","origin_not_allowed"]),ih=3e4;function nh(i,e){if(!i||typeof i!="object"||Array.isArray(i))return!1;let t=i;return typeof t.token=="string"&&t.token.length>0&&typeof t.expiresAt=="number"&&Number.isFinite(t.expiresAt)&&t.expiresAt>Date.now()&&t.seasonKey===e&&Array.isArray(t.planActivationIds)&&t.planActivationIds.every(n=>typeof n=="string"&&!!n)}var qi=class extends Error{constructor(t,n){super(`season_public_session_refused:${t}`);this.reason=t;this.status=n;this.name="SeasonPublicSessionRefused"}},Ce,Oe,jt,bt,Gn=class{constructor(e){this.options=e;L(this,Ce,null);L(this,Oe,null);L(this,jt);L(this,bt);T(this,jt,e.fetch??globalThis.fetch.bind(globalThis)),T(this,bt,e.origin??(typeof location>"u"?void 0:location.origin))}get session(){return m(this,Ce)}async mint(e=!1){if(e&&T(this,Ce,null),m(this,Ce)&&m(this,Ce).expiresAt-ih>Date.now())return m(this,Ce);if(m(this,Oe))return m(this,Oe);let t=(async()=>{let n=await m(this,jt).call(this,`${this.options.base}/pub/seasons/${encodeURIComponent(this.options.season)}/sessions`,{method:"POST",body:JSON.stringify(m(this,bt)?{origin:m(this,bt)}:{}),credentials:"omit"}),s=await n.json().catch(()=>null);if(!n.ok){let r=s?.code??s?.error;if(n.status===403&&r&&th.has(r)){let o=r;throw this.options.onRefused?.({reason:o,code:r,status:n.status,retryable:o==="sales_not_open"}),new qi(o,n.status)}throw new Error(`season_public_session_failed_${n.status}`)}if(!nh(s,this.options.season))throw new Error("season_public_session_invalid");return T(this,Ce,s),s})();T(this,Oe,t);try{return await t}finally{m(this,Oe)===t&&T(this,Oe,null)}}async token(e){let t=e==="expiring"||e==="expired"||e==="unauthorized"||e==="manual",n=await this.mint(t);return{token:n.token,expiresAt:n.expiresAt}}};Ce=new WeakMap,Oe=new WeakMap,jt=new WeakMap,bt=new WeakMap;function el(i){let e=new Gn(i);return{access:new oe({provider:({reason:n})=>e.token(n),...i.accessHooks}),loader:e}}var sh="https://api.seatlayer.io",rh=6e4,oh=5e3,F=class extends Error{constructor(t,n){super(`season_request_failed:${t}`);this.code=t;this.status=n;this.name="SeasonApiError"}},Ki=class extends Error{constructor(t){super(`season_operation_timeout:${t}`);this.operationId=t;this.name="SeasonRecoveryTimeoutError"}};function ah(i,e){let t=Number(i.headers.get("Retry-After")),n=Number.isFinite(t)&&t>=0?t:e.retryAfterSeconds;return Math.max(0,Math.min(oh,n*1e3))}function lh(i,e){return e?.aborted?Promise.reject(e.reason??new DOMException("Aborted","AbortError")):new Promise((t,n)=>{let s=setTimeout(t,i);e?.addEventListener("abort",()=>{clearTimeout(s),n(e.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function tl(i){if(!i||typeof i!="object")return"unknown";let e=i;return typeof e.code=="string"?e.code:typeof e.error=="string"?e.error:"unknown"}var ch=/^shc_[a-f0-9]{40}$/,dh=/^shh_[a-f0-9]{40}$/,ph=new Set(["preparing","commit_pending","committed","expire_pending","booking_pending","abort_pending","aborted","partial_terminal","expired","booked"]),hh=new Set(["pending","prepared","refused","applied","expired","booked","aborted"]);function Un(i){return Array.isArray(i)?i.some(Un):!i||typeof i!="object"?!1:Object.entries(i).some(([e,t])=>e==="childHoldId"||e==="child_hold_id"||e==="holdId"&&typeof t=="string"&&ch.test(t)||Un(t))}function Gt(i,e,t="invalid_operation_response"){if(!i||typeof i!="object"||Array.isArray(i))throw new F(t,502);if(Un(i))throw new F("unsafe_operation_response",502);let n=i,s=n.allocations,r=new Set,o=Array.isArray(s)&&s.length>0&&s.every(p=>{if(!p||typeof p!="object")return!1;let u=p.eventId,h=p.state;return typeof u!="string"||!u||typeof h!="string"||!hh.has(h)||r.has(u)?!1:(r.add(u),!0)}),a=n.bookingRef===null||typeof n.bookingRef=="string"&&n.bookingRef.length>0,l=n.state!=="booked"||typeof n.bookingRef=="string"&&o&&s.every(p=>p.state==="booked"),c=n.state!=="booking_pending"||typeof n.bookingRef=="string"&&o&&s.some(p=>p.state!=="booked"),d=n.state!=="committed"||n.bookingRef===null;if(n.operationId!==e.operationId||n.seasonId!==e.seasonId||n.kind!=="HOLD"||typeof n.holdId!="string"||!dh.test(n.holdId)||n.policy!=="fixed_inclusion_same_seat"||typeof n.state!="string"||!ph.has(n.state)||typeof n.expiresAt!="number"||!Number.isFinite(n.expiresAt)||n.expiresAt<0||!a||typeof n.location!="string"||!n.location||typeof n.retryAfterSeconds!="number"||!Number.isFinite(n.retryAfterSeconds)||n.retryAfterSeconds<0||!o||!l||!c||!d||n.pricingAuthority!==void 0&&n.pricingAuthority!=="host"||n.authoritativeAmountIncluded!==void 0&&n.authoritativeAmountIncluded!==!1)throw new F(t,502);return{operationId:n.operationId,seasonId:n.seasonId,kind:n.kind,holdId:n.holdId,expiresAt:n.expiresAt,policy:n.policy,pricingAuthority:"host",authoritativeAmountIncluded:!1,state:n.state,bookingRef:n.bookingRef,location:n.location,retryAfterSeconds:n.retryAfterSeconds,allocations:s.map(p=>({eventId:p.eventId,state:p.state}))}}function uh(i,e,t){if(!Array.isArray(i)||i.length!==t||i.some(o=>typeof o!="string"||!o)||new Set(i).size!==i.length||!Array.isArray(e)||e.length!==i.length)throw new F("invalid_best_available_response",502);let n=i,s=new Set(n),r=new Map;for(let o of e){if(!o||typeof o!="object")throw new F("invalid_best_available_response",502);let a=o;if(typeof a.label!="string"||!s.has(a.label)||r.has(a.label)||typeof a.objectId!="string"||!a.objectId||a.objectType!=="seat"||typeof a.categoryKey!="string"||!a.categoryKey||a.tierId!==null&&(typeof a.tierId!="string"||!a.tierId)||a.quantity!==void 0&&a.quantity!==1)throw new F("invalid_best_available_response",502);r.set(a.label,{label:a.label,objectId:a.objectId,objectType:"seat",categoryKey:a.categoryKey,tierId:a.tierId,...a.quantity===void 0?{}:{quantity:a.quantity}})}return{labels:n,items:n.map(o=>r.get(o))}}function mh(i){if(!i||typeof i!="object"||Array.isArray(i))return null;let e=i;if(typeof e.currency!="string"||!e.currency||!Array.isArray(e.packages))return null;let t=[];for(let n of e.packages){if(!n||typeof n!="object")continue;let s=n;if(typeof s.planKey!="string"||!s.planKey||!Array.isArray(s.prices))continue;let r=[],o=new Set;for(let a of s.prices){if(!a||typeof a!="object")continue;let l=a;typeof l.categoryKey!="string"||!l.categoryKey||o.has(l.categoryKey)||typeof l.unitPrice!="number"||!Number.isInteger(l.unitPrice)||l.unitPrice<0||(o.add(l.categoryKey),r.push({categoryKey:l.categoryKey,unitPrice:l.unitPrice}))}r.length&&t.push({planKey:s.planKey,name:typeof s.name=="string"&&s.name?s.name:s.planKey,prices:r})}return t.length?{currency:e.currency,packages:t}:null}function fh(i){if(!i||typeof i!="object"||Array.isArray(i))throw new F("invalid_checkout_response",502);let e=i,t=typeof e.redirectUrl=="string"&&!!e.redirectUrl,n=!!e.clientPayload&&typeof e.clientPayload=="object"&&!Array.isArray(e.clientPayload);if(typeof e.orderId!="string"||!e.orderId||typeof e.currency!="string"||!e.currency||typeof e.totalMinor!="number"||!Number.isFinite(e.totalMinor)||typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt)||t===n)throw new F("invalid_checkout_response",502);return{orderId:e.orderId,totalMinor:e.totalMinor,currency:e.currency,expiresAt:e.expiresAt,...t?{redirectUrl:e.redirectUrl}:{},...n?{clientPayload:e.clientPayload}:{}}}function il(i,e){return{seasonKey:i.key,planActivationId:i.planActivationId,operationId:e.operationId,holdId:e.holdId,expiresAt:e.expiresAt,policy:e.policy,pricingAuthority:"host",authoritativeAmountIncluded:!1,state:e.state,allocations:e.allocations.map(({eventId:t,state:n})=>({eventKey:t,state:n}))}}var ue,qe,be,Ke,Ut,ye,ve,Z,de,nl,Wi=class{constructor(e,t){L(this,Z);L(this,ue);L(this,qe);L(this,be);L(this,Ke);L(this,Ut);L(this,ye,!1);L(this,ve,null);T(this,ue,e),T(this,qe,(t.apiBase??sh).replace(/\/$/,"")),T(this,be,t.access),T(this,Ke,t.fetch??globalThis.fetch.bind(globalThis)),T(this,Ut,t.recoveryTimeoutMs??rh),m(this,be).onRenewed(n=>x(this,Z,nl).call(this,n))}async descriptor(){let{body:e}=await x(this,Z,de).call(this,"GET","");return e.season}async chart(){let{body:e}=await x(this,Z,de).call(this,"GET","/chart");return e}async availability(){let{body:e}=await x(this,Z,de).call(this,"GET","/availability"),t=Object.values(e.seats??{});return{...e,freeCount:t.filter(n=>n==="free").length,blockedCount:t.filter(n=>n!=="free").length}}async hold(e,t){let{body:n,response:s}=await x(this,Z,de).call(this,"POST","/holds",{operationId:t,labels:[...e]});return{operation:Gt(n.operation,{seasonId:m(this,ue),operationId:t}),response:s}}async bestAvailable(e){let{body:t,response:n}=await x(this,Z,de).call(this,"POST","/best-available",{operationId:e.operationId,qty:e.qty,...e.categoryKey?{categoryKey:e.categoryKey}:{},...e.zoneId?{zoneId:e.zoneId}:{},...e.accessibility?.length?{accessibility:[...e.accessibility]}:{},...e.requireContiguous===!0?{requireContiguous:!0}:{}}),s=Gt(t.operation,{seasonId:m(this,ue),operationId:e.operationId},"invalid_best_available_response"),{labels:r,items:o}=uh(t.labels,t.items,e.qty);return{operation:s,labels:r,items:o,response:n}}async operation(e){let{body:t,response:n}=await x(this,Z,de).call(this,"GET",`/operations/${encodeURIComponent(e)}`);return{operation:Gt(t.operation,{seasonId:m(this,ue),operationId:e}),response:n}}async release(e,t){let{body:n,response:s}=await x(this,Z,de).call(this,"POST",`/holds/${encodeURIComponent(e)}/release`,{releaseActionId:t});return{operation:Gt(n.operation,{seasonId:m(this,ue),operationId:e}),response:s}}async prices(){let e;try{({body:e}=await x(this,Z,de).call(this,"GET","/prices"))}catch(t){if(t instanceof F&&t.status===404)return null;throw t}return mh(e)}async checkout(e){let{body:t}=await x(this,Z,de).call(this,"POST","/checkout",{operationId:e.operationId,buyerEmail:e.buyerEmail,...e.buyerName?{buyerName:e.buyerName}:{},...e.provider?{provider:e.provider}:{},...e.returnUrl?{returnUrl:e.returnUrl}:{}});return fh(t)}async orderStatus(e){let t=await m(this,Ke).call(this,`${m(this,qe)}/pub/orders/${encodeURIComponent(e)}/status`,{method:"GET",credentials:"omit"}),n=await t.json().catch(()=>null);if(!t.ok)throw new F(tl(n),t.status);if(n===null)throw new F("invalid_json_response",502);return n}async renewalIntent(e){let{body:t}=await x(this,Z,de).call(this,"POST","/renewal-intents",{offerId:e}),n=t.intent;if(!n||n.offerId!==e||n.state!=="intent_received"||!n.intentId||!Number.isFinite(n.receivedAt))throw new F("invalid_renewal_intent_response",502);return n}async waitForTerminal(e,t,n){let s=Date.now(),r=t?{operation:Gt(t.operation,{seasonId:m(this,ue),operationId:e}),response:t.response}:await this.operation(e);for(;r.operation.state==="preparing"||r.operation.state==="commit_pending"||r.operation.state==="expire_pending"||r.operation.state==="booking_pending"||r.operation.state==="abort_pending";){if(Date.now()-s>=m(this,Ut))throw new Ki(e);await lh(ah(r.response,r.operation),n),r=await this.operation(e)}return r.operation}destroy(){m(this,ye)||(T(this,ye,!0),m(this,be).onRenewed(void 0),m(this,be).clear())}};ue=new WeakMap,qe=new WeakMap,be=new WeakMap,Ke=new WeakMap,Ut=new WeakMap,ye=new WeakMap,ve=new WeakMap,Z=new WeakSet,de=async function(e,t,n,s=!0){if(m(this,ye))throw new F("season_api_destroyed",409);if(m(this,ve))throw m(this,ve);let r=await m(this,be).authorization();if(m(this,ye))throw new F("season_api_destroyed",409);if(m(this,ve))throw m(this,ve);if(!r)throw new ne({reason:"no_token",retryable:!1});let o=await m(this,Ke).call(this,`${m(this,qe)}/pub/seasons/${encodeURIComponent(m(this,ue))}${t}`,{method:e,headers:{Authorization:r,...n===void 0?{}:{"Content-Type":"application/json"}},body:n===void 0?void 0:JSON.stringify(n)}),a=await o.json().catch(()=>null);if(!o.ok){let l=tl(a);if(s&&await m(this,be).handleFailure(o.status,l))return x(this,Z,de).call(this,e,t,n,!1);let c=m(this,be).unavailable;throw c?new ne(c):new F(l,o.status)}if(a===null)throw new F("invalid_json_response",502);return{body:a,response:o}},nl=async function(e){if(m(this,ye))return;let t=`/pub/seasons/${encodeURIComponent(m(this,ue))}/session/adopt`;for(let n=0;n<2;n++){if(m(this,ye))return;try{if((await m(this,Ke).call(this,`${m(this,qe)}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit"})).ok){T(this,ve,null);return}}catch{}}if(!m(this,ye))throw T(this,ve,new F("season_session_adopt_failed",409)),m(this,ve)};var gh=2500;function bh(i){let e=typeof i=="string"?document.querySelector(i):i;if(!e)throw new Error("seatlayer: Season picker container was not found");return e}function yh(i,e,t){if(i.startsAt==null)return{date:"Date to be announced",time:null};try{let n=new Date(i.startsAt),s=e?{timeZone:e}:{};return{date:new Intl.DateTimeFormat(t,{dateStyle:"medium",...s}).format(n),time:new Intl.DateTimeFormat(t,{timeStyle:"short",...s}).format(n)}}catch{return{date:"Date to be announced",time:null}}}function ol(i){return i.state==="committed"||i.state==="booked"}var qn=class{constructor(e,t,n){this.transport=e;this.sink=t;this.intervalMs=n;this.timer=null;this.stopped=!0;this.prior={}}start(){this.stopped&&(this.stopped=!1,this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}stop(){this.stopped=!0,this.timer&&clearTimeout(this.timer),this.timer=null}async tick(){if(!this.stopped)try{let e=await this.transport.objects(""),t=Object.entries(e.seats).filter(([n,s])=>this.prior[n]!==s).map(([n,s])=>({label:n,status:s}));this.prior={...e.seats},t.length&&this.sink.applyStatuses(t)}catch{this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},Kn=class{constructor(e,t){this.api=e;this.realtimePollMs=t;this.descriptorValue=null;this.availabilityValue=null;this.categoryLabels=new Map;this.reuseAvailabilityOnce=!1;this.nextOperationId=null;this.nextBestAvailable=null;this.nextReleaseActionId=null;this.operationByHold=new Map}prime(e,t){this.descriptorValue=e,this.availabilityValue=t,this.reuseAvailabilityOnce=!0}queueOperation(e){this.nextOperationId=e}queueBestAvailable(e,t){if(this.nextBestAvailable)throw new F("season_best_available_in_progress",409);let n={operationId:e,...t.accessibility?.length?{accessibility:[...t.accessibility]}:{},...t.requireContiguous===!0?{requireContiguous:!0}:{}};return this.nextBestAvailable=n,n}clearBestAvailable(e){this.nextBestAvailable===e&&(this.nextBestAvailable=null)}queueRelease(e){this.nextReleaseActionId=e}operationForHold(e){return this.operationByHold.get(e)??null}remember(e){this.operationByHold.set(e.holdId,e)}forget(e){this.operationByHold.delete(e)}async chart(e){let[t,n]=await Promise.all([this.descriptorValue?Promise.resolve(this.descriptorValue):this.api.descriptor(),this.api.chart()]);this.descriptorValue=t;for(let s of n.categories??[])typeof s?.key=="string"&&typeof s.label=="string"&&this.categoryLabels.set(s.key,s.label);return{doc:n,event:{key:t.key,name:t.name,venue:t.venue,startsAt:t.occurrences[0]?.startsAt??null,timezone:t.timezone,currency:t.currency,mode:t.mode,inventoryModelVersion:2}}}async objects(e){let t;return this.reuseAvailabilityOnce&&this.availabilityValue?(this.reuseAvailabilityOnce=!1,t=this.availabilityValue):(t=await this.api.availability(),this.availabilityValue=t),{seats:{...t.seats}}}async hold(e,t,n,s){if(s)throw new F("season_hold_replace_unsupported",409);let r=this.nextOperationId??`sop_${crypto.randomUUID()}`;this.nextOperationId=null;let o=await this.api.hold(t.map(l=>l.label),r),a=await this.api.waitForTerminal(r,o);if(!ol(a))throw new F(`season_operation_${a.state}`,409);return this.remember(a),{holdId:a.holdId,expiresAt:a.expiresAt,items:t.map(l=>({label:l.label,objectId:l.label,objectType:"seat",categoryKey:"",tierId:l.tierId??null,unitPrice:0,currency:this.descriptorValue?.currency??"USD",...l.quantity==null?{}:{quantity:l.quantity}}))}}async release(e,t,n){let s=this.operationForHold(n);if(!s)throw new F("season_hold_not_found",404);let r=this.nextReleaseActionId??`sra_${crypto.randomUUID()}`;this.nextReleaseActionId=null;let o=await this.api.release(s.operationId,r),a=await this.api.waitForTerminal(s.operationId,o);if(a.state==="partial_terminal")throw this.remember(a),new F("season_operation_partial_terminal",409);this.forget(n)}async bestAvailable(e,t,n,s){let r=this.nextBestAvailable;this.nextBestAvailable=null;let o=r?.operationId??`sop_${crypto.randomUUID()}`,a=await this.api.bestAvailable({operationId:o,qty:t,...n?{categoryKey:n}:{},...s?{zoneId:s}:{},...r?.accessibility?.length?{accessibility:r.accessibility}:{},...r?.requireContiguous===!0?{requireContiguous:!0}:{}}),l=await this.api.waitForTerminal(o,a);if(!ol(l))throw new F(`season_operation_${l.state}`,409);this.remember(l);let c=new Map(a.items.map(d=>[d.label,d]));return{holdId:l.holdId,expiresAt:l.expiresAt,labels:[...a.labels],items:a.labels.map(d=>{let p=c.get(d);return{label:d,objectId:p?.objectId??d,objectType:"seat",categoryKey:p?.categoryKey??n??"",tierId:p?.tierId??null,unitPrice:0,currency:this.descriptorValue?.currency??"USD",...p?.quantity==null?{}:{quantity:p.quantity}}})}}categoryLabel(e){return this.categoryLabels.get(e)??e}socketUrl(){return""}createRealtime(e,t){return new qn(this,t,this.realtimePollMs)}},M,Xe,vt,re,Y,Kt,X,Pe,G,J,me,wt,_e,Le,Qe,pe,Wt,we,xt,St,Ze,kt,De,Je,et,Tt,w,al,ll,Yn,Xn,Qn,Zn,Yi,We,cl,dl,Ae,qt,pl,hl,Jn,es,ul,ml,fl,ts,is,j,Ye,ns,yt,Wn=class{constructor(e){L(this,w);L(this,M);L(this,Xe);L(this,vt);L(this,re);L(this,Y);L(this,Kt,new AbortController);L(this,X,null);L(this,Pe,null);L(this,G,null);L(this,J,null);L(this,me,null);L(this,wt,null);L(this,_e,null);L(this,Le,null);L(this,Qe,null);L(this,pe,[]);L(this,Wt,new Map);L(this,we,!1);L(this,xt,!1);L(this,St);L(this,Ze,null);L(this,kt,null);L(this,De,null);L(this,Je,"handoff");L(this,et,null);L(this,Tt,!1);if(!e?.season)throw new Error("seatlayer: `season` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if("event"in e||"performanceGroup"in e)throw new Error("seatlayer: SeasonPicker is not SeatPicker or PerformanceGroupPicker");T(this,M,e),T(this,Xe,bh(e.container));let t={onExpired:s=>e.onAccessExpired?.(s),onUnavailable:s=>{let r=m(this,Ze)&&s.reason==="provider_failed"?m(this,Ze):s;T(this,Ze,null),T(this,kt,r.reason==="provider_failed"?null:r),e.onAccessUnavailable?.(r),x(this,w,ul).call(this,r)}};if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider){let{access:s,loader:r}=el({base:(e.apiBase??"https://api.seatlayer.io").replace(/\/$/,""),season:e.season,fetch:e.fetch,onRefused:o=>{T(this,Ze,o)},accessHooks:t});T(this,vt,s),T(this,St,r)}else T(this,St,null),T(this,vt,new oe({token:e.buyerAccessToken,provider:e.buyerAccessTokenProvider,...t}));T(this,re,new Wi(e.season,{apiBase:e.apiBase,access:m(this,vt),fetch:e.fetch,recoveryTimeoutMs:e.recoveryTimeoutMs})),T(this,Y,new Kn(m(this,re),Math.max(750,e.realtimePollMs??gh)))}async render(){x(this,w,ns).call(this),Ja(),x(this,w,ll).call(this),x(this,w,j).call(this,{kind:"loading",message:"Loading Season seats available for every performance."},!0);try{let[e,t,n]=await Promise.all([m(this,re).descriptor(),m(this,re).availability(),m(this,re).prices().catch(()=>null)]);return m(this,we)?this:(T(this,X,e),T(this,Pe,t),T(this,De,n),T(this,Je,m(this,M).checkout==="hosted"&&e.checkoutMode!=="server"&&n?"hosted":"handoff"),m(this,Y).prime(e,t),x(this,w,Yn).call(this),await x(this,w,al).call(this,e),m(this,we)?this:(n&&x(this,w,Yn).call(this),x(this,w,fl).call(this),x(this,w,j).call(this,{kind:"ready",message:`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every included performance.`}),m(this,M).initialOperationId&&await this.restoreOperation(m(this,M).initialOperationId),this))}catch(e){if(m(this,we))return this;throw x(this,w,Ye).call(this,e)}}async holdSameSeat(e,t){if(x(this,w,yt).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");if(m(this,Y).queueOperation(t),m(this,J).selectObjectsWithoutConfirmation([...e]),x(this,w,j).call(this,{kind:"pending",message:"Holding the same seats for every performance.",operationId:t},!0),await m(this,J).handleCta(),!m(this,G))throw new F("season_hold_not_created",409);return m(this,G)}async holdBestAvailable(e,t,n={}){if(x(this,w,yt).call(this),!t.startsWith("sop_"))throw new Error("seatlayer: caller-stable Season operation id is required");if(!Number.isInteger(e)||e<1)throw new Error("seatlayer: positive Best Available quantity is required");let s=m(this,J).maxTickets;if(e>s)throw new Error(`seatlayer: Best Available quantity cannot exceed the configured maximum (${s})`);if(m(this,xt))throw new F("season_best_available_in_progress",409);T(this,xt,!0);let r=null;try{if(r=m(this,Y).queueBestAvailable(t,n),x(this,w,j).call(this,{kind:"pending",message:`Finding ${e} Season seat${e===1?"":"s"} available for every performance.`,operationId:t},!0),!await m(this,J).bestAvailableOrThrow(e,n.categoryKey,{zoneId:n.zoneId})||!m(this,G))throw new F("season_hold_not_created",409);return m(this,G)}catch(o){throw x(this,w,Ye).call(this,o,t)}finally{r&&m(this,Y).clearBestAvailable(r),T(this,xt,!1)}}async restoreOperation(e){x(this,w,yt).call(this),x(this,w,j).call(this,{kind:"pending",message:"Restoring your Season selection.",operationId:e},!0);try{let t=await m(this,re).waitForTerminal(e,void 0,m(this,Kt).signal);return t.state==="aborted"||t.state==="expired"?(T(this,G,null),m(this,M).onHoldChange?.(null),x(this,w,j).call(this,{kind:"released",message:"The previous Season selection is no longer held.",operationId:e}),null):(m(this,Y).remember(t),x(this,w,Zn).call(this,t,!1))}catch(t){throw x(this,w,Ye).call(this,t,e)}}async release(e){x(this,w,yt).call(this);let t=m(this,G);if(t){if(!e)throw new Error("seatlayer: caller-stable release action id is required");m(this,Y).queueRelease(e),x(this,w,j).call(this,{kind:"pending",message:"Releasing the Season seats.",operationId:t.operationId},!0);try{m(this,J)?.getCurrentHold()?.holdId===t.holdId?await m(this,J).release():(await m(this,Y).release("",[],t.holdId),x(this,w,Yi).call(this)),x(this,w,j).call(this,{kind:"released",message:"The Season seats were released.",operationId:t.operationId})}catch(n){throw x(this,w,Ye).call(this,n,t.operationId)}}}async createRenewalIntent(e){if(x(this,w,yt).call(this),!e.startsWith("sro_"))throw new Error("seatlayer: Season renewal offer id is required");x(this,w,j).call(this,{kind:"pending",message:"Recording renewal intent. No purchase is made in the browser."},!0);try{let t=await m(this,re).renewalIntent(e);return x(this,w,j).call(this,{kind:"renewal_intent",message:"Renewal intent recorded. Your ticketing platform will confirm price, payment, and renewal."}),m(this,M).onRenewalIntent?.(t),t}catch(t){throw x(this,w,Ye).call(this,t)}}getDescriptor(){return m(this,X)}getAvailability(){return m(this,Pe)}getHandoff(){return m(this,G)}destroy(){m(this,we)||(T(this,we,!0),m(this,Kt).abort(),x(this,w,is).call(this),m(this,J)?.destroy(),m(this,re).destroy(),m(this,Xe).replaceChildren(),T(this,me,null),T(this,wt,null),T(this,_e,null),T(this,Le,null),T(this,Qe,null),T(this,X,null),T(this,Pe,null),T(this,G,null))}};M=new WeakMap,Xe=new WeakMap,vt=new WeakMap,re=new WeakMap,Y=new WeakMap,Kt=new WeakMap,X=new WeakMap,Pe=new WeakMap,G=new WeakMap,J=new WeakMap,me=new WeakMap,wt=new WeakMap,_e=new WeakMap,Le=new WeakMap,Qe=new WeakMap,pe=new WeakMap,Wt=new WeakMap,we=new WeakMap,xt=new WeakMap,St=new WeakMap,Ze=new WeakMap,kt=new WeakMap,De=new WeakMap,Je=new WeakMap,et=new WeakMap,Tt=new WeakMap,w=new WeakSet,al=async function(e){let t=new Ue(zi({container:m(this,wt),event:e.key,apiBase:m(this,M).apiBase,transport:m(this,Y),hideEventDetails:!0,maxSelection:m(this,M).maxSelection,selectedObjects:m(this,M).selectedObjects,selectableObjects:m(this,M).selectableObjects,numberOfPlacesToSelect:m(this,M).numberOfPlacesToSelect,selectionValidators:m(this,M).selectionValidators,locale:m(this,M).locale,messages:m(this,M).messages,languages:m(this,M).languages,colorblindSafe:m(this,M).colorblindSafe,initialView:m(this,M).initialView,enable3D:m(this,M).enable3D,max3DSeats:m(this,M).max3DSeats,hideBadge:m(this,M).hideBadge,theme:m(this,M).theme,confirmSelection:m(this,M).confirmSelection,seatView:m(this,M).seatView,onBuyerViewChange:m(this,M).onBuyerViewChange,onAnalytics:(n,s)=>{try{m(this,M).onAnalytics?.(n,{...s,metricScope:"season",seasonKey:e.key,planActivationId:e.planActivationId,performanceCount:e.occurrenceCount})}catch{}},onSelectionChange:n=>{T(this,pe,n.map(s=>s.label)),T(this,Wt,new Map(n.filter(s=>!!s.categoryKey).map(s=>[s.label,s.categoryKey]))),x(this,w,We).call(this),m(this,M).onSelectionChange?.(n)},onSelectionValidityChange:m(this,M).onSelectionValidityChange,onHoldChange:n=>{if(!n){x(this,w,Yi).call(this);return}let s=m(this,Y).operationForHold(n.holdId);s&&x(this,w,Zn).call(this,s,!0)},onCheckout:()=>{m(this,G)&&(x(this,w,Ae).call(this,"checkout"),m(this,M).onContinue?.(m(this,G)),m(this,Je)==="hosted"&&x(this,w,ml).call(this,m(this,G)))},onHoldExpired:()=>{x(this,w,Yi).call(this),x(this,w,j).call(this,{kind:"released",message:"The Season hold expired. Choose seats again."}),m(this,M).onHoldExpired?.()},onError:n=>x(this,w,Ye).call(this,n)},{surface:"season",performanceCount:e.occurrenceCount,selectionMode:"same_seat",suppressPricing:!0,groupSelectionSummary:()=>{let n=m(this,pe).length;return n?{seats:n,performances:e.occurrenceCount,performancesChosen:e.occurrenceCount,perPerformance:n}:null}}));T(this,J,t),await t.render()},ll=function(){m(this,Xe).replaceChildren();let e=document.createElement("section");e.className="sl-season-root",e.setAttribute("aria-label","Season ticket selection");let t=document.createElement("header");t.className="sl-season-hero";let n=document.createElement("ol");n.className="sl-season-progress",n.setAttribute("aria-label","Season checkout progress");for(let[y,k]of["Choose seats","Review package","Checkout"].entries()){let S=document.createElement("li");S.dataset.state=y===0?"current":"upcoming";let v=document.createElement("span");v.textContent=String(y+1),S.append(v,k),n.append(S)}let s=document.createElement("div");s.className="sl-season-stage";let r=document.createElement("div");r.className="sl-season-map";let o=document.createElement("aside");o.className="sl-season-summary-card",o.setAttribute("aria-label","Your Season selection");let a=document.createElement("h3");a.textContent="Your Season seats";let l=document.createElement("p");l.className="sl-season-selection",l.textContent="Choose a seat on the map.";let c=document.createElement("p");c.className="sl-season-rule";let d=document.createElement("i");d.textContent="1\xD7";let p=document.createElement("span");p.textContent="Each seat you choose is reserved for every included performance.",c.append(d,p);let u=document.createElement("p");u.className="sl-season-availability";let h=document.createElement("p");h.className="sl-season-checkout-note",h.textContent="Your ticketing platform confirms package price, payment, admission passes, and member benefits.",o.append(a,l,c,u,h),s.append(r,o);let g=document.createElement("p");g.className="sl-season-status",g.setAttribute("role","status"),g.setAttribute("aria-live","polite"),e.append(t,n,s,g),m(this,Xe).append(e),T(this,me,e),T(this,wt,r),T(this,_e,g),T(this,Le,l),T(this,Qe,u)},Yn=function(){let e=m(this,X),t=m(this,M).offer,n=m(this,me).querySelector(".sl-season-hero");n.replaceChildren();let s=document.createElement("div");s.className="sl-season-copy";let r=document.createElement("p");r.className="sl-season-eyebrow",r.textContent=t?.eyebrow??"Season ticket";let o=document.createElement("h2");o.textContent=e.edition?`${e.name} \xB7 ${e.edition}`:e.name;let a=document.createElement("p");a.className="sl-season-promise",a.textContent=`Choose once and keep the same seat for all ${e.occurrenceCount} included performances.`;let l=document.createElement("div");l.className="sl-season-facts";for(let h of[`${e.occurrenceCount} performances`,e.venue,t?.renewalLabel??"Same-seat package"].filter(Boolean)){let g=document.createElement("span");g.className="sl-season-fact",g.textContent=h,l.append(g)}s.append(r,o,a,l),n.append(s);let c=document.createElement("div");c.className="sl-season-offer";let d=document.createElement("span");d.className="sl-season-offer-label";let p=x(this,w,qt).call(this);if(p){d.textContent=b("season.packagePriceLabel","Package price"),c.append(d,x(this,w,hl).call(this,p,e.occurrenceCount));let h=document.createElement("span");h.className="sl-season-price-note",h.textContent=b("season.packagePricePerSeat","Per seat, for the whole package."),c.append(h),n.append(c),x(this,w,Xn).call(this,n,t),x(this,w,Qn).call(this,n,e),x(this,w,We).call(this);return}d.textContent=t?.priceLabel?"Season package":"Package price";let u=document.createElement(t?.priceLabel?"strong":"span");if(u.className=t?.priceLabel?"sl-season-price":"sl-season-price-note",u.textContent=t?.priceLabel??"Confirmed by your ticketing platform at checkout",c.append(d,u),t?.compareAtPriceLabel){let h=document.createElement("span");h.className="sl-season-was",h.textContent=t.compareAtPriceLabel,c.append(h)}if(t?.savingsLabel){let h=document.createElement("span");h.className="sl-season-saving",h.textContent=t.savingsLabel,c.append(h)}if(t?.priceNote){let h=document.createElement("span");h.className="sl-season-price-note",h.textContent=t.priceNote,c.append(h)}n.append(c),x(this,w,Xn).call(this,n,t),x(this,w,Qn).call(this,n,e),x(this,w,We).call(this)},Xn=function(e,t){if(!t?.benefits?.length)return;let n=document.createElement("ul");n.className="sl-season-benefits";for(let s of t.benefits.slice(0,6)){let r=document.createElement("li");r.textContent=s,n.append(r)}e.append(n)},Qn=function(e,t){let n=document.createElement("details");n.className="sl-season-dates";let s=document.createElement("summary");s.textContent=`All ${t.occurrenceCount} performances included`;let r=document.createElement("ol");r.className="sl-season-date-list";for(let o of t.occurrences){let a=document.createElement("li");a.className="sl-season-date";let l=document.createElement("b");l.textContent=o.name;let c=yh(o,t.timezone,m(this,M).locale),d=document.createElement("time");o.startsAt!=null&&(d.dateTime=new Date(o.startsAt).toISOString()),d.textContent=c.time?`${c.date} \xB7 ${c.time}`:c.date,a.append(l,d),r.append(a)}n.append(s,r),e.append(n)},Zn=function(e,t){if(e.state==="booked")return T(this,G,null),m(this,Y).forget(e.holdId),m(this,J)?.notifyGroupSettled("booked"),x(this,w,Ae).call(this,"complete"),x(this,w,j).call(this,{kind:"booked",message:`Your Season booking is complete for all ${m(this,X).occurrenceCount} performances. No further checkout action is needed.`,operationId:e.operationId}),m(this,M).onHoldChange?.(null),null;if(e.state==="partial_terminal")return T(this,G,null),T(this,pe,[]),m(this,Y).forget(e.holdId),m(this,J)?.notifyGroupSettled("lost"),x(this,w,We).call(this),x(this,w,Ae).call(this,"review"),x(this,w,j).call(this,{kind:"partial_terminal",message:"This Season selection needs organizer review. Do not try another selection.",operationId:e.operationId}),m(this,M).onHoldChange?.(null),null;if(e.state!=="committed")return T(this,G,null),m(this,Y).forget(e.holdId),m(this,J)?.notifyGroupSettled("lost"),x(this,w,j).call(this,{kind:"failed",message:"The Season selection could not be completed.",operationId:e.operationId}),m(this,M).onHoldChange?.(null),null;let n=il(m(this,X),e),s=m(this,G)?.holdId!==n.holdId;return T(this,G,n),x(this,w,We).call(this),x(this,w,Ae).call(this,"review"),m(this,M).onHoldChange?.(n),x(this,w,j).call(this,{kind:"held",message:`Your seats are held for all ${m(this,X).occurrenceCount} performances. Review and continue to checkout.`,operationId:e.operationId}),s&&t&&m(this,M).onHold?.(n),n},Yi=function(){T(this,G,null),T(this,pe,[]),x(this,w,We).call(this),x(this,w,Ae).call(this,"choose"),m(this,M).onHoldChange?.(null)},We=function(){if(!m(this,Le))return;let e=m(this,pe).length;if(!e)m(this,Le).textContent="Choose a seat on the map. Unavailable seats are already booked on at least one included performance.";else{m(this,Le).replaceChildren();let t=document.createElement("strong");t.textContent=m(this,pe).join(", "),m(this,Le).append(t,` \xB7 ${e} Season seat${e===1?"":"s"} across all ${m(this,X)?.occurrenceCount??0} performances`)}m(this,Qe)&&m(this,Pe)&&(m(this,Qe).textContent=`${m(this,Pe).freeCount} seat${m(this,Pe).freeCount===1?"":"s"} currently available for the complete Season`),x(this,w,cl).call(this),x(this,w,dl).call(this)},cl=function(){let e=m(this,me)?.querySelector(".sl-season-summary-card");if(!e)return;e.querySelector(".sl-season-package-total")?.remove();let t=x(this,w,Jn).call(this);if(t==null)return;let n=m(this,De)?.currency??m(this,X)?.currency??"USD",s=m(this,X)?.occurrenceCount??0,r=document.createElement("p");r.className="sl-season-package-total";let o=document.createElement("span");o.textContent=b("season.packageTotal","Package total");let a=document.createElement("strong");a.textContent=x(this,w,es).call(this,t,n);let l=document.createElement("span");l.className="sl-season-package-total-scope",l.textContent=b("season.priceForAllDates","for all {count} dates").replace("{count}",String(s)),r.append(o,a,l);let c=e.querySelector(".sl-season-checkout-note");c?e.insertBefore(r,c):e.append(r)},dl=function(){let e=m(this,me)?.querySelector(".sl-season-checkout-note");if(e){if(m(this,Je)==="hosted"){e.textContent=b("season.hostedCheckoutNote","You pay for the whole package here. Your tickets for every performance arrive by email.");return}if(x(this,w,qt).call(this)){e.textContent=b("season.serverCheckoutPricedNote","Payment and admission passes are completed in the checkout on this page.");return}e.textContent="Your ticketing platform confirms package price, payment, admission passes, and member benefits."}},Ae=function(e){let t=e==="choose"?0:e==="review"?1:e==="checkout"?2:3;m(this,me)?.querySelectorAll(".sl-season-progress li").forEach((n,s)=>{n.dataset.state=s<t?"done":s===t?"current":"upcoming";let r=n.querySelector("span");r&&(r.textContent=s<t?"\u2713":String(s+1))})},qt=function(){let e=m(this,De)?.packages;if(!e?.length)return null;let t=m(this,X)?.planActivationId,n=e.find(o=>o.planKey===t);if(n)return n;let s=m(this,St)?.session?.planActivationIds;return(s?.length?e.filter(o=>s.includes(o.planKey)):[])[0]??e[0]},pl=function(e){let t=x(this,w,qt).call(this)?.prices.find(n=>n.categoryKey===e);return t?t.unitPrice:null},hl=function(e,t){let n=document.createElement("ul");n.className="sl-season-price-lines";let s=m(this,De)?.currency??m(this,X)?.currency??"USD";for(let r of e.prices){let o=document.createElement("li"),a=document.createElement("span");a.className="sl-season-price-category",a.textContent=m(this,Y).categoryLabel(r.categoryKey);let l=document.createElement("strong");l.className="sl-season-price",l.textContent=x(this,w,es).call(this,r.unitPrice,s);let c=document.createElement("span");c.className="sl-season-price-scope",c.textContent=b("season.priceForAllDates","for all {count} dates").replace("{count}",String(t)),o.append(a,l,c),n.append(o)}return n},Jn=function(){if(!m(this,pe).length||!x(this,w,qt).call(this))return null;let e=0;for(let t of m(this,pe)){let n=m(this,Wt).get(t),s=n?x(this,w,pl).call(this,n):null;if(s==null)return null;e+=s}return e},es=function(e,t){let n=rl(e,t),s=Number.isInteger(n);return sl(n,t,{locale:m(this,M).locale,fallback:(r,o)=>`${r} ${o}`,...s?{minimumFractionDigits:0,maximumFractionDigits:0}:{}})},ul=function(e){let t=e.reason==="audience_not_public"?b("season.accessNotPublic","This season isn't open for online booking yet."):e.reason==="sales_not_open"?b("season.accessSalesNotOpen","Season tickets aren't on sale right now. Check back when sales open."):e.reason==="origin_not_allowed"?b("season.accessOriginNotAllowed","This season can't be booked from this page."):b("season.accessUnavailable","Season tickets can't be loaded right now. Please try again later.");x(this,w,j).call(this,{kind:"failed",message:t})},ml=async function(e){if(!m(this,Tt)){T(this,Tt,!0);try{let t=m(this,De)?.currency??m(this,X)?.currency??"USD",n=x(this,w,Jn).call(this);if(n==null){x(this,w,j).call(this,{kind:"failed",message:b("season.checkoutNotPriced","We can\u2019t price this package here. Your seats are still held \u2014 please continue in the checkout on this page."),operationId:e.operationId});return}await x(this,w,ts).call(this,{kind:"pay",provider:null,order:{holdId:e.operationId,expiresAt:e.expiresAt,currency:t,total:rl(n,t),labels:[...m(this,pe)]}})}finally{T(this,Tt,!1)}}},fl=function(){if(m(this,Je)!=="hosted")return;let e=ji(m(this,M).season);e?.outcome!=="success"||!e.orderId||(x(this,w,Ae).call(this,"checkout"),x(this,w,ts).call(this,{kind:"resume",orderId:e.orderId}))},ts=async function(e){let t;try{({mountCheckout:t}=await pi())}catch(s){m(this,M).onError?.(s),x(this,w,j).call(this,{kind:"failed",message:b("season.checkoutCouldNotBeOpened","Checkout could not be opened. Your seats are still held \u2014 please try again.")});return}let n=m(this,J)?.root;m(this,we)||!n||(x(this,w,is).call(this),T(this,et,t({root:n,state:e,eventKey:m(this,M).season,formatMoney:(s,r)=>sl(s,r,{locale:m(this,M).locale,fallback:(o,a)=>`${o} ${a}`,...Number.isInteger(s)?{minimumFractionDigits:0,maximumFractionDigits:0}:{}}),startSession:s=>m(this,re).checkout({operationId:s.holdId,buyerEmail:s.buyerEmail,...s.buyerName?{buyerName:s.buyerName}:{},...m(this,M).returnUrl?{returnUrl:m(this,M).returnUrl}:{}}),orderStatus:s=>m(this,re).orderStatus(s),onCancel:()=>{T(this,et,null),m(this,G)&&x(this,w,Ae).call(this,"review")},onConfirmed:s=>{m(this,M).onOrderConfirmed?.(s),x(this,w,Ae).call(this,"complete"),x(this,w,j).call(this,{kind:"booked",message:b("season.orderConfirmed","Your season tickets are confirmed for every included performance.")})},onError:s=>m(this,M).onError?.(s)})))},is=function(){m(this,et)?.destroy(),T(this,et,null)},j=function(e,t=!1){m(this,_e)&&(m(this,_e).textContent=e.message,m(this,_e).dataset.kind=e.kind),m(this,me)&&(m(this,me).dataset.busy=String(t)),m(this,M).onStatusChange?.(e)},Ye=function(e,t){let n=e instanceof ne&&e.reason==="provider_failed"&&m(this,kt)?new ne(m(this,kt)):e;if(n instanceof ne)return m(this,M).onError?.(n),n;let s=n instanceof F?`Season selection unavailable (${n.code}).`:"Season selection could not be completed.";return x(this,w,j).call(this,{kind:"failed",message:s,operationId:t}),m(this,M).onError?.(n),n},ns=function(){if(m(this,we))throw new Error("seatlayer: SeasonPicker was destroyed")},yt=function(){if(x(this,w,ns).call(this),!m(this,X)||!m(this,J))throw new Error("seatlayer: render SeasonPicker before using it")};function vh(i,e={}){let t=e.origin??"";if(!t)try{t=new URL(i.src,window.location.href).origin}catch{t=""}let n=!1,s=null,r=null,o=null,a="",l=null,c="",d=()=>{if(n)return;n=!0,s=i.getAttribute("style"),Object.assign(i.style,{position:"fixed",inset:"0",margin:"0",border:"0",zIndex:"2147483000",background:c||"transparent"}),i.style.width="100vw",i.style.height="100vh",i.style.width="100dvw",i.style.height="100dvh";let h=document.documentElement;r=h.style.overflow,h.style.overflow="hidden",document.body&&(o=document.body.style.overflow,document.body.style.overflow="hidden"),l=g=>{g.key==="Escape"&&p()},window.addEventListener("keydown",l)},p=()=>{n&&(n=!1,s===null?i.removeAttribute("style"):i.setAttribute("style",s),s=null,a&&(i.style.height=a),r!==null&&(document.documentElement.style.overflow=r,r=null),o!==null&&document.body&&(document.body.style.overflow=o,o=null),l&&(window.removeEventListener("keydown",l),l=null))},u=h=>{if(h.source!==i.contentWindow||t&&h.origin!==t||!h.data||typeof h.data!="object")return;let g=h.data;if(g.type==="seatlayer:height"){typeof g.px=="number"&&Number.isFinite(g.px)&&g.px>0&&(a=`${Math.round(g.px)}px`,n||(i.style.height=a));return}g.type==="seatlayer:fullscreen"&&(typeof g.background=="string"&&/^[#a-zA-Z0-9(),.%\s-]{1,64}$/.test(g.background)&&(c=g.background,n&&(i.style.background=c)),g.on===!0?d():g.on===!1&&p())};return window.addEventListener("message",u),()=>{window.removeEventListener("message",u),p()}}export{$ as ApiError,oe as BuyerAccessContext,ne as BuyerAccessUnavailableError,xe as BuyerRealtimeClient,mn as EmbeddedDesigner,W as PerformanceGroupDestroyedError,jn as PerformanceGroupPicker,sr as SEATING_CHART_CALLBACK_PROPS,tr as SEATING_CHART_HANDLE_METHODS,ir as SEATING_CHART_IDENTITY_PROPS,nr as SEATING_CHART_VALUE_PROPS,F as SeasonApiError,Wn as SeasonPicker,qi as SeasonPublicSessionRefused,Ki as SeasonRecoveryTimeoutError,Ue as SeatPicker,hn as SeatingChart,vh as attachPickerFrame,Dc as bindSeatingChartHandle,Bc as buildSeatingChartOptions,Mt as createBuyerAccessContext,Et as createControllerSink,bn as parseTicketOfferAvailability,zt as shortOperationReference,yn as ticketOfferPrices};
2953
+ `,document.head.appendChild(i)}var Jp=new Set(["audience_not_public","sales_not_open","origin_not_allowed"]),eh=3e4;function th(i,e){if(!i||typeof i!="object"||Array.isArray(i))return!1;let t=i;return typeof t.token=="string"&&t.token.length>0&&typeof t.expiresAt=="number"&&Number.isFinite(t.expiresAt)&&t.expiresAt>Date.now()&&t.seasonKey===e&&Array.isArray(t.planActivationIds)&&t.planActivationIds.every(n=>typeof n=="string"&&!!n)}var Ui=class extends Error{constructor(t,n){super(`season_public_session_refused:${t}`);this.reason=t;this.status=n;this.name="SeasonPublicSessionRefused"}},Ee,Oe,Ft,bt,Bn=class{constructor(e){this.options=e;L(this,Ee,null);L(this,Oe,null);L(this,Ft);L(this,bt);T(this,Ft,e.fetch??globalThis.fetch.bind(globalThis)),T(this,bt,e.origin??(typeof location>"u"?void 0:location.origin))}get session(){return m(this,Ee)}async mint(e=!1){if(e&&T(this,Ee,null),m(this,Ee)&&m(this,Ee).expiresAt-eh>Date.now())return m(this,Ee);if(m(this,Oe))return m(this,Oe);let t=(async()=>{let n=await m(this,Ft).call(this,`${this.options.base}/pub/seasons/${encodeURIComponent(this.options.season)}/sessions`,{method:"POST",body:JSON.stringify(m(this,bt)?{origin:m(this,bt)}:{}),credentials:"omit"}),o=await n.json().catch(()=>null);if(!n.ok){let s=o?.code??o?.error;if(n.status===403&&s&&Jp.has(s)){let r=s;throw this.options.onRefused?.({reason:r,code:s,status:n.status,retryable:r==="sales_not_open"}),new Ui(r,n.status)}throw new Error(`season_public_session_failed_${n.status}`)}if(!th(o,this.options.season))throw new Error("season_public_session_invalid");return T(this,Ee,o),o})();T(this,Oe,t);try{return await t}finally{m(this,Oe)===t&&T(this,Oe,null)}}async token(e){let t=e==="expiring"||e==="expired"||e==="unauthorized"||e==="manual",n=await this.mint(t);return{token:n.token,expiresAt:n.expiresAt}}};Ee=new WeakMap,Oe=new WeakMap,Ft=new WeakMap,bt=new WeakMap;function Wa(i){let e=new Bn(i);return{access:new ae({provider:({reason:n})=>e.token(n),...i.accessHooks}),loader:e}}var ih="https://api.seatlayer.io",nh=6e4,oh=5e3,V=class extends Error{constructor(t,n){super(`season_request_failed:${t}`);this.code=t;this.status=n;this.name="SeasonApiError"}},qi=class extends Error{constructor(t){super(`season_operation_timeout:${t}`);this.operationId=t;this.name="SeasonRecoveryTimeoutError"}};function sh(i,e){let t=Number(i.headers.get("Retry-After")),n=Number.isFinite(t)&&t>=0?t:e.retryAfterSeconds;return Math.max(0,Math.min(oh,n*1e3))}function rh(i,e){return e?.aborted?Promise.reject(e.reason??new DOMException("Aborted","AbortError")):new Promise((t,n)=>{let o=setTimeout(t,i);e?.addEventListener("abort",()=>{clearTimeout(o),n(e.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function Ya(i){if(!i||typeof i!="object")return"unknown";let e=i;return typeof e.code=="string"?e.code:typeof e.error=="string"?e.error:"unknown"}var ah=/^shc_[a-f0-9]{40}$/,lh=/^shh_[a-f0-9]{40}$/,ch=new Set(["preparing","commit_pending","committed","expire_pending","booking_pending","abort_pending","aborted","partial_terminal","expired","booked"]),dh=new Set(["pending","prepared","refused","applied","expired","booked","aborted"]);function Vn(i){return Array.isArray(i)?i.some(Vn):!i||typeof i!="object"?!1:Object.entries(i).some(([e,t])=>e==="childHoldId"||e==="child_hold_id"||e==="holdId"&&typeof t=="string"&&ah.test(t)||Vn(t))}function zt(i,e,t="invalid_operation_response"){if(!i||typeof i!="object"||Array.isArray(i))throw new V(t,502);if(Vn(i))throw new V("unsafe_operation_response",502);let n=i,o=n.allocations,s=new Set,r=Array.isArray(o)&&o.length>0&&o.every(d=>{if(!d||typeof d!="object")return!1;let u=d.eventId,p=d.state;return typeof u!="string"||!u||typeof p!="string"||!dh.has(p)||s.has(u)?!1:(s.add(u),!0)}),a=n.bookingRef===null||typeof n.bookingRef=="string"&&n.bookingRef.length>0,l=n.state!=="booked"||typeof n.bookingRef=="string"&&r&&o.every(d=>d.state==="booked"),c=n.state!=="booking_pending"||typeof n.bookingRef=="string"&&r&&o.some(d=>d.state!=="booked"),h=n.state!=="committed"||n.bookingRef===null;if(n.operationId!==e.operationId||n.seasonId!==e.seasonId||n.kind!=="HOLD"||typeof n.holdId!="string"||!lh.test(n.holdId)||n.policy!=="fixed_inclusion_same_seat"||typeof n.state!="string"||!ch.has(n.state)||typeof n.expiresAt!="number"||!Number.isFinite(n.expiresAt)||n.expiresAt<0||!a||typeof n.location!="string"||!n.location||typeof n.retryAfterSeconds!="number"||!Number.isFinite(n.retryAfterSeconds)||n.retryAfterSeconds<0||!r||!l||!c||!h||n.pricingAuthority!==void 0&&n.pricingAuthority!=="host"||n.authoritativeAmountIncluded!==void 0&&n.authoritativeAmountIncluded!==!1)throw new V(t,502);return{operationId:n.operationId,seasonId:n.seasonId,kind:n.kind,holdId:n.holdId,expiresAt:n.expiresAt,policy:n.policy,pricingAuthority:"host",authoritativeAmountIncluded:!1,state:n.state,bookingRef:n.bookingRef,location:n.location,retryAfterSeconds:n.retryAfterSeconds,allocations:o.map(d=>({eventId:d.eventId,state:d.state}))}}function ph(i,e,t){if(!Array.isArray(i)||i.length!==t||i.some(r=>typeof r!="string"||!r)||new Set(i).size!==i.length||!Array.isArray(e)||e.length!==i.length)throw new V("invalid_best_available_response",502);let n=i,o=new Set(n),s=new Map;for(let r of e){if(!r||typeof r!="object")throw new V("invalid_best_available_response",502);let a=r;if(typeof a.label!="string"||!o.has(a.label)||s.has(a.label)||typeof a.objectId!="string"||!a.objectId||a.objectType!=="seat"||typeof a.categoryKey!="string"||!a.categoryKey||a.tierId!==null&&(typeof a.tierId!="string"||!a.tierId)||a.quantity!==void 0&&a.quantity!==1)throw new V("invalid_best_available_response",502);s.set(a.label,{label:a.label,objectId:a.objectId,objectType:"seat",categoryKey:a.categoryKey,tierId:a.tierId,...a.quantity===void 0?{}:{quantity:a.quantity}})}return{labels:n,items:n.map(r=>s.get(r))}}function hh(i){if(!i||typeof i!="object"||Array.isArray(i))return null;let e=i;if(typeof e.currency!="string"||!e.currency||!Array.isArray(e.packages))return null;let t=[];for(let n of e.packages){if(!n||typeof n!="object")continue;let o=n;if(typeof o.planKey!="string"||!o.planKey||!Array.isArray(o.prices))continue;let s=[],r=new Set;for(let a of o.prices){if(!a||typeof a!="object")continue;let l=a;typeof l.categoryKey!="string"||!l.categoryKey||r.has(l.categoryKey)||typeof l.unitPrice!="number"||!Number.isInteger(l.unitPrice)||l.unitPrice<0||(r.add(l.categoryKey),s.push({categoryKey:l.categoryKey,unitPrice:l.unitPrice}))}s.length&&t.push({planKey:o.planKey,name:typeof o.name=="string"&&o.name?o.name:o.planKey,prices:s})}return t.length?{currency:e.currency,packages:t}:null}function uh(i){if(!i||typeof i!="object"||Array.isArray(i))throw new V("invalid_checkout_response",502);let e=i,t=typeof e.redirectUrl=="string"&&!!e.redirectUrl,n=!!e.clientPayload&&typeof e.clientPayload=="object"&&!Array.isArray(e.clientPayload);if(typeof e.orderId!="string"||!e.orderId||typeof e.currency!="string"||!e.currency||typeof e.totalMinor!="number"||!Number.isFinite(e.totalMinor)||typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt)||t===n)throw new V("invalid_checkout_response",502);return{orderId:e.orderId,totalMinor:e.totalMinor,currency:e.currency,expiresAt:e.expiresAt,...t?{redirectUrl:e.redirectUrl}:{},...n?{clientPayload:e.clientPayload}:{}}}function Xa(i,e){return{seasonKey:i.key,planActivationId:i.planActivationId,operationId:e.operationId,holdId:e.holdId,expiresAt:e.expiresAt,policy:e.policy,pricingAuthority:"host",authoritativeAmountIncluded:!1,state:e.state,allocations:e.allocations.map(({eventId:t,state:n})=>({eventKey:t,state:n}))}}var me,Ke,be,We,$t,ye,ve,Q,pe,Za,Ki=class{constructor(e,t){L(this,Q);L(this,me);L(this,Ke);L(this,be);L(this,We);L(this,$t);L(this,ye,!1);L(this,ve,null);T(this,me,e),T(this,Ke,(t.apiBase??ih).replace(/\/$/,"")),T(this,be,t.access),T(this,We,t.fetch??globalThis.fetch.bind(globalThis)),T(this,$t,t.recoveryTimeoutMs??nh),m(this,be).onRenewed(n=>x(this,Q,Za).call(this,n))}async descriptor(){let{body:e}=await x(this,Q,pe).call(this,"GET","");return e.season}async chart(){let{body:e}=await x(this,Q,pe).call(this,"GET","/chart");return e}async availability(){let{body:e}=await x(this,Q,pe).call(this,"GET","/availability"),t=Object.values(e.seats??{});return{...e,freeCount:t.filter(n=>n==="free").length,blockedCount:t.filter(n=>n!=="free").length}}async hold(e,t){let{body:n,response:o}=await x(this,Q,pe).call(this,"POST","/holds",{operationId:t,labels:[...e]});return{operation:zt(n.operation,{seasonId:m(this,me),operationId:t}),response:o}}async bestAvailable(e){let{body:t,response:n}=await x(this,Q,pe).call(this,"POST","/best-available",{operationId:e.operationId,qty:e.qty,...e.categoryKey?{categoryKey:e.categoryKey}:{},...e.zoneId?{zoneId:e.zoneId}:{},...e.accessibility?.length?{accessibility:[...e.accessibility]}:{},...e.requireContiguous===!0?{requireContiguous:!0}:{}}),o=zt(t.operation,{seasonId:m(this,me),operationId:e.operationId},"invalid_best_available_response"),{labels:s,items:r}=ph(t.labels,t.items,e.qty);return{operation:o,labels:s,items:r,response:n}}async operation(e){let{body:t,response:n}=await x(this,Q,pe).call(this,"GET",`/operations/${encodeURIComponent(e)}`);return{operation:zt(t.operation,{seasonId:m(this,me),operationId:e}),response:n}}async release(e,t){let{body:n,response:o}=await x(this,Q,pe).call(this,"POST",`/holds/${encodeURIComponent(e)}/release`,{releaseActionId:t});return{operation:zt(n.operation,{seasonId:m(this,me),operationId:e}),response:o}}async prices(){let e;try{({body:e}=await x(this,Q,pe).call(this,"GET","/prices"))}catch(t){if(t instanceof V&&t.status===404)return null;throw t}return hh(e)}async checkout(e){let{body:t}=await x(this,Q,pe).call(this,"POST","/checkout",{operationId:e.operationId,buyerEmail:e.buyerEmail,...e.buyerName?{buyerName:e.buyerName}:{},...e.provider?{provider:e.provider}:{},...e.returnUrl?{returnUrl:e.returnUrl}:{}});return uh(t)}async orderStatus(e){let t=await m(this,We).call(this,`${m(this,Ke)}/pub/orders/${encodeURIComponent(e)}/status`,{method:"GET",credentials:"omit"}),n=await t.json().catch(()=>null);if(!t.ok)throw new V(Ya(n),t.status);if(n===null)throw new V("invalid_json_response",502);return n}async renewalIntent(e){let{body:t}=await x(this,Q,pe).call(this,"POST","/renewal-intents",{offerId:e}),n=t.intent;if(!n||n.offerId!==e||n.state!=="intent_received"||!n.intentId||!Number.isFinite(n.receivedAt))throw new V("invalid_renewal_intent_response",502);return n}async waitForTerminal(e,t,n){let o=Date.now(),s=t?{operation:zt(t.operation,{seasonId:m(this,me),operationId:e}),response:t.response}:await this.operation(e);for(;s.operation.state==="preparing"||s.operation.state==="commit_pending"||s.operation.state==="expire_pending"||s.operation.state==="booking_pending"||s.operation.state==="abort_pending";){if(Date.now()-o>=m(this,$t))throw new qi(e);await rh(sh(s.response,s.operation),n),s=await this.operation(e)}return s.operation}destroy(){m(this,ye)||(T(this,ye,!0),m(this,be).onRenewed(void 0),m(this,be).clear())}};me=new WeakMap,Ke=new WeakMap,be=new WeakMap,We=new WeakMap,$t=new WeakMap,ye=new WeakMap,ve=new WeakMap,Q=new WeakSet,pe=async function(e,t,n,o=!0){if(m(this,ye))throw new V("season_api_destroyed",409);if(m(this,ve))throw m(this,ve);let s=await m(this,be).authorization();if(m(this,ye))throw new V("season_api_destroyed",409);if(m(this,ve))throw m(this,ve);if(!s)throw new ne({reason:"no_token",retryable:!1});let r=await m(this,We).call(this,`${m(this,Ke)}/pub/seasons/${encodeURIComponent(m(this,me))}${t}`,{method:e,headers:{Authorization:s,...n===void 0?{}:{"Content-Type":"application/json"}},body:n===void 0?void 0:JSON.stringify(n)}),a=await r.json().catch(()=>null);if(!r.ok){let l=Ya(a);if(o&&await m(this,be).handleFailure(r.status,l))return x(this,Q,pe).call(this,e,t,n,!1);let c=m(this,be).unavailable;throw c?new ne(c):new V(l,r.status)}if(a===null)throw new V("invalid_json_response",502);return{body:a,response:r}},Za=async function(e){if(m(this,ye))return;let t=`/pub/seasons/${encodeURIComponent(m(this,me))}/session/adopt`;for(let n=0;n<2;n++){if(m(this,ye))return;try{if((await m(this,We).call(this,`${m(this,Ke)}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit"})).ok){T(this,ve,null);return}}catch{}}if(!m(this,ye))throw T(this,ve,new V("season_session_adopt_failed",409)),m(this,ve)};var mh=2500;function fh(i){let e=typeof i=="string"?document.querySelector(i):i;if(!e)throw new Error("seatlayer: Season picker container was not found");return e}function gh(i,e,t){if(i.startsAt==null)return{date:"Date to be announced",time:null};try{let n=new Date(i.startsAt),o=e?{timeZone:e}:{};return{date:new Intl.DateTimeFormat(t,{dateStyle:"medium",...o}).format(n),time:new Intl.DateTimeFormat(t,{timeStyle:"short",...o}).format(n)}}catch{return{date:"Date to be announced",time:null}}}function el(i){return i.state==="committed"||i.state==="booked"}var Fn=class{constructor(e,t,n){this.transport=e;this.sink=t;this.intervalMs=n;this.timer=null;this.stopped=!0;this.prior={}}start(){this.stopped&&(this.stopped=!1,this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}stop(){this.stopped=!0,this.timer&&clearTimeout(this.timer),this.timer=null}async tick(){if(!this.stopped)try{let e=await this.transport.objects(""),t=Object.entries(e.seats).filter(([n,o])=>this.prior[n]!==o).map(([n,o])=>({label:n,status:o}));this.prior={...e.seats},t.length&&this.sink.applyStatuses(t)}catch{this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},zn=class{constructor(e,t){this.api=e;this.realtimePollMs=t;this.descriptorValue=null;this.availabilityValue=null;this.categoryLabels=new Map;this.reuseAvailabilityOnce=!1;this.nextOperationId=null;this.nextBestAvailable=null;this.nextReleaseActionId=null;this.operationByHold=new Map}prime(e,t){this.descriptorValue=e,this.availabilityValue=t,this.reuseAvailabilityOnce=!0}queueOperation(e){this.nextOperationId=e}queueBestAvailable(e,t){if(this.nextBestAvailable)throw new V("season_best_available_in_progress",409);let n={operationId:e,...t.accessibility?.length?{accessibility:[...t.accessibility]}:{},...t.requireContiguous===!0?{requireContiguous:!0}:{}};return this.nextBestAvailable=n,n}clearBestAvailable(e){this.nextBestAvailable===e&&(this.nextBestAvailable=null)}queueRelease(e){this.nextReleaseActionId=e}operationForHold(e){return this.operationByHold.get(e)??null}remember(e){this.operationByHold.set(e.holdId,e)}forget(e){this.operationByHold.delete(e)}async chart(e){let[t,n]=await Promise.all([this.descriptorValue?Promise.resolve(this.descriptorValue):this.api.descriptor(),this.api.chart()]);this.descriptorValue=t;for(let o of n.categories??[])typeof o?.key=="string"&&typeof o.label=="string"&&this.categoryLabels.set(o.key,o.label);return{doc:n,event:{key:t.key,name:t.name,venue:t.venue,startsAt:t.occurrences[0]?.startsAt??null,timezone:t.timezone,currency:t.currency,mode:t.mode,inventoryModelVersion:2}}}async objects(e){let t;return this.reuseAvailabilityOnce&&this.availabilityValue?(this.reuseAvailabilityOnce=!1,t=this.availabilityValue):(t=await this.api.availability(),this.availabilityValue=t),{seats:{...t.seats}}}async hold(e,t,n,o){if(o)throw new V("season_hold_replace_unsupported",409);let s=this.nextOperationId??`sop_${crypto.randomUUID()}`;this.nextOperationId=null;let r=await this.api.hold(t.map(l=>l.label),s),a=await this.api.waitForTerminal(s,r);if(!el(a))throw new V(`season_operation_${a.state}`,409);return this.remember(a),{holdId:a.holdId,expiresAt:a.expiresAt,items:t.map(l=>({label:l.label,objectId:l.label,objectType:"seat",categoryKey:"",tierId:l.tierId??null,unitPrice:0,currency:this.descriptorValue?.currency??"USD",...l.quantity==null?{}:{quantity:l.quantity}}))}}async release(e,t,n){let o=this.operationForHold(n);if(!o)throw new V("season_hold_not_found",404);let s=this.nextReleaseActionId??`sra_${crypto.randomUUID()}`;this.nextReleaseActionId=null;let r=await this.api.release(o.operationId,s),a=await this.api.waitForTerminal(o.operationId,r);if(a.state==="partial_terminal")throw this.remember(a),new V("season_operation_partial_terminal",409);this.forget(n)}async bestAvailable(e,t,n,o){let s=this.nextBestAvailable;this.nextBestAvailable=null;let r=s?.operationId??`sop_${crypto.randomUUID()}`,a=await this.api.bestAvailable({operationId:r,qty:t,...n?{categoryKey:n}:{},...o?{zoneId:o}:{},...s?.accessibility?.length?{accessibility:s.accessibility}:{},...s?.requireContiguous===!0?{requireContiguous:!0}:{}}),l=await this.api.waitForTerminal(r,a);if(!el(l))throw new V(`season_operation_${l.state}`,409);this.remember(l);let c=new Map(a.items.map(h=>[h.label,h]));return{holdId:l.holdId,expiresAt:l.expiresAt,labels:[...a.labels],items:a.labels.map(h=>{let d=c.get(h);return{label:h,objectId:d?.objectId??h,objectType:"seat",categoryKey:d?.categoryKey??n??"",tierId:d?.tierId??null,unitPrice:0,currency:this.descriptorValue?.currency??"USD",...d?.quantity==null?{}:{quantity:d.quantity}}})}}categoryLabel(e){return this.categoryLabels.get(e)??e}socketUrl(){return""}createRealtime(e,t){return new Fn(this,t,this.realtimePollMs)}},R,Ze,vt,oe,W,Gt,Y,Ae,G,J,fe,wt,_e,Pe,Qe,he,Ut,we,xt,St,Je,kt,De,et,tt,Tt,w,tl,il,jn,Gn,Un,qn,Wi,Ye,nl,ol,Ce,jt,sl,rl,Kn,Wn,al,ll,cl,Yn,Xn,j,Xe,Zn,yt,$n=class{constructor(e){L(this,w);L(this,R);L(this,Ze);L(this,vt);L(this,oe);L(this,W);L(this,Gt,new AbortController);L(this,Y,null);L(this,Ae,null);L(this,G,null);L(this,J,null);L(this,fe,null);L(this,wt,null);L(this,_e,null);L(this,Pe,null);L(this,Qe,null);L(this,he,[]);L(this,Ut,new Map);L(this,we,!1);L(this,xt,!1);L(this,St);L(this,Je,null);L(this,kt,null);L(this,De,null);L(this,et,"handoff");L(this,tt,null);L(this,Tt,!1);if(!e?.season)throw new Error("seatlayer: `season` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if("event"in e||"performanceGroup"in e)throw new Error("seatlayer: SeasonPicker is not SeatPicker or PerformanceGroupPicker");T(this,R,e),T(this,Ze,fh(e.container));let t={onExpired:o=>e.onAccessExpired?.(o),onUnavailable:o=>{let s=m(this,Je)&&o.reason==="provider_failed"?m(this,Je):o;T(this,Je,null),T(this,kt,s.reason==="provider_failed"?null:s),e.onAccessUnavailable?.(s),x(this,w,al).call(this,s)}};if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider){let{access:o,loader:s}=Wa({base:(e.apiBase??"https://api.seatlayer.io").replace(/\/$/,""),season:e.season,fetch:e.fetch,onRefused:r=>{T(this,Je,r)},accessHooks:t});T(this,vt,o),T(this,St,s)}else T(this,St,null),T(this,vt,new ae({token:e.buyerAccessToken,provider:e.buyerAccessTokenProvider,...t}));T(this,oe,new Ki(e.season,{apiBase:e.apiBase,access:m(this,vt),fetch:e.fetch,recoveryTimeoutMs:e.recoveryTimeoutMs})),T(this,W,new zn(m(this,oe),Math.max(750,e.realtimePollMs??mh)))}async render(){x(this,w,Zn).call(this),Ka(),x(this,w,il).call(this),x(this,w,j).call(this,{kind:"loading",message:"Loading Season seats available for every performance."},!0);try{let[e,t,n]=await Promise.all([m(this,oe).descriptor(),m(this,oe).availability(),m(this,oe).prices().catch(()=>null)]);return m(this,we)?this:(T(this,Y,e),T(this,Ae,t),T(this,De,n),T(this,et,m(this,R).checkout==="hosted"&&e.checkoutMode!=="server"&&n?"hosted":"handoff"),m(this,W).prime(e,t),x(this,w,jn).call(this),await x(this,w,tl).call(this,e),m(this,we)?this:(n&&x(this,w,jn).call(this),x(this,w,cl).call(this),x(this,w,j).call(this,{kind:"ready",message:`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every included performance.`}),m(this,R).initialOperationId&&await this.restoreOperation(m(this,R).initialOperationId),this))}catch(e){if(m(this,we))return this;throw x(this,w,Xe).call(this,e)}}async holdSameSeat(e,t){if(x(this,w,yt).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");if(m(this,W).queueOperation(t),m(this,J).selectObjectsWithoutConfirmation([...e]),x(this,w,j).call(this,{kind:"pending",message:"Holding the same seats for every performance.",operationId:t},!0),await m(this,J).handleCta(),!m(this,G))throw new V("season_hold_not_created",409);return m(this,G)}async holdBestAvailable(e,t,n={}){if(x(this,w,yt).call(this),!t.startsWith("sop_"))throw new Error("seatlayer: caller-stable Season operation id is required");if(!Number.isInteger(e)||e<1)throw new Error("seatlayer: positive Best Available quantity is required");let o=m(this,J).maxTickets;if(e>o)throw new Error(`seatlayer: Best Available quantity cannot exceed the configured maximum (${o})`);if(m(this,xt))throw new V("season_best_available_in_progress",409);T(this,xt,!0);let s=null;try{if(s=m(this,W).queueBestAvailable(t,n),x(this,w,j).call(this,{kind:"pending",message:`Finding ${e} Season seat${e===1?"":"s"} available for every performance.`,operationId:t},!0),!await m(this,J).bestAvailableOrThrow(e,n.categoryKey,{zoneId:n.zoneId})||!m(this,G))throw new V("season_hold_not_created",409);return m(this,G)}catch(r){throw x(this,w,Xe).call(this,r,t)}finally{s&&m(this,W).clearBestAvailable(s),T(this,xt,!1)}}async restoreOperation(e){x(this,w,yt).call(this),x(this,w,j).call(this,{kind:"pending",message:"Restoring your Season selection.",operationId:e},!0);try{let t=await m(this,oe).waitForTerminal(e,void 0,m(this,Gt).signal);return t.state==="aborted"||t.state==="expired"?(T(this,G,null),m(this,R).onHoldChange?.(null),x(this,w,j).call(this,{kind:"released",message:"The previous Season selection is no longer held.",operationId:e}),null):(m(this,W).remember(t),x(this,w,qn).call(this,t,!1))}catch(t){throw x(this,w,Xe).call(this,t,e)}}async release(e){x(this,w,yt).call(this);let t=m(this,G);if(t){if(!e)throw new Error("seatlayer: caller-stable release action id is required");m(this,W).queueRelease(e),x(this,w,j).call(this,{kind:"pending",message:"Releasing the Season seats.",operationId:t.operationId},!0);try{m(this,J)?.getCurrentHold()?.holdId===t.holdId?await m(this,J).release():(await m(this,W).release("",[],t.holdId),x(this,w,Wi).call(this)),x(this,w,j).call(this,{kind:"released",message:"The Season seats were released.",operationId:t.operationId})}catch(n){throw x(this,w,Xe).call(this,n,t.operationId)}}}async createRenewalIntent(e){if(x(this,w,yt).call(this),!e.startsWith("sro_"))throw new Error("seatlayer: Season renewal offer id is required");x(this,w,j).call(this,{kind:"pending",message:"Recording renewal intent. No purchase is made in the browser."},!0);try{let t=await m(this,oe).renewalIntent(e);return x(this,w,j).call(this,{kind:"renewal_intent",message:"Renewal intent recorded. Your ticketing platform will confirm price, payment, and renewal."}),m(this,R).onRenewalIntent?.(t),t}catch(t){throw x(this,w,Xe).call(this,t)}}getDescriptor(){return m(this,Y)}getAvailability(){return m(this,Ae)}getHandoff(){return m(this,G)}destroy(){m(this,we)||(T(this,we,!0),m(this,Gt).abort(),x(this,w,Xn).call(this),m(this,J)?.destroy(),m(this,oe).destroy(),m(this,Ze).replaceChildren(),T(this,fe,null),T(this,wt,null),T(this,_e,null),T(this,Pe,null),T(this,Qe,null),T(this,Y,null),T(this,Ae,null),T(this,G,null))}};R=new WeakMap,Ze=new WeakMap,vt=new WeakMap,oe=new WeakMap,W=new WeakMap,Gt=new WeakMap,Y=new WeakMap,Ae=new WeakMap,G=new WeakMap,J=new WeakMap,fe=new WeakMap,wt=new WeakMap,_e=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,he=new WeakMap,Ut=new WeakMap,we=new WeakMap,xt=new WeakMap,St=new WeakMap,Je=new WeakMap,kt=new WeakMap,De=new WeakMap,et=new WeakMap,tt=new WeakMap,Tt=new WeakMap,w=new WeakSet,tl=async function(e){let t=new qe(zi({container:m(this,wt),event:e.key,apiBase:m(this,R).apiBase,transport:m(this,W),hideEventDetails:!0,maxSelection:m(this,R).maxSelection,selectedObjects:m(this,R).selectedObjects,selectableObjects:m(this,R).selectableObjects,numberOfPlacesToSelect:m(this,R).numberOfPlacesToSelect,selectionValidators:m(this,R).selectionValidators,locale:m(this,R).locale,messages:m(this,R).messages,languages:m(this,R).languages,colorblindSafe:m(this,R).colorblindSafe,initialView:m(this,R).initialView,enable3D:m(this,R).enable3D,max3DSeats:m(this,R).max3DSeats,hideBadge:m(this,R).hideBadge,theme:m(this,R).theme,confirmSelection:m(this,R).confirmSelection,seatView:m(this,R).seatView,onBuyerViewChange:m(this,R).onBuyerViewChange,onAnalytics:(n,o)=>{try{m(this,R).onAnalytics?.(n,{...o,metricScope:"season",seasonKey:e.key,planActivationId:e.planActivationId,performanceCount:e.occurrenceCount})}catch{}},onSelectionChange:n=>{T(this,he,n.map(o=>o.label)),T(this,Ut,new Map(n.filter(o=>!!o.categoryKey).map(o=>[o.label,o.categoryKey]))),x(this,w,Ye).call(this),m(this,R).onSelectionChange?.(n)},onSelectionValidityChange:m(this,R).onSelectionValidityChange,onHoldChange:n=>{if(!n){x(this,w,Wi).call(this);return}let o=m(this,W).operationForHold(n.holdId);o&&x(this,w,qn).call(this,o,!0)},onCheckout:()=>{m(this,G)&&(x(this,w,Ce).call(this,"checkout"),m(this,R).onContinue?.(m(this,G)),m(this,et)==="hosted"&&x(this,w,ll).call(this,m(this,G)))},onHoldExpired:()=>{x(this,w,Wi).call(this),x(this,w,j).call(this,{kind:"released",message:"The Season hold expired. Choose seats again."}),m(this,R).onHoldExpired?.()},onError:n=>x(this,w,Xe).call(this,n)},{surface:"season",performanceCount:e.occurrenceCount,selectionMode:"same_seat",suppressPricing:!0,groupSelectionSummary:()=>{let n=m(this,he).length;return n?{seats:n,performances:e.occurrenceCount,performancesChosen:e.occurrenceCount,perPerformance:n}:null}}));T(this,J,t),await t.render()},il=function(){m(this,Ze).replaceChildren();let e=document.createElement("section");e.className="sl-season-root",e.setAttribute("aria-label","Season ticket selection");let t=document.createElement("header");t.className="sl-season-hero";let n=document.createElement("ol");n.className="sl-season-progress",n.setAttribute("aria-label","Season checkout progress");for(let[b,k]of["Choose seats","Review package","Checkout"].entries()){let S=document.createElement("li");S.dataset.state=b===0?"current":"upcoming";let v=document.createElement("span");v.textContent=String(b+1),S.append(v,k),n.append(S)}let o=document.createElement("div");o.className="sl-season-stage";let s=document.createElement("div");s.className="sl-season-map";let r=document.createElement("aside");r.className="sl-season-summary-card",r.setAttribute("aria-label","Your Season selection");let a=document.createElement("h3");a.textContent="Your Season seats";let l=document.createElement("p");l.className="sl-season-selection",l.textContent="Choose a seat on the map.";let c=document.createElement("p");c.className="sl-season-rule";let h=document.createElement("i");h.textContent="1\xD7";let d=document.createElement("span");d.textContent="Each seat you choose is reserved for every included performance.",c.append(h,d);let u=document.createElement("p");u.className="sl-season-availability";let p=document.createElement("p");p.className="sl-season-checkout-note",p.textContent="Your ticketing platform confirms package price, payment, admission passes, and member benefits.",r.append(a,l,c,u,p),o.append(s,r);let f=document.createElement("p");f.className="sl-season-status",f.setAttribute("role","status"),f.setAttribute("aria-live","polite"),e.append(t,n,o,f),m(this,Ze).append(e),T(this,fe,e),T(this,wt,s),T(this,_e,f),T(this,Pe,l),T(this,Qe,u)},jn=function(){let e=m(this,Y),t=m(this,R).offer,n=m(this,fe).querySelector(".sl-season-hero");n.replaceChildren();let o=document.createElement("div");o.className="sl-season-copy";let s=document.createElement("p");s.className="sl-season-eyebrow",s.textContent=t?.eyebrow??"Season ticket";let r=document.createElement("h2");r.textContent=e.edition?`${e.name} \xB7 ${e.edition}`:e.name;let a=document.createElement("p");a.className="sl-season-promise",a.textContent=`Choose once and keep the same seat for all ${e.occurrenceCount} included performances.`;let l=document.createElement("div");l.className="sl-season-facts";for(let p of[`${e.occurrenceCount} performances`,e.venue,t?.renewalLabel??"Same-seat package"].filter(Boolean)){let f=document.createElement("span");f.className="sl-season-fact",f.textContent=p,l.append(f)}o.append(s,r,a,l),n.append(o);let c=document.createElement("div");c.className="sl-season-offer";let h=document.createElement("span");h.className="sl-season-offer-label";let d=x(this,w,jt).call(this);if(d){h.textContent=g("season.packagePriceLabel","Package price"),c.append(h,x(this,w,rl).call(this,d,e.occurrenceCount));let p=document.createElement("span");p.className="sl-season-price-note",p.textContent=g("season.packagePricePerSeat","Per seat, for the whole package."),c.append(p),n.append(c),x(this,w,Gn).call(this,n,t),x(this,w,Un).call(this,n,e),x(this,w,Ye).call(this);return}h.textContent=t?.priceLabel?"Season package":"Package price";let u=document.createElement(t?.priceLabel?"strong":"span");if(u.className=t?.priceLabel?"sl-season-price":"sl-season-price-note",u.textContent=t?.priceLabel??"Confirmed by your ticketing platform at checkout",c.append(h,u),t?.compareAtPriceLabel){let p=document.createElement("span");p.className="sl-season-was",p.textContent=t.compareAtPriceLabel,c.append(p)}if(t?.savingsLabel){let p=document.createElement("span");p.className="sl-season-saving",p.textContent=t.savingsLabel,c.append(p)}if(t?.priceNote){let p=document.createElement("span");p.className="sl-season-price-note",p.textContent=t.priceNote,c.append(p)}n.append(c),x(this,w,Gn).call(this,n,t),x(this,w,Un).call(this,n,e),x(this,w,Ye).call(this)},Gn=function(e,t){if(!t?.benefits?.length)return;let n=document.createElement("ul");n.className="sl-season-benefits";for(let o of t.benefits.slice(0,6)){let s=document.createElement("li");s.textContent=o,n.append(s)}e.append(n)},Un=function(e,t){let n=document.createElement("details");n.className="sl-season-dates";let o=document.createElement("summary");o.textContent=`All ${t.occurrenceCount} performances included`;let s=document.createElement("ol");s.className="sl-season-date-list";for(let r of t.occurrences){let a=document.createElement("li");a.className="sl-season-date";let l=document.createElement("b");l.textContent=r.name;let c=gh(r,t.timezone,m(this,R).locale),h=document.createElement("time");r.startsAt!=null&&(h.dateTime=new Date(r.startsAt).toISOString()),h.textContent=c.time?`${c.date} \xB7 ${c.time}`:c.date,a.append(l,h),s.append(a)}n.append(o,s),e.append(n)},qn=function(e,t){if(e.state==="booked")return T(this,G,null),m(this,W).forget(e.holdId),m(this,J)?.notifyGroupSettled("booked"),x(this,w,Ce).call(this,"complete"),x(this,w,j).call(this,{kind:"booked",message:`Your Season booking is complete for all ${m(this,Y).occurrenceCount} performances. No further checkout action is needed.`,operationId:e.operationId}),m(this,R).onHoldChange?.(null),null;if(e.state==="partial_terminal")return T(this,G,null),T(this,he,[]),m(this,W).forget(e.holdId),m(this,J)?.notifyGroupSettled("lost"),x(this,w,Ye).call(this),x(this,w,Ce).call(this,"review"),x(this,w,j).call(this,{kind:"partial_terminal",message:"This Season selection needs organizer review. Do not try another selection.",operationId:e.operationId}),m(this,R).onHoldChange?.(null),null;if(e.state!=="committed")return T(this,G,null),m(this,W).forget(e.holdId),m(this,J)?.notifyGroupSettled("lost"),x(this,w,j).call(this,{kind:"failed",message:"The Season selection could not be completed.",operationId:e.operationId}),m(this,R).onHoldChange?.(null),null;let n=Xa(m(this,Y),e),o=m(this,G)?.holdId!==n.holdId;return T(this,G,n),x(this,w,Ye).call(this),x(this,w,Ce).call(this,"review"),m(this,R).onHoldChange?.(n),x(this,w,j).call(this,{kind:"held",message:`Your seats are held for all ${m(this,Y).occurrenceCount} performances. Review and continue to checkout.`,operationId:e.operationId}),o&&t&&m(this,R).onHold?.(n),n},Wi=function(){T(this,G,null),T(this,he,[]),x(this,w,Ye).call(this),x(this,w,Ce).call(this,"choose"),m(this,R).onHoldChange?.(null)},Ye=function(){if(!m(this,Pe))return;let e=m(this,he).length;if(!e)m(this,Pe).textContent="Choose a seat on the map. Unavailable seats are already booked on at least one included performance.";else{m(this,Pe).replaceChildren();let t=document.createElement("strong");t.textContent=m(this,he).join(", "),m(this,Pe).append(t,` \xB7 ${e} Season seat${e===1?"":"s"} across all ${m(this,Y)?.occurrenceCount??0} performances`)}m(this,Qe)&&m(this,Ae)&&(m(this,Qe).textContent=`${m(this,Ae).freeCount} seat${m(this,Ae).freeCount===1?"":"s"} currently available for the complete Season`),x(this,w,nl).call(this),x(this,w,ol).call(this)},nl=function(){let e=m(this,fe)?.querySelector(".sl-season-summary-card");if(!e)return;e.querySelector(".sl-season-package-total")?.remove();let t=x(this,w,Kn).call(this);if(t==null)return;let n=m(this,De)?.currency??m(this,Y)?.currency??"USD",o=m(this,Y)?.occurrenceCount??0,s=document.createElement("p");s.className="sl-season-package-total";let r=document.createElement("span");r.textContent=g("season.packageTotal","Package total");let a=document.createElement("strong");a.textContent=x(this,w,Wn).call(this,t,n);let l=document.createElement("span");l.className="sl-season-package-total-scope",l.textContent=g("season.priceForAllDates","for all {count} dates").replace("{count}",String(o)),s.append(r,a,l);let c=e.querySelector(".sl-season-checkout-note");c?e.insertBefore(s,c):e.append(s)},ol=function(){let e=m(this,fe)?.querySelector(".sl-season-checkout-note");if(e){if(m(this,et)==="hosted"){e.textContent=g("season.hostedCheckoutNote","You pay for the whole package here. Your tickets for every performance arrive by email.");return}if(x(this,w,jt).call(this)){e.textContent=g("season.serverCheckoutPricedNote","Payment and admission passes are completed in the checkout on this page.");return}e.textContent="Your ticketing platform confirms package price, payment, admission passes, and member benefits."}},Ce=function(e){let t=e==="choose"?0:e==="review"?1:e==="checkout"?2:3;m(this,fe)?.querySelectorAll(".sl-season-progress li").forEach((n,o)=>{n.dataset.state=o<t?"done":o===t?"current":"upcoming";let s=n.querySelector("span");s&&(s.textContent=o<t?"\u2713":String(o+1))})},jt=function(){let e=m(this,De)?.packages;if(!e?.length)return null;let t=m(this,Y)?.planActivationId,n=e.find(r=>r.planKey===t);if(n)return n;let o=m(this,St)?.session?.planActivationIds;return(o?.length?e.filter(r=>o.includes(r.planKey)):[])[0]??e[0]},sl=function(e){let t=x(this,w,jt).call(this)?.prices.find(n=>n.categoryKey===e);return t?t.unitPrice:null},rl=function(e,t){let n=document.createElement("ul");n.className="sl-season-price-lines";let o=m(this,De)?.currency??m(this,Y)?.currency??"USD";for(let s of e.prices){let r=document.createElement("li"),a=document.createElement("span");a.className="sl-season-price-category",a.textContent=m(this,W).categoryLabel(s.categoryKey);let l=document.createElement("strong");l.className="sl-season-price",l.textContent=x(this,w,Wn).call(this,s.unitPrice,o);let c=document.createElement("span");c.className="sl-season-price-scope",c.textContent=g("season.priceForAllDates","for all {count} dates").replace("{count}",String(t)),r.append(a,l,c),n.append(r)}return n},Kn=function(){if(!m(this,he).length||!x(this,w,jt).call(this))return null;let e=0;for(let t of m(this,he)){let n=m(this,Ut).get(t),o=n?x(this,w,sl).call(this,n):null;if(o==null)return null;e+=o}return e},Wn=function(e,t){let n=Ja(e,t),o=Number.isInteger(n);return Qa(n,t,{locale:m(this,R).locale,fallback:(s,r)=>`${s} ${r}`,...o?{minimumFractionDigits:0,maximumFractionDigits:0}:{}})},al=function(e){let t=e.reason==="audience_not_public"?g("season.accessNotPublic","This season isn't open for online booking yet."):e.reason==="sales_not_open"?g("season.accessSalesNotOpen","Season tickets aren't on sale right now. Check back when sales open."):e.reason==="origin_not_allowed"?g("season.accessOriginNotAllowed","This season can't be booked from this page."):g("season.accessUnavailable","Season tickets can't be loaded right now. Please try again later.");x(this,w,j).call(this,{kind:"failed",message:t})},ll=async function(e){if(!m(this,Tt)){T(this,Tt,!0);try{let t=m(this,De)?.currency??m(this,Y)?.currency??"USD",n=x(this,w,Kn).call(this);if(n==null){x(this,w,j).call(this,{kind:"failed",message:g("season.checkoutNotPriced","We can\u2019t price this package here. Your seats are still held \u2014 please continue in the checkout on this page."),operationId:e.operationId});return}await x(this,w,Yn).call(this,{kind:"pay",provider:null,order:{holdId:e.operationId,expiresAt:e.expiresAt,currency:t,total:Ja(n,t),labels:[...m(this,he)]}})}finally{T(this,Tt,!1)}}},cl=function(){if(m(this,et)!=="hosted")return;let e=$i(m(this,R).season);e?.outcome!=="success"||!e.orderId||(x(this,w,Ce).call(this,"checkout"),x(this,w,Yn).call(this,{kind:"resume",orderId:e.orderId}))},Yn=async function(e){let t;try{({mountCheckout:t}=await ei())}catch(o){m(this,R).onError?.(o),x(this,w,j).call(this,{kind:"failed",message:g("season.checkoutCouldNotBeOpened","Checkout could not be opened. Your seats are still held \u2014 please try again.")});return}let n=m(this,J)?.root;m(this,we)||!n||(x(this,w,Xn).call(this),T(this,tt,t({root:n,state:e,eventKey:m(this,R).season,formatMoney:(o,s)=>Qa(o,s,{locale:m(this,R).locale,fallback:(r,a)=>`${r} ${a}`,...Number.isInteger(o)?{minimumFractionDigits:0,maximumFractionDigits:0}:{}}),startSession:o=>m(this,oe).checkout({operationId:o.holdId,buyerEmail:o.buyerEmail,...o.buyerName?{buyerName:o.buyerName}:{},...m(this,R).returnUrl?{returnUrl:m(this,R).returnUrl}:{}}),orderStatus:o=>m(this,oe).orderStatus(o),onCancel:()=>{T(this,tt,null),m(this,G)&&x(this,w,Ce).call(this,"review")},onConfirmed:o=>{m(this,R).onOrderConfirmed?.(o),x(this,w,Ce).call(this,"complete"),x(this,w,j).call(this,{kind:"booked",message:g("season.orderConfirmed","Your season tickets are confirmed for every included performance.")})},onError:o=>m(this,R).onError?.(o)})))},Xn=function(){m(this,tt)?.destroy(),T(this,tt,null)},j=function(e,t=!1){m(this,_e)&&(m(this,_e).textContent=e.message,m(this,_e).dataset.kind=e.kind),m(this,fe)&&(m(this,fe).dataset.busy=String(t)),m(this,R).onStatusChange?.(e)},Xe=function(e,t){let n=e instanceof ne&&e.reason==="provider_failed"&&m(this,kt)?new ne(m(this,kt)):e;if(n instanceof ne)return m(this,R).onError?.(n),n;let o=n instanceof V?`Season selection unavailable (${n.code}).`:"Season selection could not be completed.";return x(this,w,j).call(this,{kind:"failed",message:o,operationId:t}),m(this,R).onError?.(n),n},Zn=function(){if(m(this,we))throw new Error("seatlayer: SeasonPicker was destroyed")},yt=function(){if(x(this,w,Zn).call(this),!m(this,Y)||!m(this,J))throw new Error("seatlayer: render SeasonPicker before using it")};function bh(i,e={}){let t=e.origin??"";if(!t)try{t=new URL(i.src,window.location.href).origin}catch{t=""}let n=!1,o=null,s=null,r=null,a="",l=null,c="",h=()=>{if(n)return;n=!0,o=i.getAttribute("style"),Object.assign(i.style,{position:"fixed",inset:"0",margin:"0",border:"0",zIndex:"2147483000",background:c||"transparent"}),i.style.width="100vw",i.style.height="100vh",i.style.width="100dvw",i.style.height="100dvh";let p=document.documentElement;s=p.style.overflow,p.style.overflow="hidden",document.body&&(r=document.body.style.overflow,document.body.style.overflow="hidden"),l=f=>{f.key==="Escape"&&d()},window.addEventListener("keydown",l)},d=()=>{n&&(n=!1,o===null?i.removeAttribute("style"):i.setAttribute("style",o),o=null,a&&(i.style.height=a),s!==null&&(document.documentElement.style.overflow=s,s=null),r!==null&&document.body&&(document.body.style.overflow=r,r=null),l&&(window.removeEventListener("keydown",l),l=null))},u=p=>{if(p.source!==i.contentWindow||t&&p.origin!==t||!p.data||typeof p.data!="object")return;let f=p.data;if(f.type==="seatlayer:height"){typeof f.px=="number"&&Number.isFinite(f.px)&&f.px>0&&(a=`${Math.round(f.px)}px`,n||(i.style.height=a));return}f.type==="seatlayer:fullscreen"&&(typeof f.background=="string"&&/^[#a-zA-Z0-9(),.%\s-]{1,64}$/.test(f.background)&&(c=f.background,n&&(i.style.background=c)),f.on===!0?h():f.on===!1&&d())};return window.addEventListener("message",u),()=>{window.removeEventListener("message",u),d()}}export{z as ApiError,ae as BuyerAccessContext,ne as BuyerAccessUnavailableError,xe as BuyerRealtimeClient,gn as EmbeddedDesigner,K as PerformanceGroupDestroyedError,Nn as PerformanceGroupPicker,ws as SEATING_CHART_CALLBACK_PROPS,bs as SEATING_CHART_HANDLE_METHODS,ys as SEATING_CHART_IDENTITY_PROPS,vs as SEATING_CHART_VALUE_PROPS,V as SeasonApiError,$n as SeasonPicker,Ui as SeasonPublicSessionRefused,qi as SeasonRecoveryTimeoutError,qe as SeatPicker,mn as SeatingChart,bh as attachPickerFrame,Dc as bindSeatingChartHandle,Nc as buildSeatingChartOptions,Rt as createBuyerAccessContext,Et as createControllerSink,yn as parseTicketOfferAvailability,Vt as shortOperationReference,vn as ticketOfferPrices};