1import{K as h}from"./Ch8vUYCL.js";import{G as Te,z as Xe,$ as Re,w as Oe,N as Ye,p as Fe,as as R,ak as O,al as w,I as y,ax as M,ao as ie,r as c,e as Ee}from"./BvE5RiGp.js";const ze={class:"modal-content"},Ne={class:"modal-header"},Be=["aria-label"],Le={key:0,class:"modal-title"},Ae={key:0,class:"modal-footer"},Ie=["disabled"],qe={key:1,class:"modal-footer"},We={key:2,class:"modal-footer"},Je=Te({__name:"SeatMap",props:{seatMap:{type:Object,required:!0},show:{type:Object,required:!1},selectedSeats:{type:Object,required:!0},readOnly:{type:Boolean,required:!1,default:!1},theme:{type:String,required:!1,default:"light"},locked:{type:Boolean,required:!1,default:!1}},emits:["seatSelected","seatDeselected","closeModal","confirmSelection"],setup(ue,{emit:re}){const{$translate:D}=Xe(),N=re,ce=ue,{seatMap:V,show:Y,selectedSeats:q,readOnly:$,theme:W,locked:de}=Re(ce),H=c(),j=c(),J=c(),Z=c(),t=c(),d=c(),p=c(),g=c(),P=c(1),v=c(1),m=c(),ve=c("{}"),G=c(),s=c(),B=c(!1),x=c(),F=c(0),L=c(!1),Q=c(),fe=()=>{t.value&&(v.value===1?(t.value.position({x:0,y:0}),ne(),t.value.position({x:(t.value.width()-s.value.canvas.w*v.value)/2,y:(t.value.height()-s.value.canvas.h*v.value)/2})):(t.value.position({x:(t.value.width()-s.value.canvas.w)/2,y:(t.value.height()-s.value.canvas.h)/2}),v.value=1,t.value.scaleX(v.value),t.value.scaleY(v.value)),ee(),p.value.draw(),g.value.draw())},ee=()=>{if(d.value)for(let e=0;e<d.value?.length;e++)d.value[e].draw()},te=()=>{if(d.value)for(let e=0;e<d.value?.length;e++)d.value[e].batchDraw()},he=()=>{s.value=JSON.parse(V.value.data),G.value=JSON.parse(V.value.reservedSeats)||[];let e=J.value,n=H.value,l=j.value;if(!e||!n||!l)return;let a=e.clientWidth,u=n.clientHeight-l.clientHeight-60,b=a/s.value.canvas.w,E=u/s.value.canvas.h;v.value=P.value=Math.min(b,E),h.pixelRatio=1,t.value=new h.Stage({container:e,width:a,height:u,scaleX:v.value,scaleY:v.value,draggable:!oe.value}),t.value.position({x:(t.value.width()-s.value.canvas.w*v.value)/2,y:(t.value.height()-s.value.canvas.h*v.value)/2});let o=!1;for(let r=0;r<s.value.seats.length;r++){let f=s.value.seats[r],S;d.value?.[0]?(S=d.value[0],o=!1):(o=!0,S=new h.Layer({x:s.value.canvas.w/2,y:s.value.canvas.h/2,offsetX:s.value.canvas.w/2,offsetY:s.value.canvas.h/2}),S.seatY=f.y),m.value||(m.value={}),m.value[f.seat]=we(f,S),o&&(d.value||(d.value=[]),d.value[0]=S,t.value.add(S))}p.value=new h.Layer({x:s.value.canvas.w/2,y:s.value.canvas.h/2,offsetX:s.value.canvas.w/2,offsetY:s.value.canvas.h/2,listening:!1}),t.value.add(p.value);for(let r=0;r<s.value.shapes.length;r++){let f=s.value.shapes[r];pe(f,p.value)}const i=s.value.labels;if(Array.isArray(i))for(let r=0;r<i.length;r++)xe(i[r],p.value);g.value=new h.Layer({x:s.value.canvas.w/2,y:s.value.canvas.h/2,offsetX:s.value.canvas.w/2,offsetY:s.value.canvas.h/2}),t.value.add(g.value),ee(),p.value.draw(),g.value.draw(),t.value.on("touchstart",r=>{Q.value=Date.now()}),t.value.on("touchmove",r=>{if(!t.value)return;L.value=!0,r.evt.preventDefault();let f=r.evt.touches[0],S=r.evt.touches[1];if(f&&S){t.value.isDragging()&&t.value.stopDrag();let T={x:f.clientX,y:f.clientY},k={x:S.clientX,y:S.clientY};if(!x.value){x.value=ae(T,k);return}let C=ae(T,k),X=ye(T,k);F.value||(F.value=X);let z={x:(C.x-t.value.x())/t.value.scaleX(),y:(C.y-t.value.y())/t.value.scaleX()},_=t.value.scaleX()*(X/F.value);t.value.scaleX(_),t.value.scaleY(_);let K=C.x-x.value.x,_e=C.y-x.value.y,Me={x:C.x-z.x*_+K,y:C.y-z.y*_+_e};t.value.position(Me),F.value=X,x.value=C,v.value=_}else if(f){t.value.isDragging()&&t.value.stopDrag();let T={x:f.clientX,y:f.clientY};if(!x.value){x.value=T;return}let k=T,C={x:(k.x-t.value.x())/t.value.scaleX(),y:(k.y-t.value.y())/t.value.scaleX()},X=t.value.scaleX(),z=k.x-x.value.x,_=k.y-x.value.y,K={x:k.x-C.x*X+z,y:k.y-C.y*X+_};Math.abs(z)>.5&&Math.abs(_)>.5&&t.value.position(K),x.value=T}}),t.value.on("touchend",r=>{const f=Date.now();F.value=0,x.value=null,f-Q.value<300?L.value=!1:setTimeout(()=>{L.value=!1},100)}),window.onresize=()=>{ne(),t.value&&t.value.position({x:(t.value.width()-s.value.canvas.w*v.value)/2,y:(t.value.height()-s.value.canvas.h*v.value)/2}),te(),p.value.draw(),g.value.draw()}},ye=(e,n)=>Math.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2)),ae=(e,n)=>({x:(e.x+n.x)/2,y:(e.y+n.y)/2}),le=e=>{switch(W.value){case"dark":switch(e.bg){case"blue":return"#B3C3CB";case"purple":return"#D1C8E4";case"yellow":return"#D8DBCC";case"green":return"#C0E0CD";default:return"#999999"}default:switch(e.bg){case"blue":return"#CDEEFE";case"purple":return"#F0CDFE";case"yellow":return"#FEF4CD";case"green":return"#CEFDCF";default:return"white"}}},se=()=>"#22dd44",ge=()=>(W.value==="dark","#cccccc"),A=()=>W.value==="dark"?"#666666":"#999999",we=(e,n)=>{let l=e.w,a=e.h,u=new h.Rect({x:0,y:0,cornerRadius:e.r,width:l,height:a,fill:le(e),stroke:A(),strokeWidth:2,perfectDrawEnabled:!1}),b=new h.Text({x:0,y:3,width:l,height:a,text:e.header,fontSize:10,fontFamily:"Oxygen, sans-serif",align:"center",listening:!1}),E=new h.Text({x:0,y:15,width:l,height:a,text:e.title,fontSize:15,fontFamily:"Oxygen, sans-serif",fontStyle:"bold",align:"center",listening:!1}),o=new h.Group({x:e.x+2+l/2,y:e.y+2+a/2,offsetX:l/2,offsetY:a/2});return o.add(u),o.add(b),o.add(E),n.add(o),q.value&&q.value.indexOf(String(e.seat))!==-1?(u.fill(se()),u.stroke(A())):G.value?.indexOf(e.seat)!==-1&&(u.fill(ge()),o.disabled=!0),$.value&&(o.disabled=!0),o.seatId=e.seat,o.linkedSeats=e.linkedSeats,o.bg=e.bg,o.on("click",(i=>()=>{i.disabled||(U(i),i.draw())})(o)),o.on("mouseover",(i=>()=>{i.disabled||(i.moveTo(g.value),i.scale({x:1.05,y:1.05}),g.value.draw())})(o)),o.on("mouseout",(i=>()=>{!i.disabled&&d.value&&(i.moveTo(d.value[0]),i.scale({x:1,y:1}),i.draw(),g.value.draw())})(o)),o.on("tap",(i=>()=>{!i.disabled&&!L.value&&(U(i),i.draw())}
1)(o)),o.getChildren().forEach(i=>{if(i.nodeType==="Shape"){let r=i;r.hitStrokeWidth(0),r.shadowForStrokeEnabled(!1)}}),o},pe=(e,n)=>{switch(e.type){case"rect":case"rrect":return be(e,n);case"line":return me(e,n)}},me=(e,n)=>{if(!Array.isArray(e.points)||e.points.length<4)return;const l=new h.Line({points:e.points,stroke:e.stroke||"#334155",strokeWidth:e.strokeWidth??6,lineCap:e.lineCap||"round",lineJoin:e.lineJoin||"round",listening:!1});return n.add(l),l},xe=(e,n)=>{const l=new h.Text({x:e.x,y:e.y,text:e.text||"",fontSize:e.fontSize??16,fontFamily:e.fontFamily||"Segoe UI",fill:e.fill||"#0284c7",align:"left",verticalAlign:"top",listening:!1});return n.add(l),l},be=(e,n)=>{let l=new h.Rect({x:0,y:0,cornerRadius:e.type==="rect"?0:e.r??0,width:e.w??0,height:e.h??0,fill:e.fill,stroke:e.border?e.border:void 0,strokeWidth:e.border?2:0}),a="";e.text?a=e.text:(!e.subtype||e.subtype==="screen")&&(a=D("Screen").toUpperCase());let u=new h.Text({x:0,y:0,width:e.w??0,height:e.h??0,text:a,verticalAlign:"middle",letterSpacing:1,fontSize:10,fontStyle:"bold",fontFamily:"Oxygen, sans-serif",align:"center",listening:!1}),b=new h.Group({x:e.x??0,y:e.y??0,offsetX:0,offsetY:0});return b.add(l),b.add(u),n.add(b),b},ne=()=>{let e=J.value;if(e){let n=H.value,l=j.value,a=Z.value;if(!n||!l||!a||!t.value)return;let u=e.clientWidth,b=n.clientHeight-l.clientHeight+(a.clientHeight-30)-60,E=u/s.value.canvas.w,o=b/s.value.canvas.h;v.value=P.value=Math.min(E,o),t.value.width(u),t.value.height(b),t.value.scaleX(v.value),t.value.scaleY(v.value)}},U=(e,n)=>{let l=e.getChildren(a=>a.getClassName()==="Rect");if(l)for(let a=0;a<l.length;a++)if(e.selected){if(e.selected=!1,l[a].nodeType==="Shape"){const u=l[a];u.fill(le(e)),u.stroke(A())}N("seatDeselected",e.seatId)}else{if(e.selected=!0,l[a].nodeType==="Shape"){const u=l[a];u.fill(se()),u.stroke(A())}N("seatSelected",e.seatId)}if(e.scale({x:1,y:1}),e.draw(),!n&&e.linkedSeats)for(let a=0;a<e.linkedSeats.length;a++){const u=m.value?.[e.linkedSeats[a]];u&&U(u,!0)}},Se=()=>{B.value=!0;for(let e in m.value)if(Object.prototype.hasOwnProperty.call(m.value,e)){let l=m.value[e].getChildren(a=>a.getClassName()==="Text");if(l)for(let a=0;a<l.length;a++)l[a].opacity(0)}},ke=()=>{B.value=!1;for(let e in m.value)if(Object.prototype.hasOwnProperty.call(m.value,e)){let l=m.value[e].getChildren(a=>a.getClassName()==="Text");if(l)for(let a=0;a<l.length;a++)l[a].opacity(1)}},Ce=()=>{if(d.value)for(let e=0;e<d.value?.length;e++)d.value[e].setSize({width:0,height:0}),d.value[e].destroy();p.value&&(p.value.setSize(0,0),p.value.destroy()),g.value&&(g.value.setSize(0,0),g.value.destroy()),t.value&&(t.value.destroy(),t.value=void 0),d.value=[],p.value=null,g.value=null,m.value={},ve.value="{}",G.value=[],s.value=null},I=()=>{N("closeModal")},De=()=>{Y&&Y.value&&N("confirmSelection",Y.value)},oe=Ee(()=>"ontouchstart"in window||navigator.maxTouchPoints>0);return Oe(v,(e,n)=>{if(e===n)return;!oe.value&&t.value&&(e===1?t.value.draggable(!0):t.value.draggable(!1));let l=.5;if(e<=l&&!B.value)Se();else if(e>l&&B.value)ke();else return;te(),p.value.draw(),g.value.draw()}),Ye(()=>{he()}),Fe(()=>{Ce(),window.onresize=null}),(e,n)=>(R(),O("div",{class:"modal fade in show seatmap-modal",tabindex:"-1",role:"dialog",id:"seatMapModal",ref_key:"modalRef",ref:H},[w("div",{class:"modal-dialog modal-lg",role:"document",id:"seatMapModalDialog",style:{width:"98%"},ref_key:"dialogRef",ref:j},[w("div",ze,[w("div",Ne,[w("button",{type:"button",class:"close","data-dismiss":"modal","aria-label":y(D)("Close"),onClick:I},[...n[0]||(n[0]=[w("span",{"aria-hidden":"true"},"Ã",-1)])],8,Be),y(Y)?(R(),O("h4",Le,M(y(Y).resource.name),1)):ie("",!0)]),w("div",{class:"modal-body",id:"seatMapModalBody",ref_key:"bodyRef",ref:Z},[w("div",{id:"seatMap",style:{width:"100%",height:"100%"},ref_key:"mapRef",ref:J},null,512)],512),y($)?y(de)?(R(),O("div",We,[w("span",null,M(y(D)("The reservation is for the highlighted seats."))+"Â Â ",1),w("button",{type:"button",class:"btn btn-success","data-dismiss":"modal",onClick:I},M(y(D)("Close")),1)])):(R(),O("div",qe,[w("span",null,M(y(D)("The reservation is for the highlighted seats. If you want to switch seats, delete this reservation and make a new one."))+"Â Â ",1),w("button",{type:"button",class:"btn btn-success","data-dismiss":"modal",onClick:I},M(y(D)("Close")),1)])):(R(),O("div",Ae,[y(P)<1?(R(),O("button",{key:0,t
1ype:"button",class:"btn btn-default","data-dismiss":"modal",onClick:fe},M(y(D)("Zoom")),1)):ie("",!0),w("button",{type:"button",class:"btn btn-default","data-dismiss":"modal",onClick:I},M(y(D)("Cancel")),1),w("button",{type:"button",class:"btn btn-success","data-dismiss":"modal",onClick:De,disabled:y(q).length<1?!0:void 0},M(y(D)("Select")),9,Ie)]))])],512)],512))}});export{Je as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.