@seatlayer/core 0.67.12 → 0.67.14

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.
Files changed (79) hide show
  1. package/dist/{categoryInventory-C3RogGHF.d.ts → categoryInventory-B1bjit6B.d.ts} +1 -1
  2. package/dist/{categoryInventory-DEgsjxCC.d.cts → categoryInventory-CAHGQ07K.d.cts} +1 -1
  3. package/dist/chunk-52MZJZMW.js +1 -0
  4. package/dist/chunk-5BGP7S3Q.js +1 -0
  5. package/dist/{chunk-F4GG7KDS.js → chunk-BV6FHURE.js} +1 -1
  6. package/dist/chunk-CRCGO52K.js +1 -0
  7. package/dist/{chunk-5S3OQBZJ.js → chunk-HZT2U5IY.js} +1 -1
  8. package/dist/chunk-I6DNJFRF.js +1 -0
  9. package/dist/chunk-IO2A6P65.js +1 -0
  10. package/dist/chunk-IUQZK7OA.js +1 -0
  11. package/dist/{chunk-VI3IZS2B.js → chunk-OBBSZUYF.js} +1 -1
  12. package/dist/{chunk-V7PECHME.js → chunk-QYZ3P5L6.js} +1 -1
  13. package/dist/{chunk-L35GJOTC.js → chunk-RMNTGICO.js} +1 -1
  14. package/dist/chunk-Y2J55NLS.js +1 -0
  15. package/dist/core/chart-ops/index.cjs +1 -1
  16. package/dist/core/chart-ops/index.d.cts +78 -7
  17. package/dist/core/chart-ops/index.d.ts +78 -7
  18. package/dist/core/chart-ops/index.js +1 -1
  19. package/dist/core/inventory/index.cjs +1 -1
  20. package/dist/core/inventory/index.d.cts +4 -4
  21. package/dist/core/inventory/index.d.ts +4 -4
  22. package/dist/core/inventory/index.js +1 -1
  23. package/dist/core/layout/index.cjs +1 -1
  24. package/dist/core/layout/index.d.cts +4 -4
  25. package/dist/core/layout/index.d.ts +4 -4
  26. package/dist/core/layout/index.js +1 -1
  27. package/dist/core/quality/index.d.cts +3 -3
  28. package/dist/core/quality/index.d.ts +3 -3
  29. package/dist/core/render-assets/index.d.cts +1 -1
  30. package/dist/core/render-assets/index.d.ts +1 -1
  31. package/dist/core/seatConfidence.cjs +1 -1
  32. package/dist/core/seatConfidence.d.cts +5 -3
  33. package/dist/core/seatConfidence.d.ts +5 -3
  34. package/dist/core/seatConfidence.js +1 -1
  35. package/dist/core/sections/index.cjs +1 -1
  36. package/dist/core/sections/index.d.cts +5 -5
  37. package/dist/core/sections/index.d.ts +5 -5
  38. package/dist/core/sections/index.js +1 -1
  39. package/dist/eventConfigurations-D66ZLfYS.d.cts +132 -0
  40. package/dist/eventConfigurations-IWEhHywT.d.ts +132 -0
  41. package/dist/index.cjs +1 -1
  42. package/dist/index.d.cts +32 -11
  43. package/dist/index.d.ts +32 -11
  44. package/dist/index.js +1 -1
  45. package/dist/{labeling-DRFC35VK.d.cts → labeling-BCiv5l6e.d.cts} +1 -1
  46. package/dist/{labeling-DTHo03rf.d.ts → labeling-DO9p-xLj.d.ts} +1 -1
  47. package/dist/{layout-wVlsj-_w.d.cts → layout-BUz3xFCE.d.cts} +7 -3
  48. package/dist/{layout-BSb0-47G.d.ts → layout-DzuyZFRr.d.ts} +7 -3
  49. package/dist/{openPanorama-ALLZ6ADE.js → openPanorama-HGRYMWKC.js} +1 -1
  50. package/dist/{renderedQuality-8i9bYccr.d.cts → renderedQuality-L1g0XZ0i.d.cts} +1 -1
  51. package/dist/{renderedQuality-CbHiqt1W.d.ts → renderedQuality-Xaar1aMI.d.ts} +1 -1
  52. package/dist/{renderer-BxLV6zjl.d.ts → renderer-BQuknAQY.d.ts} +3 -1
  53. package/dist/{renderer-DOVelTZw.d.cts → renderer-DyVuc7SF.d.cts} +3 -1
  54. package/dist/{sections-D2bxgVgg.d.cts → sections-CkMXEJEf.d.cts} +1 -1
  55. package/dist/{sections-BrQV1WzI.d.ts → sections-j5aC-O5u.d.ts} +1 -1
  56. package/dist/{segmentedRowModel-Cl3X8SKt.d.ts → segmentedRowModel-CLLfsLFG.d.ts} +1 -1
  57. package/dist/{segmentedRowModel-BQYSdf7k.d.cts → segmentedRowModel-DhcYIheF.d.cts} +1 -1
  58. package/dist/{ticketRestrictions-D0GRRQ3i.d.cts → ticketRestrictions-AgAcdcYP.d.cts} +2 -2
  59. package/dist/{ticketRestrictions-SteRFSGg.d.ts → ticketRestrictions-BJVsVMnP.d.ts} +2 -2
  60. package/dist/{types-DmgX-iuD.d.cts → types-BKw6Dn_O.d.cts} +49 -3
  61. package/dist/{types-DmgX-iuD.d.ts → types-BKw6Dn_O.d.ts} +49 -3
  62. package/dist/view/panoramaDelivery.cjs +1 -1
  63. package/dist/view/panoramaDelivery.d.cts +5 -0
  64. package/dist/view/panoramaDelivery.d.ts +5 -0
  65. package/dist/view/panoramaDelivery.js +1 -1
  66. package/dist/view3d/crossfade/panorama.cjs +1 -1
  67. package/dist/view3d/crossfade/panorama.d.cts +7 -1
  68. package/dist/view3d/crossfade/panorama.d.ts +7 -1
  69. package/dist/view3d/crossfade/panorama.js +1 -1
  70. package/dist/view3d/index.cjs +52 -33
  71. package/dist/view3d/index.d.cts +39 -2
  72. package/dist/view3d/index.d.ts +39 -2
  73. package/dist/view3d/index.js +50 -31
  74. package/package.json +1 -1
  75. package/dist/chunk-EQM4FFN5.js +0 -1
  76. package/dist/chunk-IJI4WU57.js +0 -1
  77. package/dist/chunk-TTTRXXAA.js +0 -1
  78. package/dist/chunk-XHXBFFWR.js +0 -1
  79. package/dist/chunk-XPPT3OGQ.js +0 -1
@@ -1,4 +1,4 @@
1
- import { C as ChartDoc, R as RowObject, T as TableObject } from './types-DmgX-iuD.js';
1
+ import { C as ChartDoc, R as RowObject, T as TableObject } from './types-BKw6Dn_O.js';
2
2
 
3
3
  /**
4
4
  * A category is a commercial definition for exactly one kind of inventory.
@@ -1,4 +1,4 @@
1
- import { C as ChartDoc, R as RowObject, T as TableObject } from './types-DmgX-iuD.cjs';
1
+ import { C as ChartDoc, R as RowObject, T as TableObject } from './types-BKw6Dn_O.cjs';
2
2
 
3
3
  /**
4
4
  * A category is a commercial definition for exactly one kind of inventory.
@@ -0,0 +1 @@
1
+ import{c as K,d as Y,e as _,f as j}from"./chunk-5BGP7S3Q.js";function se(t){let o=t.mediaKind==="demo-render",i=t.generated||t.mediaKind==="model"?"Live 3D \xB7 chart-derived seat-eye":o?t.coverage==="exact-seat"?"AI-generated exact-seat demo":t.coverage==="row-representative"?"AI-generated representative row demo":t.coverage==="section-representative"?"AI-generated representative section demo":t.coverage==="floor-representative"?"AI-generated representative floor demo":"AI-generated illustrative venue demo":t.coverage==="exact-seat"?"Exact seat photo":t.coverage==="row-representative"?"Representative row view":t.coverage==="section-representative"?"Representative section view":t.coverage==="floor-representative"?"Representative floor view":t.coverage==="venue-representative"?"Representative venue view":"Venue photo",u=t.capturedAt&&/^\d{4}/.test(t.capturedAt)?t.capturedAt.slice(0,4):"";return[i,u?`${o?"created":"captured"} ${u}`:"",t.sourceLabel??""].filter(Boolean).join(" \xB7 ")}function le(t){if(t.generated||t.mediaKind==="model"||t.mediaKind==="demo-render")return!1;let o=t.sourceLabel?.trim()??"";return!/^(?:AI[- ]generated|generated\s+(?:demo|preview))/i.test(o)}var G=70,ee=35,te=90;function ne(t){return Math.max(ee,Math.min(te,t))}var re=35;function oe(t,o,i){let u=(.5+t/360)*i;return o/2-u}function ie(t,o=G){return t*(180/o)}function B(t,o,i){return(t-o)/2+L(i,o)}function L(t,o){let i=re/180*o;return Math.max(-i,Math.min(i,t))}function ce(t,o,i={}){let u=i.fadeMs??400,N=o.initialBearingDeg??0,g=Y(o,K()),b=new AbortController,U=()=>b.abort();i.signal?.addEventListener("abort",U,{once:!0});let a=document.createElement("div"),$=document.activeElement instanceof HTMLElement?document.activeElement:null;a.setAttribute("role","dialog"),a.setAttribute("aria-modal","true"),a.setAttribute("aria-label",i.seatLabel?`View from ${i.seatLabel}`:"View from seat"),a.tabIndex=-1,Object.assign(a.style,{position:"absolute",inset:"0",zIndex:"10",opacity:"0",transition:`opacity ${u}ms ease`,background:"#05070c",overflow:"hidden",touchAction:"none"});let r=document.createElement("div");Object.assign(r.style,{position:"absolute",inset:"0",backgroundImage:`url("${g.initialUrl}")`,backgroundRepeat:"repeat-x",cursor:"grab"}),a.appendChild(r);let d=document.createElement("button");if(d.type="button",d.setAttribute("aria-label","Close"),d.textContent="\u2715",Object.assign(d.style,{position:"absolute",top:"12px",right:"12px",zIndex:"2",width:"44px",height:"44px",borderRadius:"999px",cursor:"pointer",border:"1px solid rgba(255,255,255,0.25)",background:"rgba(8,12,18,0.6)",color:"#e6edf3",fontSize:"15px",lineHeight:"1"}),a.appendChild(d),i.disclosure){let e=document.createElement("div");e.textContent=`${i.disclosurePrefix??"360\xB0 panorama"} \xB7 ${i.disclosure}`,Object.assign(e.style,{position:"absolute",top:"12px",left:"12px",zIndex:"2",maxWidth:"calc(100% - 88px)",padding:"8px 11px",borderRadius:"999px",overflow:"hidden",color:"#dce6f8",background:"rgba(8,12,18,0.68)",font:"600 11px/1.2 ui-sans-serif, system-ui, sans-serif",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",backdropFilter:"blur(6px)"}),a.appendChild(e)}let C=document.createElement("div");C.textContent="Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close",Object.assign(C.style,{position:"absolute",bottom:"12px",left:"0",right:"0",textAlign:"center",color:"rgba(230,237,243,0.7)",font:"12px ui-sans-serif, system-ui, sans-serif",pointerEvents:"none"}),a.appendChild(C),t.appendChild(a),d.focus({preventScroll:!0});let v=0,s=0,p=0,c=0,m=G,y=()=>{let e=a.clientHeight||1,n=a.clientWidth||1,M=f.naturalWidth||n*2,J=f.naturalHeight||e,Q=v>0?(n/2-p)/v:0,Z=s>0?c/s:0;s=ie(e,m),v=s*(M/J),r.style.backgroundSize=`${v}px ${s}px`,H?p=n/2-Q*v:(p=oe(N,n,v),c=L((o.initialPitchDeg??0)/180*s,s),H=!0),c=L(Z*s,s),r.style.backgroundPosition=`${p}px ${B(e,s,c)}px`},H=!1,O=()=>{let e=a.clientHeight||1;c=L(c,s),r.style.backgroundPosition=`${p}px ${B(e,s,c)}px`},f=new Image;f.onload=y,f.src=g.initialUrl;let z=()=>{};g.upgradeUrl&&(z=j(()=>{(o.resolveUrl?o.resolveUrl(g.upgradeUrl):Promise.resolve(g.upgradeUrl)).then(n=>!n||b.signal.aborted?null:_(n,b.signal).then(M=>({full:M,url:n}))).then(n=>{n&&(I||b.signal.aborted||(f=n.full,r.style.backgroundImage=`url("${n.url}")`,y()))}).catch(()=>{})})),requestAnimationFrame(y);let w=!1,E=0,P=0,x=0,l=new Map,D=()=>{let[e,n]=[...l.values()];return e&&n?Math.hypot(e.x-n.x,e.y-n.y):0},A=e=>{let n=ne(e);n!==m&&(m=n,y())},F=e=>{l.set(e.pointerId,{x:e.clientX,y:e.clientY}),w=l.size===1,E=e.clientX,P=e.clientY,l.size===2&&(x=D()),r.style.cursor="grabbing";try{r.setPointerCapture?.(e.pointerId)}catch{}},R=e=>{if(l.has(e.pointerId)){if(l.set(e.pointerId,{x:e.clientX,y:e.clientY}),l.size>=2){let n=D();x>0&&n>0&&A(m*(x/n)),x=n,w=!1;return}w&&(p+=e.clientX-E,c+=e.clientY-P,E=e.clientX,P=e.clientY,O())}},S=e=>{l.delete(e.pointerId),x=l.size===2?D():0;let n=l.values().next().value;w=l.size===1,n?(E=n.x,P=n.y):r.style.cursor="grab";try{r.releasePointerCapture?.(e.pointerId)}catch{}},W=e=>{e.preventDefault(),A(m+e.deltaY*.04)};r.addEventListener("pointerdown",F),r.addEventListener("pointermove",R),r.addEventListener("pointerup",S),r.addEventListener("pointercancel",S),r.addEventListener("wheel",W,{passive:!1});let k=!1,I=!1,h=0,q=()=>{r.removeEventListener("pointerdown",F),r.removeEventListener("pointermove",R),r.removeEventListener("pointerup",S),r.removeEventListener("pointercancel",S),r.removeEventListener("wheel",W),window.removeEventListener("keydown",T)},X=()=>{z(),b.abort(),i.signal?.removeEventListener("abort",U),h&&(window.clearTimeout(h),h=0),q(),a.parentNode&&a.parentNode.removeChild(a),$?.isConnected&&$.focus({preventScroll:!0})},V=()=>{if(k)return;k=!0,a.style.opacity="0";let e=()=>{h=0,!I&&(X(),i.onClose?.())};h=window.setTimeout(e,u)},T=e=>{if(e.key==="Tab"){e.preventDefault(),d.focus({preventScroll:!0});return}if(e.key==="Escape"){e.stopPropagation(),V();return}if(e.key==="ArrowLeft"||e.key==="ArrowRight")p+=e.key==="ArrowLeft"?-32:32;else if(e.key==="ArrowUp"||e.key==="ArrowDown")c+=(e.key==="ArrowUp"?4:-4)*(s/180);else if(e.key==="+"||e.key==="="){A(m-5),e.preventDefault();return}else if(e.key==="-"){A(m+5),e.preventDefault();return}else return;e.preventDefault(),O()};return window.addEventListener("keydown",T),d.addEventListener("click",V),requestAnimationFrame(()=>{a.style.opacity="1"}),{close:V,dispose(){k=!0,I=!0,X()}}}export{se as a,le as b,G as c,ne as d,re as e,oe as f,ie as g,B as h,L as i,ce as j};
@@ -0,0 +1 @@
1
+ function d(e,r){return!Number.isFinite(e)||!Number.isFinite(r)||e<=0||r<=0?0:Math.ceil(e*r*4*(4/3))}function h(e){return(e!==void 0&&e<=2?32:e!==void 0&&e>=8?192:96)*1024*1024}function c(e){let r=typeof navigator>"u"?void 0:navigator;return{saveData:r?.connection?.saveData===!0,maxTextureSize:e,maxDecodedBytes:h(r?.deviceMemory)}}function g(e,r={}){let a=e.previewUrl?.trim();if(!a||a===e.url)return{initialUrl:e.url,initialWidth:e.sourceWidth,initialHeight:e.sourceHeight,reason:"full-only"};let n={initialUrl:a,initialWidth:e.previewWidth,initialHeight:e.previewHeight};if(r.saveData)return{...n,reason:"save-data"};let i=[...e.variants??[],...e.sourceWidth!==void 0&&e.sourceHeight!==void 0?[{url:e.url,width:e.sourceWidth,height:e.sourceHeight}]:[]].filter(t=>t.url.trim()&&t.url!==a&&Number.isFinite(t.width)&&t.width>0&&Number.isFinite(t.height)&&t.height>0).sort((t,l)=>t.width*t.height-l.width*l.height);if(!i.length)return{...n,upgradeUrl:e.url,reason:"progressive"};let u=i.filter(t=>r.maxTextureSize===void 0||Math.max(t.width,t.height)<=r.maxTextureSize);if(!u.length)return{...n,reason:"texture-limit"};let s=u.filter(t=>r.maxDecodedBytes===void 0||d(t.width,t.height)<=r.maxDecodedBytes);if(!s.length)return{...n,reason:"memory-limit"};let o=s[s.length-1];return{...n,upgradeUrl:o.url,reason:"progressive"}}function m(){return new DOMException("Panorama image load aborted","AbortError")}function b(e,r){return new Promise((a,n)=>{if(r?.aborted){n(m());return}let i=new Image;i.crossOrigin="anonymous";let u=!1,s=()=>{i.onload=null,i.onerror=null,r?.removeEventListener("abort",t)},o=l=>{u||(u=!0,s(),l?n(l):a(i))},t=()=>{i.src="",o(m())};i.onload=()=>{(typeof i.decode=="function"?i.decode():Promise.resolve()).then(()=>o(),()=>o())},i.onerror=()=>o(new Error("panorama_image_failed")),r?.addEventListener("abort",t,{once:!0}),i.src=e})}function v(e){let r=globalThis;if(r.requestIdleCallback){let n=r.requestIdleCallback(e,{timeout:1200});return()=>r.cancelIdleCallback?.(n)}let a=globalThis.setTimeout(e,32);return()=>globalThis.clearTimeout(a)}export{d as a,h as b,c,g as d,b as e,v as f};
@@ -1 +1 @@
1
- import{ia as Y}from"./chunk-XHXBFFWR.js";function nn(c){return{kind:"radial",rowCount:0,rows:[],nearestRow:()=>-1,depthAt:(l,a)=>Math.hypot(l-c.x,a-c.y),gradientAt:(l,a)=>{let e=l-c.x,f=a-c.y,i=Math.hypot(e,f);return i<1e-9?[0,0]:[e/i,f/i]}}}function tn(c,l){if(!c.length)return null;let a=0,e=0,f=0;for(let n of c)a+=n.x,e+=n.y,f+=Math.hypot(n.x-l.x,n.y-l.y);let i=c.length;a/=i,e/=i,f/=i;let u=c[0],R=-1;for(let n of c){let o=Math.hypot(n.x-a,n.y-e);o>R&&(R=o,u=n)}let b=u.x-a,m=u.y-e,d=Math.hypot(b,m);d>1e-9?(b/=d,m/=d):(b=1,m=0);let y=[...c].sort((n,o)=>(n.x-a)*b+(n.y-e)*m-((o.x-a)*b+(o.y-e)*m)),t=0;for(let n of y){let o=Math.hypot(n.x-a,n.y-e);o>t&&(t=o)}return{pts:y,cx:a,cy:e,radius:t,depth:f}}function Z(c,l,a){let e=c.pts;if(e.length===1)return Math.hypot(l-e[0].x,a-e[0].y);let f=1/0;for(let i=0;i+1<e.length;i++){let u=e[i],R=e[i+1],b=R.x-u.x,m=R.y-u.y,d=b*b+m*m,y=d>1e-12?((l-u.x)*b+(a-u.y)*m)/d:0;y<0?y=0:y>1&&(y=1);let t=Math.hypot(l-(u.x+y*b),a-(u.y+y*m));t<f&&(f=t)}return f}var U=8;function en(c,l,a){let e=new Array(U).fill(1/0),f=new Array(U).fill(-1);for(let d=0;d<c.length;d++){let y=c[d],t=Math.hypot(l-y.cx,a-y.cy)-y.radius;for(let n=0;n<U;n++)if(t<e[n]){for(let o=U-1;o>n;o--)e[o]=e[o-1],f[o]=f[o-1];e[n]=t,f[n]=d;break}}let i=new Array(3).fill(1/0),u=new Array(3).fill(-1);for(let d of f){if(d<0)continue;let y=Z(c[d],l,a);for(let t=0;t<3;t++)if(y<i[t]){for(let n=2;n>t;n--)i[n]=i[n-1],u[n]=u[n-1];i[t]=y,u[t]=d;break}}if(u[0]<0)return 0;if(i[0]<1e-6)return c[u[0]].depth;let R=i[0]*2.2,b=0,m=0;for(let d=0;d<3;d++){let y=u[d];if(y<0||i[d]>R)continue;let t=1/(i[d]*i[d]);b+=t*c[y].depth,m+=t}return m>0?b/m:c[u[0]].depth}function on(c){let l=(e,f)=>en(c,e,f),a=(e,f)=>{let i=1/0,u=-1;for(let R=0;R<c.length;R++){let b=c[R];if(Math.hypot(e-b.cx,f-b.cy)-b.radius>=i)continue;let m=Z(b,e,f);m<i&&(i=m,u=R)}return u};return{kind:"rows",rowCount:c.length,rows:c,nearestRow:a,depthAt:l,gradientAt:(e,f)=>{let i=(l(e+.5,f)-l(e-.5,f))/1,u=(l(e,f+.5)-l(e,f-.5))/(2*.5),R=Math.hypot(i,u);return R<1e-9?[0,0]:[i/R,u/R]}}}function bn(c,l){let a=[];for(let e of c){let f=tn(e.points,l);f&&a.push(f)}return a.length<2?nn(l):(a.sort((e,f)=>e.depth-f.depth),on(a))}var rn=Math.PI/180,h=96,sn=6,ln=60,cn=150,$=.2,an=.35;function fn(c,l){let a=Math.atan2(l.x-c.x,l.y-c.y)/rn;return a<0?a+360:a}function z(c){if(!c.length)return NaN;let l=[...c].sort((a,e)=>a-e);return l[Math.floor(l.length/2)]}function J(c,l,a=2){let e=c.length,f=new Float64Array(e);for(let i=0;i<e;i++){let u=0,R=0;for(let b=-a;b<=a;b++){let m=i+b;if(l)m=(m%e+e)%e;else if(m<0||m>=e)continue;u+=c[m],R++}f[i]=u/R}return f}function hn(c,l){let a=c.filter(t=>t.rows.length>=1);if(a.length<1)return null;let e=[],f=0,i=0,u=0;for(let t of a)for(let n of t.rows){for(let o of n.pts)f+=o.x,i+=o.y,u++;if(n.pts.length>=4){let o=Y(n.pts);o&&Number.isFinite(o.cx)&&Number.isFinite(o.cy)&&e.push({x:o.cx,y:o.cy})}}if(!u)return null;let R={x:f/u,y:i/u},b=R;if(e.length>=8){let t=z(e.map(D=>D.x)),n=z(e.map(D=>D.y)),o=0;for(let D of a)for(let j of D.rows)for(let F of j.pts){let W=Math.hypot(F.x-R.x,F.y-R.y);W>o&&(o=W)}let B=0,S=o*.2;for(let D of a)for(let j of D.rows)for(let F of j.pts)Math.hypot(F.x-t,F.y-n)<S&&B++;Math.hypot(t-R.x,n-R.y)<=o&&B/u<.01&&(b={x:t,y:n})}let m=[];for(let t of a){let n={sectionId:t.sectionId,rMin:1/0,rMax:-1/0,samples:[]};for(let o of t.rows)for(let B of o.pts){let S=Math.hypot(B.x-b.x,B.y-b.y),D=Math.min(h-1,Math.floor(fn(b,B)/(360/h)));n.samples.push({r:S,bin:D,levelM:o.levelM}),S<n.rMin&&(n.rMin=S),S>n.rMax&&(n.rMax=S)}n.samples.length&&m.push(n)}if(!m.length)return null;m.sort((t,n)=>t.rMin+t.rMax-(n.rMin+n.rMax));let d=[];for(let t of m){let n=!1;for(let o of d){let B=Math.min(t.rMax,o.rMax)-Math.max(t.rMin,o.rMin),S=Math.min(t.rMax-t.rMin,o.rMax-o.rMin);if(S>1e-9&&B>=an*S){o.members.push(t),o.rMin=Math.min(o.rMin,t.rMin),o.rMax=Math.max(o.rMax,t.rMax),n=!0;break}}n||d.push({members:[t],rMin:t.rMin,rMax:t.rMax})}let y=[];for(let t of d){let n=new Array(h).fill(null);for(let r of t.members)for(let p of r.samples){let x=n[p.bin];x||(x={samples:[]},n[p.bin]=x),x.samples.push({r:p.r,levelM:p.levelM})}let o=n.map(r=>!!r);if(!o.filter(Boolean).length)continue;let S=[],D=[];for(let r of n){if(!r)continue;let p=1/0,x=-1/0;for(let A of r.samples)A.r<p&&(p=A.r),A.r>x&&(x=A.r);S.push(p),D.push(x)}let j=z(S),F=z(D);if(!(j>=$*F)||!(F>0))continue;let W=[...S].sort((r,p)=>r-p);if(!(W[Math.floor(W.length*.1)]>=$*F))continue;let V=n.map(r=>{if(!r)return null;let p=[...r.samples].sort((w,k)=>w.r-k.r),x=p[0].r,A=p[p.length-1].r,P=p[0].levelM,N=-1/0;for(let w of p)w.levelM>N&&(N=w.levelM);let M=[];for(let w of p){let k={r:w.r,l:w.levelM};for(;M.length&&Math.abs(M[M.length-1].r-k.r)<1e-9;){if(M[M.length-1].l<=k.l){k.skip=!0;break}M.pop()}if(!k.skip){for(;M.length>=2;){let L=M[M.length-2],v=M[M.length-1];if((v.r-L.r)*(k.l-L.l)-(v.l-L.l)*(k.r-L.r)<=0)M.pop();else break}M.push(k)}}let C=M.map(w=>w.r),_=M.map(w=>w.l);return{inner:x,outer:A,front:P,top:N,profile:{rs:C,ls:_}}}),O=o.slice();for(let r=0;r<h;r++){if(O[r])continue;let p=-1,x=-1,A=0;for(let s=1;s<=h;s++){let g=(r-s+h*2)%h;if(O[g]){p=g;break}}for(let s=1;s<=h;s++){let g=(r+s)%h;if(O[g]){x=g,A=s;break}}if(p<0||x<0)continue;let P=0;for(let s=1;s<=h;s++){let g=(r-s+h*2)%h;if(o[g]){P=s;break}}if(P-1+A>sn)continue;let M=V[p],C=V[x],_=P/(P+A),w=M.inner+(C.inner-M.inner)*_,k=M.outer+(C.outer-M.outer)*_,L=M.front+(C.front-M.front)*_,v=M.top+(C.top-M.top)*_;V[r]={inner:w,outer:k,front:L,top:v,profile:{rs:[w,k],ls:[L,v]}}}for(let r=0;r<h;r++)V[r]&&(O[r]=!0);let X=360/h,K=[],q=O.filter(Boolean).length,Q=[];if(q===h)Q.push({start:0,len:h});else{let r=0;for(;O[r];)r=(r+1)%h;let p=-1;for(let x=0;x<=h;x++){let A=(r+x)%h,P=x<h&&O[A];if(P&&p<0)p=A;else if(!P&&p>=0){let N=(A-p+h)%h||h;Q.push({start:p,len:N}),p=-1}}}for(let r of Q){if(r.len*X<ln&&r.len<h)continue;let p=r.len===h,x=new Float64Array(r.len),A=new Float64Array(r.len),P=new Float64Array(r.len),N=new Float64Array(r.len),M=[];for(let s=0;s<r.len;s++){let g=V[(r.start+s)%h];x[s]=g.inner,A[s]=g.outer,P[s]=g.front,N[s]=g.top,M.push(g.profile??{rs:[g.inner,g.outer],ls:[g.front,g.top]})}let C=J(x,p),_=J(A,p),w=J(P,p),k=J(N,p);for(let s=0;s<r.len;s++)C[s]>x[s]&&(C[s]=x[s]),_[s]<A[s]&&(_[s]=A[s]),C[s]>_[s]-1e-6&&(C[s]=Math.max(0,_[s]-1e-6)),k[s]<w[s]&&(k[s]=w[s]);let L={startBin:r.start,binCount:r.len,closed:p,innerR:C,outerR:_,frontLevelM:w,topLevelM:k,profiles:M},v=(s,g,I)=>{let H=M[s],T=H.rs,E=H.ls;if(g<=T[0]){E[0]>I&&(E[0]=I);return}if(g>=T[T.length-1]){E[E.length-1]>I&&(E[E.length-1]=I);return}for(let G=0;G+1<T.length;G++)if(g<=T[G+1]){E[G]>I&&(E[G]=I),E[G+1]>I&&(E[G+1]=I);return}};for(let s=0;s<r.len;s++){let g=n[(r.start+s)%h];if(g)for(let I of g.samples){v(s,I.r,I.levelM);let H=p?(s-1+r.len)%r.len:s-1,T=p?(s+1)%r.len:s+1;H>=0&&v(H,I.r,I.levelM),T<r.len&&v(T,I.r,I.levelM)}}K.push(L)}K.reduce((r,p)=>r+p.binCount*X,0)<cn||y.push({arcs:K,sectionIds:t.members.map(r=>r.sectionId),innerRMedian:j,outerRMedian:F})}if(!y.length)return null;if(y.sort((t,n)=>t.innerRMedian-n.innerRMedian),l){let t=y[y.length-1].outerRMedian;if(Math.hypot(l.x-b.x,l.y-b.y)>.9*t)return null}return{centre:b,binCount:h,binStepDeg:360/h,rings:y}}function dn(c,l,a,e){let f=c.binStepDeg,i=a/f-.5-l.startBin;i=(i%c.binCount+c.binCount)%c.binCount,i>l.binCount-1&&(l.closed?i=i-l.binCount<l.binCount-i?0:l.binCount-1:i=i-(l.binCount-1)<c.binCount-i?l.binCount-1:0);let u=Math.floor(i),R=l.closed?(u+1)%l.binCount:Math.min(l.binCount-1,u+1),b=i-u,m=d=>{let y=l.profiles[d],t=y.rs,n=y.ls;if(e<=t[0])return n[0];if(e>=t[t.length-1])return n[n.length-1];for(let o=0;o+1<t.length;o++)if(e<=t[o+1]){let B=t[o+1]-t[o],S=B>1e-9?(e-t[o])/B:0;return n[o]+(n[o+1]-n[o])*S}return n[n.length-1]};return m(u)*(1-b)+m(R)*b}export{bn as a,fn as b,hn as c,dn as d};
1
+ import{ia as Y}from"./chunk-I6DNJFRF.js";function nn(c){return{kind:"radial",rowCount:0,rows:[],nearestRow:()=>-1,depthAt:(l,a)=>Math.hypot(l-c.x,a-c.y),gradientAt:(l,a)=>{let e=l-c.x,f=a-c.y,i=Math.hypot(e,f);return i<1e-9?[0,0]:[e/i,f/i]}}}function tn(c,l){if(!c.length)return null;let a=0,e=0,f=0;for(let n of c)a+=n.x,e+=n.y,f+=Math.hypot(n.x-l.x,n.y-l.y);let i=c.length;a/=i,e/=i,f/=i;let u=c[0],R=-1;for(let n of c){let o=Math.hypot(n.x-a,n.y-e);o>R&&(R=o,u=n)}let b=u.x-a,m=u.y-e,d=Math.hypot(b,m);d>1e-9?(b/=d,m/=d):(b=1,m=0);let y=[...c].sort((n,o)=>(n.x-a)*b+(n.y-e)*m-((o.x-a)*b+(o.y-e)*m)),t=0;for(let n of y){let o=Math.hypot(n.x-a,n.y-e);o>t&&(t=o)}return{pts:y,cx:a,cy:e,radius:t,depth:f}}function Z(c,l,a){let e=c.pts;if(e.length===1)return Math.hypot(l-e[0].x,a-e[0].y);let f=1/0;for(let i=0;i+1<e.length;i++){let u=e[i],R=e[i+1],b=R.x-u.x,m=R.y-u.y,d=b*b+m*m,y=d>1e-12?((l-u.x)*b+(a-u.y)*m)/d:0;y<0?y=0:y>1&&(y=1);let t=Math.hypot(l-(u.x+y*b),a-(u.y+y*m));t<f&&(f=t)}return f}var U=8;function en(c,l,a){let e=new Array(U).fill(1/0),f=new Array(U).fill(-1);for(let d=0;d<c.length;d++){let y=c[d],t=Math.hypot(l-y.cx,a-y.cy)-y.radius;for(let n=0;n<U;n++)if(t<e[n]){for(let o=U-1;o>n;o--)e[o]=e[o-1],f[o]=f[o-1];e[n]=t,f[n]=d;break}}let i=new Array(3).fill(1/0),u=new Array(3).fill(-1);for(let d of f){if(d<0)continue;let y=Z(c[d],l,a);for(let t=0;t<3;t++)if(y<i[t]){for(let n=2;n>t;n--)i[n]=i[n-1],u[n]=u[n-1];i[t]=y,u[t]=d;break}}if(u[0]<0)return 0;if(i[0]<1e-6)return c[u[0]].depth;let R=i[0]*2.2,b=0,m=0;for(let d=0;d<3;d++){let y=u[d];if(y<0||i[d]>R)continue;let t=1/(i[d]*i[d]);b+=t*c[y].depth,m+=t}return m>0?b/m:c[u[0]].depth}function on(c){let l=(e,f)=>en(c,e,f),a=(e,f)=>{let i=1/0,u=-1;for(let R=0;R<c.length;R++){let b=c[R];if(Math.hypot(e-b.cx,f-b.cy)-b.radius>=i)continue;let m=Z(b,e,f);m<i&&(i=m,u=R)}return u};return{kind:"rows",rowCount:c.length,rows:c,nearestRow:a,depthAt:l,gradientAt:(e,f)=>{let i=(l(e+.5,f)-l(e-.5,f))/1,u=(l(e,f+.5)-l(e,f-.5))/(2*.5),R=Math.hypot(i,u);return R<1e-9?[0,0]:[i/R,u/R]}}}function bn(c,l){let a=[];for(let e of c){let f=tn(e.points,l);f&&a.push(f)}return a.length<2?nn(l):(a.sort((e,f)=>e.depth-f.depth),on(a))}var rn=Math.PI/180,h=96,sn=6,ln=60,cn=150,$=.2,an=.35;function fn(c,l){let a=Math.atan2(l.x-c.x,l.y-c.y)/rn;return a<0?a+360:a}function z(c){if(!c.length)return NaN;let l=[...c].sort((a,e)=>a-e);return l[Math.floor(l.length/2)]}function J(c,l,a=2){let e=c.length,f=new Float64Array(e);for(let i=0;i<e;i++){let u=0,R=0;for(let b=-a;b<=a;b++){let m=i+b;if(l)m=(m%e+e)%e;else if(m<0||m>=e)continue;u+=c[m],R++}f[i]=u/R}return f}function hn(c,l){let a=c.filter(t=>t.rows.length>=1);if(a.length<1)return null;let e=[],f=0,i=0,u=0;for(let t of a)for(let n of t.rows){for(let o of n.pts)f+=o.x,i+=o.y,u++;if(n.pts.length>=4){let o=Y(n.pts);o&&Number.isFinite(o.cx)&&Number.isFinite(o.cy)&&e.push({x:o.cx,y:o.cy})}}if(!u)return null;let R={x:f/u,y:i/u},b=R;if(e.length>=8){let t=z(e.map(D=>D.x)),n=z(e.map(D=>D.y)),o=0;for(let D of a)for(let j of D.rows)for(let F of j.pts){let W=Math.hypot(F.x-R.x,F.y-R.y);W>o&&(o=W)}let B=0,S=o*.2;for(let D of a)for(let j of D.rows)for(let F of j.pts)Math.hypot(F.x-t,F.y-n)<S&&B++;Math.hypot(t-R.x,n-R.y)<=o&&B/u<.01&&(b={x:t,y:n})}let m=[];for(let t of a){let n={sectionId:t.sectionId,rMin:1/0,rMax:-1/0,samples:[]};for(let o of t.rows)for(let B of o.pts){let S=Math.hypot(B.x-b.x,B.y-b.y),D=Math.min(h-1,Math.floor(fn(b,B)/(360/h)));n.samples.push({r:S,bin:D,levelM:o.levelM}),S<n.rMin&&(n.rMin=S),S>n.rMax&&(n.rMax=S)}n.samples.length&&m.push(n)}if(!m.length)return null;m.sort((t,n)=>t.rMin+t.rMax-(n.rMin+n.rMax));let d=[];for(let t of m){let n=!1;for(let o of d){let B=Math.min(t.rMax,o.rMax)-Math.max(t.rMin,o.rMin),S=Math.min(t.rMax-t.rMin,o.rMax-o.rMin);if(S>1e-9&&B>=an*S){o.members.push(t),o.rMin=Math.min(o.rMin,t.rMin),o.rMax=Math.max(o.rMax,t.rMax),n=!0;break}}n||d.push({members:[t],rMin:t.rMin,rMax:t.rMax})}let y=[];for(let t of d){let n=new Array(h).fill(null);for(let r of t.members)for(let p of r.samples){let x=n[p.bin];x||(x={samples:[]},n[p.bin]=x),x.samples.push({r:p.r,levelM:p.levelM})}let o=n.map(r=>!!r);if(!o.filter(Boolean).length)continue;let S=[],D=[];for(let r of n){if(!r)continue;let p=1/0,x=-1/0;for(let A of r.samples)A.r<p&&(p=A.r),A.r>x&&(x=A.r);S.push(p),D.push(x)}let j=z(S),F=z(D);if(!(j>=$*F)||!(F>0))continue;let W=[...S].sort((r,p)=>r-p);if(!(W[Math.floor(W.length*.1)]>=$*F))continue;let V=n.map(r=>{if(!r)return null;let p=[...r.samples].sort((w,k)=>w.r-k.r),x=p[0].r,A=p[p.length-1].r,P=p[0].levelM,N=-1/0;for(let w of p)w.levelM>N&&(N=w.levelM);let M=[];for(let w of p){let k={r:w.r,l:w.levelM};for(;M.length&&Math.abs(M[M.length-1].r-k.r)<1e-9;){if(M[M.length-1].l<=k.l){k.skip=!0;break}M.pop()}if(!k.skip){for(;M.length>=2;){let L=M[M.length-2],v=M[M.length-1];if((v.r-L.r)*(k.l-L.l)-(v.l-L.l)*(k.r-L.r)<=0)M.pop();else break}M.push(k)}}let C=M.map(w=>w.r),_=M.map(w=>w.l);return{inner:x,outer:A,front:P,top:N,profile:{rs:C,ls:_}}}),O=o.slice();for(let r=0;r<h;r++){if(O[r])continue;let p=-1,x=-1,A=0;for(let s=1;s<=h;s++){let g=(r-s+h*2)%h;if(O[g]){p=g;break}}for(let s=1;s<=h;s++){let g=(r+s)%h;if(O[g]){x=g,A=s;break}}if(p<0||x<0)continue;let P=0;for(let s=1;s<=h;s++){let g=(r-s+h*2)%h;if(o[g]){P=s;break}}if(P-1+A>sn)continue;let M=V[p],C=V[x],_=P/(P+A),w=M.inner+(C.inner-M.inner)*_,k=M.outer+(C.outer-M.outer)*_,L=M.front+(C.front-M.front)*_,v=M.top+(C.top-M.top)*_;V[r]={inner:w,outer:k,front:L,top:v,profile:{rs:[w,k],ls:[L,v]}}}for(let r=0;r<h;r++)V[r]&&(O[r]=!0);let X=360/h,K=[],q=O.filter(Boolean).length,Q=[];if(q===h)Q.push({start:0,len:h});else{let r=0;for(;O[r];)r=(r+1)%h;let p=-1;for(let x=0;x<=h;x++){let A=(r+x)%h,P=x<h&&O[A];if(P&&p<0)p=A;else if(!P&&p>=0){let N=(A-p+h)%h||h;Q.push({start:p,len:N}),p=-1}}}for(let r of Q){if(r.len*X<ln&&r.len<h)continue;let p=r.len===h,x=new Float64Array(r.len),A=new Float64Array(r.len),P=new Float64Array(r.len),N=new Float64Array(r.len),M=[];for(let s=0;s<r.len;s++){let g=V[(r.start+s)%h];x[s]=g.inner,A[s]=g.outer,P[s]=g.front,N[s]=g.top,M.push(g.profile??{rs:[g.inner,g.outer],ls:[g.front,g.top]})}let C=J(x,p),_=J(A,p),w=J(P,p),k=J(N,p);for(let s=0;s<r.len;s++)C[s]>x[s]&&(C[s]=x[s]),_[s]<A[s]&&(_[s]=A[s]),C[s]>_[s]-1e-6&&(C[s]=Math.max(0,_[s]-1e-6)),k[s]<w[s]&&(k[s]=w[s]);let L={startBin:r.start,binCount:r.len,closed:p,innerR:C,outerR:_,frontLevelM:w,topLevelM:k,profiles:M},v=(s,g,I)=>{let H=M[s],T=H.rs,E=H.ls;if(g<=T[0]){E[0]>I&&(E[0]=I);return}if(g>=T[T.length-1]){E[E.length-1]>I&&(E[E.length-1]=I);return}for(let G=0;G+1<T.length;G++)if(g<=T[G+1]){E[G]>I&&(E[G]=I),E[G+1]>I&&(E[G+1]=I);return}};for(let s=0;s<r.len;s++){let g=n[(r.start+s)%h];if(g)for(let I of g.samples){v(s,I.r,I.levelM);let H=p?(s-1+r.len)%r.len:s-1,T=p?(s+1)%r.len:s+1;H>=0&&v(H,I.r,I.levelM),T<r.len&&v(T,I.r,I.levelM)}}K.push(L)}K.reduce((r,p)=>r+p.binCount*X,0)<cn||y.push({arcs:K,sectionIds:t.members.map(r=>r.sectionId),innerRMedian:j,outerRMedian:F})}if(!y.length)return null;if(y.sort((t,n)=>t.innerRMedian-n.innerRMedian),l){let t=y[y.length-1].outerRMedian;if(Math.hypot(l.x-b.x,l.y-b.y)>.9*t)return null}return{centre:b,binCount:h,binStepDeg:360/h,rings:y}}function dn(c,l,a,e){let f=c.binStepDeg,i=a/f-.5-l.startBin;i=(i%c.binCount+c.binCount)%c.binCount,i>l.binCount-1&&(l.closed?i=i-l.binCount<l.binCount-i?0:l.binCount-1:i=i-(l.binCount-1)<c.binCount-i?l.binCount-1:0);let u=Math.floor(i),R=l.closed?(u+1)%l.binCount:Math.min(l.binCount-1,u+1),b=i-u,m=d=>{let y=l.profiles[d],t=y.rs,n=y.ls;if(e<=t[0])return n[0];if(e>=t[t.length-1])return n[n.length-1];for(let o=0;o+1<t.length;o++)if(e<=t[o+1]){let B=t[o+1]-t[o],S=B>1e-9?(e-t[o])/B:0;return n[o]+(n[o+1]-n[o])*S}return n[n.length-1]};return m(u)*(1-b)+m(R)*b}export{bn as a,fn as b,hn as c,dn as d};
@@ -0,0 +1 @@
1
+ var r=/^\d{4}-\d{2}-\d{2}$/;function s(e){let n=Date.parse(e);return Number.isFinite(n)?r.test(e)?n+864e5:n:null}function a(e,n=Date.now()){if(e.validUntil===void 0){if(e.status!=="approved")return!0;let i=e.assessedAt?Date.parse(e.assessedAt):Number.NaN;return Number.isFinite(i)&&(n instanceof Date?n.getTime():n)<=i+366*864e5}let t=s(e.validUntil);return t===null?!1:(n instanceof Date?n.getTime():n)<t}function o(e,n,t){return!(e.eventConfigurationId&&e.eventConfigurationId!==n||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==t)}function u(e){return e.status!=="draft"&&e.status!=="retracted"}function c(e,n){return e.status===void 0?n===void 0:e.status!=="approved"?!0:typeof n=="string"&&typeof e.basisSha256=="string"&&e.basisSha256===n}function f(e,n={}){return!!e&&u(e)&&o(e,n.activeConfigurationId,n.activeConfigurationVersion)&&c(e,n.activeBasisSha256)&&a(e,n.now)}export{a,u as b,f as c};
@@ -1 +1 @@
1
- import{Ba as d,oa as b,sa as p,ta as h,ya as I}from"./chunk-XHXBFFWR.js";var m="__sl_ga__",f=1e5,v=1e5;function j(t,e){return`${m}${encodeURIComponent(t)}__${e+1}`}function S(t){let e=t.inventorySegments;if(e===void 0)return!0;if(!Array.isArray(e)||e.length<1||e.length>256)return!1;let r=0,i=new Map;for(let o of e){if(!o||typeof o.sourceAreaId!="string"||!o.sourceAreaId.trim()||o.sourceAreaId.length>160||!Number.isInteger(o.startIndex)||o.startIndex<0||!Number.isInteger(o.count)||o.count<1||o.startIndex+o.count>f||(r+=o.count,r>f))return!1;let u=i.get(o.sourceAreaId)??[],n=o.startIndex+o.count;if(u.some(s=>o.startIndex<s.end&&n>s.start))return!1;u.push({start:o.startIndex,end:n}),i.set(o.sourceAreaId,u)}return r===t.capacity}function A(t){let e=Math.min(f,Math.max(0,Math.floor(t.capacity)));return t.inventorySegments===void 0?e?[{sourceAreaId:t.id,startIndex:0,count:e}]:[]:S(t)?t.inventorySegments.map(r=>({...r})):[]}function y(t){return A(t).flatMap(e=>Array.from({length:e.count},(r,i)=>j(e.sourceAreaId,e.startIndex+i)))}function M(t,e){if(t.inventorySegments===void 0||e===t.capacity)return t.inventorySegments;if(e<t.capacity)return;let r=A(t);if(!r.length)return;let i=e-t.capacity;if(!i)return r;let u=r.filter(s=>s.sourceAreaId===t.id).reduce((s,a)=>Math.max(s,a.startIndex+a.count),0),n=r[r.length-1];if(n?.sourceAreaId===t.id&&n.startIndex+n.count===u)n.count+=i;else{if(r.length>=256)return;r.push({sourceAreaId:t.id,startIndex:u,count:i})}return r}function R(t){return d(t).filter(e=>e.type==="gaArea")}function N(t){return t.startsWith(m)}var g="__ungrouped__";function x(t){return t.type==="row"?b(t).map(e=>e.label):t.type==="table"?p(t).map(e=>e.label):t.type==="booth"?h(t).map(e=>e.label):t.type==="gaArea"?y(t):[]}function O(t){return t.type==="row"||t.type==="table"||t.type==="booth"||t.type==="gaArea"}function _(t){let e=d(t),r=e.filter(n=>n.type==="section"),i=new Map;for(let n of r){let s=n.logicalSectionId??n.id;i.get(s)||i.set(s,{id:s,label:n.displayLabel||n.label||"Section",zone:n.zone,seatCount:0,objectIds:[],seatLabels:[]})}let o={id:g,label:"Other seats",seatCount:0,objectIds:[],seatLabels:[]},u=new Map;for(let n of e){if(!O(n))continue;let s=x(n);if(s.length===0)continue;let a=I(e,n),c=a?i.get(a.logicalSectionId??a.id):o;c.seatCount+=s.length,c.objectIds.push(n.id),c.seatLabels.push(...s),u.set(n.id,c.id)}return{sections:[...i.values()],ungrouped:o.objectIds.length?o:null,objectToSection:u}}function C(t,e){return e.has(t.id)||!!t.logicalSectionId&&e.has(t.logicalSectionId)||!!t.zone&&e.has(t.zone)}function G(t,e){let r=new Set;if(!e.size)return r;let{sections:i,ungrouped:o,objectToSection:u}=_(t),n=new Set,s=new Map(i.map(c=>[c.id,c.zone]));for(let c of i){let l=s.get(c.id);(e.has(c.id)||l&&e.has(l))&&n.add(c.id)}let a=!!o&&e.has(g);for(let[c,l]of u)(n.has(l)||a&&l===g)&&r.add(c);return r}function U(t,e){if(!e.size)return t;let r=G(t,e),i=e instanceof Set?e:new Set(e),o=n=>!(r.has(n.id)||n.type==="section"&&C(n,i));if(t.floors&&t.floors.length){let n=!1,s=t.floors.map(a=>{let c=a.objects.filter(o);return c.length!==a.objects.length&&(n=!0),c.length===a.objects.length?a:{...a,objects:c}});return n?{...t,floors:s,objects:s[0].objects}:t}let u=t.objects.filter(o);return u.length===t.objects.length?t:{...t,objects:u}}export{f as a,v as b,j as c,S as d,A as e,y as f,M as g,R as h,N as i,g as j,_ as k,C as l,G as m,U as n};
1
+ import{Ba as d,oa as b,sa as p,ta as h,ya as I}from"./chunk-I6DNJFRF.js";var m="__sl_ga__",f=1e5,v=1e5;function j(t,e){return`${m}${encodeURIComponent(t)}__${e+1}`}function S(t){let e=t.inventorySegments;if(e===void 0)return!0;if(!Array.isArray(e)||e.length<1||e.length>256)return!1;let r=0,i=new Map;for(let o of e){if(!o||typeof o.sourceAreaId!="string"||!o.sourceAreaId.trim()||o.sourceAreaId.length>160||!Number.isInteger(o.startIndex)||o.startIndex<0||!Number.isInteger(o.count)||o.count<1||o.startIndex+o.count>f||(r+=o.count,r>f))return!1;let u=i.get(o.sourceAreaId)??[],n=o.startIndex+o.count;if(u.some(s=>o.startIndex<s.end&&n>s.start))return!1;u.push({start:o.startIndex,end:n}),i.set(o.sourceAreaId,u)}return r===t.capacity}function A(t){let e=Math.min(f,Math.max(0,Math.floor(t.capacity)));return t.inventorySegments===void 0?e?[{sourceAreaId:t.id,startIndex:0,count:e}]:[]:S(t)?t.inventorySegments.map(r=>({...r})):[]}function y(t){return A(t).flatMap(e=>Array.from({length:e.count},(r,i)=>j(e.sourceAreaId,e.startIndex+i)))}function M(t,e){if(t.inventorySegments===void 0||e===t.capacity)return t.inventorySegments;if(e<t.capacity)return;let r=A(t);if(!r.length)return;let i=e-t.capacity;if(!i)return r;let u=r.filter(s=>s.sourceAreaId===t.id).reduce((s,a)=>Math.max(s,a.startIndex+a.count),0),n=r[r.length-1];if(n?.sourceAreaId===t.id&&n.startIndex+n.count===u)n.count+=i;else{if(r.length>=256)return;r.push({sourceAreaId:t.id,startIndex:u,count:i})}return r}function R(t){return d(t).filter(e=>e.type==="gaArea")}function N(t){return t.startsWith(m)}var g="__ungrouped__";function x(t){return t.type==="row"?b(t).map(e=>e.label):t.type==="table"?p(t).map(e=>e.label):t.type==="booth"?h(t).map(e=>e.label):t.type==="gaArea"?y(t):[]}function O(t){return t.type==="row"||t.type==="table"||t.type==="booth"||t.type==="gaArea"}function _(t){let e=d(t),r=e.filter(n=>n.type==="section"),i=new Map;for(let n of r){let s=n.logicalSectionId??n.id;i.get(s)||i.set(s,{id:s,label:n.displayLabel||n.label||"Section",zone:n.zone,seatCount:0,objectIds:[],seatLabels:[]})}let o={id:g,label:"Other seats",seatCount:0,objectIds:[],seatLabels:[]},u=new Map;for(let n of e){if(!O(n))continue;let s=x(n);if(s.length===0)continue;let a=I(e,n),c=a?i.get(a.logicalSectionId??a.id):o;c.seatCount+=s.length,c.objectIds.push(n.id),c.seatLabels.push(...s),u.set(n.id,c.id)}return{sections:[...i.values()],ungrouped:o.objectIds.length?o:null,objectToSection:u}}function C(t,e){return e.has(t.id)||!!t.logicalSectionId&&e.has(t.logicalSectionId)||!!t.zone&&e.has(t.zone)}function G(t,e){let r=new Set;if(!e.size)return r;let{sections:i,ungrouped:o,objectToSection:u}=_(t),n=new Set,s=new Map(i.map(c=>[c.id,c.zone]));for(let c of i){let l=s.get(c.id);(e.has(c.id)||l&&e.has(l))&&n.add(c.id)}let a=!!o&&e.has(g);for(let[c,l]of u)(n.has(l)||a&&l===g)&&r.add(c);return r}function U(t,e){if(!e.size)return t;let r=G(t,e),i=e instanceof Set?e:new Set(e),o=n=>!(r.has(n.id)||n.type==="section"&&C(n,i));if(t.floors&&t.floors.length){let n=!1,s=t.floors.map(a=>{let c=a.objects.filter(o);return c.length!==a.objects.length&&(n=!0),c.length===a.objects.length?a:{...a,objects:c}});return n?{...t,floors:s,objects:s[0].objects}:t}let u=t.objects.filter(o);return u.length===t.objects.length?t:{...t,objects:u}}export{f as a,v as b,j as c,S as d,A as e,y as f,M as g,R as h,N as i,g as j,_ as k,C as l,G as m,U as n};
@@ -0,0 +1 @@
1
+ import{c as le}from"./chunk-CRCGO52K.js";var Xt=40,zt=1200,Kt=.8,Vt=3,$t=-2,Wt=20,Yt=.1,qt=40,Jt=40,ue=e=>Math.max(1,e.fontSize*.6+(e.letterSpacing??0));function $e(e,t){let n=e.text.split(/\r?\n/);if(!e.width)return Math.max(1,n.length);let o=Math.max(1,Math.floor(t/ue(e))),r=0;for(let i of n){if(!i.length){r+=1;continue}let s=0;for(let c of i.split(/\s+/)){let a=c.length;s&&s+1+a<=o?s+=1+a:(r+=Math.max(1,Math.ceil(a/o)),s=a%o)}}return Math.max(1,r)}function fe(e){let t=e.background?.padding??0,n=e.text.split(/\r?\n/),o=Math.max(1,...n.map(c=>c.length))*ue(e),r=e.width??o+t*2,i=Math.max(1,r-t*2),s=$e(e,i);return{width:r,height:s*e.fontSize*(e.lineHeight??1.2)+t*2,lineCount:s,padding:t}}var We=Math.PI/180;function I(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function Ye(e,t,n){let o=Math.cos(n),r=Math.sin(n),i=e.x-t.x,s=e.y-t.y;return{x:t.x+i*o-s*r,y:t.y+i*r+s*o}}function Zt(e,t){return Ye(e,{x:0,y:0},t*We)}function O(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function qe(e){let t=0,n=0;for(let r of e)t+=r.x,n+=r.y;let o=e.length||1;return{x:t/o,y:n/o}}function en(e){return e.length?qe(e):null}function Y(e,t){let n=1-t,o=n*n*n,r=3*n*n*t,i=3*n*t*t,s=t*t*t;return{x:o*e.start.x+r*e.control1.x+i*e.control2.x+s*e.end.x,y:o*e.start.y+r*e.control1.y+i*e.control2.y+s*e.end.y}}function on(e,t,n){let o={x:(e.x+t.x)/2,y:(e.y+t.y)/2},r={x:(n.x-o.x)*4/3,y:(n.y-o.y)*4/3};return{start:{...e},control1:{x:e.x+(t.x-e.x)/3+r.x,y:e.y+(t.y-e.y)/3+r.y},control2:{x:e.x+(t.x-e.x)*2/3+r.x,y:e.y+(t.y-e.y)*2/3+r.y},end:{...t}}}function me(e,t,n=192){if(!Number.isInteger(t)||t<1)throw new Error("Path point count must be a positive integer");if(t===1)return[Y(e,.5)];let o=Array.from({length:n+1},(a,x)=>Y(e,x/n)),r=new Float64Array(o.length);for(let a=1;a<o.length;a+=1){let x=o[a].x-o[a-1].x,l=o[a].y-o[a-1].y;r[a]=r[a-1]+Math.hypot(x,l)}let i=r[r.length-1];if(i<=1e-9)return Array.from({length:t},()=>({...e.start}));let s=[],c=1;for(let a=0;a<t;a+=1){let x=i*a/(t-1);for(;c<r.length-1&&r[c]<x;)c+=1;let l=r[c-1],h=r[c],f=h===l?0:(x-l)/(h-l);s.push({x:o[c-1].x+(o[c].x-o[c-1].x)*f,y:o[c-1].y+(o[c].y-o[c-1].y)*f})}return s}function R(e,t){return{x:e.x+t.x,y:e.y+t.y}}function F(e,t){return{x:e.x-t.x,y:e.y-t.y}}function T(e,t){return{x:e.x*t,y:e.y*t}}function G(e,t=13){return Array.from({length:t},(n,o)=>Y(e,o/(t-1)))}function de(e,t){let n=Math.max(0,Math.min(1,t))*(e.length-1),o=Math.min(e.length-2,Math.floor(n));return O(e[o],e[o+1],n-o)}function he(e,t,n){let o=Math.max(0,Math.min(1,t)),r=Math.max(o,Math.min(1,n)),i=[de(e,o)];for(let s=1;s<e.length-1;s+=1){let c=s/(e.length-1);c>o+1e-9&&c<r-1e-9&&i.push(e[s])}return i.push(de(e,r)),i}function pe(e,t){let n=[[0,1],[1,2],[2,3],[3,0]],o=0,r=Number.POSITIVE_INFINITY;n.forEach(([f,y],m)=>{let p=I(O(e[f],e[y],.5),t);p<r&&(r=p,o=m)});let i=e[o],s=e[(o+1)%4],c=e[(o+2)%4],a=e[(o+3)%4],x=O(i,s,.5),l=F(t,x),h=Math.max(1e-9,Math.hypot(l.x,l.y));return{p0:i,p1:s,p2:c,p3:a,normal:T(l,1/h),depth:(I(i,a)+I(s,c))/2}}function ye(e){let{p0:t,p1:n,p2:o,p3:r,normal:i,depth:s}=e,c=F(n,t),a=F(o,r),x=s*.22,l=s*.12;return{nearPath:{start:t,control1:R(R(t,T(c,1/3)),T(i,x)),control2:R(R(t,T(c,2/3)),T(i,x)),end:n},farPath:{start:o,control1:R(R(r,T(a,2/3)),T(i,l)),control2:R(R(r,T(a,1/3)),T(i,l)),end:r}}}function rn(e,t,n){if(e.length!==4)throw new Error("A section shell requires four mapped bounds corners");let o=e.reduce((m,p)=>R(m,p),{x:0,y:0});o.x/=4,o.y/=4;let r=I(e[0],e[1]),i=I(e[0],e[3]),s=n==="auto"?r>i*1.25&&I(o,t)>i?"bezier":"tapered":n;if(s==="rectangle")return{mode:s,outline:e.map(m=>({...m}))};let c=pe(e,t),{p0:a,p1:x,p2:l,p3:h}=c;if(s==="tapered")return{mode:s,outline:[R(a,T(F(x,a),.14)),R(a,T(F(x,a),1-.14)),l,h]};let{nearPath:f,farPath:y}=ye(c);return{mode:s,outline:[...G(f),...G(y).slice(1)]}}function sn(e,t,n,o){if(e.length!==4)throw new Error("Aisle generation requires four mapped bounds corners");if(!Number.isInteger(n)||n<0||n>3)throw new Error("Aisle count must be an integer from 0 to 3");if(n===0)return[];let r=pe(e,t),{p0:i,p1:s,p2:c,p3:a}=r,x=o==="bezier"?ye(r):null,l=x?G(x.nearPath):null,h=x?G(x.farPath).reverse():null,f=Math.min(.055,.18/(n+1));return Array.from({length:n},(y,m)=>{let p=(m+1)/(n+1),d=p-f/2,b=p+f/2;return l&&h?[...he(l,d,b),...he(h,d,b).reverse()]:[O(i,s,d),O(i,s,b),O(a,c,b),O(a,c,d)]})}function Je(e,t,n){let o=n.x-t.x,r=n.y-t.y,i=o*o+r*r,s=i?Math.max(0,Math.min(1,((e.x-t.x)*o+(e.y-t.y)*r)/i)):0;return Math.hypot(e.x-(t.x+s*o),e.y-(t.y+s*r))}function Qe(e,t){let n=1/0;for(let o of t)if(!(o.length<2))for(let r=0,i=o.length-1;r<o.length;i=r++){let s=Je(e,o[i],o[r]);s<n&&(n=s)}return n}function xe(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o].x,s=t[o].y,c=t[r].x,a=t[r].y;s>e.y!=a>e.y&&e.x<(c-i)*(e.y-s)/(a-s)+i&&(n=!n)}return n}function Ze(e,t,n){let o=xe(e,t)&&!n.some(i=>xe(e,i)),r=Qe(e,[t,...n]);return o?r:-r}function L(e,t,n,o,r){let i=Ze({x:e,y:t},o,r);return{x:e,y:t,h:n,d:i,max:i+n*Math.SQRT2}}var q=class{constructor(){this.items=[]}get size(){return this.items.length}push(t){let n=this.items;n.push(t);let o=n.length-1;for(;o>0;){let r=o-1>>1;if(n[r].max>=n[o].max)break;[n[r],n[o]]=[n[o],n[r]],o=r}}pop(){let t=this.items,n=t[0],o=t.pop();if(t.length&&o){t[0]=o;let r=0;for(;;){let i=r*2+1,s=i+1,c=r;if(i<t.length&&t[i].max>t[c].max&&(c=i),s<t.length&&t[s].max>t[c].max&&(c=s),c===r)break;[t[c],t[r]]=[t[r],t[c]],r=c}}return n}};function be(e){if(e.length<3)return 0;let t=0;for(let n=0,o=e.length-1;n<e.length;o=n++)t+=(e[o].x+e[n].x)*(e[o].y-e[n].y);return Math.abs(t)/2}function an(e,t){return Math.max(0,be(e)-(t??[]).reduce((n,o)=>n+be(o),0))}function ge(e,t){let n=t??[];if(!e.length)return{point:{x:0,y:0},radius:0};if(e.length<3){let p=e.reduce((b,S)=>b+S.x,0)/e.length,d=e.reduce((b,S)=>b+S.y,0)/e.length;return{point:{x:p,y:d},radius:0}}let o=1/0,r=1/0,i=-1/0,s=-1/0;for(let p of e)p.x<o&&(o=p.x),p.y<r&&(r=p.y),p.x>i&&(i=p.x),p.y>s&&(s=p.y);let c=i-o,a=s-r,x=Math.min(c,a);if(!(x>0))return{point:{x:(o+i)/2,y:(r+s)/2},radius:0};let l=Math.max(c,a)/150,h=new q,f=x/2;for(let p=o;p<i;p+=x)for(let d=r;d<s;d+=x)h.push(L(p+f,d+f,f,e,n));let y=L(o+c/2,r+a/2,0,e,n),m=0;for(;h.size;){let p=h.pop();if(!p)break;p.d>y.d&&(y=p),!(p.max-y.d<=l)&&(m>=4e3||(m+=1,f=p.h/2,h.push(L(p.x-f,p.y-f,f,e,n)),h.push(L(p.x+f,p.y-f,f,e,n)),h.push(L(p.x-f,p.y+f,f,e,n)),h.push(L(p.x+f,p.y+f,f,e,n))))}return{point:{x:y.x,y:y.y},radius:Math.max(0,y.d)}}function et(e,t,n){return Math.max(t,Math.min(n,e))}function un(e,t,n){return e<t?t:e>n?n:e}function tt(e){return et(e,0,1)}function we(e){let t=tt(e);return t*t*(3-2*t)}var k=Math.PI*2;function j(e){return Number.isFinite(e.x)&&Number.isFinite(e.y)}function nt(e,t,n){let o=t-e;if(n){for(;o<0;)o+=k;for(;o>=k;)o-=k}else{for(;o>0;)o-=k;for(;o<=-k;)o+=k}return o}function mn(e){return e.end}function Pe(e){if(e.version!==1||e.closed!==!0||!j(e.start)||!Array.isArray(e.segments)||e.segments.length<2||e.segments.length>512)return!1;let t=e.start;for(let n of e.segments){if(!n||!j(n.end))return!1;if(n.kind==="line"){if(I(t,n.end)<=1e-9)return!1}else if(n.kind==="bezier"){if(!j(n.control1)||!j(n.control2)||I(t,n.end)<=1e-9)return!1}else if(n.kind==="arc"){if(!j(n.center)||!Number.isFinite(n.radius)||n.radius<=1e-6||Math.abs(I(t,n.center)-n.radius)>Math.max(1e-4,n.radius*1e-4)||Math.abs(I(n.end,n.center)-n.radius)>Math.max(1e-4,n.radius*1e-4)||I(t,n.end)<=1e-9)return!1}else return!1;t=n.end}return I(t,e.start)<=1e-4}function ot(e,t,n){let o=1-n;return{x:o**3*e.x+3*o**2*n*t.control1.x+3*o*n**2*t.control2.x+n**3*t.end.x,y:o**3*e.y+3*o**2*n*t.control1.y+3*o*n**2*t.control2.y+n**3*t.end.y}}function pn(e,t=2){if(!Pe(e))throw new Error("Section outline path is invalid");let n=Math.max(.25,t),o=[{...e.start}],r=e.start;for(let i of e.segments){if(i.kind==="line")o.push({...i.end});else if(i.kind==="arc"){let s=Math.atan2(r.y-i.center.y,r.x-i.center.x),c=Math.atan2(i.end.y-i.center.y,i.end.x-i.center.x),a=nt(s,c,i.clockwise),x=Math.max(2,Math.ceil(Math.abs(a)*i.radius/n));for(let l=1;l<=x;l+=1){let h=s+a*l/x;o.push({x:i.center.x+Math.cos(h)*i.radius,y:i.center.y+Math.sin(h)*i.radius})}}else{let s=I(r,i.control1)+I(i.control1,i.control2)+I(i.control2,i.end),c=Math.max(2,Math.ceil(s/n));for(let a=1;a<=c;a+=1)o.push(ot(r,i,a/c))}r=i.end}return I(o[o.length-1],o[0])<=1e-4&&o.pop(),o}function ve(e,t,n){return rt(e,r=>({x:r.x+t,y:r.y+n}))}function rt(e,t,n=1,o=!1){return{...e,start:t(e.start),segments:e.segments.map(r=>r.kind==="line"?{...r,end:t(r.end)}:r.kind==="arc"?{...r,center:t(r.center),radius:r.radius*Math.abs(n),clockwise:o?!r.clockwise:r.clockwise,end:t(r.end)}:{...r,control1:t(r.control1),control2:t(r.control2),end:t(r.end)})}}var it=45,J=150,st=60;function ct(e){let t=it/100;if(e<=t)return J;let n=Math.min(1,(e-t)/(1-t));return J-n*(J-st)}var Se=.5523;function Me(e,t){return Math.abs(e.x-t.x)<=1e-6&&Math.abs(e.y-t.y)<=1e-6}function at(e){let t=[],n=[];for(e.forEach((o,r)=>{j(o)&&(t.length&&Me(t[t.length-1],o)||(t.push({x:o.x,y:o.y}),n.push(r)))});t.length>1&&Me(t[0],t[t.length-1]);)t.pop(),n.pop();return{points:t,sourceIndex:n}}function yn(e,t,n){return dt(e,{cornerSmoothing:t,...n})}var lt=.5,ut=4/3;function ft(e,t,n){let o=t.x-e.x,r=t.y-e.y,i=Math.hypot(o,r);if(i<=1e-9)return{kind:"line",end:{...t}};let s=-r/i,c=o/i,a=n*ut;return{kind:"bezier",control1:{x:e.x+o/3+s*a,y:e.y+r/3+c*a},control2:{x:e.x+o*2/3+s*a,y:e.y+r*2/3+c*a},end:{...t}}}function dt(e,t){let{points:n,sourceIndex:o}=at(e),r=n.length;if(r<3)return null;let i=Math.min(100,Math.max(0,t.cornerSmoothing??0))/100,s=t.edgeCurvature,c=new Array(r).fill(0);if(s?.length)for(let u=0;u<r;u+=1){let M=s[o[u]];c[u]=Number.isFinite(M)?Math.min(100,Math.max(-100,M))/100:0}let a=c.some(u=>Math.abs(u)>1e-6);if(i<=0&&!a)return null;let x=t.wideAngleThresholdDeg??ct(i),l=[];for(let u=0;u<r;u+=1)l[u]=I(n[u],n[(u+1)%r]);let h=new Array(r).fill(0);for(let u=0;u<r;u+=1){let M=n[(u-1+r)%r],w=n[u],P=n[(u+1)%r],E={x:M.x-w.x,y:M.y-w.y},C={x:P.x-w.x,y:P.y-w.y},A=Math.hypot(E.x,E.y),_=Math.hypot(C.x,C.y);if(A<=1e-9||_<=1e-9)continue;let H=Math.min(1,Math.max(-1,(E.x*C.x+E.y*C.y)/(A*_))),N=Math.acos(H)*180/Math.PI;if(N<x)continue;let W=we((N-x)/(180-x));h[u]=i*W*.5*Math.min(A,_)}for(let u=0;u<r;u+=1){let M=(u+1)%r,w=h[u]+h[M];if(w>l[u]&&w>1e-9){let P=l[u]/w;h[u]*=P,h[M]*=P}}let f=new Array(r),y=new Array(r);for(let u=0;u<r;u+=1){let M=n[(u-1+r)%r],w=n[u],P=n[(u+1)%r];if(h[u]<=1e-6){f[u]={...w},y[u]={...w};continue}let E=I(w,M)||1,C=I(w,P)||1;f[u]={x:w.x+(M.x-w.x)/E*h[u],y:w.y+(M.y-w.y)/E*h[u]},y[u]={x:w.x+(P.x-w.x)/C*h[u],y:w.y+(P.y-w.y)/C*h[u]}}if(h.every(u=>u<=1e-6)&&!a)return null;let m=[],p={...y[0]},d=p,b=(u,M)=>{if(I(d,u)<=1e-9)return;let w=c[M];Math.abs(w)>1e-6?m.push(ft(d,u,w*lt*l[M])):m.push({kind:"line",end:{...u}}),d=u};for(let u=1;u<=r;u+=1){let M=u%r,w=n[M];b(f[M],(u-1)%r),h[M]>1e-6&&I(f[M],y[M])>1e-9&&(m.push({kind:"bezier",control1:O(f[M],w,Se),control2:O(y[M],w,Se),end:{...y[M]}}),d=y[M])}if(!m.length)return null;let S=m[m.length-1];I(S.end,p)>1e-9&&(S.kind==="line"?S.end={...p}:m.push({kind:"line",end:{...p}}));let g={version:1,closed:!0,start:p,segments:m};return Pe(g)?g:null}function xn(e){let t=[],n=e.start;for(let r of e.segments)t.push(n),n=r.end;let o=[];for(let r=e.segments.length-1;r>=0;r-=1){let i=e.segments[r],s=t[r];i.kind==="line"?o.push({kind:"line",end:{...s}}):i.kind==="arc"?o.push({kind:"arc",center:{...i.center},radius:i.radius,clockwise:!i.clockwise,end:{...s}}):o.push({kind:"bezier",control1:{...i.control2},control2:{...i.control1},end:{...s}})}return{version:1,closed:!0,start:{...e.start},segments:o}}function gn(e,t,n){let o=[];for(let r=0;r<e.length-1;r+=1){let i=e[r],s=e[r+1],c=Math.hypot(s.x-i.x,s.y-i.y);if(c<=0)continue;let a=Math.max(1,Math.round(c/n)),x=c/a,l=Math.atan2(s.y-i.y,s.x-i.x),h=r===0,y=(r>0?t[r-1]:void 0)==="break"?2:1,m=h?{...i}:{x:i.x+Math.cos(l)*x*y,y:i.y+Math.sin(l)*x*y},p=h?a+1:Math.max(1,a-(y-1));o.push({origin:m,rotation:l*180/Math.PI,seatCount:p,seatSpacing:x})}return o}function wn(e){let t=e.rotation*Math.PI/180,n={x:Math.cos(t),y:Math.sin(t)};return Array.from({length:e.seatCount},(o,r)=>({x:e.origin.x+n.x*r*e.seatSpacing,y:e.origin.y+n.y*r*e.seatSpacing}))}function Sn(e){return e.reduce((t,n)=>t+n.seatCount,0)}function Ie(e){let t=new Map,n=new Map;for(let o of e){if(o.type!=="row"||!o.segmentedRow)continue;let r=n.get(o.segmentedRow.groupId)??[];r.push(o),n.set(o.segmentedRow.groupId,r)}for(let[o,r]of n){let i=r.slice().sort((f,y)=>f.segmentedRow.componentIndex-y.segmentedRow.componentIndex),s=i[0]?.segmentedRow?.componentCount??0,c=i[0]?.segmentedRow;if(!c||!(s>=2&&i.length===s&&c?.boundaryBefore==="start"&&i.every((f,y)=>f.segmentedRow?.kind==="segmented-row-v1"&&f.segmentedRow.groupId===o&&f.segmentedRow.componentCount===s&&f.segmentedRow.componentIndex===y&&f.segmentedRow.repeatLabelOnComponents===c.repeatLabelOnComponents&&(y===0?f.segmentedRow.boundaryBefore==="start":f.segmentedRow.boundaryBefore!=="start")&&f.segmentedRow.displayLabel===c.displayLabel)))continue;let x=i.reduce((f,y)=>f+y.seatCount,0),l=0,h=0;for(let f of i)f.segmentedRow.boundaryBefore==="break"&&(l+=1),t.set(f.id,{groupId:o,adjacencyOffset:l,displayOffset:h,displayLabel:c.displayLabel,totalSeats:x,canonical:i[0],viewFromSeatUrl:c.viewFromSeatUrl,viewFromSeatMeta:c.viewFromSeatMeta,confidenceEvidence:c.confidenceEvidence}),l+=f.seatCount,h+=f.seatCount}return t}var Ee="ABCDEFGHIJKLMNOPQRSTUVWXYZ",ht="ABCDEFGHJKLMNPQRSTUVWXYZ",mt="abcdefghijklmnopqrstuvwxyz";function Ce(e,t){let n=t.length,o=e+1,r="";for(;o>0;){o-=1;let i=o%n;r=t[i]+r,o=Math.floor(o/n)}return r}function pt(e,t){let n=t.startAt-1,o=e+n;if(t.scheme==="numbers")return String(o+1);let r=t.skipAmbiguous?ht:Ee;return Ce(o,r)}function Q(e,t=!1){let n=t?mt:Ee;return Ce(Math.max(0,Math.floor(e)-1),n)}var yt=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function Oe(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),n="";for(let[o,r]of yt)for(;t>=o;)n+=r,t-=o;return n}function Pn(e,t){let n=e.length;return e.map((o,r)=>{let i=t.reverse?n-1-r:r;return{...o,label:pt(i,t)}})}function xt(e){let t=new Array(e);return Array.from({length:e},(n,o)=>o).sort((n,o)=>Math.abs(2*n-(e-1))-Math.abs(2*o-(e-1))||n-o).forEach((n,o)=>t[n]=o),t}function Z(e,t){let n=e.seatLabelStart??1,o=e.seatNumbering?.direction??"ltr",r=e.seatNumbering?.step??1,i=e.seatNumbering?.scheme??"decimal",s=e.seatNumbering?.prefix??"",c=e.seatNumbering?.endAt,a=e.seatCount;if(i==="updown"||i==="updown-descending"){let y=Math.ceil(a/2),m=i==="updown"?t<y?n+2*t:n-1+2*(a-t):t<y?n+2*(y-1-t):n+1+2*(t-y);return`${s}${m}`}let x=i==="odd"||i==="even"?2:r,l=c!=null&&Number.isFinite(c)?c-(a-1)*x:n,h=o==="center"?xt(a)[t]:o==="rtl"?a-1-t:t,f;switch(i){case"odd":{let y=l%2===1?l:l+1;f=String(y+h*2);break}case"even":{let y=l%2===0?l:l+1;f=String(y+h*2);break}case"roman":f=Oe(l+h*r);break;case"letters-upper":f=Q(l+h*r,!1);break;case"letters-lower":f=Q(l+h*r,!0);break;default:f=String(l+h*r);break}return`${s}${f}`}function bt(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function Re(e,t,n){return n?.label??`${e.label}-${Z(e,t)}`}function ee(e,t,n,o){if(o?.displayLabel)return o.displayLabel;if(!n)return`${e.displayLabel??e.label}-${Z(e,t)}`;let r=bt(n),i=n.displayOffset+t;return`${n.displayLabel}-${Z(r,i)}`}var B=.02291666666666667,Cn=1/B,gt=58,wt=gt*B,Te=0,_e=3,Ae=0,te=120,St=0,Mt=45,Pt=7,X=1.2;function ne(e,t,n,o){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):o}function On(e){return Number.isFinite(e)?Math.max(Te,Math.min(_e,Math.round(e))):Te}function vt(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=Pt?e:_e}function Le(e,t={}){let n=ne(t.floorBaseHeightM,Ae,te,0),o=Math.min(te,n+vt(e.elevation)*wt),r=e.height===void 0?o:ne(e.height,Ae,te,o),i=ne(e.rake,St,Mt,0);return{height:r,rake:i}}function ke(e){let t=e.length;return t<=3?[...e]:[e[Math.floor(t*.25)],e[Math.floor(t*.5)],e[Math.floor(t*.75)]]}function je(e,t,n){if(!e.length)return 1/0;if(e.length===1)return Math.hypot(t-e[0].x,n-e[0].y);let o=1/0;for(let r=0;r+1<e.length;r++){let i=e[r],s=e[r+1],c=s.x-i.x,a=s.y-i.y,x=c*c+a*a,l=x>1e-12?((t-i.x)*c+(n-i.y)*a)/x:0;l<0?l=0:l>1&&(l=1);let h=Math.hypot(t-(i.x+l*c),n-(i.y+l*a));h<o&&(o=h)}return o}function It(e){let t=0,n=0;for(let i of e)t+=i.x,n+=i.y;let o=e.length||1;t/=o,n/=o;let r=0;for(let i of e){let s=Math.hypot(i.x-t,i.y-n);s>r&&(r=s)}return{cx:t,cy:n,r}}function De(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function oe(e,t){let n=1/0;for(let o of ke(e)){let r=je(t,o.x,o.y);r<n&&(n=r)}for(let o of ke(t)){let r=je(e,o.x,o.y);r<n&&(n=r)}return n}function Et(e,t){if(e.length<3)return{pts:e,seatIndices:t};let n=0,o=0;for(let l of e)n+=l.x,o+=l.y;n/=e.length,o/=e.length;let r=-1,i=e[0];for(let l of e){let h=Math.hypot(l.x-n,l.y-o);h>r&&(r=h,i=l)}let s=i.x-n,c=i.y-o,a=Math.hypot(s,c);a>1e-9?(s/=a,c/=a):(s=1,c=0);let x=e.map((l,h)=>({p:l,i:h,t:(l.x-n)*s+(l.y-o)*c})).sort((l,h)=>l.t-h.t);return{pts:x.map(l=>l.p),seatIndices:x.map(l=>t[l.i])}}function Ct(e){let t=e.length;if(t<3)return null;let n=0,o=0;for(let S of e)n+=S.x,o+=S.y;n/=t,o/=t;let r=0,i=0,s=0,c=0,a=0,x=0,l=0;for(let S of e){let g=S.x-n,u=S.y-o;r+=g*g,s+=u*u,i+=g*u,c+=g*g*g,a+=u*u*u,x+=g*u*u,l+=u*g*g}let h=r*s-i*i;if(Math.abs(h)<1e-9)return null;let f=(c+x)/2,y=(a+l)/2,m=(f*s-y*i)/h,p=(y*r-f*i)/h,d=m+n,b=p+o;return!Number.isFinite(d)||!Number.isFinite(b)?null:{cx:d,cy:b}}var Ot=.15;function Rt(e){if(e.length<2)return null;let t=e.map(S=>{let g=0,u=0;for(let M of S.pts)g+=M.x,u+=M.y;return{x:g/S.pts.length,y:u/S.pts.length}}),n=0,o=0;for(let S of t)n+=S.x,o+=S.y;n/=t.length,o/=t.length;let r=0,i=0,s=0;for(let S of t){let g=S.x-n,u=S.y-o;r+=g*g,i+=g*u,s+=u*u}let c=r+s,a=r*s-i*i,x=c/2+Math.sqrt(Math.max(0,c*c/4-a)),l,h;Math.abs(i)>1e-12?(l=x-s,h=i):r>=s?(l=1,h=0):(l=0,h=1);let f=Math.hypot(l,h);if(!(f>1e-12))return null;l/=f,h/=f;let y=1/0,m=-1/0,p=[];for(let S of e){let g=1/0,u=-1/0;for(let M of S.pts){let w=M.x*l+M.y*h;w<g&&(g=w),w>u&&(u=w),w<y&&(y=w),w>m&&(m=w)}p.push(u-g)}let d=m-y;return d>1e-9?(p.sort((S,g)=>S-g),p[Math.min(p.length-1,Math.floor(p.length*.9))]/d<=Tt?{x:l,y:h}:null):null}var Tt=.35;function Ne(e,t,n,o){let r=new Map;for(let d of n){let b=t[d],S=b.rowId||`__seat-${d}`,g=r.get(S);g||(g={pts:[],idx:[]},r.set(S,g)),g.pts.push({x:b.x,y:b.y}),g.idx.push(d)}if(!r.size)return{sectionId:e,rows:[],blockCount:0};let i=[];for(let[d,b]of r){let S=Et(b.pts,b.idx),g=0;for(let u of S.pts)g+=Math.hypot(u.x-o.x,u.y-o.y);i.push({id:d,pts:S.pts,seatIndices:S.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:g/S.pts.length})}let s=i.map(d=>It(d.pts)),c=[];for(let d=0;d<i.length;d++){let b=1/0;for(let S=0;S<i.length;S++){if(d===S||De(s[d],s[S])>=b)continue;let g=oe(i[d].pts,i[S].pts);g<b&&(b=g)}Number.isFinite(b)&&c.push(b)}c.sort((d,b)=>d-b);let a=c.length?c[Math.floor(c.length/2)]:1,x=Math.max(a*1.8,1e-6),l=i.map(()=>[]);for(let d=0;d<i.length;d++)for(let b=d+1;b<i.length;b++)De(s[d],s[b])>x||oe(i[d].pts,i[b].pts)<=x&&(l[d].push(b),l[b].push(d));let h=0;for(let d=0;d<i.length;d++){if(i[d].blockId!==-1)continue;let b=h++,S=[d];for(i[d].blockId=b;S.length;){let g=S.pop();for(let u of l[g])i[u].blockId===-1&&(i[u].blockId=b,S.push(u))}}let f=new Map;for(let d of i){let b=f.get(d.blockId)??[];b.push(d),f.set(d.blockId,b)}let y=[];for(let d of i){if(d.pts.length<4)continue;let b=Ct(d.pts);b&&(!Number.isFinite(b.cx)||!Number.isFinite(b.cy)||y.push({x:b.cx,y:b.cy}))}let m=y.length>=2?(()=>{let d=y.map(g=>g.x).sort((g,u)=>g-u),b=y.map(g=>g.y).sort((g,u)=>g-u),S=Math.floor(y.length/2);return{cx:d[S],cy:b[S]}})():null;if(m){let d=w=>Math.hypot(w.x-m.cx,w.y-m.cy),b=1/0,S=-1/0,g=[];for(let w of i){let P=1/0,E=-1/0;for(let C of w.pts){let A=d(C);A<P&&(P=A),A>E&&(E=A)}g.push(E-P),P<b&&(b=P),E>S&&(S=E)}let u=S-b;g.sort((w,P)=>w-P);let M=g[Math.min(g.length-1,Math.floor(g.length*.9))];if(u>1e-9&&M/u<=Ot){let w=i.map(v=>{let U=0;for(let Ve of v.pts)U+=d(Ve);return{row:v,radius:U/v.pts.length}}),P=0,E=0;for(let v of w)P+=v.radius,E+=v.row.focalDistance;P/=w.length,E/=w.length;let C=0;for(let v of w)C+=(v.radius-P)*(v.row.focalDistance-E);if(C<0)for(let v of w)v.radius=-v.radius;let _=1/0;for(let v of w)v.radius<_&&(_=v.radius);w.sort((v,U)=>v.radius-U.radius);let H=-1,N=-1/0,W=u/Math.max(1,w.length)*.5,ae=[];for(let v of w)v.radius-N>W&&(H++,N=v.radius),v.row.ordinal=H,v.row.blockDepth=v.radius-_,ae.push(v.row);return{sectionId:e,rows:ae,blockCount:h}}}let p=[];for(let[,d]of f){let b=Rt(d);if(b){let S=u=>{let M=0;for(let w of u.pts)M+=w.x*b.x+w.y*b.y;return M/u.pts.length};d.sort((u,M)=>S(u)-S(M)),d.length>=2&&d[0].focalDistance>d[d.length-1].focalDistance&&d.reverse();let g=0;for(let u=0;u<d.length;u++)u>0&&(g+=oe(d[u-1].pts,d[u].pts)),d[u].ordinal=u,d[u].blockDepth=g,p.push(d[u])}else{let S=1/0;for(let g of d)g.focalDistance<S&&(S=g.focalDistance);d.sort((g,u)=>g.focalDistance-u.focalDistance);for(let g=0;g<d.length;g++)d[g].ordinal=g,d[g].blockDepth=Math.max(0,d[g].focalDistance-S),p.push(d[g])}}return{sectionId:e,rows:p,blockCount:h}}function Be(e){return e?e.accessibility&&e.accessibility.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var K=Math.PI/180,At=9,D=16;function ie(e,t,n,o){let r=n*K,i=Math.cos(r),s=Math.sin(r);return{x:o.x+e*i-t*s,y:o.y+e*s+t*i}}function Xe(e){let{seatCount:t,seatSpacing:n,curve:o,rotation:r,origin:i}=e,s=[];if(e.path)return me(e.path,t);if(t<=1)return t===1&&s.push({x:i.x,y:i.y}),s;if(o===0){for(let x=0;x<t;x++)s.push(ie(x*n,0,r,i));return s}let c=o/(t-1)*K,a=n/(2*Math.sin(Math.abs(c)/2));for(let x=0;x<t;x++){let l=x*c,h=a*Math.sin(l),f=-a+a*Math.cos(l);s.push(ie(h,f,r,i))}return s}function _t(e){let t=new Map;if(e.overrides)for(let n of e.overrides)t.set(n.index,n);return t}function Un(e){let t=new Set((e.overrides??[]).filter(n=>n.skip&&Number.isInteger(n.index)&&n.index>=0&&n.index<e.seatCount).map(n=>n.index));return Math.max(0,e.seatCount-t.size)}function Lt(e,t){let n=_t(e);return Xe(e).map((o,r)=>{let i=n.get(r),s=Be(i),c=Re(e,r,i),a={...e.commercial,...i?.commercial};return{index:r,x:o.x+(i?.dx??0),y:o.y+(i?.dy??0),label:c,displayLabel:ee(e,r,t,i),categoryKey:i?.categoryKey??e.categoryKey,skipped:!!i?.skip,accessible:s.length>0,accessibility:s,wheelchairSpaceType:i?.wheelchairSpaceType,commercial:Object.values(a).some(x=>x!==void 0&&x!==!1&&x!=="")?a:void 0,glyph:i?.glyph,viewUrl:i?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:i?.viewFromSeatUrl?i.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:i?.labelStyle}})}function ze(e){let t=[];for(let n of Lt(e))n.skipped||t.push({id:`${e.id}:${n.index}`,label:n.label,displayLabel:n.displayLabel===n.label?void 0:n.displayLabel,x:n.x,y:n.y,rowId:e.id,categoryKey:n.categoryKey,accessible:n.accessible||void 0,accessibility:n.accessibility.length?n.accessibility:void 0,wheelchairSpaceType:n.wheelchairSpaceType,commercial:n.commercial,glyph:n.glyph,viewUrl:n.viewUrl,viewMeta:n.viewMeta,labelStyle:n.labelStyle});return t}function kt(e){if(e.seatCountsBySide)return{...e.seatCountsBySide};let t=e.sides&&e.sides.length?e.sides:["top","bottom"],n=["top","bottom","left","right"].filter(i=>t.includes(i)),o={top:0,bottom:0,left:0,right:0};if(!n.length)return o;let r=Math.max(0,Math.round(e.seatCount));for(let i=0;i<r;i++)o[n[i%n.length]]+=1;return o}function Ke(e){let t=[],n=Math.max(0,Math.round(e.seatCount));if(n===0)return t;let o=new Map((e.overrides??[]).map(l=>[l.index,l])),r=(l,h,f,y)=>{let m=o.get(l),p=Be(m),d=m?.label??`${e.label}-${l+1}`,b=e.displayLabel??e.label;return{index:l,label:d,displayLabel:m?.displayLabel??`${b}-${l+1}`,x:h+(m?.dx??0),y:f+(m?.dy??0),categoryKey:m?.categoryKey??e.categoryKey,skipped:!!m?.skip,accessible:p.length>0,accessibility:p,wheelchairSpaceType:m?.wheelchairSpaceType,commercial:m?.commercial,glyph:m?.glyph,viewUrl:m?.viewFromSeatUrl,viewMeta:m?.viewFromSeatUrl?m.viewFromSeatMeta:void 0,labelStyle:m?.labelStyle,...y?{side:y}:{}}};if(e.shape==="round"){let l=(e.radius??40)+D,h=e.rotation*K,f=Math.max(0,Math.min(360,e.seatArc??360));if(f>=360||n===1){for(let d=0;d<n;d++){let b=h+d/n*2*Math.PI;t.push(r(d,e.center.x+l*Math.cos(b),e.center.y+l*Math.sin(b)))}return t}let y=f*K,m=(2*Math.PI-y)/2,p=h+m;for(let d=0;d<n;d++){let b=p+d/(n-1)*y;t.push(r(d,e.center.x+l*Math.cos(b),e.center.y+l*Math.sin(b)))}return t}let i=e.width??80,s=e.height??50,c=kt(e),a=["top","bottom","left","right"],x=0;for(let l of a){let h=c[l];for(let f=0;f<h;f++){let y,m;l==="top"?(y=-i/2+(f+.5)*i/h,m=-s/2-D):l==="bottom"?(y=-i/2+(f+.5)*i/h,m=s/2+D):l==="left"?(y=-i/2-D,m=-s/2+(f+.5)*s/h):(y=i/2+D,m=-s/2+(f+.5)*s/h);let p=ie(y,m,e.rotation,e.center);t.push(r(x++,p.x,p.y,l))}}return t}function Gn(e){return e.bookAsWhole||e.variableOccupancy?Math.max(0,Math.round(e.seatCount)):Ke(e).filter(t=>!t.skipped).length}function jt(e){return Ke(e).filter(t=>!t.skipped).map(t=>({id:`${e.id}:${t.index}`,label:t.label,...t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.x,y:t.y,rowId:e.id,categoryKey:t.categoryKey,...t.accessible?{accessible:!0}:{},...t.accessibility.length?{accessibility:t.accessibility}:{},...t.wheelchairSpaceType?{wheelchairSpaceType:t.wheelchairSpaceType}:{},...t.commercial?{commercial:t.commercial}:{},...t.glyph?{glyph:t.glyph}:{},...t.viewUrl?{viewUrl:t.viewUrl}:{},...t.viewUrl&&t.viewMeta?{viewMeta:t.viewMeta}:{},...t.labelStyle?{labelStyle:t.labelStyle}:{}}))}function Dt(e){return[{id:`${e.id}:0`,label:e.label,...e.displayLabel&&e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.center.x,y:e.center.y,rowId:e.id,categoryKey:e.categoryKey,kind:"booth"}]}function Fe(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o].x,s=t[o].y,c=t[r].x,a=t[r].y;s>e.y!=a>e.y&&e.x<(c-i)*(e.y-s)/(a-s)+i&&(n=!n)}return n}function Nt(e,t){return t.some((n,o)=>{let r=t[(o+1)%t.length],i=(e.y-n.y)*(r.x-n.x)-(e.x-n.x)*(r.y-n.y);if(Math.abs(i)>1e-7)return!1;let s=(e.x-n.x)*(r.x-n.x)+(e.y-n.y)*(r.y-n.y),c=(r.x-n.x)**2+(r.y-n.y)**2;return s>=-1e-7&&s<=c+1e-7})}function V(e,t,n){return Fe(e,t)&&!(n??[]).some(o=>Fe(e,o)||Nt(e,o))}function Bn(e,t){return ge(e,t).point}function re(e){if(!e.length)return{x:0,y:0};let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return{x:t/e.length,y:n/e.length}}function $(e){switch(e.type){case"row":{let t=ze(e);if(!t.length)return{x:e.origin.x,y:e.origin.y};let n=0,o=0;for(let r of t)n+=r.x,o+=r.y;return{x:n/t.length,y:o/t.length}}case"table":case"booth":return{x:e.center.x,y:e.center.y};case"gaArea":return re(e.points);case"section":return re(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?re(e.points):e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null?{x:e.x+e.width/2,y:e.y+e.height/2}:{x:e.x??0,y:e.y??0};case"decorImage":return{x:e.x+e.width/2,y:e.y+e.height/2}}}function He(e,t){return e.length===t.length&&e.every((n,o)=>n.x===t[o].x&&n.y===t[o].y)}function Ft(e,t){if(e.type!=="gaArea"||!He(e.points,t.outline))return!1;let n=e.holes??[],o=t.holes??[];return n.length===o.length&&n.every((r,i)=>He(r,o[i]))}function Ht(e,t){let n=e.filter(s=>s.type==="section"),o="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0,r=$(t);return(o?n.find(s=>(s.logicalSectionId??s.id)===o&&(Ft(t,s)||V(r,s.outline,s.holes))):void 0)??n.find(s=>V(r,s.outline,s.holes))}function Ut(e){return e.floors&&e.floors.length?e.floors:[{id:"floor-0",name:"Main",objects:e.objects,focalPoint:e.focalPoint,referenceImage:e.referenceImage,backgroundImage:e.backgroundImage}]}function Xn(e,t){let n=Ut(e);return(t?n.find(o=>o.id===t):n[0])?.objects??[]}function Gt(e){return e.floors&&e.floors.length?e.floors.flatMap(t=>t.objects):e.objects}function se(e,t,n){let o=i=>({x:i.x+t,y:i.y+n}),r=i=>i.map(o);switch(e.type){case"row":return{...e,origin:o(e.origin)};case"table":case"booth":return{...e,center:o(e.center)};case"gaArea":return{...e,points:r(e.points),...e.holes?{holes:e.holes.map(r)}:{}};case"section":return{...e,outline:r(e.outline),...e.outlinePath?{outlinePath:ve(e.outlinePath,t,n)}:{},...e.holes?{holes:e.holes.map(r)}:{}};case"text":return{...e,position:o(e.position)};case"shape":return{...e,...e.points?{points:r(e.points)}:{},...e.x!=null?{x:e.x+t}:{},...e.y!=null?{y:e.y+n}:{}};case"decorImage":return{...e,x:e.x+t,y:e.y+n}}}function zn(e,t=900){if(!e.floors||e.floors.length<2)return e;let n=[];return e.floors.forEach((o,r)=>{let i=-r*t;for(let s of o.objects)n.push(i===0?s:se(s,0,i))}),{...e,objects:n,floors:void 0}}function Kn(e){let t=e.floors;if(!t||t.length<2)return e;let n=Bt(e),o=[];return t.forEach((r,i)=>{let{x:s,y:c}=n[i];for(let a of r.objects)o.push(se(a,s,c))}),{...e,objects:o,floors:void 0,referenceImage:void 0,backgroundImage:void 0}}function Vn(e){let t=e.floors;if(!t||t.length<2)return!1;let n=t.map(a=>ce({...e,objects:a.objects,floors:void 0,focalPoint:a.focalPoint,referenceImage:void 0,backgroundImage:void 0}));if(n.some(a=>a.width<=0||a.height<=0))return!1;let[o,...r]=n;if(!r.every(a=>{let x=Math.min(o.x+o.width,a.x+a.width)-Math.max(o.x,a.x),l=Math.min(o.y+o.height,a.y+a.height)-Math.max(o.y,a.y);return x<=0||l<=0?!1:x>=Math.min(o.width,a.width)*.7&&l>=Math.min(o.height,a.height)*.7}))return!1;let s={x:o.x+o.width/2,y:o.y+o.height/2},c=Math.hypot(o.width,o.height)/2;return t.every(a=>a.objects.length?a.objects.filter(l=>{let h=$(l);return Math.hypot(h.x-s.x,h.y-s.y)>=c*.25}).length>=a.objects.length*.6:!1)}function $n(e){let t=e.floors;if(!t||t.length<2)return e;let n=t.map((a,x)=>({floor:a,index:x,height:a.baseHeightM??0})).sort((a,x)=>a.height-x.height||a.index-x.index),o=ce({...e,objects:n[0].floor.objects,floors:void 0,focalPoint:n[0].floor.focalPoint,referenceImage:void 0,backgroundImage:void 0}),r={x:o.x+o.width/2,y:o.y+o.height/2},i=Math.max(48,Math.min(200,Math.max(o.width,o.height)*.06)),s=[],c=0;return n.forEach((a,x)=>{let l=a.floor.objects.map(p=>{let d=$(p);return Math.hypot(d.x-r.x,d.y-r.y)}),h=l.filter(p=>Number.isFinite(p)),f=h.length?Math.min(...h):0,y=h.length?Math.max(...h):0,m=x===0?0:Math.max(0,c+i-f);c=y+m,a.floor.objects.forEach((p,d)=>{if(x>0&&p.type==="shape"&&p.role==="stage")return;if(m===0){s.push(p);return}let b=l[d];if(!Number.isFinite(b)||b<1e-6){s.push(p);return}let S=$(p);s.push(se(p,(S.x-r.x)/b*m,(S.y-r.y)/b*m))})}),{...e,objects:s,floors:void 0,referenceImage:void 0,backgroundImage:void 0}}function Bt(e){let t=e.floors;if(!t?.length)return[{x:0,y:0}];if(t.length<2)return t.map(()=>({x:0,y:0}));let n=t.map(f=>ce({...e,objects:f.objects,floors:void 0,focalPoint:f.focalPoint,referenceImage:void 0,backgroundImage:void 0})),o=Math.max(1,...n.map(f=>Math.max(f.width,f.height))),r=Math.max(64,Math.min(240,o*.08)),i=16/10,s=null;for(let f=1;f<=t.length;f+=1){let y=Math.ceil(t.length/f),m=new Array(f).fill(0),p=new Array(y).fill(0);n.forEach((u,M)=>{let w=M%f,P=Math.floor(M/f);m[w]=Math.max(m[w],u.width),p[P]=Math.max(p[P],u.height)});let d=m.reduce((u,M)=>u+M,0)+r*(f-1),b=p.reduce((u,M)=>u+M,0)+r*(y-1),S=f*y-t.length,g=Math.abs(Math.log(d/Math.max(1,b)/i))+S*.04;(!s||g<s.score)&&(s={columns:f,columnWidths:m,rowHeights:p,score:g})}let{columns:c,columnWidths:a,rowHeights:x}=s,l=[],h=[];return a.reduce((f,y,m)=>(l[m]=f,f+y+r),0),x.reduce((f,y,m)=>(h[m]=f,f+y+r),0),t.map((f,y)=>{let m=n[y],p=y%c,d=Math.floor(y/c),b=l[p]+(a[p]-m.width)/2,S=h[d]+(x[d]-m.height)/2;return{x:b-m.x,y:S-m.y}})}function Ue(e,t,n,o,r,i,s,c,a){let x=[],l=Ie(e),h=m=>!m?.eventConfigurationId||m.eventConfigurationId===o&&(m.eventConfigurationVersion===void 0||m.eventConfigurationVersion===a),f=m=>le(m,{activeConfigurationId:o,activeConfigurationVersion:a,activeBasisSha256:r,now:c}),y=(m,p)=>f(m)?{...m,coverage:p}:void 0;for(let m of e){let p=[];if(m.type==="row"?p=ze(m):m.type==="table"?p=jt(m):m.type==="booth"&&(p=Dt(m)),!p.length)continue;for(let u of p)u.viewUrl&&!h(u.viewMeta)&&(u.viewUrl=void 0,u.viewMeta=void 0);if(m.type==="row"){let u=l.get(m.id);if(u){let M=new Map((m.overrides??[]).map(w=>[w.index,w]));for(let w of p){let P=Number(w.id.slice(w.id.lastIndexOf(":")+1));if(!Number.isInteger(P))continue;w.logicalRowId=u.groupId,w.logicalSeatIndex=u.adjacencyOffset+P,M.get(P)?.displayLabel||(w.displayLabel=ee(m,P,u)),!w.viewUrl&&u.viewFromSeatUrl&&h(u.viewFromSeatMeta)&&(w.viewUrl=u.viewFromSeatUrl,w.viewMeta=u.viewFromSeatMeta);let E=M.get(P)?.confidenceEvidence;w.confidenceEvidence=y(E,"exact-seat")??y(m.confidenceEvidence,"row-representative")??y(u.confidenceEvidence,"row-representative")}}}let d=Ht(e,m),b=d?.viewFromSeatUrl,g=(d?.zone?t?.find(u=>u.id===d.zone):void 0)?.focalPoint??n;for(let u of p){if(!u.confidenceEvidence){let M=Number(u.id.slice(u.id.lastIndexOf(":")+1)),w=(m.type==="row"||m.type==="table")&&Number.isInteger(M)?m.overrides?.find(P=>P.index===M)?.confidenceEvidence:void 0;u.confidenceEvidence=y(w,"exact-seat")??(m.type==="row"?y(m.confidenceEvidence,"row-representative"):void 0)}u.confidenceEvidence??=y(d?.confidenceEvidence,"section-representative")??(s?y(s.evidence,s.coverage):void 0),!u.viewUrl&&b&&h(d?.viewFromSeatMeta)&&(u.viewUrl=b,u.viewMeta=d?.viewFromSeatMeta),!u.viewUrl&&i&&h(i.meta)&&(u.viewUrl=i.url,u.viewMeta=i.meta),d&&(u.sectionId=d.logicalSectionId??d.id),d?.zone&&(u.zoneId=d.zone),g&&(u.focalPoint={...g})}x.push(...p)}return x}function Wn(e,t={}){if(e.floors?.length){let o=[];for(let r of e.floors){let i=r.focalPoint??e.focalPoint,s=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,c=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,a=Ue(r.objects,e.zones,i,e.eventConfigurationId,e.confidenceBasisSha256,s,c,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&Ge(r.objects,r.focalPoint??e.focalPoint,r.baseHeightM??0,a);for(let x of a)x.floorId=r.id;o.push(...a)}return o}let n=Ue(e.objects,e.zones,e.focalPoint,e.eventConfigurationId,e.confidenceBasisSha256,e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);return t.resolveEyeHeights!==!1&&Ge(e.objects,e.focalPoint,t.floorBaseHeightM??0,n),n}function Ge(e,t,n,o){let r=e.filter(l=>l.type==="section"),i=n>0||r.some(l=>l.height!==void 0||l.rake!==void 0||(l.elevation??0)>0);if(!r.length||!i||!t){for(let l of o)l.eyeHeightM=n+X;return}let s=new Array(o.length),c=new Map,a=new Map;for(let l=0;l<o.length;l++){let h=o[l],y=(h.sectionId?r.find(p=>p.id===h.sectionId)??r.find(p=>p.logicalSectionId===h.sectionId&&V({x:h.x,y:h.y},p.outline,p.holes)):void 0)??r.find(p=>V({x:h.x,y:h.y},p.outline,p.holes))??null;if(s[l]=y,!y)continue;c.has(y.id)||c.set(y.id,Le(y,{floorBaseHeightM:n}));let m=a.get(y.id);m?m.push(l):a.set(y.id,[l])}let x=new Array(o.length).fill(void 0);for(let[l,h]of a){let f=c.get(l);if(!f)continue;let y=f.rake>0?Math.tan(f.rake*Math.PI/180):0,m=Ne(l,o,h,t);for(let p of m.rows){let d=p.blockDepth*B*y,b=f.height+d;for(let S of p.seatIndices)x[S]=b}}for(let l=0;l<o.length;l++){let h=o[l],f=s[l];if(!f){h.eyeHeightM=n+X;continue}let y=c.get(f.id);h.eyeHeightM=(x[l]??y.height)+X}}var z=40;function ce(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=(s,c)=>{s<t&&(t=s),c<n&&(n=c),s>o&&(o=s),c>r&&(r=c)};for(let s of Gt(e))if(s.type==="row"){let c=new Map((s.overrides??[]).map(a=>[a.index,a]));Xe(s).forEach((a,x)=>{let l=c.get(x);l?.skip||i(a.x+(l?.dx??0),a.y+(l?.dy??0))})}else if(s.type==="gaArea")for(let c of s.points)i(c.x,c.y);else if(s.type==="section")for(let c of s.outline)i(c.x,c.y);else if(s.type==="decorImage")i(s.x,s.y),i(s.x+s.width,s.y+s.height);else if(s.type==="shape")if(s.points&&s.points.length)for(let c of s.points)i(c.x,c.y);else s.x!=null&&s.y!=null&&s.width!=null&&s.height!=null&&(i(s.x,s.y),i(s.x+s.width,s.y+s.height));else if(s.type==="table"){let c=D+At,a=s.shape==="round"?(s.radius??40)+c:Math.max((s.width??80)/2,(s.height??50)/2)+c;i(s.center.x-a,s.center.y-a),i(s.center.x+a,s.center.y+a)}else if(s.type==="booth"){let c=Math.max(s.width,s.height)/2;i(s.center.x-c,s.center.y-c),i(s.center.x+c,s.center.y+c)}else if(s.type==="text"){let c=fe(s);i(s.position.x,s.position.y),i(s.position.x+c.width,s.position.y+c.height)}for(let s of[e.referenceImage,e.backgroundImage]){if(!s)continue;let{center:c,width:a}=s,x=a*3/4;i(c.x-a/2,c.y-x/2),i(c.x+a/2,c.y+x/2)}if(!isFinite(t)){let s=e.focalPoint??{x:0,y:0};return{x:s.x-200,y:s.y-200,width:400,height:400}}return{x:t-z,y:n-z,width:o-t+z*2,height:r-n+z*2}}export{Xt as a,zt as b,Kt as c,Vt as d,$t as e,Wt as f,Yt as g,qt as h,Jt as i,fe as j,Zt as k,qe as l,en as m,Y as n,on as o,me as p,rn as q,sn as r,Qe as s,be as t,an as u,ge as v,et as w,un as x,mn as y,Pe as z,pn as A,ve as B,rt as C,it as D,ct as E,yn as F,lt as G,dt as H,xn as I,gn as J,wn as K,Sn as L,Ie as M,Ce as N,pt as O,Q as P,Oe as Q,Pn as R,Z as S,bt as T,Re as U,ee as V,B as W,Cn as X,wt as Y,Te as Z,_e as _,Ae as $,te as aa,St as ba,Mt as ca,Pt as da,X as ea,On as fa,Le as ga,je as ha,Ct as ia,Ne as ja,D as ka,Xe as la,Un as ma,Lt as na,ze as oa,kt as pa,Ke as qa,Gn as ra,jt as sa,Dt as ta,Fe as ua,V as va,Bn as wa,$ as xa,Ht as ya,Ut as za,Xn as Aa,Gt as Ba,se as Ca,zn as Da,Kn as Ea,Vn as Fa,$n as Ga,Bt as Ha,Wn as Ia,ce as Ja};
@@ -0,0 +1 @@
1
+ import{a as Ne,c as _e,f as be,g as De,l as Ke,t as pe,v as Be}from"./chunk-GXMGOWKB.js";import{e as ze,n as Ge,p as Ve,q as Qe,r as he,v as ve}from"./chunk-DNGP2HDT.js";import{a as ge,b as me,d as Pe,f as Fe,i as oe}from"./chunk-HZT2U5IY.js";import{b as Q,m as se,p as z,s as Ue}from"./chunk-OBBSZUYF.js";import{$ as X,A as Oe,U as Ae,Z as le,_ as H,a as It,aa as Y,b as wt,ba as de,c as St,ca as ue,d as xt,da as Ee,e as Ct,f as jt,g as Ce,ga as Te,h as $t,i as kt,j as je,k as $e,l as ce,ma as Le,oa as K,pa as Me,sa as W,va as te,w as q,xa as fe,z as ke,za as ye}from"./chunk-I6DNJFRF.js";import{c as Re,m as R}from"./chunk-CXF32VPG.js";var Ie=[{key:"row-seats",label:"row seats",suffix:"rows",labelSuffix:"Rows",creationWord:"Seats",objectType:"row"},{key:"table-chairs",label:"table chairs",suffix:"tables",labelSuffix:"Tables",creationWord:"Tables",objectType:"table"},{key:"booth-units",label:"booth units",suffix:"booths",labelSuffix:"Booths",creationWord:"Booths",objectType:"booth"},{key:"ga-capacity",label:"GA capacity",suffix:"ga",labelSuffix:"GA",creationWord:"Standing",objectType:"gaArea"}];function qe(t){return t.floors?.length?t.floors:[{id:"floor-0",objects:t.objects}]}function Ot(t){return Ie.find(e=>e.key===t)}function ie(t){let e=new Map,n=Math.max(0,Math.floor(t.seatCount)),i=new Map((t.overrides??[]).filter(a=>Number.isInteger(a.index)&&a.index>=0&&a.index<t.seatCount).map(a=>[a.index,a])),r=(a,u=1)=>{a&&u>0&&e.set(a,(e.get(a)??0)+u)};r(t.categoryKey,n-i.size);for(let a of i.values())a.skip||r(a.categoryKey??t.categoryKey);return e}function At(t){return t.type==="row"||t.type==="table"?[...ie(t).keys()]:t.type==="booth"?t.categoryKey?[t.categoryKey]:[]:t.type==="gaArea"?t.capacity>0&&t.categoryKey?[t.categoryKey]:[]:[]}function He(t){return Ie.find(e=>e.objectType===t.type)??null}function Xe(t){return t.type==="row"||t.type==="table"||t.type==="booth"||t.type==="gaArea"}function ne(t){let e=new Map;for(let r of qe(t))for(let a of r.objects){if(!Xe(a))continue;let u=He(a);for(let y of At(a)){let h=e.get(y)??new Map,l=h.get(u.key)??[];if(!l.some(f=>f.id===a.id)){let f=a.displayLabel||a.label||a.id;l.push({id:a.id,label:f,type:u.objectType,floorId:r.id})}h.set(u.key,l),e.set(y,h)}}let n=new Map(t.categories.map(r=>[r.key,r.label]));return[...t.categories.map(r=>r.key),...[...e.keys()].filter(r=>!n.has(r)).sort()].flatMap(r=>{let a=e.get(r);if(!a||a.size<2)return[];let u=Ie.flatMap(y=>{let h=a.get(y.key);return h?.length?[{family:y.key,label:y.label,objectType:y.objectType,targets:h}]:[]});return[{categoryKey:r,categoryLabel:n.get(r)??r,families:u,objectIds:[...new Set(u.flatMap(y=>y.targets.map(h=>h.id)))]}]})}function Ye(t){let e=t.families.map(n=>`${n.label} (${n.targets.map(i=>i.label).join(", ")})`).join(" and ");return`Category \u201C${t.categoryLabel}\u201D is used by more than one kind of inventory \u2014 ${e}. Each category can belong to only one kind \u2014 use the safe split to separate them (prices, ticket tiers, accessibility, and provenance are preserved).`}function We(t){return t.normalize("NFKC").trim().toLocaleLowerCase("en")}function Et(t,e,n){for(let i=1;i<=1e4;i+=1){let r=i===1?`--${e}`:`--${e}-${i}`,u=`${t.slice(0,Math.max(1,160-r.length))}${r}`;if(!n.has(u))return n.add(u),u}throw new Error(`Unable to allocate a category key for ${t} (${e})`)}function Tt(t,e,n){for(let i=1;i<=1e4;i+=1){let r=i===1?` (${e})`:` (${e} ${i})`,u=`${t.normalize("NFKC").trim().slice(0,Math.max(1,80-r.length)).trimEnd()}${r}`,y=We(u);if(!n.has(y))return n.add(y),u}throw new Error(`Unable to allocate a category label for ${t} (${e})`)}function Lt(t,e,n,i){let r=Ot(e);return{...structuredClone(t),key:Et(t.key,r.suffix,n),label:Tt(t.label,r.labelSuffix,i)}}function Mt(t,e,n){let i=[];for(let r of qe(t))for(let a of r.objects){if(!Xe(a))continue;let u=He(a),y=n.get(u.key);if(!(!y||y===e))if(a.type==="row"||a.type==="table"){let h=[];a.categoryKey===e&&(a.categoryKey=y);for(let l of a.overrides??[])l.categoryKey===e&&(l.categoryKey=y,h.push(l.index));(a.categoryKey===y||h.length)&&i.push({family:u.key,floorId:r.id,objectId:a.id,objectType:u.objectType,fromCategoryKey:e,toCategoryKey:y,...h.length?{seatOverrideIndices:h.sort((l,f)=>l-f)}:{}})}else a.categoryKey===e&&(a.categoryKey=y,i.push({family:u.key,floorId:r.id,objectId:a.id,objectType:u.objectType,fromCategoryKey:e,toCategoryKey:y}))}return i}function Ze(t){let e=structuredClone(t),n=ne(e);if(!n.length)return{doc:e,changed:!1,changes:[],before:n,after:n};let i=new Set(e.categories.map(y=>y.key)),r=new Set(e.categories.map(y=>We(y.label))),a=[];for(let y of n){let h=e.categories.findIndex(w=>w.key===y.categoryKey);if(h<0)continue;let l=e.categories[h],f=y.families[0].family,g=new Map([[f,l.key]]),p=y.families.slice(1).map(w=>{let A=Lt(l,w.family,i,r);return g.set(w.family,A.key),{family:w.family,key:A.key,label:A.label,category:A}});e.categories.splice(h+1,0,...p.map(w=>w.category));let m=Mt(e,l.key,g);a.push({categoryKey:l.key,categoryLabel:l.label,retainedFamily:f,clones:p.map(({family:w,key:A,label:x})=>({family:w,key:A,label:x})),reassignments:m})}e.floors?.length&&(e.objects=e.floors[0].objects);let u=ne(e);return{doc:e,changed:a.length>0,changes:a,before:n,after:u}}function Pt(t,e){return Math.abs(t.x-e.x)<=1e-7&&Math.abs(t.y-e.y)<=1e-7}function Z(t,e,n){return(e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x)}function re(t,e,n){let i=Z(e,n,t);return Math.abs(i)>1e-7?!1:t.x>=Math.min(e.x,n.x)-1e-7&&t.x<=Math.max(e.x,n.x)+1e-7&&t.y>=Math.min(e.y,n.y)-1e-7&&t.y<=Math.max(e.y,n.y)+1e-7}function Ft(t,e,n,i){let r=Z(t,e,n),a=Z(t,e,i),u=Z(n,i,t),y=Z(n,i,e);return(r>1e-7&&a<-1e-7||r<-1e-7&&a>1e-7)&&(u>1e-7&&y<-1e-7||u<-1e-7&&y>1e-7)?!0:Math.abs(r)<=1e-7&&re(n,t,e)||Math.abs(a)<=1e-7&&re(i,t,e)||Math.abs(u)<=1e-7&&re(t,n,i)||Math.abs(y)<=1e-7&&re(e,n,i)}function Rt(t){return t.reduce((e,n,i)=>{let r=t[(i+1)%t.length];return e+n.x*r.y-r.x*n.y},0)}function Nt(t){for(let e=0;e<t.length;e+=1){let n=(e+1)%t.length;for(let i=e+1;i<t.length;i+=1){let r=(i+1)%t.length;if(!(e===i||n===i||r===e)&&Ft(t[e],t[n],t[i],t[r]))return!0}}return!1}function Je(t){return t.length<3?{ok:!1,code:"too_few_vertices",message:"Add at least three vertices to create a polygon."}:t.length>256?{ok:!1,code:"too_many_vertices",message:"A polygon can contain at most 256 vertices."}:t.some(e=>!Number.isFinite(e.x)||!Number.isFinite(e.y)||Math.abs(e.x)>1e7||Math.abs(e.y)>1e7)?{ok:!1,code:"invalid_coordinate",message:"Every polygon vertex must use a finite coordinate inside the safe chart range."}:t.some((e,n)=>Pt(e,t[(n+1)%t.length]))?{ok:!1,code:"duplicate_vertex",message:"Move or remove duplicate neighbouring vertices."}:Math.abs(Rt(t))<2?{ok:!1,code:"degenerate_polygon",message:"The polygon needs a visible enclosed area."}:Nt(t)?{ok:!1,code:"self_intersection",message:"Polygon edges cannot cross or touch each other."}:{ok:!0}}function B(t){return t.length>=3&&t.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))}function U(t,e,n){let i=(t.y-e.y)*(n.x-e.x)-(t.x-e.x)*(n.y-e.y);if(Math.abs(i)>1e-7)return!1;let r=(t.x-e.x)*(n.x-e.x)+(t.y-e.y)*(n.y-e.y);if(r<-1e-7)return!1;let a=(n.x-e.x)**2+(n.y-e.y)**2;return r<=a+1e-7}function G(t,e){let n=!1;for(let i=0,r=e.length-1;i<e.length;r=i++){let a=e[r],u=e[i];if(U(t,a,u))return!0;a.y>t.y!=u.y>t.y&&t.x<(u.x-a.x)*(t.y-a.y)/(u.y-a.y)+a.x&&(n=!n)}return n}function D(t,e,n){return(e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x)}function tt(t,e,n,i){let r=D(t,e,n),a=D(t,e,i),u=D(n,i,t),y=D(n,i,e);return(r>1e-7&&a<-1e-7||r<-1e-7&&a>1e-7)&&(u>1e-7&&y<-1e-7||u<-1e-7&&y>1e-7)?!0:Math.abs(r)<=1e-7&&U(n,t,e)||Math.abs(a)<=1e-7&&U(i,t,e)||Math.abs(u)<=1e-7&&U(t,n,i)||Math.abs(y)<=1e-7&&U(e,n,i)}function V(t){for(let e=0;e<t.length;e+=1){let n=(e+1)%t.length;for(let i=e+1;i<t.length;i+=1){let r=(i+1)%t.length;if(!(e===i||n===i||r===e)&&tt(t[e],t[n],t[i],t[r]))return!0}}return!1}function J(t,e){for(let n=0;n<t.length;n+=1)for(let i=0;i<e.length;i+=1)if(tt(t[n],t[(n+1)%t.length],e[i],e[(i+1)%e.length]))return!0;return G(t[0],e)||G(e[0],t)}function et(t,e){return!e.some((n,i)=>U(t,n,e[(i+1)%e.length]))&&G(t,e)}function ot(t){let e=t.outlinePath;if(!e?.segments.length)return;let n=a=>Number.isFinite(a.x)&&Number.isFinite(a.y),i=(a,u)=>Math.hypot(a.x-u.x,a.y-u.y);if(!n(e.start))return 0;let r=e.start;for(let a=0;a<e.segments.length;a++){let u=e.segments[a];if(!u||!n(u.end)||i(r,u.end)<=1e-9||u.kind==="bezier"&&(!n(u.control1)||!n(u.control2)))return a;if(u.kind==="arc"){if(!n(u.center)||!Number.isFinite(u.radius)||u.radius<=1e-6)return a;let y=Math.max(1e-4,u.radius*1e-4);if(Math.abs(i(r,u.center)-u.radius)>y||Math.abs(i(u.end,u.center)-u.radius)>y)return a}r=u.end}return i(r,e.start)>1e-4,e.segments.length-1}function _t(t,e,n,i){let r=D(t,e,n),a=D(t,e,i),u=D(n,i,t),y=D(n,i,e);return(r>1e-7&&a<-1e-7||r<-1e-7&&a>1e-7)&&(u>1e-7&&y<-1e-7||u<-1e-7&&y>1e-7)}function nt(t,e){for(let n=0;n<t.length;n+=1)for(let i=0;i<e.length;i+=1)if(_t(t[n],t[(n+1)%t.length],e[i],e[(i+1)%e.length]))return!0;return t.some(n=>et(n,e))||e.some(n=>et(n,t))}function it(t){return t.role!=="reference-focal"||!t.points||!B(t.points)?null:t.points}function at(t,e){if(t.displayLabel!==void 0){let n=t.displayLabel.normalize("NFKC").trim();(!n||n!==t.displayLabel||n.length>80)&&e.push({severity:"error",code:"invalid-display-label",message:`${t.type==="gaArea"?"GA area":t.type} "${t.label}" must use a normalized buyer label of 1 to 80 characters`,objectId:t.id})}if(t.displayType!==void 0){let n=t.displayType.normalize("NFKC").trim();(!n||n!==t.displayType||n.length>24)&&e.push({severity:"error",code:"invalid-display-type",message:`${t.type==="gaArea"?"GA area":t.type} "${t.label}" must use a normalized buyer type of 1 to 24 characters`,objectId:t.id})}}function rt(t,e,n,i){let r=t.crop,a=r&&(!Number.isFinite(r.x)||!Number.isFinite(r.y)||!Number.isFinite(r.width)||!Number.isFinite(r.height)||r.x<0||r.y<0||r.width<=0||r.height<=0||r.x+r.width>1.000001||r.y+r.height>1.000001);(!Number.isFinite(t.center?.x)||!Number.isFinite(t.center?.y)||!Number.isFinite(t.width)||t.width<=0||!Number.isFinite(t.opacity)||t.opacity<0||t.opacity>1||t.rotation!==void 0&&!Number.isFinite(t.rotation)||a)&&n.push({severity:"error",code:"invalid-background-placement",message:`The ${e} image has an invalid position, size, opacity, rotation, or crop`,...i?{floorId:i}:{}})}function we(t,e,n,i){let r=t.referenceImage,a=t.backgroundImage;r&&(rt(r,"reference",e,i),!r.assetId&&!r.url&&e.push({severity:"error",code:"invalid-reference-image",message:"A trace reference must identify a private asset or self-contained image",...i?{floorId:i}:{}})),a&&(rt(a,a.assetId?"legacy reference":"buyer background",e,i),!a.assetId&&!a.url&&e.push({severity:"error",code:"invalid-buyer-background",message:"A buyer background must contain a renderable image URL",...i?{floorId:i}:{}}),a.assetId&&n.push({severity:"warning",code:"legacy-reference-background",message:"This legacy asset-backed background is trace-only and will migrate to the private reference layer when edited",...i?{floorId:i}:{}})),ze(t)&&e.push({severity:"error",code:"conflicting-reference-images",message:"The canonical reference and legacy asset-backed background identify different private sources",...i?{floorId:i}:{}})}function ee(t){let e=new Set(Q.map(n=>n.key));return!t||/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&!!t.logicalSectionId.trim()&&["user-confirmed","authoritative-source"].includes(t.evidence)&&!!t.sourceDescription.trim()&&(t.derivation===void 0||["explicit-inventory","server-synthesized-from-aggregate"].includes(t.derivation))&&(t.aggregateEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.aggregateEvidence))&&(t.derivation!=="server-synthesized-from-aggregate"||t.evidence==="user-confirmed")&&(t.sectionAssignmentEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.sectionAssignmentEvidence))&&t.sectionAssignmentEvidence===void 0==!t.sectionAssignmentSourceDescription?.trim()&&(t.sectionAssignmentSourceDescription?.trim().length??0)<=240&&(t.numberingEvidence===void 0||t.numberingEvidence==="user-confirmed")&&t.numberingEvidence===void 0==!t.numberingSourceDescription?.trim()&&(t.numberingSourceDescription?.trim().length??0)<=240&&(!t.accessibility||t.accessibility.placementDerivation==="server-synthesized-row-edges"&&t.accessibility.groupLogicalSectionIds.length>0&&t.accessibility.groupLogicalSectionIds.length<=100&&new Set(t.accessibility.groupLogicalSectionIds).size===t.accessibility.groupLogicalSectionIds.length&&t.accessibility.groupLogicalSectionIds.includes(t.logicalSectionId)&&t.accessibility.groupLogicalSectionIds.every(n=>!!n.trim()&&n.length<=160)&&["user-confirmed","authoritative-source"].includes(t.accessibility.assignmentEvidence)&&!!t.accessibility.assignmentSourceDescription.trim()&&t.accessibility.assignmentSourceDescription.trim().length<=240&&t.accessibility.counts.length>0&&t.accessibility.counts.length<=Q.length&&new Set(t.accessibility.counts.map(n=>n.type)).size===t.accessibility.counts.length&&t.accessibility.counts.every(n=>e.has(n.type)&&Number.isInteger(n.count)&&n.count>0&&["user-confirmed","authoritative-source"].includes(n.evidence)&&!!n.sourceDescription.trim()&&n.sourceDescription.trim().length<=240))}function st(t){let e=t.referenceInventoryExclusion;return!e||typeof e.assetId=="string"&&/^ref_[0-9a-f-]{36}$/.test(e.assetId)&&e.assetId===t.referenceSource?.assetId&&typeof e.logicalSectionId=="string"&&e.logicalSectionId===(t.logicalSectionId??t.id)&&typeof e.reason=="string"&&!!e.reason.trim()&&e.reason.trim().length<=80&&["user-confirmed","authoritative-source"].includes(e.evidence)&&typeof e.sourceDescription=="string"&&!!e.sourceDescription.trim()&&e.sourceDescription.trim().length<=240}function ct(t){let e=t.referenceCategorySource;return!e||/^ref_[0-9a-f-]{36}$/.test(e.assetId)&&/^#[0-9a-f]{6}$/i.test(e.sourceColor)&&(e.sourceColors===void 0||e.sourceColors.length>0&&e.sourceColors.includes(e.sourceColor)&&new Set(e.sourceColors).size===e.sourceColors.length&&e.sourceColors.every(n=>/^#[0-9a-f]{6}$/i.test(n)&&`${n[1]}${n[3]}${n[5]}`.toLowerCase()===`${e.sourceColor[1]}${e.sourceColor[3]}${e.sourceColor[5]}`.toLowerCase()))&&(e.logicalSectionIds===void 0||e.logicalSectionIds.length>0&&new Set(e.logicalSectionIds).size===e.logicalSectionIds.length&&e.logicalSectionIds.every(n=>!!n.trim()&&n.length<=160))&&(e.assignmentDerivation===void 0||["source-color-class","confirmed-logical-sections"].includes(e.assignmentDerivation))&&e.assignmentEvidence===void 0==!e.assignmentSourceDescription?.trim()&&(e.assignmentEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.assignmentEvidence))&&(e.assignmentSourceDescription?.trim().length??0)<=240&&(e.assignmentDerivation!=="confirmed-logical-sections"||e.assignmentEvidence!==void 0&&!!e.assignmentSourceDescription?.trim())&&e.sourcePaletteColor===void 0==(e.sourcePaletteColorEvidence===void 0)&&e.sourcePaletteColorEvidence===void 0==!e.sourcePaletteColorSourceDescription?.trim()&&(e.sourcePaletteColor===void 0||/^#[0-9a-f]{6}$/i.test(e.sourcePaletteColor))&&(e.sourcePaletteColorEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.sourcePaletteColorEvidence))&&(e.sourcePaletteColorSourceDescription?.trim().length??0)<=240&&["user-confirmed","authoritative-source"].includes(e.labelEvidence)&&!!e.labelSourceDescription.trim()&&e.labelSourceDescription.trim().length<=240&&t.price!==void 0&&["user-confirmed","authoritative-source"].includes(e.priceEvidence)&&!!e.priceSourceDescription.trim()&&e.priceSourceDescription.trim().length<=240&&e.outputColorEvidence===void 0==!e.outputColorSourceDescription?.trim()&&(e.outputColorEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.outputColorEvidence))&&(e.outputColorSourceDescription?.trim().length??0)<=240&&(t.color.toLowerCase()===(e.sourcePaletteColor??e.sourceColor).toLowerCase()&&new Set((e.sourceColors??[e.sourceColor]).map(n=>`${n[1]}${n[3]}${n[5]}`.toLowerCase())).size===1||e.outputColorEvidence!==void 0&&["user-confirmed","authoritative-source"].includes(e.outputColorEvidence))}function lt(t,e){let n=t.floors?.length?t.floors.map(a=>({id:a.id,objects:a.objects})):[{id:"floor-0",objects:t.objects}],i=new Map,r=new Map;for(let a of n){let u=a.objects.filter(l=>l.type==="row"),y=new Map,h=new Map;for(let l of u){if(l.segmentedRow){let f=y.get(l.segmentedRow.groupId)??[];f.push(l),y.set(l.segmentedRow.groupId,f)}if(l.rowBlockGeneration){let f=h.get(l.rowBlockGeneration.groupId)??[];f.push(l),h.set(l.rowBlockGeneration.groupId,f)}l.segmentedRow&&l.rowBlockGeneration&&e.push({severity:"error",code:"invalid-row-group-membership",message:`Row "${l.label}" cannot be both a segmented-row component and a generated row-block member`,objectId:l.id,floorId:a.id})}for(let[l,f]of y){let g=i.get(l);g&&g!==a.id&&e.push({severity:"error",code:"invalid-segmented-row",message:`Segmented row "${l}" cannot span multiple floors`,objectId:f[0].id,floorId:a.id}),i.set(l,a.id);let p=f.slice().sort((j,T)=>j.segmentedRow.componentIndex-T.segmentedRow.componentIndex),m=p[0]?.segmentedRow,w=m?.componentCount??0,A=m?JSON.stringify({displayLabel:m.displayLabel,repeatLabelOnComponents:m.repeatLabelOnComponents,displayType:m.displayType,labelPresentation:m.labelPresentation,viewFromSeatUrl:m.viewFromSeatUrl,viewFromSeatMeta:m.viewFromSeatMeta,confidenceEvidence:m.confidenceEvidence,smoothing:m.smoothing}):"";m&&w>=2&&w<=64&&p.length===w&&m.boundaryBefore==="start"&&p.every((j,T)=>{let $=j.segmentedRow;return $.kind==="segmented-row-v1"&&$.groupId===l&&$.componentCount===w&&$.componentIndex===T&&(T===0?$.boundaryBefore==="start":$.boundaryBefore!=="start")&&$.displayLabel.normalize("NFKC").trim()===$.displayLabel&&$.displayLabel.length>0&&$.displayLabel.length<=80&&JSON.stringify({displayLabel:$.displayLabel,repeatLabelOnComponents:$.repeatLabelOnComponents,displayType:$.displayType,labelPresentation:$.labelPresentation,viewFromSeatUrl:$.viewFromSeatUrl,viewFromSeatMeta:$.viewFromSeatMeta,confidenceEvidence:$.confidenceEvidence,smoothing:$.smoothing})===A})||e.push({severity:"error",code:"invalid-segmented-row",message:`Segmented row "${l}" has missing, duplicated, cyclic, or inconsistent component metadata`,objectId:f[0]?.id,floorId:a.id})}for(let[l,f]of h){let g=r.get(l);g&&g!==a.id&&e.push({severity:"error",code:"invalid-row-block-generation",message:"A generated row block cannot span multiple floors",objectId:f[0].id,floorId:a.id}),r.set(l,a.id)}}}function Dt(t){return t.type==="row"||t.type==="table"||t.type==="booth"}function Kt(t){let e=[],n=new Map((t.overrides??[]).map(i=>[i.index,i]));for(let i=0;i<t.seatCount;i++){let r=n.get(i);r?.skip||e.push({label:Ae(t,i,r),index:i})}return e}function dt(t){let e=[],n=new Map((t.overrides??[]).map(i=>[i.index,i]));for(let i=0;i<t.seatCount;i++){let r=n.get(i);r?.skip||e.push({label:r?.label??`${t.label}-${i+1}`,index:i})}return e}function ut(t){let e=[];t.eventConfigurationId!==void 0&&(typeof t.eventConfigurationId!="string"||t.eventConfigurationId.normalize("NFKC").trim()!==t.eventConfigurationId||t.eventConfigurationId.length<1||t.eventConfigurationId.length>100)&&e.push({severity:"error",code:"invalid-event-configuration",message:"Active event configuration must contain 1 to 100 normalized characters"});let n=[],i=new Set(t.categories.map(o=>o.key)),r=new Set(Q.map(o=>o.key)),a=new Map(t.categories.map(o=>[o.key,o.price!=null||o.notForSale===!0])),u=new Set;we(t,e,n),t.theme?.logoUrl!==void 0&&!se(t.theme.logoUrl)&&e.push({severity:"error",code:"invalid-theme-logo-url",message:"The buyer-facing theme logo URL is invalid"});let y=se,h=(o,I,s,d={})=>{if(I===void 0)return;if(!I||typeof I!="object"||Array.isArray(I)){e.push({severity:"error",code:"invalid-seat-view-metadata",message:`${s} view metadata is invalid`,...d});return}let c=I;o||n.push({severity:"warning",code:"orphaned-seat-view-metadata",message:`${s} view metadata has no image`,...d});let v=new Set(["exact-seat","row-representative","section-representative","floor-representative","venue-representative"]);c.projection!==void 0&&c.projection!=="equirectangular"&&e.push({severity:"error",code:"invalid-seat-view-projection",message:`${s} view projection must be equirectangular`,...d}),c.coverage!==void 0&&!v.has(c.coverage)&&e.push({severity:"error",code:"invalid-seat-view-coverage",message:`${s} view coverage is invalid`,...d});let b=(S,C,k)=>typeof S=="number"&&Number.isFinite(S)&&S>=C&&S<=k;if(c.initialBearingDeg!==void 0&&!b(c.initialBearingDeg,-360,360)&&e.push({severity:"error",code:"invalid-seat-view-bearing",message:`${s} view bearing must be between -360\xB0 and 360\xB0`,...d}),c.initialPitchDeg!==void 0&&!b(c.initialPitchDeg,-90,90)&&e.push({severity:"error",code:"invalid-seat-view-pitch",message:`${s} view pitch must be between -90\xB0 and 90\xB0`,...d}),c.capturedAt!==void 0&&(typeof c.capturedAt!="string"||c.capturedAt.length>40||!Number.isFinite(Date.parse(c.capturedAt)))&&e.push({severity:"error",code:"invalid-seat-view-capture-date",message:`${s} view capture date is invalid`,...d}),c.sourceLabel!==void 0&&(typeof c.sourceLabel!="string"||c.sourceLabel.trim().length>100)&&e.push({severity:"error",code:"invalid-seat-view-source",message:`${s} view source label is invalid`,...d}),c.previewUrl!==void 0&&!y(c.previewUrl)&&e.push({severity:"error",code:"invalid-seat-view-preview-url",message:`${s} view preview URL is invalid`,...d}),c.variants!==void 0){let S=Array.isArray(c.variants)?c.variants:[];if(!Array.isArray(c.variants)||S.length<1||S.length>4)e.push({severity:"error",code:"invalid-seat-view-variants",message:`${s} view variants must contain between 1 and 4 tiers`,...d});else{let C=new Set;for(let k of S){if(!k||typeof k!="object"||!y(k.url)||!Number.isInteger(k.width)||k.width<1||k.width>12e3||!Number.isInteger(k.height)||k.height<1||k.height>12e3||k.width!==k.height*2||typeof k.sha256!="string"||!/^[a-f0-9]{64}$/.test(k.sha256)||C.has(k.width)){e.push({severity:"error",code:"invalid-seat-view-variant",message:`${s} view variant is not a unique immutable 2:1 equirectangular tier`,...d});break}C.add(k.width)}}}for(let[S,C]of[["width",c.sourceWidth],["height",c.sourceHeight],["preview width",c.previewWidth],["preview height",c.previewHeight]])C!==void 0&&(!Number.isInteger(C)||C<1||C>32768)&&e.push({severity:"error",code:"invalid-seat-view-dimensions",message:`${s} view source ${S} is invalid`,...d});c.captureEyeHeightM!==void 0&&!b(c.captureEyeHeightM,.5,3)&&e.push({severity:"error",code:"invalid-seat-view-eye-height",message:`${s} capture eye height must be between 0.5 m and 3 m`,...d}),c.eventConfigurationId!==void 0&&(typeof c.eventConfigurationId!="string"||!c.eventConfigurationId.trim()||c.eventConfigurationId.length>100)&&e.push({severity:"error",code:"invalid-seat-view-configuration",message:`${s} event configuration id is invalid`,...d}),c.eventConfigurationVersion!==void 0&&(!Number.isInteger(c.eventConfigurationVersion)||c.eventConfigurationVersion<1)&&e.push({severity:"error",code:"invalid-seat-view-configuration-version",message:`${s} event configuration version is invalid`,...d}),c.eventConfigurationVersion!==void 0&&!c.eventConfigurationId&&e.push({severity:"error",code:"invalid-seat-view-configuration-pin",message:`${s} event configuration version requires an id`,...d})},l=(o,I,s={})=>{if(o===void 0)return;let d=C=>{e.push({severity:"error",code:"invalid-seat-confidence-evidence",message:`${I} confidence evidence ${C}`,...s})};if(!o||typeof o!="object"||Array.isArray(o)){d("is invalid");return}let c=o;c.schema!=="seatlayer.seat-confidence/1"&&d("has an unsupported schema");let v=(C,k)=>typeof C=="string"&&C.normalize("NFKC").trim()===C&&C.length>0&&C.length<=k;v(c.evidenceId,120)||d("has an invalid evidence id"),v(c.modelVersion,120)||d("has an invalid model version"),new Set(["synthetic-model","organizer-approved","calibrated-provider"]).has(c.evidenceKind)||d("has an invalid evidence kind"),new Set(["generated","geometry-verified","configuration-verified"]).has(c.modelLevel)||d("has an invalid model level");let b=c.realityLevel??"none";new Set(["none","comparable-build-reference","actual-build-checked"]).has(b)||d("has an invalid reality level"),c.eventConfigurationId!==void 0&&!v(c.eventConfigurationId,100)&&d("has an invalid event configuration id"),c.eventConfigurationVersion!==void 0&&(!Number.isInteger(c.eventConfigurationVersion)||c.eventConfigurationVersion<1)&&d("has an invalid event configuration version"),c.status!==void 0&&!new Set(["draft","approved","retracted"]).has(c.status)&&d("has an invalid publication status"),c.basisSha256!==void 0&&!/^[a-f0-9]{64}$/.test(c.basisSha256)&&d("has an invalid venue basis SHA-256"),c.basisSha256!==void 0&&c.status!=="approved"&&d("can carry a venue basis SHA-256 only after approval");for(let[C,k]of[["assessment",c.assessedAt],["expiry",c.validUntil]])k!==void 0&&(!v(k,40)||!Number.isFinite(Date.parse(k)))&&d(`has an invalid ${C} date`);c.approvedByRole!==void 0&&!v(c.approvedByRole,100)&&d("has an invalid approving organization or role"),c.sourceLabel!==void 0&&!v(c.sourceLabel,120)&&d("has an invalid source label"),c.limitations!==void 0&&(!Array.isArray(c.limitations)||c.limitations.length>6||c.limitations.some(C=>!v(C,160)))&&d("has invalid limitations"),c.evidenceKind==="synthetic-model"&&(c.modelLevel!=="generated"||b!=="none")&&d("cannot describe synthetic data as verified or reality checked"),c.modelLevel!=="generated"&&(!c.assessedAt||!c.approvedByRole)&&d("requires an assessment date and approving organization or role for verified model levels"),c.modelLevel==="configuration-verified"&&!c.eventConfigurationId&&d("requires an event configuration id for configuration verification"),b!=="none"&&(!c.assessedAt||!c.sourceLabel)&&d("requires an assessment date and source for reality evidence"),b==="actual-build-checked"&&(c.modelLevel!=="configuration-verified"||!c.eventConfigurationId)&&d("requires a configuration-verified model and event configuration for an actual-build check");let S=c.modeledTarget;S!==void 0&&(!S||typeof S!="object"||Array.isArray(S)?d("has an invalid modeled target"):((!v(S.label,80)||!v(S.methodLabel,100))&&d("has invalid modeled-target labels"),(!Number.isInteger(S.totalRayCount)||S.totalRayCount<1||S.totalRayCount>1e3||!Number.isInteger(S.clearRayCount)||S.clearRayCount<0||S.clearRayCount>S.totalRayCount)&&d("has invalid modeled-target ray counts"),new Set(["clear","partial","obstructed"]).has(S.classification)||d("has an invalid modeled-target classification"),S.occluderLabels!==void 0&&(!Array.isArray(S.occluderLabels)||S.occluderLabels.length>10||S.occluderLabels.some(C=>!v(C,100)))&&d("has invalid modeled-target occluders")))};h(t.viewFromSeatUrl,t.viewFromSeatMeta,"Venue"),l(t.confidenceEvidence,"Venue"),t.viewFromSeatUrl!==void 0&&!y(t.viewFromSeatUrl)&&e.push({severity:"error",code:"invalid-venue-view-url",message:"The whole-venue view-from-seat image URL is invalid"});for(let o of t.floors??[])o.viewFromSeatUrl!==void 0&&!y(o.viewFromSeatUrl)&&e.push({severity:"error",code:"invalid-floor-view-url",message:`Floor "${o.name}" has an invalid view-from-seat image URL`}),h(o.viewFromSeatUrl,o.viewFromSeatMeta,`Floor "${o.name}"`,{floorId:o.id}),l(o.confidenceEvidence,`Floor "${o.name}"`,{floorId:o.id});let f=t.floors?.length?t.floors.flatMap(o=>o.objects):t.objects;for(let o of f)if((o.type==="row"||o.type==="section")&&(o.viewFromSeatUrl!==void 0&&!y(o.viewFromSeatUrl)&&e.push({severity:"error",code:o.type==="row"?"invalid-row-view-url":"invalid-section-view-url",message:`${o.type==="row"?"Row":"Section"} "${o.label}" has an invalid view-from-seat image URL`,objectId:o.id}),h(o.viewFromSeatUrl,o.viewFromSeatMeta,`${o.type==="row"?"Row":"Section"} "${o.label}"`,{objectId:o.id}),l(o.confidenceEvidence,`${o.type==="row"?"Row":"Section"} "${o.label}"`,{objectId:o.id})),o.type==="row"&&o.segmentedRow&&(o.segmentedRow.viewFromSeatUrl!==void 0&&!y(o.segmentedRow.viewFromSeatUrl)&&e.push({severity:"error",code:"invalid-segmented-row-view-url",message:`Segmented row "${o.segmentedRow.displayLabel}" has an invalid view-from-seat image URL`,objectId:o.id}),h(o.segmentedRow.viewFromSeatUrl,o.segmentedRow.viewFromSeatMeta,`Segmented row "${o.segmentedRow.displayLabel}"`,{objectId:o.id}),l(o.segmentedRow.confidenceEvidence,`Segmented row "${o.segmentedRow.displayLabel}"`,{objectId:o.id})),o.type==="row"||o.type==="table")for(let I of o.overrides??[])I.viewFromSeatUrl!==void 0&&!y(I.viewFromSeatUrl)&&e.push({severity:"error",code:"invalid-seat-view-url",message:`Seat ${I.index+1} has an invalid view-from-seat image URL`,objectId:o.id,seatIndices:[I.index]}),h(I.viewFromSeatUrl,I.viewFromSeatMeta,`Seat ${I.index+1}`,{objectId:o.id,seatIndices:[I.index]}),l(I.confidenceEvidence,`Seat ${I.index+1}`,{objectId:o.id,seatIndices:[I.index]});let g=new Set;for(let o of t.categories){g.has(o.key)&&e.push({severity:"error",code:"duplicate-category-key",message:`Category key "${o.key}" is used more than once`,categoryKey:o.key}),g.add(o.key);let I=new Set;for(let s of o.tiers??[]){if(I.has(s.id)&&e.push({severity:"error",code:"duplicate-category-tier-id",message:`Ticket tier id "${s.id}" is used more than once in category "${o.key}"`,categoryKey:o.key}),s.restriction!=null&&!["companion","child","senior","student","membership","custom"].includes(s.restriction)&&e.push({severity:"error",code:"invalid-category-tier-restriction",message:`Ticket tier "${s.name}" has an unknown restriction`,categoryKey:o.key}),s.buyerMessage!=null&&(!s.buyerMessage.trim()||s.buyerMessage.length>240)&&e.push({severity:"error",code:"invalid-category-tier-buyer-message",message:`Ticket tier "${s.name}" buyer guidance must contain 1 to 240 characters`,categoryKey:o.key}),s.currency!=null&&!/^[A-Z]{3}$/.test(s.currency)&&e.push({severity:"error",code:"invalid-category-tier-currency",message:`Ticket tier "${s.name}" must use a three-letter ISO currency`,categoryKey:o.key}),s.applicability!=null){let d=s.applicability.seatLabels,c=s.applicability.accessibility;(d!==void 0&&(!Array.isArray(d)||!d.length||d.length>1e4||d.some(v=>typeof v!="string"||!v.trim()||v.length>160)||new Set(d).size!==d.length)||c!==void 0&&(!Array.isArray(c)||!c.length||c.some(v=>!r.has(v))||new Set(c).size!==c.length))&&e.push({severity:"error",code:"invalid-category-tier-applicability",message:`Ticket tier "${s.name}" has invalid seat applicability`,categoryKey:o.key})}s.evidence!=null&&(!["public-host","public-event","user-confirmed"].includes(s.evidence.provenance)||!s.evidence.sourceDescription.trim()||s.evidence.sourceDescription.length>240||s.evidence.capturedAt!==void 0&&(s.evidence.capturedAt.length>40||!Number.isFinite(Date.parse(s.evidence.capturedAt))))&&e.push({severity:"error",code:"invalid-category-tier-evidence",message:`Ticket tier "${s.name}" has invalid evidence provenance`,categoryKey:o.key}),I.add(s.id)}ct(o)||e.push({severity:"error",code:"invalid-reference-category-source",message:`Category ${o.label||o.key} has incomplete or invalid reference evidence`,categoryKey:o.key})}let p=new Map,m=new Map,w=[],A=new Map,x=0,j=0,T=new Set;for(let o of t.floors??[])we(o,e,n,o.id),T.has(o.id)&&e.push({severity:"error",code:"duplicate-floor-id",message:`Floor id "${o.id}" is used more than once`,floorId:o.id}),T.add(o.id),o.baseHeightM!==void 0&&(!Number.isFinite(o.baseHeightM)||o.baseHeightM<X||o.baseHeightM>Y)&&e.push({severity:"error",code:"invalid-floor-base-height",message:`Floor "${o.name}" base height must be between ${X} and ${Y} metres`,floorId:o.id});let $=t.floors&&t.floors.length?t.floors.flatMap(o=>o.objects):t.objects;lt(t,e);let N=new Set;for(let o of $)N.has(o.id)&&e.push({severity:"error",code:"duplicate-object-id",message:`Object id "${o.id}" is used more than once`,objectId:o.id}),N.add(o.id);let P=new Set;for(let o of t.zones??[])P.has(o.id)&&e.push({severity:"error",code:"duplicate-zone-id",message:`Zone id "${o.id}" is used more than once`}),P.add(o.id),o.focalPoint!==void 0&&(!Number.isFinite(o.focalPoint.x)||!Number.isFinite(o.focalPoint.y))&&e.push({severity:"error",code:"invalid-zone-focal-point",message:`Zone "${o.label}" must use a finite focal point`});let L=new Map;for(let o of $)if(!(o.type!=="section"||!o.zone)){if(t.zones?.length&&!P.has(o.zone)){e.push({severity:"error",code:"unknown-section-zone",message:`Section "${o.displayLabel??o.label}" references unknown zone "${o.zone}"`,objectId:o.id});continue}L.has(o.zone)||L.set(o.zone,o)}for(let[o,I]of L){let s=t.zones?.find(d=>d.id===o);s&&(s?.focalPoint||n.push({severity:"warning",code:"missing-zone-focal-point",message:`Zone "${s?.label??o}" uses the legacy floor focal; set its own focal point before publishing`,objectId:I.id}))}for(let o of $)if((o.type==="row"||o.type==="table"||o.type==="booth"||o.type==="gaArea")&&at(o,e),Dt(o)){if(x++,j+=o.type==="booth"?1:o.type==="row"?Le(o):o.bookAsWhole||o.variableOccupancy?o.seatCount:dt(o).length,p.get(o.label)!==void 0?o.type!=="row"&&e.push({severity:"error",code:"duplicate-object-label",message:`Label "${o.label}" is used by more than one object`,objectId:o.id}):p.set(o.label,o.id),i.has(o.categoryKey)?u.add(o.categoryKey):e.push({severity:"error",code:"unknown-category",message:`"${o.label}" references unknown category "${o.categoryKey}"`,objectId:o.id,categoryKey:o.categoryKey}),o.type==="row"){ee(o.referenceInventorySource)||e.push({severity:"error",code:"invalid-reference-inventory-source",message:`Row "${o.label}" has invalid reference-inventory provenance`,objectId:o.id}),o.seatCount<1&&e.push({severity:"error",code:"empty-row",message:`Row "${o.label}" has no seats`,objectId:o.id});let s=new Set;for(let d of o.overrides??[]){(d.accessibility??[]).filter(S=>!r.has(S)).length&&e.push({severity:"error",code:"invalid-accessibility-type",message:`Row "${o.label}" seat ${d.index+1} uses an unknown accessibility type`,objectId:o.id,seatIndices:[d.index]}),(!Number.isInteger(d.index)||d.index<0||d.index>=o.seatCount||s.has(d.index))&&e.push({severity:"error",code:"invalid-seat-override",message:`Row "${o.label}" has a duplicated or out-of-range seat override`,objectId:o.id,...Number.isInteger(d.index)?{seatIndices:[d.index]}:{}}),s.add(d.index);let v=d.wheelchairSpaceType,b=d.accessible===!0||d.accessibility?.includes("wheelchair");v!==void 0&&v!=="seat-present"&&v!=="no-seat"?e.push({severity:"error",code:"invalid-wheelchair-space",message:`Row "${o.label}" seat ${d.index+1} has an invalid wheelchair-space type`,objectId:o.id,seatIndices:[d.index]}):v&&(!b||d.skip)&&e.push({severity:"error",code:"invalid-wheelchair-space",message:d.skip?`Row "${o.label}" seat ${d.index+1} cannot have a wheelchair-space physical type while skipped from inventory`:`Row "${o.label}" seat ${d.index+1} must include wheelchair accessibility for its physical-space type`,objectId:o.id,seatIndices:[d.index]})}for(let d of Kt(o))oe(d.label)&&e.push({severity:"error",code:"reserved-seat-label",message:`Seat label "${d.label}" uses SeatLayer's reserved GA namespace`,objectId:o.id,seatIndices:[d.index]}),m.get(d.label)!==void 0?w.push({severity:"error",code:"duplicate-seat-label",message:`Seat label "${d.label}" is used more than once`,objectId:o.id,seatIndices:[d.index]}):m.set(d.label,o.id)}else if(o.type==="table"){let s=o.bookAsWhole===!0||o.variableOccupancy===!0;if(o.seatCountsBySide){let b=["top","bottom","left","right"],S=Object.keys(o.seatCountsBySide),C=b.every(_=>Number.isInteger(o.seatCountsBySide[_])&&o.seatCountsBySide[_]>=0&&o.seatCountsBySide[_]<=40),k=C?b.reduce((_,vt)=>_+o.seatCountsBySide[vt],0):Number.NaN;(o.shape!=="rect"||S.length!==b.length||S.some(_=>!b.includes(_))||!C||k!==o.seatCount||k<1||k>40)&&e.push({severity:"error",code:"invalid-table-side-counts",message:`Table "${o.label}" needs top, bottom, left, and right whole-number chair counts totaling its ${o.seatCount}-chair capacity`,objectId:o.id})}s&&o.overrides?.length&&e.push({severity:"error",code:"grouped-table-chair-overrides",message:`Grouped table "${o.label}" cannot carry individual-chair overrides`,objectId:o.id,seatIndices:o.overrides.map(b=>b.index)});let d=new Set;for(let b of o.overrides??[]){(b.accessibility??[]).filter(_=>!r.has(_)).length&&e.push({severity:"error",code:"invalid-accessibility-type",message:`Table "${o.label}" chair ${b.index+1} uses an unknown accessibility type`,objectId:o.id,seatIndices:[b.index]}),(!Number.isInteger(b.index)||b.index<0||b.index>=o.seatCount||d.has(b.index))&&e.push({severity:"error",code:"invalid-seat-override",message:`Table "${o.label}" has a duplicated or out-of-range chair override`,objectId:o.id,...Number.isInteger(b.index)?{seatIndices:[b.index]}:{}}),d.add(b.index),b.categoryKey&&!i.has(b.categoryKey)?e.push({severity:"error",code:"unknown-category",message:`Table "${o.label}" chair ${b.index+1} references unknown category "${b.categoryKey}"`,objectId:o.id,seatIndices:[b.index],categoryKey:b.categoryKey}):b.categoryKey&&u.add(b.categoryKey);let C=b.wheelchairSpaceType,k=b.accessible===!0||b.accessibility?.includes("wheelchair");C!==void 0&&C!=="seat-present"&&C!=="no-seat"?e.push({severity:"error",code:"invalid-wheelchair-space",message:`Table "${o.label}" chair ${b.index+1} has an invalid wheelchair-space type`,objectId:o.id,seatIndices:[b.index]}):C&&(!k||b.skip)&&e.push({severity:"error",code:"invalid-wheelchair-space",message:b.skip?`Table "${o.label}" chair ${b.index+1} cannot have a wheelchair-space physical type while skipped from inventory`:`Table "${o.label}" chair ${b.index+1} must include wheelchair accessibility for its physical-space type`,objectId:o.id,seatIndices:[b.index]})}o.bookAsWhole&&o.variableOccupancy?e.push({severity:"error",code:"invalid-table-booking-mode",message:`Table "${o.label}" cannot be sold both as a whole table and with variable occupancy`,objectId:o.id}):o.variableOccupancy?(!Number.isInteger(o.minOccupancy)||!Number.isInteger(o.maxOccupancy)||o.minOccupancy<1||o.maxOccupancy<o.minOccupancy||o.maxOccupancy>o.seatCount)&&e.push({severity:"error",code:"invalid-table-occupancy",message:`Table "${o.label}" needs whole-number minimum and maximum guests from 1 to its ${o.seatCount}-chair capacity`,objectId:o.id}):(o.minOccupancy!=null||o.maxOccupancy!=null)&&e.push({severity:"error",code:"invalid-table-occupancy",message:`Table "${o.label}" has guest bounds without variable-occupancy selling`,objectId:o.id}),ee(o.referenceInventorySource)||e.push({severity:"error",code:"invalid-reference-inventory-source",message:`Table "${o.label}" has invalid reference-inventory provenance`,objectId:o.id}),(o.shape==="round"&&o.radius==null||o.shape==="rect"&&(o.width==null||o.height==null)||o.seatCount<1)&&e.push({severity:"error",code:"bad-table",message:`Table "${o.label}" is missing required dimensions or seats`,objectId:o.id});let v=s?[{label:o.label,index:void 0}]:dt(o);for(let b of v)oe(b.label)&&e.push({severity:"error",code:"reserved-seat-label",message:`Inventory label "${b.label}" uses SeatLayer's reserved GA namespace`,objectId:o.id}),m.get(b.label)!==void 0?w.push({severity:"error",code:"duplicate-seat-label",message:`Inventory label "${b.label}" is used more than once; grouped table labels must be unique`,objectId:o.id,...b.index===void 0?{}:{seatIndices:[b.index]}}):m.set(b.label,o.id)}else if(o.type==="booth"){ee(o.referenceInventorySource)||e.push({severity:"error",code:"invalid-reference-inventory-source",message:`Booth "${o.label}" has invalid reference-inventory provenance`,objectId:o.id});let s=o.label;oe(s)&&e.push({severity:"error",code:"reserved-seat-label",message:`Seat label "${s}" uses SeatLayer's reserved GA namespace`,objectId:o.id}),m.get(s)!==void 0?w.push({severity:"error",code:"duplicate-seat-label",message:`Seat label "${s}" is used more than once`,objectId:o.id}):m.set(s,o.id)}}else if(o.type==="gaArea"){if(!Pe(o))e.push({severity:"error",code:"invalid-ga-inventory-segments",message:`GA area "${o.label}" has invalid joined-area inventory provenance`,objectId:o.id});else for(let c of Fe(o))m.get(c)!==void 0?w.push({severity:"error",code:"duplicate-seat-label",message:`GA inventory label "${c}" is used more than once`,objectId:o.id}):m.set(c,o.id);ee(o.referenceInventorySource)||e.push({severity:"error",code:"invalid-reference-inventory-source",message:`GA area "${o.label}" has invalid reference-inventory provenance`,objectId:o.id}),(!B(o.points)||Math.abs(z(o.points))<=1e-7||V(o.points))&&e.push({severity:"error",code:"invalid-ga-outline",message:`GA area "${o.label}" must have a finite, non-self-intersecting polygon outline`,objectId:o.id});let s=o.holes??[],d=Array.isArray(s)&&s.length<=64?s.findIndex(c=>!Array.isArray(c)||c.length>512||!B(c)||Math.abs(z(c))<=1e-7||V(c)?!0:!c.flatMap((b,S)=>{let C=c[(S+1)%c.length];return[b,{x:(b.x+C.x)/2,y:(b.y+C.y)/2}]}).every(b=>G(b,o.points))):0;if(d>=0)e.push({severity:"error",code:"invalid-ga-hole",message:`GA area "${o.label}" has a cutout outside its outline or with invalid geometry`,objectId:o.id,holeIndex:d});else if(s.some((c,v)=>s.slice(v+1).some(b=>J(c,b)))){let c=s.findIndex((v,b)=>s.slice(b+1).some(S=>J(v,S)));e.push({severity:"error",code:"overlapping-ga-holes",message:`GA area "${o.label}" has overlapping cutout polygons`,objectId:o.id,holeIndex:c})}i.has(o.categoryKey)?u.add(o.categoryKey):e.push({severity:"error",code:"unknown-category",message:`"${o.label}" references unknown category "${o.categoryKey}"`,objectId:o.id,categoryKey:o.categoryKey}),o.capacity<1&&e.push({severity:"error",code:"empty-ga",message:`GA area "${o.label}" has zero capacity`,objectId:o.id}),(!Number.isInteger(o.capacity)||o.capacity>ge)&&e.push({severity:"error",code:"invalid-ga-capacity",message:`GA area "${o.label}" capacity must be a whole number from 1 to ${ge}`,objectId:o.id}),x++,j+=Math.max(0,Math.floor(o.capacity))}else if(o.type==="section"){if(o.elevation!==void 0&&(!Number.isInteger(o.elevation)||o.elevation<le||o.elevation>H)){let d=Number.isInteger(o.elevation)&&o.elevation>H&&o.elevation<=Ee;n.push({severity:"warning",code:d?"legacy-section-elevation":"invalid-section-elevation",message:d?`Section "${o.label}" uses legacy tier ${o.elevation}; set an exact height before normalizing it to tier ${H}`:`Section "${o.label}" elevation must be a whole-number tier from ${le} to ${H}`,objectId:o.id})}if(o.height!==void 0&&(!Number.isFinite(o.height)||o.height<X||o.height>Y)&&e.push({severity:"error",code:"invalid-section-height",message:`Section "${o.label}" exact height must be between ${X} and ${Y} metres`,objectId:o.id}),o.rake!==void 0&&(!Number.isFinite(o.rake)||o.rake<de||o.rake>ue)&&e.push({severity:"error",code:"invalid-section-rake",message:`Section "${o.label}" rake must be between ${de}\xB0 and ${ue}\xB0`,objectId:o.id}),o.surfaceKind!==void 0&&o.surfaceKind!=="flat"&&o.surfaceKind!=="rakedRows"&&e.push({severity:"error",code:"invalid-section-surface-kind",message:`Section "${o.label}" surfaceKind must be 'flat' or 'rakedRows'`,objectId:o.id}),!B(o.outline)||Math.abs(z(o.outline))<=1e-7||V(o.outline)){e.push({severity:"error",code:"invalid-section-outline",message:`Section "${o.label}" must have a finite, non-self-intersecting polygon outline`,objectId:o.id});continue}if(o.outlinePath){let d=[];try{d=Oe(o.outlinePath)}catch{}(!ke(o.outlinePath)||!d.length||Math.hypot(o.outlinePath.start.x-o.outline[0].x,o.outlinePath.start.y-o.outline[0].y)>1e-4||!B(d)||Math.abs(z(d))<=1e-7||V(d))&&e.push({severity:"error",code:"invalid-section-outline-path",message:`Section "${o.label}" has an invalid or inconsistent curved outline path`,objectId:o.id,edgeIndex:ot(o)})}if(o.referenceSource&&(!/^ref_[0-9a-f-]{36}$/.test(o.referenceSource.assetId)||!/^(?:reg|ai)_[0-9a-f]{16}$/.test(o.referenceSource.regionId))&&e.push({severity:"error",code:"invalid-section-reference-source",message:`Section "${o.label}" has invalid opaque reference provenance`,objectId:o.id}),st(o)||e.push({severity:"error",code:"invalid-section-inventory-exclusion",message:`Section "${o.label}" has incomplete or mismatched non-sellable evidence`,objectId:o.id}),o.logicalSectionId!==void 0&&!o.logicalSectionId.trim())e.push({severity:"error",code:"invalid-logical-section-id",message:`Section "${o.label}" has an empty logical section id`,objectId:o.id});else if(o.logicalSectionId){let d=JSON.stringify({displayLabel:o.displayLabel??null,entrance:o.entrance??null,viewFromSeatUrl:o.viewFromSeatUrl??null,viewFromSeatMeta:o.viewFromSeatMeta??null,confidenceEvidence:o.confidenceEvidence??null,zone:o.zone??null,labelStyle:o.labelPresentation?.labelStyle??null,labelVisible:o.labelPresentation?.visible!==!1}),c=A.get(o.logicalSectionId);c&&(c.label!==o.label||c.semanticSignature!==d)?e.push({severity:"error",code:"inconsistent-logical-section",message:`Logical section "${o.logicalSectionId}" must use one technical label and buyer-facing presentation across every component`,objectId:o.id}):c||A.set(o.logicalSectionId,{label:o.label,semanticSignature:d})}let I=o.holes??[];if(!Array.isArray(I)||I.length>64){e.push({severity:"error",code:"invalid-section-hole",message:`Section "${o.label}" has an invalid opening collection`,objectId:o.id});continue}let s=-1;for(let d=0;d<I.length;d++){let c=I[d];if(!Array.isArray(c)||c.length>512||!B(c)||Math.abs(z(c))<=1e-7||V(c)){s=d;break}if(!c.flatMap((b,S)=>{let C=c[(S+1)%c.length];return[b,{x:(b.x+C.x)/2,y:(b.y+C.y)/2}]}).every(b=>G(b,o.outline))){s=d;break}}if(s>=0)e.push({severity:"error",code:"invalid-section-hole",message:`Section "${o.label}" has an opening outside its outline or with an invalid shape`,objectId:o.id,holeIndex:s});else if(I.some((d,c)=>I.slice(c+1).some(v=>J(d,v)))){let d=I.findIndex((c,v)=>I.slice(v+1).some(b=>J(c,b)));e.push({severity:"error",code:"overlapping-section-holes",message:`Section "${o.label}" has overlapping openings`,objectId:o.id,holeIndex:d})}}let F=t.floors?.length?t.floors.map(o=>o.objects):[t.objects];for(let o of F){let I=o.filter(s=>s.type==="section");for(let s of o.filter(d=>d.type==="text")){let d=s.iconKey;d!==void 0&&!Ge(d)&&e.push({severity:"error",code:"invalid-icon-key",message:`Venue icon "${s.text||s.id}" references an unknown symbol`,objectId:s.id});let c=s.fontFamily;c!==void 0&&(typeof c!="string"||c.normalize("NFKC").trim()!==c||c.length<1||c.length>120)&&e.push({severity:"error",code:"invalid-text-font-family",message:`Text "${s.text||s.id}" font family must contain 1 to 120 normalized characters`,objectId:s.id});let v=s.background;(s.width!==void 0&&(!Number.isFinite(s.width)||s.width<40||s.width>1200)||s.align!==void 0&&!["left","center","right"].includes(s.align)||s.lineHeight!==void 0&&(!Number.isFinite(s.lineHeight)||s.lineHeight<.8||s.lineHeight>3)||s.letterSpacing!==void 0&&(!Number.isFinite(s.letterSpacing)||s.letterSpacing<-2||s.letterSpacing>20)||s.opacity!==void 0&&(!Number.isFinite(s.opacity)||s.opacity<.1||s.opacity>1)||v!==void 0&&(!/^#[0-9a-f]{6}$/i.test(v.color)||v.padding!==void 0&&(!Number.isFinite(v.padding)||v.padding<0||v.padding>40)||v.cornerRadius!==void 0&&(!Number.isFinite(v.cornerRadius)||v.cornerRadius<0||v.cornerRadius>40)||v.opacity!==void 0&&(!Number.isFinite(v.opacity)||v.opacity<.1||v.opacity>1)))&&e.push({severity:"error",code:"invalid-text-layout",message:`Text "${s.text||s.id}" has invalid width, spacing, opacity, alignment, or background layout`,objectId:s.id})}for(let s of o.filter(d=>d.type==="shape")){if(s.eventConfigurationIds!==void 0){let v=s.eventConfigurationIds;Array.isArray(v)&&v.length>0&&v.length<=20&&v.every(S=>typeof S=="string"&&S.normalize("NFKC").trim()===S&&S.length>=1&&S.length<=100)&&new Set(v).size===v.length||e.push({severity:"error",code:"invalid-shape-configurations",message:`Shape "${s.label||s.id}" must reference 1 to 20 unique event configuration ids`,objectId:s.id})}if(s.heightM!==void 0&&(!Number.isFinite(s.heightM)||s.heightM<.05||s.heightM>50)&&e.push({severity:"error",code:"invalid-shape-height",message:`Shape "${s.label||s.id}" height must be between 0.05 m and 50 m`,objectId:s.id}),s.stroke!==void 0&&(!s.stroke||typeof s.stroke.color!="string"||!/^#[0-9a-f]{6}$/i.test(s.stroke.color)||!Number.isFinite(s.stroke.width)||s.stroke.width<.5||s.stroke.width>40)&&e.push({severity:"error",code:"invalid-shape-stroke",message:`Shape "${s.label||s.id}" stroke must use a six-digit color and width from 0.5 to 40 chart units`,objectId:s.id}),(s.lineCap!==void 0||s.lineJoin!==void 0||s.startEnding!==void 0||s.endEnding!==void 0)&&!ve(s.kind)?e.push({severity:"error",code:"invalid-shape-line-style-applicability",message:`Shape "${s.label||s.id}" may use line caps, joins, and end decorations only when it is an open line or polyline`,objectId:s.id}):ve(s.kind)&&(s.lineCap!==void 0&&!Ve.includes(s.lineCap)||s.lineJoin!==void 0&&!Qe.includes(s.lineJoin)||s.startEnding!==void 0&&!he.includes(s.startEnding)||s.endEnding!==void 0&&!he.includes(s.endEnding))&&e.push({severity:"error",code:"invalid-shape-line-style",message:`Shape "${s.label||s.id}" has an unsupported line cap, join, or ending`,objectId:s.id}),s.kind==="polygon"){let v=Je(s.points??[]);v.ok||e.push({severity:"error",code:"invalid-shape-polygon",message:`Shape "${s.label||s.id}" has invalid polygon geometry: ${v.message}`,objectId:s.id})}let c=it(s);if(c){for(let v of I)if(nt(c,v.outline)){e.push({severity:"error",code:"reference-focal-overlaps-section",message:`Reference focal area "${s.label??s.id}" overlaps section "${v.label}"`,objectId:s.id});break}}}}j>me&&e.push({severity:"error",code:"inventory-capacity-exceeded",message:`Chart has ${j} bookable units; the maximum is ${me}`}),e.push(...w.slice(0,5)),w.length>5&&e.push({severity:"error",code:"duplicate-seat-label",message:`${w.length} seats share a label with another seat; the first 5 are listed above. Seat labels must be unique across the whole chart.`});for(let o of ne(t)){let I=o.families[0]?.targets[0];n.push({severity:"warning",code:"category-inventory-family-conflict",message:Ye(o),categoryKey:o.categoryKey,...I?{objectId:I.id,floorId:I.floorId}:{},relatedObjectIds:o.objectIds,categoryInventoryFamilies:o.families})}t.focalPoint||n.push({severity:"warning",code:"missing-focal-point",message:"Chart has no focal point set"}),x===0&&n.push({severity:"warning",code:"no-bookables",message:"Chart has no rows, tables, booths, or GA areas"});for(let o of u)if(a.get(o)===!1){let I=t.categories.find(s=>s.key===o);n.push({severity:"warning",code:"unpriced-category",message:`Category "${I?.label??o}" is used but has no price`,categoryKey:o})}return[...e,...n]}var Bt=9,mt="#0e1117",zt="#f5f6f8",bt="#8b93a7",Ut="#0b1220",Gt="#0b1220",Vt="#ffffff",Qt=100;function O(t,e=2){let n=10**e;return Math.round(t*n)/n}function ft(t){let e=Re(t);if(!e)return null;let n=m=>{let w=m/255;return w<=.04045?w/12.92:((w+.055)/1.055)**2.4},i=n(e[0]),r=n(e[1]),a=n(e[2]),u=(.4124*i+.3576*r+.1805*a)/.95047,y=(.2126*i+.7152*r+.0722*a)/1,h=(.0193*i+.1192*r+.9505*a)/1.08883,l=m=>m>.008856?Math.cbrt(m):7.787*m+16/116,f=l(u),g=l(y),p=l(h);return[116*g-16,500*(f-g),200*(g-p)]}function qt(t,e){let n=ft(t),i=ft(e);return!n||!i?null:Math.hypot(n[0]-i[0],n[1]-i[1],n[2]-i[2])}function E(t){return{source:"quality",...t}}function Ht(t){return t.code==="missing-focal-point"||t.code==="missing-zone-focal-point"?"navigation":"structure"}function xe(t){return Bt*q(t.theme?.seatScale??1,.7,1.6)}function pt(t){let e=[];for(let n of t.objects)n.type==="row"?e.push(...K(n)):n.type==="table"&&e.push(...W(n));return e}function Xt(t){let e={rowSeats:0,tableSeats:0,booths:0,gaCapacity:0};for(let n of t)for(let i of n.objects)i.type==="row"?e.rowSeats+=K(i).length:i.type==="table"?e.tableSeats+=W(i).length:i.type==="booth"?e.booths+=1:i.type==="gaArea"&&(e.gaCapacity+=Math.max(0,Math.floor(i.capacity)));return{inventoryByKind:e,bookableUnits:e.rowSeats+e.tableSeats+e.booths+e.gaCapacity}}function M(t,e){t.filter(n=>n.code===e.code).length<Qt&&t.push(e)}function Yt(t,e,n){let i=xe(t),r=2*i,a=2.3*i,u=0,y=0,h=1/0;for(let l of e){let f=new Map(l.objects.filter(x=>x.type==="row").map(x=>[x.id,x])),g=x=>{let j=l.objects.find(L=>L.id===x);if(!j||j.type!=="row"&&j.type!=="table")return"another seating object";let T=j.type==="row"?K(j):W(j),$=T.length?{x:T.reduce((L,F)=>L+F.x,0)/T.length,y:T.reduce((L,F)=>L+F.y,0)/T.length}:j.type==="row"?j.origin:j.center,N=l.objects.find(L=>L.type==="section"&&te($,L.outline,L.holes)),P=j.type==="row"?`Row \u201C${j.label}\u201D`:`Table \u201C${j.label}\u201D`;return N?.type==="section"?`${P} in \u201C${N.label}\u201D`:P},p=pt(l);u+=p.length;let m=a,w=new Map,A=new Map;for(let x of p){let j=Math.floor(x.x/m),T=Math.floor(x.y/m);for(let P=-1;P<=1;P++)for(let L=-1;L<=1;L++){let F=w.get(`${j+P}:${T+L}`)??[];for(let o of F){y++;let I=Math.hypot(x.x-o.x,x.y-o.y);if(h=Math.min(h,I),I>=a)continue;let d=(x.rowId<o.rowId?[x.rowId,o.rowId]:[o.rowId,x.rowId]).join("|"),c=A.get(d);(!c||I<c.distance)&&A.set(d,{a:x,b:o,distance:I})}}let $=`${j}:${T}`,N=w.get($)??[];N.push(x),w.set($,N)}for(let x of A.values()){let j=x.a.rowId===x.b.rowId,T=f.get(x.a.rowId),$=f.get(x.b.rowId),N=!j&&T?.segmentedRow?.repeatLabelOnComponents===!0&&$?.segmentedRow?.repeatLabelOnComponents===!0&&T.segmentedRow.groupId===$.segmentedRow.groupId,P=x.distance<r?"error":"warning";if(N&&P==="warning")continue;let L=P==="error"?"seat-overlap":"seat-cramped",F=g(x.a.rowId),o=g(x.b.rowId),I=O(P==="error"?r:a);M(n,E({severity:P,code:L,dimension:"geometry",title:j?`${F} has seats too close together`:`${F} and ${o} are too close together`,message:`The closest seats are ${O(x.distance)} chart units apart; at least ${I} are required.`,action:j?`Increase the seat spacing for ${F}, or use Review safe fixes.`:`Move ${F} or ${o} until they no longer overlap.`,objectId:x.a.rowId,relatedObjectIds:j?[x.a.rowId]:[x.a.rowId,x.b.rowId],floorId:l.id,measured:O(x.distance),minimum:O(P==="error"?r:a),autoFixable:j}))}}return{seats:u,checkedSeatPairs:y,minimumSeatDistance:Number.isFinite(h)?O(h):null}}function ae(t){let{width:e,height:n}=je(t);if(!t.rotation)return{x:t.position.x,y:t.position.y,width:e,height:n};let i=[{x:0,y:0},{x:e,y:0},{x:e,y:n},{x:0,y:n}].map(r=>{let a=$e(r,t.rotation);return{x:t.position.x+a.x,y:t.position.y+a.y}});return Ue(i)}function ht(t,e,n=0){return t.x<e.x+e.width+n&&t.x+t.width+n>e.x&&t.y<e.y+e.height+n&&t.y+t.height+n>e.y}function Se(t,e,n){let i=q(e.x,t.x,t.x+t.width),r=q(e.y,t.y,t.y+t.height);return(e.x-i)**2+(e.y-r)**2<n**2}function Wt(t,e,n){let i=xe(t),r=0;for(let a of e){let u=a.objects.filter(h=>h.type==="text"),y=pt(a);r+=u.length;for(let h=0;h<u.length;h++){let l=u[h],f=ae(l),g=y.find(p=>Se(f,p,i));g&&M(n,E({severity:"warning",code:"label-collision",dimension:"labels",message:`Text \u201C${l.text}\u201D overlaps seat ${g.label}`,objectId:l.id,relatedObjectIds:[l.id,g.rowId],floorId:a.id,autoFixable:!0}));for(let p=0;p<h;p++){let m=u[p];ht(f,ae(m),2)&&M(n,E({severity:"warning",code:"label-collision",dimension:"labels",message:`Text \u201C${l.text}\u201D overlaps text \u201C${m.text}\u201D`,objectId:l.id,relatedObjectIds:[l.id,m.id],floorId:a.id,autoFixable:!0}))}}}return r}function Zt(t){return t.normalize("NFKC").trim().toLowerCase().replace(/\s+/g," ")}function Jt(t,e,n){let i=new Map;for(let a of e)for(let u of a.objects){let y=u.type,h=y==="row"||y==="table"||y==="booth"||y==="gaArea",l=h||y==="section";if(h&&!u.categoryKey.trim()){let f=y==="gaArea"?"GA area":y==="row"?"Row":y==="table"?"Table":"Booth";M(n,E({severity:"warning",code:"object-uncategorized",dimension:"structure",title:`${f} \u201C${u.label||u.id}\u201D has no category`,message:`${f} \u201C${u.label||u.id}\u201D is not assigned to any category, so buyers see no price or colour for it.`,action:"Assign a category to this object in the inspector, or create one in the Categories tab first.",objectId:u.id,floorId:a.id,autoFixable:!1}))}if(l){let f=(u.type==="section"?u.displayLabel??u.label:u.label)??"";if(f.trim()){if(y==="table"||y==="booth"||y==="gaArea"){let g=Zt(f),p=i.get(g);p&&p.raw!==f?M(n,E({severity:"warning",code:"duplicate-object-label-normalized",dimension:"labels",title:`\u201C${f}\u201D and \u201C${p.raw}\u201D read as the same label`,message:`Labels \u201C${f}\u201D and \u201C${p.raw}\u201D differ only by case, spacing, or accents, so buyers cannot tell them apart.`,action:"Make the two labels visibly distinct.",objectId:u.id,relatedObjectIds:[u.id,p.id],floorId:a.id,autoFixable:!1})):p||i.set(g,{id:u.id,raw:f})}}else{let g=y==="gaArea"?"A GA area":y==="section"?"A section":y==="row"?"A row":y==="table"?"A table":"A booth";M(n,E({severity:"warning",code:"object-unlabeled",dimension:"labels",title:`${g} has no label`,message:`${g} has an empty label; buyers rely on labels to identify what they are booking.`,action:"Give this object a short, unique label in the inspector.",objectId:u.id,floorId:a.id,autoFixable:!1}))}}}let r=[];for(let a of e){let u=a.objects.filter(y=>y.type==="row"||y.type==="table"||y.type==="booth"||y.type==="gaArea");for(let y of a.objects)if(!(y.type!=="section"||y.referenceInventoryExclusion||u.some(l=>te(fe(l),y.outline,y.holes)))){if(y.referenceSource){r.push({id:y.id,floorId:a.id});continue}M(n,E({severity:"warning",code:"empty-section",dimension:"structure",title:`Section \u201C${y.displayLabel??y.label}\u201D is empty`,message:`Section \u201C${y.displayLabel??y.label}\u201D contains no rows, tables, booths, or GA areas.`,action:"Add seating inside this section (Fill with rows), or remove the empty section.",objectId:y.id,floorId:a.id,autoFixable:!1}))}}if(r.length&&M(n,E({severity:"warning",code:"empty-section",dimension:"structure",title:r.length===1?"1 traced section has no seating yet":`${r.length} traced sections have no seating yet`,message:`${r.length} section${r.length===1?"":"s"} traced from the reference image contain${r.length===1?"s":""} no rows, tables, booths, or GA areas.`,action:"Fill them with rows, or remove the ones the venue does not sell.",objectId:r[0].id,relatedObjectIds:r.map(a=>a.id),floorId:r[0].floorId,autoFixable:!1})),t.floors&&t.floors.length>1)for(let a of t.floors)a.objects.length===0&&M(n,E({severity:"warning",code:"unused-floor",dimension:"structure",title:`Floor \u201C${a.name}\u201D is empty`,message:`Floor \u201C${a.name}\u201D has no objects on it.`,action:"Add seating to this floor, or delete it from the floor list below the canvas.",floorId:a.id,autoFixable:!1}))}var eo=5,to=16;function oo(t,e,n){for(let i of e){let r=i.focalPoint??t.focalPoint;if(r)for(let a of i.objects){if(a.type!=="section"||a.outline.length<3)continue;let{rake:u}=Te(a);if(u<eo)continue;let y=a.outline.map(p=>Math.hypot(p.x-r.x,p.y-r.y)),h=Math.max(...y);if(h<=0)continue;let l=(h-Math.min(...y))/h;if(u*l<=to)continue;let g=a.displayLabel??a.label;M(n,E({severity:"warning",code:"section-rake-inconsistent",dimension:"geometry",title:`Section \u201C${g}\u201D is too deep for a single rake`,message:`Section \u201C${g}\u201D spans ${Math.round(l*100)}% of its distance to the stage at a ${Math.round(u)}\xB0 rake, so one rake can't represent its sightlines faithfully \u2014 a real tier this deep changes slope at a cross-aisle.`,action:"Split this section at the cross-aisle into two sections, each with its own rake.",objectId:a.id,floorId:i.id,autoFixable:!1}))}}}function no(t,e,n){let i=t.theme?.background??mt,r=zt,a=new Map;for(let l of e)for(let f of l.objects){if(f.type!=="gaArea")continue;let g=a.get(f.categoryKey)??[];g.push({id:f.id,floorId:l.id}),a.set(f.categoryKey,g)}for(let l of t.categories){let f=R(l.color,i),g=R(l.color,r);if(f==null||g==null){M(n,E({severity:"error",code:"invalid-category-color",dimension:"contrast",message:`Category \u201C${l.label}\u201D does not use a supported hex color`,categoryKey:l.key}));continue}let p=Math.min(f,g);p<3&&M(n,E({severity:"warning",code:"category-contrast-low",dimension:"contrast",title:`Category \u201C${l.label}\u201D is hard to see`,message:`Category \u201C${l.label}\u201D reaches only ${O(p)}:1 across dark and light chart backgrounds; 3:1 is required`,action:`Choose a lighter or darker color for \u201C${l.label}\u201D until this warning clears.`,categoryKey:l.key,measured:O(p),minimum:3,autoFixable:!1}));let m=a.get(l.key)??[];if(m.length){let w=pe(l.color,i,be),A=pe(l.color,r,be),x=Math.min(R(w,i)??0,R(A,r)??0);x<3&&M(n,E({severity:"warning",code:"ga-contrast-low",dimension:"contrast",message:`GA category \u201C${l.label}\u201D reaches only ${O(x)}:1 after its rendered opacity is composited; 3:1 is required`,objectId:m[0].id,categoryKey:l.key,floorId:m[0].floorId,relatedObjectIds:m.map(j=>j.id),measured:O(x),minimum:3,autoFixable:!1}))}}for(let l=0;l<t.categories.length;l++)for(let f=0;f<l;f++){let g=t.categories[l],p=t.categories[f],m=qt(g.color,p.color);m!=null&&m<25&&M(n,E({severity:"warning",code:"category-colors-too-similar",dimension:"contrast",title:`\u201C${g.label}\u201D and \u201C${p.label}\u201D look too similar`,message:`Categories \u201C${g.label}\u201D and \u201C${p.label}\u201D are only \u0394E ${O(m)} apart; 25 is required`,action:"Pick a visibly different color for either category so buyers can tell them apart.",categoryKey:g.key,measured:O(m),minimum:25,autoFixable:!1}))}for(let l of e){let f=l.objects.filter(g=>g.type==="text");for(let g of f){let p=g.color??t.theme?.textColor??bt,m=R(p,i),w=g.fontSize>=18?3:4.5;(m==null||m<w)&&M(n,E({severity:"warning",code:"text-contrast-low",dimension:"contrast",message:`Text \u201C${g.text}\u201D has ${O(m??0)}:1 contrast against the chart background; ${w}:1 is required`,objectId:g.id,floorId:l.id,measured:O(m??0),minimum:w,autoFixable:!0}))}}if(t.theme?.selectionColor){let l=R(t.theme.selectionColor,i);(l==null||l<3)&&M(n,E({severity:"warning",code:"selection-contrast-low",dimension:"contrast",title:"The selection color is hard to see",message:`Selection rings have ${O(l??0)}:1 contrast against the chart background; 3:1 is required.`,action:"In Theme, choose a Selection color that stands out clearly from the Background color.",measured:O(l??0),minimum:3,autoFixable:!1}))}if(t.theme?.textColor){let l=R(t.theme.textColor,i);(l==null||l<3)&&M(n,E({severity:"warning",code:"theme-text-contrast-low",dimension:"contrast",title:"The theme text color is hard to read",message:`Theme text has ${O(l??0)}:1 contrast against the chart background; 3:1 is required.`,action:"In Theme, choose a Text color with stronger contrast against the Background color.",measured:O(l??0),minimum:3,autoFixable:!1}))}let u=t.theme?.seatLabelColor??Ut,y=new Map,h=(l,f,g)=>{let p=y.get(l)??new Map,m=p.get(f)??[];m.push(g),p.set(f,m),y.set(l,p)};for(let l of e)for(let f of l.objects)if(f.type==="row")for(let g of ie(f).keys())h(g,"seat",f.id);else if(f.type==="table")for(let g of ie(f).keys())h(g,"table seat",f.id);else f.type==="booth"&&h(f.categoryKey,"booth",f.id);for(let l of t.categories){let f=y.get(l.key);if(f)for(let[g,p]of f){let m=g==="booth"?_e:Ne,w=Ke(De,600),A=Be(l.color,u),x=R(A,l.color);(x==null||x<w)&&M(n,E({severity:"warning",code:"bookable-label-contrast-low",dimension:"contrast",message:`${g==="booth"?"Booth":g==="seat"?"Seat":"Table-seat"} labels use ${m}u type and have ${O(x??0)}:1 contrast on category \u201C${l.label}\u201D; ${w}:1 is required for small text`,objectId:p[0],relatedObjectIds:p,measured:O(x??0),minimum:w,autoFixable:!0}))}}}function io(t,e){for(let n of t){let i=n.objects.filter(r=>r.type==="section");if(!(i.length<2))for(let r of n.objects){if(!(r.type==="row"||r.type==="table"||r.type==="booth"||r.type==="gaArea"))continue;let u=fe(r),y=i.filter(m=>te(u,m.outline,m.holes)),h=new Map;for(let m of y){let w=m.logicalSectionId??m.id,A=h.get(w)??[];A.push(m),h.set(w,A)}if(h.size<2)continue;let l=[...h.values()],f=l.map(m=>`Section \u201C${m[0].displayLabel??m[0].label}\u201D`),g=f.length===2?f.join(" and "):`${f.slice(0,-1).join(", ")}, and ${f[f.length-1]}`,p=r.type==="gaArea"?"GA area":r.type==="row"?"Row":r.type==="table"?"Table":"Booth";M(e,E({severity:"warning",code:"ambiguous-section-ownership",dimension:"structure",title:`${p} \u201C${r.label}\u201D belongs to more than one section`,message:`${p} \u201C${r.label}\u201D has its center inside ${g}, so its buyer section is unclear.`,action:"Adjust the boundaries until this object sits in one Section. If the overlapping shapes are meant to form one Section, combine them first.",objectId:r.id,relatedObjectIds:[r.id,...l.flatMap(m=>m.map(w=>w.id))],floorId:n.id,autoFixable:!1}))}}}var ro={structure:20,geometry:30,contrast:25,labels:15,navigation:10},ao={"seat-overlap":15,"seat-cramped":4,"label-collision":4,"category-contrast-low":3,"ga-contrast-low":3,"category-colors-too-similar":3,"invalid-category-color":10,"text-contrast-low":4,"bookable-label-contrast-low":3,"selection-contrast-low":3,"theme-text-contrast-low":3,"missing-focal-point":10,"object-uncategorized":3,"object-unlabeled":3,"duplicate-object-label-normalized":2,"empty-section":2,"unused-floor":2,"ambiguous-section-ownership":4,"category-inventory-family-conflict":10};function so(t){let e={...ro};for(let r of t){let a=r.severity==="error"?10:2;e[r.dimension]=Math.max(0,e[r.dimension]-(ao[r.code]??a))}let n=Object.values(e).reduce((r,a)=>r+a,0),i=n>=95?"A":n>=85?"B":n>=70?"C":n>=55?"D":"F";return{overall:n,dimensions:e,errorFree:t.every(r=>r.severity!=="error"),grade:i}}var co=new Set(["unpriced-category","object-uncategorized"]);function yt(t,e={}){let n=ye(t),i=ut(t).filter(f=>f.code!=="missing-zone-focal-point"||e.requireExplicitZoneFocals).map(f=>{let g=f.objectId?n.find(w=>w.objects.some(A=>A.id===f.objectId))?.id:void 0,p=f.code==="category-inventory-family-conflict",m=p?t.categories.find(w=>w.key===f.categoryKey):void 0;return E({...f,...p?{severity:"error",title:`Category \u201C${m?.label??f.categoryKey??"Unknown"}\u201D spans incompatible inventory types`,action:"Show the affected objects, then review the safe category split. The repair preserves price, ticket tiers, accessibility assignments, and source provenance."}:{},...e.requireExplicitZoneFocals&&f.code==="missing-zone-focal-point"?{severity:"error"}:{},...g?{floorId:g}:{},source:"structural",dimension:Ht(f),autoFixable:p})}),r=Yt(t,n,i),a=Xt(n),u=Wt(t,n,i);if(Jt(t,n,i),io(n,i),oo(t,n,i),no(t,n,i),n.reduce((f,g)=>f+g.objects.filter(p=>p.type==="row"||p.type==="table"||p.type==="booth"||p.type==="gaArea").length,0)===0){let f=new Set(["missing-focal-point","no-bookables"]);for(let g=i.length-1;g>=0;g--)f.has(i[g].code)&&i.splice(g,1)}if(e.requirePricedInventory)for(let f=0;f<i.length;f++)co.has(i[f].code)&&(i[f]={...i[f],severity:"error"});let h=i.filter(f=>f.severity==="error"),l=i.filter(f=>f.severity==="warning");return{issues:i,errors:h,warnings:l,metrics:{floors:n.length,objects:n.reduce((f,g)=>f+g.objects.length,0),seats:r.seats,bookableUnits:a.bookableUnits,inventoryByKind:a.inventoryByKind,categories:t.categories.length,freeTextLabels:u,checkedSeatPairs:r.checkedSeatPairs,minimumSeatDistance:r.minimumSeatDistance},score:so(i),deferredRules:["rendered-row-label-decollision","rendered-bookable-state-contrast","section-focus-opacity-and-backdrop","24px-pointer-hit-target","reference-image-diff","sightline-blocked","ga-density-high"]}}function lo(t,e){if(t.seatCount<2||t.seatSpacing>=e)return!1;let n=ce(K(t));t.seatSpacing=O(e,3);let i=ce(K(t));return t.origin.x=O(t.origin.x+n.x-i.x,3),t.origin.y=O(t.origin.y+n.y-i.y,3),!0}function uo(t,e){if(t.seatCount<2)return!1;let n=!1;if(t.shape==="round"){let i=q(t.seatArc??360,0,360),r=(i>=360?360/t.seatCount:i/(t.seatCount-1))*Math.PI/180;if(r>0){let a=e/(2*Math.sin(r/2)),u=Math.max(1,a-16);(t.radius??40)<u&&(t.radius=O(u,3),n=!0)}}else{let i=Me(t),r=Math.max(i.top,i.bottom),a=Math.max(i.left,i.right);r>1&&(t.width??80)/r<e&&(t.width=O(r*e,3),n=!0),a>1&&(t.height??50)/a<e&&(t.height=O(a*e,3),n=!0)}return n}function fo(t){return[Gt,Vt].map(n=>({color:n,minimum:Math.min(...t.map(i=>R(n,i)??0))})).sort((n,i)=>i.minimum-n.minimum)[0].color}function gt(t,e,n){let i=ae(t),r=0;for(let a of e)a.type==="row"?r+=K(a).filter(u=>Se(i,u,n)).length:a.type==="table"?r+=W(a).filter(u=>Se(i,u,n)).length:a.type==="text"&&a.id!==t.id&&ht(i,ae(a),2)&&r++;return r}function yo(t,e,n){if(gt(t,e,n)===0)return!1;let r={...t.position},a=Math.max(12,t.fontSize*1.25),u=[[0,-1],[1,0],[0,1],[-1,0],[1,-1],[1,1],[-1,1],[-1,-1]];for(let y=1;y<=12;y++)for(let[h,l]of u)if(t.position={x:O(r.x+h*a*y,3),y:O(r.y+l*a*y,3)},gt(t,e,n)===0)return!0;return t.position=r,!1}function qo(t){let e=JSON.parse(JSON.stringify(t)),n=yt(e),i=[],r=Ze(e);if(r.changed){e=r.doc;for(let f of r.changes){let g=r.before.find(m=>m.categoryKey===f.categoryKey),p=g?.families.map(m=>m.label).join(", ")??"inventory families";i.push({code:"category-inventory-family-conflict",objectId:g?.objectIds[0],message:`Split category \u201C${f.categoryLabel}\u201D across ${p}; preserved its commercial metadata and reassigned ${f.reassignments.length} affected object${f.reassignments.length===1?"":"s"}`})}}let a=xe(e),u=2.5*a,y=ye(e);for(let f of y)for(let g of f.objects)if(g.type==="row"){let p=g.seatSpacing;lo(g,u)&&i.push({code:p<2*a?"seat-overlap":"seat-cramped",objectId:g.id,message:`Expanded ${g.id} to the ${O(u)}u target pitch while preserving its centre`})}else g.type==="table"&&uo(g,u)&&i.push({code:"seat-cramped",objectId:g.id,message:`Expanded ${g.id} so its perimeter seats meet the ${O(u)}u target pitch`});let h=e.theme?.background??mt;for(let f of y)for(let g of f.objects){if(g.type!=="text")continue;let p=g.color??e.theme?.textColor??bt,m=g.fontSize>=18?3:4.5;(R(p,h)??0)<m&&(g.color=fo([h]),i.push({code:"text-contrast-low",objectId:g.id,message:`Changed ${g.id} to the highest-contrast black/white ink`}))}for(let f of y){let g=f.objects.filter(p=>p.type==="text");for(let p of g)yo(p,f.objects,a)&&i.push({code:"label-collision",objectId:p.id,message:`Moved ${p.id} to the nearest collision-free deterministic label position`})}e.floors?.length&&(e.objects=e.floors[0].objects);let l=yt(e);return{doc:e,changed:i.length>0,fixes:i,before:n,after:l}}export{Ie as a,ie as b,ne as c,Ye as d,Ze as e,Je as f,qt as g,qo as h};
@@ -0,0 +1 @@
1
+ import{n as b}from"./chunk-OBBSZUYF.js";var l="seatlayer.event-configuration/1",p="seatlayer.event-configuration-export/1",c=100,_=120,S=1e5,k=1e4,y=/^[a-f0-9]{64}$/,x=new Set(["stage","screen","barrier","camera_platform","sound_desk","rigging_truss"]);function d(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function u(e,n){return typeof e=="string"&&e.length>=1&&e.length<=n&&e.normalize("NFKC").trim()===e}function E(e){return typeof e=="number"&&Number.isInteger(e)&&e>0}function v(e){return!Array.isArray(e)||e.length>S||!e.every(n=>u(n,c))?null:[...new Set(e)].sort()}function C(e){return!d(e)||!u(e.chartId,c)||!u(e.version,c)||e.sha256!==void 0&&(typeof e.sha256!="string"||!y.test(e.sha256))?null:{chartId:e.chartId,version:e.version,...typeof e.sha256=="string"?{sha256:e.sha256}:{}}}function m(e,n,t){return typeof e=="number"&&Number.isFinite(e)&&e>=n&&e<=t}function V(e){return d(e)?e.mode==="none"||e.mode==="opaque"?e.opacity===void 0?{mode:e.mode}:null:e.mode==="partial"&&m(e.opacity,.01,.99)?{mode:"partial",opacity:e.opacity}:null:null}function j(e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length>k)return null;let t=new Set(n),s=new Set,i=new Set,r=0,a=[];for(let o of e){if(!d(o)||!u(o.id,c)||!u(o.objectId,c)||!t.has(o.objectId)||!x.has(String(o.kind))||!m(o.heightM,.05,50)||o.baseElevationM!==void 0&&!m(o.baseElevationM,-10,100))return null;let f=V(o.occlusion);if(!f||s.has(o.id)||i.has(o.objectId))return null;let g=o.contentImageUrl===void 0?void 0:typeof o.contentImageUrl=="string"?b(o.contentImageUrl):null;if(o.contentImageUrl!==void 0&&(!g||o.kind!=="screen"||++r>1))return null;s.add(o.id),i.add(o.objectId),a.push({id:o.id,objectId:o.objectId,kind:o.kind,heightM:o.heightM,...o.baseElevationM!==void 0?{baseElevationM:o.baseElevationM}:{},occlusion:f,...g?{contentImageUrl:g}:{}})}return a.sort((o,f)=>o.id.localeCompare(f.id))}function I(e){let n=[];if(!d(e))return{issues:[{code:"invalid_export",path:"configuration",message:"Configuration must be an object"}]};e.schema!==l&&n.push({code:"unsupported_schema",path:"configuration.schema",message:`Configuration schema must be ${l}`}),u(e.id,c)||n.push({code:"invalid_id",path:"configuration.id",message:"Configuration id must contain 1 to 100 normalized characters"}),u(e.label,_)||n.push({code:"invalid_label",path:"configuration.label",message:"Configuration label must contain 1 to 120 normalized characters"}),E(e.version)||n.push({code:"invalid_version",path:"configuration.version",message:"Configuration version must be a positive integer"});let t=C(e.baseVenue);t||n.push({code:"invalid_base_venue",path:"configuration.baseVenue",message:"Base venue must identify one normalized chart id and exact version"});let s=d(e.overlay)?e.overlay:null,i=v(s?.objectIds),r=v(s?.productionKillSeatIds),a=i?j(s?.productionElements,i):null;return(!s||!i||!r)&&n.push({code:"invalid_overlay",path:"configuration.overlay",message:"Overlay ids must be bounded arrays of normalized stable ids"}),a===null&&n.push({code:"invalid_production_element",path:"configuration.overlay.productionElements",message:"Production elements must be unique, bounded semantics over referenced base-venue objects"}),n.length||!t||!i||!r||a===null?{issues:n}:{issues:n,value:{schema:l,id:e.id,label:e.label,version:e.version,baseVenue:t,overlay:{objectIds:i,productionKillSeatIds:r,...a!==void 0?{productionElements:a}:{}}}}}function R(e){let n=I(e);return n.value?{ok:!0,value:n.value}:{ok:!1,issues:n.issues}}function P(e){if(!d(e))return{ok:!1,issues:[{code:"invalid_export",path:"",message:"Export must be an object"}]};let n=[];e.schema!==p&&n.push({code:"unsupported_schema",path:"schema",message:`Export schema must be ${p}`}),(typeof e.contentSha256!="string"||!y.test(e.contentSha256))&&n.push({code:"invalid_checksum",path:"contentSha256",message:"Export checksum must be a lowercase SHA-256 digest"});let t=I(e.configuration);return n.push(...t.issues),n.length||!t.value||typeof e.contentSha256!="string"?{ok:!1,issues:n}:{ok:!0,value:{schema:p,configuration:t.value,contentSha256:e.contentSha256}}}function A(e){return JSON.stringify({schema:l,id:e.id,label:e.label,version:e.version,baseVenue:{chartId:e.baseVenue.chartId,version:e.baseVenue.version,...e.baseVenue.sha256?{sha256:e.baseVenue.sha256}:{}},overlay:{objectIds:[...new Set(e.overlay.objectIds)].sort(),productionKillSeatIds:[...new Set(e.overlay.productionKillSeatIds)].sort(),...e.overlay.productionElements!==void 0?{productionElements:[...e.overlay.productionElements].sort((n,t)=>n.id.localeCompare(t.id)).map(n=>({id:n.id,objectId:n.objectId,kind:n.kind,heightM:n.heightM,...n.baseElevationM!==void 0?{baseElevationM:n.baseElevationM}:{},occlusion:n.occlusion,...n.contentImageUrl?{contentImageUrl:n.contentImageUrl}:{}}))}:{}}})}function N(e,n){let t=[];e.baseVenue.chartId!==n.chartId&&t.push({code:"base_venue_mismatch",message:"Configuration belongs to a different base venue"}),e.baseVenue.version!==n.version&&t.push({code:"base_venue_version_mismatch",message:"Configuration was authored against a different venue version"}),e.baseVenue.sha256&&!n.sha256?t.push({code:"base_venue_checksum_missing",message:"Venue checksum is required for this configuration"}):e.baseVenue.sha256&&e.baseVenue.sha256!==n.sha256&&t.push({code:"base_venue_checksum_mismatch",message:"Venue bytes do not match the configuration base"});let s=new Set(n.objectIds);for(let r of e.overlay.objectIds)s.has(r)||t.push({code:"overlay_object_missing",message:`Production object ${r} is missing from the base venue`,targetId:r});if(n.objectTypes)for(let r of e.overlay.productionElements??[])n.objectTypes.get(r.objectId)!=="shape"&&t.push({code:"production_element_not_shape",message:`Production element ${r.id} must reference base-venue shape geometry`,targetId:r.objectId});let i=new Set(n.seatIds);for(let r of e.overlay.productionKillSeatIds)i.has(r)||t.push({code:"production_kill_seat_missing",message:`Production-kill seat ${r} is missing from the base venue`,targetId:r});return{compatible:t.length===0,issues:t}}var w={draft:new Set(["review","archived"]),review:new Set(["draft","approved","archived"]),approved:new Set(["published","archived"]),published:new Set(["archived"]),archived:new Set};function T(e,n){return e===n||w[e].has(n)}function L(e,n,t){return!E(t)||t>=n.version?null:e.find(s=>s.id===n.id&&s.version===t&&s.status==="published")??null}function O(e){return e.floors?.length?e.floors.flatMap(n=>n.objects):e.objects}function h(e,n,t){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let s of e)h(s,n,t);return}for(let[s,i]of Object.entries(e)){if(s==="eventConfigurationId"){u(i,c)?n.add(i):i!==void 0&&t.add(String(i));continue}if(s==="eventConfigurationIds"){if(!Array.isArray(i))t.add(String(i));else for(let r of i)u(r,c)?n.add(r):t.add(String(r));continue}h(i,n,t)}}}function U(e,n){let t=C(n);if(!t)return{ok:!1,invalidIds:["baseVenue"]};let s=new Set,i=new Set;if(h(e,s,i),i.size)return{ok:!1,invalidIds:[...i].sort()};let r=O(e);return{ok:!0,configurations:[...s].sort().map(a=>({schema:l,id:a,label:a,version:1,baseVenue:t,overlay:{objectIds:r.filter(o=>o.type==="shape"&&o.eventConfigurationIds?.includes(a)).map(o=>o.id).sort(),productionKillSeatIds:[]}}))}}export{l as a,p as b,R as c,P as d,A as e,N as f,T as g,L as h,U as i};
@@ -1 +1 @@
1
- var f="seatmap.chart";var c=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],l=new Map(c.map(e=>[e.key,e]));function h(e){return l.get(e)}var d={wheelchair:"#3b82f6",companion:"#8b5cf6","semi-ambulatory":"#0ea5e9","designated-aisle":"#0284c7","step-free":"#16a34a",hearing:"#14b8a6",cart:"#7c3aed","sign-language":"#f59e0b","low-vision":"#d97706","sensory-friendly":"#6366f1","plus-size":"#ec4899","lift-armrest":"#22c55e"};function x(e){let t=e?.[0];return t&&d[t]||"#3b82f6"}var u=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],b=new Map(u.map(e=>[e.key,e]));function C(e){return b.get(e)}var w=8,R=24,g=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],m=new Set(g);function I(e){switch(e.type){case"row":case"table":case"gaArea":case"booth":case"section":return"interactive";case"decorImage":return e.layer==="foreground"?"foreground":"background";case"shape":return e.role&&m.has(e.role)?"surroundings":"background";case"text":return"background";default:return"interactive"}}function p(e){let t=0;for(let r=0,i=e.length;r<i;r+=1){let o=e[r],a=e[(r+1)%i];t+=o.x*a.y-a.x*o.y}return t/2}function M(e){return p(e)*2}function T(e,t,r){let i=!1;for(let o=0,a=e.length-1;o<e.length;a=o++){let n=e[o],s=e[a];n.y>r!=s.y>r&&t<(s.x-n.x)*(r-n.y)/(s.y-n.y)+n.x&&(i=!i)}return i}function y(e){let t=1/0,r=1/0,i=-1/0,o=-1/0,a=!1;for(let n of e)!Number.isFinite(n.x)||!Number.isFinite(n.y)||(a=!0,n.x<t&&(t=n.x),n.y<r&&(r=n.y),n.x>i&&(i=n.x),n.y>o&&(o=n.y));return a?{minX:t,minY:r,maxX:i,maxY:o}:null}function F(e){let t=y(e);return t?S(t):null}function S(e){return{x:e.minX,y:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}}function D(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}export{f as a,c as b,h as c,d,x as e,u as f,C as g,w as h,R as i,g as j,I as k,p as l,M as m,T as n,y as o,F as p,D as q};
1
+ var x="seatmap.chart";var c=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],l=new Map(c.map(e=>[e.key,e]));function w(e){return l.get(e)}var d={wheelchair:"#3b82f6",companion:"#8b5cf6","semi-ambulatory":"#0ea5e9","designated-aisle":"#0284c7","step-free":"#16a34a",hearing:"#14b8a6",cart:"#7c3aed","sign-language":"#f59e0b","low-vision":"#d97706","sensory-friendly":"#6366f1","plus-size":"#ec4899","lift-armrest":"#22c55e"};function R(e){let t=e?.[0];return t&&d[t]||"#3b82f6"}var u=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],g=new Map(u.map(e=>[e.key,e]));function I(e){return g.get(e)}var A=8,k=24,b=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],m=new Set(b);function E(e){switch(e.type){case"row":case"table":case"gaArea":case"booth":case"section":return"interactive";case"decorImage":return e.layer==="foreground"?"foreground":"background";case"shape":return e.role&&m.has(e.role)?"surroundings":"background";case"text":return"background";default:return"interactive"}}var T=2e6,p=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,y=/[\s"'<>`\\]/;function f(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return p.test(e);if(y.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}function O(e){let t=e.trim();return f(t)?t:null}function S(e){let t=0;for(let r=0,i=e.length;r<i;r+=1){let o=e[r],a=e[(r+1)%i];t+=o.x*a.y-a.x*o.y}return t/2}function V(e){return S(e)*2}function _(e,t,r){let i=!1;for(let o=0,a=e.length-1;o<e.length;a=o++){let n=e[o],s=e[a];n.y>r!=s.y>r&&t<(s.x-n.x)*(r-n.y)/(s.y-n.y)+n.x&&(i=!i)}return i}function v(e){let t=1/0,r=1/0,i=-1/0,o=-1/0,a=!1;for(let n of e)!Number.isFinite(n.x)||!Number.isFinite(n.y)||(a=!0,n.x<t&&(t=n.x),n.y<r&&(r=n.y),n.x>i&&(i=n.x),n.y>o&&(o=n.y));return a?{minX:t,minY:r,maxX:i,maxY:o}:null}function G(e){let t=v(e);return t?h(t):null}function h(e){return{x:e.minX,y:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}}function X(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}export{x as a,c as b,w as c,d,R as e,u as f,I as g,A as h,k as i,b as j,E as k,T as l,f as m,O as n,S as o,V as p,_ as q,v as r,G as s,X as t};
@@ -1 +1 @@
1
- import{x as X}from"./chunk-XHXBFFWR.js";var Y=9;function E(t){if(t.kind==="circle")return{hx:t.r,hy:t.r};let e=t.width/2,o=t.height/2,n=t.rotation??0;if(!n)return{hx:e,hy:o};let r=n*Math.PI/180,s=Math.abs(Math.cos(r)),c=Math.abs(Math.sin(r));return{hx:e*s+o*c,hy:e*c+o*s}}function B(t,e,o){let n=e-t.seat.x,r=o-t.seat.y;if(t.shape.kind==="circle")return n*n+r*r<=t.shape.r*t.shape.r;let s=t.shape.rotation??0,c=n,d=r;if(s){let u=-s*Math.PI/180,m=Math.cos(u),y=Math.sin(u);c=n*m-r*y,d=n*y+r*m}return Math.abs(c)<=t.shape.width/2&&Math.abs(d)<=t.shape.height/2}function L(t,e,o,n,r){if(t.shape.kind==="circle"){let h=Math.min(Math.max(t.seat.x,e),n),l=Math.min(Math.max(t.seat.y,o),r),x=t.seat.x-h,p=t.seat.y-l;return x*x+p*p<=t.shape.r*t.shape.r}let s=t.shape.rotation??0;if(!s)return t.seat.x-t.hx<=n&&t.seat.x+t.hx>=e&&t.seat.y-t.hy<=r&&t.seat.y+t.hy>=o;let c=s*Math.PI/180,d=Math.cos(c),u=Math.sin(c),m=t.shape.width/2,y=t.shape.height/2,f=[[-m,-y],[m,-y],[m,y],[-m,y]].map(([h,l])=>[t.seat.x+h*d-l*u,t.seat.y+h*u+l*d]),P=[[e,o],[n,o],[n,r],[e,r]],A=[[1,0],[0,1],[d,u],[-u,d]];for(let[h,l]of A){let x=1/0,p=-1/0;for(let[I,D]of f){let a=I*h+D*l;a<x&&(x=a),a>p&&(p=a)}let M=1/0,S=-1/0;for(let[I,D]of P){let a=I*h+D*l;a<M&&(M=a),a>S&&(S=a)}if(p<M||S<x)return!1}return!0}function j(t,e={}){let o=e.seatRadius??Y,n=t.length,r=new Array(n),s=1/0,c=1/0,d=-1/0,u=-1/0,m=0;for(let a=0;a<n;a++){let i=t[a],R=e.shapeOf?.(i)??{kind:"circle",r:o},{hx:w,hy:b}=E(R);r[a]={seat:i,shape:R,hx:w,hy:b},i.x-w<s&&(s=i.x-w),i.y-b<c&&(c=i.y-b),i.x+w>d&&(d=i.x+w),i.y+b>u&&(u=i.y+b),w>m&&(m=w),b>m&&(m=b)}n===0&&(s=0,c=0,d=0,u=0);let y=m>0?m*4:1,f=Math.max(d-s,0),P=Math.max(u-c,0),A=Math.max(64,e.maxCells??n*4),h=y,l=Math.max(1,Math.ceil(f/h)||1),x=Math.max(1,Math.ceil(P/h)||1);for(;l*x>A&&(l>1||x>1);)h*=2,l=Math.max(1,Math.ceil(f/h)||1),x=Math.max(1,Math.ceil(P/h)||1);let p=l*x,M=new Int32Array(p+1),S=0;for(let a=0;a<n;a++){let i=r[a],R=X(Math.floor((i.seat.x-i.hx-s)/h),0,l-1),w=X(Math.floor((i.seat.x+i.hx-s)/h),0,l-1),b=X(Math.floor((i.seat.y-i.hy-c)/h),0,x-1),k=X(Math.floor((i.seat.y+i.hy-c)/h),0,x-1);for(let C=b;C<=k;C++)for(let g=R;g<=w;g++)M[C*l+g+1]++,S++}for(let a=0;a<p;a++)M[a+1]+=M[a];let I=new Int32Array(S),D=M.slice(0,p);for(let a=0;a<n;a++){let i=r[a],R=X(Math.floor((i.seat.x-i.hx-s)/h),0,l-1),w=X(Math.floor((i.seat.x+i.hx-s)/h),0,l-1),b=X(Math.floor((i.seat.y-i.hy-c)/h),0,x-1),k=X(Math.floor((i.seat.y+i.hy-c)/h),0,x-1);for(let C=b;C<=k;C++)for(let g=R;g<=w;g++){let v=C*l+g;I[D[v]++]=a}}return{seats:t,entries:r,minX:s,minY:c,cell:h,cols:l,rows:x,cellStart:M,items:I,stamp:new Int32Array(n),epoch:0}}function q(t,e,o={}){let{cols:n,rows:r,cell:s,minX:c,minY:d,cellStart:u,items:m,entries:y}=t,f=Math.floor((e.x-c)/s),P=Math.floor((e.y-d)/s);if(f<0||P<0||f>=n||P>=r)return null;let A=P*n+f,h=u[A+1],l=-1,x=1/0;for(let p=u[A];p<h;p++){let M=m[p],S=y[M];if(o.filter&&!o.filter(S.seat.id,S.seat)||!B(S,e.x,e.y))continue;let I=e.x-S.seat.x,D=e.y-S.seat.y,a=I*I+D*D;(a<x||a===x&&M<l)&&(x=a,l=M)}return l<0?null:y[l].seat.id}function F(t,e,o,n={}){if(!(o>0))return null;let{cols:r,rows:s,cell:c,minX:d,minY:u,cellStart:m,items:y,entries:f}=t,P=Math.max(0,Math.floor((e.x-o-d)/c)),A=Math.min(r-1,Math.floor((e.x+o-d)/c)),h=Math.max(0,Math.floor((e.y-o-u)/c)),l=Math.min(s-1,Math.floor((e.y+o-u)/c));if(P>A||h>l)return null;let x=-1,p=o*o,M=t.stamp,S=++t.epoch;for(let I=h;I<=l;I++){let D=I*r;for(let a=P;a<=A;a++){let i=D+a,R=m[i+1];for(let w=m[i];w<R;w++){let b=y[w];if(M[b]===S)continue;M[b]=S;let k=f[b];if(n.filter&&!n.filter(k.seat.id,k.seat))continue;let C=e.x-k.seat.x,g=e.y-k.seat.y,v=C*C+g*g;(v<p||v===p&&b<x)&&(p=v,x=b)}}}return x<0?null:f[x].seat.id}function U(t,e,o={}){let n=Math.min(e.x,e.x+e.width),r=Math.max(e.x,e.x+e.width),s=Math.min(e.y,e.y+e.height),c=Math.max(e.y,e.y+e.height),d=o.mode??"center",{cols:u,rows:m,cell:y,minX:f,minY:P,cellStart:A,items:h,entries:l}=t,x=Math.max(0,Math.floor((n-f)/y)),p=Math.min(u-1,Math.floor((r-f)/y)),M=Math.max(0,Math.floor((s-P)/y)),S=Math.min(m-1,Math.floor((c-P)/y));if(x>p||M>S)return[];let I=[],D=t.stamp,a=++t.epoch;for(let i=M;i<=S;i++){let R=i*u;for(let w=x;w<=p;w++){let b=R+w,k=A[b+1];for(let C=A[b];C<k;C++){let g=h[C];if(D[g]===a)continue;D[g]=a;let v=l[g];if(o.filter&&!o.filter(v.seat.id,v.seat))continue;(d==="center"?v.seat.x>=n&&v.seat.x<=r&&v.seat.y>=s&&v.seat.y<=c:L(v,n,s,r,c))&&I.push(g)}}}return I.sort((i,R)=>i-R),I.map(i=>l[i].seat.id)}function _(t){let e=t.cols*t.rows,o=0,n=0;for(let s=0;s<e;s++){let c=t.cellStart[s+1]-t.cellStart[s];c>0&&o++,c>n&&(n=c)}let r=t.items.length;return{cell:t.cell,cols:t.cols,rows:t.rows,cells:e,occupiedCells:o,refs:r,maxPerCell:n,meanPerOccupiedCell:o?r/o:0}}function N(t,e=0){let o=Math.max(1,t.width,t.height),n={x:t.x+t.width/2,y:t.y+t.height/2},r=o*1.55,s=Math.max(o*.82,Math.max(0,e)+o*.45);return{target:n,distance:r,height:s,focalLength:Math.hypot(r,s),yawRad:-8*Math.PI/180}}function O(t,e,o=0){let n=e.x-t.target.x,r=e.y-t.target.y,s=Math.cos(t.yawRad),c=Math.sin(t.yawRad),d=n*s-r*c,m=n*c+r*s-t.distance,y=o-t.height,f=Math.hypot(t.distance,t.height),P=(-t.distance*m-t.height*y)/f,A=(-t.height*m+t.distance*y)/f,h=Math.max(f*.08,P),l=t.focalLength/h;return{x:t.target.x+d*l,y:t.target.y-A*l,depth:h,scale:l}}function W(t,e){return{x:t.a*e.x+t.c*e.y+t.e,y:t.b*e.x+t.d*e.y+t.f}}function Z(t){let e=t.a*t.d-t.b*t.c;if(!Number.isFinite(e)||Math.abs(e)<1e-9)throw new Error("perspective projection produced a singular affine");let o=t.d/e,n=-t.b/e,r=-t.c/e,s=t.a/e;return{a:o,b:n,c:r,d:s,e:-(o*t.e+r*t.f),f:-(n*t.e+s*t.f)}}function z(t,e){return{a:t.a*e.a+t.c*e.b,b:t.b*e.a+t.d*e.b,c:t.a*e.c+t.c*e.d,d:t.b*e.c+t.d*e.d,e:t.a*e.e+t.c*e.f+t.e,f:t.b*e.e+t.d*e.f+t.f}}function G(t,e,o=()=>0){let n=O(t,e,o(e)),r={x:e.x+1,y:e.y},s={x:e.x,y:e.y+1},c=O(t,r,o(r)),d=O(t,s,o(s)),u=c.x-n.x,m=c.y-n.y,y=d.x-n.x,f=d.y-n.y;return{a:u,b:m,c:y,d:f,e:n.x-u*e.x-y*e.y,f:n.y-m*e.x-f*e.y}}function J(t){let e=Math.hypot(t.a,t.b),o=t.a*t.d-t.b*t.c;return{rotationDeg:Math.atan2(t.b,t.a)*180/Math.PI,scaleX:e,scaleY:o/Math.max(e,1e-9),skewX:(t.a*t.c+t.b*t.d)/Math.max(o,1e-9)}}export{Y as a,j as b,q as c,F as d,U as e,_ as f,N as g,O as h,W as i,Z as j,z as k,G as l,J as m};
1
+ import{x as X}from"./chunk-I6DNJFRF.js";var Y=9;function E(t){if(t.kind==="circle")return{hx:t.r,hy:t.r};let e=t.width/2,o=t.height/2,n=t.rotation??0;if(!n)return{hx:e,hy:o};let r=n*Math.PI/180,s=Math.abs(Math.cos(r)),c=Math.abs(Math.sin(r));return{hx:e*s+o*c,hy:e*c+o*s}}function B(t,e,o){let n=e-t.seat.x,r=o-t.seat.y;if(t.shape.kind==="circle")return n*n+r*r<=t.shape.r*t.shape.r;let s=t.shape.rotation??0,c=n,d=r;if(s){let u=-s*Math.PI/180,m=Math.cos(u),y=Math.sin(u);c=n*m-r*y,d=n*y+r*m}return Math.abs(c)<=t.shape.width/2&&Math.abs(d)<=t.shape.height/2}function L(t,e,o,n,r){if(t.shape.kind==="circle"){let h=Math.min(Math.max(t.seat.x,e),n),l=Math.min(Math.max(t.seat.y,o),r),x=t.seat.x-h,p=t.seat.y-l;return x*x+p*p<=t.shape.r*t.shape.r}let s=t.shape.rotation??0;if(!s)return t.seat.x-t.hx<=n&&t.seat.x+t.hx>=e&&t.seat.y-t.hy<=r&&t.seat.y+t.hy>=o;let c=s*Math.PI/180,d=Math.cos(c),u=Math.sin(c),m=t.shape.width/2,y=t.shape.height/2,f=[[-m,-y],[m,-y],[m,y],[-m,y]].map(([h,l])=>[t.seat.x+h*d-l*u,t.seat.y+h*u+l*d]),P=[[e,o],[n,o],[n,r],[e,r]],A=[[1,0],[0,1],[d,u],[-u,d]];for(let[h,l]of A){let x=1/0,p=-1/0;for(let[I,D]of f){let a=I*h+D*l;a<x&&(x=a),a>p&&(p=a)}let M=1/0,S=-1/0;for(let[I,D]of P){let a=I*h+D*l;a<M&&(M=a),a>S&&(S=a)}if(p<M||S<x)return!1}return!0}function j(t,e={}){let o=e.seatRadius??Y,n=t.length,r=new Array(n),s=1/0,c=1/0,d=-1/0,u=-1/0,m=0;for(let a=0;a<n;a++){let i=t[a],R=e.shapeOf?.(i)??{kind:"circle",r:o},{hx:w,hy:b}=E(R);r[a]={seat:i,shape:R,hx:w,hy:b},i.x-w<s&&(s=i.x-w),i.y-b<c&&(c=i.y-b),i.x+w>d&&(d=i.x+w),i.y+b>u&&(u=i.y+b),w>m&&(m=w),b>m&&(m=b)}n===0&&(s=0,c=0,d=0,u=0);let y=m>0?m*4:1,f=Math.max(d-s,0),P=Math.max(u-c,0),A=Math.max(64,e.maxCells??n*4),h=y,l=Math.max(1,Math.ceil(f/h)||1),x=Math.max(1,Math.ceil(P/h)||1);for(;l*x>A&&(l>1||x>1);)h*=2,l=Math.max(1,Math.ceil(f/h)||1),x=Math.max(1,Math.ceil(P/h)||1);let p=l*x,M=new Int32Array(p+1),S=0;for(let a=0;a<n;a++){let i=r[a],R=X(Math.floor((i.seat.x-i.hx-s)/h),0,l-1),w=X(Math.floor((i.seat.x+i.hx-s)/h),0,l-1),b=X(Math.floor((i.seat.y-i.hy-c)/h),0,x-1),k=X(Math.floor((i.seat.y+i.hy-c)/h),0,x-1);for(let C=b;C<=k;C++)for(let g=R;g<=w;g++)M[C*l+g+1]++,S++}for(let a=0;a<p;a++)M[a+1]+=M[a];let I=new Int32Array(S),D=M.slice(0,p);for(let a=0;a<n;a++){let i=r[a],R=X(Math.floor((i.seat.x-i.hx-s)/h),0,l-1),w=X(Math.floor((i.seat.x+i.hx-s)/h),0,l-1),b=X(Math.floor((i.seat.y-i.hy-c)/h),0,x-1),k=X(Math.floor((i.seat.y+i.hy-c)/h),0,x-1);for(let C=b;C<=k;C++)for(let g=R;g<=w;g++){let v=C*l+g;I[D[v]++]=a}}return{seats:t,entries:r,minX:s,minY:c,cell:h,cols:l,rows:x,cellStart:M,items:I,stamp:new Int32Array(n),epoch:0}}function q(t,e,o={}){let{cols:n,rows:r,cell:s,minX:c,minY:d,cellStart:u,items:m,entries:y}=t,f=Math.floor((e.x-c)/s),P=Math.floor((e.y-d)/s);if(f<0||P<0||f>=n||P>=r)return null;let A=P*n+f,h=u[A+1],l=-1,x=1/0;for(let p=u[A];p<h;p++){let M=m[p],S=y[M];if(o.filter&&!o.filter(S.seat.id,S.seat)||!B(S,e.x,e.y))continue;let I=e.x-S.seat.x,D=e.y-S.seat.y,a=I*I+D*D;(a<x||a===x&&M<l)&&(x=a,l=M)}return l<0?null:y[l].seat.id}function F(t,e,o,n={}){if(!(o>0))return null;let{cols:r,rows:s,cell:c,minX:d,minY:u,cellStart:m,items:y,entries:f}=t,P=Math.max(0,Math.floor((e.x-o-d)/c)),A=Math.min(r-1,Math.floor((e.x+o-d)/c)),h=Math.max(0,Math.floor((e.y-o-u)/c)),l=Math.min(s-1,Math.floor((e.y+o-u)/c));if(P>A||h>l)return null;let x=-1,p=o*o,M=t.stamp,S=++t.epoch;for(let I=h;I<=l;I++){let D=I*r;for(let a=P;a<=A;a++){let i=D+a,R=m[i+1];for(let w=m[i];w<R;w++){let b=y[w];if(M[b]===S)continue;M[b]=S;let k=f[b];if(n.filter&&!n.filter(k.seat.id,k.seat))continue;let C=e.x-k.seat.x,g=e.y-k.seat.y,v=C*C+g*g;(v<p||v===p&&b<x)&&(p=v,x=b)}}}return x<0?null:f[x].seat.id}function U(t,e,o={}){let n=Math.min(e.x,e.x+e.width),r=Math.max(e.x,e.x+e.width),s=Math.min(e.y,e.y+e.height),c=Math.max(e.y,e.y+e.height),d=o.mode??"center",{cols:u,rows:m,cell:y,minX:f,minY:P,cellStart:A,items:h,entries:l}=t,x=Math.max(0,Math.floor((n-f)/y)),p=Math.min(u-1,Math.floor((r-f)/y)),M=Math.max(0,Math.floor((s-P)/y)),S=Math.min(m-1,Math.floor((c-P)/y));if(x>p||M>S)return[];let I=[],D=t.stamp,a=++t.epoch;for(let i=M;i<=S;i++){let R=i*u;for(let w=x;w<=p;w++){let b=R+w,k=A[b+1];for(let C=A[b];C<k;C++){let g=h[C];if(D[g]===a)continue;D[g]=a;let v=l[g];if(o.filter&&!o.filter(v.seat.id,v.seat))continue;(d==="center"?v.seat.x>=n&&v.seat.x<=r&&v.seat.y>=s&&v.seat.y<=c:L(v,n,s,r,c))&&I.push(g)}}}return I.sort((i,R)=>i-R),I.map(i=>l[i].seat.id)}function _(t){let e=t.cols*t.rows,o=0,n=0;for(let s=0;s<e;s++){let c=t.cellStart[s+1]-t.cellStart[s];c>0&&o++,c>n&&(n=c)}let r=t.items.length;return{cell:t.cell,cols:t.cols,rows:t.rows,cells:e,occupiedCells:o,refs:r,maxPerCell:n,meanPerOccupiedCell:o?r/o:0}}function N(t,e=0){let o=Math.max(1,t.width,t.height),n={x:t.x+t.width/2,y:t.y+t.height/2},r=o*1.55,s=Math.max(o*.82,Math.max(0,e)+o*.45);return{target:n,distance:r,height:s,focalLength:Math.hypot(r,s),yawRad:-8*Math.PI/180}}function O(t,e,o=0){let n=e.x-t.target.x,r=e.y-t.target.y,s=Math.cos(t.yawRad),c=Math.sin(t.yawRad),d=n*s-r*c,m=n*c+r*s-t.distance,y=o-t.height,f=Math.hypot(t.distance,t.height),P=(-t.distance*m-t.height*y)/f,A=(-t.height*m+t.distance*y)/f,h=Math.max(f*.08,P),l=t.focalLength/h;return{x:t.target.x+d*l,y:t.target.y-A*l,depth:h,scale:l}}function W(t,e){return{x:t.a*e.x+t.c*e.y+t.e,y:t.b*e.x+t.d*e.y+t.f}}function Z(t){let e=t.a*t.d-t.b*t.c;if(!Number.isFinite(e)||Math.abs(e)<1e-9)throw new Error("perspective projection produced a singular affine");let o=t.d/e,n=-t.b/e,r=-t.c/e,s=t.a/e;return{a:o,b:n,c:r,d:s,e:-(o*t.e+r*t.f),f:-(n*t.e+s*t.f)}}function z(t,e){return{a:t.a*e.a+t.c*e.b,b:t.b*e.a+t.d*e.b,c:t.a*e.c+t.c*e.d,d:t.b*e.c+t.d*e.d,e:t.a*e.e+t.c*e.f+t.e,f:t.b*e.e+t.d*e.f+t.f}}function G(t,e,o=()=>0){let n=O(t,e,o(e)),r={x:e.x+1,y:e.y},s={x:e.x,y:e.y+1},c=O(t,r,o(r)),d=O(t,s,o(s)),u=c.x-n.x,m=c.y-n.y,y=d.x-n.x,f=d.y-n.y;return{a:u,b:m,c:y,d:f,e:n.x-u*e.x-y*e.y,f:n.y-m*e.x-f*e.y}}function J(t){let e=Math.hypot(t.a,t.b),o=t.a*t.d-t.b*t.c;return{rotationDeg:Math.atan2(t.b,t.a)*180/Math.PI,scaleX:e,scaleY:o/Math.max(e,1e-9),skewX:(t.a*t.c+t.b*t.d)/Math.max(o,1e-9)}}export{Y as a,j as b,q as c,F as d,U as e,_ as f,N as g,O as h,W as i,Z as j,z as k,G as l,J as m};
@@ -1 +1 @@
1
- import{Ba as A,Ia as v,sa as _}from"./chunk-XHXBFFWR.js";function x(t){let n=Number(t.slice(t.lastIndexOf(":")+1));return Number.isFinite(n)?n:-1}function H(t,n,i){let e=new Map;for(let o of t){if(o.kind==="booth")continue;let a=e.get(o.rowId);a?a.push(o):e.set(o.rowId,[o])}let c=o=>i.has(o.id)||n(o.id)!=="free",l=[];for(let o of e.values())if(!(o.length<3)){o.sort((a,p)=>x(a.id)-x(p.id));for(let a=1;a<o.length-1;a++){let p=o[a];if(c(p))continue;let g=o[a-1],d=o[a+1];x(p.id)-x(g.id)!==1||x(d.id)-x(p.id)!==1||!c(g)||!c(d)||!i.has(g.id)&&!i.has(d.id)||l.push(p)}}return l}function C(t,n){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let i=t.id.lastIndexOf(":");if(i<0)return n;let e=Number(t.id.slice(i+1));return Number.isFinite(e)?e:n}function T(t,n){let i=t.x-n.x,e=t.y-n.y;return i*i+e*e}function N(t){let n=0,i=0;for(let e of t)n+=e.x,i+=e.y;return{x:n/t.length,y:i/t.length}}function M(t,n){return t.find(i=>i.focalPoint)?.focalPoint??n}function E(t){return t.commercial?.premium===!0}function q(t,n,i){let e=Math.floor(i.qty);if(!Number.isFinite(e)||e<=0)return{labels:[],reason:"sold_out"};let{categoryKey:c,zoneId:l,focal:o,preferPremium:a}=i,p=new Map,g=[];if(t.forEach((r,b)=>{let m=n.has(r.label)&&(!c||r.categoryKey===c)&&(!l||r.zoneId===l),f=r.logicalRowId??r.rowId,u=p.get(f);u||(u=[],p.set(f,u)),u.push({seat:r,index:C(r,b),elig:m}),m&&g.push(r)}),g.length===0)return{labels:[],reason:"sold_out"};let d=null,s=r=>{if(!d)return!0;if(a&&r.nonPremium!==d.nonPremium)return r.nonPremium<d.nonPremium;if(r.orphan!==d.orphan)return r.orphan<d.orphan;if(r.d2!==d.d2)return r.d2<d.d2;let b=r.rowId.localeCompare(d.rowId);return b!==0?b<0:r.startIndex<d.startIndex};for(let[r,b]of p){let m=[...b].sort((u,k)=>u.index-k.index),f=0;for(;f<m.length;){if(!m[f].elig){f++;continue}let u=f;for(;u<m.length&&m[u].elig&&(u===f||m[u].index===m[u-1].index+1);)u++;let k=u-f;for(let y=0;y+e<=k;y++){let B=y,j=k-(y+e),F=B===1||j===1?1:0,h=m.slice(f+y,f+y+e).map(I=>I.seat),O={labels:h.map(I=>I.label),seats:h,rowId:r,startIndex:m[f+y].index,orphan:F,nonPremium:a?h.reduce((I,L)=>I+(E(L)?0:1),0):0,d2:T(N(h),M(h,o))};s(O)&&(d=O)}f=u}}return d?{labels:d.labels}:g.length<e?{labels:[],reason:"not_enough_together"}:{labels:g.map((r,b)=>({seat:r,i:b,d2:T(r,r.focalPoint??o)})).sort((r,b)=>{if(a){let f=E(r.seat)?0:1,u=E(b.seat)?0:1;if(f!==u)return f-u}if(r.d2!==b.d2)return r.d2-b.d2;let m=(r.seat.logicalRowId??r.seat.rowId).localeCompare(b.seat.logicalRowId??b.seat.rowId);return m!==0?m:C(r.seat,r.i)-C(b.seat,b.i)}).slice(0,e).map(r=>r.seat.label)}}function $(t,n,i,e){let c=Math.floor(e.qty),l=q(t,i,e),a=n.filter(s=>s.bookingMode==="whole"&&s.capacity===c&&i.has(s.label)&&(!e.categoryKey||s.categoryKey===e.categoryKey)&&(!e.zoneId||s.zoneId===e.zoneId)).map(s=>({table:s,d2:T(s.center,s.focalPoint??e.focal)})).sort((s,w)=>s.d2-w.d2||s.table.label.localeCompare(w.table.label))[0];if(!a)return l;if(!l.labels.length)return{labels:[a.table.label]};let p=new Map(t.map(s=>[s.label,s])),g=l.labels.map(s=>p.get(s)).filter(s=>!!s),d=g.length?T(N(g),M(g,e.focal)):Number.POSITIVE_INFINITY;return a.d2<d?{labels:[a.table.label]}:l}function D(t){return{code:"ticket_option_not_applicable",labels:t,message:"That ticket choice is not available for the selected seat."}}function P(t,n){let i=t.applicability;return i?!(i.seatLabels?.length&&!i.seatLabels.includes(n.label)||i.accessibility?.length&&!i.accessibility.some(e=>n.accessibility?.includes(e))):!0}function Q(t,n){return(t.categories.find(i=>i.key===n.categoryKey)?.tiers??[]).filter(i=>P(i,n))}function K(t,n,i){let e=t.categories.find(l=>l.key===n.categoryKey)?.tiers;if(!e?.length)return{kind:"none"};let c=i==null?e.find(l=>P(l,n)):e.find(l=>l.id===i&&P(l,n));return c?{kind:"resolved",tier:c}:{kind:"invalid"}}function z(t,n){return(t.logicalRowId??t.rowId)===(n.logicalRowId??n.rowId)}function R(t){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let n=t.id.slice(t.id.lastIndexOf(":")+1),i=Number(n);return Number.isInteger(i)?i:void 0}function G(t,n){if(!z(t,n))return!1;let i=R(t),e=R(n);return i!=null&&e!=null&&Math.abs(i-e)===1}function U(t,n){if(!n.length)return null;let i=new Map(v(t,{resolveEyeHeights:!1}).map(o=>[o.label,o])),e=n.flatMap(o=>{let a=i.get(o.label);return a?[{selection:o,seat:a}]:[]}),c=e.map(({seat:o})=>o).filter(o=>o.accessibility?.includes("wheelchair")),l=[];for(let{selection:o,seat:a}of e){let p=K(t,a,o.tierId),g=p.kind==="resolved"?p.tier:void 0;(a.accessibility?.includes("companion")||g?.restriction==="companion")&&!c.some(s=>s.id!==a.id&&G(a,s))&&l.push(a.label)}return l.length?{code:"companion_pair_required",labels:l,message:"Select the adjacent wheelchair place with each companion ticket."}:null}function X(t,n){if(!n.length)return null;let i=new Map(v(t,{resolveEyeHeights:!1}).map(o=>[o.label,o])),e=new Set(t.categories.filter(o=>o.notForSale).map(o=>o.key)),c=[],l=[];for(let o of n){let a=i.get(o.label);if(!a)continue;if(e.has(a.categoryKey)){c.push(a.label);continue}K(t,a,o.tierId).kind==="invalid"&&l.push(a.label)}return c.length?{code:"not_for_sale",labels:c,message:"These seats are not for sale."}:l.length?D(l):U(t,n)}var S=class extends Error{constructor(i,e){super(e);this.objectId=i;this.name="GroupedTableProjectionError"}};function V(t){let n=t.minOccupancy,i=t.maxOccupancy;if(!Number.isInteger(n)||!Number.isInteger(i)||n<1||i<n||i>t.seatCount)throw new S(t.id,`Table "${t.label}" has invalid variable-occupancy bounds`);return{min:n,max:i}}function te(t,n){if(n!==2)return[];let i=[];for(let e of A(t)){if(e.type!=="table"||!e.bookAsWhole&&!e.variableOccupancy)continue;if(e.bookAsWhole&&e.variableOccupancy)throw new S(e.id,`Table "${e.label}" cannot be whole-table and variable-occupancy inventory`);if(!Number.isInteger(e.seatCount)||e.seatCount<1||!e.label.trim())throw new S(e.id,"Grouped tables require a label and at least one chair");let c=e.variableOccupancy?"variable":"whole",l=c==="variable"?V(e):{min:e.seatCount,max:e.seatCount};i.push({objectId:e.id,label:e.label,...e.displayLabel?{displayLabel:e.displayLabel}:{},...e.displayType?{displayType:e.displayType}:{},categoryKey:e.categoryKey,mode:c,capacity:e.seatCount,minOccupancy:l.min,maxOccupancy:l.max,chairs:_(e)})}return i}export{H as a,q as b,$ as c,D as d,P as e,Q as f,K as g,U as h,X as i,S as j,te as k};
1
+ import{Ba as A,Ia as v,sa as _}from"./chunk-I6DNJFRF.js";function x(t){let n=Number(t.slice(t.lastIndexOf(":")+1));return Number.isFinite(n)?n:-1}function H(t,n,i){let e=new Map;for(let o of t){if(o.kind==="booth")continue;let a=e.get(o.rowId);a?a.push(o):e.set(o.rowId,[o])}let c=o=>i.has(o.id)||n(o.id)!=="free",l=[];for(let o of e.values())if(!(o.length<3)){o.sort((a,p)=>x(a.id)-x(p.id));for(let a=1;a<o.length-1;a++){let p=o[a];if(c(p))continue;let g=o[a-1],d=o[a+1];x(p.id)-x(g.id)!==1||x(d.id)-x(p.id)!==1||!c(g)||!c(d)||!i.has(g.id)&&!i.has(d.id)||l.push(p)}}return l}function C(t,n){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let i=t.id.lastIndexOf(":");if(i<0)return n;let e=Number(t.id.slice(i+1));return Number.isFinite(e)?e:n}function T(t,n){let i=t.x-n.x,e=t.y-n.y;return i*i+e*e}function N(t){let n=0,i=0;for(let e of t)n+=e.x,i+=e.y;return{x:n/t.length,y:i/t.length}}function M(t,n){return t.find(i=>i.focalPoint)?.focalPoint??n}function E(t){return t.commercial?.premium===!0}function q(t,n,i){let e=Math.floor(i.qty);if(!Number.isFinite(e)||e<=0)return{labels:[],reason:"sold_out"};let{categoryKey:c,zoneId:l,focal:o,preferPremium:a}=i,p=new Map,g=[];if(t.forEach((r,b)=>{let m=n.has(r.label)&&(!c||r.categoryKey===c)&&(!l||r.zoneId===l),f=r.logicalRowId??r.rowId,u=p.get(f);u||(u=[],p.set(f,u)),u.push({seat:r,index:C(r,b),elig:m}),m&&g.push(r)}),g.length===0)return{labels:[],reason:"sold_out"};let d=null,s=r=>{if(!d)return!0;if(a&&r.nonPremium!==d.nonPremium)return r.nonPremium<d.nonPremium;if(r.orphan!==d.orphan)return r.orphan<d.orphan;if(r.d2!==d.d2)return r.d2<d.d2;let b=r.rowId.localeCompare(d.rowId);return b!==0?b<0:r.startIndex<d.startIndex};for(let[r,b]of p){let m=[...b].sort((u,k)=>u.index-k.index),f=0;for(;f<m.length;){if(!m[f].elig){f++;continue}let u=f;for(;u<m.length&&m[u].elig&&(u===f||m[u].index===m[u-1].index+1);)u++;let k=u-f;for(let y=0;y+e<=k;y++){let B=y,j=k-(y+e),F=B===1||j===1?1:0,h=m.slice(f+y,f+y+e).map(I=>I.seat),O={labels:h.map(I=>I.label),seats:h,rowId:r,startIndex:m[f+y].index,orphan:F,nonPremium:a?h.reduce((I,L)=>I+(E(L)?0:1),0):0,d2:T(N(h),M(h,o))};s(O)&&(d=O)}f=u}}return d?{labels:d.labels}:g.length<e?{labels:[],reason:"not_enough_together"}:{labels:g.map((r,b)=>({seat:r,i:b,d2:T(r,r.focalPoint??o)})).sort((r,b)=>{if(a){let f=E(r.seat)?0:1,u=E(b.seat)?0:1;if(f!==u)return f-u}if(r.d2!==b.d2)return r.d2-b.d2;let m=(r.seat.logicalRowId??r.seat.rowId).localeCompare(b.seat.logicalRowId??b.seat.rowId);return m!==0?m:C(r.seat,r.i)-C(b.seat,b.i)}).slice(0,e).map(r=>r.seat.label)}}function $(t,n,i,e){let c=Math.floor(e.qty),l=q(t,i,e),a=n.filter(s=>s.bookingMode==="whole"&&s.capacity===c&&i.has(s.label)&&(!e.categoryKey||s.categoryKey===e.categoryKey)&&(!e.zoneId||s.zoneId===e.zoneId)).map(s=>({table:s,d2:T(s.center,s.focalPoint??e.focal)})).sort((s,w)=>s.d2-w.d2||s.table.label.localeCompare(w.table.label))[0];if(!a)return l;if(!l.labels.length)return{labels:[a.table.label]};let p=new Map(t.map(s=>[s.label,s])),g=l.labels.map(s=>p.get(s)).filter(s=>!!s),d=g.length?T(N(g),M(g,e.focal)):Number.POSITIVE_INFINITY;return a.d2<d?{labels:[a.table.label]}:l}function D(t){return{code:"ticket_option_not_applicable",labels:t,message:"That ticket choice is not available for the selected seat."}}function P(t,n){let i=t.applicability;return i?!(i.seatLabels?.length&&!i.seatLabels.includes(n.label)||i.accessibility?.length&&!i.accessibility.some(e=>n.accessibility?.includes(e))):!0}function Q(t,n){return(t.categories.find(i=>i.key===n.categoryKey)?.tiers??[]).filter(i=>P(i,n))}function K(t,n,i){let e=t.categories.find(l=>l.key===n.categoryKey)?.tiers;if(!e?.length)return{kind:"none"};let c=i==null?e.find(l=>P(l,n)):e.find(l=>l.id===i&&P(l,n));return c?{kind:"resolved",tier:c}:{kind:"invalid"}}function z(t,n){return(t.logicalRowId??t.rowId)===(n.logicalRowId??n.rowId)}function R(t){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let n=t.id.slice(t.id.lastIndexOf(":")+1),i=Number(n);return Number.isInteger(i)?i:void 0}function G(t,n){if(!z(t,n))return!1;let i=R(t),e=R(n);return i!=null&&e!=null&&Math.abs(i-e)===1}function U(t,n){if(!n.length)return null;let i=new Map(v(t,{resolveEyeHeights:!1}).map(o=>[o.label,o])),e=n.flatMap(o=>{let a=i.get(o.label);return a?[{selection:o,seat:a}]:[]}),c=e.map(({seat:o})=>o).filter(o=>o.accessibility?.includes("wheelchair")),l=[];for(let{selection:o,seat:a}of e){let p=K(t,a,o.tierId),g=p.kind==="resolved"?p.tier:void 0;(a.accessibility?.includes("companion")||g?.restriction==="companion")&&!c.some(s=>s.id!==a.id&&G(a,s))&&l.push(a.label)}return l.length?{code:"companion_pair_required",labels:l,message:"Select the adjacent wheelchair place with each companion ticket."}:null}function X(t,n){if(!n.length)return null;let i=new Map(v(t,{resolveEyeHeights:!1}).map(o=>[o.label,o])),e=new Set(t.categories.filter(o=>o.notForSale).map(o=>o.key)),c=[],l=[];for(let o of n){let a=i.get(o.label);if(!a)continue;if(e.has(a.categoryKey)){c.push(a.label);continue}K(t,a,o.tierId).kind==="invalid"&&l.push(a.label)}return c.length?{code:"not_for_sale",labels:c,message:"These seats are not for sale."}:l.length?D(l):U(t,n)}var S=class extends Error{constructor(i,e){super(e);this.objectId=i;this.name="GroupedTableProjectionError"}};function V(t){let n=t.minOccupancy,i=t.maxOccupancy;if(!Number.isInteger(n)||!Number.isInteger(i)||n<1||i<n||i>t.seatCount)throw new S(t.id,`Table "${t.label}" has invalid variable-occupancy bounds`);return{min:n,max:i}}function te(t,n){if(n!==2)return[];let i=[];for(let e of A(t)){if(e.type!=="table"||!e.bookAsWhole&&!e.variableOccupancy)continue;if(e.bookAsWhole&&e.variableOccupancy)throw new S(e.id,`Table "${e.label}" cannot be whole-table and variable-occupancy inventory`);if(!Number.isInteger(e.seatCount)||e.seatCount<1||!e.label.trim())throw new S(e.id,"Grouped tables require a label and at least one chair");let c=e.variableOccupancy?"variable":"whole",l=c==="variable"?V(e):{min:e.seatCount,max:e.seatCount};i.push({objectId:e.id,label:e.label,...e.displayLabel?{displayLabel:e.displayLabel}:{},...e.displayType?{displayType:e.displayType}:{},categoryKey:e.categoryKey,mode:c,capacity:e.seatCount,minOccupancy:l.min,maxOccupancy:l.max,chairs:_(e)})}return i}export{H as a,q as b,$ as c,D as d,P as e,Q as f,K as g,U as h,X as i,S as j,te as k};
@@ -0,0 +1 @@
1
+ import{a as o,b as s}from"./chunk-CRCGO52K.js";function c(e){return e==="exact-seat"?"Exact seat in the model":e==="row-representative"?"Representative row evidence":e==="section-representative"?"Representative section evidence":e==="floor-representative"?"Representative floor evidence":"Representative venue evidence"}function u(e){if(!e)return"No assessment date supplied";let t=new Date(e);return Number.isFinite(t.getTime())?`Assessed ${t.toISOString().slice(0,10)}`:"No assessment date supplied"}function f(){return{headline:"Generated view \xB7 unverified",model:"No geometry or event-configuration verification supplied",reality:"No real-world check supplied",coverage:"Selected chart seat",provenance:"Chart-derived model",freshness:"No current organizer-approved evidence matches this Event, venue revision, or renewal window",limitations:["Generated view is not surveyed sightline truth."]}}function m(e){let t=u(e.assessedAt);if(!e.validUntil)return t;let r=Date.parse(e.validUntil);return Number.isFinite(r)?`${t} \xB7 valid until ${e.validUntil.slice(0,10)}`:t}function v(e,t={}){if(!e||!s(e)||!o(e,t.now))return f();let r=e.evidenceKind==="synthetic-model",a=e.modelLevel==="configuration-verified"?"Event configuration verified":e.modelLevel==="geometry-verified"?"Venue geometry verified":r?"Versioned synthetic model":"Generated model \xB7 not verified",d=e.realityLevel==="actual-build-checked"?"Actual event build reality checked":e.realityLevel==="comparable-build-reference"?"Comparable-build reference only":"No real-world check supplied",l=r?"Synthetic model evidence":e.modelLevel==="configuration-verified"?"Configuration verified":e.modelLevel==="geometry-verified"?"Geometry verified":"Generated view \xB7 unverified",n=[...e.limitations??[],...r?["Synthetic demo; not surveyed or venue-certified."]:[]],i=e.modeledTarget?`${e.modeledTarget.label} \xB7 ${e.modeledTarget.clearRayCount}/${e.modeledTarget.totalRayCount} target rays clear \xB7 ${e.modeledTarget.classification} in bounded model \xB7 ${e.modeledTarget.methodLabel}`+(e.modeledTarget.occluderLabels?.length?` \xB7 modeled occluders: ${e.modeledTarget.occluderLabels.join(", ")}`:""):void 0;return i&&n.push("Modeled target is not a percentage of the show visible."),{headline:l,model:a,reality:d,coverage:c(e.coverage),provenance:e.sourceLabel??e.approvedByRole??"Source not supplied",freshness:m(e),limitations:n,...i?{modeledTarget:i}:{}}}export{v as a};