@seatlayer/js 0.75.2 → 0.77.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 Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{a as f,b as R,c as C,d as E}from"./chunk-OSZ7DOEH.js";import{PickerController as ya,formatMoney as xa,getLocale as Bi,loadLocale as wa,localeDirection as ka,LOCALE_NAMES as Sa,resolveLocale as Ta,setStringOverrides as Ca,t as le}from"@seatlayer/core";var Re="seatlayer.v1";function vo(s){let e=typeof s.default=="string"?s.default:"free",t={};if(s.seats&&typeof s.seats=="object")for(let[i,n]of Object.entries(s.seats))typeof n=="string"&&n!==e&&(t[i]=n);return{default:e,exceptions:t}}function yo(s,e){if(!s||s.default!==e.default)return null;let t=[];for(let[i,n]of Object.entries(e.exceptions))s.exceptions[i]!==n&&t.push({label:i,status:n});for(let i of Object.keys(s.exceptions))i in e.exceptions||t.push({label:i,status:e.default});return t}function xo(s,e){for(let t of e)t.status===s.default?delete s.exceptions[t.label]:s.exceptions[t.label]=t.status}function As(s){if(/(?:^|[?&#])(?:token|access_token|bearer|authorization|ticket|tkt|bse)=/i.test(s))throw new Error("seatlayer: refusing to open a socket with a credential in the URL");if(/\bbse_[A-Za-z0-9._-]+/.test(s))throw new Error("seatlayer: refusing to open a socket with a credential in the URL")}var ve=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,As(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=[Re];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(Re)||e.unshift(Re)):r?.ticket&&(e=[Re,`tkt.${r.ticket}`])}let t=this.version!==null;t&&e.push(`sv.${this.version}`);let i=this.useQueryMarker?`${this.opts.url}${this.opts.url.includes("?")?"&":"?"}pv=1`:this.opts.url;As(i);let n;try{n=(this.opts.socketFactory??((o,a)=>new WebSocket(o,a)))(i,e)}catch{this.scheduleReconnect();return}this.ws=n,n.onopen=()=>{this.ws===n&&(this.attempt=0,this.v1=n.protocol===Re,this.v1||(this.useQueryMarker=!0),this.startKeepalive(n),t?this.resumeTimer=setTimeout(()=>{this.resumeTimer=null,this.opts.sink.resync()},5e3):this.opts.sink.resync())},n.onmessage=r=>{if(this.ws!==n)return;let o;try{o=JSON.parse(typeof r.data=="string"?r.data:"")}catch{return}!o||typeof o!="object"||this.handleFrame(o)},n.onclose=r=>{if(this.ws===n){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()}},n.onerror=()=>{try{n.close()}catch{}}}handleFrame(e){let t=typeof e.type=="string"?e.type:"";if(e.protocol===1&&(this.v1=!0),typeof e.snapshotVersion=="number"&&(this.version=e.snapshotVersion),t==="pong"){this.clearPongTimer();return}if(Array.isArray(e.hidden)||Array.isArray(e.closed)){let i=Array.isArray(e.hidden)?e.hidden:[],n=Array.isArray(e.closed)?e.closed:[],r=i.join("\0"),o=n.join("\0");(r!==this.hidden||o!==this.closedSections)&&(this.hidden=r,this.closedSections=o,this.opts.sink.onSections?.(i,n))}if(t!=="hidden"){if(t==="presence"){this.opts.sink.onPresence?.({shoppingSessions:Number(e.shoppingSessions)||0,activeHolds:Number(e.activeHolds)||0});return}if(t!=="allocation"){if(t==="snapshot"||!t&&e.seats){this.answered();let i=vo(e),n=yo(this.projection,i);this.projection=i,n===null?this.opts.sink.applyProjection?this.opts.sink.applyProjection(i):this.opts.sink.resync():n.length&&this.opts.sink.applyStatuses(n);return}if(t==="delta"&&Array.isArray(e.changes)){this.answered();let i=e.changes.filter(n=>typeof n?.label=="string"&&typeof n?.status=="string").map(n=>({label:n.label,status:n.status}));if(!i.length)return;this.projection&&xo(this.projection,i),this.opts.sink.applyStatuses(i)}}}}answered(){this.resumeTimer&&(clearTimeout(this.resumeTimer),this.resumeTimer=null)}reportIfAccessError(e){let t=e?.reason;e?.name==="BuyerAccessUnavailableError"&&(this.stopped=!0,this.opts.onAccessUnavailable?.({reason:t??"invalid",code:e.code,status:e.status,retryable:t==="paused"}))}startKeepalive(e){this.pingTimer=setInterval(()=>{if(this.ws===e){try{e.send(JSON.stringify({type:"ping"}))}catch{return}this.clearPongTimer(),this.pongTimer=setTimeout(()=>{this.pongTimer=null;try{e.close()}catch{}},1e4)}},25e3)}scheduleReconnect(){if(this.stopped||this.reconnectTimer)return;let e=Math.min(this.attempt++,5),t=Math.min(1e3*2**e,15e3),i=Math.random()*t;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},i)}clearPongTimer(){this.pongTimer&&(clearTimeout(this.pongTimer),this.pongTimer=null)}clearTimers(){this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null,this.clearPongTimer(),this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.resumeTimer&&clearTimeout(this.resumeTimer),this.resumeTimer=null}};function wo(s){return s==="blocked"?"not_for_sale":s==="held"||s==="booked"||s==="free"||s==="not_for_sale"?s:"free"}function ft(s,e={}){let t=i=>{let n=s.tableSelection(i);if(n)return n.physicalSeatIds;let r=s.idForLabel(i);return r?[r]:[]};return{applyStatuses(i){let n=s.currentHold()?.labels??[],r={free:[],held:[],booked:[],not_for_sale:[]},o=[],a=[],l=new Map(s.getSelection().map(c=>[c.label,c.id]));for(let c of i){let p=t(c.label);if(!p.length)continue;let d=wo(c.status);if(r[d].push(...p),e.flashOnLiveChange&&d!=="free"&&!n.includes(c.label)&&p.some(u=>s.getStatus(u)==="free")){let u=d==="held"?"#f4b740":"#f43f5e";for(let h of p)o.push({id:h,color:u})}d!=="free"&&!n.includes(c.label)&&l.has(c.label)&&a.push(c.label)}for(let c of["free","held","booked","not_for_sale"])r[c].length&&s.setStatus(r[c],c);for(let c of o)s.flashSeat(c.id,c.color);if(a.length){let c=a.flatMap(d=>t(d));c.length&&s.deselect(c);let p=i.some(d=>d.status==="blocked"&&a.includes(d.label));e.onSelectedObjectUnavailable?.(a,p?"ineligible":"taken")}e.onStatusChange?.()},async resync(){await s.refresh()},onSections(i,n){s.refresh(),e.onSections?.(i,n)}}}var $=class extends Error{constructor(e,t,i,n,r,o){super(t),this.name="ApiError",this.status=e,this.code=i,this.conflicts=n,this.reason=r,this.retryAfterS=o}},Ps=10,Ls=1;function $t(s,e){let t=(s??"").trim();if(t){let i=Number(t);if(Number.isFinite(i)&&i>=0)return Math.ceil(i);let n=Date.parse(t);if(Number.isFinite(n))return Math.max(0,Math.ceil((n-Date.now())/1e3))}if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return Math.ceil(e)}var ko={seat_conflict:"taken",conflict:"taken",channel_assignment_conflict:"ineligible",allocation_exhausted:"exhausted"},Pe=class{constructor(e,t={}){this.base=e;this.viewerId=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`viewer_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;this.access=t.access,this.onObjectUnavailable=t.onObjectUnavailable;let i=t.referral?.trim();this.referral=i?i.slice(0,120):void 0}get accessScoped(){return!!this.access?.configured}async request(e,t={},i={}){let n=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(i.auth?"unauthorized":"initial");a&&(r.Authorization=a);let l=await fetch(`${this.base}${e}`,{method:n,headers:r,body:o,credentials:"omit"}),p=(l.headers.get("content-type")??"").includes("application/json")?await l.json().catch(()=>null):null;if(!l.ok){let d=p,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)&&!i.auth)return this.request(e,t,{...i,auth:!0});if(l.status===409){let g=u?ko[u]:void 0,m=d?.conflicts?.map(v=>v.label)??t.labels??[];g&&this.onObjectUnavailable?.({labels:m,reason:g,code:u})}let h;if(l.status===429&&(h=$t(l.headers.get("Retry-After"),d?.retryAfterSeconds)??Ls,n==="GET"&&!i.rateLimit&&h<=Ps))return await new Promise(g=>setTimeout(g,h*1e3)),this.request(e,t,{...i,rateLimit:!0});throw new $(l.status,d?.error??`request_failed_${l.status}`,u,d?.conflicts,d?.reason,h)}return p}async requestBlob(e,t={}){let i={},n=await this.access?.authorization(t.auth?"unauthorized":"initial");n&&(i.Authorization=n);let r=await fetch(`${this.base}${e}`,{method:"GET",headers:i,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=$t(r.headers.get("Retry-After"),a?.retryAfterSeconds)??Ls,!t.rateLimit&&c<=Ps))return await new Promise(p=>setTimeout(p,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,i,n){return this.request(`/pub/events/${encodeURIComponent(e)}/hold`,{method:"POST",body:{selections:t,...i?{ttlMs:i}:{},...n?{replaceHoldId:n}:{},...this.referral?{referral:this.referral}:{}},labels:t.map(r=>r.label)})}bestAvailable(e,t,i,n,r){return this.request(`/pub/events/${encodeURIComponent(e)}/best-available`,{method:"POST",body:{qty:t,...i?{categoryKey:i}:{},...n?{zoneId:n}:{},...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,i){return this.request(`/pub/events/${encodeURIComponent(e)}/release`,{method:"POST",body:{labels:t,holdId:i}})}extend(e,t,i){return this.request(`/pub/events/${encodeURIComponent(e)}/extend`,{method:"POST",body:{holdId:t,...i?{ttlMs:i}:{}}})}paymentOptions(e){return this.request(`/pub/events/${encodeURIComponent(e)}/payment-options`)}availability(e,t=!1){return this.request(`/pub/events/${encodeURIComponent(e)}/availability${t?"?live=1":""}`)}startCheckout(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/checkout`,{method:"POST",body:t})}orderStatus(e){return this.request(`/pub/orders/${encodeURIComponent(e)}/status`)}subscribeTicket(e){return this.request(`/pub/events/${encodeURIComponent(e)}/subscribe-tickets`,{method:"POST",body:{}})}subscribeUrl(e){let t=this.base.replace(/^http/,"ws"),i=new URLSearchParams({surface:"picker",viewerId:this.viewerId});return`${t}/pub/events/${encodeURIComponent(e)}/subscribe?${i}`}socketUrl(e){return this.accessScoped?"":this.subscribeUrl(e)}socketProtocols(e){return this.accessScoped?[]:[Re]}createRealtime(e,t){return this.accessScoped?null:new ve({url:this.subscribeUrl(e),sink:t})}};import{getLocale as Ao,loadLocale as Po,LOCALE_NAMES as Lo,localeDirection as Is,resolveLocale as Os,setStringOverrides as Mo,TRANSLATED_LOCALES as Ho}from"@seatlayer/core";import{getLocale as So,localeDirection as To,t as Co}from"@seatlayer/core";function Eo(){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(s,e,t){let i=document.createElement("div");i.className="sl-picker",i.tabIndex=-1,i.lang=So(),i.dir=To(),s.appendChild(i),Object.entries(mt(void 0,t)).forEach(([r,o])=>i.style.setProperty(r,o)),i.innerHTML=`
1
+ import{a as Bn,c as $t,d as Ue,e as Vt,f as ft}from"./chunk-ZE36NABM.js";import{a as f,b as _,c as T,d as C}from"./chunk-OSZ7DOEH.js";import{PickerController as $a,formatMoney as Va,getLocale as Gi,loadLocale as Fa,localeDirection as za,LOCALE_NAMES as ja,resolveLocale as Ga,setStringOverrides as qa,t as le}from"@seatlayer/core";var Ie="seatlayer.v1";function _o(n){let e=typeof n.default=="string"?n.default:"free",t={};if(n.seats&&typeof n.seats=="object")for(let[i,s]of Object.entries(n.seats))typeof s=="string"&&s!==e&&(t[i]=s);return{default:e,exceptions:t}}function Do(n,e){if(!n||n.default!==e.default)return null;let t=[];for(let[i,s]of Object.entries(e.exceptions))n.exceptions[i]!==s&&t.push({label:i,status:s});for(let i of Object.keys(n.exceptions))i in e.exceptions||t.push({label:i,status:e.default});return t}function Bo(n,e){for(let t of e)t.status===n.default?delete n.exceptions[t.label]:n.exceptions[t.label]=t.status}function Nn(n){if(/(?:^|[?&#])(?:token|access_token|bearer|authorization|ticket|tkt|bse)=/i.test(n))throw new Error("seatlayer: refusing to open a socket with a credential in the URL");if(/\bbse_[A-Za-z0-9._-]+/.test(n))throw new Error("seatlayer: refusing to open a socket with a credential in the URL")}var ve=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,Nn(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=[Ie];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(Ie)||e.unshift(Ie)):r?.ticket&&(e=[Ie,`tkt.${r.ticket}`])}let t=this.version!==null;t&&e.push(`sv.${this.version}`);let i=this.useQueryMarker?`${this.opts.url}${this.opts.url.includes("?")?"&":"?"}pv=1`:this.opts.url;Nn(i);let s;try{s=(this.opts.socketFactory??((o,a)=>new WebSocket(o,a)))(i,e)}catch{this.scheduleReconnect();return}this.ws=s,s.onopen=()=>{this.ws===s&&(this.attempt=0,this.v1=s.protocol===Ie,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 i=Array.isArray(e.hidden)?e.hidden:[],s=Array.isArray(e.closed)?e.closed:[],r=i.join("\0"),o=s.join("\0");(r!==this.hidden||o!==this.closedSections)&&(this.hidden=r,this.closedSections=o,this.opts.sink.onSections?.(i,s))}if(t!=="hidden"){if(t==="presence"){this.opts.sink.onPresence?.({shoppingSessions:Number(e.shoppingSessions)||0,activeHolds:Number(e.activeHolds)||0});return}if(t!=="allocation"){if(t==="snapshot"||!t&&e.seats){this.answered();let i=_o(e),s=Do(this.projection,i);this.projection=i,s===null?this.opts.sink.applyProjection?this.opts.sink.applyProjection(i):this.opts.sink.resync():s.length&&this.opts.sink.applyStatuses(s);return}if(t==="delta"&&Array.isArray(e.changes)){this.answered();let i=e.changes.filter(s=>typeof s?.label=="string"&&typeof s?.status=="string").map(s=>({label:s.label,status:s.status}));if(!i.length)return;this.projection&&Bo(this.projection,i),this.opts.sink.applyStatuses(i)}}}}answered(){this.resumeTimer&&(clearTimeout(this.resumeTimer),this.resumeTimer=null)}reportIfAccessError(e){let t=e?.reason;e?.name==="BuyerAccessUnavailableError"&&(this.stopped=!0,this.opts.onAccessUnavailable?.({reason:t??"invalid",code:e.code,status:e.status,retryable:t==="paused"}))}startKeepalive(e){this.pingTimer=setInterval(()=>{if(this.ws===e){try{e.send(JSON.stringify({type:"ping"}))}catch{return}this.clearPongTimer(),this.pongTimer=setTimeout(()=>{this.pongTimer=null;try{e.close()}catch{}},1e4)}},25e3)}scheduleReconnect(){if(this.stopped||this.reconnectTimer)return;let e=Math.min(this.attempt++,5),t=Math.min(1e3*2**e,15e3),i=Math.random()*t;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},i)}clearPongTimer(){this.pongTimer&&(clearTimeout(this.pongTimer),this.pongTimer=null)}clearTimers(){this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null,this.clearPongTimer(),this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.resumeTimer&&clearTimeout(this.resumeTimer),this.resumeTimer=null}};function No(n){return n==="blocked"?"not_for_sale":n==="held"||n==="booked"||n==="free"||n==="not_for_sale"?n:"free"}function gt(n,e={}){let t=i=>{let s=n.tableSelection(i);if(s)return s.physicalSeatIds;let r=n.idForLabel(i);return r?[r]:[]};return{applyStatuses(i){let s=n.currentHold()?.labels??[],r={free:[],held:[],booked:[],not_for_sale:[]},o=[],a=[],l=new Map(n.getSelection().map(c=>[c.label,c.id]));for(let c of i){let d=t(c.label);if(!d.length)continue;let p=No(c.status);if(r[p].push(...d),e.flashOnLiveChange&&p!=="free"&&!s.includes(c.label)&&d.some(u=>n.getStatus(u)==="free")){let u=p==="held"?"#f4b740":"#f43f5e";for(let h of d)o.push({id:h,color:u})}p!=="free"&&!s.includes(c.label)&&l.has(c.label)&&a.push(c.label)}for(let c of["free","held","booked","not_for_sale"])r[c].length&&n.setStatus(r[c],c);for(let c of o)n.flashSeat(c.id,c.color);if(a.length){let c=a.flatMap(p=>t(p));c.length&&n.deselect(c);let d=i.some(p=>p.status==="blocked"&&a.includes(p.label));e.onSelectedObjectUnavailable?.(a,d?"ineligible":"taken")}e.onStatusChange?.()},async resync(){await n.refresh()},onSections(i,s){n.refresh(),e.onSections?.(i,s)}}}var $=class extends Error{constructor(e,t,i,s,r,o){super(t),this.name="ApiError",this.status=e,this.code=i,this.conflicts=s,this.reason=r,this.retryAfterS=o}},$n=10,Vn=1;function Ft(n,e){let t=(n??"").trim();if(t){let i=Number(t);if(Number.isFinite(i)&&i>=0)return Math.ceil(i);let s=Date.parse(t);if(Number.isFinite(s))return Math.max(0,Math.ceil((s-Date.now())/1e3))}if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return Math.ceil(e)}var $o={seat_conflict:"taken",conflict:"taken",channel_assignment_conflict:"ineligible",allocation_exhausted:"exhausted"},Pe=class{constructor(e,t={}){this.base=e;this.viewerId=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`viewer_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;this.access=t.access,this.onObjectUnavailable=t.onObjectUnavailable;let i=t.referral?.trim();this.referral=i?i.slice(0,120):void 0}get accessScoped(){return!!this.access?.configured}async request(e,t={},i={}){let s=t.method??"GET",r={},o;t.body!==void 0&&(r["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await this.access?.authorization(i.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)&&!i.auth)return this.request(e,t,{...i,auth:!0});if(l.status===409){let g=u?$o[u]:void 0,m=p?.conflicts?.map(y=>y.label)??t.labels??[];g&&this.onObjectUnavailable?.({labels:m,reason:g,code:u})}let h;if(l.status===429&&(h=Ft(l.headers.get("Retry-After"),p?.retryAfterSeconds)??Vn,s==="GET"&&!i.rateLimit&&h<=$n))return await new Promise(g=>setTimeout(g,h*1e3)),this.request(e,t,{...i,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 i={},s=await this.access?.authorization(t.auth?"unauthorized":"initial");s&&(i.Authorization=s);let r=await fetch(`${this.base}${e}`,{method:"GET",headers:i,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=Ft(r.headers.get("Retry-After"),a?.retryAfterSeconds)??Vn,!t.rateLimit&&c<=$n))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,i,s){return this.request(`/pub/events/${encodeURIComponent(e)}/hold`,{method:"POST",body:{selections:t,...i?{ttlMs:i}:{},...s?{replaceHoldId:s}:{},...this.referral?{referral:this.referral}:{}},labels:t.map(r=>r.label)})}bestAvailable(e,t,i,s,r){return this.request(`/pub/events/${encodeURIComponent(e)}/best-available`,{method:"POST",body:{qty:t,...i?{categoryKey:i}:{},...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,i){return this.request(`/pub/events/${encodeURIComponent(e)}/release`,{method:"POST",body:{labels:t,holdId:i}})}extend(e,t,i){return this.request(`/pub/events/${encodeURIComponent(e)}/extend`,{method:"POST",body:{holdId:t,...i?{ttlMs:i}:{}}})}paymentOptions(e){return this.request(`/pub/events/${encodeURIComponent(e)}/payment-options`)}availability(e,t=!1){return this.request(`/pub/events/${encodeURIComponent(e)}/availability${t?"?live=1":""}`)}startCheckout(e,t){return this.request(`/pub/events/${encodeURIComponent(e)}/checkout`,{method:"POST",body:t})}orderStatus(e){return this.request(`/pub/orders/${encodeURIComponent(e)}/status`)}subscribeTicket(e){return this.request(`/pub/events/${encodeURIComponent(e)}/subscribe-tickets`,{method:"POST",body:{}})}subscribeUrl(e){let t=this.base.replace(/^http/,"ws"),i=new URLSearchParams({surface:"picker",viewerId:this.viewerId});return`${t}/pub/events/${encodeURIComponent(e)}/subscribe?${i}`}socketUrl(e){return this.accessScoped?"":this.subscribeUrl(e)}socketProtocols(e){return this.accessScoped?[]:[Ie]}createRealtime(e,t){return this.accessScoped?null:new ve({url:this.subscribeUrl(e),sink:t})}};import{getLocale as Go,loadLocale as qo,LOCALE_NAMES as Uo,localeDirection as jn,resolveLocale as Gn,setStringOverrides as Ko,TRANSLATED_LOCALES as Wo}from"@seatlayer/core";import{getLocale as Vo,localeDirection as Fo,t as zo}from"@seatlayer/core";function jo(){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 Fn(n,e,t){let i=document.createElement("div");i.className="sl-picker",i.tabIndex=-1,i.lang=Vo(),i.dir=Fo(),n.appendChild(i),Object.entries(ft(void 0,t)).forEach(([r,o])=>i.style.setProperty(r,o)),i.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">
@@ -33,7 +33,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
33
33
  </div>
34
34
  <div class="sl-boot" data-ref="boot">
35
35
  <div class="sl-boot-bar" aria-hidden="true"></div>
36
- ${Eo()}
36
+ ${jo()}
37
37
  <span class="sl-boot-say" role="status" aria-live="polite" data-sl-t="picker.loadingSeatMap">${e("picker.loadingSeatMap","Loading seat map\u2026")}</span>
38
38
  </div>
39
39
  <div class="sl-toast" data-ref="toast" role="status" aria-live="polite"></div>
@@ -76,7 +76,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
76
76
  <button type="button" class="sl-cta" data-ref="cta" disabled></button>
77
77
  </div>
78
78
  </div>
79
- </div>`;let n={};return i.querySelectorAll("[data-ref]").forEach(r=>{n[r.dataset.ref]=r}),{root:i,mapHost:n.map,els:n}}function Hs(s){let e=(t,i)=>{for(let n of s.querySelectorAll(`[${t}]`)){let r=n.getAttribute(t);if(!r)continue;let o=Co(r);o!==r&&i(n,o)}};e("data-sl-t",(t,i)=>{t.textContent=i}),e("data-sl-a",(t,i)=>{t.setAttribute("aria-label",i)}),e("data-sl-ti",(t,i)=>{t.setAttribute("title",i)})}function Vt(s,e){let t=Os(s),i=Ho.includes(t)?t:"en";return e&&Mo(e),{locale:i,direction:Is(i),ready:Po(s)}}function Ft(s,e,t){s.lang=e.locale,s.dir=e.direction,e.ready.then(t)}function Rs(s,e){if(!s)return null;let t=(e.languages??[]).map(n=>Os(n)).filter((n,r,o)=>o.indexOf(n)===r);if(t.length<2)return null;let i=document.createElement("select");i.className="sl-langsel",i.setAttribute("aria-label",e.label);for(let n of t){let r=document.createElement("option");r.value=n,r.textContent=Lo[n]??n,r.selected=n===Ao(),i.appendChild(r)}return i.addEventListener("change",()=>e.onChange(i.value)),s.appendChild(i),i}function _s(s,e){e.root.lang=s,e.root.dir=Is(s),Hs(e.root);for(let i of e.painters)try{i()}catch{}e.refreshMapCopy();let t=e.languageSelect;t&&t.value!==s&&(t.value=s)}var ae=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}},Io=new Set(["buyer_access_expired"]),Oo=new Set(["paused","provider_failed","channel_denied"]);function Ro(s,e){switch(e){case"buyer_access_invalid":return"invalid";case"buyer_access_revoked":return"revoked";case"buyer_access_origin_mismatch":return"origin_mismatch";case"buyer_access_event_mismatch":return"event_mismatch";case"buyer_access_group_mismatch":return"group_mismatch";case"buyer_access_mode_mismatch":return"mode_mismatch";case"buyer_access_environment_mismatch":return"environment_mismatch";case"channel_access_denied":return"channel_denied";case"channel_paused":return"paused";case"invalid_channel_scope":return"invalid_scope";default:break}return s===401?"invalid":null}function _o(s,e){return s===401&&!!e&&Io.has(e)}var Do=3e4,Z,J,We,Ye,gt,Le,ye,Qe,bt,vt,yt,_e,ee,Ci,zt,Ue,pe=class{constructor(e){R(this,ee);R(this,Z,null);R(this,J,0);R(this,We,null);R(this,Ye);R(this,gt);R(this,Le,null);R(this,ye,null);R(this,Qe,null);R(this,bt);R(this,vt);R(this,yt,!1);R(this,_e);if(C(this,Ye,e.provider),C(this,gt,e.skewMs??Do),C(this,bt,e.onExpired),C(this,vt,e.onUnavailable),e.token){let t=typeof e.token=="string"?{token:e.token}:e.token;E(this,ee,Ci).call(this,t)}C(this,yt,!!f(this,Ye)||!!f(this,Z))}get configured(){return f(this,yt)}onRenewed(e){C(this,_e,e)}get unavailable(){return f(this,ye)}get hasToken(){return!!f(this,Z)&&(f(this,J)===0||f(this,J)>Date.now())}get expiresAt(){return f(this,J)}async authorization(e="initial"){if(!this.configured)return null;if(f(this,ye))throw new ae(f(this,ye));let t=Date.now();if(!f(this,Z)||f(this,J)>0&&f(this,J)-f(this,gt)<=t){let n=!!f(this,Z)&&f(this,J)>0&&f(this,J)<=t,r=f(this,Z)?n?"expired":"expiring":e,o=await E(this,ee,zt).call(this,r);if(!o)throw new ae(f(this,ye)??f(this,Qe)??E(this,ee,Ue).call(this,"provider_failed"));return`Bearer ${o}`}return`Bearer ${f(this,Z)}`}async handleFailure(e,t){var n;if(!this.configured)return!1;if(_o(e,t)){C(this,Z,null),C(this,J,0);let r=await E(this,ee,zt).call(this,"unauthorized",t);return(n=f(this,bt))==null||n.call(this,{reason:"unauthorized",code:t,refreshed:!!r}),!!r}let i=Ro(e,t);return i&&E(this,ee,Ue).call(this,i,t,e),!1}async refresh(e="manual"){return C(this,ye,null),C(this,Qe,null),C(this,Z,null),C(this,J,0),!!await E(this,ee,zt).call(this,e)}clear(){C(this,Z,null),C(this,We,null),C(this,J,0),C(this,Le,null),C(this,_e,void 0)}toJSON(){return{configured:this.configured,hasToken:this.hasToken}}toString(){return"[BuyerAccessContext redacted]"}};Z=new WeakMap,J=new WeakMap,We=new WeakMap,Ye=new WeakMap,gt=new WeakMap,Le=new WeakMap,ye=new WeakMap,Qe=new WeakMap,bt=new WeakMap,vt=new WeakMap,yt=new WeakMap,_e=new WeakMap,ee=new WeakSet,Ci=function(e){return!e||typeof e.token!="string"||!e.token?null:(C(this,We,e.token),C(this,Z,e.token),C(this,J,typeof e.expiresAt=="number"?e.expiresAt:0),f(this,Z))},zt=function(e,t){if(f(this,Le))return f(this,Le);let i=f(this,Ye);if(!i)return E(this,ee,Ue).call(this,"no_token",t),Promise.resolve(null);let n=f(this,We),r=(async()=>{try{let o=await i({reason:e}),a=E(this,ee,Ci).call(this,o);if(!a)return E(this,ee,Ue).call(this,"provider_failed",t),null;if(n&&n!==a&&f(this,_e))try{await f(this,_e).call(this,{previousToken:n,token:a,reason:e})}catch{}return a}catch{return E(this,ee,Ue).call(this,"provider_failed",t),null}finally{C(this,Le,null)}})();return C(this,Le,r),r},Ue=function(e,t,i){var r;let n={reason:e,code:t,status:i,retryable:e==="paused"||e==="channel_denied"};return C(this,Qe,n),Oo.has(e)||(C(this,ye,n),C(this,Z,null),C(this,J,0)),(r=f(this,vt))==null||r.call(this,n),n};function xt(s,e={}){return!s.buyerAccessTokenProvider&&!s.buyerAccessToken?null:new pe({provider:s.buyerAccessTokenProvider,token:s.buyerAccessToken,...e})}var Bo=3e4;function No(s){if(!s||typeof s!="object"||Array.isArray(s))return!1;let e=s;return typeof e.token=="string"&&e.token.startsWith("bse_")&&typeof e.expiresAt=="number"&&Number.isFinite(e.expiresAt)&&e.expiresAt>Date.now()&&!!e.event&&typeof e.event=="object"&&!!e.doc&&typeof e.doc=="object"&&!!e.objects&&typeof e.objects=="object"&&!Array.isArray(e.objects)&&!!e.objects.seats&&typeof e.objects.seats=="object"}var Ei=class{constructor(e,t,i){this.base=e;this.event=t;this.publicKey=i;this.value=null;this.inflight=null}async load(e=!1){if(e&&(this.value=null),this.value&&this.value.expiresAt-Bo>Date.now())return this.value;if(this.inflight)return this.inflight;let t=(async()=>{let i=await fetch(`${this.base}/pub/events/${encodeURIComponent(this.event)}/bootstrap`,{method:"POST",body:JSON.stringify({publicKey:this.publicKey}),credentials:"omit"}),n=await i.json().catch(()=>null);if(!i.ok){let r=i.status===429?$t(i.headers.get("Retry-After"),n?.retryAfterSeconds):void 0;throw new $(i.status,n?.error??`request_failed_${i.status}`,n?.code??n?.error,void 0,void 0,r)}if(!No(n))throw new $(502,"invalid_bootstrap_response","invalid_bootstrap_response");return this.value=n,n})();this.inflight=t;try{return await t}finally{this.inflight===t&&(this.inflight=null)}}async token(e){let t=e==="expiring"||e==="expired"||e==="unauthorized"||e==="manual",i=await this.load(t);return{token:i.token,expiresAt:i.expiresAt}}},Ai=class extends Pe{constructor(t,i,n,r,o){super(t,{...o,access:r});this.event=i;this.loader=n;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 i=await this.bundle(t);return this.initialChartDelivered=!0,{event:i.event,doc:i.doc,chartDelivery:i.chartDelivery}}async objects(t){if(this.assertEvent(t),this.initialObjectsDelivered)return super.objects(t);let i=await this.bundle(t);return this.initialObjectsDelivered=!0,i.objects}};function jt(s){let e=new Ei(s.base,s.event,s.publicKey),t=new pe({provider:({reason:i})=>e.token(i),...s.accessHooks});return{access:t,api:new Ai(s.base,s.event,e,t,s.apiOptions??{})}}import{t as we,tCount as De}from"@seatlayer/core";var G={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 $o=`.sl-picker,.sl-modal-scrim,.sl-mo-host{--sl-dur-enter:${G.enter}ms;--sl-dur-exit:${G.exit}ms;--sl-dur-spring:${G.spring}ms;--sl-dur-flight:${G.flight}ms;--sl-dur-stagger:${G.stagger}ms;--sl-dur-xfade:${G.crossfade}ms;--sl-dur-collapse:${G.collapse}ms;--sl-dur-rung:${G.rung}ms;--sl-ease-enter:${G.easeEnter};--sl-ease-exit:${G.easeExit};--sl-ease-spring:${G.easeSpring};--sl-mo-ox:50%;--sl-mo-oy:50%}`,Vo=`@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:${G.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:${G.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}}`,Ds=$o+`
79
+ </div>`;let s={};return i.querySelectorAll("[data-ref]").forEach(r=>{s[r.dataset.ref]=r}),{root:i,mapHost:s.map,els:s}}function zn(n){let e=(t,i)=>{for(let s of n.querySelectorAll(`[${t}]`)){let r=s.getAttribute(t);if(!r)continue;let o=zo(r);o!==r&&i(s,o)}};e("data-sl-t",(t,i)=>{t.textContent=i}),e("data-sl-a",(t,i)=>{t.setAttribute("aria-label",i)}),e("data-sl-ti",(t,i)=>{t.setAttribute("title",i)})}function zt(n,e){let t=Gn(n),i=Wo.includes(t)?t:"en";return e&&Ko(e),{locale:i,direction:jn(i),ready:qo(n)}}function jt(n,e,t){n.lang=e.locale,n.dir=e.direction,e.ready.then(t)}function qn(n,e){if(!n)return null;let t=(e.languages??[]).map(s=>Gn(s)).filter((s,r,o)=>o.indexOf(s)===r);if(t.length<2)return null;let i=document.createElement("select");i.className="sl-langsel",i.setAttribute("aria-label",e.label);for(let s of t){let r=document.createElement("option");r.value=s,r.textContent=Uo[s]??s,r.selected=s===Go(),i.appendChild(r)}return i.addEventListener("change",()=>e.onChange(i.value)),n.appendChild(i),i}function Un(n,e){e.root.lang=n,e.root.dir=jn(n),zn(e.root);for(let i of e.painters)try{i()}catch{}e.refreshMapCopy();let t=e.languageSelect;t&&t.value!==n&&(t.value=n)}var ae=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}},Yo=new Set(["buyer_access_expired"]),Qo=new Set(["paused","provider_failed","channel_denied"]);function Xo(n,e){switch(e){case"buyer_access_invalid":return"invalid";case"buyer_access_revoked":return"revoked";case"buyer_access_origin_mismatch":return"origin_mismatch";case"buyer_access_event_mismatch":return"event_mismatch";case"buyer_access_group_mismatch":return"group_mismatch";case"buyer_access_mode_mismatch":return"mode_mismatch";case"buyer_access_environment_mismatch":return"environment_mismatch";case"channel_access_denied":return"channel_denied";case"channel_paused":return"paused";case"invalid_channel_scope":return"invalid_scope";default:break}return n===401?"invalid":null}function Zo(n,e){return n===401&&!!e&&Yo.has(e)}var Jo=3e4,X,Z,We,Ye,bt,Le,ye,Qe,vt,yt,wt,_e,J,Ri,Gt,Ke,pe=class{constructor(e){_(this,J);_(this,X,null);_(this,Z,0);_(this,We,null);_(this,Ye);_(this,bt);_(this,Le,null);_(this,ye,null);_(this,Qe,null);_(this,vt);_(this,yt);_(this,wt,!1);_(this,_e);if(T(this,Ye,e.provider),T(this,bt,e.skewMs??Jo),T(this,vt,e.onExpired),T(this,yt,e.onUnavailable),e.token){let t=typeof e.token=="string"?{token:e.token}:e.token;C(this,J,Ri).call(this,t)}T(this,wt,!!f(this,Ye)||!!f(this,X))}get configured(){return f(this,wt)}onRenewed(e){T(this,_e,e)}get unavailable(){return f(this,ye)}get hasToken(){return!!f(this,X)&&(f(this,Z)===0||f(this,Z)>Date.now())}get expiresAt(){return f(this,Z)}async authorization(e="initial"){if(!this.configured)return null;if(f(this,ye))throw new ae(f(this,ye));let t=Date.now();if(!f(this,X)||f(this,Z)>0&&f(this,Z)-f(this,bt)<=t){let s=!!f(this,X)&&f(this,Z)>0&&f(this,Z)<=t,r=f(this,X)?s?"expired":"expiring":e,o=await C(this,J,Gt).call(this,r);if(!o)throw new ae(f(this,ye)??f(this,Qe)??C(this,J,Ke).call(this,"provider_failed"));return`Bearer ${o}`}return`Bearer ${f(this,X)}`}async handleFailure(e,t){var s;if(!this.configured)return!1;if(Zo(e,t)){T(this,X,null),T(this,Z,0);let r=await C(this,J,Gt).call(this,"unauthorized",t);return(s=f(this,vt))==null||s.call(this,{reason:"unauthorized",code:t,refreshed:!!r}),!!r}let i=Xo(e,t);return i&&C(this,J,Ke).call(this,i,t,e),!1}async refresh(e="manual"){return T(this,ye,null),T(this,Qe,null),T(this,X,null),T(this,Z,0),!!await C(this,J,Gt).call(this,e)}clear(){T(this,X,null),T(this,We,null),T(this,Z,0),T(this,Le,null),T(this,_e,void 0)}toJSON(){return{configured:this.configured,hasToken:this.hasToken}}toString(){return"[BuyerAccessContext redacted]"}};X=new WeakMap,Z=new WeakMap,We=new WeakMap,Ye=new WeakMap,bt=new WeakMap,Le=new WeakMap,ye=new WeakMap,Qe=new WeakMap,vt=new WeakMap,yt=new WeakMap,wt=new WeakMap,_e=new WeakMap,J=new WeakSet,Ri=function(e){return!e||typeof e.token!="string"||!e.token?null:(T(this,We,e.token),T(this,X,e.token),T(this,Z,typeof e.expiresAt=="number"?e.expiresAt:0),f(this,X))},Gt=function(e,t){if(f(this,Le))return f(this,Le);let i=f(this,Ye);if(!i)return C(this,J,Ke).call(this,"no_token",t),Promise.resolve(null);let s=f(this,We),r=(async()=>{try{let o=await i({reason:e}),a=C(this,J,Ri).call(this,o);if(!a)return C(this,J,Ke).call(this,"provider_failed",t),null;if(s&&s!==a&&f(this,_e))try{await f(this,_e).call(this,{previousToken:s,token:a,reason:e})}catch{}return a}catch{return C(this,J,Ke).call(this,"provider_failed",t),null}finally{T(this,Le,null)}})();return T(this,Le,r),r},Ke=function(e,t,i){var r;let s={reason:e,code:t,status:i,retryable:e==="paused"||e==="channel_denied"};return T(this,Qe,s),Qo.has(e)||(T(this,ye,s),T(this,X,null),T(this,Z,0)),(r=f(this,yt))==null||r.call(this,s),s};function xt(n,e={}){return!n.buyerAccessTokenProvider&&!n.buyerAccessToken?null:new pe({provider:n.buyerAccessTokenProvider,token:n.buyerAccessToken,...e})}var ea=3e4;function ta(n){if(!n||typeof n!="object"||Array.isArray(n))return!1;let e=n;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 Ii=class{constructor(e,t,i){this.base=e;this.event=t;this.publicKey=i;this.value=null;this.inflight=null}async load(e=!1){if(e&&(this.value=null),this.value&&this.value.expiresAt-ea>Date.now())return this.value;if(this.inflight)return this.inflight;let t=(async()=>{let i=await fetch(`${this.base}/pub/events/${encodeURIComponent(this.event)}/bootstrap`,{method:"POST",body:JSON.stringify({publicKey:this.publicKey}),credentials:"omit"}),s=await i.json().catch(()=>null);if(!i.ok){let r=i.status===429?Ft(i.headers.get("Retry-After"),s?.retryAfterSeconds):void 0;throw new $(i.status,s?.error??`request_failed_${i.status}`,s?.code??s?.error,void 0,void 0,r)}if(!ta(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",i=await this.load(t);return{token:i.token,expiresAt:i.expiresAt}}},_i=class extends Pe{constructor(t,i,s,r,o){super(t,{...o,access:r});this.event=i;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 i=await this.bundle(t);return this.initialChartDelivered=!0,{event:i.event,doc:i.doc,chartDelivery:i.chartDelivery}}async objects(t){if(this.assertEvent(t),this.initialObjectsDelivered)return super.objects(t);let i=await this.bundle(t);return this.initialObjectsDelivered=!0,i.objects}};function qt(n){let e=new Ii(n.base,n.event,n.publicKey),t=new pe({provider:({reason:i})=>e.token(i),...n.accessHooks});return{access:t,api:new _i(n.base,n.event,e,t,n.apiOptions??{})}}import{t as xe,tCount as De}from"@seatlayer/core";var G={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 ia=`.sl-picker,.sl-modal-scrim,.sl-mo-host{--sl-dur-enter:${G.enter}ms;--sl-dur-exit:${G.exit}ms;--sl-dur-spring:${G.spring}ms;--sl-dur-flight:${G.flight}ms;--sl-dur-stagger:${G.stagger}ms;--sl-dur-xfade:${G.crossfade}ms;--sl-dur-collapse:${G.collapse}ms;--sl-dur-rung:${G.rung}ms;--sl-ease-enter:${G.easeEnter};--sl-ease-exit:${G.easeExit};--sl-ease-spring:${G.easeSpring};--sl-mo-ox:50%;--sl-mo-oy:50%}`,na=`@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:${G.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:${G.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}}`,Kn=ia+`
80
80
  /* Anchored open/close. The translate is 8px TOWARD the anchor, which is what
81
81
  makes the card look attached to the seat rather than dropped on the map. */
82
82
  .sl-mo-in{transform-origin:var(--sl-mo-ox) var(--sl-mo-oy);
@@ -143,7 +143,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
143
143
  @keyframes slMoZoom{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}
144
144
  .sl-mo-rotate-in{animation:slMoSpin var(--sl-dur-spring) var(--sl-ease-spring) 1 both}
145
145
  @keyframes slMoSpin{from{opacity:0;transform:rotate(-140deg) scale(.8)}to{opacity:1;transform:none}}
146
- `+Vo;function Bs(){try{return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}catch{return!1}}function Pi(s,e){if(!e){s.style.removeProperty("--sl-mo-ox"),s.style.removeProperty("--sl-mo-oy");return}Gt(s,e,s.getBoundingClientRect())}function Gt(s,e,t){let i=t.width||1,n=t.height||1,r=o=>Math.max(0,Math.min(100,o));s.style.setProperty("--sl-mo-ox",`${r((e.x-t.left)/i*100).toFixed(1)}%`),s.style.setProperty("--sl-mo-oy",`${r((e.y-t.top)/n*100).toFixed(1)}%`)}function Ns(s,e,t){let i=s.getBoundingClientRect(),n=t.getBoundingClientRect();Gt(s,e,{left:i.left-n.left,top:i.top-n.top,width:i.width,height:i.height})}function qt(s,e){s.classList.remove("sl-mo-out"),e!==void 0&&Pi(s,e),s.classList.remove("sl-mo-in"),s.offsetWidth,s.classList.add("sl-mo-in")}function $s(s){s.classList.add("sl-mo-stagger");let e=0;for(let t of Array.from(s.children))t.style.setProperty("--sl-mo-i",String(e)),e+=1}function Me(s,e,t={className:"sl-mo-out",duration:G.exit}){let i=()=>{n||(n=!0,window.clearTimeout(r),s.removeEventListener("animationend",i),e?e():s.remove())},n=!1;s.classList.remove("sl-mo-in","sl-mo-slide-up","sl-mo-spring","sl-mo-zoom","sl-mo-rise"),s.classList.add(t.className),s.addEventListener("animationend",i);let r=window.setTimeout(i,Bs()?0:t.duration+60)}var Vs={className:"sl-mo-slide-down",duration:G.exit};function Li(s,e){s.textContent!==e&&(s.textContent=e,s.classList.remove("sl-mo-xfade"),s.offsetWidth,s.classList.add("sl-mo-xfade"))}function Fs(s){if(Bs())return s.onArrive?.(),null;let e=document.createElement("div");e.className="sl-mo-fly sl-mo-host",e.setAttribute("aria-hidden","true"),e.textContent=s.label??"",e.style.left=`${s.from.x}px`,e.style.top=`${s.from.y}px`,e.style.background=s.color??"var(--sl-accent,#6e7bff)",e.style.color=s.ink??"#fff",e.style.setProperty("--sl-fly-dx",`${Math.round(s.to.x-s.from.x)}px`),e.style.setProperty("--sl-fly-dy",`${Math.round(s.to.y-s.from.y)}px`),document.body.appendChild(e);let t=!1,i=()=>{t||(t=!0,window.clearTimeout(n),e.remove(),s.onArrive?.())};e.addEventListener("animationend",i);let n=window.setTimeout(i,G.flight+80);return e}var F=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e]);function Xe(s,e){let t=0;for(let i of s.get(e)?.values()??[])t+=i;return t}function zs(s){let e=[];for(let[t,i]of s)for(let[n,r]of i)r>0&&e.push({areaId:t,tierId:n,qty:r});return e}function js(s){let e=new Map;for(let t of s.keys())e.set(t,Xe(s,t));return e}function wt(s,e,t,i){let n=s.get(e)??new Map;i>0?n.set(t,i):n.delete(t),n.size?s.set(e,n):s.delete(e)}function Gs(s){let e=new Map;for(let t of s)t.objectType!=="ga"||!t.objectId||e.set(t.objectId,(e.get(t.objectId)??0)+(t.quantity??1));return e}function Be(s,e){let t=Gs(e),i=0;for(let n of s.keys())i+=Math.max(0,Xe(s,n)-(t.get(n)??0));return i}function qs(s,e,t){let i=Gs(t),n=0;for(let r of e){let o=s.gaQty.get(r.id);if(!o)continue;let a=i.get(r.id)??0;for(let[l,c]of o){let p=Math.max(0,c-a);a=Math.max(0,a-c),n+=p*s.paidPrice(r.categoryKey,l,Fo(r,l),r.id)}}return n}function Fo(s,e){return e?s.tiers?.find(t=>t.id===e)?.price??s.price:s.price}function Ks(s){let e=[],t=new Map;for(let i of s){if(i.objectType!=="ga"||!i.objectId){e.push({...i,labels:[i.label]});continue}let n=`${i.objectId}\0${i.tierId??""}`,r=t.get(n);if(r){r.quantity=(r.quantity??0)+(i.quantity??1),r.labels.push(i.label);continue}let o={...i,quantity:i.quantity??1,labels:[i.label]};t.set(n,o),e.push(o)}return e}function Us(s,e,t){let i=new Set(t);for(let n of e)n.objectType==="ga"&&n.objectId&&i.has(n.label)&&wt(s,n.objectId,n.tierId??null,0)}function Hi(s,e){if(s.objectType!=="ga")return s.label;let t=e.find(i=>i.id===s.objectId);return t?.displayLabel??t?.label??s.label}function zo(s){let e=new Map;for(let t of s){if(t.objectType!=="ga"||!t.objectId)continue;let i=`${t.objectId}\0${t.tierId??""}`;e.set(i,(e.get(i)??0)+(t.quantity??1))}return e}function Kt(s){let e=s.tiers??[];return e.length>1?e.map(t=>({id:t.id,label:t.name||t.id,price:t.price})):[{id:null,label:s.displayType??we("picker.generalAdmission"),price:s.price}]}function Ws(s,e){let t=s.totalTicketCount()-Xe(s.gaQty,e.id);return Math.max(0,Math.min(e.available,s.maxTickets-t))}function Ii(s,e,t,i){if(xe(s,!1),s.salesClosed){s.toast(s.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let n=Kt(e),r=s.gaQty.get(e.id),o=Xe(s.gaQty,e.id)>0,a=Ws(s,e);if(a<=0&&!o){s.toast(e.available>0?we("picker.maxTicketsForOrder",{count:s.maxTickets}):s.tf("picker.soldOutTitle","Sold out"),"warning");return}if(s.onGAPromptHook){let u={};for(let[g,m]of r??[])u[g??""]=m;if(s.onGAPromptHook({area:e,selected:u,min:0,max:a,tiers:n,confirm:g=>{Ko(s,e,n,g,a)},cancel:()=>xe(s)})===!0)return}let l=new Map;for(let u of n)l.set(u.id,r?.get(u.id)??0);!o&&a>0&&l.set(n[0].id,1);let c={area:e,tiers:n,draft:l,max:a,reopened:o},p=s.root?.dataset.layout==="narrow",d=document.createElement("div");d.className=p?"sl-ga-scrim sl-mo-scrim":"sl-ga-pop-layer",d.innerHTML=jo(s,c,p),s.root?.appendChild(d),s.gaPromptEl=d,s.gaPromptReturnFocus=i??document.activeElement,p||Uo(s,d,t),s.reducedMotion()&&(d.dataset.motion="reduced"),Qs(s,c),Go(s,d,c),requestAnimationFrame(()=>d.querySelector('[data-ga-step="1"]')?.focus())}function jo(s,e,t){let{area:i,tiers:n}=e,r=n.length>1,o=i.displayLabel??i.label,a=n.map(l=>`<div class="sl-ga-prompt-row" data-ga-tier="${F(l.id??"")}"><div class="sl-ga-prompt-label"><span>${F(r?l.label:s.tf("picker.gaChooseTickets","How many tickets?"))}</span>`+(r?`<small>${F(s.money(s.paidPrice(i.categoryKey,l.id,l.price,i.id)))}</small>`:"")+`</div><div class="sl-ga-stepper" role="group" aria-label="${F(r?l.label:o)}"><button type="button" data-ga-step="-1" aria-label="${F(s.tf("picker.fewer","Fewer"))}">\u2212</button><output data-ga-qty aria-live="polite">0</output><button type="button" data-ga-step="1" aria-label="${F(s.tf("picker.more","More"))}">+</button></div></div>`).join("");return`<section class="${t?"sl-ga-sheet":"sl-ga-pop"}" role="dialog" aria-modal="true" aria-label="${F(we("picker.gaChooseForArea",{area:o}))}"><div class="sl-ga-prompt-head"><div class="sl-ga-prompt-eyebrow">${F(i.displayType??s.tf("picker.generalAdmission","General admission"))}</div><h2 class="sl-ga-prompt-title">${F(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="${F(we("common.close"))}">\xD7</button></div><div class="sl-ga-prompt-body">${a}`+(n.length>1?`<div class="sl-ga-prompt-total"><span>${F(s.tf("picker.total","Total"))}</span><b data-ga-total></b></div>`:"")+'<p class="sl-ga-prompt-hint" data-ga-hint></p></div><div class="sl-ga-prompt-actions">'+(e.reopened?`<button type="button" class="sl-ga-prompt-remove" data-ga-remove>${F(s.tf("picker.gaRemove","Remove"))}</button>`:`<button type="button" class="sl-ga-prompt-remove" data-ga-cancel>${F(we("common.cancel"))}</button>`)+'<button type="button" class="sl-ga-prompt-confirm" data-ga-confirm></button></div></section>'}function Oi(s){let e=0;for(let t of s.draft.values())e+=t;return e}function Ys(s,e){let t=0;for(let i of e.tiers)t+=(e.draft.get(i.id)??0)*s.paidPrice(e.area.categoryKey,i.id,i.price,e.area.id);return t}function Qs(s,e){let t=s.gaPromptEl;if(!t)return;let i=Oi(e),n=Ys(s,e);t.querySelectorAll("[data-ga-tier]").forEach(c=>{let p=c.dataset.gaTier?c.dataset.gaTier:null,d=e.draft.get(p)??0,u=c.querySelector("[data-ga-qty]");u&&(u.value=String(d)),c.querySelectorAll("[data-ga-step]").forEach(h=>{h.disabled=Number(h.dataset.gaStep)<0?d<=0:i>=e.max})});let r=t.querySelector("[data-ga-sub]");r&&(r.textContent=`${s.money(s.paidPrice(e.area.categoryKey,e.tiers[0].id,e.tiers[0].price,e.area.id))} \xB7 ${De("picker.leftCount",e.area.available)}`);let o=t.querySelector("[data-ga-total]");o&&(o.textContent=s.money(n));let a=t.querySelector("[data-ga-hint]");a&&(a.textContent=i>=e.max&&e.max>0?e.area.available<=e.max?De("picker.leftCount",e.area.available):we("picker.maxTicketsForOrder",{count:s.maxTickets}):"");let l=t.querySelector("[data-ga-confirm]");l&&(l.textContent=e.reopened?De("picker.gaUpdate",i,{count:i}):De("picker.gaAdd",i,{count:i,price:s.money(n)}),l.disabled=i<=0&&!e.reopened)}function Go(s,e,t){e.querySelectorAll("[data-ga-step]").forEach(i=>{i.addEventListener("click",()=>{let n=i.closest("[data-ga-tier]");if(!n)return;let r=n.dataset.gaTier?n.dataset.gaTier:null,o=Number(i.dataset.gaStep),a=t.draft.get(r)??0,l=t.max-Oi(t);t.draft.set(r,Math.max(0,a+(o>0?Math.min(1,l):-1))),Qs(s,t)})}),e.querySelectorAll("[data-ga-cancel]").forEach(i=>i.addEventListener("click",()=>xe(s))),e.querySelector("[data-ga-remove]")?.addEventListener("click",()=>{s.gaQty.delete(t.area.id),xe(s),s.syncTray(),Mi(s,we("picker.gaRemoved",{area:t.area.displayLabel??t.area.label}))}),e.querySelector("[data-ga-confirm]")?.addEventListener("click",()=>{qo(s,t)}),e.addEventListener("mousedown",i=>{i.target===e&&xe(s)}),e.addEventListener("keydown",i=>{if(i.key==="Escape"){i.stopPropagation(),xe(s);return}if(i.key!=="Tab")return;let n=[...e.querySelectorAll('button:not(:disabled),[tabindex]:not([tabindex="-1"])')];if(!n.length)return;let r=n[0],o=n[n.length-1];i.shiftKey&&document.activeElement===r?(i.preventDefault(),o.focus()):!i.shiftKey&&document.activeElement===o&&(i.preventDefault(),r.focus())})}function qo(s,e){let t=Oi(e),i=Ys(s,e);for(let r of e.tiers)wt(s.gaQty,e.area.id,r.id,e.draft.get(r.id)??0);xe(s),s.syncTray();let n=e.area.displayLabel??e.area.label;t>0?Mi(s,De("picker.gaAdded",t,{count:t,area:n,price:s.money(i)})):Mi(s,we("picker.gaRemoved",{area:n}))}function Ko(s,e,t,i,n){if(typeof i=="number")wt(s.gaQty,e.id,t[0].id,Math.max(0,Math.min(n,Math.floor(i))));else{s.gaQty.delete(e.id);let r=n;for(let o of t){let a=Math.max(0,Math.floor(i[o.id??""]??0)),l=Math.min(a,r);r-=l,wt(s.gaQty,e.id,o.id,l)}}s.syncTray()}function xe(s,e=!0){let t=s.gaPromptReturnFocus;s.gaPromptEl&&Me(s.gaPromptEl),s.gaPromptEl=null,s.gaPromptReturnFocus=null,e&&t&&requestAnimationFrame(()=>(t.isConnected?t:s.root)?.focus())}function Uo(s,e,t){let i=s.root,n=e.querySelector(".sl-ga-pop");if(!i||!n||!t)return;let r=i.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=n.offsetWidth||260,c=n.offsetHeight||220,p=Math.max(8,Math.min(r.width-l-8,o-l/2)),d=a-c-14,u=d>=8?d:Math.min(r.height-c-8,a+14);n.style.left=`${p}px`,n.style.top=`${Math.max(8,u)}px`,n.dataset.side=d>=8?"above":"below",n.style.setProperty("--sl-ga-arrow-x",`${Math.max(12,Math.min(l-12,o-p))}px`)})}function Mi(s,e){s.srEl&&(s.srEl.textContent=e)}function Xs(s,e,t=[]){let i=[],n=zo(t);for(let o of e){let a=s.gaQty.get(o.id);if(!a)continue;let l=Kt(o);for(let c of l){let p=(a.get(c.id)??0)-(n.get(`${o.id}\0${c.id??""}`)??0);if(p<=0)continue;let d=s.paidPrice(o.categoryKey,c.id,c.price,o.id);i.push(`<div class="sl-ga" data-ga="${F(o.id)}" data-ga-row-tier="${F(c.id??"")}"><div class="sl-ga-info"><div class="sl-ga-name">${F(o.displayLabel??o.label)}</div><div class="sl-ga-sub">${F(l.length>1?c.label:o.displayType??s.tf("picker.generalAdmission","General admission"))} \xB7 ${F(s.money(d))} \xB7 ${F(De("picker.leftCount",o.available))}</div></div><div class="sl-ga-qty"><button type="button" data-d="-1" aria-label="${F(s.tf("picker.fewer","Fewer"))}">\u2212</button><span>${p}</span><button type="button" data-d="1" aria-label="${F(s.tf("picker.more","More"))}">+</button></div></div>`)}}let r=e.filter(o=>Xe(s.gaQty,o.id)<=0&&!t.some(a=>a.objectId===o.id));return r.length&&i.push(`<div class="sl-ga-areas" data-ga-areas><button type="button" class="sl-ga-areas-toggle" data-ga-areas-toggle aria-expanded="${s.gaAreasExpanded}"><span>${F(s.tf("picker.gaAreasHeading","Areas"))}</span><small>${r.length}</small></button>`+(s.gaAreasExpanded?`<div class="sl-ga-areas-list">${r.map(o=>`<button type="button" class="sl-ga-area-open" data-ga-open="${F(o.id)}"${o.available<=0?" disabled":""}><span class="name">${F(o.displayLabel??o.label)}<small>${F(o.displayType??s.tf("picker.generalAdmission","General admission"))}</small></span><span class="meta">${F(s.money(s.paidPrice(o.categoryKey,null,o.price,o.id)))} \xB7 ${F(o.available>0?De("picker.leftCount",o.available):s.tf("picker.soldOutTitle","Sold out"))}</span></button>`).join("")}</div>`:"")+"</div>"),i.join("")}function Zs(s,e,t){e.querySelectorAll(".sl-ga .sl-ga-qty button").forEach(i=>{i.addEventListener("click",()=>{let n=i.closest(".sl-ga");if(!n?.dataset.ga)return;let r=t.find(c=>c.id===n.dataset.ga);if(!r)return;let o=n.dataset.gaRowTier?n.dataset.gaRowTier:null,a=Number(i.dataset.d),l=s.gaQty.get(r.id)?.get(o)??0;if(a>0&&Ws(s,r)-Xe(s.gaQty,r.id)<=0){s.toast(we("picker.maxTicketsForOrder",{count:s.maxTickets}),"warning");return}wt(s.gaQty,r.id,o,Math.max(0,l+a)),s.syncTray()})}),e.querySelector("[data-ga-areas-toggle]")?.addEventListener("click",()=>{s.gaAreasExpanded=!s.gaAreasExpanded,s.syncTray()}),e.querySelectorAll("[data-ga-open]").forEach(i=>{i.addEventListener("click",()=>{let n=t.find(r=>r.id===i.dataset.gaOpen);n&&Ii(s,n,null,i)})})}var Ut='<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 Wo=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,Yo=/[\s"'<>`\\]/;function Qo(s){return s.startsWith("//")?!1:s.startsWith("/")||s.startsWith("./")||s.startsWith("../")}function Xo(){try{let s=typeof location>"u"?"":location.origin;return s&&s!=="null"?s:null}catch{return null}}function Ze(s){if(typeof s!="string"||!s||s.length>2e6||s!==s.trim())return!1;if(s.startsWith("data:"))return Wo.test(s);if(Yo.test(s))return!1;let e=Xo();if(Qo(s)){if(!e)return!1;try{let t=new URL(s,e);return t.origin===e&&!t.username&&!t.password}catch{return!1}}try{let t=new URL(s);return t.username||t.password?!1:t.protocol==="https:"||e!=null&&t.origin===e}catch{return!1}}var Zo=/^[a-zA-Z0-9._-]+$/;function Ri(s){let e;try{e=new URL(s,"https://seatlayer.invalid")}catch{return null}if(e.search||e.hash)return null;let t=/^\/pub\/events\/([^/]+)\/assets\/([^/]+)$/.exec(e.pathname);if(!t)return null;try{let i=decodeURIComponent(t[1]),n=decodeURIComponent(t[2]);return!i||!Zo.test(n)?null:{eventKey:i,asset:n}}catch{return null}}function Jo(s){try{return/^\/pub\/events\/[^/]+\/assets(?:\/|$)/.test(new URL(s,"https://seatlayer.invalid").pathname)}catch{return!1}}var Je=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=Ri(e);if(!t)return Promise.resolve(Jo(e)||!Ze(e)?null:e);if(t.eventKey!==this.eventKey||!this.load||this.disposed)return Promise.resolve(null);let i=this.pending.get(e);if(i)return i;let n=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,n),n}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 st}from"@seatlayer/core";import{isAuthoredSeatView as aa,seatViewDisclosure as la}from"@seatlayer/core/view3d/crossfade/panorama";var Js=`
146
+ `+na;function Wn(){try{return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}catch{return!1}}function Di(n,e){if(!e){n.style.removeProperty("--sl-mo-ox"),n.style.removeProperty("--sl-mo-oy");return}Ut(n,e,n.getBoundingClientRect())}function Ut(n,e,t){let i=t.width||1,s=t.height||1,r=o=>Math.max(0,Math.min(100,o));n.style.setProperty("--sl-mo-ox",`${r((e.x-t.left)/i*100).toFixed(1)}%`),n.style.setProperty("--sl-mo-oy",`${r((e.y-t.top)/s*100).toFixed(1)}%`)}function Yn(n,e,t){let i=n.getBoundingClientRect(),s=t.getBoundingClientRect();Ut(n,e,{left:i.left-s.left,top:i.top-s.top,width:i.width,height:i.height})}function Kt(n,e){n.classList.remove("sl-mo-out"),e!==void 0&&Di(n,e),n.classList.remove("sl-mo-in"),n.offsetWidth,n.classList.add("sl-mo-in")}function Qn(n){n.classList.add("sl-mo-stagger");let e=0;for(let t of Array.from(n.children))t.style.setProperty("--sl-mo-i",String(e)),e+=1}function Me(n,e,t={className:"sl-mo-out",duration:G.exit}){let i=()=>{s||(s=!0,window.clearTimeout(r),n.removeEventListener("animationend",i),e?e():n.remove())},s=!1;n.classList.remove("sl-mo-in","sl-mo-slide-up","sl-mo-spring","sl-mo-zoom","sl-mo-rise"),n.classList.add(t.className),n.addEventListener("animationend",i);let r=window.setTimeout(i,Wn()?0:t.duration+60)}var Xn={className:"sl-mo-slide-down",duration:G.exit};function Bi(n,e){n.textContent!==e&&(n.textContent=e,n.classList.remove("sl-mo-xfade"),n.offsetWidth,n.classList.add("sl-mo-xfade"))}function Zn(n){if(Wn())return n.onArrive?.(),null;let e=document.createElement("div");e.className="sl-mo-fly sl-mo-host",e.setAttribute("aria-hidden","true"),e.textContent=n.label??"",e.style.left=`${n.from.x}px`,e.style.top=`${n.from.y}px`,e.style.background=n.color??"var(--sl-accent,#6e7bff)",e.style.color=n.ink??"#fff",e.style.setProperty("--sl-fly-dx",`${Math.round(n.to.x-n.from.x)}px`),e.style.setProperty("--sl-fly-dy",`${Math.round(n.to.y-n.from.y)}px`),document.body.appendChild(e);let t=!1,i=()=>{t||(t=!0,window.clearTimeout(s),e.remove(),n.onArrive?.())};e.addEventListener("animationend",i);let s=window.setTimeout(i,G.flight+80);return e}var F=n=>String(n??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e]);function Xe(n,e){let t=0;for(let i of n.get(e)?.values()??[])t+=i;return t}function Jn(n){let e=[];for(let[t,i]of n)for(let[s,r]of i)r>0&&e.push({areaId:t,tierId:s,qty:r});return e}function es(n){let e=new Map;for(let t of n.keys())e.set(t,Xe(n,t));return e}function kt(n,e,t,i){let s=n.get(e)??new Map;i>0?s.set(t,i):s.delete(t),s.size?n.set(e,s):n.delete(e)}function ts(n){let e=new Map;for(let t of n)t.objectType!=="ga"||!t.objectId||e.set(t.objectId,(e.get(t.objectId)??0)+(t.quantity??1));return e}function Be(n,e){let t=ts(e),i=0;for(let s of n.keys())i+=Math.max(0,Xe(n,s)-(t.get(s)??0));return i}function is(n,e,t){let i=ts(t),s=0;for(let r of e){let o=n.gaQty.get(r.id);if(!o)continue;let a=i.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*n.paidPrice(r.categoryKey,l,sa(r,l),r.id)}}return s}function sa(n,e){return e?n.tiers?.find(t=>t.id===e)?.price??n.price:n.price}function ns(n){let e=[],t=new Map;for(let i of n){if(i.objectType!=="ga"||!i.objectId){e.push({...i,labels:[i.label]});continue}let s=`${i.objectId}\0${i.tierId??""}`,r=t.get(s);if(r){r.quantity=(r.quantity??0)+(i.quantity??1),r.labels.push(i.label);continue}let o={...i,quantity:i.quantity??1,labels:[i.label]};t.set(s,o),e.push(o)}return e}function ss(n,e,t){let i=new Set(t);for(let s of e)s.objectType==="ga"&&s.objectId&&i.has(s.label)&&kt(n,s.objectId,s.tierId??null,0)}function $i(n,e){if(n.objectType!=="ga")return n.label;let t=e.find(i=>i.id===n.objectId);return t?.displayLabel??t?.label??n.label}function ra(n){let e=new Map;for(let t of n){if(t.objectType!=="ga"||!t.objectId)continue;let i=`${t.objectId}\0${t.tierId??""}`;e.set(i,(e.get(i)??0)+(t.quantity??1))}return e}function Wt(n){let e=n.tiers??[];return e.length>1?e.map(t=>({id:t.id,label:t.name||t.id,price:t.price})):[{id:null,label:n.displayType??xe("picker.generalAdmission"),price:n.price}]}function rs(n,e){let t=n.totalTicketCount()-Xe(n.gaQty,e.id);return Math.max(0,Math.min(e.available,n.maxTickets-t))}function Vi(n,e,t,i){if(we(n,!1),n.salesClosed){n.toast(n.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let s=Wt(e),r=n.gaQty.get(e.id),o=Xe(n.gaQty,e.id)>0,a=rs(n,e);if(a<=0&&!o){n.toast(e.available>0?xe("picker.maxTicketsForOrder",{count:n.maxTickets}):n.tf("picker.soldOutTitle","Sold out"),"warning");return}if(n.onGAPromptHook){let u={};for(let[g,m]of r??[])u[g??""]=m;if(n.onGAPromptHook({area:e,selected:u,min:0,max:a,tiers:s,confirm:g=>{ca(n,e,s,g,a)},cancel:()=>we(n)})===!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=n.root?.dataset.layout==="narrow",p=document.createElement("div");p.className=d?"sl-ga-scrim sl-mo-scrim":"sl-ga-pop-layer",p.innerHTML=oa(n,c,d),n.root?.appendChild(p),n.gaPromptEl=p,n.gaPromptReturnFocus=i??document.activeElement,d||da(n,p,t),n.reducedMotion()&&(p.dataset.motion="reduced"),as(n,c),aa(n,p,c),requestAnimationFrame(()=>p.querySelector('[data-ga-step="1"]')?.focus())}function oa(n,e,t){let{area:i,tiers:s}=e,r=s.length>1,o=i.displayLabel??i.label,a=s.map(l=>`<div class="sl-ga-prompt-row" data-ga-tier="${F(l.id??"")}"><div class="sl-ga-prompt-label"><span>${F(r?l.label:n.tf("picker.gaChooseTickets","How many tickets?"))}</span>`+(r?`<small>${F(n.money(n.paidPrice(i.categoryKey,l.id,l.price,i.id)))}</small>`:"")+`</div><div class="sl-ga-stepper" role="group" aria-label="${F(r?l.label:o)}"><button type="button" data-ga-step="-1" aria-label="${F(n.tf("picker.fewer","Fewer"))}">\u2212</button><output data-ga-qty aria-live="polite">0</output><button type="button" data-ga-step="1" aria-label="${F(n.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="${F(xe("picker.gaChooseForArea",{area:o}))}"><div class="sl-ga-prompt-head"><div class="sl-ga-prompt-eyebrow">${F(i.displayType??n.tf("picker.generalAdmission","General admission"))}</div><h2 class="sl-ga-prompt-title">${F(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="${F(xe("common.close"))}">\xD7</button></div><div class="sl-ga-prompt-body">${a}`+(s.length>1?`<div class="sl-ga-prompt-total"><span>${F(n.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>${F(n.tf("picker.gaRemove","Remove"))}</button>`:`<button type="button" class="sl-ga-prompt-remove" data-ga-cancel>${F(xe("common.cancel"))}</button>`)+'<button type="button" class="sl-ga-prompt-confirm" data-ga-confirm></button></div></section>'}function Fi(n){let e=0;for(let t of n.draft.values())e+=t;return e}function os(n,e){let t=0;for(let i of e.tiers)t+=(e.draft.get(i.id)??0)*n.paidPrice(e.area.categoryKey,i.id,i.price,e.area.id);return t}function as(n,e){let t=n.gaPromptEl;if(!t)return;let i=Fi(e),s=os(n,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:i>=e.max})});let r=t.querySelector("[data-ga-sub]");r&&(r.textContent=`${n.money(n.paidPrice(e.area.categoryKey,e.tiers[0].id,e.tiers[0].price,e.area.id))} \xB7 ${De("picker.leftCount",e.area.available)}`);let o=t.querySelector("[data-ga-total]");o&&(o.textContent=n.money(s));let a=t.querySelector("[data-ga-hint]");a&&(a.textContent=i>=e.max&&e.max>0?e.area.available<=e.max?De("picker.leftCount",e.area.available):xe("picker.maxTicketsForOrder",{count:n.maxTickets}):"");let l=t.querySelector("[data-ga-confirm]");l&&(l.textContent=e.reopened?De("picker.gaUpdate",i,{count:i}):De("picker.gaAdd",i,{count:i,price:n.money(s)}),l.disabled=i<=0&&!e.reopened)}function aa(n,e,t){e.querySelectorAll("[data-ga-step]").forEach(i=>{i.addEventListener("click",()=>{let s=i.closest("[data-ga-tier]");if(!s)return;let r=s.dataset.gaTier?s.dataset.gaTier:null,o=Number(i.dataset.gaStep),a=t.draft.get(r)??0,l=t.max-Fi(t);t.draft.set(r,Math.max(0,a+(o>0?Math.min(1,l):-1))),as(n,t)})}),e.querySelectorAll("[data-ga-cancel]").forEach(i=>i.addEventListener("click",()=>we(n))),e.querySelector("[data-ga-remove]")?.addEventListener("click",()=>{n.gaQty.delete(t.area.id),we(n),n.syncTray(),Ni(n,xe("picker.gaRemoved",{area:t.area.displayLabel??t.area.label}))}),e.querySelector("[data-ga-confirm]")?.addEventListener("click",()=>{la(n,t)}),e.addEventListener("mousedown",i=>{i.target===e&&we(n)}),e.addEventListener("keydown",i=>{if(i.key==="Escape"){i.stopPropagation(),we(n);return}if(i.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];i.shiftKey&&document.activeElement===r?(i.preventDefault(),o.focus()):!i.shiftKey&&document.activeElement===o&&(i.preventDefault(),r.focus())})}function la(n,e){let t=Fi(e),i=os(n,e);for(let r of e.tiers)kt(n.gaQty,e.area.id,r.id,e.draft.get(r.id)??0);we(n),n.syncTray();let s=e.area.displayLabel??e.area.label;t>0?Ni(n,De("picker.gaAdded",t,{count:t,area:s,price:n.money(i)})):Ni(n,xe("picker.gaRemoved",{area:s}))}function ca(n,e,t,i,s){if(typeof i=="number")kt(n.gaQty,e.id,t[0].id,Math.max(0,Math.min(s,Math.floor(i))));else{n.gaQty.delete(e.id);let r=s;for(let o of t){let a=Math.max(0,Math.floor(i[o.id??""]??0)),l=Math.min(a,r);r-=l,kt(n.gaQty,e.id,o.id,l)}}n.syncTray()}function we(n,e=!0){let t=n.gaPromptReturnFocus;n.gaPromptEl&&Me(n.gaPromptEl),n.gaPromptEl=null,n.gaPromptReturnFocus=null,e&&t&&requestAnimationFrame(()=>(t.isConnected?t:n.root)?.focus())}function da(n,e,t){let i=n.root,s=e.querySelector(".sl-ga-pop");if(!i||!s||!t)return;let r=i.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 Ni(n,e){n.srEl&&(n.srEl.textContent=e)}function ls(n,e,t=[]){let i=[],s=ra(t);for(let o of e){let a=n.gaQty.get(o.id);if(!a)continue;let l=Wt(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=n.paidPrice(o.categoryKey,c.id,c.price,o.id);i.push(`<div class="sl-ga" data-ga="${F(o.id)}" data-ga-row-tier="${F(c.id??"")}"><div class="sl-ga-info"><div class="sl-ga-name">${F(o.displayLabel??o.label)}</div><div class="sl-ga-sub">${F(l.length>1?c.label:o.displayType??n.tf("picker.generalAdmission","General admission"))} \xB7 ${F(n.money(p))} \xB7 ${F(De("picker.leftCount",o.available))}</div></div><div class="sl-ga-qty"><button type="button" data-d="-1" aria-label="${F(n.tf("picker.fewer","Fewer"))}">\u2212</button><span>${d}</span><button type="button" data-d="1" aria-label="${F(n.tf("picker.more","More"))}">+</button></div></div>`)}}let r=e.filter(o=>Xe(n.gaQty,o.id)<=0&&!t.some(a=>a.objectId===o.id));return r.length&&i.push(`<div class="sl-ga-areas" data-ga-areas><button type="button" class="sl-ga-areas-toggle" data-ga-areas-toggle aria-expanded="${n.gaAreasExpanded}"><span>${F(n.tf("picker.gaAreasHeading","Areas"))}</span><small>${r.length}</small></button>`+(n.gaAreasExpanded?`<div class="sl-ga-areas-list">${r.map(o=>`<button type="button" class="sl-ga-area-open" data-ga-open="${F(o.id)}"${o.available<=0?" disabled":""}><span class="name">${F(o.displayLabel??o.label)}<small>${F(o.displayType??n.tf("picker.generalAdmission","General admission"))}</small></span><span class="meta">${F(n.money(n.paidPrice(o.categoryKey,null,o.price,o.id)))} \xB7 ${F(o.available>0?De("picker.leftCount",o.available):n.tf("picker.soldOutTitle","Sold out"))}</span></button>`).join("")}</div>`:"")+"</div>"),i.join("")}function cs(n,e,t){e.querySelectorAll(".sl-ga .sl-ga-qty button").forEach(i=>{i.addEventListener("click",()=>{let s=i.closest(".sl-ga");if(!s?.dataset.ga)return;let r=t.find(c=>c.id===s.dataset.ga);if(!r)return;let o=s.dataset.gaRowTier?s.dataset.gaRowTier:null,a=Number(i.dataset.d),l=n.gaQty.get(r.id)?.get(o)??0;if(a>0&&rs(n,r)-Xe(n.gaQty,r.id)<=0){n.toast(xe("picker.maxTicketsForOrder",{count:n.maxTickets}),"warning");return}kt(n.gaQty,r.id,o,Math.max(0,l+a)),n.syncTray()})}),e.querySelector("[data-ga-areas-toggle]")?.addEventListener("click",()=>{n.gaAreasExpanded=!n.gaAreasExpanded,n.syncTray()}),e.querySelectorAll("[data-ga-open]").forEach(i=>{i.addEventListener("click",()=>{let s=t.find(r=>r.id===i.dataset.gaOpen);s&&Vi(n,s,null,i)})})}var Yt='<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 pa=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,ha=/[\s"'<>`\\]/;function ua(n){return n.startsWith("//")?!1:n.startsWith("/")||n.startsWith("./")||n.startsWith("../")}function ma(){try{let n=typeof location>"u"?"":location.origin;return n&&n!=="null"?n:null}catch{return null}}function Ze(n){if(typeof n!="string"||!n||n.length>2e6||n!==n.trim())return!1;if(n.startsWith("data:"))return pa.test(n);if(ha.test(n))return!1;let e=ma();if(ua(n)){if(!e)return!1;try{let t=new URL(n,e);return t.origin===e&&!t.username&&!t.password}catch{return!1}}try{let t=new URL(n);return t.username||t.password?!1:t.protocol==="https:"||e!=null&&t.origin===e}catch{return!1}}var fa=/^[a-zA-Z0-9._-]+$/;function zi(n){let e;try{e=new URL(n,"https://seatlayer.invalid")}catch{return null}if(e.search||e.hash)return null;let t=/^\/pub\/events\/([^/]+)\/assets\/([^/]+)$/.exec(e.pathname);if(!t)return null;try{let i=decodeURIComponent(t[1]),s=decodeURIComponent(t[2]);return!i||!fa.test(s)?null:{eventKey:i,asset:s}}catch{return null}}function ga(n){try{return/^\/pub\/events\/[^/]+\/assets(?:\/|$)/.test(new URL(n,"https://seatlayer.invalid").pathname)}catch{return!1}}var Je=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=zi(e);if(!t)return Promise.resolve(ga(e)||!Ze(e)?null:e);if(t.eventKey!==this.eventKey||!this.load||this.disposed)return Promise.resolve(null);let i=this.pending.get(e);if(i)return i;let s=this.load(this.eventKey,t.asset).then(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 nt}from"@seatlayer/core";import{isAuthoredSeatView as Ta,seatViewDisclosure as Ca}from"@seatlayer/core/view3d/crossfade/panorama";var ds=`
147
147
  /* confirm card: a candidate is not in the tray until Select. Map gestures and
148
148
  floating chrome pause while the card owns focus, keeping the camera stable. */
149
149
  .sl-picker[data-confirming="true"] .sl-map-host>:not(.sl-confirm){pointer-events:none}
@@ -171,7 +171,13 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
171
171
  vocabulary only in being 240ms instead of 260, and one of them was silently
172
172
  beating the exit the widget had asked for. */
173
173
  .sl-confirm[data-placement="below"]{transform:translate(-50%,16px)}
174
- .sl-confirm-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(52px,auto) minmax(52px,auto);border-bottom:1px solid var(--sl-line)}
174
+ /* THREE EQUALS, ALL CENTRED (client review 2026-09-03, after seats.io). The
175
+ section cell used to be the odd one out \u2014 left-aligned, flexible, smaller \u2014
176
+ because a venue phrase needs the room. With a short section like "209" that
177
+ read as a misaligned grid. The cells are equal and centred now; only a
178
+ section LONGER than SECTION_SHORT_MAX (a named class, not a guess by
179
+ position) drops to the small wrapping type. */
180
+ .sl-confirm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--sl-line)}
175
181
  /* A SEAT WITH NO SECTION GETS THE WHOLE GRID. The builder already drops the
176
182
  cell, but the three-column track left Row and Seat squeezed into the right
177
183
  third with an empty 1fr of nothing in front of them \u2014 the two facts the
@@ -180,43 +186,42 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
180
186
  read as the identity rather than as an afterthought. */
181
187
  .sl-confirm-grid:not(:has(.sl-confirm-sec)){grid-template-columns:1fr 1fr}
182
188
  .sl-confirm-grid:not(:has(.sl-confirm-sec)) .sl-confirm-field{text-align:center}
183
- .sl-confirm-field{min-width:0;padding:12px 11px 10px;border-right:1px solid var(--sl-line)}
184
- .sl-confirm-field:last-child{border-right:0;text-align:center}
185
- .sl-confirm-field:nth-child(2){text-align:center}
189
+ .sl-confirm-field{min-width:0;padding:10px 8px 9px;border-right:1px solid var(--sl-line);text-align:center}
190
+ .sl-confirm-field:last-child{border-right:0}
186
191
  .sl-confirm-key{display:block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--sl-muted);font-weight:800}
187
- .sl-confirm-value{display:block;margin-top:4px;color:var(--sl-text);font-size:17px;line-height:1.1;font-weight:850;
192
+ .sl-confirm-value{display:block;margin-top:3px;color:var(--sl-text);font-size:20px;line-height:1.1;font-weight:850;
188
193
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
189
194
  /* Long venue section names must read in full: smaller type + up to two lines
190
195
  beats an ellipsis at identity-confirmation time. Row/seat stay big \u2014 they're
191
196
  short and they're what the buyer double-checks against the map. */
192
- .sl-confirm-sec .sl-confirm-value{font-size:13.5px;line-height:1.25;white-space:normal;
197
+ .sl-confirm-sec-long .sl-confirm-value{font-size:13.5px;line-height:1.25;white-space:normal;
193
198
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
194
- /* THE BAND IS A TINT WITH A RAIL, NOT A FILL. A 76% wash of an authored
195
- category colour is a surface nobody chose: the widget then had to PICK an
196
- ink for it, and that pick is what decided whether the price was legible \u2014
197
- per chart, per theme, per category, with no way for a host to correct it.
198
- An 11% tint keeps the surface the theme's own, so the name and the price
199
- stay in the theme's own text ink and read in light and dark by construction; the colour
200
- does its whole job as a 3px rail and a 9px dot, which is how the legend and
201
- the map already speak it. No ink picking, and no manufactured ink token. */
199
+ /* THE BAND IS THE CATEGORY COLOUR, FULL BLEED (client review 2026-09-03,
200
+ after seats.io: "Bronze \u20AC67,75" on solid green). The tint-plus-rail of the
201
+ previous round was quieter than the buyer wanted; the colour the legend and
202
+ the map speak is the colour this band is. The ink is NOT always white \u2014 a
203
+ pale yellow or grey category would lose its name \u2014 so the widget picks
204
+ --sl-cat-ink with inkFor(), the same two-extreme choice an accent override
205
+ already makes, and the band never manufactures a colour of its own. */
202
206
  .sl-confirm-cat{display:flex;align-items:center;gap:8px;padding:10px 12px;
203
- background:color-mix(in srgb,var(--sl-cat) 11%,var(--sl-surface));box-shadow:inset 3px 0 0 var(--sl-cat)}
204
- /* A HAIRLINE, SO A PALE CATEGORY STILL READS. The band is an 11% tint of the
205
- very colour this dot carries, so a pale or grey category (an arena's "Upper
206
- Tier") painted a light disc onto a near-identical light ground and simply
207
- disappeared. The ring is the theme's own ink at 22% rather than a second
208
- colour: it separates the dot from whatever is behind it in both themes
209
- without competing with the category for the eye. Border-box keeps the dot
210
- 9px overall, so nothing around it moves. */
211
- .sl-confirm-cat .sl-dot{width:9px;height:9px;border:1px solid color-mix(in srgb,var(--sl-text) 22%,transparent)}
212
- .sl-confirm-cat-name{font-size:13.5px;font-weight:800;color:var(--sl-text);flex:none;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
207
+ background:var(--sl-cat);color:var(--sl-cat-ink,#fff)}
208
+ .sl-confirm-cat-name{font-size:14px;font-weight:800;color:inherit;flex:none;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
213
209
  /* "112 left" beside the name, never in place of it, and absent when the count
214
210
  has not arrived \u2014 a remaining count the buyer cannot trust is worse than no
215
- count. It is the flexible cell so the name keeps its full width first. */
216
- .sl-confirm-left{flex:1;min-width:0;color:var(--sl-muted);font-size:11px;font-weight:700;
211
+ count. It is the flexible cell so the name keeps its full width first, and
212
+ it is the band's own ink at 78% rather than the theme's muted token, which
213
+ says nothing about a green. */
214
+ .sl-confirm-left{flex:1;min-width:0;color:inherit;opacity:.78;font-size:11px;font-weight:700;
217
215
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
218
216
  .sl-confirm-cat:not(:has(.sl-confirm-left)) .sl-confirm-cat-name{flex:1}
219
- .sl-confirm-price{font-size:17px;font-weight:850;color:var(--sl-text);font-variant-numeric:tabular-nums}
217
+ .sl-confirm-price{font-size:17px;font-weight:850;color:inherit;font-variant-numeric:tabular-nums}
218
+ /* The 3D action's decision-row form: hidden by default, shown by the
219
+ narrow no-photo rule below. Square, ghost, the same 44px as its neighbours. */
220
+ .sl-confirm-3drow{display:none;flex:0 0 44px;width:44px;min-height:44px;padding:0!important;border-radius:9px;
221
+ border:1px solid var(--sl-line);background:color-mix(in srgb,var(--sl-accent) 12%,transparent);color:var(--sl-text);
222
+ flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:9.5px;font-weight:850;letter-spacing:.04em}
223
+ .sl-confirm-3drow svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
224
+ .sl-confirm-3drow:hover,.sl-confirm-3drow:focus-visible{border-color:var(--sl-accent);background:color-mix(in srgb,var(--sl-accent) 20%,transparent)}
220
225
  /* The PHONE's identity line and the strip wrapper are in every card's DOM and
221
226
  invisible at desktop width. Desktop keeps the eyebrow grid and the colour
222
227
  band it has the room for (owner call 2026-08-27); display:contents leaves
@@ -305,6 +310,33 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
305
310
  }
306
311
  .sl-confirm-cancel{background:color-mix(in srgb,var(--sl-line) 44%,transparent)!important;border:1px solid var(--sl-line)!important;color:var(--sl-muted)!important}
307
312
  .sl-confirm-cancel:hover{color:var(--sl-text)}
313
+ /* THE ROW GIVES WAY IN ORDER (fitTextRow, rungs 1-3). "Platz hinzuf\xFCgen" beside
314
+ "Abbrechen" at 1280 pushed the way OUT of the card past its 34% and clipped
315
+ it \u2014 the one control a buyer needs when they picked the wrong seat. Neither
316
+ button may wrap (see the note above the row), so the row buys width in the
317
+ cheapest order there is:
318
+
319
+ 1 tracking goes. Nobody reads letter-spacing; it is pure air.
320
+ 2 both buttons drop to the 12.5px floor TOGETHER. One shrunken button
321
+ beside a full-size one reads as a rendering fault, not as a choice.
322
+ 3 Cancel becomes a 44x44 \u2715 and Add keeps every word it has. This is the
323
+ asymmetry the row already believes in: the commit button carries the
324
+ decision and must stay legible; the way out is recognisable as a glyph
325
+ in a way that "Add seat" is not. The word it drops moves into
326
+ aria-label and title (keepLabelAsHint), so nothing is lost to a screen
327
+ reader or a hover \u2014 a nameless \u2715 would be a worse bargain than the
328
+ clipping this ladder exists to undo.
329
+
330
+ English rarely gets past rung 0; German reaches 2 on a narrow card and 3 on
331
+ a long ticket type. Nothing here names a language. */
332
+ .sl-confirm-row.sl-fit-track button,
333
+ .sl-confirm-row.sl-fit-type button,
334
+ .sl-confirm-row.sl-fit-icon button{letter-spacing:normal}
335
+ .sl-confirm-row.sl-fit-type button,
336
+ .sl-confirm-row.sl-fit-icon button{font-size:12.5px}
337
+ .sl-confirm-row.sl-fit-icon .sl-confirm-cancel{flex:0 0 44px;width:44px;padding:9px 0;font-size:0;
338
+ display:flex;align-items:center;justify-content:center;overflow:hidden}
339
+ .sl-confirm-row.sl-fit-icon .sl-confirm-cancel::before{content:'\u2715';font-size:15px;line-height:1;font-weight:700}
308
340
  .sl-picker[data-layout="narrow"] .sl-confirm{left:50%!important;top:auto!important;bottom:14px;width:min(310px,calc(100% - 24px));
309
341
  transform:translateX(-50%);animation:slConfirmMobileIn .24s cubic-bezier(.2,.8,.2,1) both}
310
342
  /* THE CARD MUST NEVER COVER THE SEAT IT IS ASKING ABOUT, AND MUST NOT ABANDON
@@ -328,19 +360,18 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
328
360
  the hierarchy to roughly one extra row rather than restoring the old tall
329
361
  card. Only a genuinely short compact host falls back to the ticket-stub
330
362
  line below, where preserving the two decision buttons is the harder limit. */
331
- .sl-picker[data-layout="narrow"] .sl-confirm-grid{display:grid;
332
- grid-template-columns:minmax(0,1.12fr) minmax(0,1fr) minmax(52px,.58fr)}
363
+ .sl-picker[data-layout="narrow"] .sl-confirm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
333
364
  /* The phone's three-cell track is more specific than the section-less rule
334
365
  above, so it has to be answered at the same specificity or a phone keeps
335
366
  building a grid for a cell that is not there. */
336
367
  .sl-picker[data-layout="narrow"] .sl-confirm-grid:not(:has(.sl-confirm-sec)){grid-template-columns:1fr 1fr}
337
- .sl-picker[data-layout="narrow"] .sl-confirm-field{padding:7px 8px 6px}
338
- .sl-picker[data-layout="narrow"] .sl-confirm-key{font-size:8.5px;letter-spacing:.1em}
339
- .sl-picker[data-layout="narrow"] .sl-confirm-value{margin-top:2px;font-size:15px}
340
- .sl-picker[data-layout="narrow"] .sl-confirm-sec .sl-confirm-value{font-size:12.5px;line-height:1.2}
341
- .sl-picker[data-layout="narrow"] .sl-confirm-cat{display:flex;padding:7px 10px}
342
- .sl-picker[data-layout="narrow"] .sl-confirm-cat-name{font-size:12.5px}
343
- .sl-picker[data-layout="narrow"] .sl-confirm-price{font-size:15px}
368
+ .sl-picker[data-layout="narrow"] .sl-confirm-field{padding:8px 6px 7px}
369
+ .sl-picker[data-layout="narrow"] .sl-confirm-key{font-size:9px;letter-spacing:.1em}
370
+ .sl-picker[data-layout="narrow"] .sl-confirm-value{margin-top:2px;font-size:18px}
371
+ .sl-picker[data-layout="narrow"] .sl-confirm-sec-long .sl-confirm-value{font-size:12.5px;line-height:1.2}
372
+ .sl-picker[data-layout="narrow"] .sl-confirm-cat{display:flex;padding:8px 10px}
373
+ .sl-picker[data-layout="narrow"] .sl-confirm-cat-name{font-size:13.5px}
374
+ .sl-picker[data-layout="narrow"] .sl-confirm-price{font-size:16px}
344
375
  .sl-picker[data-layout="narrow"] .sl-confirm-id{display:none;align-items:center;gap:7px;padding:10px 10px 0;min-height:28px}
345
376
  .sl-picker[data-layout="narrow"][data-density="compact"] .sl-confirm-grid,
346
377
  .sl-picker[data-layout="narrow"][data-density="compact"] .sl-confirm-cat{display:none}
@@ -388,14 +419,15 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
388
419
  border:1px solid transparent;border-radius:999px;font-size:11px;font-weight:800;
389
420
  color:var(--sl-pill-ink);background:var(--sl-pill-plate);backdrop-filter:blur(3px);white-space:nowrap}
390
421
  .sl-picker[data-layout="narrow"] .sl-confirm-viewbtn{position:relative;left:auto;bottom:auto}
391
- .sl-picker[data-layout="narrow"] .sl-confirm-strip:not(:has(.sl-confirm-thumbwrap)){
392
- display:flex;align-items:center;gap:6px;height:44px;padding:0 6px;
393
- background:color-mix(in srgb,var(--sl-line) 26%,transparent)}
394
- .sl-picker[data-layout="narrow"] .sl-confirm-strip:not(:has(.sl-confirm-thumbwrap)) .sl-confirm-pills{
395
- position:relative;right:auto;bottom:auto}
396
- .sl-picker[data-layout="narrow"] .sl-confirm-strip:not(:has(.sl-confirm-thumbwrap)) .sl-confirm-viewbtn,
397
- .sl-picker[data-layout="narrow"] .sl-confirm-strip:not(:has(.sl-confirm-thumbwrap)) .sl-confirm-pill{
398
- color:var(--sl-text)!important;background:var(--sl-surface)!important;border-color:var(--sl-line)!important;backdrop-filter:none}
422
+ /* NO PHOTO, NO RAIL (client review 2026-09-03). Without a picture the strip
423
+ was a 44px muted bar holding one pill \u2014 dead height on a card that already
424
+ covers a third of the phone. The strip leaves entirely; the 3D action moves
425
+ into the decision row as a 44px square before Cancel (see .sl-confirm-3drow),
426
+ so it is still one tap away and costs no row. With a photo, the strip and
427
+ its pills stay exactly as they are \u2014 the picture earns the space. The
428
+ photo can also LEAVE after mount (dropThumb), and :has() follows it. */
429
+ .sl-picker[data-layout="narrow"] .sl-confirm-strip:not(:has(.sl-confirm-thumbwrap)){display:none}
430
+ .sl-picker[data-layout="narrow"] .sl-confirm-body:not(:has(.sl-confirm-thumbwrap)) .sl-confirm-3drow{display:flex}
399
431
  /* One pill shape for the 3D action, carrying its own dark plate so it stays
400
432
  legible over any photograph. */
401
433
  .sl-picker[data-layout="narrow"] .sl-confirm-pills{display:flex}
@@ -456,7 +488,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
456
488
  color:var(--sl-text);font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;gap:7px}
457
489
  .sl-confirm-view:hover{border-color:var(--sl-muted)}
458
490
  .sl-confirm-view svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
459
- `;var en=`
491
+ `;var ps=`
460
492
  /* Test mode is environment context, not an action. The chip flows in the
461
493
  top-left anchor region: the old rotated corner ribbon sat at a negative
462
494
  offset and was clipped by the widget root's rounded overflow:hidden (its
@@ -688,7 +720,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
688
720
  .sl-pg-switch:hover{border-style:solid;color:var(--sl-text);border-color:var(--sl-accent)}
689
721
  @media(prefers-reduced-motion:reduce){.sl-tip{animation:none!important}.sl-tip,.sl-tip-switch,.sl-pg-switch{transition:none!important}}
690
722
  @media(max-width:639px){.sl-confirm-group-dates{width:min(340px,calc(100% - 20px))}.sl-confirm-date{min-height:32px}}
691
- `;var tn=`
723
+ `;var hs=`
692
724
  /* 3D venue overlay \u2014 mounts over the (paused) Konva stage inside the map host.
693
725
  Carries its own gradient so it paints instantly before the scene builds, and
694
726
  cross-fades on enter/exit via a compositor-only opacity transition. Sits below
@@ -857,7 +889,16 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
857
889
  .sl-picker[data-view3d="on"] .sl-confirm{left:50%!important;top:auto!important;bottom:16px;
858
890
  transform:translateX(-50%);width:min(342px,calc(100% - 24px))}
859
891
  .sl-picker[data-view3d="on"] .sl-confirm[data-placement]{transform:translateX(-50%)}
892
+ /* ONE INSPECTION ROW. The 3D card stacked the passport (44px), then compare +
893
+ view-from-seat (44px), then the strip's own view pill (44px) above Cancel \u2014
894
+ 293px against the 2D card's 211 on the same phone, covering the section the
895
+ buyer had just flown into. The passport now sits in the SAME row: desktop
896
+ keeps it full-width above the pair (grid-column below), the phone puts all
897
+ three side by side at 40px as compact chips. The strip's pill is dropped in
898
+ 3D by the no-photo rule in the confirm sheet; the row's button is the one
899
+ "View from this seat". */
860
900
  .sl-confirm-inspect-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}
901
+ .sl-confirm-inspect-row .sl-confirm-confidence{grid-column:1/-1;margin-top:0}
861
902
  .sl-confirm-inspect-row .sl-confirm-3d{margin-top:0;min-height:44px}
862
903
  .sl-confirm-compare{min-height:44px;padding:8px;border-radius:8px;border:1px solid var(--sl-line);
863
904
  display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:800;
@@ -879,13 +920,30 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
879
920
  the venue remains the main content and the two inspection actions share one
880
921
  row. Truth-bearing accessibility/restriction copy is never hidden. */
881
922
  .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm{bottom:10px}
882
- .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-field{padding:8px 9px 7px}
883
- .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-value{font-size:14px;margin-top:2px}
884
- .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-field:first-child .sl-confirm-value{font-size:12px}
923
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-field{padding:7px 6px 6px}
924
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-value{font-size:17px;margin-top:2px}
885
925
  .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-cat{padding:7px 10px}
886
- .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-price{font-size:15px}
926
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-price{font-size:16px}
887
927
  .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-body{padding:8px 10px 9px}
888
- .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-row{margin-top:7px}
928
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-row{margin-top:8px}
929
+ /* The phone's three chips: passport | compare | view. Each keeps its full
930
+ sentence as its accessible name; the visible word is the one that fits. */
931
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row{grid-template-columns:auto minmax(0,1fr) minmax(0,1fr);gap:6px;margin-top:0}
932
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-confidence{grid-column:auto;width:auto;min-height:40px;padding:0 10px;gap:6px;border-radius:9px}
933
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-confidence>span{display:none}
934
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-confidence>b{font-size:11.5px}
935
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-confidence::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--sl-accent);flex:none}
936
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-compare,
937
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-3d{min-width:0;min-height:40px;padding:0 6px;font-size:11px;gap:4px}
938
+ /* The compare glyph goes on the phone: its four words are the label, and the
939
+ arrow was the 12px that pushed them into an ellipsis. */
940
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-compare span[aria-hidden]{display:none}
941
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-3d svg{display:none}
942
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-compare span:last-child,
943
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-3d span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
944
+ /* The phone hides the full-width 3D button everywhere (confirm sheet); inside
945
+ 3D it is the row's third chip and must come back. */
946
+ .sl-picker[data-view3d="on"][data-layout="narrow"] .sl-confirm-inspect-row .sl-confirm-3d{display:flex}
889
947
  /* A short embedded/mobile picker cannot afford a full decision sheet over a
890
948
  285px map. Keep three 44px action rows and move all disclosure into the
891
949
  passport instead of hiding it without a route back. */
@@ -1007,7 +1065,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
1007
1065
  .sl-view3d-passport-shell{padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom))}
1008
1066
  .sl-view3d-passport{width:100%;max-height:100%;padding:14px 14px max(24px,calc(14px + env(safe-area-inset-bottom)));border-radius:15px}
1009
1067
  }
1010
- `;var sn=`
1068
+ `;var us=`
1011
1069
  /* THE PHONE TICKET LIST (owner 2026-08-27: "on mobile the cards take lots of
1012
1070
  space, lots of white space on each card"). The desktop card spends ~72px per
1013
1071
  ticket on SECTION/ROW/SEAT eyebrows, a category line and a 34px icon rail \u2014
@@ -1209,6 +1267,20 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
1209
1267
  /* "4 free" / "None left" \u2014 tabular so a column of counts does not jitter as
1210
1268
  other buyers take seats out from under the returning one. */
1211
1269
  .sl-a11yrow-c{flex:none;font-size:10.5px;font-weight:800;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1270
+ /* The count as a DESTINATION. Once the engine can step the map through the
1271
+ sections that hold the spaces, "12 free" stops being a fact and becomes the
1272
+ way to reach one \u2014 so it is a real button beside the switch, not a span
1273
+ inside it: keyboard-reachable, and announcing where it is about to go. It
1274
+ sits outside the row because a <button> inside a <button> is markup the
1275
+ parser discards. */
1276
+ .sl-a11yrow-w{display:flex;align-items:center;gap:2px}
1277
+ .sl-a11yrow-w .sl-a11yrow{flex:1;min-width:0}
1278
+ button.sl-a11yrow-c{flex:none;min-height:32px;padding:0 9px;border:1px solid var(--sl-line);
1279
+ border-radius:999px;background:transparent;cursor:pointer;font:inherit;
1280
+ font-size:10.5px;font-weight:800;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1281
+ button.sl-a11yrow-c:hover{border-color:var(--sl-muted);color:var(--sl-text)}
1282
+ button.sl-a11yrow-c:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
1283
+ button.sl-a11yrow-c[disabled]{opacity:.58;cursor:default}
1212
1284
  /* Sold out, not absent. Dimmed and unswitchable, but still read aloud. */
1213
1285
  .sl-a11yrow[disabled]{opacity:.58;cursor:default}
1214
1286
  .sl-a11yrow[disabled]:hover{background:transparent}
@@ -1223,7 +1295,28 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
1223
1295
  .sl-chip-cx-tag.limited{color:var(--sl-text);background:color-mix(in srgb,#f4b740 11%,var(--sl-surface));
1224
1296
  border:1px solid color-mix(in srgb,#f4b740 32%,var(--sl-line))}
1225
1297
  .sl-chip-cx-note{font-size:10.5px;line-height:1.35;color:var(--sl-muted)}
1226
- `;var nn="seatlayer-picker-style",ea=`
1298
+
1299
+ /* PILLS SHRINK, THEN THEY WRAP (fitTextRow, rungs 1-3). "Stattdessen Pl\xE4tze
1300
+ nebeneinander finden" is four words longer than "Find seats together
1301
+ instead", and there is no width to find for it on a tray. Two type rungs
1302
+ come first because a pill that is still one line still reads as one
1303
+ control; only when 11.5px is not enough does it become two centred lines,
1304
+ which needs the vertical padding back or the second line sits on the pill's
1305
+ own edge.
1306
+
1307
+ One ladder serves the find-together pill, the peek bar's Continue and Find
1308
+ seats, and the best-seats CTA \u2014 they are the same shape with different words
1309
+ in it, and a per-control rule would drift the moment one of them changed.
1310
+
1311
+ LAST IN TRAY_CSS ON PURPOSE. The narrow overrides above pin font-size and
1312
+ white-space on .sl-ba-go at the same specificity this needs, so the ladder
1313
+ has to be the later rule or a phone would silently never reach rung 3 \u2014 the
1314
+ one width where it matters most. */
1315
+ .sl-picker .sl-fitpill.sl-fit-p1{font-size:12.5px}
1316
+ .sl-picker .sl-fitpill.sl-fit-p2,.sl-picker .sl-fitpill.sl-fit-p3{font-size:11.5px}
1317
+ .sl-picker .sl-fitpill.sl-fit-p3{white-space:normal;text-align:center;
1318
+ padding-top:6px;padding-bottom:6px;line-height:1.2}
1319
+ `;var ms="seatlayer-picker-style",ba=`
1227
1320
  .sl-picker{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:420px;overflow:hidden;
1228
1321
  background:var(--sl-bg);color:var(--sl-text);font-family:var(--sl-font);border-radius:var(--sl-radius);
1229
1322
  --sl-r-sm:calc(var(--sl-radius) * .55);
@@ -1532,8 +1625,18 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
1532
1625
  weight as the Continue pill's type without claiming a decision that has not
1533
1626
  been made yet; the target underneath it is still 44, reached the same way
1534
1627
  the price chips reach theirs. */
1628
+ /* ROUNDED RECTANGLE, LARGER TYPE (client review 2026-09-03, after seats.io's
1629
+ BOOK NOW). The 36px pill read as an aside; the empty bar's one door is the
1630
+ primary action and should look like one. 44px tall, 11px radius, 14px 800.
1631
+ Still "Find seats", not "Book now": nothing is selected yet and the tap
1632
+ opens the best-available form, so the button says what the tap does. */
1535
1633
  .sl-picker[data-layout="narrow"] .sl-sheet-peek .go.sl-sheet-find{position:relative;align-self:center;
1536
- min-height:36px;height:36px;padding:0 12px;gap:5px;border-radius:999px;font-size:12.5px;font-weight:750}
1634
+ min-height:44px;height:44px;padding:0 18px;gap:6px;border-radius:11px;font-size:14px;font-weight:800}
1635
+ /* The amount in "From $42" is the fact; the word is the caption. */
1636
+ .sl-picker[data-layout="narrow"] .sl-sheet-peek .sl-peek-sum{font-size:12px;font-weight:700;color:var(--sl-muted)}
1637
+ .sl-picker[data-layout="narrow"] .sl-sheet-peek .sl-peek-price{font-size:19px;font-weight:850;color:var(--sl-text);
1638
+ font-variant-numeric:tabular-nums;margin:0 2px}
1639
+ .sl-picker[data-layout="narrow"][data-sheet="peek"] .sl-sheet-peek .sl-sheet-go[data-act="checkout"]{min-height:44px;border-radius:11px;padding:0 16px;font-size:14px}
1537
1640
  .sl-sheet-find::before{content:'';position:absolute;top:50%;left:0;right:0;height:44px;transform:translateY(-50%)}
1538
1641
  /* The line the pill sits on clips its own overflow (that is what ellipsises a
1539
1642
  long summary), so it has to be at least as tall as the target it contains \u2014
@@ -1622,7 +1725,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
1622
1725
  .sl-picker[data-layout="narrow"] .sl-a11ybtn{width:44px;height:44px}
1623
1726
  .sl-picker[data-layout="narrow"] .sl-a11ybtn svg{width:21px;height:21px}
1624
1727
  .sl-a11ymenu{position:absolute;bottom:calc(100% + 8px);left:0;z-index:8;
1625
- min-width:236px;max-width:min(300px,calc(100vw - 32px));padding:4px;
1728
+ min-width:264px;max-width:min(320px,calc(100vw - 32px));padding:4px;
1626
1729
  border:1px solid var(--sl-line);border-radius:12px;background:var(--sl-surface);
1627
1730
  color:var(--sl-text);box-shadow:0 24px 48px -24px rgba(0,0,0,.65)}
1628
1731
  .sl-a11ymenu[hidden]{display:none}
@@ -1772,9 +1875,19 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
1772
1875
  the numbers are the half the buyer checks against the map. */
1773
1876
  .sl-chip-pos{display:flex;align-items:baseline;gap:4px;min-width:0;font-size:11.5px;line-height:1.3;
1774
1877
  white-space:nowrap;overflow:hidden;color:var(--sl-muted);font-variant-numeric:tabular-nums}
1878
+ .sl-chip-pos .sl-chip-seg{flex:none;white-space:nowrap}
1775
1879
  .sl-chip-pos .w{flex:none}
1776
1880
  .sl-chip-pos b{flex:none;font-weight:600;color:var(--sl-text)}
1777
1881
  .sl-chip-pos i{flex:none;font-style:normal;opacity:.6}
1882
+ /* THE LINE SHORTENS BY THE FACT, NOT BY THE LETTER (fitTextRow, rungs 1-2).
1883
+ A German cart line ran "Reihe C \xB7 Platz 5 \xB7 Standard" past the panel and
1884
+ clipped mid-word \u2014 "Sta\u2026" is not a shorter truth, it is a ticket type that
1885
+ does not exist. Rung 1 drops the ticket type, which on a sectioned chart
1886
+ usually repeats the name printed above it anyway; rung 2 keeps dropping
1887
+ whole trailing facts, and only THEN does the line admit it was cut. The
1888
+ ellipsis is the ladder's own mark, so it appears exactly when something was
1889
+ actually taken. */
1890
+ .sl-chip-pos.sl-fit-short::after{content:'\u2026';flex:none;opacity:.6}
1778
1891
  /* Which night this ticket is for. Sits ABOVE the SECTION eyebrow and reads as
1779
1892
  the card's dateline, not as a fourth identity field. */
1780
1893
  .sl-chip-when{font-size:10.5px;font-weight:750;color:var(--sl-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@@ -2631,7 +2744,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
2631
2744
  corners, and it is the frame. */
2632
2745
  .sl-modal-frame > .sl-picker{border-radius:0}
2633
2746
  @media(max-width:640px){.sl-modal-scrim{padding:0}.sl-modal-frame{width:100%;height:100%;border-radius:0}}
2634
- `;function et(){if(document.getElementById(nn))return;let s=document.createElement("style");s.id=nn,s.textContent=ea+Js+sn+tn+en+Ds,document.head.appendChild(s)}import{t as ta}from"@seatlayer/core";import{cdnAssetUrl as ia}from"@seatlayer/core/core/cdnAsset";import{SEATLAYER_MODULE_URL as wd}from"@seatlayer/core/core/cdnAsset";function y(s,e){let t=ta(s);return t===s?e:t}function it(){return globalThis.matchMedia?.("(pointer: coarse)").matches??!1?y("picker.dragToLookTouch","Drag to look \xB7 pinch to zoom \xB7 tap \u2715 to close"):y("picker.dragToLookMouse","Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close")}function rn(s,e){let t=e?s.toLocaleUpperCase(e):s.toLocaleUpperCase(),i=e?s.toLocaleLowerCase(e):s.toLocaleLowerCase();if(s!==t||t===i)return s;let n=[...i][0]??"";return(e?n.toLocaleUpperCase(e):n.toLocaleUpperCase())+i.slice(n.length)}function on(s){if(typeof s=="string"){let e=document.querySelector(s);if(!e)throw new Error(`seatmap: container "${s}" not found`);return e}if(!(s instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return s}function I(s){return String(s??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function an(s,e,t){let i=e.find(r=>Ze(r))??null;if(s.replaceChildren(),!i)return s.textContent=t.slice(0,1).toUpperCase(),null;let n=document.createElement("img");return n.alt="",n.referrerPolicy="no-referrer",n.src=i,s.appendChild(n),i}var tt=null;function Wt(){if(tt!==null)return tt;try{if(typeof document>"u")return tt=!1;tt=!!document.createElement("canvas").getContext("webgl2")}catch{tt=!1}return tt}function _i(s){return ia(s)}var kt=null;function St(){return kt||(kt=(typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(_i("seatlayer-view3d.mjs")):import("@seatlayer/core/view3d")).catch(e=>{throw kt=null,e}),kt)}function Di(){(typeof navigator>"u"?void 0:navigator.connection)?.saveData||St().catch(()=>{})}async function Yt(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(_i("seatlayer-panorama.mjs")):import("@seatlayer/core")}async function ln(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(_i("seatlayer-checkout.mjs")):import("./hostedCheckout-W7QZWSOQ.js")}function cn(s){return s==="unavailable_for_event"||s==="payments_off_for_event"?s:"not_configured"}function Qt(s,e,t){let i={month:"short",day:"numeric",hour:"numeric",minute:"2-digit"},n=new Date(s);if(e)try{return n.toLocaleString(t,{...i,timeZone:e})}catch{}return n.toLocaleString(t,i)}async function Xt(s,e){let t=s.overlay.productionElements;if(!t?.some(n=>n.contentImageUrl))return s;let i=await Promise.all(t.map(async n=>{if(!n.contentImageUrl)return n;try{let r=await e(n.contentImageUrl);if(!r){let{contentImageUrl:o,...a}=n;return a}return{...n,runtimeContentImageUrl:r}}catch{let{contentImageUrl:r,...o}=n;return o}}));return{...s,overlay:{...s.overlay,productionElements:i}}}async function Zt(s,e){if(s)try{let t=await e(s);return t?await(await fetch(t)).arrayBuffer():void 0}catch{return}}import{browserPanoramaConstraints as sa,loadPanoramaImage as na,planPanoramaDelivery as ra,schedulePanoramaUpgrade as oa}from"@seatlayer/core/view/panoramaDelivery";function Jt(s){let{root:e,source:t,caption:i,real:n,closeLabel:r,dragHint:o,viewFromSeatLabel:a,real360Label:l,previewLabel:c,resolveAsset:p,onClose:d}=s,u=s.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=N=>h.querySelector(N)?.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=i,h.querySelector(".sl-view-x").setAttribute("aria-label",r),u.badge===!1?g(".sl-view-badge"):h.querySelector(".sl-view-badge").textContent=n?l:c,h.querySelector(".sl-view-hint").textContent=o,e.appendChild(h);let m=h.querySelector(".sl-view-pano"),v=ra(t,sa()),k=new AbortController;m.style.backgroundImage=`url(${JSON.stringify(v.initialUrl)})`;let S=()=>{};v.upgradeUrl&&(S=oa(()=>{p(v.upgradeUrl).then(N=>!N||k.signal.aborted?null:na(N,k.signal).then(()=>N)).then(N=>{!N||!h.isConnected||k.signal.aborted||(m.style.backgroundImage=`url(${JSON.stringify(N)})`)}).catch(()=>{})}));let L=70,b=35,A=1,x=m.clientHeight||1,H=m.clientWidth||1,_=-(x*(180/L)*2/2-H/2),T=0,O=()=>{let N=m.clientHeight||1,Ti=N*(180/L)*A,Ts=Math.max(0,Ti-N),Cs=Math.min(Ts/2,b/180*Ti);T=Math.min(Cs,Math.max(-Cs,T)),m.style.backgroundSize=`auto ${Ti}px`,m.style.backgroundPosition=`${_}px ${T-Ts/2}px`};O();let B=!1,V=0,ie=0,ne=N=>{B=!0,V=N.clientX,ie=N.clientY,m.classList.add("drag"),m.setPointerCapture?.(N.pointerId)},Y=N=>{B&&(_+=N.clientX-V,T+=N.clientY-ie,V=N.clientX,ie=N.clientY,O())},Dt=N=>{B=!1,m.classList.remove("drag"),m.releasePointerCapture?.(N.pointerId)},ks=N=>{N.preventDefault(),A=Math.min(2.4,Math.max(1,A+(N.deltaY<0?.12:-.12))),O()};m.addEventListener("pointerdown",ne),m.addEventListener("pointermove",Y),m.addEventListener("pointerup",Dt),m.addEventListener("pointercancel",Dt),m.addEventListener("wheel",ks,{passive:!1});let Si=h.querySelector(".sl-view-x");Si.addEventListener("click",d);let Ss=N=>{N.key==="Escape"&&(N.stopPropagation(),d())};return h.addEventListener("keydown",Ss),Si.focus(),{element:h,dispose(){S(),k.abort(),m.removeEventListener("pointerdown",ne),m.removeEventListener("pointermove",Y),m.removeEventListener("pointerup",Dt),m.removeEventListener("pointercancel",Dt),m.removeEventListener("wheel",ks),h.removeEventListener("keydown",Ss),Si.removeEventListener("click",d)}}}function ca(s,e){if(!e)return{targetSeatId:null,previousSeatId:null,nextSeatId:null};let t=s.find(r=>r.id===e);if(!t?.rowId)return{targetSeatId:e,previousSeatId:null,nextSeatId:null};let i=s.filter(r=>r.rowId===t.rowId),n=i.findIndex(r=>r.id===e);return{targetSeatId:e,previousSeatId:n>0?i[n-1].id:null,nextSeatId:n>=0&&n+1<i.length?i[n+1].id:null}}var dn=6e4,ei=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 ca(this.options.seats(),this.targetSeatId_)}get navigationMode(){return this.navigationMode_}canOffer3D(){return this.options.enable3D?this.handle&&this.overlay?!0:!this.options.doc()||!Wt()?!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),i=this.options.host(),n=this.options.doc();if(!t||!i||!n)throw new Error("seat_view_unavailable");let r=++this.seatViewGeneration,o,a,l=!1;if(t.viewUrl){let g=t.viewMeta?.previewUrl,m=!!g&&g!==t.viewUrl,v=m?await this.options.resolveAsset(g):null,k=m?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(r!==this.seatViewGeneration||!k||m&&!v)return;o={url:k,...v?{previewUrl:v}:{},...m?{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=la(o),l=aa(o)}else{if(!this.hasStage())throw new Error("seat_view_unavailable");let{generateSeatPanorama:g}=await Yt();if(r!==this.seatViewGeneration)return;let m=n.floors?.find(S=>S.objects.some(L=>L.type==="row"&&L.id===t.rowId)),v=t.focalPoint??m?.focalPoint??n.focalPoint,k=g(t,v,[...this.options.seats()]);o={url:k.url,generated:!0},a=st("picker.illustrationCaption",{m:k.distanceM})}if(r!==this.seatViewGeneration)return;this.closeSeatView(!1),this.prepareHostTheme(i,n),et();let c=this.options.chrome??{},p=it(),d=st("picker.viewFromSeat",{label:t.displayLabel||t.label}),u=l?st("picker.real360"):st("picker.preview"),h=Jt({root:i,source:o,caption:a,real:l,closeLabel:y("picker.close","Close"),dragHint:p,viewFromSeatLabel:d,real360Label:st("picker.real360"),previewLabel:st("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:d,caption:a,badge:u,real:l,generated:!!o.generated,dragHint:p})}pushLiveState(){this.handle&&(this.handle.setAvailability(this.options.seats().map(e=>({seatId:e.id,state:this.seatState(e)}))),this.handle.setSelection(this.options.selection().map(e=>e.id)))}focusOverview(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.focusOverview(),!0)}focusSection(e){return this.buyerView_==="venue3d"?this.handle?.focusSection(e)??!1:!1}focusFloor(e){let t=this.options.doc();if(this.buyerView_!=="venue3d"||!this.handle||!t?.floors?.length)return!1;let i=t.floors.findIndex(n=>n.id===e);return i>=0&&this.handle.focusFloor(i)}zoomIn(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.zoomIn(),!0)}zoomOut(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.zoomOut(),!0)}setNavigationMode(e){return this.navigationMode_=e,this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.setNavigationMode(e),this.options.onViewChange(this.buyerView_,this.targetSeatId_),!0)}destroy(){this.generation+=1,this.closeSeatView(!0,!1);try{this.handle?.dispose()}catch{}this.handle=null,this.overlay?.remove(),this.overlay=null,this.buyerView_="map",this.targetSeatId_=null,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)?dn/2:dn}async enter3D(e){let t=this.options.host(),i=this.options.doc();if(!t||!i||this.overlay)throw new Error("venue_3d_unavailable");et(),this.prepareHostTheme(t,i);let n=document.createElement("div");n.className="sl-view3d",n.setAttribute("role","group"),n.setAttribute("aria-label",y("picker.interactive3dVenueView","Interactive 3D venue view")),Object.assign(n.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=y("picker.loading3d","Building the 3D venue\u2026"),n.appendChild(r),t.appendChild(n),this.overlay=n;let o=++this.generation;if(this.reducedMotion()?n.style.opacity="1":requestAnimationFrame(()=>{n.style.opacity="1"}),await this.nextPaint(),!(o!==this.generation||this.overlay!==n))try{let[a,l]=await Promise.all([St(),this.options.loadEventConfiguration()]),c=l?await Xt(l,this.options.resolveAsset):null,p=await Zt(i.theme?.venue3d?.shellAssetUrl,this.options.resolveAsset);if(o!==this.generation||this.overlay!==n)return;let d={doc:i,seats:[...this.options.seats()],...c?{eventConfigurationId:c.id,eventConfiguration:c}:{},...p?{registeredShellGlb:p}:{}};r.textContent=y("picker.building3d","Building venue geometry\u2026");let u=await a.prepareVenue3D(d);if(o!==this.generation||this.overlay!==n)return;let h=this.options.chrome??{},g=a.mountVenue3D(n,{...d,prepared:u},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:it(),...h.view3dCaption===!1||h.view3dSeatStepper===!1||h.view3dControlDock===!1?{chrome:{caption:h.view3dCaption!==!1,seatStepper:h.view3dSeatStepper!==!1,controlDock:h.view3dControlDock!==!1}}:{},seatViewActionLabel:m=>this.findSeat(m)?.viewUrl?y("picker.openAuthored360","Open venue 360\xB0"):y("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:m=>this.toggleSeat(m),onSeatInspect:m=>this.toggleSeat(m),onViewTargetChange:m=>{this.targetSeatId_=m,m&&(this.focusedSectionId_=this.findSeat(m)?.sectionId??null),this.options.onViewChange("venue3d",m)},onSectionFocusChange:m=>{this.focusedSectionId_=m,this.options.onViewChange("venue3d",this.targetSeatId_)},...this.options.enableSeatView?{getSeatView:m=>this.seatViewFor3D(m)}:{}});if(o!==this.generation||this.overlay!==n){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 i=this.handle,n=this.overlay;if(this.options.restoreMap(),t&&i&&n){n.style.pointerEvents="none";let r=()=>{this.buyerView_!=="map"||this.overlay!==n||(n.style.visibility="hidden",this.options.restoreMap())};!e||this.reducedMotion()?(n.style.opacity="0",r()):(requestAnimationFrame(()=>{n.style.opacity="0"}),setTimeout(r,280));return}if(this.handle=null,this.overlay=null,!n){try{i?.dispose()}catch{}this.options.restoreMap();return}if(!e||this.reducedMotion()){try{i?.dispose()}catch{}n.remove(),this.options.restoreMap();return}n.style.pointerEvents="none",requestAnimationFrame(()=>{n.style.opacity="0"}),setTimeout(()=>{try{i?.dispose()}catch{}n.remove(),this.options.restoreMap()},280)}async restore3D(e){let t=this.overlay,i=this.handle;if(!t||!i)throw new Error("venue_3d_unavailable");this.buyerView_="venue3d",this.targetSeatId_=e.flyToSeatId??null,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"}),i.resize(),i.setNavigationMode(this.navigationMode_),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e.flyToSeatId?await i.flyToSeat(e.flyToSeatId):e.resetView&&i.focusOverview()}nextPaint(){return this.reducedMotion()||typeof requestAnimationFrame!="function"?Promise.resolve():new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}toggleSeat(e){if(!this.findSeat(e))return;this.options.selection().some(n=>n.id===e)?this.options.deselect(e):this.options.status(e)==="free"&&this.options.select(e),this.pushLiveState()}seatState(e){switch(this.options.status(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:return"available"}}async seatViewFor3D(e){let t=this.findSeat(e);if(!t)throw new Error("seat_view_unavailable");if(t.viewUrl){let i=t.viewMeta?.previewUrl,n=!!i&&i!==t.viewUrl,r=n?await this.options.resolveAsset(i):null,o=n?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(!o||n&&!r)throw new Error("seat_view_unavailable");return{url:o,...r?{previewUrl:r}:{},...n?{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:y("picker.chartDerivedModel","Chart-derived model")}}closeSeatView(e=!0,t=!1){e&&(this.seatViewGeneration+=1);let i=this.seatViewElement;if(this.seatViewDispose?.(),this.seatViewDispose=null,this.seatViewElement=null,!!i){if(this.options.onSeatViewChange?.(null),!t||this.reducedMotion()){i.remove();return}i.classList.add("is-leaving"),setTimeout(()=>i.remove(),190)}}findSeat(e){return this.options.seats().find(t=>t.id===e||t.label===e)}hasStage(){let e=this.options.doc();return e?(e.floors?.flatMap(i=>i.objects)??e.objects).some(i=>i.type==="shape"&&(i.role==="stage"||!!i.stageKind)):!1}prepareHostTheme(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");let i=t.theme;e.style.setProperty("--sl-bg",i?.background??"#f6f7fb"),e.style.setProperty("--sl-surface","#ffffff"),e.style.setProperty("--sl-text",i?.textColor??"#10162a"),e.style.setProperty("--sl-muted","#697386"),e.style.setProperty("--sl-line","#d9deea"),e.style.setProperty("--sl-accent",i?.accent??"#ef4056"),e.style.setProperty("--sl-accent-ink",i?.accentInk??"#ffffff")}reducedMotion(){return globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1}};var da={host:"web",platform:"web",bundle:"",protocol:0,chromeOwner:"web"},pa={...da},ti=null,pn=null;function ha(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():0}function ua(){let s=e=>Math.max(0,Math.round(e*100)/100);return{bootMs:s(ha()),documentMs:ti==null?0:s(ti),handshakeMs:ti==null||pn==null?0:s(pn-ti)}}function hn(){let{host:s,platform:e,bundle:t,protocol:i,chromeOwner:n}=pa,r=ua();return{host:s,platform:e,...t?{bundle:t}:{},...i?{protocol:i}:{},chromeOwner:n,bootMs:r.bootMs,documentMs:r.documentMs,handshakeMs:r.handshakeMs}}var un=new Set;function He(s){return un.has(s)?"repeat":"cold"}function ii(s){let e=He(s);return un.add(s),e}function K(s){return typeof s=="number"&&Number.isFinite(s)&&s>=0?Math.round(s):0}function ma(){return typeof location>"u"?!1:/^(localhost|127\.0\.0\.1|\[::1\])$/i.test(location.hostname)}function fa(s){if(!/^[A-Za-z0-9_-]{1,80}$/.test(s.event))return null;let e=s.performanceProfile??{};return{event:s.event,scope:s.scope,surface:s.surface,outcome:s.outcome,stage:s.stage?.slice(0,32)??"",ms:K(s.ms),api:K(e.loadChartAndStatuses)||K(e.loadChart),scene:K(e.buildScene),panel:K(e.buildBuyerControls),paint:K(e.firstPaint),normalize:K(e.normalizeBuyerModel),renderer:K(e.createRenderer),seats:K(s.seats),floors:K(s.floors),view:s.view??"map",load:s.load??He(s.event),transport:s.transport??"pubapi",chartBytes:K(s.chartDelivery?.bytes),chartCache:s.chartDelivery?.cache??"",server:K(s.chartDelivery?.serverMs),r2Head:K(s.chartDelivery?.r2HeadMs),cacheLookup:K(s.chartDelivery?.cacheLookupMs),r2Get:K(s.chartDelivery?.r2GetMs),transform:K(s.chartDelivery?.transformMs),...hn(),availabilityMs:K(e.loadStatuses)}}var ga=new Set;function ke(s){let e=fa(s);if(e){for(let t of ga)try{t(e)}catch{}typeof fetch>"u"||ma()||fetch(`${s.apiBase.replace(/\/+$/,"")}/pub/telemetry/chart-load`,{method:"POST",headers:{"Content-Type":"application/json","X-SeatLayer-Client":"1"},body:JSON.stringify(e),credentials:"omit",keepalive:!0}).catch(()=>{})}}var Tt=class s{constructor(e,t=null){this.seams=e;this.watch=null;this.mode=t,this.watchMode()}themeMode(){return this.mode}setThemeMode(e,t){let i=t!==void 0&&"mapTheme"in t;e===this.mode&&!i||(i&&this.seams.setHostMapTheme(t.mapTheme??void 0),this.mode=e,this.watchMode(),this.applyThemeMode())}static groundFor(e){return Ke(null,e)}applyThemeMode(){let e=this.seams.mapTheme()??s.groundFor(this.mode);this.seams.applyMapTheme(e??null)&&this.seams.changed()}watchMode(){this.watch?.(),this.watch=null,this.mode==="auto"&&(this.watch=Nt(()=>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 ba}from"@seatlayer/core";function Ct(s){return s.getFocusedSection()!==null||s.seatsRevealed()}function va(s,e){return{accessibilityFilter:s.length>0,limitedViewFilter:e.some(t=>t.commercial?.restrictedView||t.commercial?.obstructedView)}}function mn(s,e,t){let i=s.doc,n=i?.theme??{},r=s.categoryAvailability(),o=s.getGAAreas(),a=s.getFloors(),l=s.getExpandedSeats(),c=s.getAccessNeeds(),p=va(c,l),d=e.seatPosition,u=d.targetSeatId?s.seatDetails(d.targetSeatId):null,h=new Map(l.map(v=>[v.id,{x:v.x,y:v.y}])),g=i?.floors?.flatMap(v=>v.objects)??i?.objects??[],m=new Map;for(let v of g)v.type==="section"&&m.set(v.id,{id:v.id,label:v.label,...v.displayLabel?{displayLabel:v.displayLabel}:{},...v.zone?{zoneId:v.zone}:{}});return{event:{key:t.event,name:t.eventInfo?.name??i?.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:ba()||t.eventLocale,posterUrl:t.eventInfo?.posterUrl??null,mode:t.mode_??"live",salesClosed:t.eventInfo?.salesClosed??!1},branding:{...n.accent?{accent:n.accent}:{},...n.accentInk?{accentInk:n.accentInk}:{},...n.background?{background:n.background}:{},...n.textColor?{textColor:n.textColor}:{},...n.brandName?{brandName:n.brandName}:{},...n.logoUrl?{logoUrl:n.logoUrl}:{},attributionRequired:!n.hideBadge},features:{ga:o.length>0,tiers:!!i?.categories.some(v=>v.tiers?.length),floors:a.length>1,zones:!!i?.zones?.length,sections:m.size>0,bestAvailable:!0,...p,venue3d:e.canOffer3D(),seatView:e.canOfferSeatView()},catalog:{categories:(i?.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(k=>({id:k.id,name:k.name,price:k.price,...k.currency?{currency:k.currency}:{}}))})),zones:(i?.zones??[]).map(v=>({id:v.id,label:v.label,...v.color?{color:v.color}:{}})),sections:[...m.values()],gaAreas:o,bestAvailableZones:s.getBestAvailableZones()},map:{floors:a,activeFloorId:s.getActiveFloorId()||a[0]?.id||null,floorMode:s.isFloorOverview()?"all":"single",floorLabelStyle:s.getRenderer()?.getFloorLabelStyle?.()??"number",rung:s.getRung(),canZoomOut:Ct(s)||t.focusedSection_!==null,focusedSectionId:s.getFocusedSection(),focusedSection:t.focusedSection_,viewMode:s.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:s.getViewportInsets(),categoryFilter:t.categoryFilter_?[...t.categoryFilter_]:null,accessibilityFilter:t.accessibilityFilter_?[...t.accessibilityFilter_]:null,hideLimitedView:t.hideLimitedView_,accessNeeds:c},selection:{seats:s.getSelection().map(v=>{let k=h.get(v.id);if(!k)return v;let S=s.worldToScreen(k);return{...v,screenPoint:{x:S.x,y:S.y}}}),validity:s.getSelectionValidity(),maxSelection:t.maxSelection_},access:{...t.accessState_}}}var Ea="https://api.seatlayer.io",fn=10;function Aa(s){if(typeof s=="string"){let e=document.querySelector(s);if(!e)throw new Error(`seatmap: container "${s}" not found`);return e}if(!(s instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return s}var Ni=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.realtime=null;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.container)throw new Error("seatmap: `container` is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");this.opts=e,this.maxSelection_=e.maxSelection??fn,this.colorblindSafe_=e.colorblindSafe??!1;let t=!!(e.buyerAccessTokenProvider||e.buyerAccessToken||e.publicKey);this.accessState_={configured:t,status:t?"ready":"public"},this.publicKey=e.publicKey;let i={onExpired:a=>{this.accessState_={configured:!0,status:a.refreshed?"ready":"expired"},this.opts.onAccessExpired?.(a),this.notifyMapStateChange()},onUnavailable:a=>{this.accessState_={configured:!0,status:"unavailable",reason:a.reason},this.opts.onAccessUnavailable?.(a),this.notifyMapStateChange()}},n=(e.apiBase??Ea).replace(/\/+$/,"");this.apiBase=n;let r=e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?jt({base:n,event:e.event,publicKey:e.publicKey,accessHooks:i,apiOptions:{onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=r?.access??xt(e,i);let o=r?.api??new Pe(n,{access:this.access??void 0,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)});this.api=o,this.controller=new ya({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])},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??fn)-this.controller.getSelection().length)),tiers:Kt(l),confirm:c=>{let p=typeof c=="number"?c:Object.values(c).reduce((d,u)=>d+u,0);this.holdGA(l.id,p)},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??Tt.groundFor(e.theme?.mode)??null}),this.hostSurface=new Tt({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 Je(e.event,(a,l)=>o.asset(a,l)),this.immersive=new ei({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_=Ct(this.controller)}handleViewChange(){this.opts.onViewChange?.();let e=this.controller.getRung(),t=Ct(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_=Ct(this.controller),this.opts.onMapStateChange?.()}async render(){if(this.rendered)return this;let e=performance.now();this.rendered=!0;let t=Vt(this.opts.locale,this.opts.messages),i=this.localeGeneration+=1,n=Bi();this.mount=Aa(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,Ft(r,t,a=>{a!==n&&this.applyActiveLocale(a,i)}),this.applyInteractionState();let o=await this.controller.render(r);if(!o)return ke({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"failure",stage:"load_chart",ms:performance.now()-e,load:He(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=le("picker.testMode"),a.setAttribute("aria-label",le("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.opts.showAttribution!==!1&&this.buildBadge(r),ke({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:ii(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",le("picker.poweredBy")),t.style.cssText='position:absolute;bottom:10px;right:12px;z-index:5;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#4a5163;text-decoration:none;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.02em;box-shadow:0 2px 8px rgba(0,0,0,.12);';let i=document.createElement("span");i.setAttribute("aria-hidden","true"),i.style.cssText="width:16px;height:16px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;background:#0c1220;color:#fcf7ee",i.innerHTML=Ut;let n=document.createElement("span");n.textContent=le("picker.poweredBy"),t.append(i,n),e.appendChild(t)}placeTooltip(){if(!this.tipEl||!this.hostEl)return;let e=this.hostEl.clientWidth,t=this.tipEl.offsetWidth,i=this.tipEl.offsetHeight,n=this.tipPos.x+14,r=this.tipPos.y-i-12;n+t>e-8&&(n=this.tipPos.x-t-14),r<8&&(r=this.tipPos.y+18),this.tipEl.style.left=`${Math.max(8,n)}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=xa(e.price,e.currency,{...Number.isInteger(e.price)?{minimumFractionDigits:0,maximumFractionDigits:0}:{},locale:this.opts.locale,fallback:(l,c)=>`${l} ${c}`}),i=document.createElement("div");i.style.cssText="font-weight:700;font-size:13px",i.textContent=e.label;let n=document.createElement("div");n.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,n.append(r,o,a),this.tipEl.replaceChildren(i,n),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"?le("map.statusHeld"):le("map.statusTaken"),this.tipEl.appendChild(l)}this.tipEl.style.display="block",this.placeTooltip()}buildLanguageSwitcher(e){let t=(this.opts.languages??[]).map(n=>Ta(n)).filter((n,r,o)=>o.indexOf(n)===r);if(t.length<2)return;let i=document.createElement("select");i.setAttribute("aria-label",le("picker.preferredTicketType")),i.style.cssText='position:absolute;bottom:10px;left:12px;z-index:5;appearance:none;padding:5px 9px;border-radius:999px;border:0;cursor:pointer;background:rgba(255,255,255,.92);color:#4a5163;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.12);';for(let n of t){let r=document.createElement("option");r.value=n,r.textContent=Sa[n]??n,r.selected=n===Bi(),i.appendChild(r)}i.addEventListener("change",()=>{this.setLocale(i.value)}),e.appendChild(i),this.languageSelect=i}async setLocale(e){let t=Bi(),i=this.localeGeneration+=1,n=await wa(e);return this.opts.messages&&Ca(this.opts.messages),n===t||this.applyActiveLocale(n,i),n}applyActiveLocale(e,t){if(t!==this.localeGeneration)return;let i=this.hostEl;if(i){i.lang=e,i.dir=ka(e);for(let n of i.querySelectorAll("[data-sl-i18n]"))if(n.dataset.slI18n==="testMode")n.textContent=le("picker.testMode"),n.setAttribute("aria-label",le("picker.testMode"));else if(n.dataset.slI18n==="badge"){n.setAttribute("aria-label",le("picker.poweredBy"));let r=n.querySelector("span:last-child");r&&(r.textContent=le("picker.poweredBy"))}this.languageSelect&&this.languageSelect.value!==e&&(this.languageSelect.value=e),this.controller.refreshMapCopy()}}getMode(){return this.mode_}getPickerState(){return mn(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()}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})}let i=await this.controller.hold(void 0,e.ttlMs);return i?{holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items}:null}async resumeHold(e){try{return await this.resumeHoldOrThrow(e)}catch(t){return this.opts.onError?.(t),null}}async resumeHoldOrThrow(e){let t=await this.controller.resumeHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}async extendHold(e){try{let t=await this.controller.extendHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}catch(t){return this.opts.onError?.(t),null}}getCurrentHold(){let e=this.controller.currentHold();return e?{holdId:e.holdId,expiresAt:e.expiresAt,seats:e.seats,items:e.items}:null}getGAAreas(){return this.controller.getGAAreas()}async holdGA(e,t,i={}){try{return await this.holdGAOrThrow(e,t,i)}catch(n){return this.opts.onError?.(n),null}}async holdGAOrThrow(e,t,i={}){let n=await this.controller.holdGA(e,t,i);return n?{holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.items}:null}async bestAvailable(e,t,i={}){try{return await this.bestAvailableOrThrow(e,t,i)}catch(n){return this.opts.onError?.(n),null}}async bestAvailableOrThrow(e,t,i={}){let n=await this.controller.bestAvailable(e,t,i);return n?{holdId:n.holdId,expiresAt:n.expiresAt,labels:n.labels,seats:n.seats,items:n.items,...i.zoneId?{zoneId:i.zoneId}:{}}:null}setSeatTier(e,t){this.controller.setSeatTier(e,t)}setTableQuantity(e,t){return this.controller.setTableQuantity(e,t)}async replaceTableQuantity(e,t,i){try{return await this.replaceTableQuantityOrThrow(e,t,i)}catch(n){return this.opts.onError?.(n),null}}async replaceTableQuantityOrThrow(e,t,i){let n=await this.controller.replaceTableQuantity(e,t,i);return n?{holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.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()}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 ve({url:this.api.subscribeUrl(this.opts.event),mintTicket:()=>this.api.subscribeTicket(this.opts.event),onAccessUnavailable:e=>this.opts.onAccessUnavailable?.(e),sink:ft(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.immersive.pushLiveState(),this.opts.onStatusChange?.()},onSelectedObjectUnavailable:(e,t)=>this.opts.onSelectedObjectUnavailable?.({labels:e,reason:t})})}),this.realtime.start())}async refreshAvailability(){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 i=document.createElement("div");i.textContent="The seat map didn\u2019t load.",t.appendChild(i);let n=document.createElement("button");n.type="button",n.textContent="Try again",n.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;",n.addEventListener("click",()=>{this.destroy(),this.render().catch(r=>this.opts.onError?.(r))}),t.appendChild(n),e.appendChild(t)}destroy(){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 gn=["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"],Pa={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 La(s){let e={};for(let t of gn)e[t]=(...i)=>{let n=s();return n?n[t](...i):Pa[t]()};return e}var bn=["event","apiBase","maxSelection","numberOfPlacesToSelect","selectionValidators","publicKey","locale","currency","colorblindSafe","initialView","errorDisplay"],vn=[...bn,"selectedObjects","selectableObjects","messages","seatTooltip","buyerAccessTokenProvider","buyerAccessToken"],yn=["onSelectionChange","onSelectionValidityChange","onSelectionValid","onSelectionInvalid","onSelectionLimit","onHold","onHoldRestored","onHoldExpired","onGAClick","onGAPrompt","onError","onDeckTap","onHint","onSeatHover","onAccessExpired","onAccessUnavailable","onSelectedObjectUnavailable"];function Ma(s,e,t){let i={container:s};for(let n of vn)i[n]=e[n];for(let n of yn)i[n]=t[n];return i}var Ha=new Set(["seatlayer.designer.ready","seatlayer.designer.saved","seatlayer.designer.published","seatlayer.designer.close","seatlayer.designer.error"]),Ia=2e4,Oa=480,Ra=180*1e3,_a=900*1e3,Da=.8,Ba=30*1e3,Na=1e5,$a=4,Va=50;function $i(s){if(typeof s!="string")return s;let e=document.querySelector(s);if(!e)throw new Error(`EmbeddedDesigner container not found: ${s}`);return e}function Fa(s){let e=(s??"").toLowerCase();return e.includes("expire")||e.includes("revoke")||e==="401"?"expired":e.includes("mismatch")?"mismatch":e.includes("timeout")?"timeout":"load"}var za={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."}},Vi=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"||!Ha.has(t.type))return;let i={type:t.type,chartId:typeof t.chartId=="string"?t.chartId:void 0,workspaceId:typeof t.workspaceId=="string"?t.workspaceId:void 0,expiresAt:typeof t.expiresAt=="number"?t.expiresAt:void 0,code:typeof t.code=="string"?t.code:void 0,message:typeof t.message=="string"?t.message:void 0,meta:t.meta,fatal:typeof t.fatal=="boolean"?t.fatal:void 0,action:typeof t.action=="string"?t.action:void 0},n=this.identityEstablished||i.type==="seatlayer.designer.ready"||i.type==="seatlayer.designer.saved"||i.type==="seatlayer.designer.published"||i.type==="seatlayer.designer.close",r=this.options.expectedChartId!==void 0&&i.chartId!==this.options.expectedChartId&&(n||i.chartId!==void 0),o=this.options.expectedWorkspaceId!==void 0&&i.workspaceId!==this.options.expectedWorkspaceId&&(n||i.workspaceId!==void 0);if(r||o){this.showError("mismatch");return}switch(i.type){case"seatlayer.designer.ready":this.identityEstablished=!0,this.sessionExpiresAt=i.expiresAt,this.phase="ready",this.clearTimeoutTimer(),this.removeOverlay(),this.autoRecoverUsed=!1,this.scheduleRenewal(i.expiresAt),this.options.onReady?.(i);break;case"seatlayer.designer.saved":this.options.onSaved?.(i);break;case"seatlayer.designer.published":this.options.onPublished?.(i);break;case"seatlayer.designer.close":this.options.onClose?.(i);break;case"seatlayer.designer.error":{let a=Fa(i.code);if(a==="expired"&&this.autoRenewEnabled()&&!this.autoRecoverUsed){this.autoRecoverUsed=!0,this.clearRenewTimer(),this.options.onRequestRelaunch();return}(typeof i.fatal=="boolean"?i.fatal:a!=="load"||this.phase!=="ready")&&this.showError(a),this.options.onError?.(i);break}}};this.options=e}mount(){this.destroy();let e=new URL(this.options.designerUrl,window.location.href);if(e.protocol!=="https:"&&e.hostname!=="localhost"&&e.hostname!=="127.0.0.1")throw new Error("EmbeddedDesigner requires an HTTPS designerUrl outside local development.");this.designerOrigin=e.origin;let t=document.createElement("iframe");t.title=this.options.title??"Venue chart Designer",t.allow=this.options.allow??"fullscreen; clipboard-write",t.referrerPolicy=this.options.referrerPolicy??"origin",t.src=e.toString(),t.style.setProperty("width","100%","important"),t.style.setProperty("height",typeof this.options.height=="number"?`${this.options.height}px`:"100%","important"),t.style.border="0",Object.assign(t.style,this.options.style),this.options.className&&(t.className=this.options.className);let i=$i(this.options.container);if(this.containerEl=i,window.addEventListener("message",this.handleMessage),i.append(t),this.frame=t,this.fillEnabled()&&this.startFill(),this.phase="loading",this.loadingStateEnabled()){this.ensureContainerPositioned(i),this.renderOverlay(i,"loading");let n=this.options.loadingTimeoutMs??Ia;n>0&&Number.isFinite(n)&&(this.timeoutTimer=setTimeout(()=>{this.phase==="loading"&&this.showError("timeout")},n))}return t}setDesignerUrl(e){return this.options={...this.options,designerUrl:e},this.mount()}getIframe(){return this.frame}setSizing(e,t){this.options={...this.options,height:e,minHeight:t},this.frame&&(this.stopFill(),this.lastAutoHeight="",this.fillEnabled()?(this.pinned||this.setFrameHeight("100%"),this.startFill()):this.pinned||this.setFrameHeight(`${e}px`))}setRelaunchPolicy(e,t){this.options={...this.options,onRequestRelaunch:e,autoRenewSession:t},this.clearRenewTimer(),this.phase==="ready"&&this.scheduleRenewal(this.sessionExpiresAt)}destroy(){window.removeEventListener("message",this.handleMessage),this.stopFill(),this.unpinFullscreen(),this.clearTimeoutTimer(),this.clearRenewTimer(),this.removeOverlay(),this.restoreContainerStyle(),this.frame?.remove(),this.frame=null,this.containerEl=null,this.fillMode=null,this.designerOrigin="",this.phase="loading",this.identityEstablished=!1,this.sessionExpiresAt=void 0,this.lastAutoHeight=""}loadingStateEnabled(){return this.options.showLoadingState!==!1}autoResizeEnabled(){return this.options.autoResize!==!1}fillEnabled(){return typeof this.options.height!="number"}setFrameHeight(e){this.frame?.style.setProperty("height",e,"important")}detectFillMode(){let e=this.containerEl,t=this.frame;if(this.pinned||!e||!t)return this.fillMode??"viewport";let i=()=>e.getBoundingClientRect().height,n=t.style.getPropertyValue("height"),r=t.style.getPropertyPriority("height");t.style.setProperty("height","0px","important");let o=i();t.style.setProperty("height",`${Na}px`,"important");let a=i();return n?t.style.setProperty("height",n,r):t.style.removeProperty("height"),!(a-o>$a)&&o>=Va?"container":"viewport"}applyFill(){if(!this.frame||this.pinned)return;let e=this.options.minHeight??Oa;if(this.fillMode==="container"&&this.containerEl){let n=Math.max(e,Math.round(this.containerEl.getBoundingClientRect().height));this.setFrameHeight(`${n}px`);return}let t=this.frame.getBoundingClientRect().top,i=Math.max(e,Math.round(window.innerHeight-t));this.setFrameHeight(`${i}px`)}syncContainerObserver(){let e=this.fillMode==="container"&&!!this.containerEl&&typeof ResizeObserver<"u";e&&!this.resizeObs?(this.resizeObs=new ResizeObserver(()=>this.scheduleFill()),this.resizeObs.observe(this.containerEl)):!e&&this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null)}startFill(){this.fillMode=this.detectFillMode(),this.syncContainerObserver(),this.applyFill(),!this.fillListening&&(this.fillListening=!0,window.addEventListener("resize",this.scheduleReprobe),window.addEventListener("orientationchange",this.scheduleReprobe),window.addEventListener("scroll",this.scheduleFill,{passive:!0}))}stopFill(){this.fillRaf!==null&&(cancelAnimationFrame(this.fillRaf),this.fillRaf=null),this.reprobeRaf!==null&&(cancelAnimationFrame(this.reprobeRaf),this.reprobeRaf=null),this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null),this.fillListening&&(this.fillListening=!1,window.removeEventListener("resize",this.scheduleReprobe),window.removeEventListener("orientationchange",this.scheduleReprobe),window.removeEventListener("scroll",this.scheduleFill))}pinFullscreen(){if(this.pinned||!this.frame)return;this.pinned=!0,this.frameStyleBeforeFs=this.frame.getAttribute("style");let e={position:"fixed",top:"0",right:"0",bottom:"0",left:"0",width:"100vw",height:"100vh",margin:"0",border:"0","z-index":"2147483000",background:"#101625"};for(let[i,n]of Object.entries(e))this.frame.style.setProperty(i,n,"important");let t=document.documentElement;this.docOverflowBeforeFs=t.style.overflow,t.style.overflow="hidden",document.body&&(this.bodyOverflowBeforeFs=document.body.style.overflow,document.body.style.overflow="hidden"),this.fsKeyHandler=i=>{i.key==="Escape"&&this.unpinFullscreen()},window.addEventListener("keydown",this.fsKeyHandler)}unpinFullscreen(){this.pinned&&(this.pinned=!1,this.frame&&(this.frameStyleBeforeFs===null?this.frame.removeAttribute("style"):this.frame.setAttribute("style",this.frameStyleBeforeFs),this.fillEnabled()?this.applyFill():this.autoResizeEnabled()&&this.lastAutoHeight?this.setFrameHeight(this.lastAutoHeight):typeof this.options.height=="number"&&this.setFrameHeight(`${this.options.height}px`)),this.frameStyleBeforeFs=null,this.docOverflowBeforeFs!==null&&(document.documentElement.style.overflow=this.docOverflowBeforeFs,this.docOverflowBeforeFs=null),this.bodyOverflowBeforeFs!==null&&document.body&&(document.body.style.overflow=this.bodyOverflowBeforeFs,this.bodyOverflowBeforeFs=null),this.fsKeyHandler&&(window.removeEventListener("keydown",this.fsKeyHandler),this.fsKeyHandler=null))}clearTimeoutTimer(){this.timeoutTimer!==null&&(clearTimeout(this.timeoutTimer),this.timeoutTimer=null)}autoRenewEnabled(){return!!this.options.onRequestRelaunch&&this.options.autoRenewSession!==!1}clearRenewTimer(){this.renewTimer!==null&&(clearTimeout(this.renewTimer),this.renewTimer=null)}scheduleRenewal(e){if(this.clearRenewTimer(),!this.autoRenewEnabled()||typeof e!="number"||!Number.isFinite(e))return;let t=e-Date.now();if(t<=0)return;let i=t<_a?t*Da:t-Ra,n=Math.max(Ba,i);this.renewTimer=setTimeout(()=>{this.renewTimer=null,this.autoRenewEnabled()&&this.options.onRequestRelaunch()},n)}ensureContainerPositioned(e){getComputedStyle(e).position==="static"&&(this.restoreContainerPosition=e.style.position,e.style.position="relative")}restoreContainerStyle(){if(this.restoreContainerPosition!==null){try{$i(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=$i(this.options.container)}catch{return}this.renderOverlay(t,"error",e)}handleTryAgain(){if(this.options.onRequestRelaunch){this.options.onRequestRelaunch();return}this.mount()}renderOverlay(e,t,i){this.removeOverlay();let n=document.createElement("div");n.setAttribute("data-seatlayer-designer-overlay",t),n.setAttribute("role",t==="error"?"alert":"status"),n.setAttribute("aria-live","polite"),Object.assign(n.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(n):this.buildErrorCard(n,i??"load"),e.append(n),this.overlay=n}buildSkeleton(e){let t=document.createElement("style");t.textContent=`
2747
+ `;function et(){if(document.getElementById(ms))return;let n=document.createElement("style");n.id=ms,n.textContent=ba+ds+us+hs+ps+Kn,document.head.appendChild(n)}import{t as va}from"@seatlayer/core";import{cdnAssetUrl as ya}from"@seatlayer/core/core/cdnAsset";import{SEATLAYER_MODULE_URL as Yd}from"@seatlayer/core/core/cdnAsset";function v(n,e){let t=va(n);return t===n?e:t}function it(){return globalThis.matchMedia?.("(pointer: coarse)").matches??!1?v("picker.dragToLookTouch","Drag to look \xB7 pinch to zoom \xB7 tap \u2715 to close"):v("picker.dragToLookMouse","Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close")}function fs(n,e){let t=e?n.toLocaleUpperCase(e):n.toLocaleUpperCase(),i=e?n.toLocaleLowerCase(e):n.toLocaleLowerCase();if(n!==t||t===i)return n;let s=[...i][0]??"";return(e?s.toLocaleUpperCase(e):s.toLocaleUpperCase())+i.slice(s.length)}function gs(n){if(typeof n=="string"){let e=document.querySelector(n);if(!e)throw new Error(`seatmap: container "${n}" not found`);return e}if(!(n instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return n}function R(n){return String(n??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function bs(n,e,t){let i=e.find(r=>Ze(r))??null;if(n.replaceChildren(),!i)return n.textContent=t.slice(0,1).toUpperCase(),null;let s=document.createElement("img");return s.alt="",s.referrerPolicy="no-referrer",s.src=i,n.appendChild(s),i}var tt=null;function Qt(){if(tt!==null)return tt;try{if(typeof document>"u")return tt=!1;tt=!!document.createElement("canvas").getContext("webgl2")}catch{tt=!1}return tt}function ji(n){return ya(n)}var St=null;function Tt(){return St||(St=(typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(ji("seatlayer-view3d.mjs")):import("@seatlayer/core/view3d")).catch(e=>{throw St=null,e}),St)}function Xt(){(typeof navigator>"u"?void 0:navigator.connection)?.saveData||Tt().catch(()=>{})}async function Zt(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(ji("seatlayer-panorama.mjs")):import("@seatlayer/core")}async function vs(){return typeof __SEATLAYER_CDN__<"u"&&__SEATLAYER_CDN__?import(ji("seatlayer-checkout.mjs")):import("./hostedCheckout-W7QZWSOQ.js")}function ys(n){return n==="unavailable_for_event"||n==="payments_off_for_event"?n:"not_configured"}function Jt(n,e,t){let i={month:"short",day:"numeric",hour:"numeric",minute:"2-digit"},s=new Date(n);if(e)try{return s.toLocaleString(t,{...i,timeZone:e})}catch{}return s.toLocaleString(t,i)}async function ei(n,e){let t=n.overlay.productionElements;if(!t?.some(s=>s.contentImageUrl))return n;let i=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{...n,overlay:{...n.overlay,productionElements:i}}}async function ti(n,e){if(n)try{let t=await e(n);return t?await(await fetch(t)).arrayBuffer():void 0}catch{return}}import{browserPanoramaConstraints as wa,loadPanoramaImage as xa,planPanoramaDelivery as ka,schedulePanoramaUpgrade as Sa}from"@seatlayer/core/view/panoramaDelivery";function ii(n){let{root:e,source:t,caption:i,real:s,closeLabel:r,dragHint:o,viewFromSeatLabel:a,real360Label:l,previewLabel:c,resolveAsset:d,onClose:p}=n,u=n.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=N=>h.querySelector(N)?.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=i,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 m=h.querySelector(".sl-view-pano"),y=ka(t,wa()),w=new AbortController;m.style.backgroundImage=`url(${JSON.stringify(y.initialUrl)})`;let x=()=>{};y.upgradeUrl&&(x=Sa(()=>{d(y.upgradeUrl).then(N=>!N||w.signal.aborted?null:xa(N,w.signal).then(()=>N)).then(N=>{!N||!h.isConnected||w.signal.aborted||(m.style.backgroundImage=`url(${JSON.stringify(N)})`)}).catch(()=>{})}));let P=70,b=35,E=1,S=m.clientHeight||1,L=m.clientWidth||1,I=-(S*(180/P)*2/2-L/2),A=0,H=()=>{let N=m.clientHeight||1,Oi=N*(180/P)*E,_n=Math.max(0,Oi-N),Dn=Math.min(_n/2,b/180*Oi);A=Math.min(Dn,Math.max(-Dn,A)),m.style.backgroundSize=`auto ${Oi}px`,m.style.backgroundPosition=`${I}px ${A-_n/2}px`};H();let B=!1,V=0,te=0,ne=N=>{B=!0,V=N.clientX,te=N.clientY,m.classList.add("drag"),m.setPointerCapture?.(N.pointerId)},W=N=>{B&&(I+=N.clientX-V,A+=N.clientY-te,V=N.clientX,te=N.clientY,H())},Nt=N=>{B=!1,m.classList.remove("drag"),m.releasePointerCapture?.(N.pointerId)},Rn=N=>{N.preventDefault(),E=Math.min(2.4,Math.max(1,E+(N.deltaY<0?.12:-.12))),H()};m.addEventListener("pointerdown",ne),m.addEventListener("pointermove",W),m.addEventListener("pointerup",Nt),m.addEventListener("pointercancel",Nt),m.addEventListener("wheel",Rn,{passive:!1});let Hi=h.querySelector(".sl-view-x");Hi.addEventListener("click",p);let In=N=>{N.key==="Escape"&&(N.stopPropagation(),p())};return h.addEventListener("keydown",In),Hi.focus(),{element:h,dispose(){x(),w.abort(),m.removeEventListener("pointerdown",ne),m.removeEventListener("pointermove",W),m.removeEventListener("pointerup",Nt),m.removeEventListener("pointercancel",Nt),m.removeEventListener("wheel",Rn),h.removeEventListener("keydown",In),Hi.removeEventListener("click",p)}}}function Ea(n,e){if(!e)return{targetSeatId:null,previousSeatId:null,nextSeatId:null};let t=n.find(r=>r.id===e);if(!t?.rowId)return{targetSeatId:e,previousSeatId:null,nextSeatId:null};let i=n.filter(r=>r.rowId===t.rowId),s=i.findIndex(r=>r.id===e);return{targetSeatId:e,previousSeatId:s>0?i[s-1].id:null,nextSeatId:s>=0&&s+1<i.length?i[s+1].id:null}}var ws=6e4,ni=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 Ea(this.options.seats(),this.targetSeatId_)}get navigationMode(){return this.navigationMode_}canOffer3D(){return this.options.enable3D?this.handle&&this.overlay?!0:!this.options.doc()||!Qt()?!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),i=this.options.host(),s=this.options.doc();if(!t||!i||!s)throw new Error("seat_view_unavailable");let r=++this.seatViewGeneration,o,a,l=!1;if(t.viewUrl){let g=t.viewMeta?.previewUrl,m=!!g&&g!==t.viewUrl,y=m?await this.options.resolveAsset(g):null,w=m?t.viewUrl:await this.options.resolveAsset(t.viewUrl);if(r!==this.seatViewGeneration||!w||m&&!y)return;o={url:w,...y?{previewUrl:y}:{},...m?{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=Ca(o),l=Ta(o)}else{if(!this.hasStage())throw new Error("seat_view_unavailable");let{generateSeatPanorama:g}=await Zt();if(r!==this.seatViewGeneration)return;let m=s.floors?.find(x=>x.objects.some(P=>P.type==="row"&&P.id===t.rowId)),y=t.focalPoint??m?.focalPoint??s.focalPoint,w=g(t,y,[...this.options.seats()]);o={url:w.url,generated:!0},a=nt("picker.illustrationCaption",{m:w.distanceM})}if(r!==this.seatViewGeneration)return;this.closeSeatView(!1),this.prepareHostTheme(i,s),et();let c=this.options.chrome??{},d=it(),p=nt("picker.viewFromSeat",{label:t.displayLabel||t.label}),u=l?nt("picker.real360"):nt("picker.preview"),h=ii({root:i,source:o,caption:a,real:l,closeLabel:v("picker.close","Close"),dragHint:d,viewFromSeatLabel:p,real360Label:nt("picker.real360"),previewLabel:nt("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 i=t.floors.findIndex(s=>s.id===e);return i>=0&&this.handle.focusFloor(i)}zoomIn(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.zoomIn(),!0)}zoomOut(){return this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.zoomOut(),!0)}setNavigationMode(e){return this.navigationMode_=e,this.buyerView_!=="venue3d"||!this.handle?!1:(this.handle.setNavigationMode(e),this.options.onViewChange(this.buyerView_,this.targetSeatId_),!0)}destroy(){this.generation+=1,this.closeSeatView(!0,!1);try{this.handle?.dispose()}catch{}this.handle=null,this.overlay?.remove(),this.overlay=null,this.buyerView_="map",this.targetSeatId_=null,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)?ws/2:ws}async enter3D(e){let t=this.options.host(),i=this.options.doc();if(!t||!i||this.overlay)throw new Error("venue_3d_unavailable");et(),this.prepareHostTheme(t,i);let s=document.createElement("div");s.className="sl-view3d",s.setAttribute("role","group"),s.setAttribute("aria-label",v("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=v("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([Tt(),this.options.loadEventConfiguration()]),c=l?await ei(l,this.options.resolveAsset):null,d=await ti(i.theme?.venue3d?.shellAssetUrl,this.options.resolveAsset);if(o!==this.generation||this.overlay!==s)return;let p={doc:i,seats:[...this.options.seats()],...c?{eventConfigurationId:c.id,eventConfiguration:c}:{},...d?{registeredShellGlb:d}:{}};r.textContent=v("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:it(),...h.view3dCaption===!1||h.view3dSeatStepper===!1||h.view3dControlDock===!1?{chrome:{caption:h.view3dCaption!==!1,seatStepper:h.view3dSeatStepper!==!1,controlDock:h.view3dControlDock!==!1}}:{},seatViewActionLabel:m=>this.findSeat(m)?.viewUrl?v("picker.openAuthored360","Open venue 360\xB0"):v("picker.lookAroundLive3d","Look around in live 3D"),onSeatPick:m=>this.toggleSeat(m),onSeatInspect:m=>this.toggleSeat(m),onViewTargetChange:m=>{this.targetSeatId_=m,m&&(this.focusedSectionId_=this.findSeat(m)?.sectionId??null),this.options.onViewChange("venue3d",m)},onSectionFocusChange:m=>{this.focusedSectionId_=m,this.options.onViewChange("venue3d",this.targetSeatId_)},...this.options.enableSeatView?{getSeatView:m=>this.seatViewFor3D(m)}:{}});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 i=this.handle,s=this.overlay;if(this.options.restoreMap(),t&&i&&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{i?.dispose()}catch{}this.options.restoreMap();return}if(!e||this.reducedMotion()){try{i?.dispose()}catch{}s.remove(),this.options.restoreMap();return}s.style.pointerEvents="none",requestAnimationFrame(()=>{s.style.opacity="0"}),setTimeout(()=>{try{i?.dispose()}catch{}s.remove(),this.options.restoreMap()},280)}async restore3D(e){let t=this.overlay,i=this.handle;if(!t||!i)throw new Error("venue_3d_unavailable");this.buyerView_="venue3d",this.targetSeatId_=e.flyToSeatId??null,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"}),i.resize(),i.setNavigationMode(this.navigationMode_),this.pushLiveState(),this.options.onViewChange("venue3d",this.targetSeatId_),e.flyToSeatId?await i.flyToSeat(e.flyToSeatId):e.resetView&&i.focusOverview()}nextPaint(){return this.reducedMotion()||typeof requestAnimationFrame!="function"?Promise.resolve():new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}toggleSeat(e){if(!this.findSeat(e))return;this.options.selection().some(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 i=t.viewMeta?.previewUrl,s=!!i&&i!==t.viewUrl,r=s?await this.options.resolveAsset(i):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:v("picker.chartDerivedModel","Chart-derived model")}}closeSeatView(e=!0,t=!1){e&&(this.seatViewGeneration+=1);let i=this.seatViewElement;if(this.seatViewDispose?.(),this.seatViewDispose=null,this.seatViewElement=null,!!i){if(this.options.onSeatViewChange?.(null),!t||this.reducedMotion()){i.remove();return}i.classList.add("is-leaving"),setTimeout(()=>i.remove(),190)}}findSeat(e){return this.options.seats().find(t=>t.id===e||t.label===e)}hasStage(){let e=this.options.doc();return e?(e.floors?.flatMap(i=>i.objects)??e.objects).some(i=>i.type==="shape"&&(i.role==="stage"||!!i.stageKind)):!1}prepareHostTheme(e,t){getComputedStyle(e).position==="static"&&(e.style.position="relative");let i=t.theme;e.style.setProperty("--sl-bg",i?.background??"#f6f7fb"),e.style.setProperty("--sl-surface","#ffffff"),e.style.setProperty("--sl-text",i?.textColor??"#10162a"),e.style.setProperty("--sl-muted","#697386"),e.style.setProperty("--sl-line","#d9deea"),e.style.setProperty("--sl-accent",i?.accent??"#ef4056"),e.style.setProperty("--sl-accent-ink",i?.accentInk??"#ffffff")}reducedMotion(){return globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1}};var Aa={host:"web",platform:"web",bundle:"",protocol:0,chromeOwner:"web"},Pa={...Aa},si=null,xs=null;function La(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():0}function Ma(){let n=e=>Math.max(0,Math.round(e*100)/100);return{bootMs:n(La()),documentMs:si==null?0:n(si),handshakeMs:si==null||xs==null?0:n(xs-si)}}function ks(){let{host:n,platform:e,bundle:t,protocol:i,chromeOwner:s}=Pa,r=Ma();return{host:n,platform:e,...t?{bundle:t}:{},...i?{protocol:i}:{},chromeOwner:s,bootMs:r.bootMs,documentMs:r.documentMs,handshakeMs:r.handshakeMs}}var Ss=new Set;function He(n){return Ss.has(n)?"repeat":"cold"}function ri(n){let e=He(n);return Ss.add(n),e}function se(n){return typeof n=="number"&&Number.isFinite(n)&&n>=0?Math.round(n):0}function Ha(){return typeof location>"u"?!1:/^(localhost|127\.0\.0\.1|\[::1\])$/i.test(location.hostname)}function Oa(n){if(!/^[A-Za-z0-9_-]{1,80}$/.test(n.event))return null;let e=n.performanceProfile??{};return{event:n.event,scope:n.scope,surface:n.surface,outcome:n.outcome,stage:n.stage?.slice(0,32)??"",ms:se(n.ms),api:se(e.loadChartAndStatuses)||se(e.loadChart),scene:se(e.buildScene),panel:se(e.buildBuyerControls),paint:se(e.firstPaint),normalize:se(e.normalizeBuyerModel),renderer:se(e.createRenderer),seats:se(n.seats),floors:se(n.floors),view:n.view??"map",load:n.load??He(n.event),transport:n.transport??"pubapi",chartBytes:se(n.chartDelivery?.bytes),chartCache:n.chartDelivery?.cache??"",...ks(),availabilityMs:se(e.loadStatuses)}}var Ra=new Set;function ke(n){let e=Oa(n);if(e){for(let t of Ra)try{t(e)}catch{}typeof fetch>"u"||Ha()||fetch(`${n.apiBase.replace(/\/+$/,"")}/pub/telemetry/chart-load`,{method:"POST",headers:{"Content-Type":"application/json","X-SeatLayer-Client":"1"},body:JSON.stringify(e),credentials:"omit",keepalive:!0}).catch(()=>{})}}var Ct=class n{constructor(e,t=null){this.seams=e;this.watch=null;this.mode=t,this.watchMode()}themeMode(){return this.mode}setThemeMode(e,t){let i=t!==void 0&&"mapTheme"in t;e===this.mode&&!i||(i&&this.seams.setHostMapTheme(t.mapTheme??void 0),this.mode=e,this.watchMode(),this.applyThemeMode())}static groundFor(e){return Ue(null,e)}applyThemeMode(){let e=this.seams.mapTheme()??n.groundFor(this.mode);this.seams.applyMapTheme(e??null)&&this.seams.changed()}watchMode(){this.watch?.(),this.watch=null,this.mode==="auto"&&(this.watch=Vt(()=>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 Da}from"@seatlayer/core";import{seatConfidenceDisclosure as Ba}from"@seatlayer/core/core/seatConfidence";import{generateSeatThumb as Ia}from"@seatlayer/core";function st(n){let e=n.viewMeta?.previewUrl??n.viewUrl;return e&&(zi(e)||Ze(e))?e:null}function ai(n){if(!n)return!1;let e=n.floors?.length?n.floors.map(t=>t.objects??[]):[n.objects??[]];for(let t of e)for(let i of t)if(i.type==="shape"&&(i.role==="stage"||i.stageKind))return!0;return!1}var _a=512,oi=new Map;function li(n,e){if(!e)return null;let t=`${n.id}|${Math.round(e.x)},${Math.round(e.y)}`,i=oi.get(t);if(i!==void 0)return i;let s=null;try{s=Ia(n,e).distanceM??null}catch{s=null}return oi.size>=_a&&oi.clear(),oi.set(t,s),s}function Et(n){return n.getFocusedSection()!==null||n.seatsRevealed()}function Na(n,e){return{accessibilityFilter:n.length>0,limitedViewFilter:e.some(t=>t.commercial?.restrictedView||t.commercial?.obstructedView)}}function Ts(n,e,t){let i=n.doc,s=i?.theme??{},r=n.categoryAvailability(),o=n.getGAAreas(),a=n.getFloors(),l=n.getExpandedSeats(),c=n.getAccessNeeds(),d=Na(c,l),p=e.seatPosition,u=p.targetSeatId?n.seatDetails(p.targetSeatId):null,h=new Map(l.map(w=>[w.id,w])),g=ai(i),m=i?.floors?.flatMap(w=>w.objects)??i?.objects??[],y=new Map;for(let w of m)w.type==="section"&&y.set(w.id,{id:w.id,label:w.label,...w.displayLabel?{displayLabel:w.displayLabel}:{},...w.zone?{zoneId:w.zone}:{}});return{event:{key:t.event,name:t.eventInfo?.name??i?.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:Da()||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:!!i?.categories.some(w=>w.tiers?.length),floors:a.length>1,zones:!!i?.zones?.length,sections:y.size>0,bestAvailable:!0,...d,venue3d:e.canOffer3D(),seatView:e.canOfferSeatView()},catalog:{categories:(i?.categories??[]).filter(w=>!w.notForSale).map(w=>({key:w.key,label:w.label,color:w.color,price:w.price??w.tiers?.[0]?.price??0,available:r[w.key]??0,...Object.prototype.hasOwnProperty.call(r,w.key)?{free:r[w.key]}:{},tiers:(w.tiers??[]).map(x=>({id:x.id,name:x.name,price:x.price,...x.currency?{currency:x.currency}:{}}))})),zones:(i?.zones??[]).map(w=>({id:w.id,label:w.label,...w.color?{color:w.color}:{}})),sections:[...y.values()],gaAreas:o,bestAvailableZones:n.getBestAvailableZones()},map:{floors:a,activeFloorId:n.getActiveFloorId()||a[0]?.id||null,floorMode:n.isFloorOverview()?"all":"single",floorLabelStyle:n.getRenderer()?.getFloorLabelStyle?.()??"number",rung:n.getRung(),canZoomOut:Et(n)||t.focusedSection_!==null,focusedSectionId:n.getFocusedSection(),focusedSection:t.focusedSection_,viewMode:n.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:n.getViewportInsets(),categoryFilter:t.categoryFilter_?[...t.categoryFilter_]:null,accessibilityFilter:t.accessibilityFilter_?[...t.accessibilityFilter_]:null,hideLimitedView:t.hideLimitedView_,accessNeeds:c},selection:{seats:n.getSelection().map(w=>{let x=h.get(w.id);if(!x)return w;let P=n.worldToScreen({x:x.x,y:x.y}),b=st(x),E=g?li(x,x.focalPoint??i?.focalPoint):null;return{...w,screenPoint:{x:P.x,y:P.y},...b?{seatViewThumb:{reference:b,kind:"real"}}:{},...E!=null?{sightlineMetres:E}:{},...x.confidenceEvidence?{seatViewConfidence:Ba(x.confidenceEvidence)}:{}}}),validity:n.getSelectionValidity(),maxSelection:t.maxSelection_},access:{...t.accessState_}}}var Ua="https://api.seatlayer.io",Cs=10;function Ka(n){if(typeof n=="string"){let e=document.querySelector(n);if(!e)throw new Error(`seatmap: container "${n}" not found`);return e}if(!(n instanceof HTMLElement))throw new Error("seatmap: container must be a CSS selector or an HTMLElement");return n}var qi=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.realtime=null;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.container)throw new Error("seatmap: `container` is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");this.opts=e,this.maxSelection_=e.maxSelection??Cs,this.colorblindSafe_=e.colorblindSafe??!1;let t=!!(e.buyerAccessTokenProvider||e.buyerAccessToken||e.publicKey);this.accessState_={configured:t,status:t?"ready":"public"},this.publicKey=e.publicKey;let i={onExpired:a=>{this.accessState_={configured:!0,status:a.refreshed?"ready":"expired"},this.opts.onAccessExpired?.(a),this.notifyMapStateChange()},onUnavailable:a=>{this.accessState_={configured:!0,status:"unavailable",reason:a.reason},this.opts.onAccessUnavailable?.(a),this.notifyMapStateChange()}},s=(e.apiBase??Ua).replace(/\/+$/,"");this.apiBase=s;let r=e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?qt({base:s,event:e.event,publicKey:e.publicKey,accessHooks:i,apiOptions:{onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=r?.access??xt(e,i);let o=r?.api??new Pe(s,{access:this.access??void 0,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)});this.api=o,this.controller=new $a({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])},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??Cs)-this.controller.getSelection().length)),tiers:Wt(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??Ct.groundFor(e.theme?.mode)??null}),this.hostSurface=new Ct({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 Je(e.event,(a,l)=>o.asset(a,l)),this.immersive=new ni({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_=Et(this.controller)}handleViewChange(){this.opts.onViewChange?.();let e=this.controller.getRung(),t=Et(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_=Et(this.controller),this.opts.onMapStateChange?.()}async render(){if(this.rendered)return this;let e=performance.now();this.rendered=!0;let t=zt(this.opts.locale,this.opts.messages),i=this.localeGeneration+=1,s=Gi();this.mount=Ka(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,jt(r,t,a=>{a!==s&&this.applyActiveLocale(a,i)}),this.applyInteractionState();let o=await this.controller.render(r);if(!o)return ke({apiBase:this.apiBase,event:this.opts.event,scope:"event",surface:"seating_chart",outcome:"failure",stage:"load_chart",ms:performance.now()-e,load:He(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=le("picker.testMode"),a.setAttribute("aria-label",le("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.opts.showAttribution!==!1&&this.buildBadge(r),ke({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:ri(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",le("picker.poweredBy")),t.style.cssText='position:absolute;bottom:10px;right:12px;z-index:5;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#4a5163;text-decoration:none;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.02em;box-shadow:0 2px 8px rgba(0,0,0,.12);';let i=document.createElement("span");i.setAttribute("aria-hidden","true"),i.style.cssText="width:16px;height:16px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;background:#0c1220;color:#fcf7ee",i.innerHTML=Yt;let s=document.createElement("span");s.textContent=le("picker.poweredBy"),t.append(i,s),e.appendChild(t)}placeTooltip(){if(!this.tipEl||!this.hostEl)return;let e=this.hostEl.clientWidth,t=this.tipEl.offsetWidth,i=this.tipEl.offsetHeight,s=this.tipPos.x+14,r=this.tipPos.y-i-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=Va(e.price,e.currency,{...Number.isInteger(e.price)?{minimumFractionDigits:0,maximumFractionDigits:0}:{},locale:this.opts.locale,fallback:(l,c)=>`${l} ${c}`}),i=document.createElement("div");i.style.cssText="font-weight:700;font-size:13px",i.textContent=e.label;let s=document.createElement("div");s.style.cssText="display:flex;align-items:center;gap:6px;margin-top:4px;color:#c7cddc";let 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(i,s),e.status!=="free"){let l=document.createElement("div");l.style.cssText="margin-top:5px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#fca5a5;font-weight:700",l.textContent=e.status==="held"?le("map.statusHeld"):le("map.statusTaken"),this.tipEl.appendChild(l)}this.tipEl.style.display="block",this.placeTooltip()}buildLanguageSwitcher(e){let t=(this.opts.languages??[]).map(s=>Ga(s)).filter((s,r,o)=>o.indexOf(s)===r);if(t.length<2)return;let i=document.createElement("select");i.setAttribute("aria-label",le("picker.preferredTicketType")),i.style.cssText='position:absolute;bottom:10px;left:12px;z-index:5;appearance:none;padding:5px 9px;border-radius:999px;border:0;cursor:pointer;background:rgba(255,255,255,.92);color:#4a5163;font:600 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.12);';for(let s of t){let r=document.createElement("option");r.value=s,r.textContent=ja[s]??s,r.selected=s===Gi(),i.appendChild(r)}i.addEventListener("change",()=>{this.setLocale(i.value)}),e.appendChild(i),this.languageSelect=i}async setLocale(e){let t=Gi(),i=this.localeGeneration+=1,s=await Fa(e);return this.opts.messages&&qa(this.opts.messages),s===t||this.applyActiveLocale(s,i),s}applyActiveLocale(e,t){if(t!==this.localeGeneration)return;let i=this.hostEl;if(i){i.lang=e,i.dir=za(e);for(let s of i.querySelectorAll("[data-sl-i18n]"))if(s.dataset.slI18n==="testMode")s.textContent=le("picker.testMode"),s.setAttribute("aria-label",le("picker.testMode"));else if(s.dataset.slI18n==="badge"){s.setAttribute("aria-label",le("picker.poweredBy"));let r=s.querySelector("span:last-child");r&&(r.textContent=le("picker.poweredBy"))}this.languageSelect&&this.languageSelect.value!==e&&(this.languageSelect.value=e),this.controller.refreshMapCopy()}}getMode(){return this.mode_}getPickerState(){return Ts(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()}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 s=t.violations.includes("numberOfPlacesToSelect");throw Object.assign(new Error(s?`seatmap: select exactly ${t.required} places before holding`:"seatmap: adjust the ticket selection before holding"),{code:s?"selection_count_mismatch":"selection_invalid",selection:t})}let i=await this.controller.hold(void 0,e.ttlMs);return i?{holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items}:null}async resumeHold(e){try{return await this.resumeHoldOrThrow(e)}catch(t){return this.opts.onError?.(t),null}}async resumeHoldOrThrow(e){let t=await this.controller.resumeHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}async extendHold(e){try{let t=await this.controller.extendHold(e);return t?{holdId:t.holdId,expiresAt:t.expiresAt,seats:t.seats,items:t.items}:null}catch(t){return this.opts.onError?.(t),null}}getCurrentHold(){let e=this.controller.currentHold();return e?{holdId:e.holdId,expiresAt:e.expiresAt,seats:e.seats,items:e.items}:null}getGAAreas(){return this.controller.getGAAreas()}async holdGA(e,t,i={}){try{return await this.holdGAOrThrow(e,t,i)}catch(s){return this.opts.onError?.(s),null}}async holdGAOrThrow(e,t,i={}){let s=await this.controller.holdGA(e,t,i);return s?{holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items}:null}async bestAvailable(e,t,i={}){try{return await this.bestAvailableOrThrow(e,t,i)}catch(s){return this.opts.onError?.(s),null}}async bestAvailableOrThrow(e,t,i={}){let s=await this.controller.bestAvailable(e,t,i);return s?{holdId:s.holdId,expiresAt:s.expiresAt,labels:s.labels,seats:s.seats,items:s.items,...i.zoneId?{zoneId:i.zoneId}:{}}:null}setSeatTier(e,t){this.controller.setSeatTier(e,t)}setTableQuantity(e,t){return this.controller.setTableQuantity(e,t)}async replaceTableQuantity(e,t,i){try{return await this.replaceTableQuantityOrThrow(e,t,i)}catch(s){return this.opts.onError?.(s),null}}async replaceTableQuantityOrThrow(e,t,i){let s=await this.controller.replaceTableQuantity(e,t,i);return s?{holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items}:null}getFloors(){return this.controller.getFloors()}setFloor(e){if(this.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()}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 ve({url:this.api.subscribeUrl(this.opts.event),mintTicket:()=>this.api.subscribeTicket(this.opts.event),onAccessUnavailable:e=>this.opts.onAccessUnavailable?.(e),sink:gt(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.immersive.pushLiveState(),this.opts.onStatusChange?.()},onSelectedObjectUnavailable:(e,t)=>this.opts.onSelectedObjectUnavailable?.({labels:e,reason:t})})}),this.realtime.start())}async refreshAvailability(){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 i=document.createElement("div");i.textContent="The seat map didn\u2019t load.",t.appendChild(i);let s=document.createElement("button");s.type="button",s.textContent="Try again",s.style.cssText="appearance:none;border:1px solid #c9cede;background:#fff;color:#10162a;border-radius:8px;padding:8px 16px;font:600 13px/1 inherit;cursor:pointer;",s.addEventListener("click",()=>{this.destroy(),this.render().catch(r=>this.opts.onError?.(r))}),t.appendChild(s),e.appendChild(t)}destroy(){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 Es=["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"],Wa={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 Ya(n){let e={};for(let t of Es)e[t]=(...i)=>{let s=n();return s?s[t](...i):Wa[t]()};return e}var As=["event","apiBase","maxSelection","numberOfPlacesToSelect","selectionValidators","publicKey","locale","currency","colorblindSafe","initialView","errorDisplay"],Ps=[...As,"selectedObjects","selectableObjects","messages","seatTooltip","buyerAccessTokenProvider","buyerAccessToken"],Ls=["onSelectionChange","onSelectionValidityChange","onSelectionValid","onSelectionInvalid","onSelectionLimit","onHold","onHoldRestored","onHoldExpired","onGAClick","onGAPrompt","onError","onDeckTap","onHint","onSeatHover","onAccessExpired","onAccessUnavailable","onSelectedObjectUnavailable"];function Qa(n,e,t){let i={container:n};for(let s of Ps)i[s]=e[s];for(let s of Ls)i[s]=t[s];return i}var Xa=new Set(["seatlayer.designer.ready","seatlayer.designer.saved","seatlayer.designer.published","seatlayer.designer.close","seatlayer.designer.error"]),Za=2e4,Ja=480,el=180*1e3,tl=900*1e3,il=.8,nl=30*1e3,sl=1e5,rl=4,ol=50;function Ui(n){if(typeof n!="string")return n;let e=document.querySelector(n);if(!e)throw new Error(`EmbeddedDesigner container not found: ${n}`);return e}function al(n){let e=(n??"").toLowerCase();return e.includes("expire")||e.includes("revoke")||e==="401"?"expired":e.includes("mismatch")?"mismatch":e.includes("timeout")?"timeout":"load"}var ll={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."}},Ki=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"||!Xa.has(t.type))return;let i={type:t.type,chartId:typeof t.chartId=="string"?t.chartId:void 0,workspaceId:typeof t.workspaceId=="string"?t.workspaceId:void 0,expiresAt:typeof t.expiresAt=="number"?t.expiresAt:void 0,code:typeof t.code=="string"?t.code:void 0,message:typeof t.message=="string"?t.message:void 0,meta:t.meta,fatal:typeof t.fatal=="boolean"?t.fatal:void 0,action:typeof t.action=="string"?t.action:void 0},s=this.identityEstablished||i.type==="seatlayer.designer.ready"||i.type==="seatlayer.designer.saved"||i.type==="seatlayer.designer.published"||i.type==="seatlayer.designer.close",r=this.options.expectedChartId!==void 0&&i.chartId!==this.options.expectedChartId&&(s||i.chartId!==void 0),o=this.options.expectedWorkspaceId!==void 0&&i.workspaceId!==this.options.expectedWorkspaceId&&(s||i.workspaceId!==void 0);if(r||o){this.showError("mismatch");return}switch(i.type){case"seatlayer.designer.ready":this.identityEstablished=!0,this.sessionExpiresAt=i.expiresAt,this.phase="ready",this.clearTimeoutTimer(),this.removeOverlay(),this.autoRecoverUsed=!1,this.scheduleRenewal(i.expiresAt),this.options.onReady?.(i);break;case"seatlayer.designer.saved":this.options.onSaved?.(i);break;case"seatlayer.designer.published":this.options.onPublished?.(i);break;case"seatlayer.designer.close":this.options.onClose?.(i);break;case"seatlayer.designer.error":{let a=al(i.code);if(a==="expired"&&this.autoRenewEnabled()&&!this.autoRecoverUsed){this.autoRecoverUsed=!0,this.clearRenewTimer(),this.options.onRequestRelaunch();return}(typeof i.fatal=="boolean"?i.fatal:a!=="load"||this.phase!=="ready")&&this.showError(a),this.options.onError?.(i);break}}};this.options=e}mount(){this.destroy();let e=new URL(this.options.designerUrl,window.location.href);if(e.protocol!=="https:"&&e.hostname!=="localhost"&&e.hostname!=="127.0.0.1")throw new Error("EmbeddedDesigner requires an HTTPS designerUrl outside local development.");this.designerOrigin=e.origin;let t=document.createElement("iframe");t.title=this.options.title??"Venue chart Designer",t.allow=this.options.allow??"fullscreen; clipboard-write",t.referrerPolicy=this.options.referrerPolicy??"origin",t.src=e.toString(),t.style.setProperty("width","100%","important"),t.style.setProperty("height",typeof this.options.height=="number"?`${this.options.height}px`:"100%","important"),t.style.border="0",Object.assign(t.style,this.options.style),this.options.className&&(t.className=this.options.className);let i=Ui(this.options.container);if(this.containerEl=i,window.addEventListener("message",this.handleMessage),i.append(t),this.frame=t,this.fillEnabled()&&this.startFill(),this.phase="loading",this.loadingStateEnabled()){this.ensureContainerPositioned(i),this.renderOverlay(i,"loading");let s=this.options.loadingTimeoutMs??Za;s>0&&Number.isFinite(s)&&(this.timeoutTimer=setTimeout(()=>{this.phase==="loading"&&this.showError("timeout")},s))}return t}setDesignerUrl(e){return this.options={...this.options,designerUrl:e},this.mount()}getIframe(){return this.frame}setSizing(e,t){this.options={...this.options,height:e,minHeight:t},this.frame&&(this.stopFill(),this.lastAutoHeight="",this.fillEnabled()?(this.pinned||this.setFrameHeight("100%"),this.startFill()):this.pinned||this.setFrameHeight(`${e}px`))}setRelaunchPolicy(e,t){this.options={...this.options,onRequestRelaunch:e,autoRenewSession:t},this.clearRenewTimer(),this.phase==="ready"&&this.scheduleRenewal(this.sessionExpiresAt)}destroy(){window.removeEventListener("message",this.handleMessage),this.stopFill(),this.unpinFullscreen(),this.clearTimeoutTimer(),this.clearRenewTimer(),this.removeOverlay(),this.restoreContainerStyle(),this.frame?.remove(),this.frame=null,this.containerEl=null,this.fillMode=null,this.designerOrigin="",this.phase="loading",this.identityEstablished=!1,this.sessionExpiresAt=void 0,this.lastAutoHeight=""}loadingStateEnabled(){return this.options.showLoadingState!==!1}autoResizeEnabled(){return this.options.autoResize!==!1}fillEnabled(){return typeof this.options.height!="number"}setFrameHeight(e){this.frame?.style.setProperty("height",e,"important")}detectFillMode(){let e=this.containerEl,t=this.frame;if(this.pinned||!e||!t)return this.fillMode??"viewport";let i=()=>e.getBoundingClientRect().height,s=t.style.getPropertyValue("height"),r=t.style.getPropertyPriority("height");t.style.setProperty("height","0px","important");let o=i();t.style.setProperty("height",`${sl}px`,"important");let a=i();return s?t.style.setProperty("height",s,r):t.style.removeProperty("height"),!(a-o>rl)&&o>=ol?"container":"viewport"}applyFill(){if(!this.frame||this.pinned)return;let e=this.options.minHeight??Ja;if(this.fillMode==="container"&&this.containerEl){let s=Math.max(e,Math.round(this.containerEl.getBoundingClientRect().height));this.setFrameHeight(`${s}px`);return}let t=this.frame.getBoundingClientRect().top,i=Math.max(e,Math.round(window.innerHeight-t));this.setFrameHeight(`${i}px`)}syncContainerObserver(){let e=this.fillMode==="container"&&!!this.containerEl&&typeof ResizeObserver<"u";e&&!this.resizeObs?(this.resizeObs=new ResizeObserver(()=>this.scheduleFill()),this.resizeObs.observe(this.containerEl)):!e&&this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null)}startFill(){this.fillMode=this.detectFillMode(),this.syncContainerObserver(),this.applyFill(),!this.fillListening&&(this.fillListening=!0,window.addEventListener("resize",this.scheduleReprobe),window.addEventListener("orientationchange",this.scheduleReprobe),window.addEventListener("scroll",this.scheduleFill,{passive:!0}))}stopFill(){this.fillRaf!==null&&(cancelAnimationFrame(this.fillRaf),this.fillRaf=null),this.reprobeRaf!==null&&(cancelAnimationFrame(this.reprobeRaf),this.reprobeRaf=null),this.resizeObs&&(this.resizeObs.disconnect(),this.resizeObs=null),this.fillListening&&(this.fillListening=!1,window.removeEventListener("resize",this.scheduleReprobe),window.removeEventListener("orientationchange",this.scheduleReprobe),window.removeEventListener("scroll",this.scheduleFill))}pinFullscreen(){if(this.pinned||!this.frame)return;this.pinned=!0,this.frameStyleBeforeFs=this.frame.getAttribute("style");let e={position:"fixed",top:"0",right:"0",bottom:"0",left:"0",width:"100vw",height:"100vh",margin:"0",border:"0","z-index":"2147483000",background:"#101625"};for(let[i,s]of Object.entries(e))this.frame.style.setProperty(i,s,"important");let t=document.documentElement;this.docOverflowBeforeFs=t.style.overflow,t.style.overflow="hidden",document.body&&(this.bodyOverflowBeforeFs=document.body.style.overflow,document.body.style.overflow="hidden"),this.fsKeyHandler=i=>{i.key==="Escape"&&this.unpinFullscreen()},window.addEventListener("keydown",this.fsKeyHandler)}unpinFullscreen(){this.pinned&&(this.pinned=!1,this.frame&&(this.frameStyleBeforeFs===null?this.frame.removeAttribute("style"):this.frame.setAttribute("style",this.frameStyleBeforeFs),this.fillEnabled()?this.applyFill():this.autoResizeEnabled()&&this.lastAutoHeight?this.setFrameHeight(this.lastAutoHeight):typeof this.options.height=="number"&&this.setFrameHeight(`${this.options.height}px`)),this.frameStyleBeforeFs=null,this.docOverflowBeforeFs!==null&&(document.documentElement.style.overflow=this.docOverflowBeforeFs,this.docOverflowBeforeFs=null),this.bodyOverflowBeforeFs!==null&&document.body&&(document.body.style.overflow=this.bodyOverflowBeforeFs,this.bodyOverflowBeforeFs=null),this.fsKeyHandler&&(window.removeEventListener("keydown",this.fsKeyHandler),this.fsKeyHandler=null))}clearTimeoutTimer(){this.timeoutTimer!==null&&(clearTimeout(this.timeoutTimer),this.timeoutTimer=null)}autoRenewEnabled(){return!!this.options.onRequestRelaunch&&this.options.autoRenewSession!==!1}clearRenewTimer(){this.renewTimer!==null&&(clearTimeout(this.renewTimer),this.renewTimer=null)}scheduleRenewal(e){if(this.clearRenewTimer(),!this.autoRenewEnabled()||typeof e!="number"||!Number.isFinite(e))return;let t=e-Date.now();if(t<=0)return;let i=t<tl?t*il:t-el,s=Math.max(nl,i);this.renewTimer=setTimeout(()=>{this.renewTimer=null,this.autoRenewEnabled()&&this.options.onRequestRelaunch()},s)}ensureContainerPositioned(e){getComputedStyle(e).position==="static"&&(this.restoreContainerPosition=e.style.position,e.style.position="relative")}restoreContainerStyle(){if(this.restoreContainerPosition!==null){try{Ui(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=Ui(this.options.container)}catch{return}this.renderOverlay(t,"error",e)}handleTryAgain(){if(this.options.onRequestRelaunch){this.options.onRequestRelaunch();return}this.mount()}renderOverlay(e,t,i){this.removeOverlay();let s=document.createElement("div");s.setAttribute("data-seatlayer-designer-overlay",t),s.setAttribute("role",t==="error"?"alert":"status"),s.setAttribute("aria-live","polite"),Object.assign(s.style,{position:"absolute",inset:"0",display:"flex",alignItems:"center",justifyContent:"center",background:"#101625",color:"#e6ebf5",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',zIndex:"2",overflow:"hidden"}),t==="loading"?this.buildSkeleton(s):this.buildErrorCard(s,i??"load"),e.append(s),this.overlay=s}buildSkeleton(e){let t=document.createElement("style");t.textContent=`
2635
2748
  @media (prefers-reduced-motion: no-preference) {
2636
2749
  @keyframes seatlayer-designer-shimmer {
2637
2750
  0% { background-position: -320px 0; }
@@ -2641,9 +2754,9 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
2641
2754
  animation: seatlayer-designer-shimmer 1.25s ease-in-out infinite;
2642
2755
  background-size: 640px 100%;
2643
2756
  }
2644
- }`,e.append(t);let i="linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.10) 37%, rgba(255,255,255,0.04) 63%)",n=document.createElement("div");Object.assign(n.style,{position:"absolute",inset:"0",display:"flex",flexDirection:"column",padding:"16px",gap:"14px",opacity:"0.9"});let r=c=>{let p=document.createElement("div");return p.className="sl-shimmer",Object.assign(p.style,{background:i,borderRadius:"8px"}),Object.assign(p.style,c),p};n.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%"})),n.append(o),e.append(n);let a=document.createElement("div");Object.assign(a.style,{position:"relative",zIndex:"1",display:"flex",alignItems:"center",gap:"10px",padding:"10px 16px",borderRadius:"999px",background:"rgba(16, 22, 37, 0.72)",fontSize:"13px",fontWeight:"500",letterSpacing:"0.01em"});let l=document.createElement("span");l.className="sl-shimmer",Object.assign(l.style,{width:"9px",height:"9px",borderRadius:"50%",background:i,flex:"0 0 auto"}),a.append(l),a.append(document.createTextNode("Loading designer\u2026")),e.append(a)}buildErrorCard(e,t){let i=za[t],n=document.createElement("div");Object.assign(n.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=i.title,Object.assign(r.style,{margin:"0 0 8px",fontSize:"17px",fontWeight:"600",color:"#f4f7ff"});let o=document.createElement("p");o.textContent=i.body,Object.assign(o.style,{margin:"0 0 20px",fontSize:"13.5px",lineHeight:"1.5",color:"#aab4c8"});let a=document.createElement("button");a.type="button",a.textContent="Try again",Object.assign(a.style,{appearance:"none",cursor:"pointer",border:"0",borderRadius:"10px",padding:"10px 22px",fontSize:"14px",fontWeight:"600",color:"#101625",background:"#7aa2ff"}),a.addEventListener("click",()=>this.handleTryAgain()),n.append(r,o,a),e.append(n)}};import{PickerController as ql,formatMoney as Kl,generateSeatThumb as Ul,getLocale as to,loadLocale as Wl,setStringOverrides as Yl,t as M,tCount as Fe}from"@seatlayer/core";import{isAuthoredSeatView as Ql,seatViewDisclosure as io}from"@seatlayer/core/view3d/crossfade/panorama";import{seatConfidenceDisclosure as Xl}from"@seatlayer/core/core/seatConfidence";function xn(s){return s?.previousPrice!=null&&s.previousPrice>s.price?s.previousPrice:null}function wn(s){return ja(s)+(s.moreLabel?`<button type="button" class="sl-price-more" aria-expanded="${!s.collapsed}">${s.esc(s.moreLabel)}</button>`:"")+Ga(s.status)}function ja(s){let{esc:e,money:t}=s;return s.categories.map(i=>{let n=s.priceOf(i),r=s.rangeOf(i),o=s.offerOf(i.key),a=xn(o),l=s.activeKey===i.key;return`<div class="sl-price-row${s.bandKeys!=null&&!s.bandKeys.has(i.key)?" sl-dim":""}${l?" sl-active":""}" data-cat="${e(i.key)}" role="button" tabindex="0" aria-pressed="${l}" title="${e(s.titleFor(i,l))}"><span class="sl-dot" style="--sl-cat-dot:${e(s.colorOf(i))}"></span><span class="sl-price-label">${e(i.label)}`+(o?.offerName?`<small class="sl-price-offer">${e(o.offerName)}</small>`:"")+`</span><span class="sl-price-left">${e(s.leftCount(s.left[i.key]??0))}</span>`+(a!=null?`<span class="sl-price-was">${e(t(a))}</span>`:"")+(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>`:n!=null?`<span class="sl-price-amt">${e(t(n))}</span>`:"")+"</div>"}).join("")}function Ga(s){let e=t=>t.replace(/[&<>"']/g,i=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[i]);return`<div class="sl-status-key" aria-label="${e(s.legend)}"><span class="sl-status-item"><i class="sl-status-icon 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(s.held)}</span><span class="sl-status-item"><i class="sl-status-icon sold" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M7 17L17 7"/></svg></i>${e(s.sold)}</span></div>`}function Fi(s){let e=Math.abs(s.scrollLeft),t=e>2,i=e+s.clientWidth<s.scrollWidth-2;return s.dataset.fadeStart=String(t),s.dataset.fadeEnd=String(i),{start:t,end:i}}function kn(s){let{esc:e,money:t}=s;return`<button type="button" class="sl-rc sl-rc-all" data-rail-all aria-pressed="${s.allActive}" title="${e(s.allWord)}"><span class="sl-rc-t">${e(s.allWord)}</span></button>`+s.categories.map(n=>{let r=s.rangeOf(n),o=s.priceOf(n),a=r?r.min===r.max?t(r.min):`${t(r.min)}+`:o!=null?t(o):null,l=Object.prototype.hasOwnProperty.call(s.left,n.key)&&s.left[n.key]<=0,c=xn(s.offerOf(n.key)),p=a?`${n.label} \u2014 ${a}${l?` (${s.soldOutWord})`:""}`:n.label;return`<button type="button" class="sl-rc" data-cat="${e(n.key)}" aria-pressed="${s.activeKey===n.key}" aria-label="${e(p)}" title="${e(p)}"${l?" disabled":""}><i class="sl-rc-dot" style="--sl-cat-dot:${e(s.colorOf(n))}"></i>`+(c!=null?`<span class="sl-rc-was">${e(t(c))}</span>`:"")+`<span class="sl-rc-t">${e(a??n.label)}</span></button>`}).join("")}function Sn(s,e){let t=s.map(a=>({key:a.key,range:e.rangeOf(a)})).filter(a=>a.range!=null);if(!t.length)return[];let i=[...new Map(t.map(a=>[`${a.range.min}:${a.range.max}`,a.range])).values()].sort((a,l)=>a.min-l.min||a.max-l.max);if(i.length<=5)return i.map(a=>({id:`p${a.min}-${a.max}`,label:a.min===a.max?e.money(a.min):`${e.money(a.min)}\u2013${e.money(a.max)}`,keys:t.filter(l=>l.range.min===a.min&&l.range.max===a.max).map(l=>l.key),min:a.min,max:a.max}));let n=[...t].sort((a,l)=>a.range.min-l.range.min||a.range.max-l.range.max),r=Math.ceil(n.length/4),o=[];for(let a=0;a<n.length;a+=r){let l=n.slice(a,a+r),c=Math.min(...l.map(d=>d.range.min)),p=Math.max(...l.map(d=>d.range.max));o.push({id:`b${a}`,label:c===p?e.money(c):`${e.money(c)}\u2013${e.money(p)}`,keys:l.map(d=>d.key),min:c,max:p})}return o}var qa=["on-sale","low","sold-out","presale","closed"];function Et(s){return s==null?null:typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0}function Cn(s){return s==null?null:typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0}function Tn(s){if(s==null)return null;if(typeof s!="object"||Array.isArray(s))return;let e=s,t=e.count,i=e.index;if(typeof i!="number"||!Number.isInteger(i)||i<1||typeof t!="number"||!Number.isInteger(t)||t<i)return;let n=e.remaining;if(n!=null&&(typeof n!="number"||!Number.isInteger(n)||n<0))return;let r={index:i,count:t,remaining:n??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=Cn(e[o]);if(a===void 0)return;r[o]=a}return r}function Ka(s){if(s==null)return null;if(typeof s!="object"||Array.isArray(s))return;let e=s;if(!Number.isInteger(e.assignmentVersion)||e.assignmentVersion<0||!Array.isArray(e.channels)||!Array.isArray(e.objects))return;let t=[],i=new Set;for(let o of e.channels){if(!o||typeof o!="object"||Array.isArray(o))return;let a=o,l=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||i.has(l)||!Number.isInteger(a.pricingVersion)||a.pricingVersion<0||!Array.isArray(a.priceOverrides))return;let c=[],p=new Set;for(let d of a.priceOverrides){if(!d||typeof d!="object"||Array.isArray(d))return;let u=d,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,m=Et(u.price);if(!h||g===void 0||m===void 0||m===null)return;let v=`${h}\0${g??""}`;if(p.has(v))return;p.add(v),c.push({categoryKey:h,tierId:g,price:m})}i.add(l),t.push({channelId:l,pricingVersion:a.pricingVersion,priceOverrides:c})}let n=[],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)||!i.has(c))return;r.add(l),n.push({label:l,channelId:c})}return{assignmentVersion:e.assignmentVersion,channels:t,objects:n}}function zi(s){if(!s||typeof s!="object"||Array.isArray(s))return null;let e=s,t=qa.find(p=>p===e.state);if(!t)return null;let i=Et(e.fromPrice),n=Et(e.previousPrice);if(i===void 0||n===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=Tn(e.release);if(o===void 0)return null;let a=e.upcoming===void 0?null:Tn(e.upcoming);if(a===void 0)return null;let l=[];if(e.prices!=null){if(!Array.isArray(e.prices))return null;let p=[];for(let d of e.prices){if(!d||typeof d!="object"||Array.isArray(d))return null;let u=d,h=typeof u.categoryKey=="string"?u.categoryKey.trim():"";if(!h)return null;let g=Et(u.price),m=Et(u.previousPrice);if(g==null||m===void 0)return null;let v={categoryKey:h,price:g,previousPrice:m};if(u.offerId!==void 0){if(typeof u.offerId!="string"||!u.offerId.trim())return null;v.offerId=u.offerId.trim()}if(u.offerName!==void 0){if(typeof u.offerName!="string"||!u.offerName.trim())return null;v.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;v.remaining=u.remaining==null?null:u.remaining}for(let k of["startsAt","endsAt"]){if(u[k]===void 0)continue;let S=Cn(u[k]);if(S===void 0)return null;v[k]=S}p.push(v)}l=p}let c=Ka(e.channelPricing);return c===void 0?null:{state:t,fromPrice:i,previousPrice:n,currency:r,release:o,upcoming:a,prices:l,channelPricing:c}}function En(s,e){if(!s)return null;let t=null,i=n=>{n!=null&&n>e&&(t===null||n<t)&&(t=n)};for(let n of[s.release,s.upcoming])i(n?.startsAt),i(n?.endsAt);for(let n of s.prices)i(n.startsAt),i(n.endsAt);return t}function ji(s){let e={};for(let t of s?.prices??[])e[t.categoryKey]=t.price;return e}import{compactRowLabel as Ua,t as Ne}from"@seatlayer/core";import{seatConfidenceDisclosure as Wa}from"@seatlayer/core/core/seatConfidence";function Gi(s){return String(s??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function w(s){return String(s??"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Se(s){return s?.restrictedView?y("picker.restrictedView","Restricted view"):s?.obstructedView?y("picker.obstructedView","Obstructed view"):""}function Pn(s){if(!s)return"";let e=[];s.premium&&e.push(`<div class="sl-cx-premium"><span class="sl-cx-star" aria-hidden="true">\u2605</span>${y("picker.premiumSeat","Premium seat")}</div>`);let t=Se(s);return t?e.push(`<div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u25D0</span><span class="sl-cx-txt"><b>${t}</b>${s.note?`<span class="sl-cx-note">${w(s.note)}</span>`:""}</span></div>`):s.note&&e.push(`<div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u2139</span><span class="sl-cx-txt"><span class="sl-cx-note">${w(s.note)}</span></span></div>`),e.length?`<div class="sl-cx">${e.join("")}</div>`:""}function qi(s){if(!s)return"";let e=[];if(s.premium){let i=w(y("picker.premiumSeat","Premium seat"));e.push(`<span class="sl-cx-mark sl-cx-mark-premium" role="img" aria-label="${i}" title="${i}">\u2605</span>`)}let t=Se(s);if(t){let i=w(s.note?`${t}: ${s.note}`:t);e.push(`<span class="sl-cx-mark sl-cx-mark-limited" role="img" aria-label="${i}" title="${i}">\u25D0</span>`)}else if(s.note){let i=w(s.note);e.push(`<span class="sl-cx-mark sl-cx-mark-info" role="img" aria-label="${i}" title="${i}">\u2139</span>`)}return e.join("")}function Ki(s){if(!s)return"";let e=[];s.premium&&e.push(`<span class="sl-chip-cx-tag premium"><span aria-hidden="true">\u2605</span>${y("picker.premiumSeat","Premium seat")}</span>`);let t=Se(s);return t&&e.push(`<span class="sl-chip-cx-tag limited"><span aria-hidden="true">\u25D0</span>${w(t)}</span>`),!e.length&&!s.note?"":'<div class="sl-chip-cx">'+(e.length?`<div class="sl-chip-cx-tags">${e.join("")}</div>`:"")+(s.note?`<div class="sl-chip-cx-note">${w(s.note)}</div>`:"")+"</div>"}function nt(s){return s==="no-seat"?y("picker.emptyWheelchairSpace","Empty wheelchair space"):s==="seat-present"?y("picker.accessiblePhysicalSeat","Accessible physical seat"):""}function Ln(s){let e=nt(s);return e?`<div class="sl-cx"><div class="sl-cx-warn"><span class="sl-cx-glyph" aria-hidden="true">\u267F</span><span class="sl-cx-txt"><b>${e}</b></span></div></div>`:""}function si(s){let e=nt(s);return e?`<span class="sl-cx-mark" role="img" aria-label="${e}" title="${e}">\u267F</span>`:""}function Ui(s,e){if(!s)return"";let t=e?y("picker.viewFromThisSeat","View from this seat"):y("picker.seeItIn3d","See it in 3D");return`<button type="button" class="sl-confirm-3d" aria-label="${t}"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2l9 5v10l-9 5-9-5V7z"/><path d="M12 12l9-5M12 12v10M12 12L3 7"/></svg><span>${t}</span></button>`}function Mn(s){if(!s)return"";let e=s.previous.label||s.previous.id,t=s.next.label||s.next.id;return`<span class="sl-seccard-nav" aria-label="${y("picker.browseSections","Browse sections")}"><button type="button" data-section-nav="${I(s.previous.id)}" aria-label="${y("picker.previousSection","Previous section")}: ${I(e)}" title="${I(e)}">\u2190</button><button type="button" data-section-nav="${I(s.next.id)}" aria-label="${y("picker.nextSection","Next section")}: ${I(t)}" title="${I(t)}">\u2192</button></span>`}function Hn(s,e){if(!e)return"";let t=e,i=t.includes(s.id),n=i?t.length>1?y("picker.openComparison","Open comparison"):y("picker.savedForComparison","Saved for comparison"):t.length?y("picker.compareWithSaved","Compare with saved"):y("picker.saveToCompare","Save to compare");return`<button type="button" class="sl-confirm-compare"${i&&t.length===1?" disabled":""}><span aria-hidden="true">\u21C4</span><span>${w(n)}</span></button>`}function In(s,e,t){if(!t)return"";let i=Wa(s.confidenceEvidence),n=i.modeledTarget??i.reality;return`<button type="button" class="sl-confirm-confidence" aria-label="Open seat confidence passport for ${w(s.displayLabel??s.label)}"><span><em>${w(e)}</em><strong>${w(i.headline)}</strong><small>${w(n)}</small></span><b>Passport</b></button>`}function U(s){let e=s?.rowLabel,t=s?.sectionLabel;if(!e||!t)return e;for(let i of["-"," ","\xB7","/","_"]){let n=`${t}${i}`;if(e.startsWith(n)&&e.length>n.length)return e.slice(n.length)}return Ua(e,t)}function Ya(s){switch(s){case"paused":return{title:y("picker.accessPausedTitle","These seats are on hold right now"),body:y("picker.accessPausedBody","The organizer has paused this selection. Try again in a few minutes."),action:y("picker.accessRetry","Try again")};case"revoked":return{title:y("picker.accessRevokedTitle","This access link is no longer active"),body:y("picker.accessRevokedBody","Ask whoever sent you here for a new link to keep booking these seats.")};case"no_token":case"provider_failed":return{title:y("picker.accessExpiredTitle","Your seat session has expired"),body:y("picker.accessExpiredBody","Reload the seat map to continue. Seats already in your cart stay held until the timer ends."),action:y("picker.accessRetry","Reload seat map")};default:return{title:y("picker.accessInvalidTitle","We couldn\u2019t verify your access"),body:y("picker.accessInvalidBody","You can still book anything shown as available. Contact whoever sent you here for access to the rest.")}}}function On(s,e,t){let i=Gi;return[s?.sectionLabel?`<div class="sl-confirm-field sl-confirm-sec"><span class="sl-confirm-key">${y("picker.section","Section")}</span><span class="sl-confirm-value">${i(s.sectionLabel)}</span></div>`:"",s?.rowLabel||s?.objectType==="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${i(t)}</span><span class="sl-confirm-value">${i(U(s)??s?.displayLabel??e)}</span></div>`:"",s?.objectType!=="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${y("picker.seat","Seat")}</span><span class="sl-confirm-value">${i(s?.seatNumber??s?.displayLabel??e)}</span></div>`:""].filter(Boolean).join("")}function Rn(s,e,t){let i=Gi,n=s?.objectType==="booth",r=s?.objectType==="table"&&!!s?.bookingMode,o=n||r||!s?.seatNumber,a=s?.sectionLabel??(o?void 0:s?.displayLabel),l=r?`${y("picker.guests","Guests")} ${s?.bookingMode==="variable"?`${s?.minOccupancy}\u2013${s?.maxOccupancy}`:s?.capacity}`:void 0,p=(o?[l,a?s?.rowLabel??s?.displayLabel:void 0]:[s?.rowLabel?`${t} ${U(s)??""}`.trim():void 0,`${y("picker.seat","Seat")} ${s?.seatNumber??e}`]).filter(Boolean).join(" \xB7 ");return(a?`<span class="sl-confirm-place">${i(a)}</span>`:"")+(p?`<span class="sl-confirm-pos">${a?" \xB7 ":""}${i(p)}</span>`:"")+(a||p?"":`<span class="sl-confirm-pos">${i(e)}</span>`)}function _n(s,e){if(!s)return"";let t=e?y("picker.viewFromThisSeat","View from this seat"):y("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 An(s){return s.buyerMessage?.trim()||(s.restriction==="companion"?y("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):void 0)}function Dn(s,e,t){let i=Gi;if(s.length>1)return`<fieldset class="sl-confirm-tiers"><legend>${y("picker.ticketType","Ticket type")}</legend>`+s.map(o=>{let a=An(o);return`<button type="button" class="sl-confirm-tier" data-confirm-tier="${i(o.id)}" aria-pressed="${o.id===e}"><span class="sl-confirm-tier-copy"><span class="sl-confirm-tier-name">${i(o.name)}</span>`+(a?`<small class="sl-confirm-tier-note">${i(a)}</small>`:"")+`</span><span class="sl-confirm-tier-price">${i(t(o))}</span></button>`}).join("")+"</fieldset>";let n=s[0],r=n?An(n):void 0;return r?`<p class="sl-confirm-tier-note">${i(r)}</p>`:""}function Wi(s){return`<span class="sl-seccard-dot" style="background:${w(s.color)}"></span><span class="sl-seccard-name">${w(s.label)}</span><span class="sl-seccard-left" data-full="${w(s.leftLabel)}" data-short="${w(s.leftShortLabel??s.leftLabel)}">${w(s.leftLabel)}</span>`+s.nav+s.close}function Bn(s){return`<div class="sl-seccard-head"><span class="sl-seccard-dot" style="background:${w(s.color)}"></span><span class="sl-seccard-name">${w(s.label)}</span>`+(s.showPrice?`<span class="sl-seccard-price">${w(s.priceLabel)}</span>`:"")+s.close+`</div><div class="sl-seccard-zone">${s.zoneLabel?`${w(s.zoneLabel)} \xB7 `:""}<span class="sl-seccard-left">${w(s.leftLabel)}</span></div>`+(s.entrance?`<div class="sl-seccard-entrance">${w(s.entrance)}</div>`:"")+(s.mix?`<div class="sl-seccard-mix">${s.mix}</div>`:"")+`<div class="sl-seccard-foot"><button type="button" class="sl-seccard-overview">\u2190 ${w(s.overviewLabel)}</button>`+s.nav+`<span class="sl-seccard-hint">${w(s.hint)}</span></div>`}function Nn(s){return`<span class="sl-seccard-mix-item${s.dim?" sl-dim":""}"><span class="sl-seccard-mix-dot" style="background:${w(s.color)}"></span>${w(s.label)} <span class="sl-seccard-mix-price">${w(s.rangeLabel)}</span></span>`}function $n(s){return'<div class="sl-confirm-grid">'+s.identityFields+`</div><div class="sl-confirm-cat"><span class="sl-dot" style="background:${w(s.categoryColor)}"></span><span class="sl-confirm-cat-name">${w(s.categoryLabel)}</span>`+(s.categoryLeftLabel?`<span class="sl-confirm-left">${w(s.categoryLeftLabel)}</span>`:"")+(s.priceLabel?`<span class="sl-confirm-price">${w(s.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-id">'+s.marker+`<span class="sl-confirm-dot" style="background:${w(s.categoryColor)}" aria-hidden="true"></span><span class="sl-sr">${w(s.categoryLabel)}</span><span class="sl-confirm-who">`+s.identity+"</span>"+(s.priceLabel?`<span class="sl-confirm-idprice">${w(s.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-body">'+s.tierChoices+s.groupDates+s.wheelchair+s.commercial+(s.thumb||s.see3dPill?`<div class="sl-confirm-strip">${s.thumb}<span class="sl-confirm-pills">${s.see3dPill}</span></div>`:"")+s.inspect+`<div class="sl-confirm-row"><button type="button" class="sl-confirm-cancel">${w(s.cancelLabel)}</button><button type="button" class="sl-confirm-add"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12.5l4 4L19 7"/></svg><span class="sl-confirm-add-t">${w(s.selectLabel)}</span></button></div></div>`}function Vn(s,e){let t=I,{variable:i}=e;return`<section class="sl-table-dialog" role="dialog" aria-modal="true" aria-labelledby="sl-table-title" aria-describedby="sl-table-copy"><div class="sl-table-head"><div class="sl-table-eyebrow">${t(i?Ne("picker.flexiblePartyTypeWord",{typeWord:e.typeWord}):Ne("picker.wholeTypeWord",{typeWord:e.typeWord}))}</div><h2 class="sl-table-title" id="sl-table-title">${t(s.displayLabel??s.label)}</h2><p class="sl-table-copy" id="sl-table-copy">${t(i?y("picker.chooseGuestsCopy","Choose how many guests will sit together. This table is held exclusively for your party."):Ne("picker.allPlacesBookedTogether",{count:s.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(Ne("picker.perGuestPrice",{price:e.unitPrice}))}</b>`)+`<span class="muted">${t(y("picker.tableCapacity","Table capacity"))}</span><span>${t(Ne("picker.guestsCount",{count:s.capacity}))}</span>`+(e.suppressPricing?"":`<span class="muted">${t(y("picker.total","Total"))}</span><b data-table-total></b>`)+"</div>"+(i?`<label class="sl-table-qtylabel" id="sl-table-qty-label">${t(y("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(y("picker.fewerGuests","Fewer guests"))}">\u2212</button><output aria-live="polite" data-table-qty>${s.quantity}</output><button type="button" data-table-step="1" aria-label="${t(y("picker.moreGuests","More guests"))}">+</button></div><div class="sl-table-range">${t(Ne("picker.chooseMinMaxGuests",{min:s.minOccupancy,max:s.maxOccupancy}))}</div>`:`<input type="hidden" data-table-qty value="${s.capacity}">`)+`<div class="sl-table-actions"><button type="button" class="sl-table-cancel">${t(Ne("common.cancel"))}</button><button type="button" class="sl-table-confirm">${t(e.held?y("picker.updateTable","Update table"):i?y("picker.selectTable","Select table"):y("picker.selectWholeTable","Select whole table"))}</button></div></div></section>`}function Fn(s,e){let t=Ya(s),i=document.createElement("div");i.className="sl-access",i.setAttribute("role","status"),i.setAttribute("aria-live","polite");let n=document.createElement("div");n.className="sl-access-card";let r=document.createElement("span");r.className="sl-access-icon",r.setAttribute("aria-hidden","true"),r.textContent="\u21BB";let o=document.createElement("div");o.className="sl-access-copy";let a=document.createElement("div");a.className="sl-access-title",a.textContent=t.title;let l=document.createElement("div");if(l.className="sl-access-body",l.textContent=t.body,o.append(a,l),t.action){let c=document.createElement("button");c.type="button",c.className="sl-access-act";let p=document.createElement("span");p.className="sl-access-act-icon",p.setAttribute("aria-hidden","true"),p.textContent="\u21BB";let d=document.createElement("span");d.textContent=t.action,c.append(p,d),c.addEventListener("click",async()=>{i.classList.add("is-reloading"),c.disabled=!0;try{await e()}catch{}finally{i.isConnected&&(i.classList.remove("is-reloading"),c.disabled=!1)}}),o.appendChild(c)}return n.append(r,o),i.appendChild(n),i}function zn(s){return s.map(e=>`<button type="button" role="switch" class="sl-a11yrow${e.className?` ${e.className}`:""}${e.on?" on":""}" data-a11y-row="${w(e.key)}" aria-checked="${e.on}" aria-pressed="${e.on}"`+(e.disabled?' disabled aria-disabled="true"':"")+`><span class="sl-a11yrow-i" aria-hidden="true">${w(e.icon)}</span><span class="sl-a11yrow-t"><span class="sl-a11yrow-l">${w(e.label)}</span>`+(e.note?`<span class="sl-a11yrow-n">${w(e.note)}</span>`:"")+"</span>"+(e.count?`<span class="sl-a11yrow-c">${w(e.count)}</span>`:"")+'<span class="sl-a11yrow-s" aria-hidden="true"></span></button>').join("")}function jn(s){let e=document.createElement("div");e.className="sl-floors on",e.setAttribute("role","group"),e.setAttribute("aria-label",s.tf("picker.chooseLevel","Choose level"));let t=[{id:"",name:s.tf("picker.allFloors","All floors")},...s.floors.map(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",()=>s.onChoose(r.id)),e.appendChild(o)}let i=document.createElement("button");i.type="button",i.className="sl-floor-info",i.textContent="i";let n=s.tf("picker.floorHelp","All floors shows the complete venue. Choose one level to inspect and select its seats.");return i.setAttribute("aria-label",n),i.title=n,e.appendChild(i),e}function Gn(s,e,t){if(!s)return;let i=t?"":e;s.querySelectorAll("button[data-floor]").forEach(n=>{n.setAttribute("aria-pressed",String(n.dataset.floor===i))})}import{t as ce,tCount as Qa}from"@seatlayer/core";var ni=class{constructor(e){this.el=null;this.stripObserver=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?.classList.contains("strip")?Me(this.el,void 0,Vs):this.el?.remove(),this.el=null,this.syncLocatorDock(),this.host.refreshMinimap();return}this.collapsed=this.host.controller.getRung()==="seats",this.shownAt=Date.now(),this.render(e),this.host.refreshMinimap()}updateDockInPlace(e,t){let i=this.el;if(!i)return;let n=i.querySelector(".sl-seccard-dot");n&&(n.style.background=e.color);let r=i.querySelector(".sl-seccard-name");r&&Li(r,e.label);let o=i.querySelector(".sl-seccard-left");o&&(o.dataset.full=t.leftLabel,o.dataset.short=t.leftShortLabel,Li(o,t.leftLabel));let a=i.querySelector(".sl-seccard-nav");t.nav?(a?a.outerHTML=t.nav:i.querySelector(".sl-seccard-x")?.insertAdjacentHTML("beforebegin",t.nav),this.wireNavigation(i)):a&&a.remove(),i.setAttribute("aria-label",`${ce("picker.sectionSummaryAria",{label:e.label})}, ${t.leftLabel}`),this.fitStripCount()}wireNavigation(e){e.querySelectorAll("[data-section-nav]").forEach(t=>{t.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation();let n=t.dataset.sectionNav;n&&this.host.controller.focusSection(n)})})}render(e){let t=this.host.map();if(!t)return;let i=this.el?.classList.contains("strip")===!0&&this.el.isConnected,n=e.categories.length?e.categories.map(v=>{let k=this.host.controller.doc?.categories.find(S=>S.key===v.key);return k?this.host.catPriceRange(k):{min:v.priceMin,max:v.priceMax}}).filter(v=>v!=null):[{min:e.priceMin,max:e.priceMax}],r=Math.min(...n.map(v=>v.min)),o=Math.max(...n.map(v=>v.max)),a=r===o?this.host.money(r):`${this.host.money(r)}\u2013${this.host.money(o)}`,l=Qa("picker.seatsLeftInSection",e.seatsLeft),c=ce("picker.seatsLeftShort",{count:e.seatsLeft}),p=`<button type="button" class="sl-seccard-x" aria-label="${ce("picker.closeSectionSummary")}">\u2715</button>`,d=`<button type="button" class="sl-seccard-x sl-seccard-back" aria-label="${ce("picker.closeSectionSummary")}"><span class="sl-seccard-back-chev" aria-hidden="true">\u2039</span>${I(ce("picker.overview"))}</button>`,u=Mn(this.host.sectionNeighbours(e.id)),h=this.host.root()?.dataset.layout==="narrow",g={label:e.label,color:e.color,leftLabel:l,leftShortLabel:c,nav:u,close:p};if(h&&i&&this.el){this.updateDockInPlace(e,{leftLabel:l,leftShortLabel:c,nav:u});return}this.el?.remove();let m=document.createElement("div");if(h){if(m.className=i?"sl-seccard strip on":"sl-seccard strip on sl-mo-slide-up",m.setAttribute("role","group"),m.setAttribute("aria-label",`${ce("picker.sectionSummaryAria",{label:e.label})}, ${l}`),m.innerHTML=Wi({...g,close:d}),i)for(let v of m.querySelectorAll(".sl-seccard-name,.sl-seccard-left"))v.classList.add("sl-mo-xfade");this.wireNavigation(m),m.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),t.appendChild(m),this.fitStripCount()}else if(this.collapsed)m.className="sl-seccard mini on",m.setAttribute("role","button"),m.setAttribute("aria-label",ce("picker.sectionSummaryAria",{label:e.label})),m.innerHTML=Wi(g),this.wireNavigation(m),m.addEventListener("click",v=>{v.target.closest(".sl-seccard-x")||(this.collapsed=!1,this.shownAt=Date.now(),this.render(e))}),m.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(m);else{m.className="sl-seccard on",m.setAttribute("role","dialog"),m.setAttribute("aria-label",ce("picker.sectionSummaryAria",{label:e.label}));let v=this.host.priceBandKeys(),k=this.host.suppressPricing(),S=e.categories.map(L=>{let b=this.host.controller.doc?.categories.find(x=>x.key===L.key),A=b?this.host.catPriceRange(b):{min:L.priceMin,max:L.priceMax};return Nn({label:L.label,color:L.color,dim:v!=null&&!v.has(L.key),rangeLabel:k?"":A&&A.min!==A.max?`${this.host.money(A.min)}\u2013${this.host.money(A.max)}`:this.host.money(A?.min??L.price)})}).join("");m.innerHTML=Bn({...g,priceLabel:a,showPrice:!k&&e.categories.length>0,zoneLabel:e.zoneLabel,entrance:e.entrance?`${ce("picker.entrance")} ${e.entrance}`:void 0,mix:S,overviewLabel:ce("picker.overview"),hint:ce("picker.tapSeatHint")}),this.wireNavigation(m),m.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),m.querySelector(".sl-seccard-overview").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(m)}this.el=m,h&&this.watchStrip(m),this.syncLocatorDock()}syncLocatorDock(){let e=this.host.root();e&&(this.el?.classList.contains("strip")?e.dataset.locator="true":delete e.dataset.locator)}fitStripCount(){let e=this.el;if(!e||!e.classList.contains("strip"))return;let t=e.querySelector(".sl-seccard-left");if(!t)return;let i=e.querySelector(".sl-seccard-name"),n=c=>c!=null&&c.clientWidth>0&&c.scrollWidth>c.clientWidth+1,r=()=>{let c=e.clientWidth;if(c<=0)return!0;let p=typeof getComputedStyle=="function"?getComputedStyle(e):null,d=m=>{let v=Number.parseFloat(m??"");return Number.isFinite(v)?v:0},u=[...e.children].filter(m=>m instanceof HTMLElement&&!m.hidden),h=d(p?.columnGap)||d(p?.gap);return u.reduce((m,v)=>m+Math.max(v.scrollWidth,v.getBoundingClientRect().width),0)+h*Math.max(0,u.length-1)+d(p?.paddingLeft)+d(p?.paddingRight)<=c+1},o=()=>t.hidden||!n(t)&&r(),a=c=>{if(t.hidden=c==="hidden",c==="hidden")return;let p=t.dataset.full??"";t.textContent=c==="full"?p:t.dataset.short??p},l=["full","short","hidden"];for(let c of l)if(a(c),o()&&!n(i))return;for(let c of l)if(a(c),o())return;a("hidden")}watchStrip(e){this.stripObserver?.disconnect(),this.stripObserver=null,typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{this.el===e&&this.fitStripCount()}),typeof ResizeObserver=="function"&&(this.stripObserver=new ResizeObserver(()=>{this.el===e&&this.fitStripCount()}),this.stripObserver.observe(e))}collapse(){!this.el||this.collapsed||!this.current||this.host.root()?.dataset.layout!=="narrow"&&(this.collapsed=!0,this.render(this.current))}onView(){if(!(!this.el||this.collapsed||!this.current)&&this.host.root()?.dataset.layout!=="narrow"){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,i=this.host.map();if(!e||!t||!i)return 0;let n=this.host.activeFloorObjects().find(S=>S.type==="section"&&S.id===t.id)?.outline;if(!n||n.length<3)return 0;let r=n.map(S=>this.host.controller.worldToScreen(S)),o=r.map(S=>S.x),a=r.map(S=>S.y),l=Math.min(...o),c=Math.min(...a),p=Math.max(...o)-l,d=Math.max(...a)-c;if(p<=0||d<=0)return 0;let u=i.getBoundingClientRect(),h=e.getBoundingClientRect(),g=h.left-u.left,m=h.top-u.top,v=Math.max(0,Math.min(g+h.width,l+p)-Math.max(g,l)),k=Math.max(0,Math.min(m+h.height,c+d)-Math.max(m,c));return v*k/(p*d)}};import{pointInPolygon as Xa}from"@seatlayer/core";import{createMinimapTransform as Za,minimapPointToWorld as Ja,minimapViewportPlan as el}from"@seatlayer/core/picker/minimapGeometry";function qn(s,e){let t=new Yi(s);return t.build(e),t}var Yi=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 i=document.createElement("button");i.type="button",i.className="sl-minimap-toggle",i.setAttribute("aria-label",y("picker.openVenueMap","Open venue overview map")),i.setAttribute("aria-expanded","false"),i.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6l5-2 8 3 5-2v13l-5 2-8-3-5 2zM8 4v13M16 7v13"/></svg>',e.appendChild(i),this.miniToggle=i;let n=document.createElement("div");n.className="sl-minimap",n.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",y("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",y("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",y("picker.venueMapInstructions","Venue overview map. Drag the viewport, click a section, or use arrow keys to pan.")),n.append(r,c),e.appendChild(n),this.miniWrap=n,this.miniLabel=o,this.miniCanvas=c;let p=document.createElement("canvas");this.miniBase=p,i.addEventListener("click",()=>{let d=this.host.root()?.dataset.minimapOpen==="true";this.userClosed=d,this.setMinimapOpen(!d)}),l.addEventListener("click",()=>{this.userClosed=!0,this.setMinimapOpen(!1)}),c.addEventListener("click",d=>{if(this.miniSuppressClick){this.miniSuppressClick=!1;return}this.minimapJump(d)}),c.addEventListener("pointerdown",d=>this.minimapPointerDown(d)),c.addEventListener("pointermove",d=>this.minimapPointerMove(d)),c.addEventListener("pointerup",d=>this.minimapPointerUp(d)),c.addEventListener("pointercancel",d=>this.minimapPointerUp(d)),c.addEventListener("keydown",d=>this.minimapKeydown(d)),this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect()}setAutoOpen(e){if(this.miniWrap){if(!e){this.userClosed=!1,this.host.root()?.dataset.minimapOpen==="true"&&this.setMinimapOpen(!1,!1);return}this.userClosed||this.host.root()?.dataset.minimapOpen==="true"||this.setMinimapOpen(!0,!1)}}setMinimapOpen(e,t=!0){this.host.root()?.setAttribute("data-minimap-open",String(e)),this.miniToggle?.setAttribute("aria-expanded",String(e)),t&&(e?this.miniCanvas?.focus():this.miniToggle?.focus())}layoutMinimap(){let e=this.miniCanvas,t=this.miniBase,i=this.host.controller.getViewport()?.bounds;if(!e||!t||!i||!(i.width>0&&i.height>0))return;let n=196,r=146,o=6,a=i.width/Math.max(1,i.height),l=n,c=Math.round(n/a);c>r&&(c=r,l=Math.round(r*a)),l=Math.max(64,l),c=Math.max(48,c);let p=Math.min(2,window.devicePixelRatio||1);e.width=Math.round(l*p),e.height=Math.round(c*p),e.style.width=`${l}px`,e.style.height=`${c}px`,t.width=e.width,t.height=e.height,this.miniTf=Za(i,e.width,e.height,p,o)}syncMinimapLabel(){if(!this.miniLabel||!this.miniWrap)return;let e=this.host.controller.getFloors(),t=this.host.controller.isFloorOverview()?y("picker.allFloors","All floors"):e.find(p=>p.id===this.host.controller.getActiveFloorId())?.name??y("picker.venueOverview","Venue overview"),i=this.host.controller.getMinimapSnapshot().sections,r=i.find(p=>p.active)?.label??this.host.focusedSectionLabel(),o=r?`${t} \xB7 ${r}`:t;this.miniLabel.textContent=o;let a=i.filter(p=>p.state==="selected").length,l=i.filter(p=>p.state==="available").length,c=i.filter(p=>p.state==="inactive").length;this.miniWrap.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections.`:o),this.miniCanvas?.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections. ${y("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click a section, or use arrow keys to pan.")}`:`${o}. ${y("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click elsewhere, or use arrow keys to pan.")}`)}refreshMinimap(){this.miniBase&&(this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect())}drawMinimapStatic(){let e=this.miniBase,t=this.miniTf;if(!e||!t)return;let i=e.getContext("2d");if(!i)return;i.clearRect(0,0,e.width,e.height);let n=d=>d*t.scale+t.offX,r=d=>d*t.scale+t.offY,o=this.host.cssVar("--sl-line")||"rgba(139,147,167,.5)",a=this.host.cssVar("--sl-muted")||"#8b93a7",l=this.host.cssVar("--sl-accent")||"#6e7bff",c=this.host.cssVar("--sl-success")||"#22a06b",p=this.host.controller.getMinimapSnapshot();for(let d of p.sections){if(d.outline.length<3)continue;i.beginPath(),d.outline.forEach((h,g)=>g===0?i.moveTo(n(h.x),r(h.y)):i.lineTo(n(h.x),r(h.y))),i.closePath();let u=d.paint;if(i.globalAlpha=d.state==="inactive"?.5:.92,u?i.fillStyle=u.fill:(i.globalAlpha=d.state==="inactive"?.18:d.state==="selected"?.72:.34,i.fillStyle=d.state==="inactive"?a:d.state==="selected"?l:c),i.fill(),i.globalAlpha=.82,i.lineWidth=Math.max(1,t.dpr),i.strokeStyle=u?.stroke||o,i.stroke(),d.owned){i.globalAlpha=1,i.lineWidth=Math.max(2,t.dpr*1.5),i.strokeStyle=l,i.stroke();let h=d.outline.reduce((g,m)=>({x:g.x+m.x,y:g.y+m.y}),{x:0,y:0});i.beginPath(),i.arc(n(h.x/d.outline.length),r(h.y/d.outline.length),Math.max(1.5,t.dpr*1.6),0,Math.PI*2),i.fillStyle=l,i.fill(),i.beginPath(),d.outline.forEach((g,m)=>m===0?i.moveTo(n(g.x),r(g.y)):i.lineTo(n(g.x),r(g.y))),i.closePath()}d.active&&(i.globalAlpha=1,i.lineJoin="round",i.lineWidth=Math.max(4,t.dpr*3.5),i.strokeStyle=this.host.cssVar("--sl-surface")||"#fff",i.stroke(),i.lineWidth=Math.max(2,t.dpr*1.75),i.strokeStyle=l,i.stroke())}if(i.globalAlpha=1,!p.sections.length){let d=Math.max(1,t.dpr),u=this.host.controller.getRenderer?.(),h=new Map,g=m=>{let v=h.get(m);if(v)return v;let k=u?.categoryDisplayColor?.(m)||c;return h.set(m,k),k};for(let m of p.seats)i.globalAlpha=m.state==="inactive"?.22:.78,i.fillStyle=m.state==="inactive"?a:m.state==="selected"?l:g(m.categoryKey),i.beginPath(),i.arc(n(m.x),r(m.y),d,0,Math.PI*2),i.fill();i.globalAlpha=1}}drawMinimapRect(){let e=this.miniCanvas,t=this.miniBase,i=this.miniTf;if(!e||!t||!i)return;let n=e.getContext("2d");if(!n)return;n.clearRect(0,0,e.width,e.height),n.drawImage(t,0,0);let r=this.host.controller.getViewport();if(!r)return;let o=el(r.visible,i,e.width,e.height,Math.max(2,i.dpr*2)),a=this.host.cssVar("--sl-text")||"#12151c",l=this.host.cssVar("--sl-surface")||"#fff";n.save(),n.globalAlpha=.1,n.fillStyle=a,n.fillRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),n.globalAlpha=.9,n.lineJoin="round",n.lineWidth=Math.max(4,i.dpr*3.25),n.strokeStyle=l,n.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),n.globalAlpha=1,n.lineWidth=Math.max(2,i.dpr*1.75),n.strokeStyle=a,n.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),o.clipped&&Object.values(o.clippedEdges).some(Boolean)&&(n.setLineDash([Math.max(3,i.dpr*3),Math.max(2,i.dpr*2)]),n.strokeRect(o.clipped.x,o.clipped.y,o.clipped.width,o.clipped.height)),n.restore()}minimapWorldPoint(e){let t=this.miniCanvas,i=this.miniTf;if(!t||!i)return null;let n=t.getBoundingClientRect(),r=(e.clientX-n.left)*(t.width/Math.max(1,n.width)),o=(e.clientY-n.top)*(t.height/Math.max(1,n.height));return{...Ja({x:r,y:o},i),px:r,py:o}}minimapPointerDown(e){let t=this.minimapWorldPoint(e),i=this.host.controller.getViewport()?.visible;!t||!i||!(t.x>=i.x&&t.x<=i.x+i.width&&t.y>=i.y&&t.y<=i.y+i.height)||(this.miniDrag={pointerId:e.pointerId,offsetX:t.x-(i.x+i.width/2),offsetY:t.y-(i.y+i.height/2),startX:e.clientX,startY:e.clientY,moved:!1},this.miniCanvas?.setPointerCapture(e.pointerId),this.miniCanvas?.classList.add("sl-dragging"),e.preventDefault())}minimapPointerMove(e){let t=this.miniDrag;if(!t||t.pointerId!==e.pointerId)return;let i=this.minimapWorldPoint(e);i&&(!t.moved&&Math.hypot(e.clientX-t.startX,e.clientY-t.startY)>2&&(t.moved=!0,this.host.controller.clearSectionFocus()),this.host.controller.panToWorld({x:i.x-t.offsetX,y:i.y-t.offsetY}),e.preventDefault())}minimapPointerUp(e){let t=this.miniDrag;!t||t.pointerId!==e.pointerId||(this.miniSuppressClick=t.moved,this.miniDrag=null,this.miniCanvas?.classList.remove("sl-dragging"),this.miniCanvas?.hasPointerCapture(e.pointerId)&&this.miniCanvas.releasePointerCapture(e.pointerId))}minimapKeydown(e){let t=this.host.controller.getViewport()?.visible;if(!t)return;if(e.key==="Home"){this.host.controller.overview(),e.preventDefault();return}let i=e.key==="ArrowLeft"?-t.width*.2:e.key==="ArrowRight"?t.width*.2:0,n=e.key==="ArrowUp"?-t.height*.2:e.key==="ArrowDown"?t.height*.2:0;!i&&!n||(this.host.controller.clearSectionFocus(),this.host.controller.panToWorld({x:t.x+t.width/2+i,y:t.y+t.height/2+n}),e.preventDefault())}minimapJump(e){let t=this.minimapWorldPoint(e);if(t){for(let i of this.host.controller.getMinimapSnapshot().sections)if(!(i.state==="inactive"||i.outline.length<3)&&Xa(t,i.outline)){this.host.controller.focusSection(i.id);return}this.host.controller.clearSectionFocus(),this.host.controller.panToWorld(t)}}};import{t as Qi}from"@seatlayer/core";var tl=12;function Kn(s,e){let t=e.floors(),i=new Set(t.map(x=>x.label.trim().toLocaleLowerCase())),n=e.zones().filter(x=>x.seatCount>0&&!i.has(x.label.trim().toLocaleLowerCase())),r=e.sections().filter(x=>x.seatCount>0&&!i.has(x.label.trim().toLocaleLowerCase())),o=n.length>1?[]:r,a=t.length>1,l=n.length>1,c=o.length>1;if(!a&&!l&&!c)return null;let p=document.createElement("div");p.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 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 m=()=>{for(let x of p.querySelectorAll(":scope > div")){let H=x.querySelector('[aria-pressed="true"]');!H||x.scrollWidth<=x.clientWidth||H.scrollIntoView({block:"nearest",inline:"nearest"})}},v=()=>{if(d)return d;for(let x of p.querySelectorAll(":scope > div")){let H=x.querySelector('button[aria-pressed="true"]'),_=H?.textContent?.trim();if(_&&H?.dataset.floor!=="")return _}return a&&(l||c)?y("picker.levelsAndAreas","Levels & areas"):a?y("picker.levels","Levels"):y("picker.areas","Areas")},k=x=>{p.classList.toggle("is-open",x),u.setAttribute("aria-expanded",String(x)),x&&typeof requestAnimationFrame=="function"&&requestAnimationFrame(m),g.textContent=v()};u.addEventListener("click",()=>k(!p.classList.contains("is-open"))),p.addEventListener("keydown",x=>{x.key!=="Escape"||!p.classList.contains("is-open")||(x.preventDefault(),x.stopPropagation(),k(!1),u.focus())});let S=document.createElement("button");S.type="button",S.className="sl-view3d-nav-close",S.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12"/></svg>';let L=y("picker.closeVenueNavigation","Close venue navigation");S.setAttribute("aria-label",L),S.title=L,S.addEventListener("click",()=>{k(!1),u.focus()}),k(!1),p.appendChild(u);let b=x=>{},A=x=>{};if(a){let x=document.createElement("div");x.setAttribute("role","group"),x.setAttribute("aria-label",y("picker.levels","Levels"));let H=[];A=O=>{H.forEach(B=>{B.setAttribute("aria-pressed",String((B.dataset.floor===""?null:Number(B.dataset.floor))===O))})};let _=O=>{e.focusFloor(O)&&(A(O),b(O))},T=(O,B)=>{let V=document.createElement("button");V.type="button",V.textContent=O,V.dataset.floor=B===null?"":String(B),V.setAttribute("aria-pressed",String(B===null)),V.addEventListener("click",()=>{_(B),k(!1)}),H.push(V),x.appendChild(V)};T(y("picker.allLevels","All levels"),null);for(let O of t)T(O.label||Qi("picker.levelNumber",{number:O.index+1}),O.index);p.appendChild(x)}if(l||c){let x=document.createElement("div");x.setAttribute("role","group"),x.setAttribute("aria-label",y("picker.areas","Areas"));let H=l?n.map(T=>({id:T.id,label:T.label||T.id,go:()=>{e.focusZone(T.id)}})):o.map(T=>({id:T.id,label:T.label||T.id,floorIndex:T.floorIndex,go:()=>{e.focusSection(T.id),Number.isFinite(T.floorIndex)&&A(T.floorIndex)}})),_=T=>{let O=l||T===null?H:H.filter(B=>B.floorIndex===void 0||B.floorIndex===T);if(x.replaceChildren(),!O.length){x.remove();return}if(x.isConnected||p.insertBefore(x,S.isConnected?S:null),!l&&O.length>tl){let B=document.createElement("select");B.setAttribute("aria-label",y("picker.jumpToSection","Jump to section"));let V=document.createElement("option");V.value="",V.textContent=y("picker.jumpToSection","Jump to section"),B.appendChild(V);for(let ie of O){let ne=document.createElement("option");ne.value=ie.id,ne.textContent=ie.label,B.appendChild(ne)}B.addEventListener("change",()=>{O.find(ie=>ie.id===B.value)?.go()}),x.appendChild(B);return}for(let B of O){let V=document.createElement("button");V.type="button",V.textContent=B.label,V.dataset.area=B.id,V.addEventListener("click",()=>{d=B.label,B.go(),k(!1)}),x.appendChild(V)}};b=_,_(null)}return p.appendChild(S),s.appendChild(p),p}var ri=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",y("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(y("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",y("picker.clearSavedSeatComparison","Clear saved seat comparison")),o.addEventListener("click",()=>this.host.clearComparison()),t.append(r,o),e.appendChild(t),this.chip=t}let i=this.host.savedSeatIds().length,n=t.querySelector(".main");n&&(n.textContent=i>1?Qi("picker.compareCount",{count:i}):y("picker.oneSeatSaved","1 seat saved"),n.setAttribute("aria-label",i>1?Qi("picker.openComparisonOfSeats",{count:i}):y("picker.oneSeatSavedChooseAnother","One seat saved; choose another to compare")))}remove(){this.chip?.remove(),this.chip=null}mainButton(){return this.chip?.querySelector(".main")??null}};function Un(s){return!s?.querySelector('[data-ref="zfs"]')}import{t as Wn}from"@seatlayer/core";var il=900,sl=450;function nl(s){switch(s){case"seat":return y("picker.stopYourSeat","Your seat");case"row":return y("picker.stopYourRow","Your row");case"section":return y("picker.stopYourSection","Your section");default:return y("picker.stopWholeVenue","Whole venue")}}function Yn(s,e){let t=document.createElement("button");t.type="button",t.className="sl-view3d-recentre sl-mo-rotate-in",t.textContent="\u25CE";let i=y("picker.recentreOnStage","Recentre on the stage");t.setAttribute("aria-label",i),t.title=i,t.addEventListener("click",()=>{e.handle()?.recentreSeatView()});let n=document.createElement("div");n.className="sl-view3d-stop",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),s.append(t,n);let r=null,o=null;return{onStopChange(a){if(r&&(clearTimeout(r),r=null),o&&(clearTimeout(o),o=null),!a){n.classList.remove("is-shown"),n.textContent="",o=setTimeout(()=>{o=null,s.classList.remove("is-seat-view")},sl);return}s.classList.add("is-seat-view"),n.textContent=nl(a),n.classList.add("is-shown"),r=setTimeout(()=>{r=null,n.classList.remove("is-shown")},il)},dispose(){r&&(clearTimeout(r),r=null),o&&(clearTimeout(o),o=null),t.remove(),n.remove(),s.classList.remove("is-seat-view")}}}var rl=44,ol=92;function Qn(s,e,t,i={}){let n=s?.sectionLabel,r=U(s),o=al(s,e),a=[n,r?Wn("picker.rowLabel",{label:r}):null,o?Wn("picker.seatLabel",{label:o}):null].filter(Boolean).join(" \xB7 "),l=i.maxChars??(i.narrow?rl:ol);for(let c of[t,i.shortTail??t,null]){let p=[a,c].filter(Boolean).join(" \xB7 ");if(p.length<=l||c==null)return p}return a}function al(s,e){if(s?.seatNumber)return s.seatNumber;let t=s?.displayLabel??e,i=n=>{!n||!t.startsWith(n)||t.length<=n.length||(t=t.slice(n.length).replace(/^[\s·\-\/_]+/,""))};return i(s?.sectionLabel),i(U(s)),t}var Xn="sl:sheet-hint";function Zn(s){let e=s.boot;if(!e?.isConnected)return;if(s.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"),s.map?.appendChild(t),setTimeout(()=>t.remove(),650),s.rail?.classList.add("is-in"),s.root?.classList.add("is-arriving"),setTimeout(()=>{s.rail?.classList.remove("is-in"),s.root?.classList.remove("is-arriving"),ll(s.root)},900)}function ll(s){if(!s||s.dataset.layout!=="narrow")return;try{if(window.sessionStorage.getItem(Xn))return;window.sessionStorage.setItem(Xn,"1")}catch{}let e=s.querySelector(".sl-sheet-grab");e&&(e.classList.add("sl-mo-hint"),e.addEventListener("animationend",()=>e.classList.remove("sl-mo-hint"),{once:!0}))}function Jn(s,e){s.addEventListener("keydown",t=>{if(t.key==="Escape"){for(let i of e())if(i.open()){t.preventDefault(),t.stopPropagation(),i.close();return}}})}function oi(s){let e=s.committedSelection(),t=s.controller.getGAAreas(),i=s.hold?.items??[],n=new Set(i.map(u=>u.label)),r=qs(s,t,i),o=Be(s.gaQty,i),a=i.reduce((u,h)=>u+s.paidPrice(h.categoryKey,h.tierId,h.unitPrice,h.label)*(h.quantity??1),0),l=i.reduce((u,h)=>u+(h.quantity??1),0),c=e.filter(u=>!n.has(u.label)),p=c.reduce((u,h)=>u+s.paidPrice(h.categoryKey,h.tierId??null,h.price,h.label)*(h.quantity??1),0)+r+a,d=c.reduce((u,h)=>u+(h.quantity??1),0)+o+l;return{seats:e,freshSeats:c,gaAreas:t,heldItems:i,heldLabels:n,heldCount:l,total:p,count:d}}function ai(s,e){let t=e.tiers?.length?e.tiers[0].price:e.price;return t===void 0||!e.key?t:s.paidPrice(e.key,e.tiers?.[0]?.id??null,t)}function li(s,e){let t=e.tiers?.length?e.tiers.map(i=>s.paidPrice(e.key,i.id??null,i.price)):e.price==null?[]:[s.paidPrice(e.key,null,e.price)];if(e.key)for(let i of s.pricesByChannel.values())for(let n of i)n.categoryKey===e.key&&t.push(n.price);return t.length?{min:Math.min(...t),max:Math.max(...t)}:void 0}var At="seatlayer_";function cl(){let s=globalThis;return s.document?.modelContext??s.navigator?.modelContext??null}function re(s,e){return e?{ok:!1,reason:s,message:e}:{ok:!1,reason:s}}function dl(s){return Array.isArray(s)?s.filter(e=>typeof e=="string"&&!!e):[]}function pl(s,e){let t=s.event();if(!t)return re("not_loaded","The seat map has not finished loading.");let i=s.selectionLimits();return{ok:!0,event:t,selection:{max:i.max,...i.required!=null?{required:i.required}:{}},categories:s.categories(),zones:s.zones(),hasPremiumSeats:s.hasPremiumSeats(),holdsAllowed:e}}function er(s,e){let t=n=>!!n&&n.toLowerCase()===e.toLowerCase(),i=s.find(n=>t(n.key??n.id))??s.find(n=>t(n.label));return i?.key??i?.id??null}function tr(s,e){let t=e.map(i=>s.describeSeat(i.id));return{seatIds:e.map(i=>i.id),labels:e.map(i=>i.label),section:t[0]?.section??"",row:t[0]?.row??"",seats:e.map((i,n)=>t[n]?.seat||i.label),category:t[0]?.category??e[0].categoryKey,unitPrice:e[0].price,total:e.reduce((i,n)=>i+n.price,0)}}function hl(s,e,t){let i=new Map;for(let r of e){let o=i.get(r.rowKey);o?o.push(r):i.set(r.rowKey,[r])}let n=[];for(let r of i.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 p=a;p+t<=l;p+=t)n.push(tr(s,o.slice(p,p+t)));a=l}}return n}function ul(s,e,t){let i=new Map;for(let r of e){let o=i.get(r.sectionKey);o?o.push(r):i.set(r.sectionKey,[r])}let n=[];for(let r of i.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);n.push(tr(s,o.slice(0,t)))}return n}function ml(s,e){if(!s.event())return re("not_loaded","The seat map has not finished loading.");let i=s.selectionLimits(),n=Math.floor(Number(e.count));if(!Number.isInteger(n)||n<1||n>i.max)return re("bad_count",`count must be a whole number between 1 and ${i.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,p=l?er(s.categories(),l):null;if(l&&!p)return re("no_match",`No ticket type called "${l}".`);let d=c?er(s.zones(),c):null;if(c&&!d)return re("no_match",`No zone called "${c}".`);let u=s.seats().filter(m=>m.available);if(!u.length)return re("sold_out");let h=u.filter(m=>(!p||m.categoryKey===p)&&(!d||m.zoneId===d)&&(a==null||m.price<=a));if(!h.length)return re("no_match");let g=o?hl(s,h,n):ul(s,h,n);return g.length?(g.sort((m,v)=>v.unitPrice!==m.unitPrice?v.unitPrice-m.unitPrice:m.row.localeCompare(v.row)||m.labels[0].localeCompare(v.labels[0])),{ok:!0,groups:g.slice(0,r),searched:{count:n,filters:{...a!=null?{max_price:a}:{},...p?{category:p}:{},...d?{zone:d}:{},together:o}}}):re(o?"not_enough_together":"no_match")}function ir(s){return{ok:!0,...s.selection()}}function fl(s,e){let t=s.event();if(!t)return re("not_loaded","The seat map has not finished loading.");if(t.salesClosed)return re("event_closed","Sales are closed for this event.");let i=dl(e.seat_ids);return i.length?(s.clearSelection(),s.selectObjects(i),ir(s)):re("nothing_requested","Pass one or more seat ids or labels in seat_ids.")}function gl(s,e){let t=async n=>{try{return await n()}catch(r){return re("error",r instanceof Error?r.message:String(r))}},i=[{name:`${At}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(()=>pl(s,e))},{name:`${At}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:n=>t(()=>ml(s,n))},{name:`${At}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:n=>t(()=>fl(s,n))},{name:`${At}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(()=>ir(s))}];return e&&i.push({name:`${At}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(()=>s.hold())}),i}async function sr(s,e={}){let t=cl();if(!t||typeof t.registerTool!="function")return null;let i=new AbortController,n=gl(s,!!e.holds),r=[],o=e.exposedTo?.length?[...new Set(e.exposedTo)]:void 0;try{for(let a of n)await t.registerTool(a,{signal:i.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(i.abort(),typeof t.unregisterTool=="function")for(let a of r)try{t.unregisterTool(a)}catch{}}}:null}async function nr(s){let e=s.opts.webMcp;if(!e||s.destroyed)return;let t=typeof e=="object"&&!!e.holds,i=typeof e=="object"?e.exposedTo:void 0;try{s.webMcp=await sr(Zi(s,t),{holds:t,exposedTo:i}),s.destroyed&&Xi(s)}catch(n){console.warn("seatmap: WebMCP registration failed",n)}}function Xi(s){s.webMcp?.dispose(),s.webMcp=null}function Zi(s,e){let t=(i,n)=>{if(Number.isInteger(i.logicalSeatIndex))return i.logicalSeatIndex;let r=i.id.lastIndexOf(":"),o=r<0?NaN:Number(i.id.slice(r+1));return Number.isFinite(o)?o:n};return{event:()=>{let i=s.renderInfo;return i?{name:i.eventName??"",venue:i.venue??null,startsAt:i.startsAt??null,timezone:i.timezone??null,currency:s.currency,salesClosed:s.salesClosed}:null},selectionLimits:()=>({max:s.maxTickets,required:s.exactTickets}),categories:()=>{let i=s.controller.categoryAvailability();return(s.controller.doc?.categories??[]).filter(n=>!n.notForSale).map(n=>{let r=li(s,n),o=ai(s,n);return{key:n.key,label:n.label??n.key,...o===void 0?{}:{price:o},...r&&r.min!==r.max?{priceRange:r}:{},available:i[n.key]??0}})},zones:()=>s.controller.getBestAvailableZones(),hasPremiumSeats:()=>s.controller.hasPremiumSeats(),seats:()=>{let i=s.controller.getActiveFloorId(),n=[];return s.allSeats().forEach((r,o)=>{if(r.floorId&&i&&r.floorId!==i)return;let a=s.controller.getStatus(r.id)??"free",l=s.controller.doc?.categories.find(p=>p.key===r.categoryKey),c=l?.tiers?.length?l.tiers[0].price:l?.price??0;n.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:s.paidPrice(r.categoryKey,l?.tiers?.[0]?.id??null,c,r.label),...r.zoneId?{zoneId:r.zoneId}:{},available:a==="free"&&!l?.notForSale})}),n},describeSeat:i=>{let n=s.controller.seatDetails(i);return n?{section:n.sectionLabel??"",row:U(n)??"",seat:n.seatNumber??n.label,category:n.categoryLabel??n.categoryKey}:null},selection:()=>{let{freshSeats:i,total:n,count:r}=oi(s);return{seats:i.map(o=>({id:o.id,label:o.label,section:o.sectionLabel??"",row:U(o)??"",seat:o.seatNumber??o.label,category:o.categoryKey,price:s.paidPrice(o.categoryKey,o.tierId??null,o.price,o.label)})),count:r,total:n,currency:s.currency,hold:s.hold?{id:s.hold.holdId,expiresAt:s.hold.expiresAt}:null,validity:s.getSelectionValidity()}},clearSelection:()=>s.clearSelection(),selectObjects:i=>{s.selectObjects(i)},hold:()=>e?bl(s):Promise.resolve({ok:!1,reason:"not_allowed"})}}async function bl(s){if(s.salesClosed)return{ok:!1,reason:"event_closed"};if(!s.totalTicketCount())return{ok:!1,reason:"nothing_selected"};let e=s.controller.getSelectionValidity(s.totalTicketCount());return e&&!e.isValid?{ok:!1,reason:"invalid_selection"}:(await s.handleCta(),s.hold?{ok:!0,hold:{id:s.hold.holdId,expiresAt:s.hold.expiresAt}}:{ok:!1,reason:"hold_failed"})}function Pt(s){if(!s)return null;let e=s.getBoundingClientRect();return e.width>0&&e.height>0?e:null}function vl(s){return Pt(s.peek?.querySelector(".sl-peek-sum"))??Pt(s.foot?.querySelector(".sl-total"))??Pt(s.tray)??Pt(s.sheetHead)}function es(s,e,t,i){let n=s,r=n.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=i?.find(d=>d.key===t.categoryKey)?.color,p=()=>{let d=vl(n);d&&Fs({from:a,to:{x:d.left+d.width/2,y:d.top+d.height/2},label:l,color:c})};Pt(n.peek)?requestAnimationFrame(p):p()}var Ji=60,yl=650;function rr(s,e){if(!e.length)return;e.forEach((r,o)=>{s.schedule(()=>s.pop(r.id),o*Ji)});let t=e.length*Ji,i=e.find(r=>r.sectionId)?.sectionId;if(i){let r=e.filter(a=>a.sectionId===i),o={x:r.reduce((a,l)=>a+l.x,0)/r.length,y:r.reduce((a,l)=>a+l.y,0)/r.length};s.schedule(()=>s.focus(i,o),t)}let n=t+(i?yl:0);e.forEach((r,o)=>{s.schedule(()=>es(s.regions,s.screenPoint(r),r,s.categories),n+o*Ji)})}function ts(s){return{renderingTimeMillis:s.ms,performanceProfile:s.performanceProfile,seatCount:s.seatCount,objectCount:s.objectCount,sectionCount:s.sectionCount,view:s.view,eventKey:s.eventKey,chartName:s.chartName,floorCount:s.floorCount,transport:s.transport,load:s.load,metricScope:s.metricScope,operationalTelemetryReporter:"sdk"}}function or(s,e){ke({apiBase:s.apiBase,event:s.eventKey,scope:s.metricScope,surface:s.surface,outcome:"success",ms:s.ms,performanceProfile:s.performanceProfile,chartDelivery:s.chartDelivery,seats:s.seatCount,floors:s.floorCount,view:s.view,load:s.load,transport:s.transport}),e("chart_rendered",ts(s))}import{seatConfidenceDisclosure as xl}from"@seatlayer/core/core/seatConfidence";function Q(s){return String(s??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function ar(s){let e=xl(s.seat.confidenceEvidence),t=s.seat.confidenceEvidence,i=e.limitations.length?`<h4>Known limits</h4><ul>${e.limitations.map(c=>`<li>${Q(c)}</li>`).join("")}</ul>`:"",n=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=Se(s.seat.commercial)||s.restrictionFallback,a=`<div><dt>View restriction</dt><dd>${Q(o)}</dd></div>`+(s.seat.commercial?.note?`<div><dt>Organizer note</dt><dd>${Q(s.seat.commercial.note)}</dd></div>`:""),l=s.canReport?'<button type="button" data-report>Report this view</button><p data-report-status role="status" aria-live="polite"></p>':"";return`<div class="sl-view3d-passport-scrim" aria-hidden="true"></div><section class="sl-view3d-passport" role="dialog" aria-modal="true" aria-labelledby="sl-view3d-passport-title"><header><div><span>Seat confidence passport</span><strong id="sl-view3d-passport-title">${Q(s.title)}</strong></div><button type="button" data-close aria-label="Close seat confidence passport">\xD7</button></header><div class="sl-view3d-passport-summary"><strong>${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+n+r+`</dl>${i}<p class="sl-view3d-passport-note">This passport describes supplied evidence and known limits. It does not guarantee that every temporary obstruction or real-world condition is knowable before the event build.</p>`+l+"</section>"}function lr(s){return s?s.closest("[data-report]")?"report":s.closest("[data-close]")||s.classList.contains("sl-view3d-passport-scrim")?"close":null:null}function ci(s,e,t){let i=s?.querySelector("[data-report]"),n=s?.querySelector("[data-report-status]");i&&(i.disabled=e!=="failed",i.textContent=e==="received"?"Report received":"Report this view"),n&&(n.setAttribute("role",e==="failed"?"alert":"status"),n.textContent=e==="sending"?"Sending report\u2026":e==="received"?`Report received. Reference ${t??""}.`:"The report could not be sent. Please try again.")}function is(s,e,t=null){let i=s.view3dEl;if(!i)return;Lt(s,!1);let n=e.confidenceEvidence,r=s.controller.seatDetails(e.id),o=document.createElement("div");o.className="sl-view3d-passport-shell",o.innerHTML=ar({seat:e,title:r?.displayLabel??e.displayLabel??e.label,restrictionFallback:s.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),canReport:typeof s.api.reportViewEvidence=="function"});let a=[...new Set([...i.children,...[...s.els.map.children].filter(u=>u!==i)])].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");i.appendChild(o),i.classList.add("has-passport"),s.view3dPassportEl=o;let c=o.querySelector(".sl-view3d-passport"),p=()=>[...c.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],d=u=>{if(u.key==="Escape"){u.preventDefault(),u.stopPropagation(),u.stopImmediatePropagation(),Lt(s);return}if(u.key!=="Tab")return;let h=p();if(!h.length)return;let g=h[0],m=h[h.length-1];u.shiftKey&&document.activeElement===g?(u.preventDefault(),m.focus()):!u.shiftKey&&document.activeElement===m&&(u.preventDefault(),g.focus())};window.addEventListener("keydown",d,!0),s.view3dPassportCleanup=()=>{window.removeEventListener("keydown",d,!0);for(let m of l)m.element.inert=m.inert,m.ariaHidden===null?m.element.removeAttribute("aria-hidden"):m.element.setAttribute("aria-hidden",m.ariaHidden);let u=t?.isConnected?t:s.confirmEl?.querySelector(".sl-confirm-confidence")??s.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(),i.classList.remove("has-passport"),s.view3dPassportEl===o&&(s.view3dPassportEl=null);let g=u??s.view3dCompareEl?.querySelector("[data-passport-seat]")??s.confirmEl?.querySelector(".sl-confirm-confidence")??s.view3dCompareChip.mainButton();(t?.isConnected?t:g)?.focus()},o.addEventListener("click",u=>{let h=lr(u.target instanceof HTMLElement?u.target:null);h==="close"&&Lt(s),h==="report"&&wl(s,e)}),requestAnimationFrame(()=>p()[0]?.focus()),s.emit3dAnalytics("3d_confidence_passport_opened",{seatId:e.id,evidenceId:n?.evidenceId??null,eventConfigurationId:n?.eventConfigurationId??null,modelLevel:n?.modelLevel??"unverified",realityLevel:n?.realityLevel??"none"})}async function wl(s,e){if(s.api.reportViewEvidence){ci(s.view3dPassportEl,"sending");try{let t=await s.api.reportViewEvidence(s.opts.event,{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId});s.emit3dAnalytics("3d_confidence_view_reported",{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId??null}),ci(s.view3dPassportEl,"received",t.report.id)}catch{ci(s.view3dPassportEl,"failed")}}}function Lt(s,e=!0){let t=s.view3dPassportCleanup;if(s.view3dPassportCleanup=null,!t){s.view3dPassportEl?.remove(),s.view3dPassportEl=null,s.view3dEl?.classList.remove("has-passport");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||s.root?.focus({preventScroll:!0})}function cr(s){let e=s.view3dEl;if(!e||s.view3dCompareSeatIds.length<2)return;$e(s,!1);let t=s.view3dCompareSeatIds.map(h=>s.view3dComparisonSnapshot(h)).filter(h=>!!h);if(t.length<2){s.clearView3dComparison();return}let i=h=>w(h),n=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>${i(h.label)}</strong><small>Section ${i(h.section)} \xB7 Row ${i(h.row)}</small><dl>`+(n?`<div><dt>Current price</dt><dd>${i(h.price)}</dd></div>`:"")+`<div><dt>Ticket type</dt><dd>${i(h.category)}</dd></div><div><dt>Availability</dt><dd>${i(h.availability)}</dd></div><div><dt>View source</dt><dd>${i(h.viewSource)}</dd></div><div><dt>View restriction</dt><dd>${i(h.limited)}</dd></div><div><dt>Seat confidence</dt><dd>${i(h.confidence.headline)}</dd></div><div><dt>Reality check</dt><dd>${i(h.confidence.reality)}</dd></div><div><dt>Accessibility</dt><dd>${i(h.accessibility)}</dd></div></dl><div class="sl-view3d-compare-actions"><button type="button" data-passport-seat="${i(h.seat.id)}">Passport</button><button type="button" data-view-seat="${i(h.seat.id)}">View seat</button><button type="button" class="select" data-select-seat="${i(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">${n?"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"),s.view3dCompareEl=r;let p=r.querySelector(".sl-view3d-compare"),d=()=>[...p.querySelectorAll('button:not(:disabled),[href],[tabindex]:not([tabindex="-1"])')],u=h=>{if(h.key==="Escape"){h.preventDefault(),$e(s);return}if(h.key!=="Tab")return;let g=d();if(!g.length)return;let m=g[0],v=g[g.length-1];h.shiftKey&&document.activeElement===m?(h.preventDefault(),v.focus()):!h.shiftKey&&document.activeElement===v&&(h.preventDefault(),m.focus())};window.addEventListener("keydown",u),s.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"),s.view3dCompareEl===r&&(s.view3dCompareEl=null),a?.isConnected?a.focus():s.view3dCompareChip.mainButton()?.focus()},r.querySelector("[data-close]")?.addEventListener("click",()=>$e(s)),r.querySelectorAll("[data-passport-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.passportSeat,m=g?s.allSeats().find(v=>v.id===g):void 0;m&&is(s,m,h)})),r.querySelectorAll("[data-view-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.viewSeat;$e(s,!1),g&&s.view3dHandle?.flyToSeat(g)})),r.querySelectorAll("[data-select-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.selectSeat;g&&kl(s,g)})),requestAnimationFrame(()=>d()[0]?.focus()),s.emit3dAnalytics("3d_comparison_opened",{seatIds:s.view3dCompareSeatIds.slice()})}function $e(s,e=!0){let t=s.view3dCompareCleanup;if(s.view3dCompareCleanup=null,!t){s.view3dCompareEl?.remove(),s.view3dCompareEl=null,s.view3dEl?.classList.remove("has-comparison");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||s.root?.focus({preventScroll:!0})}function kl(s,e){if(s.salesClosed){s.toast(s.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let t=s.allSeats().find(n=>n.id===e);if(!t)return;if($e(s,!1),!s.controller.select([e]).length){s.syncSelectionTo3d(),s.toast(s.tf("picker.seatNoLongerAvailable","That seat is no longer available."),"warning");return}s.syncSelectionTo3d(),s.showConfirm(t),s.emit3dAnalytics("3d_comparison_selected",{seatId:e})}function dr(s,e){s.querySelector(".sl-view3d-unavailable")?.remove();let{tf:t}=e,i=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.")},n=document.createElement("div");n.className="sl-view3d-unavailable",n.dataset.state=e.visualState,n.setAttribute("role","status"),n.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=i.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=i.message,n.append(a,l,c),l.addEventListener("click",()=>ss(s)),s.appendChild(n),qt(n,e.anchor??null)}function ss(s){let e=s?.querySelector(".sl-view3d-unavailable:not([data-leaving])");e&&(e.dataset.leaving="true",Me(e))}import{t as di}from"@seatlayer/core";function pr(s){return Array.isArray(s)?s.reduce((e,t)=>t.type==="minimumSelectedPlaces"?Math.max(e,t.minimum):e,0):0}function ns(s,e,t=!1){let i=s.violations[0];return i==="numberOfPlacesToSelect"?s.remaining>0?di("picker.selectExactMore",{count:s.remaining}):di("picker.selectExactCount",{count:s.required}):i==="minimumSelectedPlaces"?di("picker.selectMinimumMore",{count:s.remaining}):t?e("picker.adjustSeatSelection","Adjust seat selection"):i==="consecutiveSeats"?e("picker.selectSeatsTogether","Choose seats together in the same row and ticket category."):di("picker.orphanHint")}import{t as Ve,tCount as hr}from"@seatlayer/core";function Mt(s){let e=Math.max(0,s),t=Math.floor(e/6e4),i=String(Math.floor(e%6e4/1e3)).padStart(2,"0");return`${t}:${i}`}function ur(s){let e=s.performanceLabel?`<div class="sl-chip-when">${I(s.performanceLabel)}</div>`:"",t=s.performanceDates?.labels.length?`<div class="sl-chip-dates"><span class="sl-chip-dates-summary">${I(s.performanceDates.summary)}</span><span class="sl-chip-date-list">${s.performanceDates.labels.map(i=>`<span class="sl-chip-date">${I(i)}</span>`).join("")}</span></div>`:"";return e+Sl(s)+t}function Sl(s){let{d:e,area:t,label:i,objectType:n,quantity:r=1,identity:o}=s,a=L=>String(L??"\u2014").replace(/[&<>"]/g,b=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[b]),l=n==="ga"?"ga":e?.objectType??n,c=o?.displayType?.trim()||e?.displayType?.trim()||t?.displayType?.trim()||(l==="table"?y("picker.table","Table"):l==="booth"?y("picker.booth","Booth"):l==="ga"?y("picker.generalAdmission","General admission"):y("picker.row","Row")),p=o?.rowLabel??o?.displayLabel??e?.rowLabel??e?.displayLabel??t?.label??i,d=s.categoryLabel?.trim()??"",u="",h=[];l==="table"&&o?.bookingMode?(u=`${c} ${p}`,h.push([y("picker.guests","Guests"),String(r)])):l==="ga"?(u=String(t?.displayLabel??p),r>1&&h.push([y("picker.tickets","Tickets"),String(r)])):l==="booth"?(u=e?.sectionLabel??`${c} ${p}`,e?.sectionLabel&&h.push([c,String(p)])):!e?.sectionLabel&&!e?.rowLabel&&!e?.seatNumber?u=String(p):(u=e.sectionLabel??"",e.rowLabel&&h.push([c,String(U(e)??e.rowLabel)]),e.seatNumber&&h.push([y("picker.seat","Seat"),String(e.seatNumber)]));let g=!u&&!!d,m=u||d||String(p),v=!!d&&!g&&d!==m,k=h.map(([L,b])=>`<span class="w">${a(L)}</span> <b>${a(b)}</b>`);v&&k.push(`<span class="w">${a(d)}</span>`);let S=[m,...h.map(([L,b])=>`${L} ${b}`),v?d:""].filter(Boolean).join(" \xB7 ");return`<div class="sl-chip-id"><span class="sl-sr">${a(S)}</span><span class="sl-chip-name" aria-hidden="true">${a(m)}</span>`+(k.length?`<span class="sl-chip-pos" aria-hidden="true">${k.join("<i>\xB7</i>")}</span>`:"")+"</div>"}function rs(s,e){let t=I(s),i=e?I(e):"";return'<div class="sl-chip-rail">'+(e?`<button type="button" class="view" data-view-label="${i}" aria-label="${I(Ve("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 mr(s){return s.salesClosed||s.hasHold||s.ctaPhase!=="idle"||s.formOpen||s.room<=0?null:Math.max(1,Math.min(s.wanted,s.room))}function fr({count:s,total:e,pendingCount:t,ctaPhase:i,hasHold:n,salesClosed:r,suppressPricing:o=!1,fromPrice:a,addMore:l,offerFind:c=!1,holdTime:p,money:d}){return s&&i==="holding"?`<span>${y("picker.securingSeats","Securing your seats\u2026")}</span>`:s&&i==="checkout"?o?`<span>${y("picker.seatsSecuredOpeningCheckout","Seats secured. Opening checkout\u2026")}</span>`:`<span>${Ve("picker.peekSecured",{count:s,total:d(e)})}</span>`:s?`<span class="sl-peek-sum">${hr("picker.ticketsCount",s)}</span>`+(l&&!o?`<button type="button" class="go ghost sl-sheet-go sl-sheet-best" data-act="best" aria-label="${y("picker.findTogetherInstead","Find seats together instead")}"><span aria-hidden="true">\u2726</span>${y("picker.seatsTogether","Seats together")}</button>`:"")+`<button type="button" class="go sl-sheet-go" data-act="checkout">${n&&t?y("picker.secureMore","Secure more"):y("picker.continue","Continue")}`+(o?"":`<span class="sl-peek-total">${d(e)}</span>`)+(n&&p?`<span class="sl-peek-time" aria-hidden="true">${p}</span>`:"")+"</button>":r?`<span>${y("picker.salesClosedPill","Sales are closed")}</span>`:`<span class="sl-peek-sum">${!o&&a!=null?Ve("picker.peekFromPrice",{price:d(a)}):y("picker.pickYourSeats","Pick your seats")}</span>`+(c?`<button type="button" class="go sl-sheet-go sl-sheet-find" data-act="find"><span class="sl-peek-spark" aria-hidden="true">\u2726</span>${y("picker.findSeats","Find seats")}</button>`:"")}function os(s,e=Date.now()){return Ve("picker.holdReassurance",{time:Mt(s-e)})}function gr(s){return s.confirming?`<div class="sl-ba" role="alert"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${y("picker.replaceCurrentChoices","Replace your current choices?")}</div><div class="sl-ba-replace"><b>${Ve("picker.willFindSeatsTogether",{count:s.quantity})}</b><span>${y("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>${y("picker.keepMine","Keep mine")}</button><button type="button" class="replace" data-ba-replace>${y("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>${y("picker.findClosestSeatsTogether","Find the closest seats together")}</div><div class="sl-ba-copy">${y("picker.closestGroupChosenInstantly","Closest available group, chosen instantly.")}</div>`+(s.offerPremium?`<button type="button" class="sl-ba-premium${s.premium?" on":""}" data-ba-premium aria-pressed="${s.premium?"true":"false"}"><span class="star" aria-hidden="true">\u2605</span>${y("picker.bestSeatsPremium","Best seats")}</button>`:"")+`<div class="sl-ba-qty"><button type="button" data-ba="-1" aria-label="${y("picker.fewerSeats","Fewer seats")}">\u2212</button><span>${s.quantity}</span><button type="button" data-ba="1" aria-label="${y("picker.moreSeats","More seats")}">+</button></div>`+(s.categories.length>1?`<select class="sl-ba-cat" aria-label="${I(y("picker.preferredTicketType","Preferred ticket type"))}" data-ba-cat><option value="">${I(y("picker.anyTicketType","Any ticket type"))}</option>`+s.categories.map(e=>`<option value="${I(e.key)}"${s.selectedCategory===e.key?" selected":""}>${I(e.label)}</option>`).join("")+"</select>":'<span class="sl-ba-cat" aria-hidden="true"></span>')+(s.zones.length?`<select class="sl-ba-zone" aria-label="${y("picker.preferredVenueZone","Preferred venue zone")}" data-ba-zone><option value="">${y("picker.anyVenueZone","Any venue zone")}</option>`+s.zones.map(e=>`<option value="${I(e.id)}"${s.selectedZone===e.id?" selected":""}>${I(e.label)}</option>`).join("")+"</select>":"")+`<button type="button" class="sl-ba-go${s.busy?" sl-busy":""}"${s.busy?" disabled":""}>`+(s.busy?`<span class="sl-ba-spin" aria-hidden="true"></span>${y("picker.findingBestSeats","Finding the best seats\u2026")}`:hr("picker.findBestSeatsCount",s.quantity))+"</button>"+(s.reopened?`<button type="button" class="sl-ba-back" data-ba-close>${y("picker.keepMyPicks","Keep my picks")}</button>`:"")+"</div>"}function br(s){if(s.salesClosed&&!s.hasPicks){let e=s.whenText?`<span class="when">${I(s.whenText)}</span>`:"";return`<div class="sl-closed-note" role="status"><b>${y("picker.salesClosedPill","Sales are closed")}</b><span>${y("picker.salesClosedCopy","Ticket sales for this event have ended.")}${e}</span></div>`}return s.hasPicks?"":s.hasGaAreas?`<div class="sl-tray-hint">${s.seated?s.venue3d?y("picker.trayHintChoose3dOrStanding","Choose a seat in the 3D venue \u2014 or grab standing tickets below."):y("picker.trayHintTapOrStanding","Tap a seat on the map \u2014 or grab standing tickets below."):s.venue3d?y("picker.gaTrayHintChoose3dArea","Choose an area in the 3D venue to select tickets."):y("picker.gaTrayHintTapArea","Tap an area on the map to choose tickets.")}</div>`:`<div class="sl-tray-hint">${s.groupMode==="per_performance"?y("picker.groupPerPerformanceTrayHint","Choose seats for this performance, then complete every date above."):s.groupMode?y("picker.groupTrayHint","Choose seats once \u2014 the same seats will be held for every performance."):s.venue3d?y("picker.trayHintChoose3dOrBest","Choose a seat in the 3D venue, or let us pick the best available for you."):y("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you.")}</div>`}function vr(s){return{title:Ve("picker.securedCount",{count:s.secured}),copy:s.pendingCount?Ve("picker.moreSelectedCount",{count:s.pendingCount}):os(s.expiresAt),change:s.releasing?y("picker.releasingEllipsis","Releasing\u2026"):y("picker.change","Change")}}import{t as ls,tCount as Tl}from"@seatlayer/core";var as=4,Cl=6;function El(s){let e=s.trim();return/^[0-9]{1,4}$/.test(e)?Number(e):null}function yr(s){return[s.held?"h":"s",s.section,s.rowLabel,s.categoryLabel,s.amountText].join(" ")}function Al(s){if(s.length===1)return s[0];let e=s.map(El);if(e.every(i=>i!==null)){let i=[...e].sort((o,a)=>o-a);if(i.every((o,a)=>a===0||o===i[a-1]+1))return`${i[0]}\u2013${i[i.length-1]}`;let r=i.slice(0,3).join(", ");return i.length>3?`${r} +${i.length-3}`:r}let t=s.slice(0,3).join(", ");return s.length>3?`${t} +${s.length-3}`:t}function Pl(s){let e=[];for(let t of s){let i=e[e.length-1];!!i&&t.groupable&&i.members[0].groupable&&yr(i.members[0])===yr(t)?i.members.push(t):e.push({members:[t],seatsLabel:""})}for(let t of e)t.seatsLabel=Al(t.members.map(i=>i.seatLabel));return e}function wr(s,e,t,i){let n=I;return` data-key="${n(s)}"`+(t.length?` data-held="${n(encodeURIComponent(t.join(`
2645
- `)))}"`:"")+(e.length?` data-seat="${n(e.join(" "))}"`:"")+(i?` data-locate="${n(i)}"`:"")}function kr(s){let e=I;return`<div class="sl-chip${s.held?" sl-held":""}${s.fresh?" sl-enter":""}"`+wr(s.key,s.seatIds,s.heldLabels,s.locateId)+">"+(s.held?s.stateHtml:`<span class="sl-chip-dot" style="background:${w(s.categoryColor)}" aria-hidden="true"></span>`)+`<div class="sl-chip-main">${s.identityHtml}`+(s.extrasHtml?`<div class="sl-chip-sub">${s.extrasHtml}</div>`:"")+`${s.noteHtml}</div>`+(s.amountText?`<span class="amt">${e(s.amountText)}</span>`:"")+s.railHtml+"</div>"}function xr(s,e,t,i,n){let r=I,o=e?.members.length??1,a=o>1,l=e?e.seatsLabel:s.seatLabel,c=e?e.members.reduce((u,h)=>u+h.amount,0):s.amount,p=e?e.members.flatMap(u=>u.seatIds):s.seatIds,d=e?e.members.flatMap(u=>u.heldLabels):s.heldLabels;return`<div class="sl-chip sl-tline${s.held?" sl-held":""}${s.fresh?" sl-enter":""}${e?"":" sl-tsub"}"${i?' data-overflow="true"':""}`+(e?` data-run="${t}"`:` data-run-of="${t}"`)+wr(s.key,p,d,s.locateId)+">"+(a?`<button type="button" class="sl-trun-toggle" aria-expanded="false" aria-label="${r(Tl("picker.seatsSelectedCount",o))}"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></button>`:s.held?s.stateHtml:`<span class="sl-tline-dot" style="background:${w(s.categoryColor)}" aria-hidden="true"></span>`)+`<span class="sl-sr">${r(s.categoryLabel)}</span><span class="sl-tline-id"><b>${r(s.section||s.seatLabel)}</b>`+(s.rowLabel?`<i>\xB7</i><span>${r(s.rowLabel)}</span>`:"")+(s.section&&l?`<i>\xB7</i><span>${r(l)}</span>`:"")+"</span>"+s.extrasHtml+(n.suppressPricing||!s.amountText?"":(a?`<span class="sl-tline-mult">${o}\xD7</span>`:"")+`<span class="amt">${r(n.money(c))}</span>`)+(s.railHtml?`<button type="button" class="rm" aria-label="${r(a?ls("picker.removeSeatLabel",{label:[s.section,s.rowLabel,l].filter(Boolean).join(" \xB7 ")}):s.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 Sr(s,e){if(!s.length)return"";let t=Pl(s),i=[y("picker.section","Section"),y("picker.row","Row"),y("picker.seat","Seat")].join(" \xB7 "),n=t.length>=Cl,r=t.map((a,l)=>{let c=n&&l>=as;return xr(a.members[0],a,l,c,e)+(a.members.length>1?a.members.map(p=>xr(p,null,l,c,e)).join(""):"")}).join(""),o=n?`<button type="button" class="sl-tmore" data-tmore aria-expanded="false" data-more="${I(ls("picker.moreCount",{count:t.length-as}))}" data-less="${I(y("picker.showLess","Show less"))}"><span>${I(ls("picker.moreCount",{count:t.length-as}))}</span><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg></button>`:"";return`<div class="sl-tlist"${n?' data-collapsed="true"':""}><div class="sl-tlist-head sl-sr">${I(i)}</div>${r}${o}</div>`}function Tr(s){s.dataset.denseWired!=="true"&&(s.dataset.denseWired="true",s.addEventListener("click",e=>{let t=e.target,i=t.closest("[data-tmore]");if(i){let l=i.closest(".sl-tlist"),c=l?.getAttribute("data-collapsed")==="true";l?.setAttribute("data-collapsed",c?"false":"true"),i.setAttribute("aria-expanded",c?"true":"false");let p=i.querySelector("span");p&&(p.textContent=(c?i.dataset.less:i.dataset.more)??p.textContent);return}let n=t.closest(".sl-trun-toggle");if(!n)return;e.stopPropagation();let r=n.closest(".sl-tline"),o=r?.dataset.run;if(!r||o===void 0)return;let a=n.getAttribute("aria-expanded")!=="true";n.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 Cr,t as Er}from"@seatlayer/core";var Ll='<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>',Ml='<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>',pi=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 i=this.offered().length>0;this.button.setAttribute("aria-label",i?t.tf("picker.accessibilityOptions","Accessibility and colour options"):t.tf("picker.displayOptions","Display options")),this.button.innerHTML=i?Ll:Ml,this.menu=document.createElement("div"),this.menu.className="sl-a11ymenu",this.menu.hidden=!0;for(let n of this.stored())this.offeredFree().has(n)&&this.active.add(n);if(this.menu.innerHTML=zn(this.rows()),this.root.append(this.menu,this.button),e.appendChild(this.root),this.button.addEventListener("click",n=>{n.stopPropagation(),this.open(this.menu.hidden)}),this.menu.addEventListener("pointerdown",n=>n.stopPropagation()),this.menu.addEventListener("click",n=>n.stopPropagation()),this.dismiss=()=>this.open(!1),this.escape=n=>{n.key==="Escape"&&this.open(!1)},document.addEventListener("pointerdown",this.dismiss),document.addEventListener("keydown",this.escape),this.wire(),this.active.size){this.applyFilter({focus:!1});let n=()=>this.deps.focusSeatsForFilter();typeof requestAnimationFrame=="function"?requestAnimationFrame(n):n()}}colorblindRow(){return this.menu.querySelector(".sl-cbbtn")}syncCounts(){let e=new Map(this.offered().map(({key:i,count:n})=>[i,n])),t=!1;for(let i of this.menu.querySelectorAll("[data-a11y-row]")){let n=i.dataset.a11yRow??"";if(!n.startsWith("a11y:"))continue;let r=n.slice(5),o=e.get(r);if(o===void 0)continue;let a=i.querySelector(".sl-a11yrow-c");a&&(a.textContent=o==null?"":o>0?Er("picker.accessFreeCount",{count:o}):this.deps.tf("picker.accessNoneLeft","None left"));let l=o===0;i.disabled=l,l?i.setAttribute("aria-disabled","true"):i.removeAttribute("aria-disabled"),l&&this.active.delete(r)&&(this.paint(i,!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 i=t.dataset.a11yRow??"";i.startsWith("a11y:")&&this.paint(t,this.active.has(i.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();Pi(this.menu,{x:t.left+t.width/2,y:t.top}),$s(this.menu),qt(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:i,count:n})=>({key:i,count:n}));let t=this.deps.present;return t?Cr.filter(({key:i})=>t.has(i)).map(({key:i})=>({key:i,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(Cr.map(i=>[i.key,i]));return this.offered().flatMap(({key:i,count:n})=>{let r=t.get(i);return r?[{key:`a11y:${i}`,icon:r.icon,label:r.label,...i==="wheelchair"&&e.has("companion")?{note:this.deps.tf("picker.companionSeatsNote","Companion places beside them stay selectable")}:{},...n==null?{}:{count:n>0?Er("picker.accessFreeCount",{count:n}):this.deps.tf("picker.accessNoneLeft","None left"),disabled:n===0},on:this.active.has(i)}]:[]})}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 i=t.slice(5),n=!this.active.has(i);n?this.active.add(i):this.active.delete(i),this.paint(e,n),this.applyFilter()})}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 Hl}from"@seatlayer/core";var Il=250;function Ar(s,e=Il){let t=null,i=()=>{t===null&&(t=setTimeout(()=>{t=null,s()},e))},n=Hl(i),r=typeof window<"u"&&typeof window.addEventListener=="function";return r&&window.addEventListener("focus",i),()=>{t!==null&&(clearTimeout(t),t=null),n(),r&&window.removeEventListener("focus",i)}}import{holdRecoveryShape as Ol,tCount as hi}from"@seatlayer/core";var ui=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=Ol(e),i=e.lapsedLabels.length,n=i-e.recoverable.length,r=t==="all"?hi("picker.holdLapsedStillFree",i):t==="partial"?hi("picker.holdLapsedSomeTaken",n):hi("picker.holdLapsedAllTaken",i);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 hi("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 Pr=Symbol("seatlayer.performance-group-picker");function mi(s,e){return Object.defineProperty(s,Pr,{configurable:!1,enumerable:!1,value:Object.freeze({...e})}),s}function Lr(s){return s[Pr]??null}import{t as Mr,tCount as fi}from"@seatlayer/core";function cs(s,e,t){try{return new Intl.DateTimeFormat(e,{...t,...s.timezone?{timeZone:s.timezone}:{}}).format(new Date(s.startsAt))}catch{return new Date(s.startsAt).toLocaleString(e)}}var gi=(s,e)=>cs(s,e,{dateStyle:"medium"}),bi=(s,e)=>cs(s,e,{timeStyle:"short"}),vi=(s,e)=>cs(s,e,{weekday:"short",day:"numeric",month:"short"});function Hr(s,e,t,i){return!s.length||s.length>=e?null:{summary:i,labels:s.map(n=>`${gi(n,t)} \xB7 ${bi(n,t)}`)}}function Rl(s,e){let t=new Set(e);return s.map(i=>({...i,free:!t.has(i.eventKey)}))}function Ir(s,e){let t=[...s];if(t.length<=1)return t[0]??"";try{return new Intl.ListFormat(e,{style:"long",type:"conjunction"}).format(t)}catch{return t.join(", ")}}function _l(s,e,t="",i=!1){if(!s.length)return"";let n=s.map(r=>{let o=r.free?e.free:e.blocked,a=i&&r.free?`<input class="sl-night-choice" type="checkbox" data-pg-event-key="${w(r.eventKey)}" aria-label="${w(`${r.shortDate}: ${o}`)}" checked>`:"";return`<li class="sl-night${r.free?" ok":" no"}" aria-label="${w(`${r.shortDate}: ${o}`)}">`+a+`<i class="sl-night-dot" aria-hidden="true"></i><span class="d">${w(r.shortDate)}</span><span class="st">${w(o)}</span></li>`}).join("");return`<div class="sl-tip-nights"><div class="sl-tip-nights-title">${w(e.title)}</div><ul class="sl-nightstrip">${n}</ul><p class="sl-tip-nights-note">${w(e.notAvailableOn)}</p>`+t+"</div>"}function Dl(s){return s.selectPartialLabel&&s.pinned?`<button type="button" class="sl-tip-switch" data-pg-select-partial>${w(s.selectPartialLabel)}</button>`:s.switchLabel&&s.pinned?`<button type="button" class="sl-tip-switch" data-pg-switch-mode>${w(s.switchLabel)}</button>`:s.switchLabel||s.selectPartialLabel?"":`<p class="sl-tip-advice">${w(s.advice)}</p>`}function Bl(s){return Number(s.available)+Number(s.selected)+Number(s.partial)+Number(s.unavailable)}function Or(s,e,t){if(Bl(s)<2)return"";let i=(r,o,a="")=>`<li class="sl-pg-legend-item"><i class="sl-pg-sw ${r}"${a}></i>${w(o)}</li>`,n=[];return s.available&&n.push(i("sl-pg-sw-free",e.available,` style="background:${w(t)}"`)),s.selected&&n.push(i("sl-pg-sw-sel",e.selected)),s.partial&&n.push(i("sl-pg-sw-split",e.partial,` style="--sl-pg-sw-cat:${w(t)}"`)),s.unavailable&&n.push(i("sl-pg-sw-off",e.unavailable)),`<ul class="sl-pg-legend-list" aria-label="${w(e.title)}">${n.join("")}</ul>`}function Rr(s,e){if(!s.length)return"";let t=s.map(i=>{let n=i.labels.length?i.labels.join(", "):e.empty;return`<li class="sl-pg-night-row${i.labels.length?"":" empty"}${i.active?" active":""}" role="button" tabindex="0"${i.active?' aria-current="true"':""} data-event-key="${w(i.eventKey)}"><span class="n">${w(i.name)}</span><span class="s">${w(n)}</span></li>`}).join("");return`<div class="sl-pg-nights" role="group" aria-label="${w(e.title)}"><div class="sl-pg-nights-title">${w(e.title)}</div><ul class="sl-pg-nights-list">${t}</ul></div>`}function ds(s,e){if(s?.kind!=="partial"||!e?.length)return null;let t=s.data?.blockedEventKeys??[],i=Rl(e,t);return{states:i,missing:i.filter(n=>!n.free).map(n=>n.shortDate)}}function _r(s,e){return s?_l(s.states,{title:y("picker.group.partlyAvailableTitle","Free on some nights only"),free:y("picker.group.nightFree","Free"),blocked:y("picker.group.nightBlocked","Not available"),notAvailableOn:Mr("picker.group.notAvailableOn",{dates:Ir(s.missing,e.locale)})},Dl({switchLabel:e.switchLabel??null,selectPartialLabel:e.selectPartialLabel??null,pinned:e.pinned,advice:y("picker.group.pickSeatFreeEveryNight","Pick a seat that is free every night.")}),!!e.selectPartialLabel&&!!e.pinned):""}function Nl(s,e,t,i){if(!s.length)return"";let n=new Set(e),r=new Set(t),o=s.map(a=>{let l=n.has(a.eventKey);return`<li class="sl-confirm-date${l?"":" blocked"}"><label><input type="checkbox" data-pg-confirm-event-key="${w(a.eventKey)}" aria-label="${w(`${a.shortDate}: ${l?i.available:i.unavailable}`)}"${l&&r.has(a.eventKey)?" checked":""}${l?"":" disabled"}><span class="sl-confirm-date-label">${w(a.shortDate)}</span><span class="sl-confirm-date-state">${w(l?i.available:i.unavailable)}</span></label></li>`}).join("");return`<fieldset class="sl-confirm-dates" data-pg-confirm-dates><legend>${w(i.title)}</legend><p class="sl-confirm-dates-copy">${w(i.copy)}</p><label class="sl-confirm-date-all"><input type="checkbox" data-pg-confirm-all><span>${w(i.selectAll)}</span></label><ul>${o}</ul><p class="sl-confirm-dates-summary" data-pg-confirm-summary aria-live="polite"></p></fieldset>`}function Dr(s,e,t,i){let n=e.availableEventKeys(t);return Nl(s,n,e.includedEventKeys(),{title:i("picker.group.confirmDatesTitle","Choose performance dates"),copy:n.length===s.length?i("picker.group.confirmAllDatesCopy","This seat is available for all {count} dates. Keep all selected, or remove dates you do not want.").replace("{count}",String(s.length)):i("picker.group.confirmPartialDatesCopy","This seat is available for {available} of {total} dates. Choose one date or keep every available date.").replace("{available}",String(n.length)).replace("{total}",String(s.length)),selectAll:i("picker.group.confirmSelectAll","Select all available dates"),available:i("picker.group.nightFree","Available"),unavailable:i("picker.group.nightBlocked","Unavailable")})}function Br(s){return[...s.querySelectorAll("[data-pg-confirm-event-key]")].filter(e=>e.checked&&!e.disabled).map(e=>e.dataset.pgConfirmEventKey).filter(Boolean)}function Nr(s,e,t,i){let n=[...s.querySelectorAll("[data-pg-confirm-event-key]")];if(!e||!n.length)return;let r=s.querySelector(".sl-confirm-add"),o=s.querySelector("[data-pg-confirm-all]"),a=()=>{let l=n.filter(d=>!d.disabled),c=Br(s).length;o&&(o.checked=c===l.length,o.indeterminate=c>0&&c<l.length);let p=s.querySelector("[data-pg-confirm-summary]");p&&(p.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"),i()};n.forEach(l=>l.addEventListener("change",a)),o?.addEventListener("change",()=>{n.filter(l=>!l.disabled).forEach(l=>{l.checked=o.checked}),a()}),a()}async function $r(s,e,t){if(!s||!t||!s.querySelector("[data-pg-confirm-event-key]"))return!0;let i=Br(s);if(!i.length)return!1;let n=s.querySelector(".sl-confirm-add");return n?.setAttribute("aria-busy","true"),n&&(n.disabled=!0),await t.apply(e,i)?!0:(n?.removeAttribute("aria-busy"),n?.isConnected&&(n.disabled=!1),!1)}function Vr(s,e,t){return s?Mr("picker.group.seatPartlyAvailable",{label:e,free:s.states.length-s.missing.length,total:s.states.length,dates:Ir(s.missing,t)}):""}function Fr(s,e){let t=s.map((i,n)=>{let r=i.state==="done"?e.done:i.state==="current"?e.current:e.upcoming;return`<li class="sl-pg-step-item" data-step="${w(i.id)}" data-state="${w(i.state)}"${i.state==="current"?' aria-current="step"':""}><span class="i" aria-hidden="true">${i.state==="done"?"\u2713":String(n+1)}</span><span class="l">${w(i.label)}</span><span class="sl-pg-sr">${w(r)}</span></li>`}).join("");return`<ol class="sl-pg-steps" aria-label="${w(e.label)}">${t}</ol>`}function ps(s,e){return`<ul class="sl-pg-cards">${s.map(i=>`<li class="sl-pg-card" data-event-key="${w(i.eventKey)}"><span class="n">${w(i.name)}</span><time datetime="${w(i.iso)}"><span class="d">${w(i.date)}</span><span class="t">${w(i.time)}</span></time></li>`).join("")}</ul><p class="sl-pg-included">${w(e)}</p>`}function zr(s){let e=s.rows.map(t=>`<li class="sl-pg-pane-row${t.labels.length?"":" empty"}" data-event-key="${w(t.eventKey)}"><span class="n">${w(t.name)}</span><span class="s">${w(t.labels.length?t.labels.join(", "):s.empty)}</span></li>`).join("");return`<div class="sl-pg-pane-title">${w(s.title)}</div><ul class="sl-pg-pane-list">${e}</ul>`+(s.note?`<p class="sl-pg-pane-note">${w(s.note)}</p>`:"")+(s.total?`<div class="sl-pg-pane-total"><span>${w(s.total.label)}</span><b>${w(s.total.amount)}</b></div>`:"")+(s.holdStatus?`<p class="sl-pg-hold-status" role="status">${w(s.holdStatus)}</p>`:"")}function jr(s){let e=Math.max(0,s);return`${Math.floor(e/6e4)}:${String(Math.floor(e/1e3)%60).padStart(2,"0")}`}function Gr(s,e){if(!s||s.seats<=0)return"";if(e==="same_seat"){let t=s.perPerformance??s.seats;return s.totalPerformances&&s.performances<s.totalPerformances?fi("picker.group.performancesChosenOf",t,{chosen:s.performances,total:s.totalPerformances}):fi("picker.group.seatsEveryPerformance",t)}return s.perPerformance!=null&&s.performancesChosen===s.performances?fi("picker.group.seatsPerPerformance",s.seats,{per:s.perPerformance}):fi("picker.group.performancesChosenOf",s.seats,{chosen:s.performancesChosen,total:s.performances})}function qr(s,e){s.querySelectorAll(".sl-pg-night-row[data-event-key]").forEach(t=>{let i=()=>e(t.dataset.eventKey);t.addEventListener("click",i),t.addEventListener("keydown",n=>{n.key!=="Enter"&&n.key!==" "||(n.preventDefault(),i())})})}import{t as $l}from"@seatlayer/core";function he(s){return String(s??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Vl(s,e){let t=s.objectType==="table"&&!!s.bookingMode,i=s.objectType==="booth",n=t||i||!s.seatNumber,r=n?s.rowLabel??s.displayLabel??s.label:s.seatNumber,o=t?`${y("picker.guests","Guests")} ${s.bookingMode==="variable"?`${s.minOccupancy}\u2013${s.maxOccupancy}`:s.capacity}`:!i&&s.rowLabel?`${e} ${U(s)??""}`.trim():"";return`<div class="sl-tip-head"><div class="sl-tip-id"><span class="sl-tip-seat${n?" name":""}">${he(r)}</span>`+(o?`<span class="sl-tip-row">${he(o)}</span>`:"")+"</div>"+(s.sectionLabel?`<div class="sl-tip-sec"><span class="sl-tip-eyebrow">${y("picker.section","Section")}</span><span class="sl-tip-secname">${he(s.sectionLabel)}</span></div>`:"")+"</div>"}function Kr(s,e){let t=s.status==="not_for_sale",i=s.mark?.kind==="partial",n=s.status==="free"||i?"":`<span class="sl-tip-tag">${t?y("picker.notAvailable","Not available"):s.status==="held"?$l("map.statusHeld"):y("picker.sold","Sold")}</span>`,r=t?"":e.price,o=r?`<span class="sl-tip-amt">${he(r)}</span>`:"",a=!r&&e.priceNote?`<div class="sl-tip-note">${he(e.priceNote)}</div>`:"",l=Se(s.commercial),c=l?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u25D0</span>${he(l)}</div>`:"",p=nt(s.wheelchairSpaceType),d=p?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u267F</span>${he(p)}</div>`:"",u=e.reason?`<div class="sl-tip-reason">${he(e.reason)}</div>`:"";return'<i class="sl-tip-rail" aria-hidden="true"></i>'+Vl(s,e.rowTypeWord)+`<div class="sl-tip-cat"><span class="sl-tip-dot" style="background:${he(s.categoryColor)}"></span><span class="sl-tip-name">${he(s.categoryLabel)}</span>`+n+o+"</div>"+a+u+d+c+(e.extra??"")}function Ur(s,e,t,i){let n=s.x+14,r=s.y-i.height-12,o=s.y+18,a=r;n+i.width>e-8&&(n=s.x-i.width-14),r<8&&o+i.height<=t-8&&(a=o);let l=Math.max(8,t-i.height-8);return{left:Math.max(8,Math.min(n,Math.max(8,e-i.width-8))),top:Math.max(8,Math.min(a,l))}}function Wr(s,e,t,i=22){let n=Math.max(8,Math.min(s.x-t.width/2,Math.max(8,e.width-t.width-8))),r=s.y-i-t.height,o=s.y+i;return r>=8?{left:n,top:r,placement:"above"}:o+t.height<=e.height-8?{left:n,top:o,placement:"below"}:{left:n,top:Math.max(8,Math.min(r<8?o:r,Math.max(8,e.height-t.height-8))),placement:r<8?"below":"above"}}var hs=14,Fl=12,zl=12,jl=18;function Yr(s,e,t,i=Fl){let n=hs;if(!(s>=e.height-n-t.height-jl))return{placement:"sheet",bottom:n};let o=e.height-s+i,a=e.height-zl-t.height;return{placement:"above",bottom:Math.max(0,Math.min(o,a))}}function Qr(s,e,t,i){let n=t.width/2+12,r=Math.max(n,Math.min(e.width-n,s.x)),o=s.y+t.height+24<=e.height,a=s.y<t.height+24&&o?"below":"above",l=i&&a==="above"?Math.max(t.height+24,s.y):s.y;return{left:r,top:Math.max(8,Math.min(e.height-8,l)),placement:a}}function Xr(s,e,t){let i=s.querySelector("[data-pg-select-partial]"),n=[...s.querySelectorAll("[data-pg-event-key]")],r=()=>n.filter(a=>a.checked).map(a=>a.dataset.pgEventKey).filter(Boolean),o=()=>{if(!i)return;let a=r().length;i.disabled=a===0,i.textContent=e?.(a)??i.textContent};n.forEach(a=>{a.addEventListener("change",o);let l=a.closest(".sl-night");l?.classList.add("selectable"),l?.addEventListener("click",c=>{c.target!==a&&(a.checked=!a.checked,o())})}),i?.addEventListener("click",()=>{let a=r();a.length&&t?.(a)})}function rt(s){let e=s?.displayType?.trim()||s?.rowType?.trim();return e||(s?.objectType==="table"?y("picker.table","Table"):s?.objectType==="booth"?y("picker.booth","Booth"):y("picker.row","Row"))}var Zr="@seatlayer/pending-checkout/v1";function Gl(s){return typeof s=="string"&&s.length<=160&&/^ord_[A-Za-z0-9_-]+$/.test(s)}function Jr(s){if(typeof location>"u")return null;let e=new URLSearchParams(location.search),t=e.get("seatlayer_checkout");if(t!=="success"&&t!=="cancelled")return null;let i=null;try{let n=window.sessionStorage.getItem(Zr);if(n){let r=null;try{r=JSON.parse(n)}catch{}if(r&&Gl(r.orderId)){let o=Date.now()-Number(r.storedAt);if(o>=0&&o<=144e5){if(r.eventKey&&r.eventKey!==s)return null;i=r.orderId}}}window.sessionStorage.removeItem(Zr)}catch{}e.delete("seatlayer_checkout");try{let n=e.toString();history.replaceState(history.state,"",`${location.pathname}${n?`?${n}`:""}${location.hash}`)}catch{}return{outcome:t,orderId:i}}function eo(s){if(!s.framed)return null;let e=s.ancestorOrigins?.length?s.ancestorOrigins[0]:null;for(let t of[e,s.referrer])if(t)try{return new URL(t).origin}catch{}return null}var Zl="https://api.seatlayer.io",Jl=10,so=6e4,no=6e4,ec=360,tc=10,ic=40,sc=220,nc=160,ro="seatmap.a11y.cb";function rc(){try{if(typeof window>"u")return null;let s=window.localStorage.getItem(ro);return s==null?null:s==="1"}catch{return null}}function oc(s){try{window.localStorage.setItem(ro,s?"1":"0")}catch{}}var ze=class s{constructor(e){this.realtime=null;this.accessEl=null;this.lastSelectionValidity=null;this.root=null;this.mapHost=null;this.rendered=!1;this.destroyed=!1;this.renderInfo=null;this.webMcp=null;this.localeGeneration=0;this.els={};this.regions={};this.ro=null;this.holdTimer=null;this.toastTimer=null;this.offerRefreshTimer=null;this.offerBoundaryTimer=null;this.offerVisibilityHandler=null;this.motionTimers=new Set;this.currency="USD";this.eventTimezone=null;this.eventWhenText=null;this.offerAvailability=null;this.channelByObject=new Map;this.pricesByChannel=new Map;this.hold=null;this.holdExpiresAt=0;this.handedOff=!1;this.bookedShown=!1;this.holdConflicted=!1;this.paymentOptions=null;this.checkoutPanel=null;this.extendEl=null;this.bookedEl=null;this.gaQty=new Map;this.gaPromptEl=null;this.gaPromptReturnFocus=null;this.gaAreasExpanded=!1;this.lastMapPoint=null;this.tipEl=null;this.tipPos={x:0,y:0};this.tipPinned=!1;this.tipMarkedHoverLabel=null;this.lastPointerType="mouse";this.confirmEl=null;this.themeMode=null;this.colorSchemeStop=null;this.seatsRevealed=!1;this.seatsRevealedReport=null;this.confirmSeat=null;this.suppressConfirmationSeatId=null;this.tableDialogEl=null;this.tableDialog=null;this.tableDialogHeld=!1;this.tableDialogReturnFocus=null;this.srEl=null;this.baQty=2;this.baCat="";this.baZone="";this.baPremium=!1;this.baReopen=!1;this.bestAvailableConfirm=!1;this.releasingHold=!1;this.salesClosed=!1;this.soldOut=!1;this.soldoutEl=null;this.cbSafe=!1;this.rungsEl=null;this.projectionEl=null;this.buyerView="map";this.view3dEl=null;this.view3dHandle=null;this.view3dGen=0;this.view3dReturnSeat=null;this.view3dTargetSeatId=null;this.view3dCompareSeatIds=[];this.view3dCompareChip=new ri({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 ui({toast:(e,t,i)=>this.toast(e,t,i),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.holdCopyPending=!1;this.sideCollapsed=!1;this.sideToggleEl=null;this.framedFs=!1;this.lastPostedHeight=0;this.cbEl=null;this.modalScrim=null;this.prevFocus=null;this.escHandler=null;this.closeModal=null;this.lastCatAvail=null;this.lastAvailFloorId="";this.availQuietUntil=0;this.liveTimer=null;this.perspectiveWarned=!1;if(!e||typeof e!="object")throw new Error("seatmap: options object is required");if(!e.event||typeof e.event!="string")throw new Error("seatmap: `event` key is required");if(!e.container)throw new Error("seatmap: `container` is required (or use SeatPicker.open())");this.performanceGroup=Lr(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??Zl).replace(/\/+$/,"");let t={onExpired:a=>{this.opts.onAccessExpired?.(a),a.refreshed||this.showAccessPanel({reason:"no_token",retryable:!1})},onUnavailable:a=>{this.opts.onAccessUnavailable?.(a),this.showAccessPanel(a)}},i=!e.transport&&e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?jt({base:this.apiBase,event:e.event,publicKey:e.publicKey,accessHooks:t,apiOptions:{referral:e.referral,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=e.transport?null:i?.access??xt(e,t),this.pubApi=e.transport?null:i?.api??new Pe(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 Je(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 n=e.numberOfPlacesToSelect;if(n!=null&&(!Number.isInteger(n)||n<1))throw new Error("seatmap: `numberOfPlacesToSelect` must be a positive integer");this.exactTickets=n??null;let r=pr(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(Jl,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=rc()??!!e.colorblindSafe,this.controller=this.wireController(e)}get lastSection(){return this.sectionCard.summary}set lastSection(e){this.sectionCard.adopt(e)}chartHasStage(){let e=this.controller.doc;if(!e)return!1;let t=e.floors?.length?e.floors.map(i=>i.objects??[]):[e.objects??[]];for(let i of t)for(let n of i)if(n.type==="shape"&&(n.role==="stage"||n.stageKind))return!0;return!1}confirmThumbHtml(e){let t=this.controller.doc;if(!t)return"";let i=this.deliverableViewReference(e)?e.viewUrl??"":"",n=this.chartHasStage();if(!i&&!n)return"";let r=null;if(!i)try{r=Ul(e,e.focalPoint??t.focalPoint).distanceM??null}catch{return""}let o=n&&r!=null?`<div class="sl-confirm-sight">${I(M("picker.sightline",{m:r}))}</div>`:"";if(!i)return o;let a=I(M("picker.viewFromSeat",{label:e.label})),l=I(this.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}deliverableViewReference(e){let t=e.viewMeta?.previewUrl??e.viewUrl;return t&&(Ri(t)||Ze(t))?t:null}isFramed(){return typeof window<"u"&&window.parent!==window}postToHost(e){if(!this.isFramed())return;let t=eo({framed:!0,ancestorOrigins:window.location.ancestorOrigins,referrer:document.referrer});if(t)try{window.parent.postMessage(e,t)}catch{}}measureFramedHeight(){let e=this.root;if(!e)return 0;let t=e.clientWidth||(typeof window<"u"?window.innerWidth:0)||0;if(t<=0)return 0;let i=t<640?1.2:.62;return Math.max(420,Math.round(t*i))}reportFramedHeight(){if(!this.isFramed())return;let e=this.measureFramedHeight();e<=0||e===this.lastPostedHeight||(this.lastPostedHeight=e,this.postToHost({type:"seatlayer:height",px:e}))}toggleFullscreen(){let e=this.root;if(!e)return;!!document.fullscreenElement||this.fsFallback||this.framedFs?document.fullscreenElement?document.exitFullscreen().catch(()=>{}):this.framedFs?this.setFramedFs(!1):this.setFsFallback(!1):e.requestFullscreen?e.requestFullscreen().catch(()=>this.enterFsFallback()):this.enterFsFallback()}syncFullscreenButtons(){let e=!!document.fullscreenElement||this.fsFallback||this.framedFs,t=this.eventDetailsHidden&&!e;this.root?.setAttribute("data-event-details-hidden",String(t)),this.els.zfs?.setAttribute("aria-pressed",String(e)),this.els.zfs?.setAttribute("title",e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen"));let i=this.els.zfs?.querySelector(".sl-zfs-lbl");i&&(i.textContent=e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen")),this.view3dEl?.querySelector(".sl-view3d-fs")?.setAttribute("aria-pressed",String(e))}enterFsFallback(){this.isFramed()?this.setFramedFs(!0):this.setFsFallback(!0)}setFramedFs(e){this.framedFs!==e&&(this.framedFs=e,this.syncFullscreenButtons(),this.postToHost({type:"seatlayer:fullscreen",on:e}),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFramedFs(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}setFsFallback(e){this.fsFallback!==e&&(this.fsFallback=e,this.root?.classList.toggle("sl-fs",e),this.syncFullscreenButtons(),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFsFallback(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}close(){this.closeModal?this.closeModal():this.destroy()}static async open(e){et();let t=document.activeElement instanceof HTMLElement?document.activeElement:null,i=document.createElement("div");i.className="sl-modal-scrim";let n=document.createElement("div");n.className="sl-modal-frame",n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true"),n.setAttribute("aria-label",y("picker.seatSelection","Seat selection")),n.tabIndex=-1,i.appendChild(n),document.body.appendChild(i);let r=document.body.style.overflow;document.body.style.overflow="hidden";let o=new s({...e,container:n});o.modalScrim=i,o.prevFocus=t;let a=["a[href]","area[href]","button","input","select","textarea","iframe","object","embed","summary","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"[tabindex]"].join(","),l=()=>{let g=[...n.querySelectorAll('[role="dialog"][aria-modal="true"]')].filter(m=>m.isConnected&&!m.closest('[hidden], [aria-hidden="true"], [inert]'));return g[g.length-1]??n},c=(g,m)=>{let v=g;for(;v;){let k=window.getComputedStyle(v);if(v.hidden||v.getAttribute("aria-hidden")==="true"||v.hasAttribute("inert")||k.display==="none"||k.visibility==="hidden"||k.visibility==="collapse")return!0;if(v===m)return!1;v=v.parentElement}return!0},p=g=>[...g.querySelectorAll(a)].filter(m=>m.tabIndex>=0&&!m.matches(":disabled")&&!c(m,g)),d=(g,m)=>{let v=p(g),k=m?v[v.length-1]:v[0];k?k.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),i.remove(),o.modalScrim=null;let g=o.prevFocus;o.prevFocus=null,g?.isConnected&&g.focus({preventScroll:!0});let m=()=>{o.destroy(),e.onClose?.()};o.hold&&!o.handedOff?o.release().finally(m):m()};return o.closeModal=h,i.addEventListener("mousedown",g=>{g.target===i&&h()}),o.escHandler=g=>{if(g.key==="Tab"){if(g.defaultPrevented)return;let m=l(),v=p(m),k=v[0],S=v[v.length-1],L=document.activeElement;!k||!S?(g.preventDefault(),d(m,g.shiftKey)):L===m||!L||!m.contains(L)?(g.preventDefault(),(g.shiftKey?S:k).focus({preventScroll:!0})):g.shiftKey&&L===k?(g.preventDefault(),S.focus({preventScroll:!0})):!g.shiftKey&&L===S&&(g.preventDefault(),k.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),d(l(),!1),o}wireController(e){return new ql({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:Ke(e.theme),onSeatsRevealed:()=>{this.seatsRevealed=!0,e.onSeatsRevealed?.(),this.seatsRevealedReport?.()},onGAClick:t=>{let i=this.controller.getGAAreas().find(n=>n.id===t);i&&(this.collapseSheet(),Ii(this,i,this.lastMapPoint))},onSelectionChange:()=>{this.syncTray(),this.minimap?.refreshMinimap(),this.committedSelection().length&&this.collapseSectionCard(),this.syncSelectionTo3d()},onStatusChange:()=>{this.syncSeatMarks(),this.syncPrices(),this.a11yMenu?.syncCounts(),this.scheduleOfferRefresh(!0),this.evictTakenSelections(),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onHoldExpired:()=>{this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.holdConflicted=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.lapse.deferExpiryToast(()=>this.toast(M("picker.holdExpired",void 0)||"Your hold expired \u2014 seats released. Pick again.","warning")),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}this.confirmSeat?.id===t.id&&this.dismissConfirm(),this.tableDialog?.physicalSeatIds.includes(t.id)&&this.dismissTableDialog()},onSelectionLimit:()=>{this.toast(M("picker.maxTicketsForOrder",{count:this.maxTickets}),"warning"),this.opts.onSelectionLimit?.(this.maxTickets)},onViewChange:()=>{this.reanchorConfirm(),this.syncRung(),this.syncProjection(),this.minimap?.drawMinimapRect(),this.sectionCardOnView()},onSectionFocus:t=>this.showSectionCard(t),onDeckTap:()=>{this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()},onFocusSeat:t=>this.announceSeat(t),onSeatHover:t=>this.updateTooltip(t),onHint:t=>{t&&this.toast(t)},onSalesClosed:()=>this.setSalesClosed(!0),onError:t=>this.opts.onError?.(t)})}async render(){if(this.rendered)return this;let e=performance.now(),t={},i=T=>Math.round((performance.now()-T)*100)/100;this.rendered=!0,et();let n=performance.now(),r=Vt(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=on(this.opts.container),{root:c,els:p,mapHost:d}=Ms(l,(T,O)=>this.tf(T,O),this.opts.theme);this.root=c,this.els=p,this.mapHost=d,Ft(c,r,T=>{t.loadLocale=i(n),this.destroyed||this.applyActiveLocale(T,o)}),Jn(c,()=>[{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=i(a),t.skeletonPaint=i(e);let h=await this.loadChart(u,t,i);if(!h)return this;t.shellsPaint=i(e);let g=performance.now();if(this.startRealtime(),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 T=document.createElement("div");T.className="sl-testbadge",T.textContent=rn(M("picker.testMode"),to()),T.setAttribute("aria-label",M("picker.testMode")),T.title=this.tf("picker.testModeExplained","Bookings here are not real and no card is charged"),this.regions["top-left"].appendChild(T)}let m=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,an(this.els.logo,[this.opts.theme?.logoUrl,m?.logoUrl,h.posterUrl],this.opts.theme?.brandName??m?.brandName??h.eventName??"?"),this.els.name.textContent=h.eventName??"";let v=h.startsAt?Qt(h.startsAt,h.timezone??null,this.opts.locale):"";this.eventWhenText=v||null,this.els.meta.textContent=[h.venue,v].filter(Boolean).join(" \xB7 "),this.syncProjection(),this.buildBadge(m);let k=!!this.controller.doc&&this.controller.getExpandedSeats().some(T=>T.commercial?.restrictedView||T.commercial?.obstructedView);this.buildAccessibilityMenu(k),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=i(g);let S=performance.now();if(await this.restoreRememberedHold(),t.restoreHold=i(S),this.destroyed)return this;this.dismissSkeleton(),this.salesClosed&&this.applySalesClosed(),this.syncPrices(),this.syncTray(),this.resumeHostedOrder();let L=this.controller.doc,b=ii(this.opts.event),A=this.performanceGroup?.surface??(this.performanceGroup?"performance_group":null),x=A??"event",H={apiBase:this.apiBase,eventKey:this.opts.event,metricScope:x,surface:A==="season"?"season_picker":A==="performance_group"?"performance_group_picker":"seat_picker",ms:i(e),performanceProfile:t,chartDelivery:h.chartDelivery,seatCount:this.allSeats().length,objectCount:L?.objects.length??0,sectionCount:L?.objects.filter(T=>T.type==="section").length??0,floorCount:this.controller.getFloors().length,chartName:L?.name,view:this.buyerView,load:b,transport:this.opts.transport?"custom":"pubapi"};or(H,(T,O)=>this.emitAnalytics(T,O));let _=h.performanceProfile;return this.seatsRevealedReport=()=>this.emitAnalytics("chart_seats_revealed",ts({...H,performanceProfile:{...H.performanceProfile,..._}})),this.seatsRevealed&&this.seatsRevealedReport(),this.renderInfo=h,await this.registerAgentTools(),this}registerAgentTools(){return nr(this)}webMcpHost(e){return Zi(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=Ar(()=>{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.zoomToFit()),this.els.zfs.addEventListener("click",()=>this.toggleFullscreen()),this.fsChangeHandler=()=>{document.fullscreenElement||this.setFsFallback(!1),this.syncFullscreenButtons(),requestAnimationFrame(()=>this.controller.refitCurrentView())},document.addEventListener("fullscreenchange",this.fsChangeHandler);let t=this.els.sheetHead;if(t){let n=this.els.sheetToggle,r=c=>{e.dataset.sheet=c?"open":"peek",n?.setAttribute("aria-expanded",String(c)),n?.setAttribute("aria-label",c?this.tf("picker.collapseTicketPanel","Collapse ticket panel"):this.tf("picker.openTicketPanel","Open ticket panel"))};r(e.dataset.sheet==="open"),n?.addEventListener("click",c=>{c.stopPropagation(),r(e.dataset.sheet!=="open")}),this.els.peek?.addEventListener("click",c=>{let p=c.target.closest(".sl-sheet-go");p&&(c.stopPropagation(),p.dataset.act==="checkout"?this.handleCta():p.dataset.act==="best"||p.dataset.act==="find"?(p.dataset.act==="best"&&(this.baReopen=!0,this.baQty=Math.max(1,Math.min(this.baQty,this.maxTickets-this.totalTicketCount())),this.syncTray()),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 p=c.clientY-o;p<-18?(r(!0),a=!0):p>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 i=()=>{if(this.root?.dataset.layout!=="narrow")return;let n=this.root.getAttribute("data-prices-open")==="true";if(this.root.setAttribute("data-prices-open",String(!n)),this.els.pricesSec?.setAttribute("aria-expanded",String(!n)),!n&&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",n=>{n.target.closest("select,button")||i()}),this.els.pricesSec?.addEventListener("keydown",n=>{n.key!=="Enter"&&n.key!==" "||n.target.closest("select,button")||(n.preventDefault(),i())}),this.tipEl=document.createElement("div"),this.tipEl.setAttribute("role","tooltip"),this.tipEl.className="sl-tip",this.els.map.appendChild(this.tipEl),this.els.map.addEventListener("pointerdown",n=>{this.handleMapPointerDown(n)},!0),this.els.map.addEventListener("mousemove",n=>{if(this.tipPinned)return;let r=this.els.map.getBoundingClientRect();this.tipPos={x:n.clientX-r.left,y:n.clientY-r.top},this.tipEl&&this.tipEl.style.display!=="none"&&this.placeTooltip()}),this.els.cta.addEventListener("click",()=>{this.handleCta()}),this.els.holdChange?.addEventListener("click",()=>{this.handleChangeSeats()})}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 i=e.clientWidth;if(i<=0)return;let n=e.clientHeight,r=i!==this.pickerLayoutSize.width||n!==this.pickerLayoutSize.height;this.pickerLayoutSize={width:i,height:n},this.reportFramedHeight();let o=i<640?"narrow":"wide",a=n<560?"compact":"comfortable";(e.dataset.layout!==o||e.dataset.density!==a)&&(e.dataset.layout=o,e.dataset.density=a,o==="narrow"&&!e.dataset.sheet&&(e.dataset.sheet="peek"),this.dockLayoutChrome(),this.syncMinimapForLayout(),this.lastTrayKeys.size&&this.syncTray()),r&&(this.minimap?.refreshMinimap(),this.fitSectionStripCount())};this.ro=new ResizeObserver(t),this.ro.observe(e),t(),requestAnimationFrame(t)}async loadChart(e,t,i){let n=performance.now(),r=await this.controller.render(e);return t.loadChartAndStatuses=i(n),this.destroyed?null:r?(Object.assign(t,r.performanceProfile),r):(ke({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:He(this.opts.event),transport:this.opts.transport?"custom":"pubapi"}),this.els.boot.innerHTML=`<div class="sl-boot-title">${this.tf("picker.mapDidNotLoad","The seat map didn\u2019t load")}</div><div>${this.tf("picker.checkConnection","Check your connection and try again.")}</div><button type="button" class="sl-boot-retry">${this.tf("picker.accessRetry","Try again")}</button>`,this.els.boot.querySelector("button").addEventListener("click",()=>{let o=this.opts.container,a=this.opts;this.destroy(),new s({...a,container:o}).render()}),null)}resumeHostedOrder(){if(this.checkoutMode!=="hosted")return;let e=Jr(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 pi(t,{event:String(this.opts.event),chart:()=>this.controller.doc?.name??null,needs:()=>this.controller.getAccessNeeds(),hasLimitedView:e,tf:(i,n)=>this.tf(i,n),isColorblindSafe:()=>this.cbSafe,setColorblindSafe:i=>this.setColorblindSafe(i),isLimitedViewHidden:()=>this.limitedViewFilter,setLimitedViewHidden:i=>{this.limitedViewFilter=i,this.controller.setCommercialLimitedFilter(i),this.pushAvailabilityTo3d()},applyAccessibilityFilter:i=>{this.controller.setAccessibilityFilter(i),this.syncPrices(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},focusSeatsForFilter:()=>this.focusSeatsForFilter()}),this.cbEl=this.a11yMenu.colorblindRow())}focusSeatsForFilter(){this.controller.focusAccessibilityFilter?.()||this.rungsEl&&this.controller.getRung()!=="seats"&&(this.controller.setRung("seats"),this.collapseSectionCard(),this.syncRung())}setAccessibilityFilter(e){this.controller.setAccessibilityFilter(e),this.a11yMenu?.syncAccessibilityFilter(e),this.pushAvailabilityTo3d()}dockLayoutChrome(){let e=this.root?.dataset.layout==="narrow";this.applyPanelCollapsed();let t=this.els.zfs,i=this.els.headInfo?.parentElement;t&&i&&t.parentElement!==i&&(t.classList.add("sl-fs-pill"),i.insertBefore(t,this.els.hold??null));let n=this.els.pricesSec;n&&(e?(n.setAttribute("role","button"),n.tabIndex=0,n.setAttribute("aria-expanded",String(this.root?.getAttribute("data-prices-open")==="true"))):(n.removeAttribute("role"),n.removeAttribute("aria-expanded"),n.tabIndex=-1)),this.lastSection&&this.renderSectionCard(this.lastSection)}buildExtendPrompt(){let e=document.createElement("div");e.className="sl-extend",e.setAttribute("role","status"),e.innerHTML='<span class="sl-extend-txt" data-ref="extendTxt"></span><button type="button" class="sl-extend-btn" data-ref="extendBtn"></button>',(this.regions["bottom-center"]??this.els.map).appendChild(e),this.extendEl=e,this.els.extendTxt=e.querySelector('[data-ref="extendTxt"]'),this.els.extendBtn=e.querySelector('[data-ref="extendBtn"]'),this.els.extendBtn.textContent=this.tf("picker.addTime","Add time"),this.els.extendBtn.addEventListener("click",()=>{this.handleExtend()})}buildBookedOverlay(){let e=document.createElement("div");e.className="sl-booked",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.innerHTML=`<div class="sl-booked-badge"><svg viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg></div><div class="sl-booked-title">${this.tf("picker.allSetTitle","You're all set")}</div><div class="sl-booked-sub" data-ref="bookedSub"></div><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 y(e,t)}buildSoldoutOverlay(){if(!this.els.map)return;let e=document.createElement("div");e.className="sl-soldout",e.setAttribute("role","status");let t=(this.controller.doc?.theme?.brandName??this.opts.theme?.brandName??this.els.name?.textContent??this.tf("picker.soldOutEyebrow","This event")).toUpperCase(),i=document.createElement("div");i.className="sl-soldout-eyebrow",i.textContent=t;let n=document.createElement("div");n.className="sl-soldout-title",n.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(i,n,r),this.els.map.appendChild(e),this.soldoutEl=e}syncSoldout(e,t){let i=this.controller.getGAAreas().length>0,n=this.isSoldOut(e,t,i);n!==this.soldOut&&(this.soldOut=n,this.soldoutEl?.classList.toggle("on",n))}isSoldOut(e,t,i){return!i&&e.length>0&&e.every(n=>(t[n.key]??0)===0)}setSalesClosed(e){let t=e||!!this.opts.readOnly;this.salesClosed!==t&&(this.salesClosed=t,this.applySalesClosed())}applySalesClosed(){this.salesClosed&&this.tableDialog&&!this.tableDialogHeld&&this.cancelTableDialog();let e=this.els.closedPill;if(e){e.classList.toggle("on",this.salesClosed);let t=this.els.closedPillText??e;t.textContent=this.tf("picker.salesClosedPill","Sales are closed")}this.root?.setAttribute("data-sales-closed",String(this.salesClosed)),this.salesClosed&&this.srEl&&(this.srEl.textContent=this.tf("picker.salesClosedToast","Sales are closed for this event.")),this.syncCta(),this.syncTray()}badgeHidden(e){return!!(this.opts.hideBadge||e?.hideBadge)}buildBadge(e){if(this.badgeHidden(e))return;let t=this.els.foot;if(!t)return;let i=document.createElement("a");i.className="sl-powered",i.href="https://seatlayer.io/?ref=picker",i.target="_blank",i.rel="noopener noreferrer",i.setAttribute("aria-label",this.tf("picker.poweredBy","Powered by SeatLayer"));let n=document.createElement("span");n.className="sl-powered-mark",n.setAttribute("aria-hidden","true"),n.innerHTML=Ut;let r=document.createElement("span");r.textContent=this.tf("picker.poweredBy","Powered by SeatLayer"),i.append(n,r),t.appendChild(i)}buildRegions(){if(!this.els.map)return;let e=["top-left","top-center","top-right","left-rail","bottom-left","bottom-center","bottom-right"];for(let t of e){let i=document.createElement("div");i.className="sl-anchor",i.dataset.region=t,this.els.map.appendChild(i),this.regions[t]=i}}cssVar(e){return this.root?getComputedStyle(this.root).getPropertyValue(e).trim():""}reducedMotion(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}scheduleMotion(e,t){let i=setTimeout(()=>{this.motionTimers.delete(i),this.destroyed||e()},t);this.motionTimers.add(i)}animateOnce(e,t,i=600){!e||this.reducedMotion()||(e.classList.remove(t),e.offsetWidth,e.classList.add(t),this.scheduleMotion(()=>e.classList.remove(t),i))}flashPickedSeat(e){this.reducedMotion()||this.controller.flashSeat(e,this.cssVar("--sl-accent")||"#f4b740")}flashHeldSeats(e){if(this.reducedMotion())return;let t=(e.items??[]).filter(i=>i.objectType!=="ga").slice(0,10).map(i=>this.controller.seatByLabel(i.label)).filter(i=>!!i);rr({regions:this.els,categories:this.controller.doc?.categories,pop:i=>this.controller.flashSeat(i,this.cssVar("--sl-accent")||"#f4b740"),focus:(i,n)=>this.controller.focusSection(i,n),screenPoint:i=>this.controller.worldToScreen(i),schedule:(i,n)=>this.scheduleMotion(i,n)},t)}committedSelection(){let e=this.confirmSeat?.id,t=this.tableDialog&&!this.tableDialogHeld?this.tableDialog.id:null;return this.controller.getSelection().filter(i=>i.id!==e&&i.id!==t)}pendingSelectionCount(){let e=this.hold?.items??[],t=new Set(e.map(n=>n.label));return this.committedSelection().filter(n=>!t.has(n.label)).reduce((n,r)=>n+(r.quantity??1),0)+Be(this.gaQty,this.hold?.items??[])}heldTicketCount(){return(this.hold?.items??[]).reduce((e,t)=>e+(t.quantity??1),0)}totalTicketCount(){let e=new Set((this.hold?.items??[]).map(i=>i.label)),t=this.committedSelection().filter(i=>!e.has(i.label)).reduce((i,n)=>i+(n.quantity??1),0);return this.heldTicketCount()+t+Be(this.gaQty,this.hold?.items??[])}updateSelectionCapacity(){let e=new Set((this.hold?.items??[]).map(n=>n.label)),t=this.committedSelection().filter(n=>e.has(n.label)).reduce((n,r)=>n+(r.quantity??1),0),i=Math.max(0,this.maxTickets-this.heldTicketCount()-Be(this.gaQty,this.hold?.items??[]));this.controller.setMaxSelection(t+i)}syncCta(e=this.lastTrayCount,t=this.pendingSelectionCount()){let i=this.els.cta;if(!i)return;if(this.salesClosed){i.disabled=!0,i.textContent=this.tf("picker.salesClosedCta","Sales closed");return}if(this.confirmSeat||this.tableDialog&&!this.tableDialogHeld){i.disabled=!0,i.textContent=this.tableDialog?this.tf("picker.confirmYourTable","Confirm your table"):this.tf("picker.confirmOrCancelSeat","Confirm or cancel this seat");return}if(this.ctaPhase==="holding"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.securingSeats","Securing your seats\u2026")}`;return}if(this.ctaPhase==="checkout"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.openingCheckout","Opening secure checkout\u2026")}`;return}let n=!this.hold&&this.performanceGroup?.selectionMode==="per_performance"?this.performanceGroup.submissionState?.():null;if(n&&!n.ready){i.disabled=!0,i.textContent=this.tf("picker.completeAllPerformances","Complete all performances ({complete}/{total})").replace("{complete}",String(n.complete)).replace("{total}",String(n.total));return}let r=this.controller.getSelectionValidity(e);if(r&&!r.isValid){i.disabled=!0,i.textContent=ns(r,(o,a)=>this.tf(o,a),!0);return}i.disabled=e===0,i.textContent=this.hold?t?M("picker.secureMoreAndCheckout",{count:t}):this.tf("picker.continueToCheckout","Continue to checkout"):e?this.performanceGroup?this.tf("picker.holdSeatsForAllPerformances","Hold seats for all {count} performances").replace("{count}",String(this.performanceGroup.performanceCount)):this.tf("picker.holdSeatsAndCheckout","Hold seats & checkout"):this.tf("picker.selectSeats","Select seats")}setCtaPhase(e){this.ctaPhase=e,this.syncCta(),this.renderPeek(this.lastTrayCount,this.lastTrayTotal,this.pendingSelectionCount())}async runCheckoutHandoff(e,t){this.setCtaPhase("checkout");try{await this.checkoutHandoff(e,t)}finally{this.ctaPhase==="checkout"&&!this.bookedShown&&this.setCtaPhase("idle")}}holdStorageKey(){return`@seatlayer/hold/v1/${encodeURIComponent(this.apiBase)}/${encodeURIComponent(this.opts.event)}`}rememberedHoldId(){if(this.opts.initialHoldId)return this.opts.initialHoldId;if(this.opts.restoreHold===!1||typeof window>"u")return null;try{return window.sessionStorage.getItem(this.holdStorageKey())}catch{return null}}rememberHold(e){if(!(this.opts.restoreHold===!1||typeof window>"u"))try{window.sessionStorage.setItem(this.holdStorageKey(),e.holdId)}catch{}}forgetHold(){if(!(typeof window>"u"))try{window.sessionStorage.removeItem(this.holdStorageKey())}catch{}}async resumeHoldFromServer(e,t){try{let i=await this.controller.resumeHold(e);if(!i||this.destroyed)return null;let n={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items};return this.hold=n,this.handedOff=!0,this.bookedShown=!1,this.ctaPhase="idle",this.startHoldTimer(n.expiresAt),this.rememberHold(n),this.syncTray(),this.emitHoldChange(),this.opts.onHoldRestored?.(n,n.seats??[],this.buildHandoff(n)),t&&this.toast(this.tf("picker.heldTicketsRestored","Your held tickets have been restored."),"success"),n}catch(i){let n=i?.status;return n===404||n===409?this.forgetHold():this.opts.onError?.(i),null}}async restoreRememberedHold(){let e=this.rememberedHoldId();e&&await this.resumeHoldFromServer(e,!0)}activeFloorObjects(){let e=this.controller.doc;if(!e)return[];let t=e.floors;if(t?.length){let i=this.controller.getActiveFloorId();return(t.find(n=>n.id===i)??t[0]).objects??[]}return e.objects??[]}buildMinimap(){!this.els.map||this.root?.dataset.layout==="narrow"||(this.minimap=qn({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 ai(this,e)}catPriceRange(e){return li(this,e)}buildPriceFilter(){if(this.suppressPricing||!this.els.prices||!this.els.pricesSec)return;let e=Sn(this.controller.doc?.categories??[],this.legendDeps());if(e.length<2)return;let t=document.createElement("select");t.className="sl-price-select",t.setAttribute("aria-label",this.tf("picker.filterAndFocusByPrice","Filter and focus seats by price"));let i=document.createElement("option");i.value="all",i.textContent=this.tf("picker.allPrices","All prices"),t.appendChild(i);for(let n of e){let r=document.createElement("option");r.value=n.id,r.textContent=n.label,t.appendChild(r)}this.els.pricesSec.appendChild(t),this.priceSelect=t,t.addEventListener("change",()=>{this.applyPriceBand(e.find(n=>n.id===t.value)?.keys??null)})}applyPriceBand(e){if(this.focusedCatKey=null,this.priceBandKeys=e?new Set(e):null,this.priceSelect){let t=e?this.priceSelect.value:"all";this.priceSelect.value!==t&&(this.priceSelect.value=t)}this.controller.setCategoryFilter(e),this.controller.focusCategoryFilter(e),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)}buildArenaChrome(){let e=this.controller.doc;if(!e||!this.els.map)return;let t=e.objects.some(i=>i.type==="section")||(e.floors??[]).some(i=>i.objects.some(n=>n.type==="section"));if(this.canOffer3d()){let i=document.createElement("div");i.className="sl-projection",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.venueView","Venue view")),i.innerHTML=`<button type="button" data-view="map" aria-pressed="true" title="${this.tf("picker.flat2dMap","Flat 2D map")}">${this.tf("picker.map","Map")}</button><button type="button" data-view="venue3d" aria-pressed="false" title="${this.tf("picker.interactive3dVenueView","Interactive 3D venue view")}">3D</button>`,i.querySelectorAll("button").forEach(n=>{if(n.dataset.view==="venue3d")for(let r of["pointerenter","focus","pointerdown"])n.addEventListener(r,Di,{once:!0});n.addEventListener("click",()=>{this.setBuyerView(n.dataset.view)})}),this.regions["top-right"].appendChild(i),this.projectionEl=i,this.syncProjection()}if(t){let i=[...e.objects,...(e.floors??[]).flatMap(p=>p.objects)],n=new Set((e.zones??[]).map(p=>p.id)),o=i.some(p=>p.type==="section"&&typeof p.zone=="string"&&n.has(p.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",M("picker.zoomLevel"));let l={zones:M("picker.rungLabel.zones"),sections:M("picker.rungLabel.sections"),seats:M("picker.rungLabel.seats")},c={zones:M("picker.rungTip.zones"),sections:M("picker.rungTip.sections"),seats:M("picker.rungTip.seats")};a.innerHTML=o.map(p=>`<button type="button" data-rung="${p}" title="${c[p]}" aria-pressed="false">${l[p]}</button>`).join(""),a.querySelectorAll("button").forEach(p=>{p.addEventListener("click",()=>{let d=p.dataset.rung;this.controller.setRung(d),d==="seats"&&this.collapseSectionCard()})}),this.regions["top-center"].appendChild(a),this.rungsEl=a,this.syncRung()}if(this.controller.isMultiFloor()){let i=jn({floors:this.controller.getFloors(),tf:(n,r)=>this.tf(n,r),onChoose:n=>{n===""?this.controller.setFloorOverview(!0):this.controller.setFloor(n),this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()}});this.regions["left-rail"].appendChild(i),this.floorsEl=i,this.syncFloors()}}syncRung(){let e=this.controller.getRung(),t=this.controller.seatsRevealed?.()??(e==="seats"||!!this.controller.getFocusedSection?.());this.root&&(this.root.dataset.zoomed=String(t)),this.minimap?.setAutoOpen(!1),this.rungsEl&&this.rungsEl.querySelectorAll("button").forEach(i=>{let n=i.dataset.rung===e;i.classList.toggle("on",n),i.setAttribute("aria-pressed",String(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||!Wt()?!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)?no/2:no}syncFloors(){Gn(this.floorsEl,this.controller.getActiveFloorId(),this.controller.isFloorOverview())}get sectionCard(){return this.sectionCardCache||(this.sectionCardCache=new ni({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()}fitSectionStripCount(){this.sectionCard.fitStripCount()}sectionNeighbours(e){let t=this.activeFloorObjects().filter(n=>n.type==="section"&&!this.controller.isSectionClosed(n.id)&&this.controller.getSectionSeatCount(n.id)>0);if(t.length<2)return null;let i=t.findIndex(n=>n.id===e);return i<0?null:{previous:t[(i-1+t.length)%t.length],next:t[(i+1)%t.length]}}markedSeatAnnouncement(e){let t=ds(this.controller.getRenderer()?.getSeatMark?.(e.id),this.performanceGroup?.nights?.());return Vr(t,e.displayLabel??e.label,this.opts.locale)}announceSeat(e){if(!this.srEl)return;if(!e){this.srEl.textContent="";return}let t=this.markedSeatAnnouncement(e);if(t){this.srEl.textContent=t;return}let i=this.controller.doc?.categories.find(h=>h.key===e.categoryKey),n=this.controller.getStatus(e.id)??"free",r=n==="free"?this.tf("picker.statusAvailable","available"):n==="held"?this.tf("picker.statusOnHold","on hold"):this.tf("picker.statusTaken2","taken"),o=i?this.catPriceRange(i):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),p=rt(c),d=c?.rowLabel??c?.displayLabel??e.displayLabel??e.label,u=l?`${p} ${d}, ${l.bookingMode==="variable"?M("picker.minToMaxGuests",{min:l.minOccupancy,max:l.maxOccupancy}):M("picker.capacityGuests",{count:l.capacity})}`:c?.objectType==="booth"?`${p} ${d}`:c?.objectType==="table"?`${p} ${d}, ${M("picker.seatNumberLower",{label:c.seatNumber??e.label})}`:M("picker.seatLabel",{label:c?.displayLabel??e.displayLabel??e.label});this.srEl.textContent=`${u}, ${i?.label??e.categoryKey}${a?`, ${a}`:""}, ${r}`}showTableDialog(e,t,i){this.dismissTableDialog(!1),this.tableDialog={...e},this.tableDialogHeld=t,this.tableDialogReturnFocus=i??document.activeElement;let n=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=Vn(e,{variable:r,held:t,typeWord:rt(e),categoryLabel:n?.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],p=l[l.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),p.focus()):!a.shiftKey&&document.activeElement===p&&(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 i=t.querySelector("output[data-table-qty]");i&&(i.value=String(e.quantity));let n=t.querySelector("input[data-table-qty]");n&&(n.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 i=this.tableDialogEl?.querySelector(".sl-table-confirm");if(i&&(i.disabled=!0,i.textContent=t?this.tf("picker.updatingEllipsis","Updating\u2026"):this.tf("picker.selectingEllipsis","Selecting\u2026")),t){try{let n=await this.controller.replaceTableQuantity(e.label,e.quantity,this.opts.holdTtlMs);if(!n){this.toast(this.tf("picker.guestCountCouldNotBeSecured","That guest count could not be secured. Your current table hold is unchanged."),"warning"),this.renderTableDialogState(),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"));return}this.hold={holdId:n.holdId,expiresAt:n.expiresAt,seats:n.seats,items:n.items},this.startHoldTimer(n.expiresAt),this.dismissTableDialog(),this.syncTray(),this.emitHoldChange(),this.toast(M("picker.tableUpdatedForGuests",{label:e.label,count:e.quantity}),"success")}catch(n){this.opts.onError?.(n),this.toast(this.tf("picker.guestCountNoLongerAvailable","That guest count is no longer available. Your current hold is unchanged."),"error"),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"))}return}if(!this.controller.setTableQuantity(e.label,e.quantity)){i&&(i.disabled=!1,i.textContent=e.bookingMode==="variable"?this.tf("picker.selectTable","Select table"):this.tf("picker.selectWholeTable","Select whole table"));return}this.dismissTableDialog(),this.collapseSectionCard(),this.syncTray()}cancelTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;this.dismissTableDialog(),e&&!t&&this.controller.deselect(e.physicalSeatIds)}dismissTableDialog(e=!0){let t=this.tableDialogReturnFocus;this.tableDialogEl?.remove(),this.tableDialogEl=null,this.tableDialog=null,this.tableDialogHeld=!1,this.tableDialogReturnFocus=null,e&&requestAnimationFrame(()=>(t?.isConnected?t:this.root)?.focus())}showConfirm(e){let t=this.confirmSeat?.id;this.confirmEl?.remove(),this.confirmEl=null,this.confirmSeat=e,this.root?.setAttribute("data-confirming","true"),this.els.side?.toggleAttribute("inert",!0),Object.values(this.regions).forEach(x=>x.toggleAttribute("inert",!0)),this.controller.setSelectionFocus(e.id),t&&t!==e.id&&this.controller.deselect([t]),this.tipEl&&(this.tipEl.style.display="none");let i=this.controller.seatDetails(e.id),n=this.controller.doc?.categories.find(x=>x.key===e.categoryKey),r=i?.price??(n?.tiers?.length?n.tiers[0].price:n?.price),o=r!=null?this.paidPrice(e.categoryKey,i?.tierId??n?.tiers?.[0]?.id??null,r,e.label):void 0,a=On(i,e.displayLabel??e.label,rt(i)),l=i?.tiers??n?.tiers??[],c=i?.tierId??l[0]?.id,p=this.suppressPricing?"":Dn(l,c,x=>this.money(this.paidPrice(e.categoryKey,x.id,x.price,e.label))),d=this.buyerView==="venue3d",u=this.performanceGroup?.confirmDateSelection??void 0,h=u?this.performanceGroup?.nights?.()??[]:[],g=u?Dr(h,u,e.id,(x,H)=>this.tf(x,H)):"",m=document.createElement("div");m.className="sl-confirm sl-mo-in",g&&m.classList.add("sl-confirm-group-dates"),m.setAttribute("role","dialog"),m.setAttribute("aria-label",M("picker.confirmSeatLabel",{label:e.label}));let v=n?.color??"#6e7bff";m.style.setProperty("--sl-cat",v);let k=String(i?.categoryLabel??n?.label??e.categoryKey),S=this.controller.categoryAvailability()[e.categoryKey],L=typeof S=="number"&&S>0?Fe("picker.leftCount",S):"";m.innerHTML=$n({identityFields:a,identity:Rn(i,e.displayLabel??e.label,rt(i)),marker:si(i?.wheelchairSpaceType),see3dPill:_n(this.canOffer3d(),d),categoryColor:n?.color??"#6e7bff",categoryLabel:k,priceLabel:!this.suppressPricing&&o!=null?this.money(o):"",categoryLeftLabel:L,tierChoices:p,groupDates:g,wheelchair:Ln(i?.wheelchairSpaceType),commercial:Pn(e.commercial),thumb:this.seatViewEnabled()&&this.buyerView!=="venue3d"?this.confirmThumbHtml(e):"",inspect:d?`${In(e,this.suppressPricing?`${i?.displayLabel??e.displayLabel??e.label}`:`${i?.displayLabel??e.displayLabel??e.label} \xB7 ${o==null?this.tf("picker.priceNotSupplied","Price not supplied"):this.money(o)}`,d)}<div class="sl-confirm-inspect-row">${Hn(e,d?this.view3dCompareSeatIds:null)}${Ui(this.canOffer3d(),d)}</div>`:Ui(this.canOffer3d(),d),cancelLabel:M("common.cancel"),selectLabel:this.addSeatLabel(i?.objectType)}),this.els.map.appendChild(m),this.confirmEl=m;let b=m.querySelector(".sl-confirm-thumb"),A=b?.closest(".sl-confirm-thumbwrap")??null;if(b&&A){let x=!1,H=()=>{if(x||!A.isConnected)return;x=!0;let T=()=>{A.remove(),this.confirmEl===m&&this.reanchorConfirm()};if(this.reducedMotion()||typeof requestAnimationFrame!="function"){T();return}A.style.height=`${A.offsetHeight}px`,A.classList.add("sl-confirm-thumb-out"),requestAnimationFrame(()=>{A.style.height="0px",A.style.opacity="0"}),setTimeout(T,nc)};b.addEventListener("error",H),b.addEventListener("load",()=>{b.naturalWidth||H()});let _=e.viewMeta?.previewUrl??e.viewUrl;_?this.buyerAssetUrls.resolve(_).then(T=>{if(!(!m.isConnected||this.confirmEl!==m)){if(!T){H();return}b.src=T}}).catch(T=>{H(),this.opts.onError?.(T)}):H()}this.reanchorConfirm(),m.querySelector(".sl-confirm-view")?.addEventListener("click",()=>{this.openSeatView(e)}),m.querySelector(".sl-confirm-confidence")?.addEventListener("click",x=>{this.openSeatConfidencePassport(e,x.currentTarget instanceof HTMLElement?x.currentTarget:null)}),m.querySelector(".sl-confirm-compare")?.addEventListener("click",()=>this.saveView3dComparisonSeat(e)),m.querySelectorAll("[data-confirm-tier]").forEach(x=>{x.addEventListener("click",()=>{let H=x.dataset.confirmTier,_=l.find(O=>O.id===H);if(!_)return;this.controller.setSeatTier(e.id,_.id),m.querySelectorAll("[data-confirm-tier]").forEach(O=>{O.setAttribute("aria-pressed",String(O===x))});let T=m.querySelector(".sl-confirm-price");T&&(T.textContent=this.money(this.paidPrice(e.categoryKey,_.id,_.price,e.label))),this.reanchorConfirm()})}),m.querySelectorAll(".sl-confirm-3d,.sl-confirm-3dpill").forEach(x=>{x.addEventListener("pointerdown",Di,{once:!0}),x.addEventListener("click",()=>{this.buyerView==="venue3d"?(this.dismissConfirm(),this.view3dHandle?.flyToSeat(e.id)):(this.view3dReturnSeat=e,this.dismissConfirm(),this.enter3d(e.id))})}),Nr(m,u,(x,H)=>this.tf(x,H),()=>this.reanchorConfirm()),m.querySelector(".sl-confirm-add").addEventListener("click",()=>{this.commitConfirm()}),m.querySelector(".sl-confirm-cancel").addEventListener("click",()=>this.cancelConfirm()),requestAnimationFrame(()=>{let x=m.querySelector(".sl-confirm-add");x?.focus(),this.liftToastOverConfirm(),this.inviteCommit(m,x)})}inviteCommit(e,t){if(!t||this.reducedMotion())return;t.classList.add("sl-confirm-add-invite");let i=()=>t.classList.remove("sl-confirm-add-invite");e.addEventListener("pointerdown",i,{once:!0}),e.addEventListener("keydown",i,{once:!0}),t.addEventListener("focus",i,{once:!0})}addSeatLabel(e){return e&&e!=="seat"?this.tf("picker.select","Select"):this.tf("picker.addSeat","Add seat")}reanchorConfirm(){if(!this.confirmEl||!this.confirmSeat||this.root?.dataset.view3d==="on")return;let e=this.controller.worldToScreen({x:this.confirmSeat.x,y:this.confirmSeat.y});if(this.root?.dataset.layout==="narrow"){let l=Yr(e.y,{height:this.els.map.clientHeight},{height:this.confirmEl.offsetHeight||230});l.placement==="above"?(this.confirmEl.dataset.placement="above",this.confirmEl.style.bottom=`${l.bottom}px`):(this.confirmEl.removeAttribute("data-placement"),this.confirmEl.style.removeProperty("bottom")),Ns(this.confirmEl,e,this.els.map),this.liftToastOverConfirm();return}let t=this.els.map.clientWidth,i=this.els.map.clientHeight,n=this.confirmEl.offsetWidth||276,r=this.confirmEl.offsetHeight||230,o=this.confirmEl.classList.contains("sl-confirm-group-dates"),a=Qr(e,{width:t,height:i},{width:n,height:r},o);this.confirmEl.dataset.placement=a.placement,this.confirmEl.style.left=`${a.left}px`,this.confirmEl.style.top=`${a.top}px`,Gt(this.confirmEl,e,{left:a.left,top:a.top,width:n,height:r})}dismissConfirm(){this.confirmEl&&Me(this.confirmEl),this.confirmEl=null,this.confirmSeat=null,this.liftToastOverConfirm(),this.root?.removeAttribute("data-confirming"),Object.values(this.regions).forEach(e=>e.toggleAttribute("inert",!1)),this.applyPanelCollapsed(),this.controller.setSelectionFocus(null)}async commitConfirm(){let e=this.confirmSeat;if(!e)return;let i=this.confirmEl?.querySelector(".sl-confirm-add")??null;if(i?.classList.contains("is-adding")||!await $r(this.confirmEl,e.id,this.performanceGroup?.confirmDateSelection??void 0))return;this.collapseSectionCard(),this.confirmSeat=null,this.syncTray(),this.syncSelectionTo3d();let n=()=>{this.dismissConfirm(),es(this.els,this.controller.worldToScreen(e),e,this.controller.doc?.categories)};if(!i||this.reducedMotion()){n();return}i.classList.remove("sl-confirm-add-invite"),i.classList.add("is-adding"),i.setAttribute("aria-disabled","true");let r=i.querySelector(".sl-confirm-add-t");r&&(r.textContent=this.tf("picker.added","Added")),this.scheduleMotion(n,ec)}cancelConfirm(){let e=this.confirmSeat;e&&(this.controller.deselect([e.id]),this.confirmSeat&&this.dismissConfirm(),this.syncSelectionTo3d(),this.root?.focus({preventScroll:!0}))}closeConfirm(){this.dismissConfirm()}seatViewEnabled(){return this.opts.seatView!==!1}allSeats(){return this.allSeatsCache||(this.allSeatsCache=[...this.controller.getExpandedSeats()]),this.allSeatsCache}async openSeatView(e){if(!this.root||!this.seatViewEnabled())return;let t=++this.seatViewGen,i=this.controller.doc,n=this.controller.getActiveFloorId(),r=e.focalPoint??i?.floors?.find(d=>d.id===n)?.focalPoint??i?.focalPoint??{x:0,y:0},o,a,l=!1;if(e.viewUrl){let d,u=null;try{let g=e.viewMeta?.previewUrl;g&&g!==e.viewUrl?(u=await this.buyerAssetUrls.resolve(g),d=e.viewUrl):d=await this.buyerAssetUrls.resolve(e.viewUrl)}catch(g){t===this.seatViewGen&&this.opts.onError?.(g);return}if(t!==this.seatViewGen||!d||e.viewMeta?.previewUrl&&e.viewMeta.previewUrl!==e.viewUrl&&!u||!this.root||!this.seatViewEnabled())return;let h={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}:{}};o=h,a=io(h),l=Ql(h)}else{let d;try{let{generateSeatPanorama:u}=await Yt();d=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:d.url,generated:!0},a=M("picker.illustrationCaption",{m:d.distanceM})}this.closeSeatView(!1);let c=M("picker.viewFromSeat",{label:e.label}),p=Jt({root:this.root,source:o,caption:a,real:l,closeLabel:this.tf("picker.close","Close"),dragHint:it(),viewFromSeatLabel:c,real360Label:M("picker.real360"),previewLabel:M("picker.preview"),resolveAsset:d=>this.buyerAssetUrls.resolve(d),onClose:()=>this.closeSeatView()});this.viewEl=p.element,this.viewCleanup=()=>p.dispose()}closeSeatView(e=!0){e&&(this.seatViewGen+=1),this.viewCleanup?.(),this.viewCleanup=null,this.viewEl?.remove(),this.viewEl=null}money(e){let t=this.opts.pricing?.formatter;if(t)return t(e,this.currency);let i=Number.isInteger(e);return Kl(e,this.currency,{locale:this.opts.locale,fallback:(n,r)=>`${n} ${r}`,...i?{minimumFractionDigits:0,maximumFractionDigits:0}:{}})}scheduleOfferBoundary(e){if(this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerBoundaryTimer=null,!this.api.availability||this.destroyed)return;let t=Date.now(),i=En(e,t);if(i==null)return;let n=6*36e5,r=Math.min(Math.max(i-t+1e3,1e3),n);this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},r)}scheduleOfferRefresh(e){!this.api.availability||this.destroyed||(this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerRefreshTimer=setTimeout(()=>{this.offerRefreshTimer=null,this.refreshOfferAvailability(e)},e?180:0))}async refreshOfferAvailability(e){if(!(!this.api.availability||this.destroyed))try{let t=await this.api.availability(this.opts.event,e);if(this.destroyed)return;let i=zi(t);if(!i)return;this.offerAvailability=i,this.applyChannelPricing(i.channelPricing),this.scheduleOfferBoundary(i);let n=ji(i),r={...this.hostPricing?.prices??{},...n},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?.(i)}catch{!this.destroyed&&!this.offerBoundaryTimer&&!document.hidden&&(this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},3e4))}}offerPrice(e){return e?this.offerAvailability?.prices.find(t=>t.categoryKey===e)??null:null}applyChannelPricing(e){this.channelByObject.clear(),this.pricesByChannel.clear();for(let t of e?.channels??[])this.pricesByChannel.set(t.channelId,t.priceOverrides);for(let t of e?.objects??[])this.pricesByChannel.has(t.channelId)&&this.channelByObject.set(t.label,t.channelId)}syncOffer(){let e=this.els.offer;if(!e)return;if(this.suppressPricing){e.classList.remove("has"),e.replaceChildren();return}let t=this.offerAvailability,i=t?.release??null,n=i?null:t?.upcoming??null;if(!t||t.state==="closed"||t.state==="sold-out"||!i&&!n){e.classList.remove("has"),e.replaceChildren();return}let r=i??n,o=document.createElement("div");o.className="sl-offer-main";let a=document.createElement("div");a.className="sl-offer-copy";let l=document.createElement("span");l.className="sl-offer-kicker",l.textContent=i?this.tf("picker.currentTicketOffer","Current ticket offer"):this.tf("picker.upcomingTicketOffer","Upcoming ticket offer");let c=document.createElement("strong");c.className="sl-offer-name",c.textContent=r.name||(i?this.tf("picker.currentOffer","Current offer"):this.tf("picker.scheduledOffer","Scheduled offer"));let p=document.createElement("span");p.className="sl-offer-line";let d=[];i&&t.fromPrice!=null&&d.push(this.money(t.fromPrice/100)),i&&r.remaining!=null&&d.push(M("picker.offerRemainingAvailable",{count:r.remaining})),i&&r.endsAt!=null&&d.push(M("picker.offerUntil",{time:Qt(r.endsAt,this.eventTimezone,this.opts.locale)})),n?.startsAt!=null&&d.push(M("picker.offerStarts",{time:Qt(n.startsAt,this.eventTimezone,this.opts.locale)})),p.textContent=d.join(" \xB7 "),a.append(l,c,p);let u=document.createElement("details");u.className="sl-offer-info";let h=document.createElement("summary");h.setAttribute("aria-label",M("picker.howOfferWorks",{name:c.textContent??""})),h.textContent="i";let g=document.createElement("div");g.className="sl-offer-detail",g.textContent=i?this.tf("picker.offerDetailActive","This price applies automatically to eligible seats. Tickets in active carts temporarily reduce the available quantity; released or expired holds return it. When the offer ends, the next matching offer or normal ticket price takes over."):this.tf("picker.offerDetailUpcoming","Tickets are available at their normal price now. This scheduled offer will apply automatically to eligible seats when it starts."),u.append(h,g),o.append(a,u),e.replaceChildren(o),e.classList.add("has")}paidPrice(e,t,i,n){let r=n?this.channelByObject.get(n):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?i:typeof o=="number"?o:t&&o.tiers?.[t]!==void 0?o.tiers[t]:o.base??i}legendDeps(){return{colorOf:e=>this.controller.getRenderer()?.categoryDisplayColor?.(e.key)??e.color,rangeOf:e=>this.catPriceRange(e),priceOf:e=>this.catPrice(e),offerOf:e=>this.offerPrice(e),money:e=>this.money(e),esc:I}}syncPriceRail(e,t,i=this.legendDeps()){let n=this.els.railScroll,r=e.length>1;if(this.els.rail?.classList.toggle("has",r),!n)return;n.innerHTML=r?kn({...i,categories:e,left:t,activeKey:this.focusedCatKey,soldOutWord:this.tf("picker.soldOut","Sold out"),allWord:this.tf("picker.allPrices","All prices"),allActive:!this.focusedCatKey&&!this.priceBandKeys}):"";let o=e.map(a=>a.key).join("|");this.lastRailSignature!==o&&(this.lastRailSignature=o,n.scrollLeft=0),n.querySelectorAll(".sl-rc").forEach(a=>{a.addEventListener("click",()=>{if(a.hasAttribute("data-rail-all")){this.applyPriceBand(null);return}this.focusCategory(a.dataset.cat??"")})}),this.railEdgesBound||(this.railEdgesBound=!0,n.addEventListener("scroll",()=>Fi(n),{passive:!0})),requestAnimationFrame(()=>Fi(n))}syncPrices(){let e=this.controller.doc;if(!e||!this.els.prices)return;let t=this.controller.categoryAvailability(),i=e.categories.filter(d=>!d.notForSale);this.narrateAvailability(i,t),this.syncSoldout(i,t);let n=this.legendDeps(),r=this.suppressPricing,o=r?{...n,priceOf:()=>{},rangeOf:()=>{},offerOf:()=>null}:n;r&&(this.els.pricesSec?.querySelector("span")?.replaceChildren(this.tf("picker.seatCategories","Seat categories")),this.els.pricesHint?.remove()),this.syncPriceRail(i,t,o);let a=5,l=i.length-a,c=l>1&&!this.pricesExpanded,p=c?i.slice(0,a):i;this.els.prices.classList.toggle("sl-expanded",l>1&&this.pricesExpanded),this.els.prices.innerHTML=wn({...o,categories:p,left:t,collapsed:c,activeKey:this.focusedCatKey,bandKeys:this.priceBandKeys,leftCount:d=>Fe("picker.leftCount",d),titleFor:(d,u)=>u?this.tf("picker.showAllSeats","Show all seats"):M("picker.showLabelSeatsOnMap",{label:d.label}),moreLabel:l>1?c?r?this.tf("picker.showAllCategories","Show all categories"):M("picker.showAllTicketTypes",{count:i.length}):this.tf("picker.showFewer","Show fewer"):null,status:{legend:this.tf("picker.seatStatusLegend","Seat status legend"),held:this.tf("picker.temporarilyHeld","Temporarily held"),sold:this.tf("picker.sold","Sold")}}),this.els.prices.querySelectorAll(".sl-price-row").forEach(d=>{d.addEventListener("mouseenter",()=>this.controller.getRenderer()?.setCategoryHighlight?.(d.dataset.cat??null)),d.addEventListener("mouseleave",()=>this.controller.getRenderer()?.setCategoryHighlight?.(null));let u=()=>this.focusCategory(d.dataset.cat??"");d.addEventListener("click",u),d.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),u())})}),this.els.prices.querySelector(".sl-price-more")?.addEventListener("click",()=>{this.pricesExpanded=!this.pricesExpanded,this.syncPrices()})}focusCategory(e){if(!e)return;let t=this.focusedCatKey===e?null:e;this.focusedCatKey=t,this.priceBandKeys=t?new Set([t]):null;let i=this.els.pricesSec?.querySelector(".sl-price-select");i&&(i.value="all"),this.controller.setCategoryFilter(t?[t]:null),this.controller.focusCategoryFilter(t?[t]:null),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)}narrateAvailability(e,t){let i=this.els.liveText,n=this.lastCatAvail;this.lastCatAvail={...t};let r=this.controller.getActiveFloorId();if(r!==this.lastAvailFloorId&&(this.lastAvailFloorId=r,this.availQuietUntil=performance.now()+2e3),!(!i||!n||performance.now()<this.availQuietUntil))for(let o of e){let a=n[o.key],l=t[o.key]??0;if(a===void 0||l>=a)continue;let c=a-l;i.textContent=Fe("picker.seatsJustTakenInCategory",c,{label:o.label,left:l}),this.els.live?.classList.remove("on"),this.els.live?.offsetWidth,this.els.live?.classList.add("on"),this.liveTimer&&clearTimeout(this.liveTimer),this.liveTimer=setTimeout(()=>this.els.live?.classList.remove("on"),8e3);return}}evictTakenSelections(){let e=new Set([...this.controller.currentHold()?.labels??[],...this.holdingLabels]),t=this.controller.getSelection().filter(i=>!e.has(i.label)&&(this.controller.getStatus(i.id)??"free")!=="free");t.length&&(this.controller.deselect(t.map(i=>i.id)),this.toast(M("picker.seatJustTakenByAnother",{label:t[0].label}),"error"))}syncTray(){if(!this.els.tray)return;this.updateSelectionCapacity();let{seats:e,gaAreas:t,heldItems:i,heldLabels:n,heldCount:r,total:o,count:a}=oi(this),l=[],c=new Set;if(!this.salesClosed){let b=this.performanceGroup?.nightSummary?.()??[];b.length&&l.push(Rr(b,{title:this.tf("picker.group.yourSeatsByNight","Your seats by night"),empty:this.tf("picker.group.noSeatsChosenYet","No seats yet")}));let A=this.performanceGroup?.selectionModeSwitch;A&&l.push(`<button type="button" class="sl-pg-switch" data-pg-switch-mode>${I(A.label)}</button>`)}l.push(br({salesClosed:this.salesClosed,hasPicks:e.length>0||i.length>0,hasGaAreas:t.length>0,groupMode:this.performanceGroup?this.performanceGroup.selectionMode??"same_seat":null,seated:!!this.controller.doc?.objects?.some(b=>b.type!=="gaArea"),venue3d:this.buyerView==="venue3d",whenText:this.eventWhenText?String(this.eventWhenText):void 0}));let p=!e.length&&!i.length&&!Be(this.gaQty,this.hold?.items??[]);if((p||this.root?.dataset.layout==="narrow")&&(this.baReopen=!1),!this.performanceGroup&&!this.salesClosed&&!this.hold&&(p||this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm)){let b=(this.controller.doc?.categories??[]).filter(x=>!x.notForSale),A=this.controller.getBestAvailableZones();this.baZone&&!A.some(x=>x.id===this.baZone)&&(this.baZone=""),l.push(gr({confirming:this.bestAvailableConfirm,busy:this.bestAvailableBusy,reopened:this.baReopen,quantity:this.baQty,premium:this.baPremium,offerPremium:this.controller.hasPremiumSeats(),categories:b,zones:A,selectedCategory:this.baCat,selectedZone:this.baZone}))}let d=(b,A,x,H=1,_,T,O)=>ur({categoryLabel:O,d:b?this.controller.seatDetails(b):null,area:x==="ga"?t.find(B=>B.id===_):void 0,label:A,objectType:x,quantity:H,identity:T,performanceLabel:this.performanceGroup?.activePerformanceLabel?.(),performanceDates:this.performanceGroup?.selectedPerformanceDates?.()}),u=I,h=[];for(let b of Ks(i)){let A=b.objectType==="ga"?`held:ga:${b.objectId}:${b.tierId??""}`:`held:${b.label}`;c.add(A);let x=this.controller.doc?.categories.find(Y=>Y.key===b.categoryKey),H=b.tierId?x?.tiers?.find(Y=>Y.id===b.tierId)?.name:void 0,_=b.objectType!=="ga"?this.controller.seatByLabel(b.label):null,T=b.objectType==="table"?this.controller.tableSelection(b.label):null,O=_?this.controller.seatDetails(_.id):null,B=this.seatViewEnabled()&&!!_&&b.objectType!=="table"&&!!this.deliverableViewReference(_),V=u(this.tf("picker.heldForYou","Held for you")),ie=(T?.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${u(encodeURIComponent(b.label))}">${u(M("picker.guestsCountEdit",{count:b.quantity??1}))}</button>`:"")+si(_?.wheelchairSpaceType)+qi(_?.commercial),ne=this.paidPrice(b.categoryKey,b.tierId,b.unitPrice,b.label)*(b.quantity??1);h.push({key:A,fresh:!this.lastTrayKeys.has(A),held:!0,seatIds:[],heldLabels:b.labels,removeAria:M("picker.removeHeldTicketLabel",{label:Hi(b,t)}),locateId:_?.id??null,section:O?.sectionLabel??"",rowLabel:O&&U(O)||"",seatLabel:O?.seatNumber??b.label,categoryLabel:`${x?.label??b.categoryKey}${H?` \xB7 ${H}`:""}`,categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(b.categoryKey)??x?.color??"",identityHtml:d(_?.id??null,b.label,b.objectType,b.quantity??1,b.objectId,T??void 0,`${x?.label??b.categoryKey}${H?` \xB7 ${H}`:""}`),stateHtml:`<span class="sl-ticket-state held" aria-label="${V}" title="${V}"><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:ie,amount:ne,amountText:this.suppressPricing?"":this.money(ne),noteHtml:Ki(_?.commercial),railHtml:this.performanceGroup?"":rs(M("picker.removeHeldTicketLabel",{label:Hi(b,t)}),B?b.label:null),groupable:!ie&&!!O?.sectionLabel&&!this.performanceGroup})}let g=this.seatViewEnabled();for(let b of e.filter(A=>!n.has(A.label))){let A=`seat:${b.id}`;c.add(A);let x=this.controller.doc?.categories.find(Y=>Y.key===b.categoryKey),H=b.tiers&&b.tiers.length&&!this.suppressPricing?`<select class="tier" data-tier="${u(b.id)}" aria-label="${u(M("picker.ticketTierFor",{label:b.label}))}">`+b.tiers.map(Y=>`<option value="${u(Y.id)}"${Y.id===b.tierId?" selected":""}>${u(Y.name)} \xB7 ${u(this.money(this.paidPrice(b.categoryKey,Y.id,Y.price,b.label)))}</option>`).join("")+"</select>":"",_=b.tiers?.find(Y=>Y.id===b.tierId)??b.tiers?.[0],T=_?.buyerMessage?.trim()||(_?.restriction==="companion"?this.tf("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):""),O=this.controller.seatDetails(b.id),B=u(this.tf("picker.selected","Selected")),V=M("picker.removeSeatLabel",{label:b.label}),ie=(b.objectType==="table"&&b.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${u(encodeURIComponent(b.label))}">${u(M("picker.guestsCountEdit",{count:b.quantity??1}))}</button>`:"")+si(b.wheelchairSpaceType)+qi(b.commercial)+H,ne=this.paidPrice(b.categoryKey,b.tierId??null,b.price,b.label)*(b.quantity??1);h.push({key:A,fresh:!this.lastTrayKeys.has(A),held:!1,seatIds:[b.id],heldLabels:[],locateId:b.id,section:O?.sectionLabel??"",rowLabel:O&&U(O)||"",seatLabel:O?.seatNumber??b.label,categoryLabel:x?.label??b.categoryKey,identityHtml:d(b.id,b.label,b.objectType,b.quantity??1,b.objectId,b,x?.label??b.categoryKey),categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(b.categoryKey)??x?.color??"",stateHtml:`<span class="sl-ticket-state" aria-label="${B}" title="${B}"><svg viewBox="0 0 24 24"><path d="M5 12l4 4L19 6"/></svg></span>`,extrasHtml:ie,amount:ne,amountText:this.suppressPricing?"":this.money(ne),removeAria:V,noteHtml:Ki(b.commercial)+(T?`<small class="sl-tier-note">${u(T)}</small>`:""),railHtml:rs(V,g&&b.objectType!=="table"&&this.deliverableViewReference(this.controller.seatByLabel(b.label)??{})?b.label:null),groupable:!ie&&!T&&!!O?.sectionLabel&&!this.performanceGroup})}h.length&&l.push(this.root?.dataset.layout==="narrow"?Sr(h,{money:b=>this.money(b),suppressPricing:this.suppressPricing}):h.map(kr).join("")),t.length&&l.push(Xs(this,t,i)),!this.performanceGroup&&!this.salesClosed&&!this.hold&&!p&&!this.baReopen&&!this.bestAvailableBusy&&!this.bestAvailableConfirm&&l.push(`<button type="button" class="sl-ba-reopen" data-ba-reopen><span aria-hidden="true">\u2726</span>${u(this.tf("picker.findTogetherInstead","Find seats together instead"))}</button>`),this.els.tray.innerHTML=l.join("")+(this.salesClosed?"":this.lapse.noteHtml()),this.lastTrayKeys=c,Tr(this.els.tray),this.lapse.wire(this.els.tray),this.els.tray.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>this.performanceGroup?.selectionModeSwitch?.activate());let m=this.performanceGroup?.selectNight;m&&qr(this.els.tray,b=>m(b)),this.els.tray.querySelectorAll("[data-ba]").forEach(b=>{b.addEventListener("click",()=>{this.baQty=Math.max(1,Math.min(this.maxTickets,this.baQty+Number(b.dataset.ba))),this.syncTray()})}),this.els.tray.querySelector("[data-ba-cat]")?.addEventListener("change",b=>{this.baCat=b.target.value}),this.els.tray.querySelector("[data-ba-zone]")?.addEventListener("change",b=>{this.baZone=b.target.value}),this.els.tray.querySelector("[data-ba-premium]")?.addEventListener("click",()=>{this.baPremium=!this.baPremium,this.syncTray()}),this.els.tray.querySelector(".sl-ba-go")?.addEventListener("click",()=>{if(this.pendingSelectionCount()>0){this.bestAvailableConfirm=!0,this.syncTray(),this.els.tray.querySelector("[data-ba-replace]")?.focus();return}this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelector("[data-ba-cancel]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-reopen]")?.addEventListener("click",()=>{this.baReopen=!0,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-close]")?.addEventListener("click",()=>{this.baReopen=!1,this.syncTray(),this.els.tray.querySelector("[data-ba-reopen]")?.focus()}),this.els.tray.querySelector("[data-ba-replace]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelectorAll(".sl-chip .rm").forEach(b=>{b.addEventListener("click",()=>{let A=b.closest(".sl-chip");if(A.dataset.held){this.removeHeldLabels(decodeURIComponent(A.dataset.held).split(`
2646
- `),A);return}let x=A.dataset.seat.split(" "),H=this.controller.getSelection().find(T=>T.id===x[0])?.label??this.tf("picker.seat","Seat"),_=()=>{this.controller.deselect(x),this.toast(M("picker.labelRemoved",{label:H}),"neutral",{label:this.tf("picker.undo","Undo"),onClick:()=>{let T=this.controller.select(x);this.toast(T.length?M("picker.labelRestored",{label:H}):M("picker.labelNoLongerAvailable",{label:H}),T.length?"success":"warning")}})};if(this.reducedMotion()){_();return}A.classList.remove("sl-enter"),A.classList.add("sl-leave","sl-mo-collapse"),this.scheduleMotion(_,G.collapse)})}),this.els.tray.querySelectorAll("[data-table-edit]").forEach(b=>{b.addEventListener("click",A=>{A.stopPropagation();let x=decodeURIComponent(b.dataset.tableEdit??""),H=this.controller.tableSelection(x);if(!H)return;let _=i.find(T=>T.label===x&&T.objectType==="table");this.showTableDialog({...H,quantity:_?.quantity??H.quantity},!!_,b)})}),this.els.tray.querySelectorAll(".sl-chip .tier").forEach(b=>{b.addEventListener("change",()=>this.controller.setSeatTier(b.dataset.tier,b.value||null))}),this.els.tray.querySelectorAll(".sl-chip .view[data-view-label]").forEach(b=>{b.addEventListener("click",()=>{let A=this.controller.seatByLabel(b.dataset.viewLabel);A&&this.openSeatView(A)})}),this.els.tray.querySelectorAll(".sl-chip[data-locate]").forEach(b=>{let A=()=>this.controller.flashSeat(b.dataset.locate,this.cssVar("--sl-accent")||"#f4b740");b.addEventListener("mouseenter",A),b.addEventListener("focusin",A)}),Zs(this,this.els.tray,t),this.controller.setGASelection(js(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(b=>{b.disabled=!0});let v=this.pendingSelectionCount(),k=this.lastTrayCount,S=this.lastTrayTotal,L=Gr(this.performanceGroup?.groupSelectionSummary?.(),this.performanceGroup?.selectionMode??"same_seat");if(this.els.count.textContent=L||(a?Fe("picker.ticketsCount",a):this.tf("picker.noSeatsSelected","No seats selected")),this.els.total.textContent=a&&!this.suppressPricing?this.money(o):"",this.root?.setAttribute("data-has-selection",String(a>0)),this.root?.setAttribute("data-ba-active",String(this.bestAvailableConfirm||this.bestAvailableBusy||this.baReopen)),this.els.foot?.classList.toggle("empty",a===0),this.els.seatSummary&&(this.els.seatSummary.textContent=L||(a?Fe("picker.seatsSelectedCount",a):"")),this.syncCta(a,v),this.hold){this.holdCopyPending=v>0;let b=vr({secured:r||this.hold.seats?.length||0,pendingCount:v,expiresAt:this.holdExpiresAt,releasing:this.releasingHold});this.els.holdTitle&&(this.els.holdTitle.textContent=b.title),this.els.holdCopy&&(this.els.holdCopy.textContent=b.copy);let A=this.els.holdChange;A&&(A.disabled=this.releasingHold,A.textContent=b.change)}a!==k&&this.animateOnce(this.els.count,"sl-value-pop",380),o!==S&&this.animateOnce(this.els.total,"sl-value-pop",380),k===0&&a>0&&(this.animateOnce(this.els.cta,"sl-ready",520),this.sideCollapsed&&this.root?.dataset.layout!=="narrow"&&this.setPanelCollapsed(!1)),this.renderPeek(a,o,v,a>k),this.lastTrayCount=a,this.lastTrayTotal=o,this.opts.onSelectionChange?.(e),this.emitSelectionValidity(a,e)}emitSelectionValidity(e,t){let i=this.controller.getSelectionValidity(e);i&&(i.seats=t,this.opts.onSelectionValidityChange?.(i),i.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(t):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(i),this.lastSelectionValidity=i.isValid)}renderPeek(e,t,i,n=!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=fr({count:e,total:t,pendingCount:i,ctaPhase:this.ctaPhase,hasHold:!!this.hold,salesClosed:this.salesClosed,suppressPricing:this.suppressPricing,fromPrice:r.length?Math.min(...r):null,addMore:this.root?.dataset.layout==="narrow"?null:mr({salesClosed:this.salesClosed,hasHold:!!this.hold,ctaPhase:this.ctaPhase,formOpen:this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm,room:this.maxTickets-this.totalTicketCount(),wanted:this.baQty}),offerFind:!this.performanceGroup&&!this.salesClosed&&!this.hold,holdTime:this.hold&&this.holdTimer?Mt(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"))),n&&this.animateOnce(this.els.peek.querySelector(".sl-peek-sum")??void 0,"sl-peek-bump",240)}async removeHeldLabels(e,t){let i=e.filter(o=>o&&!this.releasingLabels.has(o));if(!i.length)return!1;let n=i[0];i.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(i))return this.toast(M("picker.couldNotRemoveLabel",{label:n}),"error"),!1;Us(this.gaQty,this.hold?.items??[],i);let l=this.controller.currentHold();return this.hold=l?{holdId:l.holdId,expiresAt:l.expiresAt,seats:l.seats,items:l.items}:null,this.handedOff=!!this.hold&&o,this.bookedShown=!1,this.ctaPhase="idle",this.hold?this.startHoldTimer(this.hold.expiresAt):(this.stopHoldTimer(),this.forgetHold()),this.syncTray(),this.emitHoldChange(),this.toast(M("picker.labelRemovedFromHold",{label:n}),"success"),!0}finally{i.forEach(o=>this.releasingLabels.delete(o)),t?.removeAttribute("aria-busy"),r?.isConnected&&(r.disabled=!1)}}async handleChangeSeats(){if(!this.hold||this.releasingHold)return;this.releasingHold=!0;let e=this.els.holdChange;e&&(e.disabled=!0,e.textContent=this.tf("picker.releasingEllipsis","Releasing\u2026"));try{await this.release(),this.hold||this.toast(this.tf("picker.heldTicketsReleased","Held tickets released. Choose your new seats."),"success")}finally{this.releasingHold=!1,e?.isConnected&&(e.disabled=!1,e.textContent=this.tf("picker.change","Change"))}}async handleCta(){if(this.salesClosed)return;let e=this.controller.getSelectionValidity(this.totalTicketCount());if(e&&!e.isValid){this.toast(ns(e,(i,n)=>this.tf(i,n)),"warning");return}if(this.totalTicketCount()>this.maxTickets){this.toast(M("picker.removeTicketsUntilOrFewer",{count:this.maxTickets}),"warning");return}let t=this.committedSelection();if(this.hold&&!t.some(i=>!(this.hold.items??[]).some(n=>n.label===i.label))){let i=this.hold.seats??t;this.handedOff=!0,this.holdConflicted=!1,await this.runCheckoutHandoff(this.hold,i);return}this.holdingLabels=new Set(t.map(i=>i.label)),this.setCtaPhase("holding");try{let i=null,n=zs(this.gaQty),r=this.committedSelection();if(r.length){let o=await this.controller.hold(void 0,this.opts.holdTtlMs);i=o?{holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items}:null}for(let{areaId:o,tierId:a,qty:l}of n){let c=await this.controller.holdGA(o,l,{tierId:a,ttlMs:this.opts.holdTtlMs});i=c?{holdId:c.holdId,expiresAt:c.expiresAt,seats:c.seats,items:c.items}:i}if(!i){this.raiseHoldConflict(this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.")),this.setCtaPhase("idle"),this.syncTray();return}this.hold=i,this.holdConflicted=!1,this.handedOff=!this.performanceGroup,this.startHoldTimer(i.expiresAt),this.flashHeldSeats(i),this.emitHoldChange(),this.performanceGroup?this.setCtaPhase("idle"):await this.runCheckoutHandoff(i,i.seats??r)}catch(i){this.opts.onError?.(i);let n=i,r=(n.conflicts??[]).map(a=>a.label).filter(Boolean).slice(0,3);n.reason==="event_closed"&&this.setSalesClosed(!0);let o=n.reason==="event_closed"?this.tf("picker.seatSalesClosedForEvent","Seat sales have closed for this event."):n.reason==="companion_pair_required"?this.tf("picker.companionPairRequired","Select the adjacent wheelchair place with each companion ticket."):n.reason==="ticket_option_not_applicable"?this.tf("picker.ticketOptionNotApplicable","That ticket choice is not available for the selected seat."):r.length?r.length===1?M("picker.labelsNoLongerAvailable.one",{labels:r.join(", ")}):M("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){this.stopHoldTimer(),this.holdExpiresAt=e,this.hold&&this.rememberHold(this.hold);let t=this.els.hold;t.innerHTML=`<span class="sl-hold-dot" aria-hidden="true"></span><span>${this.tf("picker.held","Held")}</span><span class="sl-hold-time" data-ref="holdTime"></span>`;let i=t.querySelector('[data-ref="holdTime"]');this.els.holdNote?.classList.add("on");let n=()=>{let r=Math.max(0,this.holdExpiresAt-Date.now());i&&(i.textContent=Mt(r));let o=this.els.peek?.querySelector(".sl-peek-time");o&&(o.textContent=Mt(r)),!this.holdCopyPending&&this.els.holdCopy&&this.root?.dataset.layout!=="narrow"&&(this.els.holdCopy.textContent=os(this.holdExpiresAt)),t.classList.add("on"),t.classList.toggle("is-expiring",r>0&&r<=so),this.setExtendPrompt(r>0&&r<=so,r),(r<=0||!this.controller.currentHold())&&this.stopHoldTimer()};this.holdTimer=setInterval(n,500),n()}stopHoldTimer(){this.holdTimer&&clearInterval(this.holdTimer),this.holdTimer=null,this.els.hold?.classList.remove("on","is-expiring"),this.els.holdNote?.classList.remove("on"),this.root&&delete this.root.dataset.peekClock,this.setExtendPrompt(!1,0)}setExtendPrompt(e,t){if(this.extendEl)if(e&&this.controller.currentHold()&&!this.bookedShown){let i=Math.ceil(t/1e3),n=Math.floor(i/60),r=String(i%60).padStart(2,"0");this.els.extendTxt.innerHTML=M("picker.seatsHeldForNeedMoreTime",{time:`${n}:${r}`}),this.extendEl.classList.add("on")}else this.extendEl.classList.remove("on")}async handleExtend(){let e=this.els.extendBtn;e.disabled=!0;let t=e.textContent;e.textContent=this.tf("picker.addingEllipsis","Adding\u2026");try{let i=await this.controller.extendHold(this.opts.holdTtlMs);i?(this.hold={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items},this.holdExpiresAt=i.expiresAt,this.extendEl?.classList.remove("on"),this.rememberHold(this.hold),this.emitHoldChange(),this.toast(this.tf("picker.moreTimeAdded","More time added \u2014 your seats are still held."),"success")):this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}finally{e.disabled=!1,e.textContent=t}}detectBooked(){this.bookedShown||!this.handedOff||!this.hold||this.controller.currentHold()===null&&(this.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((n,r)=>n+r.quantity,0),i=this.performanceGroup?.groupSelectionSummary?.();this.els.bookedSub&&(this.els.bookedSub.innerHTML=i?.seats?`<span class="sl-booked-seats">${Fe("picker.group.ticketsConfirmedAcross",i.seats,{performances:i.performances})}</span>`:`<span class="sl-booked-seats">${Fe("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(n=>{let o=[n.sectionLabel,n.rowLabel&&`${this.tf("picker.row","Row")} ${n.rowLabel}`,n.seatNumber&&`${this.tf("picker.seat","Seat")} ${n.seatNumber}`].filter(Boolean).join(" \xB7 ")||n.displayLabel||n.label,a=n.quantity>1?` <span class="sl-booked-qty">\xD7${n.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 i=this.buildHandoff(e),n=null;try{n=await(this.paymentOptions??=this.pubApi.paymentOptions(this.opts.event))}catch(o){this.opts.onError?.(o)}if(this.destroyed)return;let r=n?.providers?.[0];if(!r){let o=cn(n?.reason),a=!!this.opts.onCheckoutUnavailable||!!this.opts.onCheckout;this.opts.onCheckoutUnavailable?.({reason:o,handoff:i}),this.opts.onCheckout?.(e,t,i),a||this.openCheckoutPanel({kind:"unavailable",reason:o,seatCount:i.lineItems.reduce((l,c)=>l+c.quantity,0)});return}await this.openCheckoutPanel({kind:"pay",provider:r,order:{holdId:i.holdId,expiresAt:i.expiresAt,currency:i.currency,total:i.total,labels:i.lineItems.map(o=>o.displayLabel??o.label)}})}async openCheckoutPanel(e){let t;try{({mountCheckout:t}=await ln())}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.checkoutCouldNotBeOpened","Checkout could not be opened. Your seats are still held \u2014 please try again."),"error"),this.setCtaPhase("idle");return}this.destroyed||!this.root||(this.closeCheckoutPanel(),this.checkoutPanel=t({root:this.root,state:e,eventKey:this.opts.event,formatMoney:i=>this.money(i),startSession:i=>this.pubApi.startCheckout(this.opts.event,{...i,...this.opts.returnUrl?{returnUrl:this.opts.returnUrl}:{}}),orderStatus:i=>this.pubApi.orderStatus(i),onCancel:()=>{this.checkoutPanel=null,this.hold||this.setCtaPhase("idle")},onConfirmed:i=>{this.opts.onOrderConfirmed?.(i),this.controller.refresh()},onError:i=>this.opts.onError?.(i)}))}closeCheckoutPanel(){this.checkoutPanel?.destroy(),this.checkoutPanel=null}buildHandoff(e){let i=(e.items??[]).map(o=>{let a=this.controller.lineItemDisplay(o);return{label:o.label,...a.displayLabel?{displayLabel:a.displayLabel}:{},...a.displayType?{displayType:a.displayType}:{},objectId:o.objectId,objectType:o.objectType,categoryKey:o.categoryKey,tierId:o.tierId,unitPrice:this.paidPrice(o.categoryKey,o.tierId,o.unitPrice,o.label),currency:o.currency??this.currency,quantity:o.quantity??1}}),n=i[0]?.currency??this.currency,r=i.reduce((o,a)=>o+a.unitPrice*a.quantity,0);return{holdId:e.holdId,expiresAt:e.expiresAt,currency:n,lineItems:i,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",i){let n=this.els.toast;if(!n)return;n.replaceChildren();let r=document.createElement("span");if(r.textContent=e,n.appendChild(r),n.classList.toggle("has-action",!!i),i){let o=document.createElement("button");o.type="button",o.className="sl-toast-action",o.textContent=i.label,o.addEventListener("click",i.onClick,{once:!0}),n.appendChild(o)}n.dataset.tone=t,n.classList.add("on","sl-mo-rise"),this.liftToastOverConfirmSoon(),this.toastTimer&&clearTimeout(this.toastTimer),this.toastTimer=setTimeout(()=>{n.classList.remove("on","sl-mo-rise"),n.classList.remove("has-action"),n.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"),i=this.confirmEl;if(!t||!i?.isConnected){e.style.removeProperty("bottom");return}let n=this.els.map.clientHeight;if(n<=0)return;let r=i.getBoundingClientRect(),o=r.height||i.offsetHeight||sc,a=r.height?r.top-this.els.map.getBoundingClientRect().top:n-hs-o,l=Math.round(n-a+tc);if(l+ic>n){e.style.removeProperty("bottom");return}e.style.bottom=`${l}px`}liftToastOverConfirmSoon(){this.liftToastOverConfirm(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{this.destroyed||this.liftToastOverConfirm()})}dismissSkeleton(){Zn({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},i=this.tipPinned?Wr(this.tipPos,e,t):null,n=i??Ur(this.tipPos,e.width,e.height,t);this.tipEl.style.left=`${n.left}px`,this.tipEl.style.top=`${n.top}px`,i?this.tipEl.dataset.placement=i.placement:delete this.tipEl.dataset.placement}nightStripFor(e,t){let i=this.performanceGroup,n=ds(e.mark,i?.nights?.()),r=n?.states.filter(o=>o.free).length??0;return _r(n,{locale:this.opts.locale,switchLabel:i?.selectionModeSwitch?.label??null,selectPartialLabel:i?.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.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 i=this.unavailableReason(e),n=e.mark?.kind==="partial"&&(e.interaction==="press"||this.lastPointerType!=="mouse"||t)||!!i&&e.interaction==="press";this.tipMarkedHoverLabel=e.mark?.kind==="partial"?e.label:null;let r=this.nightStripFor(e,n);this.tipEl.style.setProperty("--sl-cat",e.categoryColor),this.tipEl.innerHTML=Kr(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:rt(e),reason:i,extra:r+(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()}),Xr(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 i={};for(let[n,r]of Object.entries(e())){let o=this.controller.idForLabel(n);o&&(i[o]=r)}Object.keys(i).length&&t.setSeatMarks(i)}getSelection(){return this.committedSelection()}selectObjects(e){return this.controller.select(e)}selectObjectsWithoutConfirmation(e){let t=new Set(e),i=this.controller.getSelection().filter(n=>t.has(n.id)||t.has(n.label));if(i.length===t.size)return i;this.suppressConfirmationSeatId=e[0]??null;try{return this.controller.select(e)}finally{this.suppressConfirmationSeatId=null}}deselectObjects(e){this.controller.deselect(e)}clearSelection(){this.dismissConfirm(),this.dismissTableDialog(),this.controller.clearSelection()}categoryLegendColor(){let e=(this.controller.doc?.categories??[]).find(t=>!t.notForSale);return(e?this.controller.getRenderer()?.categoryDisplayColor?.(e.key):null)||e?.color||"#2563eb"}async refreshAvailability(){await this.controller.refresh(),this.syncSeatMarks(),this.syncTray()}refreshPerformanceGroupComposition(){this.syncTray()}async adoptRestoredHold(e){!e||this.hold||await this.resumeHoldFromServer(e,!1)}selectCategories(e){return this.controller.selectCategories(e)}deselectCategories(e){this.controller.deselectCategories(e)}setSelectableObjects(e){this.controller.setSelectableObjects(e)}setMaxSelection(e){this.maxTickets=Math.max(this.exactTickets??1,Math.floor(e)),this.controller.setMaxSelection(this.maxTickets),this.updateSelectionCapacity(),this.syncTray()}getSelectionValidity(){let e=this.controller.getSelectionValidity(this.totalTicketCount());return e&&(e.seats=this.committedSelection()),e}setMapTheme(e){this.destroyed||(this.opts.theme={...this.opts.theme??{},map:e??void 0},this.controller.setMapTheme(e),this.applyMapChromeTokens(),this.minimap?.refreshMinimap())}applyThemeTokens(e){let t=Bt(this.themeMode),i=mt(this.controller.doc?.theme,this.opts.theme,t);for(let[n,r]of Object.entries(i))e.style.setProperty(n,r);t?e.dataset.theme=t:delete e.dataset.theme,this.applyMapChromeTokens()}watchThemeMode(){this.colorSchemeStop?.(),this.colorSchemeStop=null,this.themeMode==="auto"&&(this.colorSchemeStop=Nt(()=>{this.destroyed||this.repaintForThemeMode()}))}repaintForThemeMode(){this.root&&(this.applyThemeTokens(this.root),this.controller.setMapTheme(Ke(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:Bt(e)??null}))}getThemeMode(){return this.themeMode}applyMapChromeTokens(){let e=this.els.map?.parentElement;if(!e||!this.root)return;let t=Bt(this.themeMode),i=mt(this.controller.doc?.theme,this.opts.theme,t),n=Ke(this.opts.theme,this.themeMode)?.background??this.controller.doc?.theme?.background??void 0,r=Es(i,n);for(let o of["--sl-bg","--sl-surface","--sl-text","--sl-muted","--sl-line","--sl-accent-text"])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),i=JSON.stringify(e??null);t!==i&&(this.opts.pricing=e,!(this.destroyed||!this.els.prices)&&(this.els.pricesSec?.querySelector(".sl-price-select")?.remove(),this.buildPriceFilter(),this.syncPrices(),this.syncTray(),this.lastSection&&this.showSectionCard(this.lastSection)))}buildLanguageSwitcher(e){this.langSel=Rs(e,{languages:this.opts.languages,label:this.tf("picker.preferredTicketType","Language"),onChange:t=>{this.setLocale(t)}})}async setLocale(e){let t=to(),i=this.localeGeneration+=1,n=await Wl(e);return this.opts.messages&&Yl(this.opts.messages),n===t||this.applyActiveLocale(n,i),n}applyActiveLocale(e,t){t===this.localeGeneration&&this.root&&_s(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})}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(),oc(e))}setViewMode(e){this.controller.setViewMode(this.normalizeInitialView(e)),this.syncProjection(),this.dismissConfirm()}getViewMode(){return this.controller.getViewMode()}normalizeInitialView(e){return e==="perspective"?(this.perspectiveWarned||(this.perspectiveWarned=!0,console.warn("[seatlayer] initialView:'perspective' (2.5D) is deprecated for the buyer picker and was coerced to 'flat'. Use the Map | 3D control for the immersive view.")),"flat"):e??"flat"}getBuyerView(){return this.buyerView}setBuyerView(e,t){if(e==="map"){this.exit3d();return}let i=t?.flyToSeatId;if(this.buyerView==="venue3d"){i?(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:i}),this.view3dHandle?.flyToSeat(i)):t?.resetView&&this.view3dHandle?.focusOverview();return}this.enter3d(i)}seatState3dFor(e){switch(this.controller.getStatus(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:break}return this.priceBandKeys!=null&&!this.priceBandKeys.has(e.categoryKey)||this.controller.accessibilityFilterDims?.(e)||this.limitedViewFilter&&(e.commercial?.restrictedView||e.commercial?.obstructedView)?"dimmed":"available"}pushAvailabilityTo3d(){if(!this.view3dHandle)return;let e=this.allSeats().map(t=>({seatId:t.id,state:this.seatState3dFor(t)}));this.view3dHandle.setAvailability(e)}syncSelectionTo3d(){this.view3dHandle&&this.view3dHandle.setSelection(this.controller.getSelection().map(e=>e.id))}async seatViewFor3d(e){let t=this.allSeats().find(i=>i.id===e);if(!t)return null;if(t.viewUrl)try{let i=t.viewMeta?.previewUrl,n=!!i&&i!==t.viewUrl,r=n?await this.buyerAssetUrls.resolve(i):null,o=n?t.viewUrl:await this.buyerAssetUrls.resolve(t.viewUrl);return!o||n&&!r?null:{url:o,...r?{previewUrl:r}:{},...n?{resolveUrl:a=>this.buyerAssetUrls.resolve(a)}:{},...t.viewMeta?.sourceWidth!==void 0?{sourceWidth:t.viewMeta.sourceWidth}:{},...t.viewMeta?.sourceHeight!==void 0?{sourceHeight:t.viewMeta.sourceHeight}:{},...t.viewMeta?.previewWidth!==void 0?{previewWidth:t.viewMeta.previewWidth}:{},...t.viewMeta?.previewHeight!==void 0?{previewHeight:t.viewMeta.previewHeight}:{},...t.viewMeta?.variants?.length?{variants:t.viewMeta.variants}:{},...t.viewMeta?.initialBearingDeg!==void 0?{initialBearingDeg:t.viewMeta.initialBearingDeg}:{},...t.viewMeta?.initialPitchDeg!==void 0?{initialPitchDeg:t.viewMeta.initialPitchDeg}:{},...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}}catch(i){return this.opts.onError?.(i),null}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:this.tf("picker.chartDerivedModel","Chart-derived model")}}emitAnalytics(e,t){try{this.opts.onAnalytics?.(e,{...t,surface:"buyer"})}catch{}}emit3dAnalytics(e,t){this.emitAnalytics(e,t)}onView3dSeatPick(e){if(this.salesClosed){this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning"),this.syncSelectionTo3d();return}let t=this.allSeats().find(a=>a.id===e);if(!t)return;let i=this.controller.tableSelection(e);if(this.committedSelection().some(a=>i?a.label===i.label:a.id===e)){this.controller.deselect([e]),this.dismissConfirm(),this.syncSelectionTo3d();return}let r=this.controller.getStatus(t.id);if(r==="held"||r==="booked"||r==="not_for_sale"){this.showUnavailable3dSeat(t,this.seatState3dFor(t),r),this.syncSelectionTo3d();return}if(this.dismissUnavailable3dSeat(),!this.controller.select([e]).length){this.syncSelectionTo3d(),this.dismissConfirm();return}if(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:e}),this.flashPickedSeat(e),i){this.showTableDialog(i,!1),this.syncSelectionTo3d();return}this.opts.confirmSelection!==!1?this.showConfirm(t):this.syncTray(),this.syncSelectionTo3d()}seatViewCaption(e){let t=this.allSeats().find(i=>i.id===e);return Qn(this.controller.seatDetails(e),t?.displayLabel??t?.label??e,this.tf("picker.viewFromYourSeat","view from your seat"),{narrow:this.root?.dataset.layout==="narrow",shortTail:this.tf("picker.fromYourSeat","from your seat")})}showUnavailable3dSeat(e,t,i){let n=this.view3dEl;if(!n)return;let r=this.controller.seatDetails(e.id),o=r?.displayLabel??e.displayLabel??e.label,a=U(r);dr(n,{status:i,visualState:t,location:[r?.sectionLabel,a?M("picker.rowLabel",{label:a}):null,o].filter(Boolean).join(" \xB7 ")||o,tf:(l,c)=>this.tf(l,c)}),this.announceSeat(e)}dismissUnavailable3dSeat(){ss(this.view3dEl)}saveView3dComparisonSeat(e){if(this.buyerView!=="venue3d")return;let t=this.view3dCompareSeatIds;t.includes(e.id)||(this.view3dCompareSeatIds=t.length===0?[e.id]:[t[0],e.id]),this.confirmSeat?.id===e.id&&(this.controller.deselect([e.id]),this.dismissConfirm(),this.syncSelectionTo3d(),this.syncTray()),this.view3dCompareChip.sync(),this.emit3dAnalytics("3d_comparison_saved",{seatId:e.id,count:this.view3dCompareSeatIds.length}),this.view3dCompareSeatIds.length>1?this.openView3dComparison():this.toast(this.tf("picker.chooseAnotherToCompare","Seat saved. Choose another seat to compare."),"success")}clearView3dComparison(){this.closeView3dComparison(!1),this.view3dCompareSeatIds=[],this.view3dCompareChip.remove(),this.emit3dAnalytics("3d_comparison_cleared")}view3dComparisonSnapshot(e){let t=this.allSeats().find(h=>h.id===e);if(!t)return null;let i=this.controller.seatDetails(t.id),n=this.controller.doc?.categories.find(h=>h.key===t.categoryKey),r=i?.price??(n?.tiers?.length?n.tiers[0].price:n?.price),o=r!=null?this.paidPrice(t.categoryKey,i?.tierId??n?.tiers?.[0]?.id??null,r,t.label):void 0,a=this.controller.getStatus(t.id),l=a==="held"?this.tf("picker.temporarilyHeld","Temporarily held"):a==="booked"?this.tf("picker.sold","Sold"):a==="not_for_sale"?this.tf("picker.notForSale","Not for sale"):this.tf("picker.available","Available"),c=t.viewUrl?io({url:t.viewUrl,...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}):this.tf("picker.chartDerivedSeatEye","Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed"),p=Se(t.commercial)||this.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),d=i?.wheelchairSpaceType?`${nt(i.wheelchairSpaceType)} \xB7 metadata, not access certification`:this.tf("picker.noAccessibilityMetadata","No accessibility metadata supplied"),u=Xl(t.confidenceEvidence);return{seat:t,label:i?.displayLabel??t.displayLabel??t.label,section:i?.sectionLabel??t.sectionId??"\u2014",row:U(i)??i?.rowLabel??"\u2014",category:i?.categoryLabel??n?.label??t.categoryKey,price:this.suppressPricing||o==null?"":this.money(o),availability:l,selectable:a==null||a==="free",viewSource:c,limited:p,accessibility:d,confidence:u}}openSeatConfidencePassport(e,t=null){is(this,e,t)}closeSeatConfidencePassport(e=!0){Lt(this,e)}openView3dComparison(){cr(this)}closeView3dComparison(e=!0){$e(this,e)}async enter3d(e){if(this.view3dEl||!this.canOffer3d()||!this.els.map)return;let t=this.controller.doc;if(!t)return;this.buyerView="venue3d",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"venue3d",...e?{seatId:e}:{}}),this.root?.setAttribute("data-view3d","on"),this.dismissConfirm(),this.syncProjection(),this.syncTray();let i=document.createElement("div");i.className="sl-view3d sl-mo-zoom",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.interactive3dVenueView","Interactive 3D venue view"));let n=document.createElement("button");n.type="button",n.className="sl-view3d-back",n.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${this.tf("picker.backToMap","Back to map")}</span>`;let r=n.querySelector("span"),o=c=>{this.view3dTargetSeatId=c;let p=!!c;i.classList.toggle("is-seat-focused",p),this.root&&(this.root.dataset.view3dSeat=p?"on":"off");let d=p?this.tf("picker.backToVenue","Back to venue"):this.tf("picker.backToMap","Back to map");r&&(r.textContent=d),n.setAttribute("aria-label",d)};if(n.addEventListener("click",()=>{if(this.view3dTargetSeatId&&this.view3dHandle){this.view3dHandle.focusOverview();return}this.exit3d()}),this.regions["top-left"]?.prepend(n),this.view3dBack=n,this.publish3dTopInset(),Un(this.root)){let c=document.createElement("button");c.type="button",c.className="sl-view3d-fs",c.textContent="\u26F6",c.setAttribute("aria-label",this.tf("picker.fullScreen","Full screen")),c.setAttribute("aria-pressed",String(!!document.fullscreenElement||this.fsFallback||this.framedFs)),c.addEventListener("click",()=>this.toggleFullscreen()),i.appendChild(c)}let a=document.createElement("div");a.className="sl-view3d-loading",a.setAttribute("role","status"),a.setAttribute("aria-live","polite"),a.textContent=this.tf("picker.loading3d","Building the 3D venue\u2026"),i.appendChild(a),this.els.map.appendChild(i),this.view3dEl=i,this.view3dCompareChip.sync(),requestAnimationFrame(()=>{i.style.opacity="1"});let l=++this.view3dGen;try{let c=this.allSeats(),[p,d]=await Promise.all([St(),this.controller.loadEventConfiguration()]),u=d?await Xt(d,S=>this.buyerAssetUrls.resolve(S)):null,h=t.theme?.venue3d?.shellAssetUrl,g=await Zt(h,S=>this.buyerAssetUrls.resolve(S));if(l!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let m={doc:t,seats:c,...u?{eventConfigurationId:u.id,eventConfiguration:u}:{},...g?{registeredShellGlb:g}:{}};a.textContent=this.tf("picker.building3d","Building venue geometry\u2026");let v=await p.prepareVenue3D(m);if(l!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let k=p.mountVenue3D(i,{...m,prepared:v},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:it(),seatViewActionLabel:S=>this.allSeats().find(L=>L.id===S)?.viewUrl?this.tf("picker.openAuthored360","Open venue 360\xB0"):this.tf("picker.lookAroundLive3d","Look around in live 3D"),seatViewCaption:S=>this.seatViewCaption(S),onSeatViewStopChange:S=>this.view3dSeatViewChrome?.onStopChange(S),onSeatPick:S=>this.onView3dSeatPick(S),onSeatInspect:S=>this.onView3dSeatPick(S),onSectionFocusChange:S=>{let L=i.querySelector('select[data-locator="section"]'),b=S??"";!L||L.value===b||(L.value=b,L.dispatchEvent(new Event("change")))},onViewTargetChange:S=>{i.querySelector(".sl-view3d-nav")?.classList.toggle("is-seat-focused",!!S),o(S),this.opts.onBuyerViewChange?.({view:"venue3d",...S?{seatId:S}:{}})},...this.seatViewEnabled()?{getSeatView:S=>new Promise((L,b)=>{let A=()=>{this.seatViewFor3d(S).then(H=>{H?L(H):b(new Error("seat_view_unavailable"))})},x=globalThis.requestIdleCallback;typeof x=="function"?x(A,{timeout:1500}):setTimeout(A,50)})}:{},onAnalytics:(S,L)=>this.emit3dAnalytics(S,L)});this.view3dHandle=k,this.view3dSeatViewChrome=Yn(i,{handle:()=>this.view3dHandle}),requestAnimationFrame(()=>a.remove()),this.pushAvailabilityTo3d(),this.syncSelectionTo3d(),this.view3dNav=Kn(this.regions["bottom-left"]??i,k),e&&k.flyToSeat(e)}catch(c){if(l!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;this.opts.onError?.(c),this.toast(this.tf("picker.unavailable3d","3D could not start. The seat map is still available."),"warning"),this.exit3d()}}publish3dTopInset(){let e=this.regions["top-left"];if(!this.root||!e)return;let t=()=>{!this.root||this.root.dataset.view3d!=="on"||this.root.style.setProperty("--sl-3d-top-inset",`${Math.max(44,Math.ceil(e.offsetHeight))}px`)};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}exit3d(){if(this.buyerView!=="venue3d"&&!this.view3dEl)return;this.view3dGen++,this.buyerView="map",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"map"}),this.root?.removeAttribute("data-view3d"),this.closeSeatConfidencePassport(!1),this.closeView3dComparison(!1),this.view3dCompareChip.remove(),this.view3dSeatViewChrome?.dispose(),this.view3dSeatViewChrome=null,this.view3dBack?.remove(),this.view3dBack=null,this.view3dNav?.remove(),this.view3dNav=null,this.root?.removeAttribute("data-view3d-seat"),this.root?.style.removeProperty("--sl-3d-top-inset");try{this.view3dHandle?.dispose()}catch{}this.view3dHandle=null;let e=this.view3dEl;this.view3dEl=null,e&&(e.style.opacity="0",setTimeout(()=>e.remove(),320)),this.syncProjection(),this.syncTray();let t=this.view3dReturnSeat;this.view3dReturnSeat=null,t&&this.committedSelection().some(i=>i.id===t.id)&&this.opts.confirmSelection!==!1&&this.showConfirm(t)}getCurrentHold(){return this.hold}async resumeHold(e){return this.resumeHoldFromServer(e,!1)}async removeHeldTicket(e){return this.removeHeldLabels([e])}async bestAvailable(e,t,i={}){if(this.salesClosed||this.bestAvailableBusy)return null;e=Math.max(1,Math.min(this.maxTickets,Math.floor(e)));try{return await this.bestAvailableOrThrow(e,t,i)}catch(n){this.opts.onError?.(n);let r=n?.reason,o=r==="not_enough_together"?M("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,i={}){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 n=this.els.tray?.querySelector(".sl-ba-go");n&&(n.disabled=!0,n.classList.add("sl-busy"),n.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,{...i,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(),i.preferPremium&&r.seats.length&&!r.seats.every(o=>o.commercial?.premium)&&this.toast(M("picker.premiumFallbackNote",{count:e}),"neutral"),this.hold):null}finally{this.bestAvailableBusy=!1,this.syncTray()}}async release(){let e=this.hold,t=this.controller.currentHold(),i=!0;if(t)i=await this.controller.release();else if(e){let n=[...new Set([...(e.items??[]).map(r=>r.label),...(e.seats??[]).map(r=>r.label)])];if(n.length)try{await this.api.release(this.opts.event,n,e.holdId)}catch(r){this.opts.onError?.(r),i=!1}}if(!i){this.toast(this.tf("picker.couldNotReleaseTickets","Couldn't release your tickets. Your hold is unchanged."),"error");return}this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.syncTray(),this.emitHoldChange()}startRealtime(){if(!this.access?.configured||!this.pubApi||this.realtime)return;let e=this.opts.event;this.realtime=new ve({url:this.pubApi.subscribeUrl(e),mintTicket:()=>this.pubApi.subscribeTicket(e),onAccessUnavailable:t=>{this.opts.onAccessUnavailable?.(t),this.showAccessPanel(t)},sink:ft(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.syncPrices(),this.scheduleOfferRefresh(!0),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onSelectedObjectUnavailable:(t,i)=>{this.opts.onSelectedObjectUnavailable?.({labels:t,reason:i}),this.syncTray(),this.toast(i==="ineligible"?this.tf("picker.seatNoLongerYours","Some seats are no longer available to you. They have been removed from your order."):this.tf("picker.seatTaken","Someone else took a seat you had picked. It has been removed from your order."),"warning")}})}),this.realtime.start()}async refreshAccess(){return!this.access?.configured||!await this.access.refresh("manual")?!1:(this.dismissAccessPanel(),await this.controller.refresh(),this.realtime?this.realtime.restart():this.startRealtime(),!0)}showAccessPanel(e){if(this.destroyed||!this.root)return;this.dismissAccessPanel();let t=Fn(e.reason,()=>this.refreshAccess());(this.root.querySelector(".sl-body")??this.root).appendChild(t),this.accessEl=t}dismissAccessPanel(){this.accessEl?.remove(),this.accessEl=null}destroy(){this.destroyed=!0,Xi(this),this.colorSchemeStop?.(),this.colorSchemeStop=null,this.realtime?.stop(),this.realtime=null,this.dismissAccessPanel(),this.access?.clear(),this.hold&&!this.handedOff&&this.controller.release(),this.closeConfirm(),this.dismissTableDialog(!1),xe(this,!1),this.closeSeatView(),this.closeCheckoutPanel(),this.exit3d(),this.buyerAssetUrls.dispose(),this.stopHoldTimer(),this.detachAttention?.(),this.toastTimer&&clearTimeout(this.toastTimer),this.liveTimer&&clearTimeout(this.liveTimer),this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerRefreshTimer=null,this.offerBoundaryTimer=null,this.offerVisibilityHandler&&(document.removeEventListener("visibilitychange",this.offerVisibilityHandler),this.offerVisibilityHandler=null);for(let e of this.motionTimers)clearTimeout(e);this.motionTimers.clear(),this.ro?.disconnect(),this.ro=null,this.framedFs&&this.setFramedFs(!1),this.escHandler&&document.removeEventListener("keydown",this.escHandler),this.fsChangeHandler&&document.removeEventListener("fullscreenchange",this.fsChangeHandler),this.fsEscHandler&&window.removeEventListener("keydown",this.fsEscHandler),this.controller.destroy(),this.projectionEl=null,this.root?.remove(),this.root=null,this.modalScrim&&(this.modalScrim.remove(),this.modalScrim=null,this.prevFocus?.isConnected&&this.prevFocus.focus({preventScroll:!0}),this.prevFocus=null)}};import{formatMoney as vc,loadLocale as yc,setStringOverrides as xc,t as wc}from"@seatlayer/core";var oo="seatlayer-performance-group-picker-style";function ao(){if(document.getElementById(oo))return;let s=document.createElement("style");s.id=oo,s.textContent=`
2757
+ }`,e.append(t);let i="linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.10) 37%, rgba(255,255,255,0.04) 63%)",s=document.createElement("div");Object.assign(s.style,{position:"absolute",inset:"0",display:"flex",flexDirection:"column",padding:"16px",gap:"14px",opacity:"0.9"});let r=c=>{let d=document.createElement("div");return d.className="sl-shimmer",Object.assign(d.style,{background:i,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:i,flex:"0 0 auto"}),a.append(l),a.append(document.createTextNode("Loading designer\u2026")),e.append(a)}buildErrorCard(e,t){let i=ll[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=i.title,Object.assign(r.style,{margin:"0 0 8px",fontSize:"17px",fontWeight:"600",color:"#f4f7ff"});let o=document.createElement("p");o.textContent=i.body,Object.assign(o.style,{margin:"0 0 20px",fontSize:"13.5px",lineHeight:"1.5",color:"#aab4c8"});let a=document.createElement("button");a.type="button",a.textContent="Try again",Object.assign(a.style,{appearance:"none",cursor:"pointer",border:"0",borderRadius:"10px",padding:"10px 22px",fontSize:"14px",fontWeight:"600",color:"#101625",background:"#7aa2ff"}),a.addEventListener("click",()=>this.handleTryAgain()),s.append(r,o,a),e.append(s)}};import{PickerController as kc,formatMoney as Sc,getLocale as yo,loadLocale as Tc,setStringOverrides as Cc,t as O,tCount as ot}from"@seatlayer/core";import{isAuthoredSeatView as Ec,seatViewDisclosure as wo}from"@seatlayer/core/view3d/crossfade/panorama";import{seatConfidenceDisclosure as Ac}from"@seatlayer/core/core/seatConfidence";function Ms(n){return n?.previousPrice!=null&&n.previousPrice>n.price?n.previousPrice:null}function Hs(n){return cl(n)+(n.moreLabel?`<button type="button" class="sl-price-more" aria-expanded="${!n.collapsed}">${n.esc(n.moreLabel)}</button>`:"")+dl(n.status)}function cl(n){let{esc:e,money:t}=n;return n.categories.map(i=>{let s=n.priceOf(i),r=n.rangeOf(i),o=n.offerOf(i.key),a=Ms(o),l=n.activeKey===i.key;return`<div class="sl-price-row${n.bandKeys!=null&&!n.bandKeys.has(i.key)?" sl-dim":""}${l?" sl-active":""}" data-cat="${e(i.key)}" role="button" tabindex="0" aria-pressed="${l}" title="${e(n.titleFor(i,l))}"><span class="sl-dot" style="--sl-cat-dot:${e(n.colorOf(i))}"></span><span class="sl-price-label">${e(i.label)}`+(o?.offerName?`<small class="sl-price-offer">${e(o.offerName)}</small>`:"")+`</span><span class="sl-price-left">${e(n.leftCount(n.left[i.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 dl(n){let e=t=>t.replace(/[&<>"']/g,i=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[i]);return`<div class="sl-status-key" aria-label="${e(n.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(n.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(n.sold)}</span></div>`}function Wi(n){let e=Math.abs(n.scrollLeft),t=e>2,i=e+n.clientWidth<n.scrollWidth-2;return n.dataset.fadeStart=String(t),n.dataset.fadeEnd=String(i),{start:t,end:i}}function Os(n){let{esc:e,money:t}=n;return`<button type="button" class="sl-rc sl-rc-all" data-rail-all aria-pressed="${n.allActive}" title="${e(n.allWord)}"><span class="sl-rc-t">${e(n.allWord)}</span></button>`+n.categories.map(s=>{let r=n.rangeOf(s),o=n.priceOf(s),a=r?r.min===r.max?t(r.min):`${t(r.min)}+`:o!=null?t(o):null,l=Object.prototype.hasOwnProperty.call(n.left,s.key)&&n.left[s.key]<=0,c=Ms(n.offerOf(s.key)),d=a?`${s.label} \u2014 ${a}${l?` (${n.soldOutWord})`:""}`:s.label;return`<button type="button" class="sl-rc" data-cat="${e(s.key)}" aria-pressed="${n.activeKey===s.key}" aria-label="${e(d)}" title="${e(d)}"${l?" disabled":""}><i class="sl-rc-dot" style="--sl-cat-dot:${e(n.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 Rs(n,e){let t=n.map(a=>({key:a.key,range:e.rangeOf(a)})).filter(a=>a.range!=null);if(!t.length)return[];let i=[...new Map(t.map(a=>[`${a.range.min}:${a.range.max}`,a.range])).values()].sort((a,l)=>a.min-l.min||a.max-l.max);if(i.length<=5)return i.map(a=>({id:`p${a.min}-${a.max}`,label:a.min===a.max?e.money(a.min):`${e.money(a.min)}\u2013${e.money(a.max)}`,keys:t.filter(l=>l.range.min===a.min&&l.range.max===a.max).map(l=>l.key),min:a.min,max:a.max}));let s=[...t].sort((a,l)=>a.range.min-l.range.min||a.range.max-l.range.max),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 Is(n){return!!n&&n.clientWidth>0&&n.scrollWidth>n.clientWidth+1}function pl(n){return n.some(e=>Is(e))}var ci="data-fit-gone",hl=12;function Yi(n,e,t=Is){if(!n)return 0;for(let i of e)n.classList.remove(i.cls);if(n.querySelectorAll(`[${ci}]`).forEach(i=>{i.removeAttribute(ci),i.hidden=!1}),n.dataset.fit="0",n.clientWidth<=0||!t(n))return 0;for(let i=0;i<e.length;i+=1){let s=e[i];i>0&&n.classList.remove(e[i-1].cls),n.classList.add(s.cls),n.dataset.fit=String(i+1);let r=s.give?s.give(n):!0;if(!t(n))return i+1;if(s.repeat&&s.give){for(let o=1;r&&o<hl;o+=1)if(r=s.give(n),!t(n))return i+1}}return e.length}function ul(n,e="[data-fit-seg]"){let t=[...n.querySelectorAll(e)].filter(i=>!i.hidden);return t.length<2?!1:_s(t[t.length-1])}function ml(n,e){let t=n.querySelector(e);return t&&!t.hidden?_s(t):!1}function _s(n){let e=n.previousElementSibling;return e instanceof HTMLElement&&e.tagName==="I"&&(e.setAttribute(ci,""),e.hidden=!0),n.setAttribute(ci,""),n.hidden=!0,!0}function fl(n){if(!n)return!1;let e=(n.getAttribute("aria-label")||n.textContent||"").trim();return e?(n.setAttribute("aria-label",e),n.setAttribute("title",e),!0):!1}function Ds(n){if(!n)return 0;let e=n.querySelector(".sl-confirm-cancel"),t=n.querySelector(".sl-confirm-add-t");return Yi(n,[{cls:"sl-fit-track"},{cls:"sl-fit-type"},{cls:"sl-fit-icon",give:()=>fl(e)}],()=>pl([e,t]))}function Bs(n){return Yi(n,[{cls:"sl-fit-notype",give:e=>ml(e,"[data-fit-type]")},{cls:"sl-fit-short",give:e=>ul(e),repeat:!0}])}function Qi(n){return n?(n.classList.add("sl-fitpill"),Yi(n,[{cls:"sl-fit-p1"},{cls:"sl-fit-p2"},{cls:"sl-fit-p3"}])):0}var gl=["on-sale","low","sold-out","presale","closed"];function At(n){return n==null?null:typeof n=="number"&&Number.isFinite(n)&&n>=0?n:void 0}function $s(n){return n==null?null:typeof n=="number"&&Number.isFinite(n)&&n>=0?n:void 0}function Ns(n){if(n==null)return null;if(typeof n!="object"||Array.isArray(n))return;let e=n,t=e.count,i=e.index;if(typeof i!="number"||!Number.isInteger(i)||i<1||typeof t!="number"||!Number.isInteger(t)||t<i)return;let s=e.remaining;if(s!=null&&(typeof s!="number"||!Number.isInteger(s)||s<0))return;let r={index:i,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=$s(e[o]);if(a===void 0)return;r[o]=a}return r}function bl(n){if(n==null)return null;if(typeof n!="object"||Array.isArray(n))return;let e=n;if(!Number.isInteger(e.assignmentVersion)||e.assignmentVersion<0||!Array.isArray(e.channels)||!Array.isArray(e.objects))return;let t=[],i=new Set;for(let o of e.channels){if(!o||typeof o!="object"||Array.isArray(o))return;let a=o,l=typeof a.channelId=="string"?a.channelId.trim():"";if(!l||i.has(l)||!Number.isInteger(a.pricingVersion)||a.pricingVersion<0||!Array.isArray(a.priceOverrides))return;let c=[],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,m=At(u.price);if(!h||g===void 0||m===void 0||m===null)return;let y=`${h}\0${g??""}`;if(d.has(y))return;d.add(y),c.push({categoryKey:h,tierId:g,price:m})}i.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)||!i.has(c))return;r.add(l),s.push({label:l,channelId:c})}return{assignmentVersion:e.assignmentVersion,channels:t,objects:s}}function Xi(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let e=n,t=gl.find(d=>d===e.state);if(!t)return null;let i=At(e.fromPrice),s=At(e.previousPrice);if(i===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=Ns(e.release);if(o===void 0)return null;let a=e.upcoming===void 0?null:Ns(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=At(u.price),m=At(u.previousPrice);if(g==null||m===void 0)return null;let y={categoryKey:h,price:g,previousPrice:m};if(u.offerId!==void 0){if(typeof u.offerId!="string"||!u.offerId.trim())return null;y.offerId=u.offerId.trim()}if(u.offerName!==void 0){if(typeof u.offerName!="string"||!u.offerName.trim())return null;y.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;y.remaining=u.remaining==null?null:u.remaining}for(let w of["startsAt","endsAt"]){if(u[w]===void 0)continue;let x=$s(u[w]);if(x===void 0)return null;y[w]=x}d.push(y)}l=d}let c=bl(e.channelPricing);return c===void 0?null:{state:t,fromPrice:i,previousPrice:s,currency:r,release:o,upcoming:a,prices:l,channelPricing:c}}function Vs(n){return n?.changed!==!1}function Fs(n,e){if(!n)return null;let t=null,i=s=>{s!=null&&s>e&&(t===null||s<t)&&(t=s)};for(let s of[n.release,n.upcoming])i(s?.startsAt),i(s?.endsAt);for(let s of n.prices)i(s.startsAt),i(s.endsAt);return t}function Zi(n){let e={};for(let t of n?.prices??[])e[t.categoryKey]=t.price;return e}import{compactRowLabel as vl,t as Ne}from"@seatlayer/core";import{seatConfidenceDisclosure as yl}from"@seatlayer/core/core/seatConfidence";function Ji(n){return String(n??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function k(n){return String(n??"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Se(n){return n?.restrictedView?v("picker.restrictedView","Restricted view"):n?.obstructedView?v("picker.obstructedView","Obstructed view"):""}function js(n){if(!n)return"";let e=[];n.premium&&e.push(`<div class="sl-cx-premium"><span class="sl-cx-star" aria-hidden="true">\u2605</span>${v("picker.premiumSeat","Premium seat")}</div>`);let t=Se(n);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>${n.note?`<span class="sl-cx-note">${k(n.note)}</span>`:""}</span></div>`):n.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">${k(n.note)}</span></span></div>`),e.length?`<div class="sl-cx">${e.join("")}</div>`:""}function en(n){if(!n)return"";let e=[];if(n.premium){let i=k(v("picker.premiumSeat","Premium seat"));e.push(`<span class="sl-cx-mark sl-cx-mark-premium" role="img" aria-label="${i}" title="${i}">\u2605</span>`)}let t=Se(n);if(t){let i=k(n.note?`${t}: ${n.note}`:t);e.push(`<span class="sl-cx-mark sl-cx-mark-limited" role="img" aria-label="${i}" title="${i}">\u25D0</span>`)}else if(n.note){let i=k(n.note);e.push(`<span class="sl-cx-mark sl-cx-mark-info" role="img" aria-label="${i}" title="${i}">\u2139</span>`)}return e.join("")}function tn(n){if(!n)return"";let e=[];n.premium&&e.push(`<span class="sl-chip-cx-tag premium"><span aria-hidden="true">\u2605</span>${v("picker.premiumSeat","Premium seat")}</span>`);let t=Se(n);return t&&e.push(`<span class="sl-chip-cx-tag limited"><span aria-hidden="true">\u25D0</span>${k(t)}</span>`),!e.length&&!n.note?"":'<div class="sl-chip-cx">'+(e.length?`<div class="sl-chip-cx-tags">${e.join("")}</div>`:"")+(n.note?`<div class="sl-chip-cx-note">${k(n.note)}</div>`:"")+"</div>"}function rt(n){return n==="no-seat"?v("picker.emptyWheelchairSpace","Empty wheelchair space"):n==="seat-present"?v("picker.accessiblePhysicalSeat","Accessible physical seat"):""}function Gs(n){let e=rt(n);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 Pt(n){let e=rt(n);return e?`<span class="sl-cx-mark" role="img" aria-label="${e}" title="${e}">\u267F</span>`:""}function nn(n,e){if(!n)return"";let t=e?v("picker.viewFromThisSeat","View from this seat"):v("picker.seeItIn3d","See it in 3D"),i=e?v("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>${i}</span></button>`}function qs(n){if(!n)return"";let e=n.previous.label||n.previous.id,t=n.next.label||n.next.id;return`<span class="sl-seccard-nav" aria-label="${v("picker.browseSections","Browse sections")}"><button type="button" data-section-nav="${R(n.previous.id)}" aria-label="${v("picker.previousSection","Previous section")}: ${R(e)}" title="${R(e)}">\u2190</button><button type="button" data-section-nav="${R(n.next.id)}" aria-label="${v("picker.nextSection","Next section")}: ${R(t)}" title="${R(t)}">\u2192</button></span>`}function Us(n,e){if(!e)return"";let t=e,i=t.includes(n.id),s=i?t.length>1?v("picker.openComparison","Open comparison"):v("picker.savedForComparison","Saved for comparison"):t.length?v("picker.compareWithSaved","Compare with saved"):v("picker.saveToCompare","Save to compare");return`<button type="button" class="sl-confirm-compare"${i&&t.length===1?" disabled":""}><span aria-hidden="true">\u21C4</span><span>${k(s)}</span></button>`}function Ks(n,e,t){if(!t)return"";let i=yl(n.confidenceEvidence),s=i.modeledTarget??i.reality;return`<button type="button" class="sl-confirm-confidence" aria-label="Open seat confidence passport for ${k(n.displayLabel??n.label)}"><span><em>${k(e)}</em><strong>${k(i.headline)}</strong><small>${k(s)}</small></span><b>Passport</b></button>`}function U(n){let e=n?.rowLabel,t=n?.sectionLabel;if(!e||!t)return e;for(let i of["-"," ","\xB7","/","_"]){let s=`${t}${i}`;if(e.startsWith(s)&&e.length>s.length)return e.slice(s.length)}return vl(e,t)}function wl(n){switch(n){case"paused":return{title:v("picker.accessPausedTitle","These seats are on hold right now"),body:v("picker.accessPausedBody","The organizer has paused this selection. Try again in a few minutes."),action:v("picker.accessRetry","Try again")};case"revoked":return{title:v("picker.accessRevokedTitle","This access link is no longer active"),body:v("picker.accessRevokedBody","Ask whoever sent you here for a new link to keep booking these seats.")};case"no_token":case"provider_failed":return{title:v("picker.accessExpiredTitle","Your seat session has expired"),body:v("picker.accessExpiredBody","Reload the seat map to continue. Seats already in your cart stay held until the timer ends."),action:v("picker.accessRetry","Reload seat map")};default:return{title:v("picker.accessInvalidTitle","We couldn\u2019t verify your access"),body:v("picker.accessInvalidBody","You can still book anything shown as available. Contact whoever sent you here for access to the rest.")}}}var xl=6;function Ws(n,e,t){let i=Ji;return[n?.sectionLabel?`<div class="sl-confirm-field sl-confirm-sec${n.sectionLabel.length>xl?" sl-confirm-sec-long":""}"><span class="sl-confirm-key">${v("picker.section","Section")}</span><span class="sl-confirm-value">${i(n.sectionLabel)}</span></div>`:"",n?.rowLabel||n?.objectType==="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${i(t)}</span><span class="sl-confirm-value">${i(U(n)??n?.displayLabel??e)}</span></div>`:"",n?.objectType!=="booth"?`<div class="sl-confirm-field"><span class="sl-confirm-key">${v("picker.seat","Seat")}</span><span class="sl-confirm-value">${i(n?.seatNumber??n?.displayLabel??e)}</span></div>`:""].filter(Boolean).join("")}function Ys(n,e,t){let i=Ji,s=n?.objectType==="booth",r=n?.objectType==="table"&&!!n?.bookingMode,o=s||r||!n?.seatNumber,a=n?.sectionLabel??(o?void 0:n?.displayLabel),l=r?`${v("picker.guests","Guests")} ${n?.bookingMode==="variable"?`${n?.minOccupancy}\u2013${n?.maxOccupancy}`:n?.capacity}`:void 0,d=(o?[l,a?n?.rowLabel??n?.displayLabel:void 0]:[n?.rowLabel?`${t} ${U(n)??""}`.trim():void 0,`${v("picker.seat","Seat")} ${n?.seatNumber??e}`]).filter(Boolean).join(" \xB7 ");return(a?`<span class="sl-confirm-place">${i(a)}</span>`:"")+(d?`<span class="sl-confirm-pos">${a?" \xB7 ":""}${i(d)}</span>`:"")+(a||d?"":`<span class="sl-confirm-pos">${i(e)}</span>`)}function Qs(n,e){if(!n)return"";let t=e?v("picker.viewFromThisSeat","View from this seat"):v("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 Xs(n,e){if(!n||e)return"";let t=v("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 zs(n){return n.buyerMessage?.trim()||(n.restriction==="companion"?v("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):void 0)}function Zs(n,e,t){let i=Ji;if(n.length>1)return`<fieldset class="sl-confirm-tiers"><legend>${v("picker.ticketType","Ticket type")}</legend>`+n.map(o=>{let a=zs(o);return`<button type="button" class="sl-confirm-tier" data-confirm-tier="${i(o.id)}" aria-pressed="${o.id===e}"><span class="sl-confirm-tier-copy"><span class="sl-confirm-tier-name">${i(o.name)}</span>`+(a?`<small class="sl-confirm-tier-note">${i(a)}</small>`:"")+`</span><span class="sl-confirm-tier-price">${i(t(o))}</span></button>`}).join("")+"</fieldset>";let s=n[0],r=s?zs(s):void 0;return r?`<p class="sl-confirm-tier-note">${i(r)}</p>`:""}function sn(n){return`<span class="sl-seccard-dot" style="background:${k(n.color)}"></span><span class="sl-seccard-name">${k(n.label)}</span><span class="sl-seccard-left" data-full="${k(n.leftLabel)}" data-short="${k(n.leftShortLabel??n.leftLabel)}">${k(n.leftLabel)}</span>`+n.nav+n.close}function Js(n){return`<div class="sl-seccard-head"><span class="sl-seccard-dot" style="background:${k(n.color)}"></span><span class="sl-seccard-name">${k(n.label)}</span>`+(n.showPrice?`<span class="sl-seccard-price">${k(n.priceLabel)}</span>`:"")+n.close+`</div><div class="sl-seccard-zone">${n.zoneLabel?`${k(n.zoneLabel)} \xB7 `:""}<span class="sl-seccard-left">${k(n.leftLabel)}</span></div>`+(n.entrance?`<div class="sl-seccard-entrance">${k(n.entrance)}</div>`:"")+(n.mix?`<div class="sl-seccard-mix">${n.mix}</div>`:"")+`<div class="sl-seccard-foot"><button type="button" class="sl-seccard-overview">\u2190 ${k(n.overviewLabel)}</button>`+n.nav+`<span class="sl-seccard-hint">${k(n.hint)}</span></div>`}function er(n){return`<span class="sl-seccard-mix-item${n.dim?" sl-dim":""}"><span class="sl-seccard-mix-dot" style="background:${k(n.color)}"></span>${k(n.label)} <span class="sl-seccard-mix-price">${k(n.rangeLabel)}</span></span>`}function tr(n){return'<div class="sl-confirm-grid">'+n.identityFields+`</div><div class="sl-confirm-cat"><span class="sl-confirm-cat-name">${k(n.categoryLabel)}</span>`+(n.categoryLeftLabel?`<span class="sl-confirm-left">${k(n.categoryLeftLabel)}</span>`:"")+(n.priceLabel?`<span class="sl-confirm-price">${k(n.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-id">'+n.marker+`<span class="sl-confirm-dot" style="background:${k(n.categoryColor)}" aria-hidden="true"></span><span class="sl-sr">${k(n.categoryLabel)}</span><span class="sl-confirm-who">`+n.identity+"</span>"+(n.priceLabel?`<span class="sl-confirm-idprice">${k(n.priceLabel)}</span>`:"")+'</div><div class="sl-confirm-body">'+n.tierChoices+n.groupDates+n.wheelchair+n.commercial+(n.thumb||n.see3dPill?`<div class="sl-confirm-strip">${n.thumb}<span class="sl-confirm-pills">${n.see3dPill}</span></div>`:"")+n.inspect+'<div class="sl-confirm-row">'+(n.see3dRow??"")+`<button type="button" class="sl-confirm-cancel">${k(n.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">${k(n.selectLabel)}</span></button></div></div>`}function ir(n,e){let t=R,{variable:i}=e;return`<section class="sl-table-dialog" role="dialog" aria-modal="true" aria-labelledby="sl-table-title" aria-describedby="sl-table-copy"><div class="sl-table-head"><div class="sl-table-eyebrow">${t(i?Ne("picker.flexiblePartyTypeWord",{typeWord:e.typeWord}):Ne("picker.wholeTypeWord",{typeWord:e.typeWord}))}</div><h2 class="sl-table-title" id="sl-table-title">${t(n.displayLabel??n.label)}</h2><p class="sl-table-copy" id="sl-table-copy">${t(i?v("picker.chooseGuestsCopy","Choose how many guests will sit together. This table is held exclusively for your party."):Ne("picker.allPlacesBookedTogether",{count:n.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(Ne("picker.perGuestPrice",{price:e.unitPrice}))}</b>`)+`<span class="muted">${t(v("picker.tableCapacity","Table capacity"))}</span><span>${t(Ne("picker.guestsCount",{count:n.capacity}))}</span>`+(e.suppressPricing?"":`<span class="muted">${t(v("picker.total","Total"))}</span><b data-table-total></b>`)+"</div>"+(i?`<label class="sl-table-qtylabel" id="sl-table-qty-label">${t(v("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(v("picker.fewerGuests","Fewer guests"))}">\u2212</button><output aria-live="polite" data-table-qty>${n.quantity}</output><button type="button" data-table-step="1" aria-label="${t(v("picker.moreGuests","More guests"))}">+</button></div><div class="sl-table-range">${t(Ne("picker.chooseMinMaxGuests",{min:n.minOccupancy,max:n.maxOccupancy}))}</div>`:`<input type="hidden" data-table-qty value="${n.capacity}">`)+`<div class="sl-table-actions"><button type="button" class="sl-table-cancel">${t(Ne("common.cancel"))}</button><button type="button" class="sl-table-confirm">${t(e.held?v("picker.updateTable","Update table"):i?v("picker.selectTable","Select table"):v("picker.selectWholeTable","Select whole table"))}</button></div></div></section>`}function nr(n,e){let t=wl(n),i=document.createElement("div");i.className="sl-access",i.setAttribute("role","status"),i.setAttribute("aria-live","polite");let s=document.createElement("div");s.className="sl-access-card";let r=document.createElement("span");r.className="sl-access-icon",r.setAttribute("aria-hidden","true"),r.textContent="\u21BB";let o=document.createElement("div");o.className="sl-access-copy";let a=document.createElement("div");a.className="sl-access-title",a.textContent=t.title;let l=document.createElement("div");if(l.className="sl-access-body",l.textContent=t.body,o.append(a,l),t.action){let c=document.createElement("button");c.type="button",c.className="sl-access-act";let d=document.createElement("span");d.className="sl-access-act-icon",d.setAttribute("aria-hidden","true"),d.textContent="\u21BB";let p=document.createElement("span");p.textContent=t.action,c.append(d,p),c.addEventListener("click",async()=>{i.classList.add("is-reloading"),c.disabled=!0;try{await e()}catch{}finally{i.isConnected&&(i.classList.remove("is-reloading"),c.disabled=!1)}}),o.appendChild(c)}return s.append(r,o),i.appendChild(s),i}function sr(n){return n.map(e=>`<button type="button" role="switch" class="sl-a11yrow${e.className?` ${e.className}`:""}${e.on?" on":""}" data-a11y-row="${k(e.key)}" aria-checked="${e.on}" aria-pressed="${e.on}"`+(e.disabled?' disabled aria-disabled="true"':"")+`><span class="sl-a11yrow-i" aria-hidden="true">${k(e.icon)}</span><span class="sl-a11yrow-t"><span class="sl-a11yrow-l">${k(e.label)}</span>`+(e.note?`<span class="sl-a11yrow-n">${k(e.note)}</span>`:"")+"</span>"+(e.count?`<span class="sl-a11yrow-c">${k(e.count)}</span>`:"")+'<span class="sl-a11yrow-s" aria-hidden="true"></span></button>').join("")}function rr(n){let e=document.createElement("div");e.className="sl-floors on",e.setAttribute("role","group"),e.setAttribute("aria-label",n.tf("picker.chooseLevel","Choose level"));let t=[{id:"",name:n.tf("picker.allFloors","All floors")},...n.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",()=>n.onChoose(r.id)),e.appendChild(o)}let i=document.createElement("button");i.type="button",i.className="sl-floor-info",i.textContent="i";let s=n.tf("picker.floorHelp","All floors shows the complete venue. Choose one level to inspect and select its seats.");return i.setAttribute("aria-label",s),i.title=s,e.appendChild(i),e}function or(n,e,t){if(!n)return;let i=t?"":e;n.querySelectorAll("button[data-floor]").forEach(s=>{s.setAttribute("aria-pressed",String(s.dataset.floor===i))})}import{t as ce,tCount as kl}from"@seatlayer/core";var di=class{constructor(e){this.el=null;this.stripObserver=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?.classList.contains("strip")?Me(this.el,void 0,Xn):this.el?.remove(),this.el=null,this.syncLocatorDock(),this.host.refreshMinimap();return}this.collapsed=this.host.controller.getRung()==="seats",this.shownAt=Date.now(),this.render(e),this.host.refreshMinimap()}updateDockInPlace(e,t){let i=this.el;if(!i)return;let s=i.querySelector(".sl-seccard-dot");s&&(s.style.background=e.color);let r=i.querySelector(".sl-seccard-name");r&&Bi(r,e.label);let o=i.querySelector(".sl-seccard-left");o&&(o.dataset.full=t.leftLabel,o.dataset.short=t.leftShortLabel,Bi(o,t.leftLabel));let a=i.querySelector(".sl-seccard-nav");t.nav?(a?a.outerHTML=t.nav:i.querySelector(".sl-seccard-x")?.insertAdjacentHTML("beforebegin",t.nav),this.wireNavigation(i)):a&&a.remove(),i.setAttribute("aria-label",`${ce("picker.sectionSummaryAria",{label:e.label})}, ${t.leftLabel}`),this.fitStripCount()}wireNavigation(e){e.querySelectorAll("[data-section-nav]").forEach(t=>{t.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation();let s=t.dataset.sectionNav;s&&this.host.controller.focusSection(s)})})}render(e){let t=this.host.map();if(!t)return;let i=this.el?.classList.contains("strip")===!0&&this.el.isConnected,s=e.categories.length?e.categories.map(y=>{let w=this.host.controller.doc?.categories.find(x=>x.key===y.key);return w?this.host.catPriceRange(w):{min:y.priceMin,max:y.priceMax}}).filter(y=>y!=null):[{min:e.priceMin,max:e.priceMax}],r=Math.min(...s.map(y=>y.min)),o=Math.max(...s.map(y=>y.max)),a=r===o?this.host.money(r):`${this.host.money(r)}\u2013${this.host.money(o)}`,l=kl("picker.seatsLeftInSection",e.seatsLeft),c=ce("picker.seatsLeftShort",{count:e.seatsLeft}),d=`<button type="button" class="sl-seccard-x" aria-label="${ce("picker.closeSectionSummary")}">\u2715</button>`,p=`<button type="button" class="sl-seccard-x sl-seccard-back" aria-label="${ce("picker.closeSectionSummary")}"><span class="sl-seccard-back-chev" aria-hidden="true">\u2039</span>${R(ce("picker.overview"))}</button>`,u=qs(this.host.sectionNeighbours(e.id)),h=this.host.root()?.dataset.layout==="narrow",g={label:e.label,color:e.color,leftLabel:l,leftShortLabel:c,nav:u,close:d};if(h&&i&&this.el){this.updateDockInPlace(e,{leftLabel:l,leftShortLabel:c,nav:u});return}this.el?.remove();let m=document.createElement("div");if(h){if(m.className=i?"sl-seccard strip on":"sl-seccard strip on sl-mo-slide-up",m.setAttribute("role","group"),m.setAttribute("aria-label",`${ce("picker.sectionSummaryAria",{label:e.label})}, ${l}`),m.innerHTML=sn({...g,close:p}),i)for(let y of m.querySelectorAll(".sl-seccard-name,.sl-seccard-left"))y.classList.add("sl-mo-xfade");this.wireNavigation(m),m.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),t.appendChild(m),this.fitStripCount()}else if(this.collapsed)m.className="sl-seccard mini on",m.setAttribute("role","button"),m.setAttribute("aria-label",ce("picker.sectionSummaryAria",{label:e.label})),m.innerHTML=sn(g),this.wireNavigation(m),m.addEventListener("click",y=>{y.target.closest(".sl-seccard-x")||(this.collapsed=!1,this.shownAt=Date.now(),this.render(e))}),m.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(m);else{m.className="sl-seccard on",m.setAttribute("role","dialog"),m.setAttribute("aria-label",ce("picker.sectionSummaryAria",{label:e.label}));let y=this.host.priceBandKeys(),w=this.host.suppressPricing(),x=e.categories.map(P=>{let b=this.host.controller.doc?.categories.find(S=>S.key===P.key),E=b?this.host.catPriceRange(b):{min:P.priceMin,max:P.priceMax};return er({label:P.label,color:P.color,dim:y!=null&&!y.has(P.key),rangeLabel:w?"":E&&E.min!==E.max?`${this.host.money(E.min)}\u2013${this.host.money(E.max)}`:this.host.money(E?.min??P.price)})}).join("");m.innerHTML=Js({...g,priceLabel:a,showPrice:!w&&e.categories.length>0,zoneLabel:e.zoneLabel,entrance:e.entrance?`${ce("picker.entrance")} ${e.entrance}`:void 0,mix:x,overviewLabel:ce("picker.overview"),hint:ce("picker.tapSeatHint")}),this.wireNavigation(m),m.querySelector(".sl-seccard-x").addEventListener("click",()=>this.host.controller.overview()),m.querySelector(".sl-seccard-overview").addEventListener("click",()=>this.host.controller.overview()),(this.host.region("top-center")??t).appendChild(m)}this.el=m,h&&this.watchStrip(m),this.syncLocatorDock()}syncLocatorDock(){let e=this.host.root();e&&(this.el?.classList.contains("strip")?e.dataset.locator="true":delete e.dataset.locator)}fitStripCount(){let e=this.el;if(!e||!e.classList.contains("strip"))return;let t=e.querySelector(".sl-seccard-left");if(!t)return;let i=e.querySelector(".sl-seccard-name"),s=c=>c!=null&&c.clientWidth>0&&c.scrollWidth>c.clientWidth+1,r=()=>{let c=e.clientWidth;if(c<=0)return!0;let d=typeof getComputedStyle=="function"?getComputedStyle(e):null,p=m=>{let y=Number.parseFloat(m??"");return Number.isFinite(y)?y:0},u=[...e.children].filter(m=>m instanceof HTMLElement&&!m.hidden),h=p(d?.columnGap)||p(d?.gap);return u.reduce((m,y)=>m+Math.max(y.scrollWidth,y.getBoundingClientRect().width),0)+h*Math.max(0,u.length-1)+p(d?.paddingLeft)+p(d?.paddingRight)<=c+1},o=()=>t.hidden||!s(t)&&r(),a=c=>{if(t.hidden=c==="hidden",c==="hidden")return;let d=t.dataset.full??"";t.textContent=c==="full"?d:t.dataset.short??d},l=["full","short","hidden"];for(let c of l)if(a(c),o()&&!s(i))return;for(let c of l)if(a(c),o())return;a("hidden")}watchStrip(e){this.stripObserver?.disconnect(),this.stripObserver=null,typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{this.el===e&&this.fitStripCount()}),typeof ResizeObserver=="function"&&(this.stripObserver=new ResizeObserver(()=>{this.el===e&&this.fitStripCount()}),this.stripObserver.observe(e))}collapse(){!this.el||this.collapsed||!this.current||this.host.root()?.dataset.layout!=="narrow"&&(this.collapsed=!0,this.render(this.current))}onView(){if(!(!this.el||this.collapsed||!this.current)&&this.host.root()?.dataset.layout!=="narrow"){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,i=this.host.map();if(!e||!t||!i)return 0;let s=this.host.activeFloorObjects().find(x=>x.type==="section"&&x.id===t.id)?.outline;if(!s||s.length<3)return 0;let r=s.map(x=>this.host.controller.worldToScreen(x)),o=r.map(x=>x.x),a=r.map(x=>x.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=i.getBoundingClientRect(),h=e.getBoundingClientRect(),g=h.left-u.left,m=h.top-u.top,y=Math.max(0,Math.min(g+h.width,l+d)-Math.max(g,l)),w=Math.max(0,Math.min(m+h.height,c+p)-Math.max(m,c));return y*w/(d*p)}};import{t as fi,tCount as _l}from"@seatlayer/core";import{contrastRatio as Dl}from"@seatlayer/core/core/color";import{t as ar,tCount as pi}from"@seatlayer/core";function rn(n,e,t){try{return new Intl.DateTimeFormat(e,{...t,...n.timezone?{timeZone:n.timezone}:{}}).format(new Date(n.startsAt))}catch{return new Date(n.startsAt).toLocaleString(e)}}var hi=(n,e)=>rn(n,e,{dateStyle:"medium"}),ui=(n,e)=>rn(n,e,{timeStyle:"short"}),mi=(n,e)=>rn(n,e,{weekday:"short",day:"numeric",month:"short"});function lr(n,e,t,i){return!n.length||n.length>=e?null:{summary:i,labels:n.map(s=>`${hi(s,t)} \xB7 ${ui(s,t)}`)}}function Sl(n,e){let t=new Set(e);return n.map(i=>({...i,free:!t.has(i.eventKey)}))}function cr(n,e){let t=[...n];if(t.length<=1)return t[0]??"";try{return new Intl.ListFormat(e,{style:"long",type:"conjunction"}).format(t)}catch{return t.join(", ")}}function Tl(n,e,t="",i=!1){if(!n.length)return"";let s=n.map(r=>{let o=r.free?e.free:e.blocked,a=i&&r.free?`<input class="sl-night-choice" type="checkbox" data-pg-event-key="${k(r.eventKey)}" aria-label="${k(`${r.shortDate}: ${o}`)}" checked>`:"";return`<li class="sl-night${r.free?" ok":" no"}" aria-label="${k(`${r.shortDate}: ${o}`)}">`+a+`<i class="sl-night-dot" aria-hidden="true"></i><span class="d">${k(r.shortDate)}</span><span class="st">${k(o)}</span></li>`}).join("");return`<div class="sl-tip-nights"><div class="sl-tip-nights-title">${k(e.title)}</div><ul class="sl-nightstrip">${s}</ul><p class="sl-tip-nights-note">${k(e.notAvailableOn)}</p>`+t+"</div>"}function Cl(n){return n.selectPartialLabel&&n.pinned?`<button type="button" class="sl-tip-switch" data-pg-select-partial>${k(n.selectPartialLabel)}</button>`:n.switchLabel&&n.pinned?`<button type="button" class="sl-tip-switch" data-pg-switch-mode>${k(n.switchLabel)}</button>`:n.switchLabel||n.selectPartialLabel?"":`<p class="sl-tip-advice">${k(n.advice)}</p>`}function El(n){return Number(n.available)+Number(n.selected)+Number(n.partial)+Number(n.unavailable)}function dr(n,e,t){if(El(n)<2)return"";let i=(r,o,a="")=>`<li class="sl-pg-legend-item"><i class="sl-pg-sw ${r}"${a}></i>${k(o)}</li>`,s=[];return n.available&&s.push(i("sl-pg-sw-free",e.available,` style="background:${k(t)}"`)),n.selected&&s.push(i("sl-pg-sw-sel",e.selected)),n.partial&&s.push(i("sl-pg-sw-split",e.partial,` style="--sl-pg-sw-cat:${k(t)}"`)),n.unavailable&&s.push(i("sl-pg-sw-off",e.unavailable)),`<ul class="sl-pg-legend-list" aria-label="${k(e.title)}">${s.join("")}</ul>`}function pr(n,e){if(!n.length)return"";let t=n.map(i=>{let s=i.labels.length?i.labels.join(", "):e.empty;return`<li class="sl-pg-night-row${i.labels.length?"":" empty"}${i.active?" active":""}" role="button" tabindex="0"${i.active?' aria-current="true"':""} data-event-key="${k(i.eventKey)}"><span class="n">${k(i.name)}</span><span class="s">${k(s)}</span></li>`}).join("");return`<div class="sl-pg-nights" role="group" aria-label="${k(e.title)}"><div class="sl-pg-nights-title">${k(e.title)}</div><ul class="sl-pg-nights-list">${t}</ul></div>`}function on(n,e){if(n?.kind!=="partial"||!e?.length)return null;let t=n.data?.blockedEventKeys??[],i=Sl(e,t);return{states:i,missing:i.filter(s=>!s.free).map(s=>s.shortDate)}}function hr(n,e){return n?Tl(n.states,{title:v("picker.group.partlyAvailableTitle","Free on some nights only"),free:v("picker.group.nightFree","Free"),blocked:v("picker.group.nightBlocked","Not available"),notAvailableOn:ar("picker.group.notAvailableOn",{dates:cr(n.missing,e.locale)})},Cl({switchLabel:e.switchLabel??null,selectPartialLabel:e.selectPartialLabel??null,pinned:e.pinned,advice:v("picker.group.pickSeatFreeEveryNight","Pick a seat that is free every night.")}),!!e.selectPartialLabel&&!!e.pinned):""}function Al(n,e,t,i){if(!n.length)return"";let s=new Set(e),r=new Set(t),o=n.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="${k(a.eventKey)}" aria-label="${k(`${a.shortDate}: ${l?i.available:i.unavailable}`)}"${l&&r.has(a.eventKey)?" checked":""}${l?"":" disabled"}><span class="sl-confirm-date-label">${k(a.shortDate)}</span><span class="sl-confirm-date-state">${k(l?i.available:i.unavailable)}</span></label></li>`}).join("");return`<fieldset class="sl-confirm-dates" data-pg-confirm-dates><legend>${k(i.title)}</legend><p class="sl-confirm-dates-copy">${k(i.copy)}</p><label class="sl-confirm-date-all"><input type="checkbox" data-pg-confirm-all><span>${k(i.selectAll)}</span></label><ul>${o}</ul><p class="sl-confirm-dates-summary" data-pg-confirm-summary aria-live="polite"></p></fieldset>`}function ur(n,e,t,i){let s=e.availableEventKeys(t);return Al(n,s,e.includedEventKeys(),{title:i("picker.group.confirmDatesTitle","Choose performance dates"),copy:s.length===n.length?i("picker.group.confirmAllDatesCopy","This seat is available for all {count} dates. Keep all selected, or remove dates you do not want.").replace("{count}",String(n.length)):i("picker.group.confirmPartialDatesCopy","This seat is available for {available} of {total} dates. Choose one date or keep every available date.").replace("{available}",String(s.length)).replace("{total}",String(n.length)),selectAll:i("picker.group.confirmSelectAll","Select all available dates"),available:i("picker.group.nightFree","Available"),unavailable:i("picker.group.nightBlocked","Unavailable")})}function mr(n){return[...n.querySelectorAll("[data-pg-confirm-event-key]")].filter(e=>e.checked&&!e.disabled).map(e=>e.dataset.pgConfirmEventKey).filter(Boolean)}function fr(n,e,t,i){let s=[...n.querySelectorAll("[data-pg-confirm-event-key]")];if(!e||!s.length)return;let r=n.querySelector(".sl-confirm-add"),o=n.querySelector("[data-pg-confirm-all]"),a=()=>{let l=s.filter(p=>!p.disabled),c=mr(n).length;o&&(o.checked=c===l.length,o.indeterminate=c>0&&c<l.length);let d=n.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"),i()};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 gr(n,e,t){if(!n||!t||!n.querySelector("[data-pg-confirm-event-key]"))return!0;let i=mr(n);if(!i.length)return!1;let s=n.querySelector(".sl-confirm-add");return s?.setAttribute("aria-busy","true"),s&&(s.disabled=!0),await t.apply(e,i)?!0:(s?.removeAttribute("aria-busy"),s?.isConnected&&(s.disabled=!1),!1)}function br(n,e,t){return n?ar("picker.group.seatPartlyAvailable",{label:e,free:n.states.length-n.missing.length,total:n.states.length,dates:cr(n.missing,t)}):""}function vr(n,e){let t=n.map((i,s)=>{let r=i.state==="done"?e.done:i.state==="current"?e.current:e.upcoming;return`<li class="sl-pg-step-item" data-step="${k(i.id)}" data-state="${k(i.state)}"${i.state==="current"?' aria-current="step"':""}><span class="i" aria-hidden="true">${i.state==="done"?"\u2713":String(s+1)}</span><span class="l">${k(i.label)}</span><span class="sl-pg-sr">${k(r)}</span></li>`}).join("");return`<ol class="sl-pg-steps" aria-label="${k(e.label)}">${t}</ol>`}function an(n,e){return`<ul class="sl-pg-cards">${n.map(i=>`<li class="sl-pg-card" data-event-key="${k(i.eventKey)}"><span class="n">${k(i.name)}</span><time datetime="${k(i.iso)}"><span class="d">${k(i.date)}</span><span class="t">${k(i.time)}</span></time></li>`).join("")}</ul><p class="sl-pg-included">${k(e)}</p>`}function yr(n){let e=n.rows.map(t=>`<li class="sl-pg-pane-row${t.labels.length?"":" empty"}" data-event-key="${k(t.eventKey)}"><span class="n">${k(t.name)}</span><span class="s">${k(t.labels.length?t.labels.join(", "):n.empty)}</span></li>`).join("");return`<div class="sl-pg-pane-title">${k(n.title)}</div><ul class="sl-pg-pane-list">${e}</ul>`+(n.note?`<p class="sl-pg-pane-note">${k(n.note)}</p>`:"")+(n.total?`<div class="sl-pg-pane-total"><span>${k(n.total.label)}</span><b>${k(n.total.amount)}</b></div>`:"")+(n.holdStatus?`<p class="sl-pg-hold-status" role="status">${k(n.holdStatus)}</p>`:"")}function wr(n){let e=Math.max(0,n);return`${Math.floor(e/6e4)}:${String(Math.floor(e/1e3)%60).padStart(2,"0")}`}function xr(n,e){if(!n||n.seats<=0)return"";if(e==="same_seat"){let t=n.perPerformance??n.seats;return n.totalPerformances&&n.performances<n.totalPerformances?pi("picker.group.performancesChosenOf",t,{chosen:n.performances,total:n.totalPerformances}):pi("picker.group.seatsEveryPerformance",t)}return n.perPerformance!=null&&n.performancesChosen===n.performances?pi("picker.group.seatsPerPerformance",n.seats,{per:n.perPerformance}):pi("picker.group.performancesChosenOf",n.seats,{chosen:n.performancesChosen,total:n.performances})}function kr(n,e){n.querySelectorAll(".sl-pg-night-row[data-event-key]").forEach(t=>{let i=()=>e(t.dataset.eventKey);t.addEventListener("click",i),t.addEventListener("keydown",s=>{s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),i())})})}function Lt(n){if(!n)return null;let e=n.getBoundingClientRect();return e.width>0&&e.height>0?e:null}function Pl(n){return Lt(n.peek?.querySelector(".sl-peek-sum"))??Lt(n.foot?.querySelector(".sl-total"))??Lt(n.tray)??Lt(n.sheetHead)}function cn(n,e,t,i){let s=n,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=i?.find(p=>p.key===t.categoryKey)?.color,d=()=>{let p=Pl(s);p&&Zn({from:a,to:{x:p.left+p.width/2,y:p.top+p.height/2},label:l,color:c})};Lt(s.peek)?requestAnimationFrame(d):d()}var ln=60,Ll=650;function Sr(n,e){if(!e.length)return;let t=n.reducedMotion===!0;t||e.forEach((o,a)=>{n.schedule(()=>n.pop(o.id),a*ln)});let i=t?0:e.length*ln,s=e.find(o=>o.sectionId)?.sectionId;if(n.schedule(()=>{if(n.focusSeats?.(e.map(l=>l.id))||!s)return;let o=e.filter(l=>l.sectionId===s),a={x:o.reduce((l,c)=>l+c.x,0)/o.length,y:o.reduce((l,c)=>l+c.y,0)/o.length};n.focus(s,a)},i),t)return;let r=i+(n.focusSeats||s?Ll:0);e.forEach((o,a)=>{n.schedule(()=>cn(n.regions,n.screenPoint(o),o,n.categories),r+a*ln)})}import{t as Ml}from"@seatlayer/core";function he(n){return String(n??"\u2014").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e])}function Hl(n,e){let t=n.objectType==="table"&&!!n.bookingMode,i=n.objectType==="booth",s=t||i||!n.seatNumber,r=s?n.rowLabel??n.displayLabel??n.label:n.seatNumber,o=t?`${v("picker.guests","Guests")} ${n.bookingMode==="variable"?`${n.minOccupancy}\u2013${n.maxOccupancy}`:n.capacity}`:!i&&n.rowLabel?`${e} ${U(n)??""}`.trim():"";return`<div class="sl-tip-head"><div class="sl-tip-id"><span class="sl-tip-seat${s?" name":""}">${he(r)}</span>`+(o?`<span class="sl-tip-row">${he(o)}</span>`:"")+"</div>"+(n.sectionLabel?`<div class="sl-tip-sec"><span class="sl-tip-eyebrow">${v("picker.section","Section")}</span><span class="sl-tip-secname">${he(n.sectionLabel)}</span></div>`:"")+"</div>"}function Tr(n,e){let t=n.status==="not_for_sale",i=n.mark?.kind==="partial",s=n.status==="free"||i?"":`<span class="sl-tip-tag">${t?v("picker.notAvailable","Not available"):n.status==="held"?Ml("map.statusHeld"):v("picker.sold","Sold")}</span>`,r=t?"":e.price,o=r?`<span class="sl-tip-amt">${he(r)}</span>`:"",a=!r&&e.priceNote?`<div class="sl-tip-note">${he(e.priceNote)}</div>`:"",l=Se(n.commercial),c=l?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u25D0</span>${he(l)}</div>`:"",d=rt(n.wheelchairSpaceType),p=d?`<div class="sl-tip-cx"><span class="g" aria-hidden="true">\u267F</span>${he(d)}</div>`:"",u=e.reason?`<div class="sl-tip-reason">${he(e.reason)}</div>`:"";return'<i class="sl-tip-rail" aria-hidden="true"></i>'+Hl(n,e.rowTypeWord)+`<div class="sl-tip-cat"><span class="sl-tip-dot" style="background:${he(n.categoryColor)}"></span><span class="sl-tip-name">${he(n.categoryLabel)}</span>`+s+o+"</div>"+a+u+p+c+(e.extra??"")}function Cr(n,e,t,i){let s=n.x+14,r=n.y-i.height-12,o=n.y+18,a=r;s+i.width>e-8&&(s=n.x-i.width-14),r<8&&o+i.height<=t-8&&(a=o);let l=Math.max(8,t-i.height-8);return{left:Math.max(8,Math.min(s,Math.max(8,e-i.width-8))),top:Math.max(8,Math.min(a,l))}}function Er(n,e,t,i=22){let s=Math.max(8,Math.min(n.x-t.width/2,Math.max(8,e.width-t.width-8))),r=n.y-i-t.height,o=n.y+i;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 dn=14,Ol=12,Rl=12,Il=18;function Ar(n,e,t,i=Ol){let s=dn;if(!(n>=e.height-s-t.height-Il))return{placement:"sheet",bottom:s};let o=e.height-n+i,a=e.height-Rl-t.height;return{placement:"above",bottom:Math.max(0,Math.min(o,a))}}function Pr(n,e,t,i){let s=t.width/2+12,r=Math.max(s,Math.min(e.width-s,n.x)),o=n.y+t.height+24<=e.height,a=n.y<t.height+24&&o?"below":"above",l=i&&a==="above"?Math.max(t.height+24,n.y):n.y;return{left:r,top:Math.max(8,Math.min(e.height-8,l)),placement:a}}function Lr(n,e,t){let i=n.querySelector("[data-pg-select-partial]"),s=[...n.querySelectorAll("[data-pg-event-key]")],r=()=>s.filter(a=>a.checked).map(a=>a.dataset.pgEventKey).filter(Boolean),o=()=>{if(!i)return;let a=r().length;i.disabled=a===0,i.textContent=e?.(a)??i.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())})}),i?.addEventListener("click",()=>{let a=r();a.length&&t?.(a)})}function $e(n){let e=n?.displayType?.trim()||n?.rowType?.trim();return e||(n?.objectType==="table"?v("picker.table","Table"):n?.objectType==="booth"?v("picker.booth","Booth"):v("picker.row","Row"))}var Bl=360,Nl=160;function $l(n){return Dl("#ffffff",n)>=3?"#ffffff":"#0b0f19"}var gi=class{constructor(e){this.el=null;this.seat=null;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 i=st(e)?e.viewUrl??"":"",s=ai(t);if(!i&&!s)return"";let r=i?null:li(e,e.focalPoint??t.focalPoint);if(!i&&r==null)return"";let o=s&&r!=null?`<div class="sl-confirm-sight">${R(fi("picker.sightline",{m:r}))}</div>`:"";if(!i)return o;let a=R(fi("picker.viewFromSeat",{label:e.label})),l=R(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){let t=this.host,i=this.seat?.id;this.el?.remove(),this.el=null,this.seat=e,t.root()?.setAttribute("data-confirming","true"),t.els().side?.toggleAttribute("inert",!0),Object.values(t.regions()).forEach(L=>L.toggleAttribute("inert",!0)),t.controller.setSelectionFocus(e.id),i&&i!==e.id&&t.controller.deselect([i]),t.hideTooltip();let s=t.controller.seatDetails(e.id),r=t.controller.doc?.categories.find(L=>L.key===e.categoryKey),o=s?.price??(r?.tiers?.length?r.tiers[0].price:r?.price),a=o!=null?t.paidPrice(e.categoryKey,s?.tierId??r?.tiers?.[0]?.id??null,o,e.label):void 0,l=Ws(s,e.displayLabel??e.label,$e(s)),c=s?.tiers??r?.tiers??[],d=s?.tierId??c[0]?.id,p=t.suppressPricing()?"":Zs(c,d,L=>t.money(t.paidPrice(e.categoryKey,L.id,L.price,e.label))),u=t.buyerView()==="venue3d",h=t.performanceGroup()?.confirmDateSelection??void 0,g=h?t.performanceGroup()?.nights?.()??[]:[],m=h?ur(g,h,e.id,(L,I)=>t.tf(L,I)):"",y=document.createElement("div");y.className="sl-confirm sl-mo-in",m&&y.classList.add("sl-confirm-group-dates"),y.setAttribute("role","dialog"),y.setAttribute("aria-label",fi("picker.confirmSeatLabel",{label:e.label}));let w=r?.color??"#6e7bff";y.style.setProperty("--sl-cat",w),y.style.setProperty("--sl-cat-ink",$l(w));let x=String(s?.categoryLabel??r?.label??e.categoryKey),P=t.controller.categoryAvailability()[e.categoryKey],b=typeof P=="number"&&P>0?_l("picker.leftCount",P):"";y.innerHTML=tr({identityFields:l,identity:Ys(s,e.displayLabel??e.label,$e(s)),marker:Pt(s?.wheelchairSpaceType),see3dPill:Qs(t.canOffer3d(),u),categoryColor:r?.color??"#6e7bff",categoryLabel:x,priceLabel:!t.suppressPricing()&&a!=null?t.money(a):"",categoryLeftLabel:b,tierChoices:p,groupDates:m,wheelchair:Gs(s?.wheelchairSpaceType),commercial:js(e.commercial),thumb:t.seatViewEnabled()&&t.buyerView()!=="venue3d"?this.thumbHtml(e):"",inspect:u?`<div class="sl-confirm-inspect-row">${Ks(e,t.suppressPricing()?`${s?.displayLabel??e.displayLabel??e.label}`:`${s?.displayLabel??e.displayLabel??e.label} \xB7 ${a==null?t.tf("picker.priceNotSupplied","Price not supplied"):t.money(a)}`,u)}${Us(e,u?t.view3dCompareSeatIds():null)}${nn(t.canOffer3d(),u)}</div>`:nn(t.canOffer3d(),u),see3dRow:Xs(t.canOffer3d(),u),cancelLabel:fi("common.cancel"),selectLabel:t.addSeatLabel(s?.objectType)}),t.els().map.appendChild(y),this.el=y;let E=y.querySelector(".sl-confirm-thumb"),S=E?.closest(".sl-confirm-thumbwrap")??null;if(E&&S){let L=!1,I=()=>{if(L||!S.isConnected)return;L=!0;let H=()=>{S.remove(),this.el===y&&t.reanchor()};if(t.reducedMotion()||typeof requestAnimationFrame!="function"){H();return}S.style.height=`${S.offsetHeight}px`,S.classList.add("sl-confirm-thumb-out"),requestAnimationFrame(()=>{S.style.height="0px",S.style.opacity="0"}),setTimeout(H,Nl)};E.addEventListener("error",I),E.addEventListener("load",()=>{E.naturalWidth||I()});let A=e.viewMeta?.previewUrl??e.viewUrl;A?t.resolveAssetUrl(A).then(H=>{if(!(!y.isConnected||this.el!==y)){if(!H){I();return}E.src=H}}).catch(H=>{I(),t.onError(H)}):I()}t.reanchor(),y.querySelector(".sl-confirm-view")?.addEventListener("click",()=>{t.openSeatView(e)}),y.querySelector(".sl-confirm-confidence")?.addEventListener("click",L=>{t.openSeatConfidencePassport(e,L.currentTarget instanceof HTMLElement?L.currentTarget:null)}),y.querySelector(".sl-confirm-compare")?.addEventListener("click",()=>t.saveView3dComparisonSeat(e)),y.querySelectorAll("[data-confirm-tier]").forEach(L=>{L.addEventListener("click",()=>{let I=L.dataset.confirmTier,A=c.find(B=>B.id===I);if(!A)return;t.controller.setSeatTier(e.id,A.id),y.querySelectorAll("[data-confirm-tier]").forEach(B=>{B.setAttribute("aria-pressed",String(B===L))});let H=y.querySelector(".sl-confirm-price");H&&(H.textContent=t.money(t.paidPrice(e.categoryKey,A.id,A.price,e.label))),t.reanchor()})}),y.querySelectorAll(".sl-confirm-3d,.sl-confirm-3dpill,.sl-confirm-3drow").forEach(L=>{L.addEventListener("pointerdown",Xt,{once:!0}),L.addEventListener("click",()=>{t.buyerView()==="venue3d"?(t.dismiss(),t.view3dHandle()?.flyToSeat(e.id)):(t.rememberView3dReturnSeat(e),t.dismiss(),t.enter3d(e.id))})}),fr(y,h,(L,I)=>t.tf(L,I),()=>t.reanchor()),y.querySelector(".sl-confirm-add").addEventListener("click",()=>{this.commit()}),y.querySelector(".sl-confirm-cancel").addEventListener("click",()=>this.cancel()),requestAnimationFrame(()=>{let L=y.querySelector(".sl-confirm-add");L?.focus(),t.liftToastOverConfirm(),t.fitTranslatedRows(),t.inviteCommit(y,L)})}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}),i=e.els().map;if(e.root()?.dataset.layout==="narrow"){let d=Ar(t.y,{height:i.clientHeight},{height:this.el.offsetHeight||230});d.placement==="above"?(this.el.dataset.placement="above",this.el.style.bottom=`${d.bottom}px`):(this.el.removeAttribute("data-placement"),this.el.style.removeProperty("bottom")),Yn(this.el,t,i),e.liftToastOverConfirm();return}let s=i.clientWidth,r=i.clientHeight,o=this.el.offsetWidth||276,a=this.el.offsetHeight||230,l=this.el.classList.contains("sl-confirm-group-dates"),c=Pr(t,{width:s,height:r},{width:o,height:a},l);this.el.dataset.placement=c.placement,this.el.style.left=`${c.left}px`,this.el.style.top=`${c.top}px`,Ut(this.el,t,{left:c.left,top:c.top,width:o,height:a})}dismiss(){let e=this.host;this.el&&Me(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 gr(this.el,t.id,e.performanceGroup()?.confirmDateSelection??void 0))return;e.collapseSectionCard(),this.seat=null,e.syncTray(),e.syncSelectionTo3d();let r=()=>{e.dismiss(),cn(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,Bl)}cancel(){let e=this.host,t=this.seat;t&&(e.controller.deselect([t.id]),this.seat&&e.dismiss(),e.syncSelectionTo3d(),e.root()?.focus({preventScroll:!0}))}};function Mr(n,e,t){if(!e||t)return;e.classList.add("sl-confirm-add-invite");let i=()=>e.classList.remove("sl-confirm-add-invite");n.addEventListener("pointerdown",i,{once:!0}),n.addEventListener("keydown",i,{once:!0}),e.addEventListener("focus",i,{once:!0})}function Hr(n,e){return n&&n!=="seat"?e("picker.select","Select"):e("picker.addSeat","Add seat")}import{pointInPolygon as Vl}from"@seatlayer/core";import{createMinimapTransform as Fl,minimapPointToWorld as zl,minimapViewportPlan as jl}from"@seatlayer/core/picker/minimapGeometry";function Or(n,e){let t=new pn(n);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 i=document.createElement("button");i.type="button",i.className="sl-minimap-toggle",i.setAttribute("aria-label",v("picker.openVenueMap","Open venue overview map")),i.setAttribute("aria-expanded","false"),i.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6l5-2 8 3 5-2v13l-5 2-8-3-5 2zM8 4v13M16 7v13"/></svg>',e.appendChild(i),this.miniToggle=i;let s=document.createElement("div");s.className="sl-minimap",s.setAttribute("role","group");let 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",v("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",v("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",v("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,i.addEventListener("click",()=>{let p=this.host.root()?.dataset.minimapOpen==="true";this.userClosed=p,this.setMinimapOpen(!p)}),l.addEventListener("click",()=>{this.userClosed=!0,this.setMinimapOpen(!1)}),c.addEventListener("click",p=>{if(this.miniSuppressClick){this.miniSuppressClick=!1;return}this.minimapJump(p)}),c.addEventListener("pointerdown",p=>this.minimapPointerDown(p)),c.addEventListener("pointermove",p=>this.minimapPointerMove(p)),c.addEventListener("pointerup",p=>this.minimapPointerUp(p)),c.addEventListener("pointercancel",p=>this.minimapPointerUp(p)),c.addEventListener("keydown",p=>this.minimapKeydown(p)),this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect()}setAutoOpen(e){if(this.miniWrap){if(!e){this.userClosed=!1,this.host.root()?.dataset.minimapOpen==="true"&&this.setMinimapOpen(!1,!1);return}this.userClosed||this.host.root()?.dataset.minimapOpen==="true"||this.setMinimapOpen(!0,!1)}}setMinimapOpen(e,t=!0){this.host.root()?.setAttribute("data-minimap-open",String(e)),this.miniToggle?.setAttribute("aria-expanded",String(e)),t&&(e?this.miniCanvas?.focus():this.miniToggle?.focus())}layoutMinimap(){let e=this.miniCanvas,t=this.miniBase,i=this.host.controller.getViewport()?.bounds;if(!e||!t||!i||!(i.width>0&&i.height>0))return;let s=196,r=146,o=6,a=i.width/Math.max(1,i.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=Fl(i,e.width,e.height,d,o)}syncMinimapLabel(){if(!this.miniLabel||!this.miniWrap)return;let e=this.host.controller.getFloors(),t=this.host.controller.isFloorOverview()?v("picker.allFloors","All floors"):e.find(d=>d.id===this.host.controller.getActiveFloorId())?.name??v("picker.venueOverview","Venue overview"),i=this.host.controller.getMinimapSnapshot().sections,r=i.find(d=>d.active)?.label??this.host.focusedSectionLabel(),o=r?`${t} \xB7 ${r}`:t;this.miniLabel.textContent=o;let a=i.filter(d=>d.state==="selected").length,l=i.filter(d=>d.state==="available").length,c=i.filter(d=>d.state==="inactive").length;this.miniWrap.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections.`:o),this.miniCanvas?.setAttribute("aria-label",i.length?`${o}. ${a} selected, ${l} available, ${c} inactive sections. ${v("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click a section, or use arrow keys to pan.")}`:`${o}. ${v("picker.venueMapInstructions","The outlined region is the visible map area. Drag it, click elsewhere, or use arrow keys to pan.")}`)}refreshMinimap(){this.miniBase&&(this.layoutMinimap(),this.syncMinimapLabel(),this.drawMinimapStatic(),this.drawMinimapRect())}drawMinimapStatic(){let e=this.miniBase,t=this.miniTf;if(!e||!t)return;let i=e.getContext("2d");if(!i)return;i.clearRect(0,0,e.width,e.height);let s=p=>p*t.scale+t.offX,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;i.beginPath(),p.outline.forEach((h,g)=>g===0?i.moveTo(s(h.x),r(h.y)):i.lineTo(s(h.x),r(h.y))),i.closePath();let u=p.paint;if(i.globalAlpha=p.state==="inactive"?.5:.92,u?i.fillStyle=u.fill:(i.globalAlpha=p.state==="inactive"?.18:p.state==="selected"?.72:.34,i.fillStyle=p.state==="inactive"?a:p.state==="selected"?l:c),i.fill(),i.globalAlpha=.82,i.lineWidth=Math.max(1,t.dpr),i.strokeStyle=u?.stroke||o,i.stroke(),p.owned){i.globalAlpha=1,i.lineWidth=Math.max(2,t.dpr*1.5),i.strokeStyle=l,i.stroke();let h=p.outline.reduce((g,m)=>({x:g.x+m.x,y:g.y+m.y}),{x:0,y:0});i.beginPath(),i.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),i.fillStyle=l,i.fill(),i.beginPath(),p.outline.forEach((g,m)=>m===0?i.moveTo(s(g.x),r(g.y)):i.lineTo(s(g.x),r(g.y))),i.closePath()}p.active&&(i.globalAlpha=1,i.lineJoin="round",i.lineWidth=Math.max(4,t.dpr*3.5),i.strokeStyle=this.host.cssVar("--sl-surface")||"#fff",i.stroke(),i.lineWidth=Math.max(2,t.dpr*1.75),i.strokeStyle=l,i.stroke())}if(i.globalAlpha=1,!d.sections.length){let p=Math.max(1,t.dpr),u=this.host.controller.getRenderer?.(),h=new Map,g=m=>{let y=h.get(m);if(y)return y;let w=u?.categoryDisplayColor?.(m)||c;return h.set(m,w),w};for(let m of d.seats)i.globalAlpha=m.state==="inactive"?.22:.78,i.fillStyle=m.state==="inactive"?a:m.state==="selected"?l:g(m.categoryKey),i.beginPath(),i.arc(s(m.x),r(m.y),p,0,Math.PI*2),i.fill();i.globalAlpha=1}}drawMinimapRect(){let e=this.miniCanvas,t=this.miniBase,i=this.miniTf;if(!e||!t||!i)return;let s=e.getContext("2d");if(!s)return;s.clearRect(0,0,e.width,e.height),s.drawImage(t,0,0);let r=this.host.controller.getViewport();if(!r)return;let o=jl(r.visible,i,e.width,e.height,Math.max(2,i.dpr*2)),a=this.host.cssVar("--sl-text")||"#12151c",l=this.host.cssVar("--sl-surface")||"#fff";s.save(),s.globalAlpha=.1,s.fillStyle=a,s.fillRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),s.globalAlpha=.9,s.lineJoin="round",s.lineWidth=Math.max(4,i.dpr*3.25),s.strokeStyle=l,s.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),s.globalAlpha=1,s.lineWidth=Math.max(2,i.dpr*1.75),s.strokeStyle=a,s.strokeRect(o.raw.x,o.raw.y,o.raw.width,o.raw.height),o.clipped&&Object.values(o.clippedEdges).some(Boolean)&&(s.setLineDash([Math.max(3,i.dpr*3),Math.max(2,i.dpr*2)]),s.strokeRect(o.clipped.x,o.clipped.y,o.clipped.width,o.clipped.height)),s.restore()}minimapWorldPoint(e){let t=this.miniCanvas,i=this.miniTf;if(!t||!i)return null;let s=t.getBoundingClientRect(),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{...zl({x:r,y:o},i),px:r,py:o}}minimapPointerDown(e){let t=this.minimapWorldPoint(e),i=this.host.controller.getViewport()?.visible;!t||!i||!(t.x>=i.x&&t.x<=i.x+i.width&&t.y>=i.y&&t.y<=i.y+i.height)||(this.miniDrag={pointerId:e.pointerId,offsetX:t.x-(i.x+i.width/2),offsetY:t.y-(i.y+i.height/2),startX:e.clientX,startY:e.clientY,moved:!1},this.miniCanvas?.setPointerCapture(e.pointerId),this.miniCanvas?.classList.add("sl-dragging"),e.preventDefault())}minimapPointerMove(e){let t=this.miniDrag;if(!t||t.pointerId!==e.pointerId)return;let i=this.minimapWorldPoint(e);i&&(!t.moved&&Math.hypot(e.clientX-t.startX,e.clientY-t.startY)>2&&(t.moved=!0,this.host.controller.clearSectionFocus()),this.host.controller.panToWorld({x:i.x-t.offsetX,y:i.y-t.offsetY}),e.preventDefault())}minimapPointerUp(e){let t=this.miniDrag;!t||t.pointerId!==e.pointerId||(this.miniSuppressClick=t.moved,this.miniDrag=null,this.miniCanvas?.classList.remove("sl-dragging"),this.miniCanvas?.hasPointerCapture(e.pointerId)&&this.miniCanvas.releasePointerCapture(e.pointerId))}minimapKeydown(e){let t=this.host.controller.getViewport()?.visible;if(!t)return;if(e.key==="Home"){this.host.controller.overview(),e.preventDefault();return}let i=e.key==="ArrowLeft"?-t.width*.2:e.key==="ArrowRight"?t.width*.2:0,s=e.key==="ArrowUp"?-t.height*.2:e.key==="ArrowDown"?t.height*.2:0;!i&&!s||(this.host.controller.clearSectionFocus(),this.host.controller.panToWorld({x:t.x+t.width/2+i,y:t.y+t.height/2+s}),e.preventDefault())}minimapJump(e){let t=this.minimapWorldPoint(e);if(t){for(let i of this.host.controller.getMinimapSnapshot().sections)if(!(i.state==="inactive"||i.outline.length<3)&&Vl(t,i.outline)){this.host.controller.focusSection(i.id);return}this.host.controller.clearSectionFocus(),this.host.controller.panToWorld(t)}}};import{t as hn}from"@seatlayer/core";var Gl=12;function Rr(n,e){let t=e.floors(),i=new Set(t.map(S=>S.label.trim().toLocaleLowerCase())),s=e.zones().filter(S=>S.seatCount>0&&!i.has(S.label.trim().toLocaleLowerCase())),r=e.sections().filter(S=>S.seatCount>0&&!i.has(S.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 m=()=>{for(let S of d.querySelectorAll(":scope > div")){let L=S.querySelector('[aria-pressed="true"]');!L||S.scrollWidth<=S.clientWidth||L.scrollIntoView({block:"nearest",inline:"nearest"})}},y=()=>{if(p)return p;for(let S of d.querySelectorAll(":scope > div")){let L=S.querySelector('button[aria-pressed="true"]'),I=L?.textContent?.trim();if(I&&L?.dataset.floor!=="")return I}return a&&(l||c)?v("picker.levelsAndAreas","Levels & areas"):a?v("picker.levels","Levels"):v("picker.areas","Areas")},w=S=>{d.classList.toggle("is-open",S),u.setAttribute("aria-expanded",String(S)),S&&typeof requestAnimationFrame=="function"&&requestAnimationFrame(m),g.textContent=y()};u.addEventListener("click",()=>w(!d.classList.contains("is-open"))),d.addEventListener("keydown",S=>{S.key!=="Escape"||!d.classList.contains("is-open")||(S.preventDefault(),S.stopPropagation(),w(!1),u.focus())});let x=document.createElement("button");x.type="button",x.className="sl-view3d-nav-close",x.innerHTML='<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12"/></svg>';let P=v("picker.closeVenueNavigation","Close venue navigation");x.setAttribute("aria-label",P),x.title=P,x.addEventListener("click",()=>{w(!1),u.focus()}),w(!1),d.appendChild(u);let b=S=>{},E=S=>{};if(a){let S=document.createElement("div");S.setAttribute("role","group"),S.setAttribute("aria-label",v("picker.levels","Levels"));let L=[];E=H=>{L.forEach(B=>{B.setAttribute("aria-pressed",String((B.dataset.floor===""?null:Number(B.dataset.floor))===H))})};let I=H=>{e.focusFloor(H)&&(E(H),b(H))},A=(H,B)=>{let V=document.createElement("button");V.type="button",V.textContent=H,V.dataset.floor=B===null?"":String(B),V.setAttribute("aria-pressed",String(B===null)),V.addEventListener("click",()=>{I(B),w(!1)}),L.push(V),S.appendChild(V)};A(v("picker.allLevels","All levels"),null);for(let H of t)A(H.label||hn("picker.levelNumber",{number:H.index+1}),H.index);d.appendChild(S)}if(l||c){let S=document.createElement("div");S.setAttribute("role","group"),S.setAttribute("aria-label",v("picker.areas","Areas"));let L=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)&&E(A.floorIndex)}})),I=A=>{let H=l||A===null?L:L.filter(B=>B.floorIndex===void 0||B.floorIndex===A);if(S.replaceChildren(),!H.length){S.remove();return}if(S.isConnected||d.insertBefore(S,x.isConnected?x:null),!l&&H.length>Gl){let B=document.createElement("select");B.setAttribute("aria-label",v("picker.jumpToSection","Jump to section"));let V=document.createElement("option");V.value="",V.textContent=v("picker.jumpToSection","Jump to section"),B.appendChild(V);for(let te of H){let ne=document.createElement("option");ne.value=te.id,ne.textContent=te.label,B.appendChild(ne)}B.addEventListener("change",()=>{H.find(te=>te.id===B.value)?.go()}),S.appendChild(B);return}for(let B of H){let V=document.createElement("button");V.type="button",V.textContent=B.label,V.dataset.area=B.id,V.addEventListener("click",()=>{p=B.label,B.go(),w(!1)}),S.appendChild(V)}};b=I,I(null)}return d.appendChild(x),n.appendChild(d),d}var bi=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",v("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(v("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",v("picker.clearSavedSeatComparison","Clear saved seat comparison")),o.addEventListener("click",()=>this.host.clearComparison()),t.append(r,o),e.appendChild(t),this.chip=t}let i=this.host.savedSeatIds().length,s=t.querySelector(".main");s&&(s.textContent=i>1?hn("picker.compareCount",{count:i}):v("picker.oneSeatSaved","1 seat saved"),s.setAttribute("aria-label",i>1?hn("picker.openComparisonOfSeats",{count:i}):v("picker.oneSeatSavedChooseAnother","One seat saved; choose another to compare")))}remove(){this.chip?.remove(),this.chip=null}mainButton(){return this.chip?.querySelector(".main")??null}};function Ir(n){return!n?.querySelector('[data-ref="zfs"]')}import{t as _r}from"@seatlayer/core";var ql=900,Ul=450;function Kl(n){switch(n){case"seat":return v("picker.stopYourSeat","Your seat");case"row":return v("picker.stopYourRow","Your row");case"section":return v("picker.stopYourSection","Your section");default:return v("picker.stopWholeVenue","Whole venue")}}function Dr(n,e){let t=document.createElement("button");t.type="button",t.className="sl-view3d-recentre sl-mo-rotate-in",t.textContent="\u25CE";let i=v("picker.recentreOnStage","Recentre on the stage");t.setAttribute("aria-label",i),t.title=i,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"),n.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,n.classList.remove("is-seat-view")},Ul);return}n.classList.add("is-seat-view"),s.textContent=Kl(a),s.classList.add("is-shown"),r=setTimeout(()=>{r=null,s.classList.remove("is-shown")},ql)},dispose(){r&&(clearTimeout(r),r=null),o&&(clearTimeout(o),o=null),t.remove(),s.remove(),n.classList.remove("is-seat-view")}}}var Wl=44,Yl=92;function Br(n,e,t,i={}){let s=n?.sectionLabel,r=U(n),o=Ql(n,e),a=[s,r?_r("picker.rowLabel",{label:r}):null,o?_r("picker.seatLabel",{label:o}):null].filter(Boolean).join(" \xB7 "),l=i.maxChars??(i.narrow?Wl:Yl);for(let c of[t,i.shortTail??t,null]){let d=[a,c].filter(Boolean).join(" \xB7 ");if(d.length<=l||c==null)return d}return a}function Ql(n,e){if(n?.seatNumber)return n.seatNumber;let t=n?.displayLabel??e,i=s=>{!s||!t.startsWith(s)||t.length<=s.length||(t=t.slice(s.length).replace(/^[\s·\-\/_]+/,""))};return i(n?.sectionLabel),i(U(n)),t}var Nr="sl:sheet-hint";function $r(n){let e=n.boot;if(!e?.isConnected)return;if(n.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"),n.map?.appendChild(t),setTimeout(()=>t.remove(),650),n.rail?.classList.add("is-in"),n.root?.classList.add("is-arriving"),setTimeout(()=>{n.rail?.classList.remove("is-in"),n.root?.classList.remove("is-arriving"),Xl(n.root)},900)}function Xl(n){if(!n||n.dataset.layout!=="narrow")return;try{if(window.sessionStorage.getItem(Nr))return;window.sessionStorage.setItem(Nr,"1")}catch{}let e=n.querySelector(".sl-sheet-grab");e&&(e.classList.add("sl-mo-hint"),e.addEventListener("animationend",()=>e.classList.remove("sl-mo-hint"),{once:!0}))}function Vr(n,e){n.addEventListener("keydown",t=>{if(t.key==="Escape"){for(let i of e())if(i.open()){t.preventDefault(),t.stopPropagation(),i.close();return}}})}function vi(n){let e=n.committedSelection(),t=n.controller.getGAAreas(),i=n.hold?.items??[],s=new Set(i.map(u=>u.label)),r=is(n,t,i),o=Be(n.gaQty,i),a=i.reduce((u,h)=>u+n.paidPrice(h.categoryKey,h.tierId,h.unitPrice,h.label)*(h.quantity??1),0),l=i.reduce((u,h)=>u+(h.quantity??1),0),c=e.filter(u=>!s.has(u.label)),d=c.reduce((u,h)=>u+n.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:i,heldLabels:s,heldCount:l,total:d,count:p}}function yi(n,e){let t=e.tiers?.length?e.tiers[0].price:e.price;return t===void 0||!e.key?t:n.paidPrice(e.key,e.tiers?.[0]?.id??null,t)}function wi(n,e){let t=e.tiers?.length?e.tiers.map(i=>n.paidPrice(e.key,i.id??null,i.price)):e.price==null?[]:[n.paidPrice(e.key,null,e.price)];if(e.key)for(let i of n.pricesByChannel.values())for(let s of i)s.categoryKey===e.key&&t.push(s.price);return t.length?{min:Math.min(...t),max:Math.max(...t)}:void 0}var Mt="seatlayer_";function Zl(){let n=globalThis;return n.document?.modelContext??n.navigator?.modelContext??null}function re(n,e){return e?{ok:!1,reason:n,message:e}:{ok:!1,reason:n}}function Jl(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"&&!!e):[]}function ec(n,e){let t=n.event();if(!t)return re("not_loaded","The seat map has not finished loading.");let i=n.selectionLimits();return{ok:!0,event:t,selection:{max:i.max,...i.required!=null?{required:i.required}:{}},categories:n.categories(),zones:n.zones(),hasPremiumSeats:n.hasPremiumSeats(),holdsAllowed:e}}function Fr(n,e){let t=s=>!!s&&s.toLowerCase()===e.toLowerCase(),i=n.find(s=>t(s.key??s.id))??n.find(s=>t(s.label));return i?.key??i?.id??null}function zr(n,e){let t=e.map(i=>n.describeSeat(i.id));return{seatIds:e.map(i=>i.id),labels:e.map(i=>i.label),section:t[0]?.section??"",row:t[0]?.row??"",seats:e.map((i,s)=>t[s]?.seat||i.label),category:t[0]?.category??e[0].categoryKey,unitPrice:e[0].price,total:e.reduce((i,s)=>i+s.price,0)}}function tc(n,e,t){let i=new Map;for(let r of e){let o=i.get(r.rowKey);o?o.push(r):i.set(r.rowKey,[r])}let s=[];for(let r of i.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(zr(n,o.slice(d,d+t)));a=l}}return s}function ic(n,e,t){let i=new Map;for(let r of e){let o=i.get(r.sectionKey);o?o.push(r):i.set(r.sectionKey,[r])}let s=[];for(let r of i.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(zr(n,o.slice(0,t)))}return s}function nc(n,e){if(!n.event())return re("not_loaded","The seat map has not finished loading.");let i=n.selectionLimits(),s=Math.floor(Number(e.count));if(!Number.isInteger(s)||s<1||s>i.max)return re("bad_count",`count must be a whole number between 1 and ${i.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?Fr(n.categories(),l):null;if(l&&!d)return re("no_match",`No ticket type called "${l}".`);let p=c?Fr(n.zones(),c):null;if(c&&!p)return re("no_match",`No zone called "${c}".`);let u=n.seats().filter(m=>m.available);if(!u.length)return re("sold_out");let h=u.filter(m=>(!d||m.categoryKey===d)&&(!p||m.zoneId===p)&&(a==null||m.price<=a));if(!h.length)return re("no_match");let g=o?tc(n,h,s):ic(n,h,s);return g.length?(g.sort((m,y)=>y.unitPrice!==m.unitPrice?y.unitPrice-m.unitPrice:m.row.localeCompare(y.row)||m.labels[0].localeCompare(y.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}}}):re(o?"not_enough_together":"no_match")}function jr(n){return{ok:!0,...n.selection()}}function sc(n,e){let t=n.event();if(!t)return re("not_loaded","The seat map has not finished loading.");if(t.salesClosed)return re("event_closed","Sales are closed for this event.");let i=Jl(e.seat_ids);return i.length?(n.clearSelection(),n.selectObjects(i),jr(n)):re("nothing_requested","Pass one or more seat ids or labels in seat_ids.")}function rc(n,e){let t=async s=>{try{return await s()}catch(r){return re("error",r instanceof Error?r.message:String(r))}},i=[{name:`${Mt}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(()=>ec(n,e))},{name:`${Mt}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(()=>nc(n,s))},{name:`${Mt}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(()=>sc(n,s))},{name:`${Mt}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(()=>jr(n))}];return e&&i.push({name:`${Mt}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(()=>n.hold())}),i}async function Gr(n,e={}){let t=Zl();if(!t||typeof t.registerTool!="function")return null;let i=new AbortController,s=rc(n,!!e.holds),r=[],o=e.exposedTo?.length?[...new Set(e.exposedTo)]:void 0;try{for(let a of s)await t.registerTool(a,{signal:i.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(i.abort(),typeof t.unregisterTool=="function")for(let a of r)try{t.unregisterTool(a)}catch{}}}:null}async function qr(n){let e=n.opts.webMcp;if(!e||n.destroyed)return;let t=typeof e=="object"&&!!e.holds,i=typeof e=="object"?e.exposedTo:void 0;try{n.webMcp=await Gr(mn(n,t),{holds:t,exposedTo:i}),n.destroyed&&un(n)}catch(s){console.warn("seatmap: WebMCP registration failed",s)}}function un(n){n.webMcp?.dispose(),n.webMcp=null}function mn(n,e){let t=(i,s)=>{if(Number.isInteger(i.logicalSeatIndex))return i.logicalSeatIndex;let r=i.id.lastIndexOf(":"),o=r<0?NaN:Number(i.id.slice(r+1));return Number.isFinite(o)?o:s};return{event:()=>{let i=n.renderInfo;return i?{name:i.eventName??"",venue:i.venue??null,startsAt:i.startsAt??null,timezone:i.timezone??null,currency:n.currency,salesClosed:n.salesClosed}:null},selectionLimits:()=>({max:n.maxTickets,required:n.exactTickets}),categories:()=>{let i=n.controller.categoryAvailability();return(n.controller.doc?.categories??[]).filter(s=>!s.notForSale).map(s=>{let r=wi(n,s),o=yi(n,s);return{key:s.key,label:s.label??s.key,...o===void 0?{}:{price:o},...r&&r.min!==r.max?{priceRange:r}:{},available:i[s.key]??0}})},zones:()=>n.controller.getBestAvailableZones(),hasPremiumSeats:()=>n.controller.hasPremiumSeats(),seats:()=>{let i=n.controller.getActiveFloorId(),s=[];return n.allSeats().forEach((r,o)=>{if(r.floorId&&i&&r.floorId!==i)return;let a=n.controller.getStatus(r.id)??"free",l=n.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:n.paidPrice(r.categoryKey,l?.tiers?.[0]?.id??null,c,r.label),...r.zoneId?{zoneId:r.zoneId}:{},available:a==="free"&&!l?.notForSale})}),s},describeSeat:i=>{let s=n.controller.seatDetails(i);return s?{section:s.sectionLabel??"",row:U(s)??"",seat:s.seatNumber??s.label,category:s.categoryLabel??s.categoryKey}:null},selection:()=>{let{freshSeats:i,total:s,count:r}=vi(n);return{seats:i.map(o=>({id:o.id,label:o.label,section:o.sectionLabel??"",row:U(o)??"",seat:o.seatNumber??o.label,category:o.categoryKey,price:n.paidPrice(o.categoryKey,o.tierId??null,o.price,o.label)})),count:r,total:s,currency:n.currency,hold:n.hold?{id:n.hold.holdId,expiresAt:n.hold.expiresAt}:null,validity:n.getSelectionValidity()}},clearSelection:()=>n.clearSelection(),selectObjects:i=>{n.selectObjects(i)},hold:()=>e?oc(n):Promise.resolve({ok:!1,reason:"not_allowed"})}}async function oc(n){if(n.salesClosed)return{ok:!1,reason:"event_closed"};if(!n.totalTicketCount())return{ok:!1,reason:"nothing_selected"};let e=n.controller.getSelectionValidity(n.totalTicketCount());return e&&!e.isValid?{ok:!1,reason:"invalid_selection"}:(await n.handleCta(),n.hold?{ok:!0,hold:{id:n.hold.holdId,expiresAt:n.hold.expiresAt}}:{ok:!1,reason:"hold_failed"})}function fn(n){return{renderingTimeMillis:n.ms,performanceProfile:n.performanceProfile,seatCount:n.seatCount,objectCount:n.objectCount,sectionCount:n.sectionCount,view:n.view,eventKey:n.eventKey,chartName:n.chartName,floorCount:n.floorCount,transport:n.transport,load:n.load,metricScope:n.metricScope,operationalTelemetryReporter:"sdk"}}function Ur(n,e){ke({apiBase:n.apiBase,event:n.eventKey,scope:n.metricScope,surface:n.surface,outcome:"success",ms:n.ms,performanceProfile:n.performanceProfile,chartDelivery:n.chartDelivery,seats:n.seatCount,floors:n.floorCount,view:n.view,load:n.load,transport:n.transport}),e("chart_rendered",fn(n))}import{seatConfidenceDisclosure as ac}from"@seatlayer/core/core/seatConfidence";function Y(n){return String(n??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function Kr(n){let e=ac(n.seat.confidenceEvidence),t=n.seat.confidenceEvidence,i=e.limitations.length?`<h4>Known limits</h4><ul>${e.limitations.map(c=>`<li>${Y(c)}</li>`).join("")}</ul>`:"",s=e.modeledTarget?`<div><dt>Modeled target</dt><dd>${Y(e.modeledTarget)}</dd></div>`:"",r=t?`<div><dt>Evidence ID</dt><dd>${Y(t.evidenceId)}</dd></div><div><dt>Model version</dt><dd>${Y(t.modelVersion)}</dd></div><div><dt>Event configuration</dt><dd>${Y(t.eventConfigurationId??"Not configuration-specific")}</dd></div><div><dt>Approval</dt><dd>${Y(t.approvedByRole??"No external approval supplied")}</dd></div>`+(t.validUntil?`<div><dt>Valid until</dt><dd>${Y(t.validUntil.slice(0,10))}</dd></div>`:""):"<div><dt>Evidence ID</dt><dd>None supplied</dd></div>",o=Se(n.seat.commercial)||n.restrictionFallback,a=`<div><dt>View restriction</dt><dd>${Y(o)}</dd></div>`+(n.seat.commercial?.note?`<div><dt>Organizer note</dt><dd>${Y(n.seat.commercial.note)}</dd></div>`:""),l=n.canReport?'<button type="button" data-report>Report this view</button><p data-report-status role="status" aria-live="polite"></p>':"";return`<div class="sl-view3d-passport-scrim" aria-hidden="true"></div><section class="sl-view3d-passport" role="dialog" aria-modal="true" aria-labelledby="sl-view3d-passport-title"><header><div><span>Seat confidence passport</span><strong id="sl-view3d-passport-title">${Y(n.title)}</strong></div><button type="button" data-close aria-label="Close seat confidence passport">\xD7</button></header><div class="sl-view3d-passport-summary"><strong>${Y(e.headline)}</strong><span>${Y(e.coverage)} \xB7 ${Y(e.freshness)}</span></div><dl><div><dt>Model status</dt><dd>${Y(e.model)}</dd></div><div><dt>Reality evidence</dt><dd>${Y(e.reality)}</dd></div><div><dt>Source</dt><dd>${Y(e.provenance)}</dd></div>`+a+s+r+`</dl>${i}<p class="sl-view3d-passport-note">This passport describes supplied evidence and known limits. It does not guarantee that every temporary obstruction or real-world condition is knowable before the event build.</p>`+l+"</section>"}function Wr(n){return n?n.closest("[data-report]")?"report":n.closest("[data-close]")||n.classList.contains("sl-view3d-passport-scrim")?"close":null:null}function xi(n,e,t){let i=n?.querySelector("[data-report]"),s=n?.querySelector("[data-report-status]");i&&(i.disabled=e!=="failed",i.textContent=e==="received"?"Report received":"Report this view"),s&&(s.setAttribute("role",e==="failed"?"alert":"status"),s.textContent=e==="sending"?"Sending report\u2026":e==="received"?`Report received. Reference ${t??""}.`:"The report could not be sent. Please try again.")}function gn(n,e,t=null){let i=n.view3dEl;if(!i)return;Ht(n,!1);let s=e.confidenceEvidence,r=n.controller.seatDetails(e.id),o=document.createElement("div");o.className="sl-view3d-passport-shell",o.innerHTML=Kr({seat:e,title:r?.displayLabel??e.displayLabel??e.label,restrictionFallback:n.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),canReport:typeof n.api.reportViewEvidence=="function"});let a=[...new Set([...i.children,...[...n.els.map.children].filter(u=>u!==i)])].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");i.appendChild(o),i.classList.add("has-passport"),n.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(),Ht(n);return}if(u.key!=="Tab")return;let h=d();if(!h.length)return;let g=h[0],m=h[h.length-1];u.shiftKey&&document.activeElement===g?(u.preventDefault(),m.focus()):!u.shiftKey&&document.activeElement===m&&(u.preventDefault(),g.focus())};window.addEventListener("keydown",p,!0),n.view3dPassportCleanup=()=>{window.removeEventListener("keydown",p,!0);for(let m of l)m.element.inert=m.inert,m.ariaHidden===null?m.element.removeAttribute("aria-hidden"):m.element.setAttribute("aria-hidden",m.ariaHidden);let u=t?.isConnected?t:n.confirmEl?.querySelector(".sl-confirm-confidence")??n.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(),i.classList.remove("has-passport"),n.view3dPassportEl===o&&(n.view3dPassportEl=null);let g=u??n.view3dCompareEl?.querySelector("[data-passport-seat]")??n.confirmEl?.querySelector(".sl-confirm-confidence")??n.view3dCompareChip.mainButton();(t?.isConnected?t:g)?.focus()},o.addEventListener("click",u=>{let h=Wr(u.target instanceof HTMLElement?u.target:null);h==="close"&&Ht(n),h==="report"&&lc(n,e)}),requestAnimationFrame(()=>d()[0]?.focus()),n.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 lc(n,e){if(n.api.reportViewEvidence){xi(n.view3dPassportEl,"sending");try{let t=await n.api.reportViewEvidence(n.opts.event,{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId});n.emit3dAnalytics("3d_confidence_view_reported",{seatId:e.id,evidenceId:e.confidenceEvidence?.evidenceId??null}),xi(n.view3dPassportEl,"received",t.report.id)}catch{xi(n.view3dPassportEl,"failed")}}}function Ht(n,e=!0){let t=n.view3dPassportCleanup;if(n.view3dPassportCleanup=null,!t){n.view3dPassportEl?.remove(),n.view3dPassportEl=null,n.view3dEl?.classList.remove("has-passport");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||n.root?.focus({preventScroll:!0})}function Yr(n){let e=n.view3dEl;if(!e||n.view3dCompareSeatIds.length<2)return;Ve(n,!1);let t=n.view3dCompareSeatIds.map(h=>n.view3dComparisonSnapshot(h)).filter(h=>!!h);if(t.length<2){n.clearView3dComparison();return}let i=h=>k(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>${i(h.label)}</strong><small>Section ${i(h.section)} \xB7 Row ${i(h.row)}</small><dl>`+(s?`<div><dt>Current price</dt><dd>${i(h.price)}</dd></div>`:"")+`<div><dt>Ticket type</dt><dd>${i(h.category)}</dd></div><div><dt>Availability</dt><dd>${i(h.availability)}</dd></div><div><dt>View source</dt><dd>${i(h.viewSource)}</dd></div><div><dt>View restriction</dt><dd>${i(h.limited)}</dd></div><div><dt>Seat confidence</dt><dd>${i(h.confidence.headline)}</dd></div><div><dt>Reality check</dt><dd>${i(h.confidence.reality)}</dd></div><div><dt>Accessibility</dt><dd>${i(h.accessibility)}</dd></div></dl><div class="sl-view3d-compare-actions"><button type="button" data-passport-seat="${i(h.seat.id)}">Passport</button><button type="button" data-view-seat="${i(h.seat.id)}">View seat</button><button type="button" class="select" data-select-seat="${i(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"),n.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(),Ve(n);return}if(h.key!=="Tab")return;let g=p();if(!g.length)return;let m=g[0],y=g[g.length-1];h.shiftKey&&document.activeElement===m?(h.preventDefault(),y.focus()):!h.shiftKey&&document.activeElement===y&&(h.preventDefault(),m.focus())};window.addEventListener("keydown",u),n.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"),n.view3dCompareEl===r&&(n.view3dCompareEl=null),a?.isConnected?a.focus():n.view3dCompareChip.mainButton()?.focus()},r.querySelector("[data-close]")?.addEventListener("click",()=>Ve(n)),r.querySelectorAll("[data-passport-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.passportSeat,m=g?n.allSeats().find(y=>y.id===g):void 0;m&&gn(n,m,h)})),r.querySelectorAll("[data-view-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.viewSeat;Ve(n,!1),g&&n.view3dHandle?.flyToSeat(g)})),r.querySelectorAll("[data-select-seat]").forEach(h=>h.addEventListener("click",()=>{let g=h.dataset.selectSeat;g&&cc(n,g)})),requestAnimationFrame(()=>p()[0]?.focus()),n.emit3dAnalytics("3d_comparison_opened",{seatIds:n.view3dCompareSeatIds.slice()})}function Ve(n,e=!0){let t=n.view3dCompareCleanup;if(n.view3dCompareCleanup=null,!t){n.view3dCompareEl?.remove(),n.view3dCompareEl=null,n.view3dEl?.classList.remove("has-comparison");return}e||(document.activeElement instanceof HTMLElement?document.activeElement:null)?.blur(),t(),e||n.root?.focus({preventScroll:!0})}function cc(n,e){if(n.salesClosed){n.toast(n.tf("picker.salesClosedToast","Sales are closed for this event."),"warning");return}let t=n.allSeats().find(s=>s.id===e);if(!t)return;if(Ve(n,!1),!n.controller.select([e]).length){n.syncSelectionTo3d(),n.toast(n.tf("picker.seatNoLongerAvailable","That seat is no longer available."),"warning");return}n.syncSelectionTo3d(),n.showConfirm(t),n.emit3dAnalytics("3d_comparison_selected",{seatId:e})}function Qr(n,e){n.querySelector(".sl-view3d-unavailable")?.remove();let{tf:t}=e,i=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=i.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=i.message,s.append(a,l,c),l.addEventListener("click",()=>bn(n)),n.appendChild(s),Kt(s,e.anchor??null)}function bn(n){let e=n?.querySelector(".sl-view3d-unavailable:not([data-leaving])");e&&(e.dataset.leaving="true",Me(e))}import{t as ki}from"@seatlayer/core";function Xr(n){return Array.isArray(n)?n.reduce((e,t)=>t.type==="minimumSelectedPlaces"?Math.max(e,t.minimum):e,0):0}function vn(n,e,t=!1){let i=n.violations[0];return i==="numberOfPlacesToSelect"?n.remaining>0?ki("picker.selectExactMore",{count:n.remaining}):ki("picker.selectExactCount",{count:n.required}):i==="minimumSelectedPlaces"?ki("picker.selectMinimumMore",{count:n.remaining}):t?e("picker.adjustSeatSelection","Adjust seat selection"):i==="consecutiveSeats"?e("picker.selectSeatsTogether","Choose seats together in the same row and ticket category."):ki("picker.orphanHint")}import{t as Fe,tCount as Zr}from"@seatlayer/core";function Ot(n){let e=Math.max(0,n),t=Math.floor(e/6e4),i=String(Math.floor(e%6e4/1e3)).padStart(2,"0");return`${t}:${i}`}function Jr(n){let e=n.performanceLabel?`<div class="sl-chip-when">${R(n.performanceLabel)}</div>`:"",t=n.performanceDates?.labels.length?`<div class="sl-chip-dates"><span class="sl-chip-dates-summary">${R(n.performanceDates.summary)}</span><span class="sl-chip-date-list">${n.performanceDates.labels.map(i=>`<span class="sl-chip-date">${R(i)}</span>`).join("")}</span></div>`:"";return e+dc(n)+t}function dc(n){let{d:e,area:t,label:i,objectType:s,quantity:r=1,identity:o}=n,a=P=>String(P??"\u2014").replace(/[&<>"]/g,b=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[b]),l=s==="ga"?"ga":e?.objectType??s,c=o?.displayType?.trim()||e?.displayType?.trim()||t?.displayType?.trim()||(l==="table"?v("picker.table","Table"):l==="booth"?v("picker.booth","Booth"):l==="ga"?v("picker.generalAdmission","General admission"):v("picker.row","Row")),d=o?.rowLabel??o?.displayLabel??e?.rowLabel??e?.displayLabel??t?.label??i,p=n.categoryLabel?.trim()??"",u="",h=[];l==="table"&&o?.bookingMode?(u=`${c} ${d}`,h.push([v("picker.guests","Guests"),String(r)])):l==="ga"?(u=String(t?.displayLabel??d),r>1&&h.push([v("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(U(e)??e.rowLabel)]),e.seatNumber&&h.push([v("picker.seat","Seat"),String(e.seatNumber)]));let g=!u&&!!p,m=u||p||String(d),y=!!p&&!g&&p!==m,w=h.map(([P,b])=>`<span class="sl-chip-seg" data-fit-seg><span class="w">${a(P)}</span> <b>${a(b)}</b></span>`);y&&w.push(`<span class="sl-chip-seg" data-fit-seg data-fit-type><span class="w">${a(p)}</span></span>`);let x=[m,...h.map(([P,b])=>`${P} ${b}`),y?p:""].filter(Boolean).join(" \xB7 ");return`<div class="sl-chip-id"><span class="sl-sr">${a(x)}</span><span class="sl-chip-name" aria-hidden="true">${a(m)}</span>`+(w.length?`<span class="sl-chip-pos" aria-hidden="true">${w.join("<i>\xB7</i>")}</span>`:"")+"</div>"}function yn(n,e){let t=R(n),i=e?R(e):"";return'<div class="sl-chip-rail">'+(e?`<button type="button" class="view" data-view-label="${i}" aria-label="${R(Fe("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 eo(n){return n.salesClosed||n.hasHold||n.ctaPhase!=="idle"||n.formOpen||n.room<=0?null:Math.max(1,Math.min(n.wanted,n.room))}function to({count:n,total:e,pendingCount:t,ctaPhase:i,hasHold:s,salesClosed:r,suppressPricing:o=!1,fromPrice:a,addMore:l,offerFind:c=!1,holdTime:d,money:p}){if(n&&i==="holding")return`<span>${v("picker.securingSeats","Securing your seats\u2026")}</span>`;if(n&&i==="checkout")return o?`<span>${v("picker.seatsSecuredOpeningCheckout","Seats secured. Opening checkout\u2026")}</span>`:`<span>${Fe("picker.peekSecured",{count:n,total:p(e)})}</span>`;if(n)return`<span class="sl-peek-sum">${Zr("picker.ticketsCount",n)}</span>`+(l&&!o?`<button type="button" class="go ghost sl-sheet-go sl-sheet-best" data-act="best" aria-label="${v("picker.findTogetherInstead","Find seats together instead")}"><span aria-hidden="true">\u2726</span>${v("picker.seatsTogether","Seats together")}</button>`:"")+`<button type="button" class="go sl-sheet-go" data-act="checkout">${s&&t?v("picker.secureMore","Secure more"):v("picker.continue","Continue")}`+(o?"":`<span class="sl-peek-total">${p(e)}</span>`)+(s&&d?`<span class="sl-peek-time" aria-hidden="true">${d}</span>`:"")+"</button>";if(r)return`<span>${v("picker.salesClosedPill","Sales are closed")}</span>`;let u=!o&&a!=null?p(a):null;return`<span class="sl-peek-sum">${u!=null?Fe("picker.peekFromPrice",{price:u}).replace(u,`<b class="sl-peek-price">${u}</b>`):v("picker.pickYourSeats","Pick your seats")}</span>`+(c?`<button type="button" class="go sl-sheet-go sl-sheet-find" data-act="find"><span class="sl-peek-spark" aria-hidden="true">\u2726</span>${v("picker.findSeats","Find seats")}</button>`:"")}function wn(n,e=Date.now()){return Fe("picker.holdReassurance",{time:Ot(n-e)})}function io(n){return n.confirming?`<div class="sl-ba" role="alert"><div class="sl-ba-title"><span class="spark" aria-hidden="true">\u2726</span>${v("picker.replaceCurrentChoices","Replace your current choices?")}</div><div class="sl-ba-replace"><b>${Fe("picker.willFindSeatsTogether",{count:n.quantity})}</b><span>${v("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>${v("picker.keepMine","Keep mine")}</button><button type="button" class="replace" data-ba-replace>${v("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>${v("picker.findClosestSeatsTogether","Find the closest seats together")}</div><div class="sl-ba-copy">${v("picker.closestGroupChosenInstantly","Closest available group, chosen instantly.")}</div>`+(n.offerPremium?`<button type="button" class="sl-ba-premium${n.premium?" on":""}" data-ba-premium aria-pressed="${n.premium?"true":"false"}"><span class="star" aria-hidden="true">\u2605</span>${v("picker.bestSeatsPremium","Best seats")}</button>`:"")+`<div class="sl-ba-qty"><button type="button" data-ba="-1" aria-label="${v("picker.fewerSeats","Fewer seats")}">\u2212</button><span>${n.quantity}</span><button type="button" data-ba="1" aria-label="${v("picker.moreSeats","More seats")}">+</button></div>`+(n.categories.length>1?`<select class="sl-ba-cat" aria-label="${R(v("picker.preferredTicketType","Preferred ticket type"))}" data-ba-cat><option value="">${R(v("picker.anyTicketType","Any ticket type"))}</option>`+n.categories.map(e=>`<option value="${R(e.key)}"${n.selectedCategory===e.key?" selected":""}>${R(e.label)}</option>`).join("")+"</select>":'<span class="sl-ba-cat" aria-hidden="true"></span>')+(n.zones.length?`<select class="sl-ba-zone" aria-label="${v("picker.preferredVenueZone","Preferred venue zone")}" data-ba-zone><option value="">${v("picker.anyVenueZone","Any venue zone")}</option>`+n.zones.map(e=>`<option value="${R(e.id)}"${n.selectedZone===e.id?" selected":""}>${R(e.label)}</option>`).join("")+"</select>":"")+`<button type="button" class="sl-ba-go${n.busy?" sl-busy":""}"${n.busy?" disabled":""}>`+(n.busy?`<span class="sl-ba-spin" aria-hidden="true"></span>${v("picker.findingBestSeats","Finding the best seats\u2026")}`:Zr("picker.findBestSeatsCount",n.quantity))+"</button>"+(n.reopened?`<button type="button" class="sl-ba-back" data-ba-close>${v("picker.keepMyPicks","Keep my picks")}</button>`:"")+"</div>"}function no(n){if(n.salesClosed&&!n.hasPicks){let e=n.whenText?`<span class="when">${R(n.whenText)}</span>`:"";return`<div class="sl-closed-note" role="status"><b>${v("picker.salesClosedPill","Sales are closed")}</b><span>${v("picker.salesClosedCopy","Ticket sales for this event have ended.")}${e}</span></div>`}return n.hasPicks?"":n.hasGaAreas?`<div class="sl-tray-hint">${n.seated?n.venue3d?v("picker.trayHintChoose3dOrStanding","Choose a seat in the 3D venue \u2014 or grab standing tickets below."):v("picker.trayHintTapOrStanding","Tap a seat on the map \u2014 or grab standing tickets below."):n.venue3d?v("picker.gaTrayHintChoose3dArea","Choose an area in the 3D venue to select tickets."):v("picker.gaTrayHintTapArea","Tap an area on the map to choose tickets.")}</div>`:`<div class="sl-tray-hint">${n.groupMode==="per_performance"?v("picker.groupPerPerformanceTrayHint","Choose seats for this performance, then complete every date above."):n.groupMode?v("picker.groupTrayHint","Choose seats once \u2014 the same seats will be held for every performance."):n.venue3d?v("picker.trayHintChoose3dOrBest","Choose a seat in the 3D venue, or let us pick the best available for you."):v("picker.trayHintTapOrBest","Tap a seat on the map, or let us pick the best available for you.")}</div>`}function so(n){return{title:Fe("picker.securedCount",{count:n.secured}),copy:n.pendingCount?Fe("picker.moreSelectedCount",{count:n.pendingCount}):wn(n.expiresAt),change:n.releasing?v("picker.releasingEllipsis","Releasing\u2026"):v("picker.change","Change")}}import{t as kn,tCount as pc}from"@seatlayer/core";var xn=4,hc=6;function uc(n){let e=n.trim();return/^[0-9]{1,4}$/.test(e)?Number(e):null}function ro(n){return[n.held?"h":"s",n.section,n.rowLabel,n.categoryLabel,n.amountText].join(" ")}function mc(n){if(n.length===1)return n[0];let e=n.map(uc);if(e.every(i=>i!==null)){let i=[...e].sort((o,a)=>o-a);if(i.every((o,a)=>a===0||o===i[a-1]+1))return`${i[0]}\u2013${i[i.length-1]}`;let r=i.slice(0,3).join(", ");return i.length>3?`${r} +${i.length-3}`:r}let t=n.slice(0,3).join(", ");return n.length>3?`${t} +${n.length-3}`:t}function fc(n){let e=[];for(let t of n){let i=e[e.length-1];!!i&&t.groupable&&i.members[0].groupable&&ro(i.members[0])===ro(t)?i.members.push(t):e.push({members:[t],seatsLabel:""})}for(let t of e)t.seatsLabel=mc(t.members.map(i=>i.seatLabel));return e}function ao(n,e,t,i){let s=R;return` data-key="${s(n)}"`+(t.length?` data-held="${s(encodeURIComponent(t.join(`
2758
+ `)))}"`:"")+(e.length?` data-seat="${s(e.join(" "))}"`:"")+(i?` data-locate="${s(i)}"`:"")}function lo(n){let e=R;return`<div class="sl-chip${n.held?" sl-held":""}${n.fresh?" sl-enter":""}"`+ao(n.key,n.seatIds,n.heldLabels,n.locateId)+">"+(n.held?n.stateHtml:`<span class="sl-chip-dot" style="background:${k(n.categoryColor)}" aria-hidden="true"></span>`)+`<div class="sl-chip-main">${n.identityHtml}`+(n.extrasHtml?`<div class="sl-chip-sub">${n.extrasHtml}</div>`:"")+`${n.noteHtml}</div>`+(n.amountText?`<span class="amt">${e(n.amountText)}</span>`:"")+n.railHtml+"</div>"}function oo(n,e,t,i,s){let r=R,o=e?.members.length??1,a=o>1,l=e?e.seatsLabel:n.seatLabel,c=e?e.members.reduce((u,h)=>u+h.amount,0):n.amount,d=e?e.members.flatMap(u=>u.seatIds):n.seatIds,p=e?e.members.flatMap(u=>u.heldLabels):n.heldLabels;return`<div class="sl-chip sl-tline${n.held?" sl-held":""}${n.fresh?" sl-enter":""}${e?"":" sl-tsub"}"${i?' data-overflow="true"':""}`+(e?` data-run="${t}"`:` data-run-of="${t}"`)+ao(n.key,d,p,n.locateId)+">"+(a?`<button type="button" class="sl-trun-toggle" aria-expanded="false" aria-label="${r(pc("picker.seatsSelectedCount",o))}"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></button>`:n.held?n.stateHtml:`<span class="sl-tline-dot" style="background:${k(n.categoryColor)}" aria-hidden="true"></span>`)+`<span class="sl-sr">${r(n.categoryLabel)}</span><span class="sl-tline-id"><b>${r(n.section||n.seatLabel)}</b>`+(n.rowLabel?`<i>\xB7</i><span>${r(n.rowLabel)}</span>`:"")+(n.section&&l?`<i>\xB7</i><span>${r(l)}</span>`:"")+"</span>"+n.extrasHtml+(s.suppressPricing||!n.amountText?"":(a?`<span class="sl-tline-mult">${o}\xD7</span>`:"")+`<span class="amt">${r(s.money(c))}</span>`)+(n.railHtml?`<button type="button" class="rm" aria-label="${r(a?kn("picker.removeSeatLabel",{label:[n.section,n.rowLabel,l].filter(Boolean).join(" \xB7 ")}):n.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 co(n,e){if(!n.length)return"";let t=fc(n),i=[v("picker.section","Section"),v("picker.row","Row"),v("picker.seat","Seat")].join(" \xB7 "),s=t.length>=hc,r=t.map((a,l)=>{let c=s&&l>=xn;return oo(a.members[0],a,l,c,e)+(a.members.length>1?a.members.map(d=>oo(d,null,l,c,e)).join(""):"")}).join(""),o=s?`<button type="button" class="sl-tmore" data-tmore aria-expanded="false" data-more="${R(kn("picker.moreCount",{count:t.length-xn}))}" data-less="${R(v("picker.showLess","Show less"))}"><span>${R(kn("picker.moreCount",{count:t.length-xn}))}</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">${R(i)}</div>${r}${o}</div>`}function po(n){n.dataset.denseWired!=="true"&&(n.dataset.denseWired="true",n.addEventListener("click",e=>{let t=e.target,i=t.closest("[data-tmore]");if(i){let l=i.closest(".sl-tlist"),c=l?.getAttribute("data-collapsed")==="true";l?.setAttribute("data-collapsed",c?"false":"true"),i.setAttribute("aria-expanded",c?"true":"false");let d=i.querySelector("span");d&&(d.textContent=(c?i.dataset.less:i.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 Sn,t as ho}from"@seatlayer/core";var gc='<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>',bc='<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>',Si=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 i=this.offered().length>0;this.button.setAttribute("aria-label",i?t.tf("picker.accessibilityOptions","Accessibility and colour options"):t.tf("picker.displayOptions","Display options")),this.button.innerHTML=i?gc:bc,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=sr(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:i,count:s})=>[i,s])),t=!1;for(let i of this.menu.querySelectorAll("[data-a11y-row]")){let s=i.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(i),l=o==null?"":o>0?ho("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))),i.disabled=c,c?i.setAttribute("aria-disabled","true"):i.removeAttribute("aria-disabled"),c&&this.active.delete(r)&&(this.paint(i,!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 i=t.dataset.a11yRow??"";i.startsWith("a11y:")&&this.paint(t,this.active.has(i.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();Di(this.menu,{x:t.left+t.width/2,y:t.top}),Qn(this.menu),Kt(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:i,count:s})=>({key:i,count:s}));let t=this.deps.present;return t?Sn.filter(({key:i})=>t.has(i)).map(({key:i})=>({key:i,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(Sn.map(i=>[i.key,i]));return this.offered().flatMap(({key:i,count:s})=>{let r=t.get(i);return r?[{key:`a11y:${i}`,icon:r.icon,label:r.label,...i==="wheelchair"&&e.has("companion")?{note:this.deps.tf("picker.companionSeatsNote","Companion places beside them stay selectable")}:{},...s==null?{}:{count:s>0?ho("picker.accessFreeCount",{count:s}):this.deps.tf("picker.accessNoneLeft","None left"),disabled:s===0},on:this.active.has(i)}]:[]})}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 i=t.slice(5),s=!this.active.has(i);s?this.active.add(i):this.active.delete(i),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 i=(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=i,r.textContent=t.textContent,r.disabled=e.disabled,r.setAttribute("aria-label",this.jumpLabel(i,t.textContent??"")),t.remove(),e.setAttribute("aria-label",this.rowLabel(i,r.textContent??"")),s.append(e,r),r.addEventListener("click",o=>{o.stopPropagation(),this.active.has(i)||(this.active.add(i),this.paint(e,!0),this.applyFilter({focus:!1}));let a=this.deps.stepToAccessibleSection?.(i);a&&r.setAttribute("aria-label",this.jumpLabel(i,r.textContent??"",a.label))})}}countNode(e){return e.querySelector(".sl-a11yrow-c")??e.parentElement?.querySelector(".sl-a11yrow-c")??null}typeLabel(e){return Sn.find(t=>t.key===e)?.label??e}jumpLabel(e,t,i){return[this.deps.tf("picker.jumpToSection","Jump to section"),this.typeLabel(e),t,...i?[`${this.deps.tf("picker.section","Section")} ${i}`]:[]].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 vc}from"@seatlayer/core";var yc=250;function uo(n,e=yc){let t=null,i=()=>{t===null&&(t=setTimeout(()=>{t=null,n()},e))},s=vc(i),r=typeof window<"u"&&typeof window.addEventListener=="function";return r&&window.addEventListener("focus",i),()=>{t!==null&&(clearTimeout(t),t=null),s(),r&&window.removeEventListener("focus",i)}}import{holdRecoveryShape as wc,tCount as Ti}from"@seatlayer/core";var Ci=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=wc(e),i=e.lapsedLabels.length,s=i-e.recoverable.length,r=t==="all"?Ti("picker.holdLapsedStillFree",i):t==="partial"?Ti("picker.holdLapsedSomeTaken",s):Ti("picker.holdLapsedAllTaken",i);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>${R(this.actionLabel())}</button>`:"";return`<div class="sl-lapse-note" role="status"><span>${R(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 Ti("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 mo=Symbol("seatlayer.performance-group-picker");function Ei(n,e){return Object.defineProperty(n,mo,{configurable:!1,enumerable:!1,value:Object.freeze({...e})}),n}function fo(n){return n[mo]??null}var go="@seatlayer/pending-checkout/v1";function xc(n){return typeof n=="string"&&n.length<=160&&/^ord_[A-Za-z0-9_-]+$/.test(n)}function bo(n){if(typeof location>"u")return null;let e=new URLSearchParams(location.search),t=e.get("seatlayer_checkout");if(t!=="success"&&t!=="cancelled")return null;let i=null;try{let s=window.sessionStorage.getItem(go);if(s){let r=null;try{r=JSON.parse(s)}catch{}if(r&&xc(r.orderId)){let o=Date.now()-Number(r.storedAt);if(o>=0&&o<=144e5){if(r.eventKey&&r.eventKey!==n)return null;i=r.orderId}}}window.sessionStorage.removeItem(go)}catch{}e.delete("seatlayer_checkout");try{let s=e.toString();history.replaceState(history.state,"",`${location.pathname}${s?`?${s}`:""}${location.hash}`)}catch{}return{outcome:t,orderId:i}}function vo(n){if(!n.framed)return null;let e=n.ancestorOrigins?.length?n.ancestorOrigins[0]:null;for(let t of[e,n.referrer])if(t)try{return new URL(t).origin}catch{}return null}var Pc="https://api.seatlayer.io",Lc=10,xo=6e4,ko=6e4,Mc=10,Hc=40,Oc=220,So="seatmap.a11y.cb";function Rc(){try{if(typeof window>"u")return null;let n=window.localStorage.getItem(So);return n==null?null:n==="1"}catch{return null}}function Ic(n){try{window.localStorage.setItem(So,n?"1":"0")}catch{}}var ze=class n{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.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.bookedEl=null;this.gaQty=new Map;this.gaPromptEl=null;this.gaPromptReturnFocus=null;this.gaAreasExpanded=!1;this.lastMapPoint=null;this.tipEl=null;this.tipPos={x:0,y:0};this.tipPinned=!1;this.tipMarkedHoverLabel=null;this.lastPointerType="mouse";this.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.baReopen=!1;this.bestAvailableConfirm=!1;this.releasingHold=!1;this.salesClosed=!1;this.soldOut=!1;this.soldoutEl=null;this.cbSafe=!1;this.rungsEl=null;this.projectionEl=null;this.buyerView="map";this.view3dEl=null;this.view3dHandle=null;this.view3dGen=0;this.view3dReturnSeat=null;this.view3dTargetSeatId=null;this.view3dCompareSeatIds=[];this.view3dCompareChip=new bi({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 Ci({toast:(e,t,i)=>this.toast(e,t,i),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.holdCopyPending=!1;this.sideCollapsed=!1;this.sideToggleEl=null;this.framedFs=!1;this.lastPostedHeight=0;this.cbEl=null;this.modalScrim=null;this.prevFocus=null;this.escHandler=null;this.closeModal=null;this.lastCatAvail=null;this.lastAvailFloorId="";this.availQuietUntil=0;this.liveTimer=null;this.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=fo(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??Pc).replace(/\/+$/,"");let t={onExpired:a=>{this.opts.onAccessExpired?.(a),a.refreshed||this.showAccessPanel({reason:"no_token",retryable:!1})},onUnavailable:a=>{this.opts.onAccessUnavailable?.(a),this.showAccessPanel(a)}},i=!e.transport&&e.publicKey&&!e.buyerAccessTokenProvider&&!e.buyerAccessToken?qt({base:this.apiBase,event:e.event,publicKey:e.publicKey,accessHooks:t,apiOptions:{referral:e.referral,onObjectUnavailable:a=>this.opts.onSelectedObjectUnavailable?.(a)}}):null;this.access=e.transport?null:i?.access??xt(e,t),this.pubApi=e.transport?null:i?.api??new Pe(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 Je(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=Xr(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(Lc,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=Rc()??!!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 st(e)}isFramed(){return typeof window<"u"&&window.parent!==window}postToHost(e){if(!this.isFramed())return;let t=vo({framed:!0,ancestorOrigins:window.location.ancestorOrigins,referrer:document.referrer});if(t)try{window.parent.postMessage(e,t)}catch{}}measureFramedHeight(){let e=this.root;if(!e)return 0;let t=e.clientWidth||(typeof window<"u"?window.innerWidth:0)||0;if(t<=0)return 0;let i=t<640?1.2:.62;return Math.max(420,Math.round(t*i))}reportFramedHeight(){if(!this.isFramed())return;let e=this.measureFramedHeight();e<=0||e===this.lastPostedHeight||(this.lastPostedHeight=e,this.postToHost({type:"seatlayer:height",px:e}))}toggleFullscreen(){let e=this.root;if(!e)return;!!document.fullscreenElement||this.fsFallback||this.framedFs?document.fullscreenElement?document.exitFullscreen().catch(()=>{}):this.framedFs?this.setFramedFs(!1):this.setFsFallback(!1):e.requestFullscreen?e.requestFullscreen().catch(()=>this.enterFsFallback()):this.enterFsFallback()}syncFullscreenButtons(){let e=!!document.fullscreenElement||this.fsFallback||this.framedFs,t=this.eventDetailsHidden&&!e;this.root?.setAttribute("data-event-details-hidden",String(t)),this.els.zfs?.setAttribute("aria-pressed",String(e)),this.els.zfs?.setAttribute("title",e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen"));let i=this.els.zfs?.querySelector(".sl-zfs-lbl");i&&(i.textContent=e?this.tf("picker.exitFullScreen","Exit full screen"):this.tf("picker.fullScreen","Full screen")),this.view3dEl?.querySelector(".sl-view3d-fs")?.setAttribute("aria-pressed",String(e))}enterFsFallback(){this.isFramed()?this.setFramedFs(!0):this.setFsFallback(!0)}setFramedFs(e){this.framedFs!==e&&(this.framedFs=e,this.syncFullscreenButtons(),this.postToHost({type:"seatlayer:fullscreen",on:e}),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFramedFs(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}setFsFallback(e){this.fsFallback!==e&&(this.fsFallback=e,this.root?.classList.toggle("sl-fs",e),this.syncFullscreenButtons(),e&&!this.fsEscHandler?(this.fsEscHandler=t=>{t.key==="Escape"&&!document.fullscreenElement&&this.setFsFallback(!1)},window.addEventListener("keydown",this.fsEscHandler)):!e&&this.fsEscHandler&&(window.removeEventListener("keydown",this.fsEscHandler),this.fsEscHandler=null),requestAnimationFrame(()=>this.controller.refitCurrentView()))}close(){this.closeModal?this.closeModal():this.destroy()}static async open(e){et();let t=document.activeElement instanceof HTMLElement?document.activeElement:null,i=document.createElement("div");i.className="sl-modal-scrim";let s=document.createElement("div");s.className="sl-modal-frame",s.setAttribute("role","dialog"),s.setAttribute("aria-modal","true"),s.setAttribute("aria-label",v("picker.seatSelection","Seat selection")),s.tabIndex=-1,i.appendChild(s),document.body.appendChild(i);let r=document.body.style.overflow;document.body.style.overflow="hidden";let o=new n({...e,container:s});o.modalScrim=i,o.prevFocus=t;let a=["a[href]","area[href]","button","input","select","textarea","iframe","object","embed","summary","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"[tabindex]"].join(","),l=()=>{let g=[...s.querySelectorAll('[role="dialog"][aria-modal="true"]')].filter(m=>m.isConnected&&!m.closest('[hidden], [aria-hidden="true"], [inert]'));return g[g.length-1]??s},c=(g,m)=>{let y=g;for(;y;){let w=window.getComputedStyle(y);if(y.hidden||y.getAttribute("aria-hidden")==="true"||y.hasAttribute("inert")||w.display==="none"||w.visibility==="hidden"||w.visibility==="collapse")return!0;if(y===m)return!1;y=y.parentElement}return!0},d=g=>[...g.querySelectorAll(a)].filter(m=>m.tabIndex>=0&&!m.matches(":disabled")&&!c(m,g)),p=(g,m)=>{let y=d(g),w=m?y[y.length-1]:y[0];w?w.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),i.remove(),o.modalScrim=null;let g=o.prevFocus;o.prevFocus=null,g?.isConnected&&g.focus({preventScroll:!0});let m=()=>{o.destroy(),e.onClose?.()};o.hold&&!o.handedOff?o.release().finally(m):m()};return o.closeModal=h,i.addEventListener("mousedown",g=>{g.target===i&&h()}),o.escHandler=g=>{if(g.key==="Tab"){if(g.defaultPrevented)return;let m=l(),y=d(m),w=y[0],x=y[y.length-1],P=document.activeElement;!w||!x?(g.preventDefault(),p(m,g.shiftKey)):P===m||!P||!m.contains(P)?(g.preventDefault(),(g.shiftKey?x:w).focus({preventScroll:!0})):g.shiftKey&&P===w?(g.preventDefault(),x.focus({preventScroll:!0})):!g.shiftKey&&P===x&&(g.preventDefault(),w.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 kc({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:Ue(e.theme),onSeatsRevealed:()=>{this.seatsRevealed=!0,e.onSeatsRevealed?.(),this.seatsRevealedReport?.()},onGAClick:t=>{let i=this.controller.getGAAreas().find(s=>s.id===t);i&&(this.collapseSheet(),Vi(this,i,this.lastMapPoint))},onSelectionChange:()=>{this.syncTray(),this.minimap?.refreshMinimap(),this.committedSelection().length&&this.collapseSectionCard(),this.syncSelectionTo3d()},onStatusChange:(t=>{this.syncSeatMarks(),this.syncPrices(),this.a11yMenu?.syncCounts(),Vs(t)&&this.scheduleOfferRefresh(!0),this.evictTakenSelections(),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()}),onHoldExpired:()=>{this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.holdConflicted=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.lapse.deferExpiryToast(()=>this.toast(O("picker.holdExpired",void 0)||"Your hold expired \u2014 seats released. Pick again.","warning")),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}this.confirmSeat?.id===t.id&&this.dismissConfirm(),this.tableDialog?.physicalSeatIds.includes(t.id)&&this.dismissTableDialog()},onSelectionLimit:()=>{this.toast(O("picker.maxTicketsForOrder",{count:this.maxTickets}),"warning"),this.opts.onSelectionLimit?.(this.maxTickets)},onViewChange:()=>{this.reanchorConfirm(),this.syncRung(),this.syncProjection(),this.minimap?.drawMinimapRect(),this.sectionCardOnView()},onSectionFocus:t=>this.showSectionCard(t),onDeckTap:()=>{this.showSectionCard(null),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap()},onFocusSeat:t=>this.announceSeat(t),onSeatHover:t=>this.updateTooltip(t),onHint:t=>{t&&this.toast(t)},onSalesClosed:()=>this.setSalesClosed(!0),onError:t=>this.opts.onError?.(t)})}async render(){if(this.rendered)return this;let e=performance.now(),t={},i=A=>Math.round((performance.now()-A)*100)/100;this.rendered=!0,et();let s=performance.now(),r=zt(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=gs(this.opts.container),{root:c,els:d,mapHost:p}=Fn(l,(A,H)=>this.tf(A,H),this.opts.theme);this.root=c,this.els=d,this.mapHost=p,jt(c,r,A=>{t.loadLocale=i(s),this.destroyed||this.applyActiveLocale(A,o)}),Vr(c,()=>[{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=i(a),t.skeletonPaint=i(e);let h=await this.loadChart(u,t,i);if(!h)return this;t.shellsPaint=i(e);let g=performance.now();if(this.startRealtime(),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=fs(O("picker.testMode"),yo()),A.setAttribute("aria-label",O("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 m=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,bs(this.els.logo,[this.opts.theme?.logoUrl,m?.logoUrl,h.posterUrl],this.opts.theme?.brandName??m?.brandName??h.eventName??"?"),this.els.name.textContent=h.eventName??"";let y=h.startsAt?Jt(h.startsAt,h.timezone??null,this.opts.locale):"";this.eventWhenText=y||null,this.els.meta.textContent=[h.venue,y].filter(Boolean).join(" \xB7 "),this.syncProjection(),this.buildBadge(m);let w=!!this.controller.doc&&this.controller.getExpandedSeats().some(A=>A.commercial?.restrictedView||A.commercial?.obstructedView);this.buildAccessibilityMenu(w),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=i(g);let x=performance.now();if(await this.restoreRememberedHold(),t.restoreHold=i(x),this.destroyed)return this;this.dismissSkeleton(),this.salesClosed&&this.applySalesClosed(),this.syncPrices(),this.syncTray(),this.resumeHostedOrder();let P=this.controller.doc,b=ri(this.opts.event),E=this.performanceGroup?.surface??(this.performanceGroup?"performance_group":null),S=E??"event",L={apiBase:this.apiBase,eventKey:this.opts.event,metricScope:S,surface:E==="season"?"season_picker":E==="performance_group"?"performance_group_picker":"seat_picker",ms:i(e),performanceProfile:t,chartDelivery:h.chartDelivery,seatCount:this.allSeats().length,objectCount:P?.objects.length??0,sectionCount:P?.objects.filter(A=>A.type==="section").length??0,floorCount:this.controller.getFloors().length,chartName:P?.name,view:this.buyerView,load:b,transport:this.opts.transport?"custom":"pubapi"};Ur(L,(A,H)=>this.emitAnalytics(A,H));let I=h.performanceProfile;return this.seatsRevealedReport=()=>this.emitAnalytics("chart_seats_revealed",fn({...L,performanceProfile:{...L.performanceProfile,...I}})),this.seatsRevealed&&this.seatsRevealedReport(),this.renderInfo=h,await this.registerAgentTools(),this}registerAgentTools(){return qr(this)}webMcpHost(e){return mn(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=uo(()=>{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.zoomToFit()),this.els.zfs.addEventListener("click",()=>this.toggleFullscreen()),this.fsChangeHandler=()=>{document.fullscreenElement||this.setFsFallback(!1),this.syncFullscreenButtons(),requestAnimationFrame(()=>this.controller.refitCurrentView())},document.addEventListener("fullscreenchange",this.fsChangeHandler);let t=this.els.sheetHead;if(t){let s=this.els.sheetToggle,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==="best"||d.dataset.act==="find"?(d.dataset.act==="best"&&(this.baReopen=!0,this.baQty=Math.max(1,Math.min(this.baQty,this.maxTickets-this.totalTicketCount())),this.syncTray()),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 i=()=>{if(this.root?.dataset.layout!=="narrow")return;let s=this.root.getAttribute("data-prices-open")==="true";if(this.root.setAttribute("data-prices-open",String(!s)),this.els.pricesSec?.setAttribute("aria-expanded",String(!s)),!s&&this.root.dataset.sheet!=="open"){this.root.dataset.sheet="open";let 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")||i()}),this.els.pricesSec?.addEventListener("keydown",s=>{s.key!=="Enter"&&s.key!==" "||s.target.closest("select,button")||(s.preventDefault(),i())}),this.tipEl=document.createElement("div"),this.tipEl.setAttribute("role","tooltip"),this.tipEl.className="sl-tip",this.els.map.appendChild(this.tipEl),this.els.map.addEventListener("pointerdown",s=>{this.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()}),this.els.holdChange?.addEventListener("click",()=>{this.handleChangeSeats()})}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 i=e.clientWidth;if(i<=0)return;let s=e.clientHeight,r=i!==this.pickerLayoutSize.width||s!==this.pickerLayoutSize.height;this.pickerLayoutSize={width:i,height:s},this.reportFramedHeight();let o=i<640?"narrow":"wide",a=s<560?"compact":"comfortable";(e.dataset.layout!==o||e.dataset.density!==a)&&(e.dataset.layout=o,e.dataset.density=a,o==="narrow"&&!e.dataset.sheet&&(e.dataset.sheet="peek"),this.dockLayoutChrome(),this.syncMinimapForLayout(),this.lastTrayKeys.size&&this.syncTray()),r&&(this.minimap?.refreshMinimap(),this.fitSectionStripCount(),this.scheduleFit())};this.ro=new ResizeObserver(t),this.ro.observe(e),t(),requestAnimationFrame(t)}async loadChart(e,t,i){let s=performance.now(),r=await this.controller.render(e);return t.loadChartAndStatuses=i(s),this.destroyed?null:r?(Object.assign(t,r.performanceProfile),r):(ke({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:He(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 n({...a,container:o}).render()}),null)}resumeHostedOrder(){if(this.checkoutMode!=="hosted")return;let e=bo(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 Si(t,{event:String(this.opts.event),chart:()=>this.controller.doc?.name??null,needs:()=>this.controller.getAccessNeeds(),hasLimitedView:e,tf:(i,s)=>this.tf(i,s),isColorblindSafe:()=>this.cbSafe,setColorblindSafe:i=>this.setColorblindSafe(i),isLimitedViewHidden:()=>this.limitedViewFilter,setLimitedViewHidden:i=>{this.limitedViewFilter=i,this.controller.setCommercialLimitedFilter(i),this.pushAvailabilityTo3d()},applyAccessibilityFilter:i=>{this.controller.setAccessibilityFilter(i),this.syncPrices(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},focusSeatsForFilter:()=>this.focusSeatsForFilter(),stepToAccessibleSection:i=>this.controller.focusNextAccessibleSection?.([i])??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(O("picker.accessSpreadHint",{count:e.spaces,sections:e.sections.length}),"neutral")}setAccessibilityFilter(e){this.controller.setAccessibilityFilter(e),this.a11yMenu?.syncAccessibilityFilter(e),this.pushAvailabilityTo3d()}dockLayoutChrome(){let e=this.root?.dataset.layout==="narrow";this.applyPanelCollapsed();let t=this.els.zfs,i=this.els.headInfo?.parentElement;t&&i&&t.parentElement!==i&&(t.classList.add("sl-fs-pill"),i.insertBefore(t,this.els.hold??null));let s=this.els.pricesSec;s&&(e?(s.setAttribute("role","button"),s.tabIndex=0,s.setAttribute("aria-expanded",String(this.root?.getAttribute("data-prices-open")==="true"))):(s.removeAttribute("role"),s.removeAttribute("aria-expanded"),s.tabIndex=-1)),this.lastSection&&this.renderSectionCard(this.lastSection)}buildExtendPrompt(){let e=document.createElement("div");e.className="sl-extend",e.setAttribute("role","status"),e.innerHTML='<span class="sl-extend-txt" data-ref="extendTxt"></span><button type="button" class="sl-extend-btn" data-ref="extendBtn"></button>',(this.regions["bottom-center"]??this.els.map).appendChild(e),this.extendEl=e,this.els.extendTxt=e.querySelector('[data-ref="extendTxt"]'),this.els.extendBtn=e.querySelector('[data-ref="extendBtn"]'),this.els.extendBtn.textContent=this.tf("picker.addTime","Add time"),this.els.extendBtn.addEventListener("click",()=>{this.handleExtend()})}buildBookedOverlay(){let e=document.createElement("div");e.className="sl-booked",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.innerHTML=`<div class="sl-booked-badge"><svg viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg></div><div class="sl-booked-title">${this.tf("picker.allSetTitle","You're all set")}</div><div class="sl-booked-sub" data-ref="bookedSub"></div><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>${R(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 v(e,t)}buildSoldoutOverlay(){if(!this.els.map)return;let e=document.createElement("div");e.className="sl-soldout",e.setAttribute("role","status");let t=(this.controller.doc?.theme?.brandName??this.opts.theme?.brandName??this.els.name?.textContent??this.tf("picker.soldOutEyebrow","This event")).toUpperCase(),i=document.createElement("div");i.className="sl-soldout-eyebrow",i.textContent=t;let s=document.createElement("div");s.className="sl-soldout-title",s.textContent=this.tf("picker.soldOutTitle","Sold out");let 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(i,s,r),this.els.map.appendChild(e),this.soldoutEl=e}syncSoldout(e,t){let i=this.controller.getGAAreas().length>0,s=this.isSoldOut(e,t,i);s!==this.soldOut&&(this.soldOut=s,this.soldoutEl?.classList.toggle("on",s))}isSoldOut(e,t,i){return!i&&e.length>0&&e.every(s=>(t[s.key]??0)===0)}setSalesClosed(e){let t=e||!!this.opts.readOnly;this.salesClosed!==t&&(this.salesClosed=t,this.applySalesClosed())}applySalesClosed(){this.salesClosed&&this.tableDialog&&!this.tableDialogHeld&&this.cancelTableDialog();let e=this.els.closedPill;if(e){e.classList.toggle("on",this.salesClosed);let t=this.els.closedPillText??e;t.textContent=this.tf("picker.salesClosedPill","Sales are closed")}this.root?.setAttribute("data-sales-closed",String(this.salesClosed)),this.salesClosed&&this.srEl&&(this.srEl.textContent=this.tf("picker.salesClosedToast","Sales are closed for this event.")),this.syncCta(),this.syncTray()}badgeHidden(e){return!!(this.opts.hideBadge||e?.hideBadge)}buildBadge(e){if(this.badgeHidden(e))return;let t=this.els.foot;if(!t)return;let i=document.createElement("a");i.className="sl-powered",i.href="https://seatlayer.io/?ref=picker",i.target="_blank",i.rel="noopener noreferrer",i.setAttribute("aria-label",this.tf("picker.poweredBy","Powered by SeatLayer"));let s=document.createElement("span");s.className="sl-powered-mark",s.setAttribute("aria-hidden","true"),s.innerHTML=Yt;let r=document.createElement("span");r.textContent=this.tf("picker.poweredBy","Powered by SeatLayer"),i.append(s,r),t.appendChild(i)}buildRegions(){if(!this.els.map)return;let e=["top-left","top-center","top-right","left-rail","bottom-left","bottom-center","bottom-right"];for(let t of e){let i=document.createElement("div");i.className="sl-anchor",i.dataset.region=t,this.els.map.appendChild(i),this.regions[t]=i}}cssVar(e){return this.root?getComputedStyle(this.root).getPropertyValue(e).trim():""}reducedMotion(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}scheduleMotion(e,t){let i=setTimeout(()=>{this.motionTimers.delete(i),this.destroyed||e()},t);this.motionTimers.add(i)}animateOnce(e,t,i=600){!e||this.reducedMotion()||(e.classList.remove(t),e.offsetWidth,e.classList.add(t),this.scheduleMotion(()=>e.classList.remove(t),i))}flashPickedSeat(e){this.reducedMotion()||this.controller.flashSeat(e,this.cssVar("--sl-accent")||"#f4b740")}flashHeldSeats(e){let t=this.reducedMotion(),i=(e.items??[]).filter(s=>s.objectType!=="ga").slice(0,10).map(s=>this.controller.seatByLabel(s.label)).filter(s=>!!s);Sr({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)},i)}committedSelection(){let e=this.confirmSeat?.id,t=this.tableDialog&&!this.tableDialogHeld?this.tableDialog.id:null;return this.controller.getSelection().filter(i=>i.id!==e&&i.id!==t)}pendingSelectionCount(){let e=this.hold?.items??[],t=new Set(e.map(s=>s.label));return this.committedSelection().filter(s=>!t.has(s.label)).reduce((s,r)=>s+(r.quantity??1),0)+Be(this.gaQty,this.hold?.items??[])}heldTicketCount(){return(this.hold?.items??[]).reduce((e,t)=>e+(t.quantity??1),0)}totalTicketCount(){let e=new Set((this.hold?.items??[]).map(i=>i.label)),t=this.committedSelection().filter(i=>!e.has(i.label)).reduce((i,s)=>i+(s.quantity??1),0);return this.heldTicketCount()+t+Be(this.gaQty,this.hold?.items??[])}updateSelectionCapacity(){let e=new Set((this.hold?.items??[]).map(s=>s.label)),t=this.committedSelection().filter(s=>e.has(s.label)).reduce((s,r)=>s+(r.quantity??1),0),i=Math.max(0,this.maxTickets-this.heldTicketCount()-Be(this.gaQty,this.hold?.items??[]));this.controller.setMaxSelection(t+i)}syncCta(e=this.lastTrayCount,t=this.pendingSelectionCount()){let i=this.els.cta;if(!i)return;if(this.salesClosed){i.disabled=!0,i.textContent=this.tf("picker.salesClosedCta","Sales closed");return}if(this.confirmSeat||this.tableDialog&&!this.tableDialogHeld){i.disabled=!0,i.textContent=this.tableDialog?this.tf("picker.confirmYourTable","Confirm your table"):this.tf("picker.confirmOrCancelSeat","Confirm or cancel this seat");return}if(this.ctaPhase==="holding"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.securingSeats","Securing your seats\u2026")}`;return}if(this.ctaPhase==="checkout"){i.disabled=!0,i.innerHTML=`<span class="sl-cta-spin" aria-hidden="true"></span>${this.tf("picker.openingCheckout","Opening secure checkout\u2026")}`;return}let s=!this.hold&&this.performanceGroup?.selectionMode==="per_performance"?this.performanceGroup.submissionState?.():null;if(s&&!s.ready){i.disabled=!0,i.textContent=this.tf("picker.completeAllPerformances","Complete all performances ({complete}/{total})").replace("{complete}",String(s.complete)).replace("{total}",String(s.total));return}let r=this.controller.getSelectionValidity(e);if(r&&!r.isValid){i.disabled=!0,i.textContent=vn(r,(o,a)=>this.tf(o,a),!0);return}i.disabled=e===0,i.textContent=this.hold?t?O("picker.secureMoreAndCheckout",{count:t}):this.tf("picker.continueToCheckout","Continue to checkout"):e?this.performanceGroup?this.tf("picker.holdSeatsForAllPerformances","Hold seats for all {count} performances").replace("{count}",String(this.performanceGroup.performanceCount)):this.tf("picker.holdSeatsAndCheckout","Hold seats & checkout"):this.tf("picker.selectSeats","Select seats")}setCtaPhase(e){this.ctaPhase=e,this.syncCta(),this.renderPeek(this.lastTrayCount,this.lastTrayTotal,this.pendingSelectionCount())}async runCheckoutHandoff(e,t){this.setCtaPhase("checkout");try{await this.checkoutHandoff(e,t)}finally{this.ctaPhase==="checkout"&&!this.bookedShown&&this.setCtaPhase("idle")}}holdStorageKey(){return`@seatlayer/hold/v1/${encodeURIComponent(this.apiBase)}/${encodeURIComponent(this.opts.event)}`}rememberedHoldId(){if(this.opts.initialHoldId)return this.opts.initialHoldId;if(this.opts.restoreHold===!1||typeof window>"u")return null;try{return window.sessionStorage.getItem(this.holdStorageKey())}catch{return null}}rememberHold(e){if(!(this.opts.restoreHold===!1||typeof window>"u"))try{window.sessionStorage.setItem(this.holdStorageKey(),e.holdId)}catch{}}forgetHold(){if(!(typeof window>"u"))try{window.sessionStorage.removeItem(this.holdStorageKey())}catch{}}async resumeHoldFromServer(e,t){try{let i=await this.controller.resumeHold(e);if(!i||this.destroyed)return null;let s={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items};return this.hold=s,this.handedOff=!0,this.bookedShown=!1,this.ctaPhase="idle",this.startHoldTimer(s.expiresAt),this.rememberHold(s),this.syncTray(),this.emitHoldChange(),this.opts.onHoldRestored?.(s,s.seats??[],this.buildHandoff(s)),t&&this.toast(this.tf("picker.heldTicketsRestored","Your held tickets have been restored."),"success"),s}catch(i){let s=i?.status;return s===404||s===409?this.forgetHold():this.opts.onError?.(i),null}}async restoreRememberedHold(){let e=this.rememberedHoldId();e&&await this.resumeHoldFromServer(e,!0)}activeFloorObjects(){let e=this.controller.doc;if(!e)return[];let t=e.floors;if(t?.length){let i=this.controller.getActiveFloorId();return(t.find(s=>s.id===i)??t[0]).objects??[]}return e.objects??[]}buildMinimap(){!this.els.map||this.root?.dataset.layout==="narrow"||(this.minimap=Or({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 yi(this,e)}catPriceRange(e){return wi(this,e)}buildPriceFilter(){if(this.suppressPricing||!this.els.prices||!this.els.pricesSec)return;let e=Rs(this.controller.doc?.categories??[],this.legendDeps());if(e.length<2)return;let t=document.createElement("select");t.className="sl-price-select",t.setAttribute("aria-label",this.tf("picker.filterAndFocusByPrice","Filter and focus seats by price"));let i=document.createElement("option");i.value="all",i.textContent=this.tf("picker.allPrices","All prices"),t.appendChild(i);for(let s of e){let r=document.createElement("option");r.value=s.id,r.textContent=s.label,t.appendChild(r)}this.els.pricesSec.appendChild(t),this.priceSelect=t,t.addEventListener("change",()=>{this.applyPriceBand(e.find(s=>s.id===t.value)?.keys??null)})}applyPriceBand(e){if(this.focusedCatKey=null,this.priceBandKeys=e?new Set(e):null,this.priceSelect){let t=e?this.priceSelect.value:"all";this.priceSelect.value!==t&&(this.priceSelect.value=t)}this.controller.setCategoryFilter(e),this.controller.focusCategoryFilter(e),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)}buildArenaChrome(){let e=this.controller.doc;if(!e||!this.els.map)return;let t=e.objects.some(i=>i.type==="section")||(e.floors??[]).some(i=>i.objects.some(s=>s.type==="section"));if(this.canOffer3d()){let i=document.createElement("div");i.className="sl-projection",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.venueView","Venue view")),i.innerHTML=`<button type="button" data-view="map" aria-pressed="true" title="${this.tf("picker.flat2dMap","Flat 2D map")}">${this.tf("picker.map","Map")}</button><button type="button" data-view="venue3d" aria-pressed="false" title="${this.tf("picker.interactive3dVenueView","Interactive 3D venue view")}">3D</button>`,i.querySelectorAll("button").forEach(s=>{if(s.dataset.view==="venue3d")for(let r of["pointerenter","focus","pointerdown"])s.addEventListener(r,Xt,{once:!0});s.addEventListener("click",()=>{this.setBuyerView(s.dataset.view)})}),this.regions["top-right"].appendChild(i),this.projectionEl=i,this.syncProjection()}if(t){let i=[...e.objects,...(e.floors??[]).flatMap(d=>d.objects)],s=new Set((e.zones??[]).map(d=>d.id)),o=i.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",O("picker.zoomLevel"));let l={zones:O("picker.rungLabel.zones"),sections:O("picker.rungLabel.sections"),seats:O("picker.rungLabel.seats")},c={zones:O("picker.rungTip.zones"),sections:O("picker.rungTip.sections"),seats:O("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 i=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(i),this.floorsEl=i,this.syncFloors()}}syncRung(){let e=this.controller.getRung(),t=this.controller.seatsRevealed?.()??(e==="seats"||!!this.controller.getFocusedSection?.());this.root&&(this.root.dataset.zoomed=String(t)),this.minimap?.setAutoOpen(!1),this.rungsEl&&this.rungsEl.querySelectorAll("button").forEach(i=>{let s=i.dataset.rung===e;i.classList.toggle("on",s),i.setAttribute("aria-pressed",String(s))})}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||!Qt()?!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)?ko/2:ko}syncFloors(){or(this.floorsEl,this.controller.getActiveFloorId(),this.controller.isFloorOverview())}get sectionCard(){return this.sectionCardCache||(this.sectionCardCache=new di({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()}fitSectionStripCount(){this.sectionCard.fitStripCount()}sectionNeighbours(e){let t=this.activeFloorObjects().filter(s=>s.type==="section"&&!this.controller.isSectionClosed(s.id)&&this.controller.getSectionSeatCount(s.id)>0);if(t.length<2)return null;let i=t.findIndex(s=>s.id===e);return i<0?null:{previous:t[(i-1+t.length)%t.length],next:t[(i+1)%t.length]}}markedSeatAnnouncement(e){let t=on(this.controller.getRenderer()?.getSeatMark?.(e.id),this.performanceGroup?.nights?.());return br(t,e.displayLabel??e.label,this.opts.locale)}announceSeat(e){if(!this.srEl)return;if(!e){this.srEl.textContent="";return}let t=this.markedSeatAnnouncement(e);if(t){this.srEl.textContent=t;return}let i=this.controller.doc?.categories.find(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=i?this.catPriceRange(i):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=$e(c),p=c?.rowLabel??c?.displayLabel??e.displayLabel??e.label,u=l?`${d} ${p}, ${l.bookingMode==="variable"?O("picker.minToMaxGuests",{min:l.minOccupancy,max:l.maxOccupancy}):O("picker.capacityGuests",{count:l.capacity})}`:c?.objectType==="booth"?`${d} ${p}`:c?.objectType==="table"?`${d} ${p}, ${O("picker.seatNumberLower",{label:c.seatNumber??e.label})}`:O("picker.seatLabel",{label:c?.displayLabel??e.displayLabel??e.label});this.srEl.textContent=`${u}, ${i?.label??e.categoryKey}${a?`, ${a}`:""}, ${r}`}showTableDialog(e,t,i){this.dismissTableDialog(!1),this.tableDialog={...e},this.tableDialogHeld=t,this.tableDialogReturnFocus=i??document.activeElement;let s=this.controller.doc?.categories.find(a=>a.key===e.categoryKey),r=e.bookingMode==="variable",o=document.createElement("div");o.className="sl-table-scrim",o.innerHTML=ir(e,{variable:r,held:t,typeWord:$e(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 i=t.querySelector("output[data-table-qty]");i&&(i.value=String(e.quantity));let s=t.querySelector("input[data-table-qty]");s&&(s.value=String(e.quantity)),t.querySelectorAll("[data-table-step]").forEach(a=>{let l=Number(a.dataset.tableStep);a.disabled=l<0?e.quantity<=e.minOccupancy:e.quantity>=e.maxOccupancy});let 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 i=this.tableDialogEl?.querySelector(".sl-table-confirm");if(i&&(i.disabled=!0,i.textContent=t?this.tf("picker.updatingEllipsis","Updating\u2026"):this.tf("picker.selectingEllipsis","Selecting\u2026")),t){try{let s=await this.controller.replaceTableQuantity(e.label,e.quantity,this.opts.holdTtlMs);if(!s){this.toast(this.tf("picker.guestCountCouldNotBeSecured","That guest count could not be secured. Your current table hold is unchanged."),"warning"),this.renderTableDialogState(),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"));return}this.hold={holdId:s.holdId,expiresAt:s.expiresAt,seats:s.seats,items:s.items},this.startHoldTimer(s.expiresAt),this.dismissTableDialog(),this.syncTray(),this.emitHoldChange(),this.toast(O("picker.tableUpdatedForGuests",{label:e.label,count:e.quantity}),"success")}catch(s){this.opts.onError?.(s),this.toast(this.tf("picker.guestCountNoLongerAvailable","That guest count is no longer available. Your current hold is unchanged."),"error"),i&&(i.disabled=!1,i.textContent=this.tf("picker.updateTable","Update table"))}return}if(!this.controller.setTableQuantity(e.label,e.quantity)){i&&(i.disabled=!1,i.textContent=e.bookingMode==="variable"?this.tf("picker.selectTable","Select table"):this.tf("picker.selectWholeTable","Select whole table"));return}this.dismissTableDialog(),this.collapseSectionCard(),this.syncTray()}cancelTableDialog(){let e=this.tableDialog,t=this.tableDialogHeld;this.dismissTableDialog(),e&&!t&&this.controller.deselect(e.physicalSeatIds)}dismissTableDialog(e=!0){let t=this.tableDialogReturnFocus;this.tableDialogEl?.remove(),this.tableDialogEl=null,this.tableDialog=null,this.tableDialogHeld=!1,this.tableDialogReturnFocus=null,e&&requestAnimationFrame(()=>(t?.isConnected?t:this.root)?.focus())}get confirmCard(){return this.confirmCardCache||(this.confirmCardCache=new gi({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,i,s)=>this.paidPrice(e,t,i,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){this.confirmCard.show(e)}reanchorConfirm(){this.confirmCard.reanchor()}dismissConfirm(){this.confirmCard.dismiss()}async commitConfirm(){await this.confirmCard.commit()}cancelConfirm(){this.confirmCard.cancel()}closeConfirm(){this.dismissConfirm()}inviteCommit(e,t){Mr(e,t,this.reducedMotion())}addSeatLabel(e){return Hr(e,(t,i)=>this.tf(t,i))}seatViewEnabled(){return this.opts.seatView!==!1}allSeats(){return this.allSeatsCache||(this.allSeatsCache=[...this.controller.getExpandedSeats()]),this.allSeatsCache}async openSeatView(e){if(!this.root||!this.seatViewEnabled())return;let t=++this.seatViewGen,i=this.controller.doc,s=this.controller.getActiveFloorId(),r=e.focalPoint??i?.floors?.find(p=>p.id===s)?.focalPoint??i?.focalPoint??{x:0,y:0},o,a,l=!1;if(e.viewUrl){let p,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=wo(h),l=Ec(h)}else{let p;try{let{generateSeatPanorama:u}=await Zt();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=O("picker.illustrationCaption",{m:p.distanceM})}this.closeSeatView(!1);let c=O("picker.viewFromSeat",{label:e.label}),d=ii({root:this.root,source:o,caption:a,real:l,closeLabel:this.tf("picker.close","Close"),dragHint:it(),viewFromSeatLabel:c,real360Label:O("picker.real360"),previewLabel:O("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 i=Number.isInteger(e);return Sc(e,this.currency,{locale:this.opts.locale,fallback:(s,r)=>`${s} ${r}`,...i?{minimumFractionDigits:0,maximumFractionDigits:0}:{}})}scheduleOfferBoundary(e){if(this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerBoundaryTimer=null,!this.api.availability||this.destroyed)return;let t=Date.now(),i=Fs(e,t);if(i==null)return;let s=6*36e5,r=Math.min(Math.max(i-t+1e3,1e3),s);this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},r)}scheduleOfferRefresh(e){!this.api.availability||this.destroyed||(this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerRefreshTimer=setTimeout(()=>{this.offerRefreshTimer=null,this.refreshOfferAvailability(e)},e?180:0))}async refreshOfferAvailability(e){if(!(!this.api.availability||this.destroyed))try{let t=await this.api.availability(this.opts.event,e);if(this.destroyed)return;let i=Xi(t);if(!i)return;this.offerAvailability=i,this.applyChannelPricing(i.channelPricing),this.scheduleOfferBoundary(i);let s=Zi(i),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?.(i)}catch{!this.destroyed&&!this.offerBoundaryTimer&&!document.hidden&&(this.offerBoundaryTimer=setTimeout(()=>{this.offerBoundaryTimer=null,!document.hidden&&this.refreshOfferAvailability(!1)},3e4))}}offerPrice(e){return e?this.offerAvailability?.prices.find(t=>t.categoryKey===e)??null:null}applyChannelPricing(e){this.channelByObject.clear(),this.pricesByChannel.clear();for(let t of e?.channels??[])this.pricesByChannel.set(t.channelId,t.priceOverrides);for(let t of e?.objects??[])this.pricesByChannel.has(t.channelId)&&this.channelByObject.set(t.label,t.channelId)}syncOffer(){let e=this.els.offer;if(!e)return;if(this.suppressPricing){e.classList.remove("has"),e.replaceChildren();return}let t=this.offerAvailability,i=t?.release??null,s=i?null:t?.upcoming??null;if(!t||t.state==="closed"||t.state==="sold-out"||!i&&!s){e.classList.remove("has"),e.replaceChildren();return}let r=i??s,o=document.createElement("div");o.className="sl-offer-main";let a=document.createElement("div");a.className="sl-offer-copy";let l=document.createElement("span");l.className="sl-offer-kicker",l.textContent=i?this.tf("picker.currentTicketOffer","Current ticket offer"):this.tf("picker.upcomingTicketOffer","Upcoming ticket offer");let c=document.createElement("strong");c.className="sl-offer-name",c.textContent=r.name||(i?this.tf("picker.currentOffer","Current offer"):this.tf("picker.scheduledOffer","Scheduled offer"));let d=document.createElement("span");d.className="sl-offer-line";let p=[];i&&t.fromPrice!=null&&p.push(this.money(t.fromPrice/100)),i&&r.remaining!=null&&p.push(O("picker.offerRemainingAvailable",{count:r.remaining})),i&&r.endsAt!=null&&p.push(O("picker.offerUntil",{time:Jt(r.endsAt,this.eventTimezone,this.opts.locale)})),s?.startsAt!=null&&p.push(O("picker.offerStarts",{time:Jt(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",O("picker.howOfferWorks",{name:c.textContent??""})),h.textContent="i";let g=document.createElement("div");g.className="sl-offer-detail",g.textContent=i?this.tf("picker.offerDetailActive","This price applies automatically to eligible seats. Tickets in active carts temporarily reduce the available quantity; released or expired holds return it. When the offer ends, the next matching offer or normal ticket price takes over."):this.tf("picker.offerDetailUpcoming","Tickets are available at their normal price now. This scheduled offer will apply automatically to eligible seats when it starts."),u.append(h,g),o.append(a,u),e.replaceChildren(o),e.classList.add("has")}paidPrice(e,t,i,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?i:typeof o=="number"?o:t&&o.tiers?.[t]!==void 0?o.tiers[t]:o.base??i}legendDeps(){return{colorOf:e=>this.controller.getRenderer()?.categoryDisplayColor?.(e.key)??e.color,rangeOf:e=>this.catPriceRange(e),priceOf:e=>this.catPrice(e),offerOf:e=>this.offerPrice(e),money:e=>this.money(e),esc:R}}syncPriceRail(e,t,i=this.legendDeps()){let s=this.els.railScroll,r=e.length>1;if(this.els.rail?.classList.toggle("has",r),!s)return;s.innerHTML=r?Os({...i,categories:e,left:t,activeKey:this.focusedCatKey,soldOutWord:this.tf("picker.soldOut","Sold out"),allWord:this.tf("picker.allPrices","All prices"),allActive:!this.focusedCatKey&&!this.priceBandKeys}):"";let o=e.map(a=>a.key).join("|");this.lastRailSignature!==o&&(this.lastRailSignature=o,s.scrollLeft=0),s.querySelectorAll(".sl-rc").forEach(a=>{a.addEventListener("click",()=>{if(a.hasAttribute("data-rail-all")){this.applyPriceBand(null);return}this.focusCategory(a.dataset.cat??"")})}),this.railEdgesBound||(this.railEdgesBound=!0,s.addEventListener("scroll",()=>Wi(s),{passive:!0})),requestAnimationFrame(()=>Wi(s))}syncPrices(){let e=this.controller.doc;if(!e||!this.els.prices)return;let t=this.controller.categoryAvailability(),i=e.categories.filter(p=>!p.notForSale);this.narrateAvailability(i,t),this.syncSoldout(i,t);let s=this.legendDeps(),r=this.suppressPricing,o=r?{...s,priceOf:()=>{},rangeOf:()=>{},offerOf:()=>null}:s;r&&(this.els.pricesSec?.querySelector("span")?.replaceChildren(this.tf("picker.seatCategories","Seat categories")),this.els.pricesHint?.remove()),this.syncPriceRail(i,t,o);let a=5,l=i.length-a,c=l>1&&!this.pricesExpanded,d=c?i.slice(0,a):i;this.els.prices.classList.toggle("sl-expanded",l>1&&this.pricesExpanded),this.els.prices.innerHTML=Hs({...o,categories:d,left:t,collapsed:c,activeKey:this.focusedCatKey,bandKeys:this.priceBandKeys,leftCount:p=>ot("picker.leftCount",p),titleFor:(p,u)=>u?this.tf("picker.showAllSeats","Show all seats"):O("picker.showLabelSeatsOnMap",{label:p.label}),moreLabel:l>1?c?r?this.tf("picker.showAllCategories","Show all categories"):O("picker.showAllTicketTypes",{count:i.length}):this.tf("picker.showFewer","Show fewer"):null,status:{legend:this.tf("picker.seatStatusLegend","Seat status legend"),held:this.tf("picker.temporarilyHeld","Temporarily held"),sold:this.tf("picker.sold","Sold")}}),this.els.prices.querySelectorAll(".sl-price-row").forEach(p=>{p.addEventListener("mouseenter",()=>this.controller.getRenderer()?.setCategoryHighlight?.(p.dataset.cat??null)),p.addEventListener("mouseleave",()=>this.controller.getRenderer()?.setCategoryHighlight?.(null));let u=()=>this.focusCategory(p.dataset.cat??"");p.addEventListener("click",u),p.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),u())})}),this.els.prices.querySelector(".sl-price-more")?.addEventListener("click",()=>{this.pricesExpanded=!this.pricesExpanded,this.syncPrices()})}focusCategory(e){if(!e)return;let t=this.focusedCatKey===e?null:e;this.focusedCatKey=t,this.priceBandKeys=t?new Set([t]):null;let i=this.els.pricesSec?.querySelector(".sl-price-select");i&&(i.value="all"),this.controller.setCategoryFilter(t?[t]:null),this.controller.focusCategoryFilter(t?[t]:null),this.pushAvailabilityTo3d(),this.syncFloors(),this.syncRung(),this.minimap?.refreshMinimap(),this.syncPrices(),this.lastSection&&this.showSectionCard(this.lastSection)}narrateAvailability(e,t){let i=this.els.liveText,s=this.lastCatAvail;this.lastCatAvail={...t};let r=this.controller.getActiveFloorId();if(r!==this.lastAvailFloorId&&(this.lastAvailFloorId=r,this.availQuietUntil=performance.now()+2e3),!(!i||!s||performance.now()<this.availQuietUntil))for(let o of e){let a=s[o.key],l=t[o.key]??0;if(a===void 0||l>=a)continue;let c=a-l;i.textContent=ot("picker.seatsJustTakenInCategory",c,{label:o.label,left:l}),this.els.live?.classList.remove("on"),this.els.live?.offsetWidth,this.els.live?.classList.add("on"),this.liveTimer&&clearTimeout(this.liveTimer),this.liveTimer=setTimeout(()=>this.els.live?.classList.remove("on"),8e3);return}}evictTakenSelections(){let e=new Set([...this.controller.currentHold()?.labels??[],...this.holdingLabels]),t=this.controller.getSelection().filter(i=>!e.has(i.label)&&(this.controller.getStatus(i.id)??"free")!=="free");t.length&&(this.controller.deselect(t.map(i=>i.id)),this.toast(O("picker.seatJustTakenByAnother",{label:t[0].label}),"error"))}syncTray(){if(!this.els.tray)return;this.updateSelectionCapacity();let{seats:e,gaAreas:t,heldItems:i,heldLabels:s,heldCount:r,total:o,count:a}=vi(this),l=[],c=new Set;if(!this.salesClosed){let b=this.performanceGroup?.nightSummary?.()??[];b.length&&l.push(pr(b,{title:this.tf("picker.group.yourSeatsByNight","Your seats by night"),empty:this.tf("picker.group.noSeatsChosenYet","No seats yet")}));let E=this.performanceGroup?.selectionModeSwitch;E&&l.push(`<button type="button" class="sl-pg-switch" data-pg-switch-mode>${R(E.label)}</button>`)}l.push(no({salesClosed:this.salesClosed,hasPicks:e.length>0||i.length>0,hasGaAreas:t.length>0,groupMode:this.performanceGroup?this.performanceGroup.selectionMode??"same_seat":null,seated:!!this.controller.doc?.objects?.some(b=>b.type!=="gaArea"),venue3d:this.buyerView==="venue3d",whenText:this.eventWhenText?String(this.eventWhenText):void 0}));let d=!e.length&&!i.length&&!Be(this.gaQty,this.hold?.items??[]);if((d||this.root?.dataset.layout==="narrow")&&(this.baReopen=!1),!this.performanceGroup&&!this.salesClosed&&!this.hold&&(d||this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm)){let b=(this.controller.doc?.categories??[]).filter(S=>!S.notForSale),E=this.controller.getBestAvailableZones();this.baZone&&!E.some(S=>S.id===this.baZone)&&(this.baZone=""),l.push(io({confirming:this.bestAvailableConfirm,busy:this.bestAvailableBusy,reopened:this.baReopen,quantity:this.baQty,premium:this.baPremium,offerPremium:this.controller.hasPremiumSeats(),categories:b,zones:E,selectedCategory:this.baCat,selectedZone:this.baZone}))}let p=(b,E,S,L=1,I,A,H)=>Jr({categoryLabel:H,d:b?this.controller.seatDetails(b):null,area:S==="ga"?t.find(B=>B.id===I):void 0,label:E,objectType:S,quantity:L,identity:A,performanceLabel:this.performanceGroup?.activePerformanceLabel?.(),performanceDates:this.performanceGroup?.selectedPerformanceDates?.()}),u=R,h=[];for(let b of ns(i)){let E=b.objectType==="ga"?`held:ga:${b.objectId}:${b.tierId??""}`:`held:${b.label}`;c.add(E);let S=this.controller.doc?.categories.find(W=>W.key===b.categoryKey),L=b.tierId?S?.tiers?.find(W=>W.id===b.tierId)?.name:void 0,I=b.objectType!=="ga"?this.controller.seatByLabel(b.label):null,A=b.objectType==="table"?this.controller.tableSelection(b.label):null,H=I?this.controller.seatDetails(I.id):null,B=this.seatViewEnabled()&&!!I&&b.objectType!=="table"&&!!this.deliverableViewReference(I),V=u(this.tf("picker.heldForYou","Held for you")),te=(A?.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${u(encodeURIComponent(b.label))}">${u(O("picker.guestsCountEdit",{count:b.quantity??1}))}</button>`:"")+Pt(I?.wheelchairSpaceType)+en(I?.commercial),ne=this.paidPrice(b.categoryKey,b.tierId,b.unitPrice,b.label)*(b.quantity??1);h.push({key:E,fresh:!this.lastTrayKeys.has(E),held:!0,seatIds:[],heldLabels:b.labels,removeAria:O("picker.removeHeldTicketLabel",{label:$i(b,t)}),locateId:I?.id??null,section:H?.sectionLabel??"",rowLabel:H&&U(H)||"",seatLabel:H?.seatNumber??b.label,categoryLabel:`${S?.label??b.categoryKey}${L?` \xB7 ${L}`:""}`,categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(b.categoryKey)??S?.color??"",identityHtml:p(I?.id??null,b.label,b.objectType,b.quantity??1,b.objectId,A??void 0,`${S?.label??b.categoryKey}${L?` \xB7 ${L}`:""}`),stateHtml:`<span class="sl-ticket-state held" aria-label="${V}" title="${V}"><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:te,amount:ne,amountText:this.suppressPricing?"":this.money(ne),noteHtml:tn(I?.commercial),railHtml:this.performanceGroup?"":yn(O("picker.removeHeldTicketLabel",{label:$i(b,t)}),B?b.label:null),groupable:!te&&!!H?.sectionLabel&&!this.performanceGroup})}let g=this.seatViewEnabled();for(let b of e.filter(E=>!s.has(E.label))){let E=`seat:${b.id}`;c.add(E);let S=this.controller.doc?.categories.find(W=>W.key===b.categoryKey),L=b.tiers&&b.tiers.length&&!this.suppressPricing?`<select class="tier" data-tier="${u(b.id)}" aria-label="${u(O("picker.ticketTierFor",{label:b.label}))}">`+b.tiers.map(W=>`<option value="${u(W.id)}"${W.id===b.tierId?" selected":""}>${u(W.name)} \xB7 ${u(this.money(this.paidPrice(b.categoryKey,W.id,W.price,b.label)))}</option>`).join("")+"</select>":"",I=b.tiers?.find(W=>W.id===b.tierId)??b.tiers?.[0],A=I?.buyerMessage?.trim()||(I?.restriction==="companion"?this.tf("picker.companionRequiresWheelchair","Requires the adjacent wheelchair place"):""),H=this.controller.seatDetails(b.id),B=u(this.tf("picker.selected","Selected")),V=O("picker.removeSeatLabel",{label:b.label}),te=(b.objectType==="table"&&b.bookingMode==="variable"?`<button type="button" class="sl-table-edit" data-table-edit="${u(encodeURIComponent(b.label))}">${u(O("picker.guestsCountEdit",{count:b.quantity??1}))}</button>`:"")+Pt(b.wheelchairSpaceType)+en(b.commercial)+L,ne=this.paidPrice(b.categoryKey,b.tierId??null,b.price,b.label)*(b.quantity??1);h.push({key:E,fresh:!this.lastTrayKeys.has(E),held:!1,seatIds:[b.id],heldLabels:[],locateId:b.id,section:H?.sectionLabel??"",rowLabel:H&&U(H)||"",seatLabel:H?.seatNumber??b.label,categoryLabel:S?.label??b.categoryKey,identityHtml:p(b.id,b.label,b.objectType,b.quantity??1,b.objectId,b,S?.label??b.categoryKey),categoryColor:this.controller.getRenderer?.()?.categoryDisplayColor?.(b.categoryKey)??S?.color??"",stateHtml:`<span class="sl-ticket-state" aria-label="${B}" title="${B}"><svg viewBox="0 0 24 24"><path d="M5 12l4 4L19 6"/></svg></span>`,extrasHtml:te,amount:ne,amountText:this.suppressPricing?"":this.money(ne),removeAria:V,noteHtml:tn(b.commercial)+(A?`<small class="sl-tier-note">${u(A)}</small>`:""),railHtml:yn(V,g&&b.objectType!=="table"&&this.deliverableViewReference(this.controller.seatByLabel(b.label)??{})?b.label:null),groupable:!te&&!A&&!!H?.sectionLabel&&!this.performanceGroup})}h.length&&l.push(this.root?.dataset.layout==="narrow"?co(h,{money:b=>this.money(b),suppressPricing:this.suppressPricing}):h.map(lo).join("")),t.length&&l.push(ls(this,t,i)),!this.performanceGroup&&!this.salesClosed&&!this.hold&&!d&&!this.baReopen&&!this.bestAvailableBusy&&!this.bestAvailableConfirm&&l.push(`<button type="button" class="sl-ba-reopen" data-ba-reopen><span aria-hidden="true">\u2726</span>${u(this.tf("picker.findTogetherInstead","Find seats together instead"))}</button>`),this.els.tray.innerHTML=l.join("")+(this.salesClosed?"":this.lapse.noteHtml()),this.lastTrayKeys=c,po(this.els.tray),this.lapse.wire(this.els.tray),this.els.tray.querySelector("[data-pg-switch-mode]")?.addEventListener("click",()=>this.performanceGroup?.selectionModeSwitch?.activate());let m=this.performanceGroup?.selectNight;m&&kr(this.els.tray,b=>m(b)),this.els.tray.querySelectorAll("[data-ba]").forEach(b=>{b.addEventListener("click",()=>{this.baQty=Math.max(1,Math.min(this.maxTickets,this.baQty+Number(b.dataset.ba))),this.syncTray()})}),this.els.tray.querySelector("[data-ba-cat]")?.addEventListener("change",b=>{this.baCat=b.target.value}),this.els.tray.querySelector("[data-ba-zone]")?.addEventListener("change",b=>{this.baZone=b.target.value}),this.els.tray.querySelector("[data-ba-premium]")?.addEventListener("click",()=>{this.baPremium=!this.baPremium,this.syncTray()}),this.els.tray.querySelector(".sl-ba-go")?.addEventListener("click",()=>{if(this.pendingSelectionCount()>0){this.bestAvailableConfirm=!0,this.syncTray(),this.els.tray.querySelector("[data-ba-replace]")?.focus();return}this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelector("[data-ba-cancel]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-reopen]")?.addEventListener("click",()=>{this.baReopen=!0,this.syncTray(),this.els.tray.querySelector(".sl-ba-go")?.focus()}),this.els.tray.querySelector("[data-ba-close]")?.addEventListener("click",()=>{this.baReopen=!1,this.syncTray(),this.els.tray.querySelector("[data-ba-reopen]")?.focus()}),this.els.tray.querySelector("[data-ba-replace]")?.addEventListener("click",()=>{this.bestAvailableConfirm=!1,this.bestAvailable(this.baQty,this.baCat||void 0,{preferPremium:this.baPremium,zoneId:this.baZone||void 0})}),this.els.tray.querySelectorAll(".sl-chip .rm").forEach(b=>{b.addEventListener("click",()=>{let E=b.closest(".sl-chip");if(E.dataset.held){this.removeHeldLabels(decodeURIComponent(E.dataset.held).split(`
2759
+ `),E);return}let S=E.dataset.seat.split(" "),L=this.controller.getSelection().find(A=>A.id===S[0])?.label??this.tf("picker.seat","Seat"),I=()=>{this.controller.deselect(S),this.toast(O("picker.labelRemoved",{label:L}),"neutral",{label:this.tf("picker.undo","Undo"),onClick:()=>{let A=this.controller.select(S);this.toast(A.length?O("picker.labelRestored",{label:L}):O("picker.labelNoLongerAvailable",{label:L}),A.length?"success":"warning")}})};if(this.reducedMotion()){I();return}E.classList.remove("sl-enter"),E.classList.add("sl-leave","sl-mo-collapse"),this.scheduleMotion(I,G.collapse)})}),this.els.tray.querySelectorAll("[data-table-edit]").forEach(b=>{b.addEventListener("click",E=>{E.stopPropagation();let S=decodeURIComponent(b.dataset.tableEdit??""),L=this.controller.tableSelection(S);if(!L)return;let I=i.find(A=>A.label===S&&A.objectType==="table");this.showTableDialog({...L,quantity:I?.quantity??L.quantity},!!I,b)})}),this.els.tray.querySelectorAll(".sl-chip .tier").forEach(b=>{b.addEventListener("change",()=>this.controller.setSeatTier(b.dataset.tier,b.value||null))}),this.els.tray.querySelectorAll(".sl-chip .view[data-view-label]").forEach(b=>{b.addEventListener("click",()=>{let E=this.controller.seatByLabel(b.dataset.viewLabel);E&&this.openSeatView(E)})}),this.els.tray.querySelectorAll(".sl-chip[data-locate]").forEach(b=>{let E=()=>this.controller.flashSeat(b.dataset.locate,this.cssVar("--sl-accent")||"#f4b740");b.addEventListener("mouseenter",E),b.addEventListener("focusin",E)}),cs(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(b=>{b.disabled=!0});let y=this.pendingSelectionCount(),w=this.lastTrayCount,x=this.lastTrayTotal,P=xr(this.performanceGroup?.groupSelectionSummary?.(),this.performanceGroup?.selectionMode??"same_seat");if(this.els.count.textContent=P||(a?ot("picker.ticketsCount",a):this.tf("picker.noSeatsSelected","No seats selected")),this.els.total.textContent=a&&!this.suppressPricing?this.money(o):"",this.root?.setAttribute("data-has-selection",String(a>0)),this.root?.setAttribute("data-ba-active",String(this.bestAvailableConfirm||this.bestAvailableBusy||this.baReopen)),this.els.foot?.classList.toggle("empty",a===0),this.els.seatSummary&&(this.els.seatSummary.textContent=P||(a?ot("picker.seatsSelectedCount",a):"")),this.syncCta(a,y),this.hold){this.holdCopyPending=y>0;let b=so({secured:r||this.hold.seats?.length||0,pendingCount:y,expiresAt:this.holdExpiresAt,releasing:this.releasingHold});this.els.holdTitle&&(this.els.holdTitle.textContent=b.title),this.els.holdCopy&&(this.els.holdCopy.textContent=b.copy);let E=this.els.holdChange;E&&(E.disabled=this.releasingHold,E.textContent=b.change)}a!==w&&this.animateOnce(this.els.count,"sl-value-pop",380),o!==x&&this.animateOnce(this.els.total,"sl-value-pop",380),w===0&&a>0&&(this.animateOnce(this.els.cta,"sl-ready",520),this.sideCollapsed&&this.root?.dataset.layout!=="narrow"&&this.setPanelCollapsed(!1)),this.renderPeek(a,o,y,a>w),this.lastTrayCount=a,this.lastTrayTotal=o,this.opts.onSelectionChange?.(e),this.emitSelectionValidity(a,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(){Ds(this.confirmEl?.querySelector(".sl-confirm-row")),this.els.tray?.querySelectorAll(".sl-chip-pos").forEach(Bs),this.els.tray?.querySelectorAll(".sl-ba-go,.sl-ba-reopen").forEach(Qi),this.els.peek?.querySelectorAll(".sl-sheet-go").forEach(Qi)}emitSelectionValidity(e,t){let i=this.controller.getSelectionValidity(e);i&&(i.seats=t,this.opts.onSelectionValidityChange?.(i),i.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(t):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(i),this.lastSelectionValidity=i.isValid)}renderPeek(e,t,i,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=to({count:e,total:t,pendingCount:i,ctaPhase:this.ctaPhase,hasHold:!!this.hold,salesClosed:this.salesClosed,suppressPricing:this.suppressPricing,fromPrice:r.length?Math.min(...r):null,addMore:this.root?.dataset.layout==="narrow"?null:eo({salesClosed:this.salesClosed,hasHold:!!this.hold,ctaPhase:this.ctaPhase,formOpen:this.baReopen||this.bestAvailableBusy||this.bestAvailableConfirm,room:this.maxTickets-this.totalTicketCount(),wanted:this.baQty}),offerFind:!this.performanceGroup&&!this.salesClosed&&!this.hold,holdTime:this.hold&&this.holdTimer?Ot(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 i=e.filter(o=>o&&!this.releasingLabels.has(o));if(!i.length)return!1;let s=i[0];i.forEach(o=>this.releasingLabels.add(o)),t?.setAttribute("aria-busy","true");let r=t?.querySelector(".rm");r&&(r.disabled=!0);try{let o=this.handedOff;if(!await this.controller.releaseLabels(i))return this.toast(O("picker.couldNotRemoveLabel",{label:s}),"error"),!1;ss(this.gaQty,this.hold?.items??[],i);let l=this.controller.currentHold();return this.hold=l?{holdId:l.holdId,expiresAt:l.expiresAt,seats:l.seats,items:l.items}:null,this.handedOff=!!this.hold&&o,this.bookedShown=!1,this.ctaPhase="idle",this.hold?this.startHoldTimer(this.hold.expiresAt):(this.stopHoldTimer(),this.forgetHold()),this.syncTray(),this.emitHoldChange(),this.toast(O("picker.labelRemovedFromHold",{label:s}),"success"),!0}finally{i.forEach(o=>this.releasingLabels.delete(o)),t?.removeAttribute("aria-busy"),r?.isConnected&&(r.disabled=!1)}}async handleChangeSeats(){if(!this.hold||this.releasingHold)return;this.releasingHold=!0;let e=this.els.holdChange;e&&(e.disabled=!0,e.textContent=this.tf("picker.releasingEllipsis","Releasing\u2026"));try{await this.release(),this.hold||this.toast(this.tf("picker.heldTicketsReleased","Held tickets released. Choose your new seats."),"success")}finally{this.releasingHold=!1,e?.isConnected&&(e.disabled=!1,e.textContent=this.tf("picker.change","Change"))}}async handleCta(){if(this.salesClosed)return;let e=this.controller.getSelectionValidity(this.totalTicketCount());if(e&&!e.isValid){this.toast(vn(e,(i,s)=>this.tf(i,s)),"warning");return}if(this.totalTicketCount()>this.maxTickets){this.toast(O("picker.removeTicketsUntilOrFewer",{count:this.maxTickets}),"warning");return}let t=this.committedSelection();if(this.hold&&!t.some(i=>!(this.hold.items??[]).some(s=>s.label===i.label))){let i=this.hold.seats??t;this.handedOff=!0,this.holdConflicted=!1,await this.runCheckoutHandoff(this.hold,i);return}this.holdingLabels=new Set(t.map(i=>i.label)),this.setCtaPhase("holding");try{let i=null,s=Jn(this.gaQty),r=this.committedSelection();if(r.length){let o=await this.controller.hold(void 0,this.opts.holdTtlMs);i=o?{holdId:o.holdId,expiresAt:o.expiresAt,seats:o.seats,items:o.items}:null}for(let{areaId:o,tierId:a,qty:l}of s){let c=await this.controller.holdGA(o,l,{tierId:a,ttlMs:this.opts.holdTtlMs});i=c?{holdId:c.holdId,expiresAt:c.expiresAt,seats:c.seats,items:c.items}:i}if(!i){this.raiseHoldConflict(this.tf("picker.seatsJustTaken","One or more seats were just taken. Please pick again.")),this.setCtaPhase("idle"),this.syncTray();return}this.hold=i,this.holdConflicted=!1,this.handedOff=!this.performanceGroup,this.startHoldTimer(i.expiresAt),this.flashHeldSeats(i),this.emitHoldChange(),this.performanceGroup?this.setCtaPhase("idle"):await this.runCheckoutHandoff(i,i.seats??r)}catch(i){this.opts.onError?.(i);let s=i,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?O("picker.labelsNoLongerAvailable.one",{labels:r.join(", ")}):O("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){this.stopHoldTimer(),this.holdExpiresAt=e,this.hold&&this.rememberHold(this.hold);let t=this.els.hold;t.innerHTML=`<span class="sl-hold-dot" aria-hidden="true"></span><span>${this.tf("picker.held","Held")}</span><span class="sl-hold-time" data-ref="holdTime"></span>`;let i=t.querySelector('[data-ref="holdTime"]');this.els.holdNote?.classList.add("on");let s=()=>{let r=Math.max(0,this.holdExpiresAt-Date.now());i&&(i.textContent=Ot(r));let o=this.els.peek?.querySelector(".sl-peek-time");o&&(o.textContent=Ot(r)),!this.holdCopyPending&&this.els.holdCopy&&this.root?.dataset.layout!=="narrow"&&(this.els.holdCopy.textContent=wn(this.holdExpiresAt)),t.classList.add("on"),t.classList.toggle("is-expiring",r>0&&r<=xo),this.setExtendPrompt(r>0&&r<=xo,r),(r<=0||!this.controller.currentHold())&&this.stopHoldTimer()};this.holdTimer=setInterval(s,500),s()}stopHoldTimer(){this.holdTimer&&clearInterval(this.holdTimer),this.holdTimer=null,this.els.hold?.classList.remove("on","is-expiring"),this.els.holdNote?.classList.remove("on"),this.root&&delete this.root.dataset.peekClock,this.setExtendPrompt(!1,0)}setExtendPrompt(e,t){if(this.extendEl)if(e&&this.controller.currentHold()&&!this.bookedShown){let i=Math.ceil(t/1e3),s=Math.floor(i/60),r=String(i%60).padStart(2,"0");this.els.extendTxt.innerHTML=O("picker.seatsHeldForNeedMoreTime",{time:`${s}:${r}`}),this.extendEl.classList.add("on")}else this.extendEl.classList.remove("on")}async handleExtend(){let e=this.els.extendBtn;e.disabled=!0;let t=e.textContent;e.textContent=this.tf("picker.addingEllipsis","Adding\u2026");try{let i=await this.controller.extendHold(this.opts.holdTtlMs);i?(this.hold={holdId:i.holdId,expiresAt:i.expiresAt,seats:i.seats,items:i.items},this.holdExpiresAt=i.expiresAt,this.extendEl?.classList.remove("on"),this.rememberHold(this.hold),this.emitHoldChange(),this.toast(this.tf("picker.moreTimeAdded","More time added \u2014 your seats are still held."),"success")):this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.couldNotAddMoreTime","Couldn't add more time \u2014 please head to checkout now."),"warning")}finally{e.disabled=!1,e.textContent=t}}detectBooked(){this.bookedShown||!this.handedOff||!this.hold||this.controller.currentHold()===null&&(this.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),i=this.performanceGroup?.groupSelectionSummary?.();this.els.bookedSub&&(this.els.bookedSub.innerHTML=i?.seats?`<span class="sl-booked-seats">${ot("picker.group.ticketsConfirmedAcross",i.seats,{performances:i.performances})}</span>`:`<span class="sl-booked-seats">${ot("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>${R(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 i=this.buildHandoff(e),s=null;try{s=await(this.paymentOptions??=this.pubApi.paymentOptions(this.opts.event))}catch(o){this.opts.onError?.(o)}if(this.destroyed)return;let r=s?.providers?.[0];if(!r){let o=ys(s?.reason),a=!!this.opts.onCheckoutUnavailable||!!this.opts.onCheckout;this.opts.onCheckoutUnavailable?.({reason:o,handoff:i}),this.opts.onCheckout?.(e,t,i),a||this.openCheckoutPanel({kind:"unavailable",reason:o,seatCount:i.lineItems.reduce((l,c)=>l+c.quantity,0)});return}await this.openCheckoutPanel({kind:"pay",provider:r,order:{holdId:i.holdId,expiresAt:i.expiresAt,currency:i.currency,total:i.total,labels:i.lineItems.map(o=>o.displayLabel??o.label)}})}async openCheckoutPanel(e){let t;try{({mountCheckout:t}=await vs())}catch(i){this.opts.onError?.(i),this.toast(this.tf("picker.checkoutCouldNotBeOpened","Checkout could not be opened. Your seats are still held \u2014 please try again."),"error"),this.setCtaPhase("idle");return}this.destroyed||!this.root||(this.closeCheckoutPanel(),this.checkoutPanel=t({root:this.root,state:e,eventKey:this.opts.event,formatMoney:i=>this.money(i),startSession:i=>this.pubApi.startCheckout(this.opts.event,{...i,...this.opts.returnUrl?{returnUrl:this.opts.returnUrl}:{}}),orderStatus:i=>this.pubApi.orderStatus(i),onCancel:()=>{this.checkoutPanel=null,this.hold||this.setCtaPhase("idle")},onConfirmed:i=>{this.opts.onOrderConfirmed?.(i),this.controller.refresh()},onError:i=>this.opts.onError?.(i)}))}closeCheckoutPanel(){this.checkoutPanel?.destroy(),this.checkoutPanel=null}buildHandoff(e){let i=(e.items??[]).map(o=>{let a=this.controller.lineItemDisplay(o);return{label:o.label,...a.displayLabel?{displayLabel:a.displayLabel}:{},...a.displayType?{displayType:a.displayType}:{},objectId:o.objectId,objectType:o.objectType,categoryKey:o.categoryKey,tierId:o.tierId,unitPrice:this.paidPrice(o.categoryKey,o.tierId,o.unitPrice,o.label),currency:o.currency??this.currency,quantity:o.quantity??1}}),s=i[0]?.currency??this.currency,r=i.reduce((o,a)=>o+a.unitPrice*a.quantity,0);return{holdId:e.holdId,expiresAt:e.expiresAt,currency:s,lineItems:i,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",i){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",!!i),i){let o=document.createElement("button");o.type="button",o.className="sl-toast-action",o.textContent=i.label,o.addEventListener("click",i.onClick,{once:!0}),s.appendChild(o)}s.dataset.tone=t,s.classList.add("on","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"),i=this.confirmEl;if(!t||!i?.isConnected){e.style.removeProperty("bottom");return}let s=this.els.map.clientHeight;if(s<=0)return;let r=i.getBoundingClientRect(),o=r.height||i.offsetHeight||Oc,a=r.height?r.top-this.els.map.getBoundingClientRect().top:s-dn-o,l=Math.round(s-a+Mc);if(l+Hc>s){e.style.removeProperty("bottom");return}e.style.bottom=`${l}px`}liftToastOverConfirmSoon(){this.liftToastOverConfirm(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{this.destroyed||this.liftToastOverConfirm()})}dismissSkeleton(){$r({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},i=this.tipPinned?Er(this.tipPos,e,t):null,s=i??Cr(this.tipPos,e.width,e.height,t);this.tipEl.style.left=`${s.left}px`,this.tipEl.style.top=`${s.top}px`,i?this.tipEl.dataset.placement=i.placement:delete this.tipEl.dataset.placement}nightStripFor(e,t){let i=this.performanceGroup,s=on(e.mark,i?.nights?.()),r=s?.states.filter(o=>o.free).length??0;return hr(s,{locale:this.opts.locale,switchLabel:i?.selectionModeSwitch?.label??null,selectPartialLabel:i?.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.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 i=this.unavailableReason(e),s=e.mark?.kind==="partial"&&(e.interaction==="press"||this.lastPointerType!=="mouse"||t)||!!i&&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=Tr(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:$e(e),reason:i,extra:r+(s?`<button type="button" class="sl-tip-close" data-pg-tip-close aria-label="${R(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()}),Lr(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 i={};for(let[s,r]of Object.entries(e())){let o=this.controller.idForLabel(s);o&&(i[o]=r)}Object.keys(i).length&&t.setSeatMarks(i)}getSelection(){return this.committedSelection()}selectObjects(e){return this.controller.select(e)}selectObjectsWithoutConfirmation(e){let t=new Set(e),i=this.controller.getSelection().filter(s=>t.has(s.id)||t.has(s.label));if(i.length===t.size)return i;this.suppressConfirmationSeatId=e[0]??null;try{return this.controller.select(e)}finally{this.suppressConfirmationSeatId=null}}deselectObjects(e){this.controller.deselect(e)}clearSelection(){this.dismissConfirm(),this.dismissTableDialog(),this.controller.clearSelection()}categoryLegendColor(){let e=(this.controller.doc?.categories??[]).find(t=>!t.notForSale);return(e?this.controller.getRenderer()?.categoryDisplayColor?.(e.key):null)||e?.color||"#2563eb"}async refreshAvailability(){await this.controller.refresh(),this.syncSeatMarks(),this.syncTray()}refreshPerformanceGroupComposition(){this.syncTray()}async adoptRestoredHold(e){!e||this.hold||await this.resumeHoldFromServer(e,!1)}selectCategories(e){return this.controller.selectCategories(e)}deselectCategories(e){this.controller.deselectCategories(e)}setSelectableObjects(e){this.controller.setSelectableObjects(e)}setMaxSelection(e){this.maxTickets=Math.max(this.exactTickets??1,Math.floor(e)),this.controller.setMaxSelection(this.maxTickets),this.updateSelectionCapacity(),this.syncTray()}getSelectionValidity(){let e=this.controller.getSelectionValidity(this.totalTicketCount());return e&&(e.seats=this.committedSelection()),e}setMapTheme(e){this.destroyed||(this.opts.theme={...this.opts.theme??{},map:e??void 0},this.controller.setMapTheme(e),this.applyMapChromeTokens(),this.minimap?.refreshMinimap())}applyThemeTokens(e){let t=$t(this.themeMode),i=ft(this.controller.doc?.theme,this.opts.theme,t);for(let[s,r]of Object.entries(i))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=Vt(()=>{this.destroyed||this.repaintForThemeMode()}))}repaintForThemeMode(){this.root&&(this.applyThemeTokens(this.root),this.controller.setMapTheme(Ue(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:$t(e)??null}))}getThemeMode(){return this.themeMode}applyMapChromeTokens(){let e=this.els.map?.parentElement;if(!e||!this.root)return;let t=$t(this.themeMode),i=ft(this.controller.doc?.theme,this.opts.theme,t),s=Ue(this.opts.theme,this.themeMode)?.background??this.controller.doc?.theme?.background??void 0,r=Bn(i,s);for(let o of["--sl-bg","--sl-surface","--sl-text","--sl-muted","--sl-line","--sl-accent-text"])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),i=JSON.stringify(e??null);t!==i&&(this.opts.pricing=e,!(this.destroyed||!this.els.prices)&&(this.els.pricesSec?.querySelector(".sl-price-select")?.remove(),this.buildPriceFilter(),this.syncPrices(),this.syncTray(),this.lastSection&&this.showSectionCard(this.lastSection)))}buildLanguageSwitcher(e){this.langSel=qn(e,{languages:this.opts.languages,label:this.tf("picker.preferredTicketType","Language"),onChange:t=>{this.setLocale(t)}})}async setLocale(e){let t=yo(),i=this.localeGeneration+=1,s=await Tc(e);return this.opts.messages&&Cc(this.opts.messages),s===t||this.applyActiveLocale(s,i),s}applyActiveLocale(e,t){t===this.localeGeneration&&this.root&&(Un(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(),Ic(e))}setViewMode(e){this.controller.setViewMode(this.normalizeInitialView(e)),this.syncProjection(),this.dismissConfirm()}getViewMode(){return this.controller.getViewMode()}normalizeInitialView(e){return e==="perspective"?(this.perspectiveWarned||(this.perspectiveWarned=!0,console.warn("[seatlayer] initialView:'perspective' (2.5D) is deprecated for the buyer picker and was coerced to 'flat'. Use the Map | 3D control for the immersive view.")),"flat"):e??"flat"}getBuyerView(){return this.buyerView}setBuyerView(e,t){if(e==="map"){this.exit3d();return}let i=t?.flyToSeatId;if(this.buyerView==="venue3d"){i?(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:i}),this.view3dHandle?.flyToSeat(i)):t?.resetView&&this.view3dHandle?.focusOverview();return}this.enter3d(i)}seatState3dFor(e){switch(this.controller.getStatus(e.id)){case"held":return"held";case"booked":return"sold";case"not_for_sale":return"dimmed";default:break}return this.priceBandKeys!=null&&!this.priceBandKeys.has(e.categoryKey)||this.controller.accessibilityFilterDims?.(e)||this.limitedViewFilter&&(e.commercial?.restrictedView||e.commercial?.obstructedView)?"dimmed":"available"}pushAvailabilityTo3d(){if(!this.view3dHandle)return;let e=this.allSeats().map(t=>({seatId:t.id,state:this.seatState3dFor(t)}));this.view3dHandle.setAvailability(e)}syncSelectionTo3d(){this.view3dHandle&&this.view3dHandle.setSelection(this.controller.getSelection().map(e=>e.id))}async seatViewFor3d(e){let t=this.allSeats().find(i=>i.id===e);if(!t)return null;if(t.viewUrl)try{let i=t.viewMeta?.previewUrl,s=!!i&&i!==t.viewUrl,r=s?await this.buyerAssetUrls.resolve(i):null,o=s?t.viewUrl:await this.buyerAssetUrls.resolve(t.viewUrl);return!o||s&&!r?null:{url:o,...r?{previewUrl:r}:{},...s?{resolveUrl:a=>this.buyerAssetUrls.resolve(a)}:{},...t.viewMeta?.sourceWidth!==void 0?{sourceWidth:t.viewMeta.sourceWidth}:{},...t.viewMeta?.sourceHeight!==void 0?{sourceHeight:t.viewMeta.sourceHeight}:{},...t.viewMeta?.previewWidth!==void 0?{previewWidth:t.viewMeta.previewWidth}:{},...t.viewMeta?.previewHeight!==void 0?{previewHeight:t.viewMeta.previewHeight}:{},...t.viewMeta?.variants?.length?{variants:t.viewMeta.variants}:{},...t.viewMeta?.initialBearingDeg!==void 0?{initialBearingDeg:t.viewMeta.initialBearingDeg}:{},...t.viewMeta?.initialPitchDeg!==void 0?{initialPitchDeg:t.viewMeta.initialPitchDeg}:{},...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}}catch(i){return this.opts.onError?.(i),null}return{url:"",generated:!0,mediaKind:"model",coverage:"exact-seat",sourceLabel:this.tf("picker.chartDerivedModel","Chart-derived model")}}emitAnalytics(e,t){try{this.opts.onAnalytics?.(e,{...t,surface:"buyer"})}catch{}}emit3dAnalytics(e,t){this.emitAnalytics(e,t)}onView3dSeatPick(e){if(this.salesClosed){this.toast(this.tf("picker.salesClosedToast","Sales are closed for this event."),"warning"),this.syncSelectionTo3d();return}let t=this.allSeats().find(a=>a.id===e);if(!t)return;let i=this.controller.tableSelection(e);if(this.committedSelection().some(a=>i?a.label===i.label:a.id===e)){this.controller.deselect([e]),this.dismissConfirm(),this.syncSelectionTo3d();return}let r=this.controller.getStatus(t.id);if(r==="held"||r==="booked"||r==="not_for_sale"){this.showUnavailable3dSeat(t,this.seatState3dFor(t),r),this.syncSelectionTo3d();return}if(this.dismissUnavailable3dSeat(),!this.controller.select([e]).length){this.syncSelectionTo3d(),this.dismissConfirm();return}if(this.opts.onBuyerViewChange?.({view:"venue3d",seatId:e}),this.flashPickedSeat(e),i){this.showTableDialog(i,!1),this.syncSelectionTo3d();return}this.opts.confirmSelection!==!1?this.showConfirm(t):this.syncTray(),this.syncSelectionTo3d()}seatViewCaption(e){let t=this.allSeats().find(i=>i.id===e);return Br(this.controller.seatDetails(e),t?.displayLabel??t?.label??e,this.tf("picker.viewFromYourSeat","view from your seat"),{narrow:this.root?.dataset.layout==="narrow",shortTail:this.tf("picker.fromYourSeat","from your seat")})}showUnavailable3dSeat(e,t,i){let s=this.view3dEl;if(!s)return;let r=this.controller.seatDetails(e.id),o=r?.displayLabel??e.displayLabel??e.label,a=U(r);Qr(s,{status:i,visualState:t,location:[r?.sectionLabel,a?O("picker.rowLabel",{label:a}):null,o].filter(Boolean).join(" \xB7 ")||o,tf:(l,c)=>this.tf(l,c)}),this.announceSeat(e)}dismissUnavailable3dSeat(){bn(this.view3dEl)}saveView3dComparisonSeat(e){if(this.buyerView!=="venue3d")return;let t=this.view3dCompareSeatIds;t.includes(e.id)||(this.view3dCompareSeatIds=t.length===0?[e.id]:[t[0],e.id]),this.confirmSeat?.id===e.id&&(this.controller.deselect([e.id]),this.dismissConfirm(),this.syncSelectionTo3d(),this.syncTray()),this.view3dCompareChip.sync(),this.emit3dAnalytics("3d_comparison_saved",{seatId:e.id,count:this.view3dCompareSeatIds.length}),this.view3dCompareSeatIds.length>1?this.openView3dComparison():this.toast(this.tf("picker.chooseAnotherToCompare","Seat saved. Choose another seat to compare."),"success")}clearView3dComparison(){this.closeView3dComparison(!1),this.view3dCompareSeatIds=[],this.view3dCompareChip.remove(),this.emit3dAnalytics("3d_comparison_cleared")}view3dComparisonSnapshot(e){let t=this.allSeats().find(h=>h.id===e);if(!t)return null;let i=this.controller.seatDetails(t.id),s=this.controller.doc?.categories.find(h=>h.key===t.categoryKey),r=i?.price??(s?.tiers?.length?s.tiers[0].price:s?.price),o=r!=null?this.paidPrice(t.categoryKey,i?.tierId??s?.tiers?.[0]?.id??null,r,t.label):void 0,a=this.controller.getStatus(t.id),l=a==="held"?this.tf("picker.temporarilyHeld","Temporarily held"):a==="booked"?this.tf("picker.sold","Sold"):a==="not_for_sale"?this.tf("picker.notForSale","Not for sale"):this.tf("picker.available","Available"),c=t.viewUrl?wo({url:t.viewUrl,...t.viewMeta?.coverage?{coverage:t.viewMeta.coverage}:{},...t.viewMeta?.capturedAt?{capturedAt:t.viewMeta.capturedAt}:{},...t.viewMeta?.sourceLabel?{sourceLabel:t.viewMeta.sourceLabel}:{}}):this.tf("picker.chartDerivedSeatEye","Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed"),d=Se(t.commercial)||this.tf("picker.noAuthoredRestriction","No organizer-authored restriction"),p=i?.wheelchairSpaceType?`${rt(i.wheelchairSpaceType)} \xB7 metadata, not access certification`:this.tf("picker.noAccessibilityMetadata","No accessibility metadata supplied"),u=Ac(t.confidenceEvidence);return{seat:t,label:i?.displayLabel??t.displayLabel??t.label,section:i?.sectionLabel??t.sectionId??"\u2014",row:U(i)??i?.rowLabel??"\u2014",category:i?.categoryLabel??s?.label??t.categoryKey,price:this.suppressPricing||o==null?"":this.money(o),availability:l,selectable:a==null||a==="free",viewSource:c,limited:d,accessibility:p,confidence:u}}openSeatConfidencePassport(e,t=null){gn(this,e,t)}closeSeatConfidencePassport(e=!0){Ht(this,e)}openView3dComparison(){Yr(this)}closeView3dComparison(e=!0){Ve(this,e)}async enter3d(e){if(this.view3dEl||!this.canOffer3d()||!this.els.map)return;let t=this.controller.doc;if(!t)return;this.buyerView="venue3d",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"venue3d",...e?{seatId:e}:{}}),this.root?.setAttribute("data-view3d","on"),this.dismissConfirm(),this.syncProjection(),this.syncTray();let i=document.createElement("div");i.className="sl-view3d sl-mo-zoom",i.setAttribute("role","group"),i.setAttribute("aria-label",this.tf("picker.interactive3dVenueView","Interactive 3D venue view"));let s=document.createElement("button");s.type="button",s.className="sl-view3d-back",s.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg><span>${this.tf("picker.backToMap","Back to map")}</span>`;let r=s.querySelector("span"),o=c=>{this.view3dTargetSeatId=c;let d=!!c;i.classList.toggle("is-seat-focused",d),this.root&&(this.root.dataset.view3dSeat=d?"on":"off");let p=d?this.tf("picker.backToVenue","Back to venue"):this.tf("picker.backToMap","Back to map");r&&(r.textContent=p),s.setAttribute("aria-label",p)};if(s.addEventListener("click",()=>{if(this.view3dTargetSeatId&&this.view3dHandle){this.view3dHandle.focusOverview();return}this.exit3d()}),this.regions["top-left"]?.prepend(s),this.view3dBack=s,this.publish3dTopInset(),Ir(this.root)){let c=document.createElement("button");c.type="button",c.className="sl-view3d-fs",c.textContent="\u26F6",c.setAttribute("aria-label",this.tf("picker.fullScreen","Full screen")),c.setAttribute("aria-pressed",String(!!document.fullscreenElement||this.fsFallback||this.framedFs)),c.addEventListener("click",()=>this.toggleFullscreen()),i.appendChild(c)}let a=document.createElement("div");a.className="sl-view3d-loading",a.setAttribute("role","status"),a.setAttribute("aria-live","polite"),a.textContent=this.tf("picker.loading3d","Building the 3D venue\u2026"),i.appendChild(a),this.els.map.appendChild(i),this.view3dEl=i,this.view3dCompareChip.sync(),requestAnimationFrame(()=>{i.style.opacity="1"});let l=++this.view3dGen;try{let c=this.allSeats(),[d,p]=await Promise.all([Tt(),this.controller.loadEventConfiguration()]),u=p?await ei(p,x=>this.buyerAssetUrls.resolve(x)):null,h=t.theme?.venue3d?.shellAssetUrl,g=await ti(h,x=>this.buyerAssetUrls.resolve(x));if(l!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let m={doc:t,seats:c,...u?{eventConfigurationId:u.id,eventConfiguration:u}:{},...g?{registeredShellGlb:g}:{}};a.textContent=this.tf("picker.building3d","Building venue geometry\u2026");let y=await d.prepareVenue3D(m);if(l!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;let w=d.mountVenue3D(i,{...m,prepared:y},{portraitOverviewCrop:!0,arriveAtSeatEye:!0,lookAroundHint:it(),seatViewActionLabel:x=>this.allSeats().find(P=>P.id===x)?.viewUrl?this.tf("picker.openAuthored360","Open venue 360\xB0"):this.tf("picker.lookAroundLive3d","Look around in live 3D"),seatViewCaption:x=>this.seatViewCaption(x),onSeatViewStopChange:x=>this.view3dSeatViewChrome?.onStopChange(x),onSeatPick:x=>this.onView3dSeatPick(x),onSeatInspect:x=>this.onView3dSeatPick(x),onSectionFocusChange:x=>{let P=i.querySelector('select[data-locator="section"]'),b=x??"";!P||P.value===b||(P.value=b,P.dispatchEvent(new Event("change")))},onViewTargetChange:x=>{i.querySelector(".sl-view3d-nav")?.classList.toggle("is-seat-focused",!!x),o(x),this.opts.onBuyerViewChange?.({view:"venue3d",...x?{seatId:x}:{}})},...this.seatViewEnabled()?{getSeatView:x=>new Promise((P,b)=>{let E=()=>{this.seatViewFor3d(x).then(L=>{L?P(L):b(new Error("seat_view_unavailable"))})},S=globalThis.requestIdleCallback;typeof S=="function"?S(E,{timeout:1500}):setTimeout(E,50)})}:{},onAnalytics:(x,P)=>this.emit3dAnalytics(x,P)});this.view3dHandle=w,this.view3dSeatViewChrome=Dr(i,{handle:()=>this.view3dHandle}),requestAnimationFrame(()=>a.remove()),this.pushAvailabilityTo3d(),this.syncSelectionTo3d(),this.view3dNav=Rr(this.regions["bottom-left"]??i,w),e&&w.flyToSeat(e)}catch(c){if(l!==this.view3dGen||this.buyerView!=="venue3d"||this.view3dEl!==i)return;this.opts.onError?.(c),this.toast(this.tf("picker.unavailable3d","3D could not start. The seat map is still available."),"warning"),this.exit3d()}}publish3dTopInset(){let e=this.regions["top-left"];if(!this.root||!e)return;let t=()=>{!this.root||this.root.dataset.view3d!=="on"||this.root.style.setProperty("--sl-3d-top-inset",`${Math.max(44,Math.ceil(e.offsetHeight))}px`)};t(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(t)}exit3d(){if(this.buyerView!=="venue3d"&&!this.view3dEl)return;this.view3dGen++,this.buyerView="map",this.view3dTargetSeatId=null,this.opts.onBuyerViewChange?.({view:"map"}),this.root?.removeAttribute("data-view3d"),this.closeSeatConfidencePassport(!1),this.closeView3dComparison(!1),this.view3dCompareChip.remove(),this.view3dSeatViewChrome?.dispose(),this.view3dSeatViewChrome=null,this.view3dBack?.remove(),this.view3dBack=null,this.view3dNav?.remove(),this.view3dNav=null,this.root?.removeAttribute("data-view3d-seat"),this.root?.style.removeProperty("--sl-3d-top-inset");try{this.view3dHandle?.dispose()}catch{}this.view3dHandle=null;let e=this.view3dEl;this.view3dEl=null,e&&(e.style.opacity="0",setTimeout(()=>e.remove(),320)),this.syncProjection(),this.syncTray();let t=this.view3dReturnSeat;this.view3dReturnSeat=null,t&&this.committedSelection().some(i=>i.id===t.id)&&this.opts.confirmSelection!==!1&&this.showConfirm(t)}getCurrentHold(){return this.hold}async resumeHold(e){return this.resumeHoldFromServer(e,!1)}async removeHeldTicket(e){return this.removeHeldLabels([e])}async bestAvailable(e,t,i={}){if(this.salesClosed||this.bestAvailableBusy)return null;e=Math.max(1,Math.min(this.maxTickets,Math.floor(e)));try{return await this.bestAvailableOrThrow(e,t,i)}catch(s){this.opts.onError?.(s);let r=s?.reason,o=r==="not_enough_together"?O("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,i={}){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,{...i,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(),i.preferPremium&&r.seats.length&&!r.seats.every(o=>o.commercial?.premium)&&this.toast(O("picker.premiumFallbackNote",{count:e}),"neutral"),this.hold):null}finally{this.bestAvailableBusy=!1,this.syncTray()}}async release(){let e=this.hold,t=this.controller.currentHold(),i=!0;if(t)i=await this.controller.release();else if(e){let s=[...new Set([...(e.items??[]).map(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),i=!1}}if(!i){this.toast(this.tf("picker.couldNotReleaseTickets","Couldn't release your tickets. Your hold is unchanged."),"error");return}this.hold=null,this.forgetHold(),this.handedOff=!1,this.bookedShown=!1,this.ctaPhase="idle",this.stopHoldTimer(),this.gaQty.clear(),this.syncTray(),this.emitHoldChange()}startRealtime(){if(!this.access?.configured||!this.pubApi||this.realtime)return;let e=this.opts.event;this.realtime=new ve({url:this.pubApi.subscribeUrl(e),mintTicket:()=>this.pubApi.subscribeTicket(e),onAccessUnavailable:t=>{this.opts.onAccessUnavailable?.(t),this.showAccessPanel(t)},sink:gt(this.controller,{flashOnLiveChange:!0,onStatusChange:()=>{this.syncPrices(),this.scheduleOfferRefresh(!0),this.detectBooked(),this.minimap?.refreshMinimap(),this.pushAvailabilityTo3d()},onSelectedObjectUnavailable:(t,i)=>{this.opts.onSelectedObjectUnavailable?.({labels:t,reason:i}),this.syncTray(),this.toast(i==="ineligible"?this.tf("picker.seatNoLongerYours","Some seats are no longer available to you. They have been removed from your order."):this.tf("picker.seatTaken","Someone else took a seat you had picked. It has been removed from your order."),"warning")}})}),this.realtime.start()}async refreshAccess(){return!this.access?.configured||!await this.access.refresh("manual")?!1:(this.dismissAccessPanel(),await this.controller.refresh(),this.realtime?this.realtime.restart():this.startRealtime(),!0)}showAccessPanel(e){if(this.destroyed||!this.root)return;this.dismissAccessPanel();let t=nr(e.reason,()=>this.refreshAccess());(this.root.querySelector(".sl-body")??this.root).appendChild(t),this.accessEl=t}dismissAccessPanel(){this.accessEl?.remove(),this.accessEl=null}destroy(){this.destroyed=!0,un(this),this.colorSchemeStop?.(),this.colorSchemeStop=null,this.realtime?.stop(),this.realtime=null,this.dismissAccessPanel(),this.access?.clear(),this.hold&&!this.handedOff&&this.controller.release(),this.closeConfirm(),this.dismissTableDialog(!1),we(this,!1),this.closeSeatView(),this.closeCheckoutPanel(),this.exit3d(),this.buyerAssetUrls.dispose(),this.stopHoldTimer(),this.detachAttention?.(),this.toastTimer&&clearTimeout(this.toastTimer),this.liveTimer&&clearTimeout(this.liveTimer),this.offerRefreshTimer&&clearTimeout(this.offerRefreshTimer),this.offerBoundaryTimer&&clearTimeout(this.offerBoundaryTimer),this.offerRefreshTimer=null,this.offerBoundaryTimer=null,this.offerVisibilityHandler&&(document.removeEventListener("visibilitychange",this.offerVisibilityHandler),this.offerVisibilityHandler=null);for(let e of this.motionTimers)clearTimeout(e);this.motionTimers.clear(),this.ro?.disconnect(),this.ro=null,this.framedFs&&this.setFramedFs(!1),this.escHandler&&document.removeEventListener("keydown",this.escHandler),this.fsChangeHandler&&document.removeEventListener("fullscreenchange",this.fsChangeHandler),this.fsEscHandler&&window.removeEventListener("keydown",this.fsEscHandler),this.controller.destroy(),this.projectionEl=null,this.root?.remove(),this.root=null,this.modalScrim&&(this.modalScrim.remove(),this.modalScrim=null,this.prevFocus?.isConnected&&this.prevFocus.focus({preventScroll:!0}),this.prevFocus=null)}};import{formatMoney as Uc,loadLocale as Kc,setStringOverrides as Wc,t as Yc}from"@seatlayer/core";var To="seatlayer-performance-group-picker-style";function Co(){if(document.getElementById(To))return;let n=document.createElement("style");n.id=To,n.textContent=`
2647
2760
  .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)}
2648
2761
  .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)}
2649
2762
  .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}
@@ -2703,7 +2816,7 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
2703
2816
  @media(min-width:900px){.sl-pg-legend-list{justify-content:flex-start}}
2704
2817
  .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}
2705
2818
  @media(max-width:640px){.sl-pg-head{padding:13px 14px}.sl-pg-head h2{font-size:18px}.sl-pg-inner{min-height:590px}}
2706
- `,document.head.appendChild(s)}var ac="https://api.seatlayer.io",lc=6e4,cc=2e3,dc=1e3,pc=36e5,hc=5e3,uc=5e3,mc=15e3,fc=12e4,gc=new Set(["preparing","commit_pending","abort_pending","expire_pending"]),q=class extends Error{constructor(){super("performance_group_destroyed"),this.name="PerformanceGroupDestroyedError"}};function bc(s){return new Promise(e=>setTimeout(e,s))}function us(s){let e=Number(s.headers.get("Retry-After")??"1");return Number.isFinite(e)?Math.max(50,Math.min(hc,e*1e3)):1e3}function ot(s,e){return`/pub/performance-groups/${encodeURIComponent(s)}/operations/${encodeURIComponent(e)}`}function Ht(s){return s.replace(/^pghop_/,"").replace(/-/g,"").slice(-8).toUpperCase()}var ms=class{constructor(e,t,i){this.api=e;this.sink=t;this.intervalMs=i;this.stopped=!0;this.timer=null;this.prior=new Map}start(){this.stopped&&(this.stopped=!1,this.tick())}stop(){this.stopped=!0,this.timer&&clearTimeout(this.timer),this.timer=null}async tick(){try{let e=await this.api.objects(this.api.groupKey);if(this.stopped)return;let t=new Map(Object.entries(e.seats)),n=[...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,n.length&&this.sink.applyStatuses(n),this.sink.onSections?.(e.hidden??[],e.closed??[])}catch(e){if(e instanceof q){this.stop();return}this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},yi=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??ac).replace(/\/+$/,""),this.access=t.access,this.fetcher=t.fetch??globalThis.fetch.bind(globalThis),this.recoveryTimeoutMs=t.recoveryTimeoutMs??lc,this.realtimePollMs=Math.max(500,t.realtimePollMs??cc),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(n=>this.adoptSession(n));let i=this.readOperationRecord();i&&this.storedIsUndecided(i)&&(this.pendingOperationId=i.operationId)}get pendingOperation(){return this.pendingOperationId}get holdBlocked(){return!!this.adoptFailure||!!this.pendingOperationId&&this.lastRecovery.kind!=="idle"}async descriptor(){let e=await this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/descriptor`);return this.descriptorCache=e.performanceGroup,this.includedEventKeys.size||(this.includedEventKeys=new Set(e.performanceGroup.performances.map(t=>t.eventKey))),e.performanceGroup.revision&&(this.knownRevision=e.performanceGroup.revision),this.activePerformanceKey??=e.performanceGroup.performances[0]?.eventKey??null,e.performanceGroup}async chart(e){this.chartRequest??=this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/chart`).catch(n=>{throw this.chartRequest=null,n});let[t,i]=await Promise.all([this.descriptorCache?Promise.resolve(this.descriptorCache):this.descriptor(),this.chartRequest]);return{doc:i,event:{key:t.key,name:t.name,salesClosed:t.state!=="active",venue:t.venue,startsAt:t.performances[0]?.startsAt??null,timezone:t.timezone,currency:t.currency,mode:t.mode,inventoryModelVersion:2}}}asset(e,t){return/^[a-zA-Z0-9._-]+$/.test(t)?this.blob(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/assets/${encodeURIComponent(t)}`):Promise.reject(new $(404,"not_found","not_found"))}async objects(e){let t=this.descriptorCache?.inclusionMode==="flexible_dates",i=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/objects`+(this.selectionMode==="per_performance"||t?"?view=per-performance":"");if(this.reuseObjectsCacheOnce&&this.objectsCache)this.reuseObjectsCacheOnce=!1;else{let o=await this.authorized(i,this.objectsCache?.revision?{headers:{"If-None-Match":`"${this.objectsCache.revision}"`}}:{});if(o.status!==304){if(!o.ok)return this.throwResponse(o);this.objectsCache=await this.responseJson(o)}}if(!this.objectsCache)throw new $(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 n=this.objectsCache;if(this.selectionMode==="same_seat"){let o=n.performances.filter(d=>this.includedEventKeys.has(d.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(d=>[d,o.every(u=>u.seats[d]==="free")?"free":"blocked"])),c=Object.fromEntries(a.flatMap(d=>{let u=o.filter(h=>h.seats[d]!=="free").map(h=>h.eventKey);return u.length>0&&u.length<o.length?[[d,u]]:[]})),p={seats:l,partial:c,hidden:[...new Set(o.flatMap(d=>d.hidden??[]))],closed:[...new Set(o.flatMap(d=>d.closed??[]))],revision:n.revision,state:n.state,salesClosed:o.some(d=>d.salesClosed)};return this.noteAvailability(n,p.salesClosed,p),p}let r=n.performances.find(o=>o.eventKey===this.activePerformanceKey);if(!r)throw new $(409,"group_performance_unavailable","group_performance_unavailable");return this.noteAvailability(n,n.salesClosed||n.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(i=>i.eventKey)??[]);if(!e.length||new Set(e).size!==e.length||e.some(i=>!t.has(i)))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(i=>({...i})))}allocationsForHold(e){return(this.allocationsByHold.get(e)??[]).map(t=>({eventKey:t.eventKey,items:t.items.map(i=>({...i}))}))}async hold(e,t,i,n){if(this.assertUsable(),n)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(p=>this.includedEventKeys.has(p.eventKey)).map(p=>({eventKey:p.eventKey,selections:this.selectionsByEvent.get(p.eventKey)??[]}));if(c.some(p=>p.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,...i?{ttlMs:i}:{}})})}catch(c){if(c instanceof q)throw c;if(c instanceof ae)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,us(l))}if(l.status===503){let c=await l.clone().json().catch(()=>null);if((c?.code??c?.error)==="performance_group_abort_pending"){let p=c?.operation?.operationId??a;return this.beginOperation(p),c?.operation&&this.emit(c.operation),this.recover(p,r,Date.now()+this.recoveryTimeoutMs,us(l))}}try{return await this.throwResponse(l,r)}catch(c){throw this.failOperation(a),c}}async release(e,t,i){this.assertUsable();let n=this.operationForHold(i),r=await this.json(`${ot(this.groupKey,n)}/release`,{method:"POST",body:"{}"});return this.operationByHold.delete(i),this.allocationsByHold.delete(i),this.clearOperationRecord(),r}async resume(e,t){this.assertUsable();let i=this.operationForHold(t),n=await this.json(ot(this.groupKey,i));return this.complete(n.operation)}async extend(e,t,i=12e4){this.assertUsable();let n=this.operationForHold(t),r=Math.max(dc,Math.min(pc,Math.round(i))),o=await this.json(`${ot(this.groupKey,n)}/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 ms(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:Ht(e.operationId)});let t;try{t=await this.authorized(ot(this.groupKey,e.operationId))}catch(r){return r instanceof q||this.recoveryFailed(e.operationId,"request_failed"),null}if(t.status===404)return this.failOperation(e.operationId),null;if(!t.ok)return this.recoveryFailed(e.operationId,"request_failed"),null;let i=await this.responseJson(t);this.emit(i.operation);let n=i.operation.state;return n==="committed"||n==="booked"?(this.emitRecovery({kind:"idle"}),this.complete(i.operation)):n==="aborted"||n==="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>=fc?mc:uc;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 n=await this.authorized(ot(this.groupKey,e));if(!n.ok)return this.scheduleSettlementPoll();t=(await this.responseJson(n)).operation}catch(n){return n instanceof q?this.stopSettlementWatch():this.scheduleSettlementPoll()}if(this.destroyed||this.settleOperationId!==e)return;let i=t.state!==this.settleState;if(this.settleState=t.state,i&&this.noteOperationState(e,t.state),this.settled(t.state)){this.stopSettlementWatch(),t.state!=="booked"&&this.clearOperationRecord(),this.emit(t);return}i&&this.emit(t),this.scheduleSettlementPoll()}destroy(){if(!this.destroyed){this.destroyed=!0,this.stopSettlementWatch(),this.access.onRenewed(void 0);try{this.aborter.abort()}catch{}}}operationRecordKey(){return`@seatlayer/performance-group-operation/v1/${encodeURIComponent(this.base)}/${encodeURIComponent(this.groupKey)}`}readOperationRecord(){try{let e=window.sessionStorage.getItem(this.operationRecordKey());if(!e)return null;let t=JSON.parse(e);return!t?.operationId||t.groupKey!==this.groupKey?null:t}catch{return null}}storedIsUndecided(e){return e.state==="undecided"||gc.has(e.state)}writeOperationRecord(e){try{window.sessionStorage.setItem(this.operationRecordKey(),JSON.stringify(e))}catch{}}clearOperationRecord(){try{window.sessionStorage.removeItem(this.operationRecordKey())}catch{}}beginOperation(e){this.pendingOperationId=e;let t=this.readOperationRecord();this.writeOperationRecord({operationId:e,groupKey:this.groupKey,state:"undecided",createdAt:t?.operationId===e?t.createdAt:Date.now()})}noteOperationState(e,t){let i=this.readOperationRecord();!i||i.operationId!==e||this.writeOperationRecord({...i,state:t})}failOperation(e){this.pendingOperationId=null,this.clearOperationRecord(),this.emitRecovery({kind:"idle"}),this.onOperationState?.({operationId:e,state:"aborted",decision:"abort"})}async adoptSession(e){if(this.destroyed)return;let t=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/session/adopt`;for(let n=0;n<2;n++){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 i=this.pendingOperationId??"";throw this.emitRecovery({kind:"failed",operationId:i,reference:i?Ht(i):"",reason:"session_adopt_failed",retryable:!1}),this.adoptFailure}async recover(e,t,i,n=100){let r=n,o=Date.now()+Math.min(8e3,Math.max(500,this.recoveryTimeoutMs/2)),a="unknown";for(;Date.now()<=i;){if(this.destroyed)throw new q;if(this.emitRecovery({kind:"pending",operationId:e,phase:a,longRunning:Date.now()>=o,reference:Ht(e)}),await bc(r),this.destroyed)throw new q;let l;try{l=await this.authorized(ot(this.groupKey,e))}catch(d){if(d instanceof q)throw d;if(d instanceof ae)throw this.recoveryFailed(e,"request_failed"),d;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 p=(await this.responseJson(l)).operation;if(a=p.state,this.noteOperationState(e,p.state),this.emit(p),p.state==="committed"||p.state==="booked")return this.emitRecovery({kind:"idle"}),this.complete(p);if(p.state==="aborted"||p.state==="expired")throw this.failOperation(e),new $(409,"conflict","conflict",t.map(d=>({label:d,status:"held"})));r=us(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:Ht(e),reason:t,retryable:!0})}emitRecovery(e){if(this.destroyed)return;let t=this.lastRecovery.kind===e.kind&&JSON.stringify(this.lastRecovery)===JSON.stringify(e);this.lastRecovery=e,t||this.onRecoveryState?.(e)}noteAvailability(e,t,i){if(this.destroyed||!this.onAvailability)return;let n=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=i?.partial??{},l=Object.values(i?.seats??{});this.onAvailability({partial:a,freeCount:l.filter(c=>c==="free").length,blockedCount:Object.keys(i?.seats??{}).filter(c=>i.seats[c]!=="free"&&!(c in a)).length,state:n,salesClosed:!!t||n!=="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 i=t.find(n=>n.eventKey===this.activePerformanceKey)?.items;return{holdId:e.hold.id,expiresAt:e.hold.expiresAt,items:i??e.hold.items??[]}}emit(e){this.destroyed||this.onOperationState?.({operationId:e.operationId,state:e.state,decision:e.decision})}operationForHold(e){let t=this.operationIdForHold(e);if(!t)throw new $(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 q;if(this.adoptFailure)throw this.adoptFailure}async authorized(e,t={},i=!1){if(this.destroyed)throw new q;if(this.adoptFailure)throw this.adoptFailure;let n={...t.headers};t.body!==void 0&&(n["Content-Type"]="application/json");let r=await this.access.authorization(i?"unauthorized":"initial");if(this.destroyed)throw new q;if(this.adoptFailure)throw this.adoptFailure;if(!r)throw new Error("performance_group_buyer_access_required");n.Authorization=r;let o=await this.fetcher(`${this.base}${e}`,{method:t.method??"GET",headers:n,body:t.body,credentials:"omit",signal:this.aborter.signal});if(!i&&(o.status===401||o.status===403||o.status===422)){let a=await o.clone().json().catch(()=>null);if(await this.access.handleFailure(o.status,a?.code??a?.error))return this.authorized(e,t,!0)}return o}async json(e,t={}){let i=await this.authorized(e,t);return i.ok?this.responseJson(i):this.throwResponse(i)}async blob(e){let t=await this.authorized(e);return t.ok?t.blob():this.throwResponse(t)}async responseJson(e){return e.json()}async throwResponse(e,t=[]){let n=await e.json().catch(()=>null)??{},r=n.code??n.error??`request_failed_${e.status}`;throw e.status===409&&!n.conflicts?.length&&t.length&&(n.conflicts=t.map(o=>({label:o,status:"held"}))),new $(e.status,n.error??r,r,n.conflicts)}};var kc="https://api.seatlayer.io";function lo(s){let e=typeof s=="string"?document.querySelector(s):s;if(!e)throw new Error("seatlayer: Performance Group picker container was not found");return e}var fs=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 pe({provider:e.buyerAccessTokenProvider,token:e.buyerAccessToken,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable}),this.api=new yi(e.performanceGroup,{apiBase:e.apiBase,access:this.access,selectionMode:e.selectionMode,partySize:e.selectionMode==="per_performance"?e.numberOfPlacesToSelect:void 0,onOperationState:t=>this.operationChanged(t),onRecoveryState:t=>this.recoveryChanged(t),onAvailability:t=>this.availabilityChanged(t)}),e.initialHoldId&&e.initialOperationId&&this.api.rememberOperation(e.initialHoldId,e.initialOperationId)}get mode(){return this.selectionModeValue}get selectionMode(){return this.selectionModeValue}get descriptor(){return this.descriptorValue}get currentHold(){return this.activeHandoff}async render(){if(this.rendered)return this;let e=performance.now();if(this.rendered=!0,ao(),await yc(this.options.locale),this.options.messages&&xc(this.options.messages),this.destroyed)return this;let t;try{t=await this.api.descriptor()}catch(i){throw ke({apiBase:this.options.apiBase??kc,event:this.options.performanceGroup,scope:"performance_group",surface:"performance_group_picker",outcome:"failure",stage:"group_descriptor",ms:performance.now()-e,load:He(this.options.performanceGroup),transport:"pubapi"}),i}return this.destroyed?this:(this.descriptorValue=t,this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(lo(this.options.container),t),this.announce(this.copy("picker.group.checkingAvailability")),await this.mountPicker(t),this.destroyed?this:(await this.restoreOperation(),this))}buildChrome(e,t){e.replaceChildren();let i=document.createElement("div");i.className="sl-pg-root",i.dataset.performanceGroup=t.key,i.dataset.selectionMode=this.mode;let n=document.createElement("div");n.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 p=document.createElement("summary");p.textContent=this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:t.performanceCount});let d=document.createElement("div");d.innerHTML=ps(this.performanceCards(t),this.copy(t.inclusionMode==="flexible_dates"?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.performanceCount})),c.append(p,d);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 m=this.mode==="per_performance"?this.performanceTabs(t):null,v=document.createElement("div");v.className="sl-pg-inner",v.id=this.panelId,v.setAttribute("aria-busy","false"),v.dataset.locked="false",this.mode==="per_performance"&&(v.setAttribute("role","tabpanel"),v.tabIndex=-1);let k=document.createElement("div");k.className="sl-pg-status",k.setAttribute("role","status"),k.setAttribute("aria-live","polite"),k.hidden=!0;let S=document.createElement("p"),L=document.createElement("button");L.type="button",L.hidden=!0,L.textContent=this.copy("picker.group.retry"),L.addEventListener("click",()=>{this.retryRecovery()}),k.append(S,L),v.appendChild(k);let b=document.createElement("div");b.className="sl-pg-live",b.setAttribute("role","status"),b.setAttribute("aria-live","polite"),i.append(n,r),m&&i.append(m),i.append(h,v,g,b),e.appendChild(i),this.root=i,this.progressHost=n,this.legendHost=h,this.paneHost=g,this.datesSummaryHost=p,this.datesCardsHost=d,this.innerHost=v,this.heldSummary=u,this.live=b,this.statusHost=k,this.statusCopy=S,this.statusAction=L,this.syncProgress(),this.syncLegend(),this.syncPane()}async mountPicker(e){let t=new ze(mi({container:this.innerHost,event:e.key,apiBase:this.options.apiBase,transport:this.api,hideEventDetails:!0,maxSelection:this.options.maxSelection,selectedObjects:this.options.selectedObjects,selectableObjects:this.options.selectableObjects,numberOfPlacesToSelect:this.options.numberOfPlacesToSelect,selectionValidators:this.options.selectionValidators,locale:this.options.locale,messages:this.options.messages,languages:this.options.languages,colorblindSafe:this.options.colorblindSafe,initialView:this.options.initialView,enable3D:this.options.enable3D,max3DSeats:this.options.max3DSeats,onBuyerViewChange:this.options.onBuyerViewChange,onAnalytics:(i,n)=>{try{this.options.onAnalytics?.(i,{...n,metricScope:"performance_group",performanceGroupKey:e.key,performanceCount:e.performanceCount,selectionMode:this.mode})}catch{}},hideBadge:this.options.hideBadge,theme:this.options.theme,holdTtlMs:this.options.holdTtlMs,initialHoldId:this.options.initialHoldId,restoreHold:this.options.restoreHold,confirmSelection:this.options.confirmSelection,seatView:this.options.seatView,onSelectionChange:i=>this.selectionChanged(i),onSelectionValidityChange:i=>this.selectionValidityChanged(i),onSelectionValid:this.options.onSelectionValid,onSelectionInvalid:this.options.onSelectionInvalid,onSelectionLimit:this.options.onSelectionLimit,onHoldChange:(i,n)=>this.holdChanged(i,n),onCheckout:(i,n)=>this.checkout(i,n),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"?Hr(this.includedPerformances(),e.performanceCount,this.options.locale,this.copy("picker.group.flexibleSelectedNote",{count:this.includedPerformances().length})):null,selectNight:i=>{this.switchPerformance(i)},selectionModeSwitch:this.options.allowSelectionModeSwitch&&this.mode==="same_seat"?{label:this.copy("picker.group.chooseNightByNight"),activate:()=>{this.switchSelectionMode("per_performance")}}:null,partialSeatSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{label:i=>this.copy("picker.group.selectAvailableDates",{count:i}),activate:(i,n)=>{this.selectPartialSeat(i,n)}}:null,confirmDateSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{includedEventKeys:()=>this.api.includedPerformanceKeys(),availableEventKeys:i=>this.partialSeatDates.get(i)??this.nights().map(n=>n.eventKey),label:i=>this.copy("picker.group.selectAvailableDates",{count:i}),apply:(i,n)=>this.applySeatDates(i,n,!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:gi(t,this.options.locale),time:bi(t,this.options.locale)}))}nights(){return(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:e.name,shortDate:vi(e,this.options.locale)}))}seatMarks(){let e=this.descriptorValue?.performanceCount??0,t=this.availability,i=!!t?.salesClosed||!!t&&t.state!=="active",n=this.mode==="same_seat"&&!i?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(n))!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(n=>n.eventKey===this.activePerformanceKey);if(!e)return null;let t=vi(e,this.options.locale),i=e.name?.trim();return i&&i!==t?`${i} \xB7 ${t}`:t}nightSummary(){return this.mode!=="per_performance"?[]:(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:vi(e,this.options.locale),labels:(this.selectionsByEvent.get(e.eventKey)??[]).map(t=>t.label),active:e.eventKey===this.activePerformanceKey}))}groupSelectionSummary(){let e=this.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),i=t.filter(r=>r>0),n=i.length===t.length&&i.every(r=>r===i[0]);return{seats:t.reduce((r,o)=>r+o,0),performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:i.length,perPerformance:n&&i.length?i[0]:null}}syncProgress(){if(!this.progressHost)return;let e=!!this.activeHandoff,t=[{id:"performances",label:this.copy("picker.group.stepPerformances"),state:"done"},{id:"seats",label:this.copy("picker.group.stepSeats"),state:e?"done":"current"},{id:"review",label:this.copy("picker.group.stepReview"),state:this.booked?"done":e?"current":"upcoming"}];this.progressHost.innerHTML=Fr(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=Or({available:e.freeCount>0,selected:(this.picker?.getSelection().length??0)>0,partial:Object.keys(e.partial).length>0,unavailable:e.blockedCount>0},{title:this.copy("picker.group.legendTitle"),available:this.copy("picker.group.legendAvailable"),selected:this.copy("picker.group.legendSelected"),partial:this.copy("picker.group.legendNotEveryDate"),unavailable:this.copy("picker.group.legendUnavailable")},this.categoryColor())}categoryColor(){return this.picker?.categoryLegendColor()??"#2563eb"}syncPane(){let e=this.paneHost;if(!e)return;let t=this.includedPerformances();if(this.mode!=="same_seat"||!t.length){e.hidden=!0,e.replaceChildren();return}let i=this.activeHandoff?.seatLabels??this.picker?.getSelection().map(r=>r.label)??[],n=this.heldTotal();e.hidden=!1,e.innerHTML=zr({title:this.copy("picker.group.yourSelection"),rows:t.map(r=>({eventKey:r.eventKey,name:`${gi(r,this.options.locale)} ${bi(r,this.options.locale)}`,labels:i})),empty:this.copy("picker.group.noSeatsChosenYet"),note:n?null:this.copy("picker.group.pricesPerPerformance"),total:n?{label:this.copy("picker.group.total"),amount:n}:null,holdStatus:this.booked?this.copy("picker.group.bookedAll",{count:t.length}):this.activeHandoff?this.copy("picker.group.heldTogether",{count:t.length,time:jr(this.activeHandoff.expiresAt-Date.now())}):null})}heldTotal(){let e=this.activeHandoff,t=this.descriptorValue;if(!e||!t)return null;let n=this.api.allocationsForHold(e.holdId).flatMap(a=>a.items);if(!n.length)return null;let r=n.reduce((a,l)=>a+l.unitPrice*(l.quantity??1),0),o=n[0]?.currency??t.currency;try{return vc(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(i=>t.has(i.eventKey))}syncIncludedDates(){let e=this.descriptorValue;if(!e||!this.datesSummaryHost||!this.datesCardsHost)return;let t=this.includedPerformances(),i=e.inclusionMode==="flexible_dates";this.datesSummaryHost.textContent=i&&t.length<e.performanceCount?this.copy("picker.group.flexibleDatesSelected",{selected:t.length,total:e.performanceCount}):this.copy(i?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:e.performanceCount}),this.datesCardsHost.innerHTML=ps(this.performanceCards({...e,performances:t}),this.copy(i&&t.length<e.performanceCount?"picker.group.flexibleSelectedNote":i?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.length}))}async selectPartialSeat(e,t){if(!(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)){if((this.picker?.getSelection().length??0)>0){this.announce(this.copy("picker.group.clearBeforePartial"));return}this.partialSeatDates.set(e,[...t]),await this.applySeatDates(e,t,!1)}}async applySeatDates(e,t,i){if(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)return!1;let n=this.api.includedPerformanceKeys();if(n.length===t.length&&n.every(r=>t.includes(r)))return!0;this.selectingPartialSeat=!0;try{if(this.api.setIncludedEventKeys(t),this.syncIncludedDates(),await this.picker?.refreshAvailability(),!(i?this.picker?.selectObjectsWithoutConfirmation([e])??[]:this.picker?.selectObjects([e])??[]).length)throw new Error("performance_group_partial_seat_unavailable");return this.announce(this.copy("picker.group.selectedAvailableDates",{count:t.length})),this.syncPane(),this.syncLegend(),!0}catch(r){return n.length&&(this.api.setIncludedEventKeys(n),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(lo(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 q)return;this.options.onError?.(t)}finally{this.switchingMode=!1}}}async release(){await this.picker?.release()}close(){this.destroy()}destroy(){if(this.destroyed)return;this.destroyed=!0,this.api.destroy(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.picker;this.root?.setAttribute("hidden","");let t=()=>{e?.destroy(),this.access.clear(),this.root?.remove(),this.root=null,this.picker=null,this.innerHost=null,this.tabsHost=null,this.statusHost=null,this.statusCopy=null,this.statusAction=null,this.live=null};e?.getCurrentHold()&&!this.continued?e.release().catch(()=>{}).finally(t):t()}copy(e,t){let i=this.options.messages?.[e];return i!==void 0?t?i.replace(/\{(\w+)\}/g,(n,r)=>String(t[r]??`{${r}}`)):i:wc(e,t)}performanceTabs(e){let t=document.createElement("div");t.className="sl-pg-tabsbar";let i=document.createElement("button");i.type="button",i.className="sl-pg-step",i.dataset.step="previous",i.setAttribute("aria-label",this.copy("picker.group.previousPerformance")),i.textContent="\u2039",i.addEventListener("click",()=>{this.stepPerformance(-1)});let n=document.createElement("button");n.type="button",n.className="sl-pg-step",n.dataset.step="next",n.setAttribute("aria-label",this.copy("picker.group.nextPerformance")),n.textContent="\u203A",n.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 p=document.createElement("span");p.className="sl-pg-tab-state",p.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,p),l.addEventListener("click",()=>{this.switchPerformance(o.eventKey)}),l.addEventListener("keydown",u=>this.tabKeydown(u)),r.appendChild(l)}),t.append(i,r,n),this.tabsHost=r,this.prevButton=i,this.nextButton=n,t}tabButtons(){return[...this.tabsHost?.querySelectorAll(".sl-pg-tab")??[]]}tabKeydown(e){let t=this.tabButtons(),i=t.findIndex(a=>a===e.target);if(i<0)return;let n=getComputedStyle(this.tabsHost??document.body).direction==="rtl",r=-1;switch(e.key){case"ArrowRight":r=i+(n?-1:1);break;case"ArrowLeft":r=i+(n?1:-1);break;case"ArrowDown":r=i+1;break;case"ArrowUp":r=i-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(),i=t.findIndex(r=>r.dataset.eventKey===this.activePerformanceKey),n=t[i+e];!n||n.disabled||(n.focus({preventScroll:!0}),this.switchPerformance(n.dataset.eventKey))}submissionState(){let e=this.descriptorValue?.performances??[];if(this.mode!=="per_performance"){let n=!this.holdBlocked();return{complete:e.length,total:e.length,ready:n}}let t=this.options.numberOfPlacesToSelect,i=e.filter(n=>this.selectionsByEvent.get(n.eventKey)?.length===t&&this.validByEvent.get(n.eventKey)!==!1).length;return{complete:i,total:e.length,ready:i===e.length&&!this.holdBlocked()}}holdBlocked(){return this.operationPending||this.recovery.kind!=="idle"||!!this.availability?.salesClosed}selectionChanged(e){if(this.mode!=="per_performance"){this.options.onSelectionChange?.(e),this.syncPane(),this.syncLegend(),!e.length&&!this.activeHandoff&&!this.resettingFlexibleSelection&&!this.selectingPartialSeat&&this.descriptorValue?.inclusionMode==="flexible_dates"&&this.api.includedPerformanceKeys().length<this.descriptorValue.performanceCount&&(this.resettingFlexibleSelection=!0,this.api.setIncludedEventKeys(this.descriptorValue.performances.map(i=>i.eventKey)),this.syncIncludedDates(),this.picker?.refreshAvailability().catch(i=>this.options.onError?.(i)).finally(()=>{this.resettingFlexibleSelection=!1}));return}if(this.refreshingComposition||this.switchingPerformance||!this.activePerformanceKey)return;let t=e.map(i=>({...i}));this.selectionsByEvent.set(this.activePerformanceKey,t),this.api.setPerformanceSelections(this.activePerformanceKey,t.map(i=>({label:i.label}))),t.length!==this.options.numberOfPlacesToSelect?this.validByEvent.set(this.activePerformanceKey,!1):this.validByEvent.has(this.activePerformanceKey)||this.validByEvent.set(this.activePerformanceKey,!0),this.updateTabs(),this.options.onSelectionChange?.(e),this.refreshComposition(),this.syncLegend()}selectionValidityChanged(e){if(this.mode==="per_performance"&&!this.switchingPerformance&&this.activePerformanceKey){let t=this.validByEvent.get(this.activePerformanceKey);this.validByEvent.set(this.activePerformanceKey,e.isValid),this.updateTabs(),!this.refreshingComposition&&t!==e.isValid&&this.refreshComposition()}this.options.onSelectionValidityChange?.(e)}refreshComposition(){if(this.refreshingComposition||!this.picker)return;let e=this.submissionState();this.refreshingComposition=!0;try{this.picker.refreshPerformanceGroupComposition();let t=this.submissionState();(e.complete!==t.complete||e.ready!==t.ready)&&this.picker.refreshPerformanceGroupComposition()}finally{this.refreshingComposition=!1}}tabState(e){let t=this.options.numberOfPlacesToSelect??1,i=(this.selectionsByEvent.get(e)??[]).map(r=>r.label),n=this.copy("picker.group.chosenOfTotal",{chosen:i.length,total:t});return i.length===0?{key:"not-started",label:this.copy("picker.group.stillNeedsSeat"),badge:n}:i.length===t&&this.validByEvent.get(e)!==!1?{key:"complete",label:this.copy("picker.group.completeWithSeats",{seats:i.join(", ")}),badge:n}:i.length===t?{key:"needs-attention",label:this.copy("picker.group.needsAttention"),badge:n}:{key:"in-progress",label:this.copy("picker.group.needsMoreSeats",{count:t-i.length}),badge:n}}updateTabs(){let e=this.tabButtons(),t=this.switchingPerformance||this.operationPending||this.recovery.kind!=="idle"||!!this.activeHandoff;e.forEach(n=>{let r=n.dataset.eventKey,o=this.tabState(r),a=r===this.activePerformanceKey;n.dataset.state=o.key,n.disabled=t,n.setAttribute("aria-selected",String(a)),n.tabIndex=a?0:-1;let l=n.querySelector(".sl-pg-tab-state");l&&(l.textContent=o.label);let c=n.querySelector(".sl-pg-tab-badge");c&&(c.textContent=o.badge);let p=n.querySelector(".sl-pg-tab-name")?.textContent??r;n.setAttribute("aria-label",`${p}: ${o.badge} \xB7 ${o.label}`),a&&this.innerHost?.setAttribute("aria-labelledby",n.id)});let i=e.findIndex(n=>n.dataset.eventKey===this.activePerformanceKey);this.prevButton&&(this.prevButton.disabled=t||i<=0),this.nextButton&&(this.nextButton.disabled=t||i<0||i>=e.length-1)}async switchPerformance(e){if(this.mode!=="per_performance"||this.switchingPerformance||this.holdBlocked()||this.activeHandoff||e===this.activePerformanceKey||!this.picker)return;this.activePerformanceKey&&this.selectionChanged(this.picker.getSelection());let t=this.selectionsByEvent.get(e)?.map(i=>i.label)??[];this.switchingPerformance=!0,this.activePerformanceKey=e,this.updateTabs(),this.setInteractionLocked(!0);try{this.picker.clearSelection(),this.api.setActivePerformance(e),await this.picker.refreshAvailability();let i=this.picker.selectObjects(t);this.switchingPerformance=!1,this.selectionChanged(i),i.length!==t.length&&this.validByEvent.set(e,!1),this.options.onSelectionChange?.(i);let n=this.descriptorValue?.performances.find(r=>r.eventKey===e);n&&this.announce(this.copy("picker.group.performanceOpened",{performance:n.name}))}catch(i){this.options.onError?.(i)}finally{this.switchingPerformance=!1,!this.operationPending&&this.recovery.kind==="idle"&&this.setInteractionLocked(!1),this.updateTabs(),this.picker.refreshPerformanceGroupComposition()}}setInteractionLocked(e){let t=this.innerHost;t&&(t.dataset.locked=String(e),t.setAttribute("aria-busy",String(e)),t.setAttribute("aria-disabled",String(e)))}announce(e){this.live&&(this.live.textContent=e)}showStatus(e,t,i={}){this.statusHost&&this.statusCopy&&this.statusAction&&(this.statusCopy.textContent=t,this.statusHost.hidden=!t,this.statusAction.hidden=!i.retry),this.announce(t),this.options.onStatusChange?.({kind:e,message:t,...i.reference?{reference:i.reference}:{}})}clearStatus(){this.statusHost&&(this.statusHost.hidden=!0),this.statusAction&&(this.statusAction.hidden=!0),this.options.onStatusChange?.({kind:"idle",message:""})}operationChanged(e){if(this.destroyed)return;let t=e.state==="preparing"||e.state==="commit_pending"||e.state==="abort_pending"||e.state==="expire_pending";if(this.operationPending=t,this.setInteractionLocked(t||this.recovery.kind!=="idle"),this.updateTabs(),t){this.showStatus("pending",this.copy(e.state==="commit_pending"?"picker.group.commitPending":e.state==="abort_pending"||e.state==="expire_pending"?"picker.group.abortPending":"picker.group.securing"));return}if(e.state==="booked"){this.bookingSettled();return}if(e.state==="expired"||e.state==="aborted"){this.activeHandoff&&this.holdLost();return}if(e.state==="committed"){this.clearStatus(),this.announce(this.copy("picker.group.secured")),queueMicrotask(()=>this.innerHost?.querySelector('[data-ref="cta"]')?.focus({preventScroll:!0}));return}e.decision==="abort"&&this.recovery.kind==="idle"&&(this.clearStatus(),this.announce(this.copy("picker.group.notSecured")))}bookingSettled(){if(this.booked)return;this.booked=!0,this.root&&(this.root.dataset.booking="booked"),this.clearStatus(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.activeHandoff?{...this.activeHandoff,bookingState:"booked"}:null;e&&(this.activeHandoff=e),this.syncProgress(),this.syncPane(),this.updateTabs(),this.picker?.notifyGroupSettled("booked"),this.announce(this.copy("picker.group.bookedAll",{count:this.descriptorValue?.performanceCount??0})),e&&this.options.onBooked?.(e)}holdLost(){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.picker?.notifyGroupSettled("lost"),this.announce(this.copy("picker.group.notSecured")),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()}recoveryChanged(e){if(!this.destroyed){if(this.recovery=e,this.setInteractionLocked(this.operationPending||e.kind!=="idle"),this.updateTabs(),this.refreshComposition(),e.kind==="idle"){this.operationPending||this.clearStatus();return}if(e.kind==="pending"){this.showStatus("pending",e.longRunning?this.copy("picker.group.longRunning",{reference:e.reference}):this.copy("picker.group.outcomeUnknown"),{reference:e.reference});return}this.showStatus("recovery_failed",this.copy("picker.group.longRunning",{reference:e.reference}),{retry:e.retryable,reference:e.reference}),this.setInteractionLocked(!1)}}async retryRecovery(){if(!(this.destroyed||this.recovery.kind!=="failed"||!this.recovery.retryable))try{await this.api.retryRecovery()}catch(e){if(e instanceof q)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 q)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 q)return;this.options.onError?.(t)}}handoff(e,t){let i=this.descriptorValue,n=this.api.operationIdForHold(e.holdId);if(!i||!n)throw new Error("seatlayer: Performance Group hold identity is unavailable");let r=this.api.allocationsForHold(e.holdId);return{operationId:n,holdId:e.holdId,expiresAt:e.expiresAt,performanceGroup:i,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 i=this.descriptorValue?.performances.find(o=>o.eventKey===t.eventKey),n=document.createElement("p"),r=document.createElement("strong");r.textContent=i?.name??t.eventKey,n.append(r,document.createTextNode(t.items.map(o=>o.label).join(", "))),this.heldSummary.appendChild(n)}this.heldSummary.hidden=e.length===0}}resetPerPerformanceSelection(){this.mode==="per_performance"&&(this.selectionsByEvent.clear(),this.validByEvent.clear(),this.heldSummary?.replaceChildren(),this.heldSummary&&(this.heldSummary.hidden=!0),this.updateTabs(),this.picker?.refreshPerformanceGroupComposition())}holdChanged(e,t){if(!e){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.options.onHoldChange?.(null);return}let i=this.handoff(e,t),n=this.activeHandoff?.holdId!==i.holdId;this.activeHandoff=i,this.renderHeldAllocations(this.api.allocationsForHold(e.holdId)),this.updateTabs(),this.api.watchSettlement(e.holdId),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),n&&this.options.onHold?.(i),this.options.onHoldChange?.(i)}checkout(e,t){let i=this.handoff(e,t);this.continued=!0,this.activeHandoff=i,this.options.onCheckout?.(i)}};var co="seatlayer-season-picker-style";function po(){if(document.getElementById(co))return;let s=document.createElement("style");s.id=co,s.textContent=`
2819
+ `,document.head.appendChild(n)}var _c="https://api.seatlayer.io",Dc=6e4,Bc=2e3,Nc=1e3,$c=36e5,Vc=5e3,Fc=5e3,zc=15e3,jc=12e4,Gc=new Set(["preparing","commit_pending","abort_pending","expire_pending"]),q=class extends Error{constructor(){super("performance_group_destroyed"),this.name="PerformanceGroupDestroyedError"}};function qc(n){return new Promise(e=>setTimeout(e,n))}function Tn(n){let e=Number(n.headers.get("Retry-After")??"1");return Number.isFinite(e)?Math.max(50,Math.min(Vc,e*1e3)):1e3}function at(n,e){return`/pub/performance-groups/${encodeURIComponent(n)}/operations/${encodeURIComponent(e)}`}function Rt(n){return n.replace(/^pghop_/,"").replace(/-/g,"").slice(-8).toUpperCase()}var Cn=class{constructor(e,t,i){this.api=e;this.sink=t;this.intervalMs=i;this.stopped=!0;this.timer=null;this.prior=new Map}start(){this.stopped&&(this.stopped=!1,this.tick())}stop(){this.stopped=!0,this.timer&&clearTimeout(this.timer),this.timer=null}async tick(){try{let e=await this.api.objects(this.api.groupKey);if(this.stopped)return;let t=new Map(Object.entries(e.seats)),s=[...new Set([...this.prior.keys(),...t.keys()])].filter(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 q){this.stop();return}this.stopped||await this.sink.resync()}finally{this.stopped||(this.timer=setTimeout(()=>{this.tick()},this.intervalMs))}}},Ai=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??_c).replace(/\/+$/,""),this.access=t.access,this.fetcher=t.fetch??globalThis.fetch.bind(globalThis),this.recoveryTimeoutMs=t.recoveryTimeoutMs??Dc,this.realtimePollMs=Math.max(500,t.realtimePollMs??Bc),this.selectionMode=t.selectionMode??"same_seat",this.partySize=t.partySize??null,this.onOperationState=t.onOperationState,this.onRecoveryState=t.onRecoveryState,this.onAvailability=t.onAvailability,this.access.onRenewed(s=>this.adoptSession(s));let i=this.readOperationRecord();i&&this.storedIsUndecided(i)&&(this.pendingOperationId=i.operationId)}get pendingOperation(){return this.pendingOperationId}get holdBlocked(){return!!this.adoptFailure||!!this.pendingOperationId&&this.lastRecovery.kind!=="idle"}async descriptor(){let e=await this.json(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/descriptor`);return this.descriptorCache=e.performanceGroup,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,i]=await Promise.all([this.descriptorCache?Promise.resolve(this.descriptorCache):this.descriptor(),this.chartRequest]);return{doc:i,event:{key:t.key,name:t.name,salesClosed:t.state!=="active",venue:t.venue,startsAt:t.performances[0]?.startsAt??null,timezone:t.timezone,currency:t.currency,mode:t.mode,inventoryModelVersion:2}}}asset(e,t){return/^[a-zA-Z0-9._-]+$/.test(t)?this.blob(`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/assets/${encodeURIComponent(t)}`):Promise.reject(new $(404,"not_found","not_found"))}async objects(e){let t=this.descriptorCache?.inclusionMode==="flexible_dates",i=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/objects`+(this.selectionMode==="per_performance"||t?"?view=per-performance":"");if(this.reuseObjectsCacheOnce&&this.objectsCache)this.reuseObjectsCacheOnce=!1;else{let o=await this.authorized(i,this.objectsCache?.revision?{headers:{"If-None-Match":`"${this.objectsCache.revision}"`}}:{});if(o.status!==304){if(!o.ok)return this.throwResponse(o);this.objectsCache=await this.responseJson(o)}}if(!this.objectsCache)throw new $(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(i=>i.eventKey)??[]);if(!e.length||new Set(e).size!==e.length||e.some(i=>!t.has(i)))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(i=>({...i})))}allocationsForHold(e){return(this.allocationsByHold.get(e)??[]).map(t=>({eventKey:t.eventKey,items:t.items.map(i=>({...i}))}))}async hold(e,t,i,s){if(this.assertUsable(),s)throw new $(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,...i?{ttlMs:i}:{}})})}catch(c){if(c instanceof q)throw c;if(c instanceof ae)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,Tn(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,Tn(l))}}try{return await this.throwResponse(l,r)}catch(c){throw this.failOperation(a),c}}async release(e,t,i){this.assertUsable();let s=this.operationForHold(i),r=await this.json(`${at(this.groupKey,s)}/release`,{method:"POST",body:"{}"});return this.operationByHold.delete(i),this.allocationsByHold.delete(i),this.clearOperationRecord(),r}async resume(e,t){this.assertUsable();let i=this.operationForHold(t),s=await this.json(at(this.groupKey,i));return this.complete(s.operation)}async extend(e,t,i=12e4){this.assertUsable();let s=this.operationForHold(t),r=Math.max(Nc,Math.min($c,Math.round(i))),o=await this.json(`${at(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 Cn(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:Rt(e.operationId)});let t;try{t=await this.authorized(at(this.groupKey,e.operationId))}catch(r){return r instanceof q||this.recoveryFailed(e.operationId,"request_failed"),null}if(t.status===404)return this.failOperation(e.operationId),null;if(!t.ok)return this.recoveryFailed(e.operationId,"request_failed"),null;let i=await this.responseJson(t);this.emit(i.operation);let s=i.operation.state;return s==="committed"||s==="booked"?(this.emitRecovery({kind:"idle"}),this.complete(i.operation)):s==="aborted"||s==="expired"?(this.failOperation(e.operationId),null):this.recover(e.operationId,[],Date.now()+this.recoveryTimeoutMs)}async retryRecovery(){this.assertUsable();let e=this.pendingOperationId??this.readOperationRecord()?.operationId??null;return e?(this.pendingOperationId=e,this.recover(e,[],Date.now()+this.recoveryTimeoutMs)):null}watchSettlement(e){if(this.destroyed)return;let t=this.operationIdForHold(e);!t||t===this.settleOperationId||(this.stopSettlementWatch(),this.settleOperationId=t,this.settleStartedAt=Date.now(),this.settleState="committed",typeof document<"u"&&(this.settleVisibility=()=>{document.hidden||!this.settleOperationId||this.pollSettlement()},document.addEventListener("visibilitychange",this.settleVisibility)),this.scheduleSettlementPoll())}stopSettlementWatch(){this.settleTimer&&clearTimeout(this.settleTimer),this.settleTimer=null,this.settleOperationId=null,this.settleState=null,this.settleVisibility&&typeof document<"u"&&document.removeEventListener("visibilitychange",this.settleVisibility),this.settleVisibility=null}scheduleSettlementPoll(){if(this.destroyed||!this.settleOperationId)return;if(this.settleTimer&&clearTimeout(this.settleTimer),typeof document<"u"&&document.hidden){this.settleTimer=null;return}let t=Date.now()-this.settleStartedAt>=jc?zc:Fc;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(at(this.groupKey,e));if(!s.ok)return this.scheduleSettlementPoll();t=(await this.responseJson(s)).operation}catch(s){return s instanceof q?this.stopSettlementWatch():this.scheduleSettlementPoll()}if(this.destroyed||this.settleOperationId!==e)return;let i=t.state!==this.settleState;if(this.settleState=t.state,i&&this.noteOperationState(e,t.state),this.settled(t.state)){this.stopSettlementWatch(),t.state!=="booked"&&this.clearOperationRecord(),this.emit(t);return}i&&this.emit(t),this.scheduleSettlementPoll()}destroy(){if(!this.destroyed){this.destroyed=!0,this.stopSettlementWatch(),this.access.onRenewed(void 0);try{this.aborter.abort()}catch{}}}operationRecordKey(){return`@seatlayer/performance-group-operation/v1/${encodeURIComponent(this.base)}/${encodeURIComponent(this.groupKey)}`}readOperationRecord(){try{let e=window.sessionStorage.getItem(this.operationRecordKey());if(!e)return null;let t=JSON.parse(e);return!t?.operationId||t.groupKey!==this.groupKey?null:t}catch{return null}}storedIsUndecided(e){return e.state==="undecided"||Gc.has(e.state)}writeOperationRecord(e){try{window.sessionStorage.setItem(this.operationRecordKey(),JSON.stringify(e))}catch{}}clearOperationRecord(){try{window.sessionStorage.removeItem(this.operationRecordKey())}catch{}}beginOperation(e){this.pendingOperationId=e;let t=this.readOperationRecord();this.writeOperationRecord({operationId:e,groupKey:this.groupKey,state:"undecided",createdAt:t?.operationId===e?t.createdAt:Date.now()})}noteOperationState(e,t){let i=this.readOperationRecord();!i||i.operationId!==e||this.writeOperationRecord({...i,state:t})}failOperation(e){this.pendingOperationId=null,this.clearOperationRecord(),this.emitRecovery({kind:"idle"}),this.onOperationState?.({operationId:e,state:"aborted",decision:"abort"})}async adoptSession(e){if(this.destroyed)return;let t=`/pub/performance-groups/${encodeURIComponent(this.groupKey)}/session/adopt`;for(let s=0;s<2;s++){if(this.destroyed)return;try{if((await this.fetcher(`${this.base}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit",signal:this.aborter.signal})).ok){this.adoptFailure=null;return}}catch{}}if(this.destroyed)return;this.adoptFailure=new $(409,"performance_group_session_adopt_failed","performance_group_session_adopt_failed");let i=this.pendingOperationId??"";throw this.emitRecovery({kind:"failed",operationId:i,reference:i?Rt(i):"",reason:"session_adopt_failed",retryable:!1}),this.adoptFailure}async recover(e,t,i,s=100){let r=s,o=Date.now()+Math.min(8e3,Math.max(500,this.recoveryTimeoutMs/2)),a="unknown";for(;Date.now()<=i;){if(this.destroyed)throw new q;if(this.emitRecovery({kind:"pending",operationId:e,phase:a,longRunning:Date.now()>=o,reference:Rt(e)}),await qc(r),this.destroyed)throw new q;let l;try{l=await this.authorized(at(this.groupKey,e))}catch(p){if(p instanceof q)throw p;if(p instanceof ae)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=Tn(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:Rt(e),reason:t,retryable:!0})}emitRecovery(e){if(this.destroyed)return;let t=this.lastRecovery.kind===e.kind&&JSON.stringify(this.lastRecovery)===JSON.stringify(e);this.lastRecovery=e,t||this.onRecoveryState?.(e)}noteAvailability(e,t,i){if(this.destroyed||!this.onAvailability)return;let s=e.state??this.descriptorCache?.state??"active",r=e.revision??null,o=!!r&&!!this.knownRevision&&r!==this.knownRevision;r&&!this.knownRevision&&(this.knownRevision=r);let a=i?.partial??{},l=Object.values(i?.seats??{});this.onAvailability({partial:a,freeCount:l.filter(c=>c==="free").length,blockedCount:Object.keys(i?.seats??{}).filter(c=>i.seats[c]!=="free"&&!(c in a)).length,state:s,salesClosed:!!t||s!=="active",revision: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 i=t.find(s=>s.eventKey===this.activePerformanceKey)?.items;return{holdId:e.hold.id,expiresAt:e.hold.expiresAt,items:i??e.hold.items??[]}}emit(e){this.destroyed||this.onOperationState?.({operationId:e.operationId,state:e.state,decision:e.decision})}operationForHold(e){let t=this.operationIdForHold(e);if(!t)throw new $(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 q;if(this.adoptFailure)throw this.adoptFailure}async authorized(e,t={},i=!1){if(this.destroyed)throw new q;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(i?"unauthorized":"initial");if(this.destroyed)throw new q;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(!i&&(o.status===401||o.status===403||o.status===422)){let a=await o.clone().json().catch(()=>null);if(await this.access.handleFailure(o.status,a?.code??a?.error))return this.authorized(e,t,!0)}return o}async json(e,t={}){let i=await this.authorized(e,t);return i.ok?this.responseJson(i):this.throwResponse(i)}async blob(e){let t=await this.authorized(e);return t.ok?t.blob():this.throwResponse(t)}async responseJson(e){return e.json()}async throwResponse(e,t=[]){let s=await e.json().catch(()=>null)??{},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 Qc="https://api.seatlayer.io";function Eo(n){let e=typeof n=="string"?document.querySelector(n):n;if(!e)throw new Error("seatlayer: Performance Group picker container was not found");return e}var En=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 pe({provider:e.buyerAccessTokenProvider,token:e.buyerAccessToken,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable}),this.api=new Ai(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,Co(),await Kc(this.options.locale),this.options.messages&&Wc(this.options.messages),this.destroyed)return this;let t;try{t=await this.api.descriptor()}catch(i){throw ke({apiBase:this.options.apiBase??Qc,event:this.options.performanceGroup,scope:"performance_group",surface:"performance_group_picker",outcome:"failure",stage:"group_descriptor",ms:performance.now()-e,load:He(this.options.performanceGroup),transport:"pubapi"}),i}return this.destroyed?this:(this.descriptorValue=t,this.activePerformanceKey=t.performances[0]?.eventKey??null,this.buildChrome(Eo(this.options.container),t),this.announce(this.copy("picker.group.checkingAvailability")),await this.mountPicker(t),this.destroyed?this:(await this.restoreOperation(),this))}buildChrome(e,t){e.replaceChildren();let i=document.createElement("div");i.className="sl-pg-root",i.dataset.performanceGroup=t.key,i.dataset.selectionMode=this.mode;let 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=an(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 m=this.mode==="per_performance"?this.performanceTabs(t):null,y=document.createElement("div");y.className="sl-pg-inner",y.id=this.panelId,y.setAttribute("aria-busy","false"),y.dataset.locked="false",this.mode==="per_performance"&&(y.setAttribute("role","tabpanel"),y.tabIndex=-1);let w=document.createElement("div");w.className="sl-pg-status",w.setAttribute("role","status"),w.setAttribute("aria-live","polite"),w.hidden=!0;let x=document.createElement("p"),P=document.createElement("button");P.type="button",P.hidden=!0,P.textContent=this.copy("picker.group.retry"),P.addEventListener("click",()=>{this.retryRecovery()}),w.append(x,P),y.appendChild(w);let b=document.createElement("div");b.className="sl-pg-live",b.setAttribute("role","status"),b.setAttribute("aria-live","polite"),i.append(s,r),m&&i.append(m),i.append(h,y,g,b),e.appendChild(i),this.root=i,this.progressHost=s,this.legendHost=h,this.paneHost=g,this.datesSummaryHost=d,this.datesCardsHost=p,this.innerHost=y,this.heldSummary=u,this.live=b,this.statusHost=w,this.statusCopy=x,this.statusAction=P,this.syncProgress(),this.syncLegend(),this.syncPane()}async mountPicker(e){let t=new ze(Ei({container:this.innerHost,event:e.key,apiBase:this.options.apiBase,transport:this.api,hideEventDetails:!0,maxSelection:this.options.maxSelection,selectedObjects:this.options.selectedObjects,selectableObjects:this.options.selectableObjects,numberOfPlacesToSelect:this.options.numberOfPlacesToSelect,selectionValidators:this.options.selectionValidators,locale:this.options.locale,messages:this.options.messages,languages:this.options.languages,colorblindSafe:this.options.colorblindSafe,initialView:this.options.initialView,enable3D:this.options.enable3D,max3DSeats:this.options.max3DSeats,onBuyerViewChange:this.options.onBuyerViewChange,onAnalytics:(i,s)=>{try{this.options.onAnalytics?.(i,{...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:i=>this.selectionChanged(i),onSelectionValidityChange:i=>this.selectionValidityChanged(i),onSelectionValid:this.options.onSelectionValid,onSelectionInvalid:this.options.onSelectionInvalid,onSelectionLimit:this.options.onSelectionLimit,onHoldChange:(i,s)=>this.holdChanged(i,s),onCheckout:(i,s)=>this.checkout(i,s),onHoldExpired:()=>{this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()},onError:this.options.onError},{performanceCount:e.performanceCount,selectionMode:this.mode,submissionState:()=>this.submissionState(),suppressPricing:!0,nights:()=>this.nights(),seatMarks:()=>this.seatMarks(),nightSummary:()=>this.nightSummary(),groupSelectionSummary:()=>this.groupSelectionSummary(),activePerformanceLabel:()=>this.activePerformanceLabel(),selectedPerformanceDates:()=>this.mode==="same_seat"&&e.inclusionMode==="flexible_dates"?lr(this.includedPerformances(),e.performanceCount,this.options.locale,this.copy("picker.group.flexibleSelectedNote",{count:this.includedPerformances().length})):null,selectNight:i=>{this.switchPerformance(i)},selectionModeSwitch:this.options.allowSelectionModeSwitch&&this.mode==="same_seat"?{label:this.copy("picker.group.chooseNightByNight"),activate:()=>{this.switchSelectionMode("per_performance")}}:null,partialSeatSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{label:i=>this.copy("picker.group.selectAvailableDates",{count:i}),activate:(i,s)=>{this.selectPartialSeat(i,s)}}:null,confirmDateSelection:e.inclusionMode==="flexible_dates"&&this.mode==="same_seat"?{includedEventKeys:()=>this.api.includedPerformanceKeys(),availableEventKeys:i=>this.partialSeatDates.get(i)??this.nights().map(s=>s.eventKey),label:i=>this.copy("picker.group.selectAvailableDates",{count:i}),apply:(i,s)=>this.applySeatDates(i,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:hi(t,this.options.locale),time:ui(t,this.options.locale)}))}nights(){return(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:e.name,shortDate:mi(e,this.options.locale)}))}seatMarks(){let e=this.descriptorValue?.performanceCount??0,t=this.availability,i=!!t?.salesClosed||!!t&&t.state!=="active",s=this.mode==="same_seat"&&!i?t?.partial??{}:{},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=mi(e,this.options.locale),i=e.name?.trim();return i&&i!==t?`${i} \xB7 ${t}`:t}nightSummary(){return this.mode!=="per_performance"?[]:(this.descriptorValue?.performances??[]).map(e=>({eventKey:e.eventKey,name:mi(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),i=t.filter(r=>r>0),s=i.length===t.length&&i.every(r=>r===i[0]);return{seats:t.reduce((r,o)=>r+o,0),performances:e.length,totalPerformances:this.descriptorValue?.performanceCount??e.length,performancesChosen:i.length,perPerformance:s&&i.length?i[0]:null}}syncProgress(){if(!this.progressHost)return;let e=!!this.activeHandoff,t=[{id:"performances",label:this.copy("picker.group.stepPerformances"),state:"done"},{id:"seats",label:this.copy("picker.group.stepSeats"),state:e?"done":"current"},{id:"review",label:this.copy("picker.group.stepReview"),state:this.booked?"done":e?"current":"upcoming"}];this.progressHost.innerHTML=vr(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=dr({available:e.freeCount>0,selected:(this.picker?.getSelection().length??0)>0,partial:Object.keys(e.partial).length>0,unavailable:e.blockedCount>0},{title:this.copy("picker.group.legendTitle"),available:this.copy("picker.group.legendAvailable"),selected:this.copy("picker.group.legendSelected"),partial:this.copy("picker.group.legendNotEveryDate"),unavailable:this.copy("picker.group.legendUnavailable")},this.categoryColor())}categoryColor(){return this.picker?.categoryLegendColor()??"#2563eb"}syncPane(){let e=this.paneHost;if(!e)return;let t=this.includedPerformances();if(this.mode!=="same_seat"||!t.length){e.hidden=!0,e.replaceChildren();return}let i=this.activeHandoff?.seatLabels??this.picker?.getSelection().map(r=>r.label)??[],s=this.heldTotal();e.hidden=!1,e.innerHTML=yr({title:this.copy("picker.group.yourSelection"),rows:t.map(r=>({eventKey:r.eventKey,name:`${hi(r,this.options.locale)} ${ui(r,this.options.locale)}`,labels:i})),empty:this.copy("picker.group.noSeatsChosenYet"),note:s?null:this.copy("picker.group.pricesPerPerformance"),total:s?{label:this.copy("picker.group.total"),amount:s}:null,holdStatus:this.booked?this.copy("picker.group.bookedAll",{count:t.length}):this.activeHandoff?this.copy("picker.group.heldTogether",{count:t.length,time:wr(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 Uc(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(i=>t.has(i.eventKey))}syncIncludedDates(){let e=this.descriptorValue;if(!e||!this.datesSummaryHost||!this.datesCardsHost)return;let t=this.includedPerformances(),i=e.inclusionMode==="flexible_dates";this.datesSummaryHost.textContent=i&&t.length<e.performanceCount?this.copy("picker.group.flexibleDatesSelected",{selected:t.length,total:e.performanceCount}):this.copy(i?"picker.group.flexibleDatesInView":"picker.group.allDates",{count:e.performanceCount}),this.datesCardsHost.innerHTML=an(this.performanceCards({...e,performances:t}),this.copy(i&&t.length<e.performanceCount?"picker.group.flexibleSelectedNote":i?"picker.group.flexibleDatesNote":"picker.group.includedNote",{count:t.length}))}async selectPartialSeat(e,t){if(!(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)){if((this.picker?.getSelection().length??0)>0){this.announce(this.copy("picker.group.clearBeforePartial"));return}this.partialSeatDates.set(e,[...t]),await this.applySeatDates(e,t,!1)}}async applySeatDates(e,t,i){if(this.destroyed||this.holdBlocked()||this.activeHandoff||!t.length)return!1;let 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(),!(i?this.picker?.selectObjectsWithoutConfirmation([e])??[]:this.picker?.selectObjects([e])??[]).length)throw new Error("performance_group_partial_seat_unavailable");return this.announce(this.copy("picker.group.selectedAvailableDates",{count:t.length})),this.syncPane(),this.syncLegend(),!0}catch(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(Eo(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 q)return;this.options.onError?.(t)}finally{this.switchingMode=!1}}}async release(){await this.picker?.release()}close(){this.destroy()}destroy(){if(this.destroyed)return;this.destroyed=!0,this.api.destroy(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.picker;this.root?.setAttribute("hidden","");let t=()=>{e?.destroy(),this.access.clear(),this.root?.remove(),this.root=null,this.picker=null,this.innerHost=null,this.tabsHost=null,this.statusHost=null,this.statusCopy=null,this.statusAction=null,this.live=null};e?.getCurrentHold()&&!this.continued?e.release().catch(()=>{}).finally(t):t()}copy(e,t){let i=this.options.messages?.[e];return i!==void 0?t?i.replace(/\{(\w+)\}/g,(s,r)=>String(t[r]??`{${r}}`)):i:Yc(e,t)}performanceTabs(e){let t=document.createElement("div");t.className="sl-pg-tabsbar";let i=document.createElement("button");i.type="button",i.className="sl-pg-step",i.dataset.step="previous",i.setAttribute("aria-label",this.copy("picker.group.previousPerformance")),i.textContent="\u2039",i.addEventListener("click",()=>{this.stepPerformance(-1)});let s=document.createElement("button");s.type="button",s.className="sl-pg-step",s.dataset.step="next",s.setAttribute("aria-label",this.copy("picker.group.nextPerformance")),s.textContent="\u203A",s.addEventListener("click",()=>{this.stepPerformance(1)});let 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(i,r,s),this.tabsHost=r,this.prevButton=i,this.nextButton=s,t}tabButtons(){return[...this.tabsHost?.querySelectorAll(".sl-pg-tab")??[]]}tabKeydown(e){let t=this.tabButtons(),i=t.findIndex(a=>a===e.target);if(i<0)return;let s=getComputedStyle(this.tabsHost??document.body).direction==="rtl",r=-1;switch(e.key){case"ArrowRight":r=i+(s?-1:1);break;case"ArrowLeft":r=i+(s?1:-1);break;case"ArrowDown":r=i+1;break;case"ArrowUp":r=i-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(),i=t.findIndex(r=>r.dataset.eventKey===this.activePerformanceKey),s=t[i+e];!s||s.disabled||(s.focus({preventScroll:!0}),this.switchPerformance(s.dataset.eventKey))}submissionState(){let e=this.descriptorValue?.performances??[];if(this.mode!=="per_performance"){let s=!this.holdBlocked();return{complete:e.length,total:e.length,ready:s}}let t=this.options.numberOfPlacesToSelect,i=e.filter(s=>this.selectionsByEvent.get(s.eventKey)?.length===t&&this.validByEvent.get(s.eventKey)!==!1).length;return{complete:i,total:e.length,ready:i===e.length&&!this.holdBlocked()}}holdBlocked(){return this.operationPending||this.recovery.kind!=="idle"||!!this.availability?.salesClosed}selectionChanged(e){if(this.mode!=="per_performance"){this.options.onSelectionChange?.(e),this.syncPane(),this.syncLegend(),!e.length&&!this.activeHandoff&&!this.resettingFlexibleSelection&&!this.selectingPartialSeat&&this.descriptorValue?.inclusionMode==="flexible_dates"&&this.api.includedPerformanceKeys().length<this.descriptorValue.performanceCount&&(this.resettingFlexibleSelection=!0,this.api.setIncludedEventKeys(this.descriptorValue.performances.map(i=>i.eventKey)),this.syncIncludedDates(),this.picker?.refreshAvailability().catch(i=>this.options.onError?.(i)).finally(()=>{this.resettingFlexibleSelection=!1}));return}if(this.refreshingComposition||this.switchingPerformance||!this.activePerformanceKey)return;let t=e.map(i=>({...i}));this.selectionsByEvent.set(this.activePerformanceKey,t),this.api.setPerformanceSelections(this.activePerformanceKey,t.map(i=>({label:i.label}))),t.length!==this.options.numberOfPlacesToSelect?this.validByEvent.set(this.activePerformanceKey,!1):this.validByEvent.has(this.activePerformanceKey)||this.validByEvent.set(this.activePerformanceKey,!0),this.updateTabs(),this.options.onSelectionChange?.(e),this.refreshComposition(),this.syncLegend()}selectionValidityChanged(e){if(this.mode==="per_performance"&&!this.switchingPerformance&&this.activePerformanceKey){let t=this.validByEvent.get(this.activePerformanceKey);this.validByEvent.set(this.activePerformanceKey,e.isValid),this.updateTabs(),!this.refreshingComposition&&t!==e.isValid&&this.refreshComposition()}this.options.onSelectionValidityChange?.(e)}refreshComposition(){if(this.refreshingComposition||!this.picker)return;let e=this.submissionState();this.refreshingComposition=!0;try{this.picker.refreshPerformanceGroupComposition();let t=this.submissionState();(e.complete!==t.complete||e.ready!==t.ready)&&this.picker.refreshPerformanceGroupComposition()}finally{this.refreshingComposition=!1}}tabState(e){let t=this.options.numberOfPlacesToSelect??1,i=(this.selectionsByEvent.get(e)??[]).map(r=>r.label),s=this.copy("picker.group.chosenOfTotal",{chosen:i.length,total:t});return i.length===0?{key:"not-started",label:this.copy("picker.group.stillNeedsSeat"),badge:s}:i.length===t&&this.validByEvent.get(e)!==!1?{key:"complete",label:this.copy("picker.group.completeWithSeats",{seats:i.join(", ")}),badge:s}:i.length===t?{key:"needs-attention",label:this.copy("picker.group.needsAttention"),badge:s}:{key:"in-progress",label:this.copy("picker.group.needsMoreSeats",{count:t-i.length}),badge:s}}updateTabs(){let e=this.tabButtons(),t=this.switchingPerformance||this.operationPending||this.recovery.kind!=="idle"||!!this.activeHandoff;e.forEach(s=>{let 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 i=e.findIndex(s=>s.dataset.eventKey===this.activePerformanceKey);this.prevButton&&(this.prevButton.disabled=t||i<=0),this.nextButton&&(this.nextButton.disabled=t||i<0||i>=e.length-1)}async switchPerformance(e){if(this.mode!=="per_performance"||this.switchingPerformance||this.holdBlocked()||this.activeHandoff||e===this.activePerformanceKey||!this.picker)return;this.activePerformanceKey&&this.selectionChanged(this.picker.getSelection());let t=this.selectionsByEvent.get(e)?.map(i=>i.label)??[];this.switchingPerformance=!0,this.activePerformanceKey=e,this.updateTabs(),this.setInteractionLocked(!0);try{this.picker.clearSelection(),this.api.setActivePerformance(e),await this.picker.refreshAvailability();let i=this.picker.selectObjects(t);this.switchingPerformance=!1,this.selectionChanged(i),i.length!==t.length&&this.validByEvent.set(e,!1),this.options.onSelectionChange?.(i);let s=this.descriptorValue?.performances.find(r=>r.eventKey===e);s&&this.announce(this.copy("picker.group.performanceOpened",{performance:s.name}))}catch(i){this.options.onError?.(i)}finally{this.switchingPerformance=!1,!this.operationPending&&this.recovery.kind==="idle"&&this.setInteractionLocked(!1),this.updateTabs(),this.picker.refreshPerformanceGroupComposition()}}setInteractionLocked(e){let t=this.innerHost;t&&(t.dataset.locked=String(e),t.setAttribute("aria-busy",String(e)),t.setAttribute("aria-disabled",String(e)))}announce(e){this.live&&(this.live.textContent=e)}showStatus(e,t,i={}){this.statusHost&&this.statusCopy&&this.statusAction&&(this.statusCopy.textContent=t,this.statusHost.hidden=!t,this.statusAction.hidden=!i.retry),this.announce(t),this.options.onStatusChange?.({kind:e,message:t,...i.reference?{reference:i.reference}:{}})}clearStatus(){this.statusHost&&(this.statusHost.hidden=!0),this.statusAction&&(this.statusAction.hidden=!0),this.options.onStatusChange?.({kind:"idle",message:""})}operationChanged(e){if(this.destroyed)return;let t=e.state==="preparing"||e.state==="commit_pending"||e.state==="abort_pending"||e.state==="expire_pending";if(this.operationPending=t,this.setInteractionLocked(t||this.recovery.kind!=="idle"),this.updateTabs(),t){this.showStatus("pending",this.copy(e.state==="commit_pending"?"picker.group.commitPending":e.state==="abort_pending"||e.state==="expire_pending"?"picker.group.abortPending":"picker.group.securing"));return}if(e.state==="booked"){this.bookingSettled();return}if(e.state==="expired"||e.state==="aborted"){this.activeHandoff&&this.holdLost();return}if(e.state==="committed"){this.clearStatus(),this.announce(this.copy("picker.group.secured")),queueMicrotask(()=>this.innerHost?.querySelector('[data-ref="cta"]')?.focus({preventScroll:!0}));return}e.decision==="abort"&&this.recovery.kind==="idle"&&(this.clearStatus(),this.announce(this.copy("picker.group.notSecured")))}bookingSettled(){if(this.booked)return;this.booked=!0,this.root&&(this.root.dataset.booking="booked"),this.clearStatus(),this.holdTicker&&clearInterval(this.holdTicker),this.holdTicker=null;let e=this.activeHandoff?{...this.activeHandoff,bookingState:"booked"}:null;e&&(this.activeHandoff=e),this.syncProgress(),this.syncPane(),this.updateTabs(),this.picker?.notifyGroupSettled("booked"),this.announce(this.copy("picker.group.bookedAll",{count:this.descriptorValue?.performanceCount??0})),e&&this.options.onBooked?.(e)}holdLost(){this.activeHandoff=null,this.api.stopSettlementWatch(),this.resetPerPerformanceSelection(),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),this.picker?.notifyGroupSettled("lost"),this.announce(this.copy("picker.group.notSecured")),this.options.onHoldChange?.(null),this.options.onHoldExpired?.()}recoveryChanged(e){if(!this.destroyed){if(this.recovery=e,this.setInteractionLocked(this.operationPending||e.kind!=="idle"),this.updateTabs(),this.refreshComposition(),e.kind==="idle"){this.operationPending||this.clearStatus();return}if(e.kind==="pending"){this.showStatus("pending",e.longRunning?this.copy("picker.group.longRunning",{reference:e.reference}):this.copy("picker.group.outcomeUnknown"),{reference:e.reference});return}this.showStatus("recovery_failed",this.copy("picker.group.longRunning",{reference:e.reference}),{retry:e.retryable,reference:e.reference}),this.setInteractionLocked(!1)}}async retryRecovery(){if(!(this.destroyed||this.recovery.kind!=="failed"||!this.recovery.retryable))try{await this.api.retryRecovery()}catch(e){if(e instanceof q)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 q)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 q)return;this.options.onError?.(t)}}handoff(e,t){let i=this.descriptorValue,s=this.api.operationIdForHold(e.holdId);if(!i||!s)throw new Error("seatlayer: Performance Group hold identity is unavailable");let r=this.api.allocationsForHold(e.holdId);return{operationId:s,holdId:e.holdId,expiresAt:e.expiresAt,performanceGroup:i,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 i=this.descriptorValue?.performances.find(o=>o.eventKey===t.eventKey),s=document.createElement("p"),r=document.createElement("strong");r.textContent=i?.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 i=this.handoff(e,t),s=this.activeHandoff?.holdId!==i.holdId;this.activeHandoff=i,this.renderHeldAllocations(this.api.allocationsForHold(e.holdId)),this.updateTabs(),this.api.watchSettlement(e.holdId),this.syncProgress(),this.syncPane(),this.syncHoldTicker(),s&&this.options.onHold?.(i),this.options.onHoldChange?.(i)}checkout(e,t){let i=this.handoff(e,t);this.continued=!0,this.activeHandoff=i,this.options.onCheckout?.(i)}};var Ao="seatlayer-season-picker-style";function Po(){if(document.getElementById(Ao))return;let n=document.createElement("style");n.id=Ao,n.textContent=`
2707
2820
  .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)}
2708
2821
  .sl-season-root *{box-sizing:border-box}.sl-season-root button,.sl-season-root summary{font:inherit}
2709
2822
  .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}
@@ -2717,4 +2830,4 @@ import{a as Es,c as Bt,d as Ke,e as Nt,f as mt}from"./chunk-ZE36NABM.js";import{
2717
2830
  .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}
2718
2831
  @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}}
2719
2832
  @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}}
2720
- `,document.head.appendChild(s)}var Sc="https://api.seatlayer.io",Tc=6e4,Cc=5e3,z=class extends Error{constructor(t,i){super(`season_request_failed:${t}`);this.code=t;this.status=i;this.name="SeasonApiError"}},xi=class extends Error{constructor(t){super(`season_operation_timeout:${t}`);this.operationId=t;this.name="SeasonRecoveryTimeoutError"}};function Ec(s,e){let t=Number(s.headers.get("Retry-After")),i=Number.isFinite(t)&&t>=0?t:e.retryAfterSeconds;return Math.max(0,Math.min(Cc,i*1e3))}function Ac(s,e){return e?.aborted?Promise.reject(e.reason??new DOMException("Aborted","AbortError")):new Promise((t,i)=>{let n=setTimeout(t,s);e?.addEventListener("abort",()=>{clearTimeout(n),i(e.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function Pc(s){if(!s||typeof s!="object")return"unknown";let e=s;return typeof e.code=="string"?e.code:typeof e.error=="string"?e.error:"unknown"}var Lc=/^shc_[a-f0-9]{40}$/,Mc=/^shh_[a-f0-9]{40}$/,Hc=new Set(["preparing","commit_pending","committed","expire_pending","booking_pending","abort_pending","aborted","partial_terminal","expired","booked"]),Ic=new Set(["pending","prepared","refused","applied","expired","booked","aborted"]);function gs(s){return Array.isArray(s)?s.some(gs):!s||typeof s!="object"?!1:Object.entries(s).some(([e,t])=>e==="childHoldId"||e==="child_hold_id"||e==="holdId"&&typeof t=="string"&&Lc.test(t)||gs(t))}function It(s,e,t="invalid_operation_response"){if(!s||typeof s!="object"||Array.isArray(s))throw new z(t,502);if(gs(s))throw new z("unsafe_operation_response",502);let i=s,n=i.allocations,r=new Set,o=Array.isArray(n)&&n.length>0&&n.every(d=>{if(!d||typeof d!="object")return!1;let u=d.eventId,h=d.state;return typeof u!="string"||!u||typeof h!="string"||!Ic.has(h)||r.has(u)?!1:(r.add(u),!0)}),a=i.bookingRef===null||typeof i.bookingRef=="string"&&i.bookingRef.length>0,l=i.state!=="booked"||typeof i.bookingRef=="string"&&o&&n.every(d=>d.state==="booked"),c=i.state!=="booking_pending"||typeof i.bookingRef=="string"&&o&&n.some(d=>d.state!=="booked"),p=i.state!=="committed"||i.bookingRef===null;if(i.operationId!==e.operationId||i.seasonId!==e.seasonId||i.kind!=="HOLD"||typeof i.holdId!="string"||!Mc.test(i.holdId)||i.policy!=="fixed_inclusion_same_seat"||typeof i.state!="string"||!Hc.has(i.state)||typeof i.expiresAt!="number"||!Number.isFinite(i.expiresAt)||i.expiresAt<0||!a||typeof i.location!="string"||!i.location||typeof i.retryAfterSeconds!="number"||!Number.isFinite(i.retryAfterSeconds)||i.retryAfterSeconds<0||!o||!l||!c||!p||i.pricingAuthority!==void 0&&i.pricingAuthority!=="host"||i.authoritativeAmountIncluded!==void 0&&i.authoritativeAmountIncluded!==!1)throw new z(t,502);return{operationId:i.operationId,seasonId:i.seasonId,kind:i.kind,holdId:i.holdId,expiresAt:i.expiresAt,policy:i.policy,pricingAuthority:"host",authoritativeAmountIncluded:!1,state:i.state,bookingRef:i.bookingRef,location:i.location,retryAfterSeconds:i.retryAfterSeconds,allocations:n.map(d=>({eventId:d.eventId,state:d.state}))}}function Oc(s,e,t){if(!Array.isArray(s)||s.length!==t||s.some(o=>typeof o!="string"||!o)||new Set(s).size!==s.length||!Array.isArray(e)||e.length!==s.length)throw new z("invalid_best_available_response",502);let i=s,n=new Set(i),r=new Map;for(let o of e){if(!o||typeof o!="object")throw new z("invalid_best_available_response",502);let a=o;if(typeof a.label!="string"||!n.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 z("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:i,items:i.map(o=>r.get(o))}}function ho(s,e){return{seasonKey:s.key,planActivationId:s.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:i})=>({eventKey:t,state:i}))}}var de,at,me,lt,Ot,fe,ge,se,ue,uo,wi=class{constructor(e,t){R(this,se);R(this,de);R(this,at);R(this,me);R(this,lt);R(this,Ot);R(this,fe,!1);R(this,ge,null);C(this,de,e),C(this,at,(t.apiBase??Sc).replace(/\/$/,"")),C(this,me,t.access),C(this,lt,t.fetch??globalThis.fetch.bind(globalThis)),C(this,Ot,t.recoveryTimeoutMs??Tc),f(this,me).onRenewed(i=>E(this,se,uo).call(this,i))}async descriptor(){let{body:e}=await E(this,se,ue).call(this,"GET","");return e.season}async chart(){let{body:e}=await E(this,se,ue).call(this,"GET","/chart");return e}async availability(){let{body:e}=await E(this,se,ue).call(this,"GET","/availability"),t=Object.values(e.seats??{});return{...e,freeCount:t.filter(i=>i==="free").length,blockedCount:t.filter(i=>i!=="free").length}}async hold(e,t){let{body:i,response:n}=await E(this,se,ue).call(this,"POST","/holds",{operationId:t,labels:[...e]});return{operation:It(i.operation,{seasonId:f(this,de),operationId:t}),response:n}}async bestAvailable(e){let{body:t,response:i}=await E(this,se,ue).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}:{}}),n=It(t.operation,{seasonId:f(this,de),operationId:e.operationId},"invalid_best_available_response"),{labels:r,items:o}=Oc(t.labels,t.items,e.qty);return{operation:n,labels:r,items:o,response:i}}async operation(e){let{body:t,response:i}=await E(this,se,ue).call(this,"GET",`/operations/${encodeURIComponent(e)}`);return{operation:It(t.operation,{seasonId:f(this,de),operationId:e}),response:i}}async release(e,t){let{body:i,response:n}=await E(this,se,ue).call(this,"POST",`/holds/${encodeURIComponent(e)}/release`,{releaseActionId:t});return{operation:It(i.operation,{seasonId:f(this,de),operationId:e}),response:n}}async renewalIntent(e){let{body:t}=await E(this,se,ue).call(this,"POST","/renewal-intents",{offerId:e}),i=t.intent;if(!i||i.offerId!==e||i.state!=="intent_received"||!i.intentId||!Number.isFinite(i.receivedAt))throw new z("invalid_renewal_intent_response",502);return i}async waitForTerminal(e,t,i){let n=Date.now(),r=t?{operation:It(t.operation,{seasonId:f(this,de),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()-n>=f(this,Ot))throw new xi(e);await Ac(Ec(r.response,r.operation),i),r=await this.operation(e)}return r.operation}destroy(){f(this,fe)||(C(this,fe,!0),f(this,me).onRenewed(void 0),f(this,me).clear())}};de=new WeakMap,at=new WeakMap,me=new WeakMap,lt=new WeakMap,Ot=new WeakMap,fe=new WeakMap,ge=new WeakMap,se=new WeakSet,ue=async function(e,t,i,n=!0){if(f(this,fe))throw new z("season_api_destroyed",409);if(f(this,ge))throw f(this,ge);let r=await f(this,me).authorization();if(f(this,fe))throw new z("season_api_destroyed",409);if(f(this,ge))throw f(this,ge);if(!r)throw new ae({reason:"no_token",retryable:!1});let o=await f(this,lt).call(this,`${f(this,at)}/pub/seasons/${encodeURIComponent(f(this,de))}${t}`,{method:e,headers:{Authorization:r,...i===void 0?{}:{"Content-Type":"application/json"}},body:i===void 0?void 0:JSON.stringify(i)}),a=await o.json().catch(()=>null);if(!o.ok){let l=Pc(a);if(n&&await f(this,me).handleFailure(o.status,l))return E(this,se,ue).call(this,e,t,i,!1);let c=f(this,me).unavailable;throw c?new ae(c):new z(l,o.status)}if(a===null)throw new z("invalid_json_response",502);return{body:a,response:o}},uo=async function(e){if(f(this,fe))return;let t=`/pub/seasons/${encodeURIComponent(f(this,de))}/session/adopt`;for(let i=0;i<2;i++){if(f(this,fe))return;try{if((await f(this,lt).call(this,`${f(this,at)}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit"})).ok){C(this,ge,null);return}}catch{}}if(!f(this,fe))throw C(this,ge,new z("season_session_adopt_failed",409)),f(this,ge)};var Rc=2500;function _c(s){let e=typeof s=="string"?document.querySelector(s):s;if(!e)throw new Error("seatlayer: Season picker container was not found");return e}function Dc(s,e,t){if(s.startsAt==null)return{date:"Date to be announced",time:null};try{let i=new Date(s.startsAt),n=e?{timeZone:e}:{};return{date:new Intl.DateTimeFormat(t,{dateStyle:"medium",...n}).format(i),time:new Intl.DateTimeFormat(t,{timeStyle:"short",...n}).format(i)}}catch{return{date:"Date to be announced",time:null}}}function mo(s){return s.state==="committed"||s.state==="booked"}var bs=class{constructor(e,t,i){this.transport=e;this.sink=t;this.intervalMs=i;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(([i,n])=>this.prior[i]!==n).map(([i,n])=>({label:i,status:n}));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))}}},vs=class{constructor(e,t){this.api=e;this.realtimePollMs=t;this.descriptorValue=null;this.availabilityValue=null;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 z("season_best_available_in_progress",409);let i={operationId:e,...t.accessibility?.length?{accessibility:[...t.accessibility]}:{},...t.requireContiguous===!0?{requireContiguous:!0}:{}};return this.nextBestAvailable=i,i}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,i]=await Promise.all([this.descriptorValue?Promise.resolve(this.descriptorValue):this.api.descriptor(),this.api.chart()]);return this.descriptorValue=t,{doc:i,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,i,n){if(n)throw new z("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(!mo(a))throw new z(`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,i){let n=this.operationForHold(i);if(!n)throw new z("season_hold_not_found",404);let r=this.nextReleaseActionId??`sra_${crypto.randomUUID()}`;this.nextReleaseActionId=null;let o=await this.api.release(n.operationId,r),a=await this.api.waitForTerminal(n.operationId,o);if(a.state==="partial_terminal")throw this.remember(a),new z("season_operation_partial_terminal",409);this.forget(i)}async bestAvailable(e,t,i,n){let r=this.nextBestAvailable;this.nextBestAvailable=null;let o=r?.operationId??`sop_${crypto.randomUUID()}`,a=await this.api.bestAvailable({operationId:o,qty:t,...i?{categoryKey:i}:{},...n?{zoneId:n}:{},...r?.accessibility?.length?{accessibility:r.accessibility}:{},...r?.requireContiguous===!0?{requireContiguous:!0}:{}}),l=await this.api.waitForTerminal(o,a);if(!mo(l))throw new z(`season_operation_${l.state}`,409);this.remember(l);let c=new Map(a.items.map(p=>[p.label,p]));return{holdId:l.holdId,expiresAt:l.expiresAt,labels:[...a.labels],items:a.labels.map(p=>{let d=c.get(p);return{label:p,objectId:d?.objectId??p,objectType:"seat",categoryKey:d?.categoryKey??i??"",tierId:d?.tierId??null,unitPrice:0,currency:this.descriptorValue?.currency??"USD",...d?.quantity==null?{}:{quantity:d.quantity}}})}}socketUrl(){return""}createRealtime(e,t){return new bs(this,t,this.realtimePollMs)}},D,Ge,Rt,be,X,_t,oe,Te,j,te,Ce,ht,Ie,Ee,qe,Ae,Oe,ut,P,fo,go,bo,xs,ki,ct,dt,W,je,ws,pt,ys=class{constructor(e){R(this,P);R(this,D);R(this,Ge);R(this,Rt);R(this,be);R(this,X);R(this,_t,new AbortController);R(this,oe,null);R(this,Te,null);R(this,j,null);R(this,te,null);R(this,Ce,null);R(this,ht,null);R(this,Ie,null);R(this,Ee,null);R(this,qe,null);R(this,Ae,[]);R(this,Oe,!1);R(this,ut,!1);if(!e?.season)throw new Error("seatlayer: `season` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider)throw new Error("seatlayer: Season buyer access is required");if("event"in e||"performanceGroup"in e)throw new Error("seatlayer: SeasonPicker is not SeatPicker or PerformanceGroupPicker");C(this,D,e),C(this,Ge,_c(e.container)),C(this,Rt,new pe({token:e.buyerAccessToken,provider:e.buyerAccessTokenProvider,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable})),C(this,be,new wi(e.season,{apiBase:e.apiBase,access:f(this,Rt),fetch:e.fetch,recoveryTimeoutMs:e.recoveryTimeoutMs})),C(this,X,new vs(f(this,be),Math.max(750,e.realtimePollMs??Rc)))}async render(){E(this,P,ws).call(this),po(),E(this,P,go).call(this),E(this,P,W).call(this,{kind:"loading",message:"Loading Season seats available for every performance."},!0);try{let[e,t]=await Promise.all([f(this,be).descriptor(),f(this,be).availability()]);return f(this,Oe)?this:(C(this,oe,e),C(this,Te,t),f(this,X).prime(e,t),E(this,P,bo).call(this),await E(this,P,fo).call(this,e),E(this,P,W).call(this,{kind:"ready",message:`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every included performance.`}),f(this,D).initialOperationId&&await this.restoreOperation(f(this,D).initialOperationId),this)}catch(e){if(f(this,Oe))return this;throw E(this,P,je).call(this,e),e}}async holdSameSeat(e,t){if(E(this,P,pt).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(f(this,X).queueOperation(t),f(this,te).selectObjectsWithoutConfirmation([...e]),E(this,P,W).call(this,{kind:"pending",message:"Holding the same seats for every performance.",operationId:t},!0),await f(this,te).handleCta(),!f(this,j))throw new z("season_hold_not_created",409);return f(this,j)}async holdBestAvailable(e,t,i={}){if(E(this,P,pt).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 n=f(this,te).maxTickets;if(e>n)throw new Error(`seatlayer: Best Available quantity cannot exceed the configured maximum (${n})`);if(f(this,ut))throw new z("season_best_available_in_progress",409);C(this,ut,!0);let r=null;try{if(r=f(this,X).queueBestAvailable(t,i),E(this,P,W).call(this,{kind:"pending",message:`Finding ${e} Season seat${e===1?"":"s"} available for every performance.`,operationId:t},!0),!await f(this,te).bestAvailableOrThrow(e,i.categoryKey,{zoneId:i.zoneId})||!f(this,j))throw new z("season_hold_not_created",409);return f(this,j)}catch(o){throw E(this,P,je).call(this,o,t),o}finally{r&&f(this,X).clearBestAvailable(r),C(this,ut,!1)}}async restoreOperation(e){E(this,P,pt).call(this),E(this,P,W).call(this,{kind:"pending",message:"Restoring your Season selection.",operationId:e},!0);try{let t=await f(this,be).waitForTerminal(e,void 0,f(this,_t).signal);return t.state==="aborted"||t.state==="expired"?(C(this,j,null),f(this,D).onHoldChange?.(null),E(this,P,W).call(this,{kind:"released",message:"The previous Season selection is no longer held.",operationId:e}),null):(f(this,X).remember(t),E(this,P,xs).call(this,t,!1))}catch(t){throw E(this,P,je).call(this,t,e),t}}async release(e){E(this,P,pt).call(this);let t=f(this,j);if(t){if(!e)throw new Error("seatlayer: caller-stable release action id is required");f(this,X).queueRelease(e),E(this,P,W).call(this,{kind:"pending",message:"Releasing the Season seats.",operationId:t.operationId},!0);try{f(this,te)?.getCurrentHold()?.holdId===t.holdId?await f(this,te).release():(await f(this,X).release("",[],t.holdId),E(this,P,ki).call(this)),E(this,P,W).call(this,{kind:"released",message:"The Season seats were released.",operationId:t.operationId})}catch(i){throw E(this,P,je).call(this,i,t.operationId),i}}}async createRenewalIntent(e){if(E(this,P,pt).call(this),!e.startsWith("sro_"))throw new Error("seatlayer: Season renewal offer id is required");E(this,P,W).call(this,{kind:"pending",message:"Recording renewal intent. No purchase is made in the browser."},!0);try{let t=await f(this,be).renewalIntent(e);return E(this,P,W).call(this,{kind:"renewal_intent",message:"Renewal intent recorded. Your ticketing platform will confirm price, payment, and renewal."}),f(this,D).onRenewalIntent?.(t),t}catch(t){throw E(this,P,je).call(this,t),t}}getDescriptor(){return f(this,oe)}getAvailability(){return f(this,Te)}getHandoff(){return f(this,j)}destroy(){f(this,Oe)||(C(this,Oe,!0),f(this,_t).abort(),f(this,te)?.destroy(),f(this,be).destroy(),f(this,Ge).replaceChildren(),C(this,Ce,null),C(this,ht,null),C(this,Ie,null),C(this,Ee,null),C(this,qe,null),C(this,oe,null),C(this,Te,null),C(this,j,null))}};D=new WeakMap,Ge=new WeakMap,Rt=new WeakMap,be=new WeakMap,X=new WeakMap,_t=new WeakMap,oe=new WeakMap,Te=new WeakMap,j=new WeakMap,te=new WeakMap,Ce=new WeakMap,ht=new WeakMap,Ie=new WeakMap,Ee=new WeakMap,qe=new WeakMap,Ae=new WeakMap,Oe=new WeakMap,ut=new WeakMap,P=new WeakSet,fo=async function(e){let t=new ze(mi({container:f(this,ht),event:e.key,apiBase:f(this,D).apiBase,transport:f(this,X),hideEventDetails:!0,maxSelection:f(this,D).maxSelection,selectedObjects:f(this,D).selectedObjects,selectableObjects:f(this,D).selectableObjects,numberOfPlacesToSelect:f(this,D).numberOfPlacesToSelect,selectionValidators:f(this,D).selectionValidators,locale:f(this,D).locale,messages:f(this,D).messages,languages:f(this,D).languages,colorblindSafe:f(this,D).colorblindSafe,initialView:f(this,D).initialView,enable3D:f(this,D).enable3D,max3DSeats:f(this,D).max3DSeats,hideBadge:f(this,D).hideBadge,theme:f(this,D).theme,confirmSelection:f(this,D).confirmSelection,seatView:f(this,D).seatView,onBuyerViewChange:f(this,D).onBuyerViewChange,onAnalytics:(i,n)=>{try{f(this,D).onAnalytics?.(i,{...n,metricScope:"season",seasonKey:e.key,planActivationId:e.planActivationId,performanceCount:e.occurrenceCount})}catch{}},onSelectionChange:i=>{C(this,Ae,i.map(n=>n.label)),E(this,P,ct).call(this),f(this,D).onSelectionChange?.(i)},onSelectionValidityChange:f(this,D).onSelectionValidityChange,onHoldChange:i=>{if(!i){E(this,P,ki).call(this);return}let n=f(this,X).operationForHold(i.holdId);n&&E(this,P,xs).call(this,n,!0)},onCheckout:()=>{f(this,j)&&(E(this,P,dt).call(this,"checkout"),f(this,D).onContinue?.(f(this,j)))},onHoldExpired:()=>{E(this,P,ki).call(this),E(this,P,W).call(this,{kind:"released",message:"The Season hold expired. Choose seats again."}),f(this,D).onHoldExpired?.()},onError:i=>E(this,P,je).call(this,i)},{surface:"season",performanceCount:e.occurrenceCount,selectionMode:"same_seat",suppressPricing:!0,groupSelectionSummary:()=>{let i=f(this,Ae).length;return i?{seats:i,performances:e.occurrenceCount,performancesChosen:e.occurrenceCount,perPerformance:i}:null}}));C(this,te,t),await t.render()},go=function(){f(this,Ge).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 i=document.createElement("ol");i.className="sl-season-progress",i.setAttribute("aria-label","Season checkout progress");for(let[m,v]of["Choose seats","Review package","Checkout"].entries()){let k=document.createElement("li");k.dataset.state=m===0?"current":"upcoming";let S=document.createElement("span");S.textContent=String(m+1),k.append(S,v),i.append(k)}let n=document.createElement("div");n.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 p=document.createElement("i");p.textContent="1\xD7";let d=document.createElement("span");d.textContent="Each seat you choose is reserved for every included performance.",c.append(p,d);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),n.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,i,n,g),f(this,Ge).append(e),C(this,Ce,e),C(this,ht,r),C(this,Ie,g),C(this,Ee,l),C(this,qe,u)},bo=function(){let e=f(this,oe),t=f(this,D).offer,i=f(this,Ce).querySelector(".sl-season-hero");i.replaceChildren();let n=document.createElement("div");n.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 m of[`${e.occurrenceCount} performances`,e.venue,t?.renewalLabel??"Same-seat package"].filter(Boolean)){let v=document.createElement("span");v.className="sl-season-fact",v.textContent=m,l.append(v)}n.append(r,o,a,l),i.append(n);let c=document.createElement("div");c.className="sl-season-offer";let p=document.createElement("span");p.className="sl-season-offer-label",p.textContent=t?.priceLabel?"Season package":"Package price";let d=document.createElement(t?.priceLabel?"strong":"span");if(d.className=t?.priceLabel?"sl-season-price":"sl-season-price-note",d.textContent=t?.priceLabel??"Confirmed by your ticketing platform at checkout",c.append(p,d),t?.compareAtPriceLabel){let m=document.createElement("span");m.className="sl-season-was",m.textContent=t.compareAtPriceLabel,c.append(m)}if(t?.savingsLabel){let m=document.createElement("span");m.className="sl-season-saving",m.textContent=t.savingsLabel,c.append(m)}if(t?.priceNote){let m=document.createElement("span");m.className="sl-season-price-note",m.textContent=t.priceNote,c.append(m)}if(i.append(c),t?.benefits?.length){let m=document.createElement("ul");m.className="sl-season-benefits";for(let v of t.benefits.slice(0,6)){let k=document.createElement("li");k.textContent=v,m.append(k)}i.append(m)}let u=document.createElement("details");u.className="sl-season-dates";let h=document.createElement("summary");h.textContent=`All ${e.occurrenceCount} performances included`;let g=document.createElement("ol");g.className="sl-season-date-list";for(let m of e.occurrences){let v=document.createElement("li");v.className="sl-season-date";let k=document.createElement("b");k.textContent=m.name;let S=Dc(m,e.timezone,f(this,D).locale),L=document.createElement("time");m.startsAt!=null&&(L.dateTime=new Date(m.startsAt).toISOString()),L.textContent=S.time?`${S.date} \xB7 ${S.time}`:S.date,v.append(k,L),g.append(v)}u.append(h,g),i.append(u),E(this,P,ct).call(this)},xs=function(e,t){if(e.state==="booked")return C(this,j,null),f(this,X).forget(e.holdId),f(this,te)?.notifyGroupSettled("booked"),E(this,P,dt).call(this,"complete"),E(this,P,W).call(this,{kind:"booked",message:`Your Season booking is complete for all ${f(this,oe).occurrenceCount} performances. No further checkout action is needed.`,operationId:e.operationId}),f(this,D).onHoldChange?.(null),null;if(e.state==="partial_terminal")return C(this,j,null),C(this,Ae,[]),f(this,X).forget(e.holdId),f(this,te)?.notifyGroupSettled("lost"),E(this,P,ct).call(this),E(this,P,dt).call(this,"review"),E(this,P,W).call(this,{kind:"partial_terminal",message:"This Season selection needs organizer review. Do not try another selection.",operationId:e.operationId}),f(this,D).onHoldChange?.(null),null;if(e.state!=="committed")return C(this,j,null),f(this,X).forget(e.holdId),f(this,te)?.notifyGroupSettled("lost"),E(this,P,W).call(this,{kind:"failed",message:"The Season selection could not be completed.",operationId:e.operationId}),f(this,D).onHoldChange?.(null),null;let i=ho(f(this,oe),e),n=f(this,j)?.holdId!==i.holdId;return C(this,j,i),E(this,P,ct).call(this),E(this,P,dt).call(this,"review"),f(this,D).onHoldChange?.(i),E(this,P,W).call(this,{kind:"held",message:`Your seats are held for all ${f(this,oe).occurrenceCount} performances. Review and continue to checkout.`,operationId:e.operationId}),n&&t&&f(this,D).onHold?.(i),i},ki=function(){C(this,j,null),C(this,Ae,[]),E(this,P,ct).call(this),E(this,P,dt).call(this,"choose"),f(this,D).onHoldChange?.(null)},ct=function(){if(!f(this,Ee))return;let e=f(this,Ae).length;if(!e)f(this,Ee).textContent="Choose a seat on the map. Unavailable seats are already booked on at least one included performance.";else{f(this,Ee).replaceChildren();let t=document.createElement("strong");t.textContent=f(this,Ae).join(", "),f(this,Ee).append(t,` \xB7 ${e} Season seat${e===1?"":"s"} across all ${f(this,oe)?.occurrenceCount??0} performances`)}f(this,qe)&&f(this,Te)&&(f(this,qe).textContent=`${f(this,Te).freeCount} seat${f(this,Te).freeCount===1?"":"s"} currently available for the complete Season`)},dt=function(e){let t=e==="choose"?0:e==="review"?1:e==="checkout"?2:3;f(this,Ce)?.querySelectorAll(".sl-season-progress li").forEach((i,n)=>{i.dataset.state=n<t?"done":n===t?"current":"upcoming";let r=i.querySelector("span");r&&(r.textContent=n<t?"\u2713":String(n+1))})},W=function(e,t=!1){f(this,Ie)&&(f(this,Ie).textContent=e.message,f(this,Ie).dataset.kind=e.kind),f(this,Ce)&&(f(this,Ce).dataset.busy=String(t)),f(this,D).onStatusChange?.(e)},je=function(e,t){let i=e instanceof z?`Season selection unavailable (${e.code}).`:"Season selection could not be completed.";E(this,P,W).call(this,{kind:"failed",message:i,operationId:t}),f(this,D).onError?.(e)},ws=function(){if(f(this,Oe))throw new Error("seatlayer: SeasonPicker was destroyed")},pt=function(){if(E(this,P,ws).call(this),!f(this,oe)||!f(this,te))throw new Error("seatlayer: render SeasonPicker before using it")};function Bc(s,e={}){let t=e.origin??"";if(!t)try{t=new URL(s.src,window.location.href).origin}catch{t=""}let i=!1,n=null,r=null,o=null,a="",l=null,c=()=>{if(i)return;i=!0,n=s.getAttribute("style"),Object.assign(s.style,{position:"fixed",inset:"0",width:"100vw",height:"100vh",margin:"0",border:"0",zIndex:"2147483000",background:"#101625"});let u=document.documentElement;r=u.style.overflow,u.style.overflow="hidden",document.body&&(o=document.body.style.overflow,document.body.style.overflow="hidden"),l=h=>{h.key==="Escape"&&p()},window.addEventListener("keydown",l)},p=()=>{i&&(i=!1,n===null?s.removeAttribute("style"):s.setAttribute("style",n),n=null,a&&(s.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))},d=u=>{if(u.source!==s.contentWindow||t&&u.origin!==t||!u.data||typeof u.data!="object")return;let h=u.data;if(h.type==="seatlayer:height"){typeof h.px=="number"&&Number.isFinite(h.px)&&h.px>0&&(a=`${Math.round(h.px)}px`,i||(s.style.height=a));return}h.type==="seatlayer:fullscreen"&&(h.on===!0?c():h.on===!1&&p())};return window.addEventListener("message",d),()=>{window.removeEventListener("message",d),p()}}export{$ as ApiError,pe as BuyerAccessContext,ae as BuyerAccessUnavailableError,ve as BuyerRealtimeClient,Vi as EmbeddedDesigner,q as PerformanceGroupDestroyedError,fs as PerformanceGroupPicker,yn as SEATING_CHART_CALLBACK_PROPS,gn as SEATING_CHART_HANDLE_METHODS,bn as SEATING_CHART_IDENTITY_PROPS,vn as SEATING_CHART_VALUE_PROPS,z as SeasonApiError,ys as SeasonPicker,xi as SeasonRecoveryTimeoutError,ze as SeatPicker,Ni as SeatingChart,Bc as attachPickerFrame,La as bindSeatingChartHandle,Ma as buildSeatingChartOptions,xt as createBuyerAccessContext,ft as createControllerSink,zi as parseTicketOfferAvailability,Ht as shortOperationReference,ji as ticketOfferPrices};
2833
+ `,document.head.appendChild(n)}var Xc="https://api.seatlayer.io",Zc=6e4,Jc=5e3,z=class extends Error{constructor(t,i){super(`season_request_failed:${t}`);this.code=t;this.status=i;this.name="SeasonApiError"}},Pi=class extends Error{constructor(t){super(`season_operation_timeout:${t}`);this.operationId=t;this.name="SeasonRecoveryTimeoutError"}};function ed(n,e){let t=Number(n.headers.get("Retry-After")),i=Number.isFinite(t)&&t>=0?t:e.retryAfterSeconds;return Math.max(0,Math.min(Jc,i*1e3))}function td(n,e){return e?.aborted?Promise.reject(e.reason??new DOMException("Aborted","AbortError")):new Promise((t,i)=>{let s=setTimeout(t,n);e?.addEventListener("abort",()=>{clearTimeout(s),i(e.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function id(n){if(!n||typeof n!="object")return"unknown";let e=n;return typeof e.code=="string"?e.code:typeof e.error=="string"?e.error:"unknown"}var nd=/^shc_[a-f0-9]{40}$/,sd=/^shh_[a-f0-9]{40}$/,rd=new Set(["preparing","commit_pending","committed","expire_pending","booking_pending","abort_pending","aborted","partial_terminal","expired","booked"]),od=new Set(["pending","prepared","refused","applied","expired","booked","aborted"]);function An(n){return Array.isArray(n)?n.some(An):!n||typeof n!="object"?!1:Object.entries(n).some(([e,t])=>e==="childHoldId"||e==="child_hold_id"||e==="holdId"&&typeof t=="string"&&nd.test(t)||An(t))}function It(n,e,t="invalid_operation_response"){if(!n||typeof n!="object"||Array.isArray(n))throw new z(t,502);if(An(n))throw new z("unsafe_operation_response",502);let i=n,s=i.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"||!od.has(h)||r.has(u)?!1:(r.add(u),!0)}),a=i.bookingRef===null||typeof i.bookingRef=="string"&&i.bookingRef.length>0,l=i.state!=="booked"||typeof i.bookingRef=="string"&&o&&s.every(p=>p.state==="booked"),c=i.state!=="booking_pending"||typeof i.bookingRef=="string"&&o&&s.some(p=>p.state!=="booked"),d=i.state!=="committed"||i.bookingRef===null;if(i.operationId!==e.operationId||i.seasonId!==e.seasonId||i.kind!=="HOLD"||typeof i.holdId!="string"||!sd.test(i.holdId)||i.policy!=="fixed_inclusion_same_seat"||typeof i.state!="string"||!rd.has(i.state)||typeof i.expiresAt!="number"||!Number.isFinite(i.expiresAt)||i.expiresAt<0||!a||typeof i.location!="string"||!i.location||typeof i.retryAfterSeconds!="number"||!Number.isFinite(i.retryAfterSeconds)||i.retryAfterSeconds<0||!o||!l||!c||!d||i.pricingAuthority!==void 0&&i.pricingAuthority!=="host"||i.authoritativeAmountIncluded!==void 0&&i.authoritativeAmountIncluded!==!1)throw new z(t,502);return{operationId:i.operationId,seasonId:i.seasonId,kind:i.kind,holdId:i.holdId,expiresAt:i.expiresAt,policy:i.policy,pricingAuthority:"host",authoritativeAmountIncluded:!1,state:i.state,bookingRef:i.bookingRef,location:i.location,retryAfterSeconds:i.retryAfterSeconds,allocations:s.map(p=>({eventId:p.eventId,state:p.state}))}}function ad(n,e,t){if(!Array.isArray(n)||n.length!==t||n.some(o=>typeof o!="string"||!o)||new Set(n).size!==n.length||!Array.isArray(e)||e.length!==n.length)throw new z("invalid_best_available_response",502);let i=n,s=new Set(i),r=new Map;for(let o of e){if(!o||typeof o!="object")throw new z("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 z("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:i,items:i.map(o=>r.get(o))}}function Lo(n,e){return{seasonKey:n.key,planActivationId:n.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:i})=>({eventKey:t,state:i}))}}var de,lt,me,ct,_t,fe,ge,ie,ue,Mo,Li=class{constructor(e,t){_(this,ie);_(this,de);_(this,lt);_(this,me);_(this,ct);_(this,_t);_(this,fe,!1);_(this,ge,null);T(this,de,e),T(this,lt,(t.apiBase??Xc).replace(/\/$/,"")),T(this,me,t.access),T(this,ct,t.fetch??globalThis.fetch.bind(globalThis)),T(this,_t,t.recoveryTimeoutMs??Zc),f(this,me).onRenewed(i=>C(this,ie,Mo).call(this,i))}async descriptor(){let{body:e}=await C(this,ie,ue).call(this,"GET","");return e.season}async chart(){let{body:e}=await C(this,ie,ue).call(this,"GET","/chart");return e}async availability(){let{body:e}=await C(this,ie,ue).call(this,"GET","/availability"),t=Object.values(e.seats??{});return{...e,freeCount:t.filter(i=>i==="free").length,blockedCount:t.filter(i=>i!=="free").length}}async hold(e,t){let{body:i,response:s}=await C(this,ie,ue).call(this,"POST","/holds",{operationId:t,labels:[...e]});return{operation:It(i.operation,{seasonId:f(this,de),operationId:t}),response:s}}async bestAvailable(e){let{body:t,response:i}=await C(this,ie,ue).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=It(t.operation,{seasonId:f(this,de),operationId:e.operationId},"invalid_best_available_response"),{labels:r,items:o}=ad(t.labels,t.items,e.qty);return{operation:s,labels:r,items:o,response:i}}async operation(e){let{body:t,response:i}=await C(this,ie,ue).call(this,"GET",`/operations/${encodeURIComponent(e)}`);return{operation:It(t.operation,{seasonId:f(this,de),operationId:e}),response:i}}async release(e,t){let{body:i,response:s}=await C(this,ie,ue).call(this,"POST",`/holds/${encodeURIComponent(e)}/release`,{releaseActionId:t});return{operation:It(i.operation,{seasonId:f(this,de),operationId:e}),response:s}}async renewalIntent(e){let{body:t}=await C(this,ie,ue).call(this,"POST","/renewal-intents",{offerId:e}),i=t.intent;if(!i||i.offerId!==e||i.state!=="intent_received"||!i.intentId||!Number.isFinite(i.receivedAt))throw new z("invalid_renewal_intent_response",502);return i}async waitForTerminal(e,t,i){let s=Date.now(),r=t?{operation:It(t.operation,{seasonId:f(this,de),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>=f(this,_t))throw new Pi(e);await td(ed(r.response,r.operation),i),r=await this.operation(e)}return r.operation}destroy(){f(this,fe)||(T(this,fe,!0),f(this,me).onRenewed(void 0),f(this,me).clear())}};de=new WeakMap,lt=new WeakMap,me=new WeakMap,ct=new WeakMap,_t=new WeakMap,fe=new WeakMap,ge=new WeakMap,ie=new WeakSet,ue=async function(e,t,i,s=!0){if(f(this,fe))throw new z("season_api_destroyed",409);if(f(this,ge))throw f(this,ge);let r=await f(this,me).authorization();if(f(this,fe))throw new z("season_api_destroyed",409);if(f(this,ge))throw f(this,ge);if(!r)throw new ae({reason:"no_token",retryable:!1});let o=await f(this,ct).call(this,`${f(this,lt)}/pub/seasons/${encodeURIComponent(f(this,de))}${t}`,{method:e,headers:{Authorization:r,...i===void 0?{}:{"Content-Type":"application/json"}},body:i===void 0?void 0:JSON.stringify(i)}),a=await o.json().catch(()=>null);if(!o.ok){let l=id(a);if(s&&await f(this,me).handleFailure(o.status,l))return C(this,ie,ue).call(this,e,t,i,!1);let c=f(this,me).unavailable;throw c?new ae(c):new z(l,o.status)}if(a===null)throw new z("invalid_json_response",502);return{body:a,response:o}},Mo=async function(e){if(f(this,fe))return;let t=`/pub/seasons/${encodeURIComponent(f(this,de))}/session/adopt`;for(let i=0;i<2;i++){if(f(this,fe))return;try{if((await f(this,ct).call(this,`${f(this,lt)}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({previousToken:e.previousToken}),credentials:"omit"})).ok){T(this,ge,null);return}}catch{}}if(!f(this,fe))throw T(this,ge,new z("season_session_adopt_failed",409)),f(this,ge)};var ld=2500;function cd(n){let e=typeof n=="string"?document.querySelector(n):n;if(!e)throw new Error("seatlayer: Season picker container was not found");return e}function dd(n,e,t){if(n.startsAt==null)return{date:"Date to be announced",time:null};try{let i=new Date(n.startsAt),s=e?{timeZone:e}:{};return{date:new Intl.DateTimeFormat(t,{dateStyle:"medium",...s}).format(i),time:new Intl.DateTimeFormat(t,{timeStyle:"short",...s}).format(i)}}catch{return{date:"Date to be announced",time:null}}}function Ho(n){return n.state==="committed"||n.state==="booked"}var Pn=class{constructor(e,t,i){this.transport=e;this.sink=t;this.intervalMs=i;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(([i,s])=>this.prior[i]!==s).map(([i,s])=>({label:i,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))}}},Ln=class{constructor(e,t){this.api=e;this.realtimePollMs=t;this.descriptorValue=null;this.availabilityValue=null;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 z("season_best_available_in_progress",409);let i={operationId:e,...t.accessibility?.length?{accessibility:[...t.accessibility]}:{},...t.requireContiguous===!0?{requireContiguous:!0}:{}};return this.nextBestAvailable=i,i}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,i]=await Promise.all([this.descriptorValue?Promise.resolve(this.descriptorValue):this.api.descriptor(),this.api.chart()]);return this.descriptorValue=t,{doc:i,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,i,s){if(s)throw new z("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(!Ho(a))throw new z(`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,i){let s=this.operationForHold(i);if(!s)throw new z("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 z("season_operation_partial_terminal",409);this.forget(i)}async bestAvailable(e,t,i,s){let r=this.nextBestAvailable;this.nextBestAvailable=null;let o=r?.operationId??`sop_${crypto.randomUUID()}`,a=await this.api.bestAvailable({operationId:o,qty:t,...i?{categoryKey:i}:{},...s?{zoneId:s}:{},...r?.accessibility?.length?{accessibility:r.accessibility}:{},...r?.requireContiguous===!0?{requireContiguous:!0}:{}}),l=await this.api.waitForTerminal(o,a);if(!Ho(l))throw new z(`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??i??"",tierId:p?.tierId??null,unitPrice:0,currency:this.descriptorValue?.currency??"USD",...p?.quantity==null?{}:{quantity:p.quantity}}})}}socketUrl(){return""}createRealtime(e,t){return new Pn(this,t,this.realtimePollMs)}},D,Ge,Dt,be,Q,Bt,oe,Te,j,ee,Ce,ut,Oe,Ee,qe,Ae,Re,mt,M,Oo,Ro,Io,Hn,Mi,dt,pt,K,je,On,ht,Mn=class{constructor(e){_(this,M);_(this,D);_(this,Ge);_(this,Dt);_(this,be);_(this,Q);_(this,Bt,new AbortController);_(this,oe,null);_(this,Te,null);_(this,j,null);_(this,ee,null);_(this,Ce,null);_(this,ut,null);_(this,Oe,null);_(this,Ee,null);_(this,qe,null);_(this,Ae,[]);_(this,Re,!1);_(this,mt,!1);if(!e?.season)throw new Error("seatlayer: `season` key is required");if(!e.container)throw new Error("seatlayer: `container` is required");if(!e.buyerAccessToken&&!e.buyerAccessTokenProvider)throw new Error("seatlayer: Season buyer access is required");if("event"in e||"performanceGroup"in e)throw new Error("seatlayer: SeasonPicker is not SeatPicker or PerformanceGroupPicker");T(this,D,e),T(this,Ge,cd(e.container)),T(this,Dt,new pe({token:e.buyerAccessToken,provider:e.buyerAccessTokenProvider,onExpired:e.onAccessExpired,onUnavailable:e.onAccessUnavailable})),T(this,be,new Li(e.season,{apiBase:e.apiBase,access:f(this,Dt),fetch:e.fetch,recoveryTimeoutMs:e.recoveryTimeoutMs})),T(this,Q,new Ln(f(this,be),Math.max(750,e.realtimePollMs??ld)))}async render(){C(this,M,On).call(this),Po(),C(this,M,Ro).call(this),C(this,M,K).call(this,{kind:"loading",message:"Loading Season seats available for every performance."},!0);try{let[e,t]=await Promise.all([f(this,be).descriptor(),f(this,be).availability()]);return f(this,Re)?this:(T(this,oe,e),T(this,Te,t),f(this,Q).prime(e,t),C(this,M,Io).call(this),await C(this,M,Oo).call(this,e),C(this,M,K).call(this,{kind:"ready",message:`${t.freeCount} seat${t.freeCount===1?"":"s"} available for every included performance.`}),f(this,D).initialOperationId&&await this.restoreOperation(f(this,D).initialOperationId),this)}catch(e){if(f(this,Re))return this;throw C(this,M,je).call(this,e),e}}async holdSameSeat(e,t){if(C(this,M,ht).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(f(this,Q).queueOperation(t),f(this,ee).selectObjectsWithoutConfirmation([...e]),C(this,M,K).call(this,{kind:"pending",message:"Holding the same seats for every performance.",operationId:t},!0),await f(this,ee).handleCta(),!f(this,j))throw new z("season_hold_not_created",409);return f(this,j)}async holdBestAvailable(e,t,i={}){if(C(this,M,ht).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=f(this,ee).maxTickets;if(e>s)throw new Error(`seatlayer: Best Available quantity cannot exceed the configured maximum (${s})`);if(f(this,mt))throw new z("season_best_available_in_progress",409);T(this,mt,!0);let r=null;try{if(r=f(this,Q).queueBestAvailable(t,i),C(this,M,K).call(this,{kind:"pending",message:`Finding ${e} Season seat${e===1?"":"s"} available for every performance.`,operationId:t},!0),!await f(this,ee).bestAvailableOrThrow(e,i.categoryKey,{zoneId:i.zoneId})||!f(this,j))throw new z("season_hold_not_created",409);return f(this,j)}catch(o){throw C(this,M,je).call(this,o,t),o}finally{r&&f(this,Q).clearBestAvailable(r),T(this,mt,!1)}}async restoreOperation(e){C(this,M,ht).call(this),C(this,M,K).call(this,{kind:"pending",message:"Restoring your Season selection.",operationId:e},!0);try{let t=await f(this,be).waitForTerminal(e,void 0,f(this,Bt).signal);return t.state==="aborted"||t.state==="expired"?(T(this,j,null),f(this,D).onHoldChange?.(null),C(this,M,K).call(this,{kind:"released",message:"The previous Season selection is no longer held.",operationId:e}),null):(f(this,Q).remember(t),C(this,M,Hn).call(this,t,!1))}catch(t){throw C(this,M,je).call(this,t,e),t}}async release(e){C(this,M,ht).call(this);let t=f(this,j);if(t){if(!e)throw new Error("seatlayer: caller-stable release action id is required");f(this,Q).queueRelease(e),C(this,M,K).call(this,{kind:"pending",message:"Releasing the Season seats.",operationId:t.operationId},!0);try{f(this,ee)?.getCurrentHold()?.holdId===t.holdId?await f(this,ee).release():(await f(this,Q).release("",[],t.holdId),C(this,M,Mi).call(this)),C(this,M,K).call(this,{kind:"released",message:"The Season seats were released.",operationId:t.operationId})}catch(i){throw C(this,M,je).call(this,i,t.operationId),i}}}async createRenewalIntent(e){if(C(this,M,ht).call(this),!e.startsWith("sro_"))throw new Error("seatlayer: Season renewal offer id is required");C(this,M,K).call(this,{kind:"pending",message:"Recording renewal intent. No purchase is made in the browser."},!0);try{let t=await f(this,be).renewalIntent(e);return C(this,M,K).call(this,{kind:"renewal_intent",message:"Renewal intent recorded. Your ticketing platform will confirm price, payment, and renewal."}),f(this,D).onRenewalIntent?.(t),t}catch(t){throw C(this,M,je).call(this,t),t}}getDescriptor(){return f(this,oe)}getAvailability(){return f(this,Te)}getHandoff(){return f(this,j)}destroy(){f(this,Re)||(T(this,Re,!0),f(this,Bt).abort(),f(this,ee)?.destroy(),f(this,be).destroy(),f(this,Ge).replaceChildren(),T(this,Ce,null),T(this,ut,null),T(this,Oe,null),T(this,Ee,null),T(this,qe,null),T(this,oe,null),T(this,Te,null),T(this,j,null))}};D=new WeakMap,Ge=new WeakMap,Dt=new WeakMap,be=new WeakMap,Q=new WeakMap,Bt=new WeakMap,oe=new WeakMap,Te=new WeakMap,j=new WeakMap,ee=new WeakMap,Ce=new WeakMap,ut=new WeakMap,Oe=new WeakMap,Ee=new WeakMap,qe=new WeakMap,Ae=new WeakMap,Re=new WeakMap,mt=new WeakMap,M=new WeakSet,Oo=async function(e){let t=new ze(Ei({container:f(this,ut),event:e.key,apiBase:f(this,D).apiBase,transport:f(this,Q),hideEventDetails:!0,maxSelection:f(this,D).maxSelection,selectedObjects:f(this,D).selectedObjects,selectableObjects:f(this,D).selectableObjects,numberOfPlacesToSelect:f(this,D).numberOfPlacesToSelect,selectionValidators:f(this,D).selectionValidators,locale:f(this,D).locale,messages:f(this,D).messages,languages:f(this,D).languages,colorblindSafe:f(this,D).colorblindSafe,initialView:f(this,D).initialView,enable3D:f(this,D).enable3D,max3DSeats:f(this,D).max3DSeats,hideBadge:f(this,D).hideBadge,theme:f(this,D).theme,confirmSelection:f(this,D).confirmSelection,seatView:f(this,D).seatView,onBuyerViewChange:f(this,D).onBuyerViewChange,onAnalytics:(i,s)=>{try{f(this,D).onAnalytics?.(i,{...s,metricScope:"season",seasonKey:e.key,planActivationId:e.planActivationId,performanceCount:e.occurrenceCount})}catch{}},onSelectionChange:i=>{T(this,Ae,i.map(s=>s.label)),C(this,M,dt).call(this),f(this,D).onSelectionChange?.(i)},onSelectionValidityChange:f(this,D).onSelectionValidityChange,onHoldChange:i=>{if(!i){C(this,M,Mi).call(this);return}let s=f(this,Q).operationForHold(i.holdId);s&&C(this,M,Hn).call(this,s,!0)},onCheckout:()=>{f(this,j)&&(C(this,M,pt).call(this,"checkout"),f(this,D).onContinue?.(f(this,j)))},onHoldExpired:()=>{C(this,M,Mi).call(this),C(this,M,K).call(this,{kind:"released",message:"The Season hold expired. Choose seats again."}),f(this,D).onHoldExpired?.()},onError:i=>C(this,M,je).call(this,i)},{surface:"season",performanceCount:e.occurrenceCount,selectionMode:"same_seat",suppressPricing:!0,groupSelectionSummary:()=>{let i=f(this,Ae).length;return i?{seats:i,performances:e.occurrenceCount,performancesChosen:e.occurrenceCount,perPerformance:i}:null}}));T(this,ee,t),await t.render()},Ro=function(){f(this,Ge).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 i=document.createElement("ol");i.className="sl-season-progress",i.setAttribute("aria-label","Season checkout progress");for(let[m,y]of["Choose seats","Review package","Checkout"].entries()){let w=document.createElement("li");w.dataset.state=m===0?"current":"upcoming";let x=document.createElement("span");x.textContent=String(m+1),w.append(x,y),i.append(w)}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,i,s,g),f(this,Ge).append(e),T(this,Ce,e),T(this,ut,r),T(this,Oe,g),T(this,Ee,l),T(this,qe,u)},Io=function(){let e=f(this,oe),t=f(this,D).offer,i=f(this,Ce).querySelector(".sl-season-hero");i.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 m of[`${e.occurrenceCount} performances`,e.venue,t?.renewalLabel??"Same-seat package"].filter(Boolean)){let y=document.createElement("span");y.className="sl-season-fact",y.textContent=m,l.append(y)}s.append(r,o,a,l),i.append(s);let c=document.createElement("div");c.className="sl-season-offer";let d=document.createElement("span");d.className="sl-season-offer-label",d.textContent=t?.priceLabel?"Season package":"Package price";let p=document.createElement(t?.priceLabel?"strong":"span");if(p.className=t?.priceLabel?"sl-season-price":"sl-season-price-note",p.textContent=t?.priceLabel??"Confirmed by your ticketing platform at checkout",c.append(d,p),t?.compareAtPriceLabel){let m=document.createElement("span");m.className="sl-season-was",m.textContent=t.compareAtPriceLabel,c.append(m)}if(t?.savingsLabel){let m=document.createElement("span");m.className="sl-season-saving",m.textContent=t.savingsLabel,c.append(m)}if(t?.priceNote){let m=document.createElement("span");m.className="sl-season-price-note",m.textContent=t.priceNote,c.append(m)}if(i.append(c),t?.benefits?.length){let m=document.createElement("ul");m.className="sl-season-benefits";for(let y of t.benefits.slice(0,6)){let w=document.createElement("li");w.textContent=y,m.append(w)}i.append(m)}let u=document.createElement("details");u.className="sl-season-dates";let h=document.createElement("summary");h.textContent=`All ${e.occurrenceCount} performances included`;let g=document.createElement("ol");g.className="sl-season-date-list";for(let m of e.occurrences){let y=document.createElement("li");y.className="sl-season-date";let w=document.createElement("b");w.textContent=m.name;let x=dd(m,e.timezone,f(this,D).locale),P=document.createElement("time");m.startsAt!=null&&(P.dateTime=new Date(m.startsAt).toISOString()),P.textContent=x.time?`${x.date} \xB7 ${x.time}`:x.date,y.append(w,P),g.append(y)}u.append(h,g),i.append(u),C(this,M,dt).call(this)},Hn=function(e,t){if(e.state==="booked")return T(this,j,null),f(this,Q).forget(e.holdId),f(this,ee)?.notifyGroupSettled("booked"),C(this,M,pt).call(this,"complete"),C(this,M,K).call(this,{kind:"booked",message:`Your Season booking is complete for all ${f(this,oe).occurrenceCount} performances. No further checkout action is needed.`,operationId:e.operationId}),f(this,D).onHoldChange?.(null),null;if(e.state==="partial_terminal")return T(this,j,null),T(this,Ae,[]),f(this,Q).forget(e.holdId),f(this,ee)?.notifyGroupSettled("lost"),C(this,M,dt).call(this),C(this,M,pt).call(this,"review"),C(this,M,K).call(this,{kind:"partial_terminal",message:"This Season selection needs organizer review. Do not try another selection.",operationId:e.operationId}),f(this,D).onHoldChange?.(null),null;if(e.state!=="committed")return T(this,j,null),f(this,Q).forget(e.holdId),f(this,ee)?.notifyGroupSettled("lost"),C(this,M,K).call(this,{kind:"failed",message:"The Season selection could not be completed.",operationId:e.operationId}),f(this,D).onHoldChange?.(null),null;let i=Lo(f(this,oe),e),s=f(this,j)?.holdId!==i.holdId;return T(this,j,i),C(this,M,dt).call(this),C(this,M,pt).call(this,"review"),f(this,D).onHoldChange?.(i),C(this,M,K).call(this,{kind:"held",message:`Your seats are held for all ${f(this,oe).occurrenceCount} performances. Review and continue to checkout.`,operationId:e.operationId}),s&&t&&f(this,D).onHold?.(i),i},Mi=function(){T(this,j,null),T(this,Ae,[]),C(this,M,dt).call(this),C(this,M,pt).call(this,"choose"),f(this,D).onHoldChange?.(null)},dt=function(){if(!f(this,Ee))return;let e=f(this,Ae).length;if(!e)f(this,Ee).textContent="Choose a seat on the map. Unavailable seats are already booked on at least one included performance.";else{f(this,Ee).replaceChildren();let t=document.createElement("strong");t.textContent=f(this,Ae).join(", "),f(this,Ee).append(t,` \xB7 ${e} Season seat${e===1?"":"s"} across all ${f(this,oe)?.occurrenceCount??0} performances`)}f(this,qe)&&f(this,Te)&&(f(this,qe).textContent=`${f(this,Te).freeCount} seat${f(this,Te).freeCount===1?"":"s"} currently available for the complete Season`)},pt=function(e){let t=e==="choose"?0:e==="review"?1:e==="checkout"?2:3;f(this,Ce)?.querySelectorAll(".sl-season-progress li").forEach((i,s)=>{i.dataset.state=s<t?"done":s===t?"current":"upcoming";let r=i.querySelector("span");r&&(r.textContent=s<t?"\u2713":String(s+1))})},K=function(e,t=!1){f(this,Oe)&&(f(this,Oe).textContent=e.message,f(this,Oe).dataset.kind=e.kind),f(this,Ce)&&(f(this,Ce).dataset.busy=String(t)),f(this,D).onStatusChange?.(e)},je=function(e,t){let i=e instanceof z?`Season selection unavailable (${e.code}).`:"Season selection could not be completed.";C(this,M,K).call(this,{kind:"failed",message:i,operationId:t}),f(this,D).onError?.(e)},On=function(){if(f(this,Re))throw new Error("seatlayer: SeasonPicker was destroyed")},ht=function(){if(C(this,M,On).call(this),!f(this,oe)||!f(this,ee))throw new Error("seatlayer: render SeasonPicker before using it")};function pd(n,e={}){let t=e.origin??"";if(!t)try{t=new URL(n.src,window.location.href).origin}catch{t=""}let i=!1,s=null,r=null,o=null,a="",l=null,c=()=>{if(i)return;i=!0,s=n.getAttribute("style"),Object.assign(n.style,{position:"fixed",inset:"0",width:"100vw",height:"100vh",margin:"0",border:"0",zIndex:"2147483000",background:"#101625"});let u=document.documentElement;r=u.style.overflow,u.style.overflow="hidden",document.body&&(o=document.body.style.overflow,document.body.style.overflow="hidden"),l=h=>{h.key==="Escape"&&d()},window.addEventListener("keydown",l)},d=()=>{i&&(i=!1,s===null?n.removeAttribute("style"):n.setAttribute("style",s),s=null,a&&(n.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))},p=u=>{if(u.source!==n.contentWindow||t&&u.origin!==t||!u.data||typeof u.data!="object")return;let h=u.data;if(h.type==="seatlayer:height"){typeof h.px=="number"&&Number.isFinite(h.px)&&h.px>0&&(a=`${Math.round(h.px)}px`,i||(n.style.height=a));return}h.type==="seatlayer:fullscreen"&&(h.on===!0?c():h.on===!1&&d())};return window.addEventListener("message",p),()=>{window.removeEventListener("message",p),d()}}export{$ as ApiError,pe as BuyerAccessContext,ae as BuyerAccessUnavailableError,ve as BuyerRealtimeClient,Ki as EmbeddedDesigner,q as PerformanceGroupDestroyedError,En as PerformanceGroupPicker,Ls as SEATING_CHART_CALLBACK_PROPS,Es as SEATING_CHART_HANDLE_METHODS,As as SEATING_CHART_IDENTITY_PROPS,Ps as SEATING_CHART_VALUE_PROPS,z as SeasonApiError,Mn as SeasonPicker,Pi as SeasonRecoveryTimeoutError,ze as SeatPicker,qi as SeatingChart,pd as attachPickerFrame,Ya as bindSeatingChartHandle,Qa as buildSeatingChartOptions,xt as createBuyerAccessContext,gt as createControllerSink,Xi as parseTicketOfferAvailability,Rt as shortOperationReference,Zi as ticketOfferPrices};