| 12 |
- import{B as Ze,m as qe,d as Kt,s as Qt}from"./quisk-5962c204.js";import{r as xe,d as Be,I as gt,aG as ut,f as he,o as ie,h as Ie,k as j,l as K,p as Ce,i as U,t as me,u as H,V as Pe,_ as Ye,aW as ft,a as Ee,a0 as we,q as es,K as Ke,L as Qe,a4 as ts,z as Le,R as ze,ah as ss,aX as fe,c as xt,n as Me,E as is,N as Re,aI as ns}from"./index-32c39055.js";import{e as Ue,h as ls,k as os,q as rs,r as as}from"./case-de2e9213.js";import{m as Ge}from"./mitt-f7ef348c.js";import{B as Oe,b as cs}from"./scrollbar-5051cfce.js";import{u as et}from"./upload-8c2ee168.js";import{i as It}from"./pagging-ff0d698d.js";import{s as hs}from"./file-serve-dfea9462.js";import"./REG-6dcdd243.js";import"./scene-3c8ec63c.js";import"./index-343523a6.js";import"./pagging-58a38392.js";import"./sys-e4ad01b3.js";const Je=xe(!1),ds={class:"header-top"},gs={class:"right-pano"},us={class:"actions"},fs=Be({__name:"header",props:{type:{},forwardDisabled:{type:Boolean},backDisabled:{type:Boolean}},emits:["backPage","forward","back","viewInit","save","export"],setup(C,{emit:e}){const t=C,s=e,i=n=>{if(n.keyCode===32)s("viewInit");else if(["Control","Ctrl"].includes(n.key)){const l=n.key,o=a=>{Je.value||(a.key.toUpperCase()==="Y"&&!t.forwardDisabled?s("forward"):a.key.toUpperCase()==="Z"&&!t.backDisabled&&s("back"))};window.addEventListener("keydown",o),window.addEventListener("keyup",function a(h){h.key===l&&(window.removeEventListener("keydown",o),window.removeEventListener("keyup",a))})}};return gt(()=>window.addEventListener("keydown",i)),ut(()=>window.removeEventListener("keydown",i)),(n,l)=>{const o=he("el-button"),a=he("el-input"),h=he("el-form-item"),f=he("el-form"),d=he("el-popover");return ie(),Ie("div",ds,[j(o,{type:"primary",plain:"",onClick:l[0]||(l[0]=m=>s("backPage"))},{default:K(()=>l[5]||(l[5]=[Ce("返 回")])),_:1}),U("h2",null,"创建"+me(H(Ze)[n.type]),1),U("div",gs,[U("div",us,[U("i",{class:Pe(["iconfont icon-repeal",{disable:n.backDisabled}]),onClick:l[1]||(l[1]=m=>s("back"))},null,2),U("i",{class:Pe(["iconfont icon-recover",{disable:n.forwardDisabled}]),onClick:l[2]||(l[2]=m=>s("forward"))},null,2),j(d,{placement:"bottom-start",trigger:"hover",width:"300"},{reference:K(()=>l[6]||(l[6]=[U("i",{class:"iconfont icon-keyboard"},null,-1)])),default:K(()=>[l[7]||(l[7]=U("h4",{class:"quistart-title"},"快捷键",-1)),j(f,{ref:"form","label-width":"70px",class:"quistart"},{default:K(()=>[j(h,{label:"撤销"},{default:K(()=>[j(a,{"model-value":"Ctrl + Z",disabled:""})]),_:1}),j(h,{label:"重做"},{default:K(()=>[j(a,{"model-value":"Ctrl + Y",disabled:""})]),_:1}),j(h,{label:"删除"},{default:K(()=>[j(a,{"model-value":"Backspace、Delete",disabled:""})]),_:1}),j(h,{label:"中心定位"},{default:K(()=>[j(a,{"model-value":"Space",disabled:""})]),_:1})]),_:1},512)]),_:1})]),j(o,{type:"primary",plain:"",onClick:l[3]||(l[3]=m=>s("save"))},{default:K(()=>l[8]||(l[8]=[Ce("保存")])),_:1}),j(o,{plain:"",onClick:l[4]||(l[4]=m=>s("export"))},{default:K(()=>l[9]||(l[9]=[Ce("导出")])),_:1})])])}}});const xs=Ye(fs,[["__scopeId","data-v-486016e2"]]),mt=""+new URL("brokenLine-464fc074.svg",import.meta.url).href,yt=""+new URL("text-18e991cc.svg",import.meta.url).href,pt=""+new URL("table-41f5a21a.svg",import.meta.url).href,vt=""+new URL("rect-41472d0b.svg",import.meta.url).href,St=""+new URL("circular-53d25cf1.svg",import.meta.url).href,bt=""+new URL("arrow-b9bc92aa.svg",import.meta.url).href,Pt=""+new URL("icon-24de762a.svg",import.meta.url).href,wt=""+new URL("cigarette-142a7424.svg",import.meta.url).href,Ct=""+new URL("fireoint-803ee40c.svg",import.meta.url).href,Tt=""+new URL("footPrint-e9b9fc99.svg",import.meta.url).href,kt=""+new URL("footPrintRever-b0583b3d.svg",import.meta.url).href,Ft=""+new URL("shoePrint-6994a488.svg",import.meta.url).href,At=""+new URL("shoePrintRever-892e0cf9.svg",import.meta.url).href,Wt=""+new URL("fingerPrint-978090e6.svg",import.meta.url).href,Dt=""+new URL("corpse-a0672cb9.svg",import.meta.url).href,Lt=""+new URL("theBlood-a6df326b.svg",import.meta.url).href,Is=""+new URL("compass-df5c6ebb.svg",import.meta.url).href,zt="Wall",Rt="Tag",Ne="Table",Mt="Rectangle",Ot="Circle",Nt="Arrow",_t="Icon",Vt="Cigaret",Bt="FirePoint",Yt="LeftFootPrint",Xt="RightFootPrint",Et="LeftShoePrint",Ut="RightShoePrint",Jt="FingerPrint",jt="DeadBody",Zt="BloodStain",He="Title",tt="BgImage",Gt="Compass",_e="CustomImage",ms=[zt,Rt,Ne,Mt,Ot,Nt,_t],Ht=[Vt,Bt,Yt,Xt,Et,Ut,Jt,jt,Zt],je={[zt]:{desc:"折线",icon:mt},[Rt]:{desc:"文本",icon:yt},[Ne]:{desc:"表格",icon:pt},[Mt]:{desc:"矩形",icon:vt},[Ot]:{desc:"圆形",icon:St},[Nt]:{desc:"箭头",icon:bt},[_t]:{desc:"图标",icon:Pt},[Vt]:{desc:"烟头",icon:wt},[Bt]:{desc:"起火点",icon:Ct},[Yt]:{desc:"脚印",icon:Tt},[Xt]:{desc:"脚印",icon:kt},[Et]:{desc:"鞋印",icon:Ft},[Ut]:{desc:"鞋印",icon:At},[Jt]:{desc:"指纹",icon:Wt},[jt]:{desc:"尸体",icon:Dt},[Zt]:{desc:"血迹",icon:Lt}};je[Gt]={desc:"指南针",icon:Is};const u={Point:"Point",WallCorner:"WallCorner",Wall:"Wall",Tag:"Tag",Table:"Table",Cell:"Cell",Rectangle:"Rectangle",Circle:"Circle",Arrow:"Arrow",CustomImage:"CustomImage",Icon:"Icon",Cigaret:"Cigaret",FirePoint:"FirePoint",LeftFootPrint:"LeftFootPrint",RightFootPrint:"RightFootPrint",LeftShoePrint:"LeftShoePrint",RightShoePrint:"RightShoePrint",FingerPrint:"FingerPrint",DeadBody:"DeadBody",BloodStain:"BloodStain",Title:"Title",BgImage:"BgImage",Compass:"Compass"},y={minPixLen:3,minScreenDis:2,minRealDis:.01,minAdsorb:.05,minAngle:5,maxAngle:175,minMovePix:4,defaultZoom:100,ratio:3};class ys{constructor(){}getFixed(e,t){return t||(t=5),parseFloat(e.toFixed(t))}getDistance(e,t){const s=e.x,i=e.y,n=t.x,l=t.y,o=Math.sqrt(Math.pow(s-n,2)+Math.pow(i-l,2));return this.getFixed(o)}createLine1(e,t){if(e.x==t.x&&e.y==t.y)return null;if(this.getFixed(Math.abs(e.x-t.x))==0)return{x:e.x};if(this.getFixed(Math.abs(e.y-t.y))==0)return{y:e.y};const s=(e.y-t.y)/(e.x-t.x),i=(e.x*t.y-t.x*e.y)/(e.x-t.x);return this.getFixed(s)==0?{y:this.getFixed(i)}:{a:this.getFixed(s),b:this.getFixed(i)}}createLine2(e,t){if(t==Math.PI/2||t==1.5*Math.PI)return{x:e.x};let s=Math.tan(t),i=e.y-s*e.x;return s!=0?{a:s,b:i}:{y:e.y}}createLine3(e,t){const s={};return typeof e.a>"u"?typeof e.x<"u"?s.x=t.x:typeof e.y<"u"&&(s.y=t.y):(s.a=e.a,s.b=t.y-t.x*e.a),s}create2AngleLine(e,t,s){let i=this.createLine2(e,t-s/2),n=this.createLine2(e,t+s/2);return{line1:i,line2:n}}distanceForPoints(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}getParallelLineForDistance(e,t){let s={};s.a=e.a,s.b=e.b;let i={};if(i.a=e.a,i.b=e.b,typeof e.a>"u"){if(e.hasOwnProperty("x")){let n=e.x;s.x=n+t,i.x=n-t}else if(e.hasOwnProperty("y")){let n=e.y;s.y=n+t,i.y=n-t}}else{let n=Math.atan(e.a),l=Math.abs(t/Math.cos(n)),o=e.b;s.b=o+l,i.b=o-l}return{line1:s,line2:i}}getEndpoint(e,t,s){let n=this.create2AngleLine(e,t,s),l=this.createLine2(e,t);l=this.getLineForPoint(l,e);let o=this.getParallelLineForDistance(l,15),a=this.getIntersectionPoint(n.line1,o.line1),h=this.getIntersectionPoint(n.line1,o.line2),f=this.getIntersectionPoint(n.line2,o.line1),d=this.getIntersectionPoint(n.line2,o.line2),m=this.Angle(e,a,{x:e.x+1,y:e.y}),w=this.Angle(e,h,{x:e.x+1,y:e.y}),T=this.Angle(e,f,{x:e.x+1,y:e.y}),p=this.Angle(e,d,{x:e.x+1,y:e.y});return t>Math.PI&&(t=2*Math.PI-t),Math.abs((m+T)/2-t)<Math.abs((w+p)/2-t)?{p1:a,p2:f}:{p1:h,p2:d}}isClockwise(e){let t=0;for(let i=0;i<e.length;i++){const n=(i+1)%e.length;t+=e[i].x*e[n].y,t-=e[n].x*e[i].y}return t/2>0}reverse(e){const t=[];for(let s=e.length-1;s>-1;--s)t.push(e[s]);return t}getIntersectionPoint(e,t){if(this.isParallel(e,t))return null;if(typeof e.a>"u"&&typeof t.a<"u"){if(e.x)return{x:e.x,y:t.a*e.x+t.b};if(e.y)return{x:(e.y-t.b)/t.a,y:e.y}}else if(typeof t.a>"u"&&typeof e.a<"u"){if(t.x)return{x:t.x,y:e.a*t.x+e.b};if(t.y)return{x:(t.y-e.b)/e.a,y:t.y}}else if(typeof t.a>"u"&&typeof e.a>"u")return e.hasOwnProperty("x")&&t.hasOwnProperty("y")?{x:e.x,y:t.y}:e.hasOwnProperty("y")&&t.hasOwnProperty("x")?{x:t.x,y:e.y}:null;if(e.a==t.a)return null;let s=(t.b-e.b)/(e.a-t.a),i=(e.a*t.b-t.a*e.b)/(e.a-t.a);return{x:s,y:i}}getIntersectionPoint2(e,t,s,i){const n=(t.y-e.y)*(i.x-s.x)-(e.x-t.x)*(s.y-i.y);if(n==0)return null;const l=((t.x-e.x)*(i.x-s.x)*(s.y-e.y)+(t.y-e.y)*(i.x-s.x)*e.x-(i.y-s.y)*(t.x-e.x)*s.x)/n,o=-((t.y-e.y)*(i.y-s.y)*(s.x-e.x)+(t.x-e.x)*(i.y-s.y)*e.y-(i.x-s.x)*(t.y-e.y)*s.y)/n;return{x:l,y:o}}getIntersectionPoint3(e,t,s,i){const n=this.getIntersectionPoint2(e,t,s,i);if(n){const l=n.x,o=n.y;return(l-e.x)*(l-t.x)<=.001&&(o-e.y)*(o-t.y)<=.001&&(l-s.x)*(l-i.x)<=.001&&(o-s.y)*(o-i.y)<=.001?{x:l,y:o}:null}return null}getIntersectionPoint4(e,t,s){const i=this.createLine1(e,t),n=this.getIntersectionPoint(i,s);return n==null?null:this.PointInSegment(n,e,t)?n:null}isParallel(e,t){return typeof e.a>"u"&&typeof t.a>"u"?e.hasOwnProperty("x")&&t.hasOwnProperty("x")?!0:!!(e.hasOwnProperty("y")&&t.hasOwnProperty("y")):typeof e.a>"u"||typeof t.a>"u"?!1:this.getFixed(e.a)==this.getFixed(t.a)}Angle(e,t,s){let i=0,n=0,l=0,o=t.x-e.x,a=t.y-e.y,h=s.x-e.x,f=s.y-e.y;return i=o*h+a*f,l=(o*o+a*a)*(h*h+f*f),i/=Math.sqrt(l),i>=1?0:i<=-1?Math.PI:(n=Math.acos(i),180*n/Math.PI<180?n:2*Math.PI-n)}getLineForPoint(e,t){let s={};return e.a==0||typeof e.a>"u"?e.hasOwnProperty("x")?(s.y=t.y,s.x=e.x):e.hasOwnProperty("y")&&(s.x=t.x,s.y=e.y):(s.a=-1/e.a,s.b=t.y-t.x*s.a),s}getJoinLinePoint(e,t){const s=this.getVerticalLine(t,e);return this.getIntersectionPoint(t,s)}getDisForPoinLine(e,t){const s=this.getJoinLinePoint(e,t);return this.getDistance(e,s)}getVerticalLine(e,t){if(typeof e.a>"u")return e.hasOwnProperty("x")?{y:t.y}:e.hasOwnProperty("y")?{x:t.x}:null;if(e.a==0)return{x:t.x};{const s={};return s.a=-1/e.a,this.createLine3(s,t)}}isContainForSegment(e,t,s,i){i||(i=y.minRealDis);let n=this.getDistance(t,e)+this.getDistance(s,e),l=this.getDistance(t,s);return Math.abs(n-l)<i}isPointInPoly(e,t){const s=e.x,i=e.y;let n=!1;for(let l=0,o=t.length-1;l<t.length;o=l++){let a=t[l],h=t[o];const f=a.x,d=a.y,m=h.x,w=h.y;d>i!=w>i&&s<(m-f)*(i-d)/(w-d)+f&&(n=!n)}return n}getDisForPoinSegment(e,t,s,i){const n=this.createLine1(t,s),l=this.getJoinLinePoint(e,n),o=this.getDistance(t,s),a=this.getDistance(l,t),h=this.getDistance(l,s);if(this.getDistance(l,t)>o||this.getDistance(l,s)>o)return a<h&&a<i?{type:1,join:t}:h<a&&h<i?{type:2,join:s}:null;if(a<i)return{type:1,join:t};if(h<i)return{type:2,join:s};if(this.getDistance(e,l)<i)return{type:0,join:l}}PointInSegment(e,t,s,i){if(this.getDistance(e,t)<y.minRealDis||this.getDistance(e,s)<y.minRealDis)return!0;i||(i=.1),i=i/2;const n=(e.x-t.x)*(s.y-t.y)-(s.x-t.x)*(e.y-t.y),l=Math.min(t.x,s.x)-e.x,o=e.x-Math.max(t.x,s.x),a=Math.min(t.y,s.y)-e.y,h=e.y-Math.max(t.y,s.y);return Math.abs(n)<i&&(l<=0||Math.abs(l)<i)&&(o<=0||Math.abs(o)<i)&&(a<=0||Math.abs(a)<i)&&(h<=0||Math.abs(h)<i)}clonePoint(e,t){e.x=t.x,e.y=t.y}equalPoint(e,t){return e.x==t.x&&e.y==t.y}crossTwoLines(e,t,s,i,n){typeof n>"u"&&(n=y.minRealDis);const l=this.getIntersectionPoint2(e,t,s,i);if(l!=null){if(this.getDistance(e,l)>n&&this.getDistance(t,l)>n&&this.getDistance(s,l)>n&&this.getDistance(i,l)>n)return this.getDistance(e,l)<this.getDistance(e,t)&&this.getDistance(t,l)<this.getDistance(e,t)&&this.getDistance(s,l)<this.getDistance(s,i)&&this.getDistance(i,l)<this.getDistance(s,i)}else if(this.PointInSegment(e,s,i)||this.PointInSegment(t,s,i))return!0;return!1}getDisPointsLine(e,t,s,i){const n={},l={},o={};if(e.hasOwnProperty("x"))n.x=e.x,n.y=t.y-s,l.x=e.x,l.y=t.y+i;else if(e.hasOwnProperty("y"))n.y=e.y,n.x=t.x-s,l.y=e.y,l.x=t.x+i;else{const a=Math.atan(e.a),h={a:-1/e.a},f=this.createLine3(h,t),d=this.getIntersectionPoint(e,f);n.x=d.x-s*Math.cos(a),n.y=d.y-s*Math.sin(a),l.x=d.x+i*Math.cos(a),l.y=d.y+i*Math.sin(a)}return o.newpoint1=n,o.newpoint2=l,o}getBoundingBox(e){let t=e[0].x,s=e[0].x,i=e[0].y,n=e[0].y;for(let o=1;o<e.length;++o){const a=e[o];t>a.x&&(t=a.x),i>a.y&&(i=a.y),s<a.x&&(s=a.x),n<a.y&&(n=a.y)}const l={};return l.minX=t,l.minY=i,l.maxX=s,l.maxY=n,l}ComputePolygonArea(e){const t=e.length;if(t<3)return 0;let s=e[0].y*(e[t-1].x-e[1].x);for(let i=1;i<t;++i)s+=e[i].y*(e[i-1].x-e[(i+1)%t].x);return Math.abs(s/2)}getPolygonCore(e){function t(h,f,d){let m=0;return m=h.x*f.y+f.x*d.y+d.x*h.y-f.x*h.y-d.x*f.y-h.x*d.y,m/2}let s=0,i=0,n=0,l=e[1];for(let h=2;h<e.length;h++){const f=e[h],d=t(e[0],l,f);n+=d,s+=(e[0].x+l.x+f.x)*d,i+=(e[0].y+l.y+f.y)*d,l=f}const o=s/n/3,a=i/n/3;return{x:o,y:a}}isPolyInPoly(e,t,s){for(let i=0;i<e.length;++i){let n=!1;for(let l=0;l<t.length;++l)if(this.equalPoint(e[i],t[l])){n=!0;break}if(n){const l=i==e.length-1?0:i+1,o={x:(e[i].x+e[l].x)/2,y:(e[i].y+e[l].y)/2};if(!this.isPointInPoly(o,t,s))return!1}else if(!this.isPointInPoly(e[i],t,s))return!1}return!0}dotPoints(e,t,s,i){let n={},l={};return n.start={},n.end={},n.start.x=0,n.start.y=0,n.end.x=t.x-e.x,n.end.y=t.y-e.y,l.start={},l.end={},l.start.x=0,l.start.y=0,l.end.x=i.x-s.x,l.end.y=i.y-s.y,n.end.x*l.end.x+n.end.y*l.end.y}}const g=new ys;class ee{constructor(){this.len=null,this.version=2}setId(e){e==null||typeof e>"u"?(e=r.getCurrentId(),r.updateCurrentId(),this.vectorId=this.geoType+e):this.vectorId=e}setPointParent(e,t){this.parent==null&&(this.parent={}),this.parent[e]=t}rotatePoint(e,t,s){s=-1*s;var i=t.x,n=t.y,l=e.x,o=e.y,a=i+(l-i)*Math.cos(s*Math.PI/180)-(o-n)*Math.sin(s*Math.PI/180),h=n+(l-i)*Math.sin(s*Math.PI/180)+(o-n)*Math.cos(s*Math.PI/180),f={x:a,y:h};return f}}class ps{constructor(){this.center={x:0,y:0},this.zoom=100,this.res=100,this.ratio=1,this.initRes=null,this.initWidth=null,this.initHeight=null}init(e){this.updateForCanvas(e)}setRes(e){this.res=e,y.minRealDis=y.minPixLen/this.res,y.minAdsorb=y.minPixLen/this.res}setCenter(e){this.center={x:e.x,y:e.y}}setRatio(e){this.ratio=e}getScreenXY(e){if(this.width==null||this.height==null)return null;let t={x:e.x,y:e.y},s=this.width/2+(t.x-this.center.x)*this.res*this.zoom/100,i=this.height/2-(t.y-this.center.y)*this.res*this.zoom/100;return s=.5+s<<0,i=.5+i<<0,{x:Math.floor(s)*this.ratio,y:Math.floor(i)*this.ratio}}getXYFromScreen(e){const t={};return t.x=(e.x-this.width/2)/this.res*100/this.zoom+this.center.x,t.y=(this.height/2-e.y)/this.res*100/this.zoom+this.center.y,t}updateForCanvas(e){e&&(this.width=e.clientWidth,this.height=e.clientHeight,e.width=e.clientWidth,e.height=e.clientHeight)}updateZoom(e){this.zoom=e}moveTo(e,t){const s=this.getXYFromScreen(t);this.zoom=e;const i=(t.x*100/this.zoom-this.width/2)/this.res,n=(this.height/2-t.y*100/this.zoom)/this.res;this.center.x=s.x-i,this.center.y=s.y-n}getPixelRatio(e){var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t}reSet(){this.center={x:0,y:0},this.res=100,this.zoom=100}clear(){this.center={x:0,y:0},this.zoom=100,this.res=100,this.ratio=1}clear2(){this.center={x:0,y:0},this.zoom=100,this.res=100,this.ratio=1,this.initRes=null,this.initWidth=null,this.initHeight=null}}const c=new ps,I={Wall:{strokeStyle:"rgba(0,0,0,1)",lineWidth:2,error:{strokeStyle:"rgba(255,0,0,0.5)",fillStyle:"rgba(255,0,0,0.8)"}},Point:{strokeStyle:"rgba(0,128,0, 1)",fillStyle:"rgba(0, 200, 175, 1)",radius:4},Tag:{strokeStyle:"rgba(0,0,0,1)",fillStyle:"rgba(0,0,0,1)",strokeStyle_adding:"rgba(243, 255, 0, 0.8)",fillStyle_adding:"rgba(243, 255, 0, 0.8)",lineWidth:1},Sign:{strokeStyle:"rgba(0,0,0,1)",fillStyle:"rgba(0,0,0,0)",lineWidth:1},Title:{strokeStyle:"rgba(0,0,0,1)",fillStyle:"rgba(0,0,0,1)",lineWidth:1},Compass:{strokeStyle:"rgba(0,0,0,1)",fillStyle:"rgba(0,0,0,0)",lineWidth:1},Rectangle:{strokeStyle:"rgba(0,0,0,1)",lineWidth:2},Circle:{strokeStyle:"rgba(0,0,0,1)",lineWidth:2},Icon:{strokeStyle:"rgba(0,0,0,1)",lineWidth:2},Arrow:{strokeStyle:"rgba(0,0,0,1)",lineWidth:2},Table:{strokeStyle:"rgba(0,0,0,1)",lineWidth:2},Select:{Wall:{strokeStyle:"rgba(0,128,0,1)"},Rectangle:{strokeStyle:"rgba(0,128,0,1)",fillStyle:"rgba(243, 255, 0, 0.5)"},Circle:{strokeStyle:"rgba(0,128,0,1)",fillStyle:"rgba(243, 255, 0, 0.5)"},Icon:{strokeStyle:"rgba(0,128,0,1)",fillStyle:"rgba(243, 255, 0, 0.5)"},Arrow:{strokeStyle:"rgba(0,128,0,1)"},Tag:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Table:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Sign:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Point:{radius:4,lineWidth:2,fillStyle:"rgba(0, 200, 175,1)",strokeStyle:"rgba(0,128,0,1)"},Title:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Compass:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"}},Focus:{Wall:{strokeStyle:"rgba(0,128,0,1)"},Rectangle:{strokeStyle:"rgba(0,128,0,1)",fillStyle:"rgba(243, 255, 0, 0.5)"},Circle:{strokeStyle:"rgba(0,128,0,1)",fillStyle:"rgba(243, 255, 0, 0.5)"},Icon:{strokeStyle:"rgba(0,128,0,1)",fillStyle:"rgba(243, 255, 0, 0.5)"},Arrow:{strokeStyle:"rgba(0,128,0,1)"},Tag:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Table:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Sign:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Point:{radius:4,lineWidth:2,fillStyle:"rgba(245, 255, 0, 1)",strokeStyle:"rgba(0,128,0,1)"},Title:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"},Compass:{strokeStyle:"rgba(0,200,175,1)",fillStyle:"rgba(0,200,175,1)"}},Element:{StartAddWall:{radius:4,fillStyle:"rgba(0, 200, 175, 1)",strokeStyle:"rgba(0,128,0,1)"},NewWall:{lineWidth:2,strokeStyle:"rgba(0,0,0,0.3)",errorStrokeStyle:"rgba(250,63,72,0.3)"},CheckLinesX:{lineWidth:2,strokeStyle:"rgba(206,216,6,1)"},CheckLinesY:{lineWidth:2,strokeStyle:"rgba(206,216,6,1)"},VCheckLinesX:{lineWidth:2,strokeStyle:"rgba(206,216,6,1)"},VCheckLinesY:{lineWidth:2,strokeStyle:"rgba(206,216,6,1)"}},Title:{font:"24px Microsoft YaHei",fillStyle:"rgba(0,0,0,1)",strokeStyle:"rgba(0,0,0,1)",textAlign:"center",textBaseline:"middle",miterLimit:10,direction:"ltr",fontSize:24},Font:{font:"px Microsoft YaHei",fillStyle:"rgba(0,0,0,1)",strokeStyle:"rgba(0,0,0,1)",textAlign:"center",textBaseline:"middle",miterLimit:10,direction:"ltr"}},vs="某某案发现场";class Ss extends ee{constructor(e,t,s){super(),this.value=e||vs,this.height=100,this.floor=s||0,this.geoType=u.Title,this.setId(t)}setValue(e){this.value=e}isContain(e){const t=c.getScreenXY(e);return t.y>this.height-I.Title.fontSize&&t.y<this.height+I.Title.fontSize&&t.x>c.width/2-this.value.length*I.Title.fontSize&&t.x<c.width/2+this.value.length*I.Title.fontSize}}const b={All:"all",Start:"start",End:"end",Side:"side",Vertex:"vertex",Scale:"scale",Select:"select"};class bs extends ee{constructor(e,t,s){super(),this.url=e,t?this.center=t:this.center={x:80,y:150},this.image=null,this.width=540,this.height=390,this.scale=1,this.geoType=u.BgImage,this.setId(s)}setImageData(e){this.image=e}setUrl(e){this.url=e}setScale(e){this.scale=e}isContain(e){let t={x:this.center.x,y:this.center.y},s={x:this.center.x,y:this.center.y+this.height*this.scale},i={x:this.center.x+this.width*this.scale,y:this.center.y+this.height*this.scale},n={x:this.center.x+this.width*this.scale,y:this.center.y};return e=c.getScreenXY(e),this.points=[],this.points.push(t),this.points.push(s),this.points.push(i),this.points.push(n),g.isPointInPoly(e,this.points)?b.Select:null}}class Ps extends ee{constructor(e,t,s){super(),this.angle=e||0,this.floor=s||0,this.center={x:880,y:120},this.radius=52,this.geoType=u.Compass,this.setId(t)}setAngle(e){this.angle=e}isContain(e){const t=c.getScreenXY(e);return t.x-this.center.x>-5&&t.x-this.center.x<40&&t.y-this.center.y>-5&&t.y-this.center.y<60}}class ws{constructor(){this.version="v4.0",this.floors=[]}initFloor(e){this.floors[e]={},this.floors[e].points={},this.floors[e].walls={},this.floors[e].tags={},this.floors[e].tables={},this.floors[e].cells={},this.floors[e].rectangles={},this.floors[e].circles={},this.floors[e].arrows={},this.floors[e].icons={},this.floors[e].signs={},this.floors[e].customImages={},this.floors[e].title=null,this.floors[e].bgImage=null,this.floors[e].compass=null}}let k=new ws;window.floorplanData=k;class Cs{constructor(){this.currentId=0,this.currentFloor=0,this.angle=0}setCurrentId(e){this.currentId=e}getCurrentId(){return this.currentId}updateCurrentId(){++this.currentId}setCurrentFloor(e){k.floors.length==1?this.currentFloor=0:this.currentFloor=e}getCurrentFloor(){return this.currentFloor}getFloorNum(){return k.floors.length}initFloor(e){k.initFloor(e)}getFloors(){return k.floors}getPoint(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].points[e]}deletePoint(e,t,s){(s==null||typeof s>"u")&&(s=this.currentFloor);let i=this.getPoint(e);if(i)if(Object.keys(i.parent).length==0)i=null,delete k.floors[s].points[e];else if(Object.keys(i.parent).length==1&&!t)delete k.floors[s].points[e];else if(Object.keys(i.parent).length==1&&i.parent[t])delete k.floors[s].points[e];else{if(Object.keys(i.parent).length==1&&!i.parent[t])return;delete i.parent[t]}}getWall(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].walls[e]}deleteWall(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor);let s=this.getWall(e,t);this.deletePoint(s.start,e,t),this.deletePoint(s.end,e,t),delete k.floors[t].walls[e]}getAngle(){return this.angle}setAngle(e){this.angle=e}getFloorData(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e]}getWalls(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].walls}getPoints(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].points}addWall(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].walls[e.vectorId]=e}addPoint(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].points[e.vectorId]=e}addRectangle(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].rectangles[e.vectorId]=e}getRectangle(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].rectangles[e]}deleteRectangle(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getRectangle(e,t),delete k.floors[t].rectangles[e]}addCircle(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].circles[e.vectorId]=e}getCircle(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].circles[e]}deleteCircle(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getCircle(e,t),delete k.floors[t].circles[e]}addArrow(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].arrows[e.vectorId]=e}getArrow(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].arrows[e]}deleteArrow(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getArrow(e,t),delete k.floors[t].arrows[e]}addIcon(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].icons[e.vectorId]=e}getIcon(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].icons[e]}deleteIcon(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getIcon(e,t),delete k.floors[t].icons[e]}addSign(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].signs[e.vectorId]=e}getSign(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].signs[e]}deleteSign(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getSign(e,t),delete k.floors[t].signs[e]}addTag(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].tags[e.vectorId]=e}getTag(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].tags[e]}deleteTag(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getTag(e,t),delete k.floors[t].tags[e]}getTags(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].tags}addCustomImage(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].customImages[e.vectorId]=e}getCustomImage(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].customImages[e]}deleteCustomImage(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getCustomImage(e,t),delete k.floors[t].customImages[e]}getBgImage(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].bgImage}deleteBgImage(e){(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].bgImage={}}addBgImage(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].bgImage=e}addTable(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].tables[e.vectorId]=e}getTable(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].tables[e]}deleteTable(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getTable(e,t),delete k.floors[t].tables[e]}getTables(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].tables}addCell(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].cells[e.vectorId]=e}getCell(e,t){return(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].cells[e]}deleteCell(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),this.getCell(e,t),delete k.floors[t].cells[e]}getCells(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].cells}getRectangles(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].rectangles}getCircles(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].circles}getArrows(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].arrows}getIcons(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].icons}getSigns(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].signs}getCustomImages(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].customImages}clear(){k.floors[this.currentFloor]&&(k.floors[this.currentFloor].points={},k.floors[this.currentFloor].walls={},k.floors[this.currentFloor].rectangles={},k.floors[this.currentFloor].circles={},k.floors[this.currentFloor].tags={},k.floors[this.currentFloor].tables={},k.floors[this.currentFloor].cells={},k.floors[this.currentFloor].signs={},k.floors[this.currentFloor].customImages={},k.floors[this.currentFloor].arrows={},k.floors[this.currentFloor].icons=[],k.floors[this.currentFloor].bgImage={})}clear2(){this.currentId=0,this.currentFloor=0,this.angle=0}deleteFloorData(){k.floors=[]}createTitle(e,t,s){return(s==null||typeof s>"u")&&(s=this.currentFloor),new Ss(e,t,s)}addTitle(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].title=e}updateTitle(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].title.setValue(e)}getTitle(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].title}createCompass(e,t,s){return(s==null||typeof s>"u")&&(s=this.currentFloor),new Ps(e,t,s)}addCompass(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].compass=e}updateCompass(e,t){(t==null||typeof t>"u")&&(t=this.currentFloor),k.floors[t].compass.setAngle(e)}getCompass(e){return(e==null||typeof e>"u")&&(e=this.currentFloor),k.floors[e].compass}isUrl(e){try{return new URL(e),!0}catch{return!1}}async loadImageData(e){return await new Promise((s,i)=>{var n=new Image;n.src=this.isUrl(e)?e:Ue({type:102})+"/"+e,n.crossOrigin="",n.onload=(function(){s(n)}).bind(this),n.onerror=l=>{i(l)}})}}const r=new Cs;class $t extends ee{constructor(e,t,s,i){super(),this.x=e,this.y=t,this.display=!1,this.floor=i,this.name=null,this.parent={},this.geoType=u.Point,this.setId(s)}setPosition(e){this.x=e.x,this.y=e.y}}class Ts extends ee{constructor(e,t,s,i){super(),this.start=e,this.end=t,this.floor=i||0,this.color="rgba(0,0,0,1)",this.geoType=u.Wall,this.setId(s)}getPointId(e){return e=="start"?this.start:this.end}getOtherPointId(e){return this.start==e?this.end:this.end==e?this.start:null}setColor(e){this.color=e}}class de extends ee{constructor(e,t,s){super(),this.center=e,this.geoType=s,this.angle=0,this.scale=1,this.setId(t)}isContain(e){const t=g.getDistance(e,this.center);let s=this.getLen()*this.scale;return t<s/2?b.Select:null}getLen(){return .2}setAngle(e){this.angle=e}setScale(e){this.scale=e}}const E={Wall:"Wall",Tag:"Tag",Table:"Table",Rectangle:"Rectangle",Circle:"Circle",Arrow:"Arrow",Icon:"Icon",CustomImage:"CustomImage",BgImage:"BgImage",Cigaret:"Cigaret",FirePoint:"FirePoint",LeftFootPrint:"LeftFootPrint",RightFootPrint:"RightFootPrint",LeftShoePrint:"LeftShoePrint",RightShoePrint:"RightShoePrint",FingerPrint:"FingerPrint",DeadBody:"DeadBody",BloodStain:"BloodStain"};class ks{constructor(){this.signs=null}createSign(e,t,s,i){let n=null;switch(t){case u.Cigaret:n=new de(e,s,u.Cigaret,i);break;case u.FirePoint:n=new de(e,s,u.FirePoint,i);break;case u.LeftFootPrint:n=new de(e,s,u.LeftFootPrint,i);break;case u.RightFootPrint:n=new de(e,s,u.RightFootPrint,i);break;case u.LeftShoePrint:n=new de(e,s,u.LeftShoePrint,i);break;case u.RightShoePrint:n=new de(e,s,u.RightShoePrint,i);break;case u.FingerPrint:n=new de(e,s,u.FingerPrint,i);break;case u.DeadBody:n=new de(e,s,u.DeadBody,i);break;case u.BloodStain:n=new de(e,s,u.BloodStain,i);break}return r.addSign(n),n}isSign(e){switch(e){case u.Cigaret:return!0;case u.FirePoint:return!0;case u.LeftFootPrint:return!0;case u.RightFootPrint:return!0;case u.LeftShoePrint:return!0;case u.RightShoePrint:return!0;case u.FingerPrint:return!0;case u.DeadBody:return!0;case u.BloodStain:return!0}return!1}setSignInfo(e){let t=r.getSign(e.vectorId);t.vectorId=e.vectorId,t.angle=e.angle,t.scale=e.scale,t.center=JSON.parse(JSON.stringify(e.center))}getSign(e){return this.signs[e]}clear(){this.signs=null}}const te=new ks;class Fs{constructor(){this.eventName=null,this.selectItem=null,this.focusItem=null,this.draggingItem=null}getEventName(){return this.eventName}setEventName(e){this.eventName=e}clearEventName(){this.eventName=null}setSelectItem(e,t,s,i){this.selectItem={},this.selectItem.vectorId=e,this.selectItem.type=t,t==u.Tag?s==b.Select?this.selectItem.selectIndex=b.All:this.selectItem.selectIndex=s:te.isSign(t)?s==b.Select&&(this.selectItem.selectIndex=b.All):t==u.Rectangle?s==b.All?this.selectItem.selectIndex=b.All:s==b.Side?this.selectItem.selectIndex=b.Side+"_"+i:s==b.Vertex&&(this.selectItem.selectIndex=b.Vertex+"_"+i):t==u.Circle?s==b.All?this.selectItem.selectIndex=b.All:s==b.Vertex&&(this.selectItem.selectIndex=b.Vertex+"_"+i):t==u.Icon?s==b.All?this.selectItem.selectIndex=b.All:s==b.Vertex&&(this.selectItem.selectIndex=b.Vertex+"_"+i):t==u.Arrow?this.selectItem.selectIndex=s:t==u.CustomImage?s==b.Select&&(this.selectItem.selectIndex=b.All):t==u.BgImage&&s==b.Select&&(this.selectItem.selectIndex=b.All)}getSelectItem(){return this.selectItem}clearSelectItem(){this.selectItem=null}getDraggingItem(){return this.draggingItem}setDraggingItem(e){this.draggingItem=e}clearDraggingItem(){this.draggingItem=null}getFocusItem(){return this.focusItem}setFocusItem(e){this.focusItem=e}clearFocusItem(){this.focusItem=null}clearItems(){this.selectItem=null,this.focusItem=null,this.draggingItem=null}clear(){this.eventName=null,this.selectItem=null,this.focusItem=null,this.draggingItem=null}}const x=new Fs;class As{constructor(){this.wallInfo={wallId:null,state:null},this.pointInfo={pointId:null,state:null},this.tagInfo={tagId:null,state:null},this.tableInfo={tableId:null,state:null},this.rectangleInfo={rectangleId:null,state:null},this.circleInfo={circleId:null,state:null},this.arrowInfo={arrowId:null,state:null},this.iconInfo={iconId:null,state:null},this.signInfo={signsId:null,state:null},this.customImageInfo={customImageId:null,state:null},this.bgImageInfo={bgImageId:null,state:null},this.titleInfo={titleId:null,state:null},this.compassInfo={compassId:null,state:null},this.modifyPoint=null}start(e,t,s,i){let n=this.getNearForVectors(e,t,s,i);n.modifyPoint?(this.modifyPoint={x:n.modifyPoint.x,y:n.modifyPoint.y},n.modifyPoint.hasOwnProperty("linkedPointId")&&n.modifyPoint.linkedPointId!=null?this.modifyPoint.linkedPointId=n.modifyPoint.linkedPointId:n.modifyPoint.hasOwnProperty("linkedWallId")&&n.modifyPoint.linkedWallId!=null?this.modifyPoint.linkedWallId=n.modifyPoint.linkedWallId:(n.modifyPoint.hasOwnProperty("linkedPointIdX")&&n.modifyPoint.linkedPointIdX!=null&&(this.modifyPoint.linkedPointIdX=n.modifyPoint.linkedPointIdX),n.modifyPoint.hasOwnProperty("linkedPointIdY")&&n.modifyPoint.linkedPointIdY!=null&&(this.modifyPoint.linkedPointIdY=n.modifyPoint.linkedPointIdY))):this.modifyPoint=null;const l=this.updateSelectInfos(n,y.minAdsorb);return this.updateSelectItem(),l}getNearForVectors(e,t,s,i){let n=null,l=null,o={},a=null;const h=[];t&&h.push(t);const f=r.getWalls();for(const N in f){if(s&&s.hasOwnProperty(N))continue;const _=r.getWall(N),M=r.getPoint(_.start),$=r.getPoint(_.end);let se=null;const Ae=g.createLine1(M,$);if(!Ae){r.deleteWall(N);continue}const ne=g.getJoinLinePoint(e,Ae);if(h.indexOf(_.start)==-1){if(h.push(_.start),se=g.getDistance(e,M),(n==null||n.distance>se)&&(n={distance:se,pointId:_.start},g.getDistance(ne,e)<y.minAdsorb&&g.getDistance(ne,M)<y.minAdsorb||n.distance<y.minAdsorb)){o.linkedPointId=_.start,o.x=M.x,o.y=M.y,delete o.linkedPointIdX,delete o.linkedPointIdY;break}if(Math.abs(e.x-M.x)<y.minAdsorb)if(!o.linkedPointIdX)o.x=M.x,o.linkedPointIdX=_.start;else{const ce=r.getPoint(o.linkedPointIdX);g.getDistance(e,ce)>g.getDistance(e,M)&&(o.x=M.x,o.linkedPointIdX=_.start)}if(Math.abs(e.y-M.y)<y.minAdsorb)if(!o.linkedPointIdY)o.y=M.y,o.linkedPointIdY=_.start;else{const ce=r.getPoint(o.linkedPointIdY);g.getDistance(e,ce)>g.getDistance(e,M)&&(o.y=M.y,o.linkedPointIdY=_.start)}}if(h.indexOf(_.end)==-1){if(h.push(_.end),se=g.getDistance(e,$),(n==null||n.distance>se)&&(n={distance:se,pointId:_.end},g.getDistance(ne,e)<y.minAdsorb&&g.getDistance(ne,$)<y.minAdsorb||n.distance<y.minAdsorb)){o.linkedPointId=_.end,o.x=$.x,o.y=$.y,delete o.linkedPointIdX,delete o.linkedPointIdY;break}if(Math.abs(e.x-$.x)<y.minAdsorb)if(!o.linkedPointIdX)o.x=$.x,o.linkedPointIdX=_.end;else{const ce=r.getPoint(o.linkedPointIdX);g.getDistance(e,ce)>g.getDistance(e,$)&&(o.x=$.x,o.linkedPointIdX=_.end)}if(Math.abs(e.y-$.y)<y.minAdsorb)if(!o.linkedPointIdY)o.y=$.y,o.linkedPointIdY=_.end;else{const ce=r.getPoint(o.linkedPointIdY);g.getDistance(e,ce)>g.getDistance(e,$)&&(o.y=$.y,o.linkedPointIdY=_.end)}}se=g.getDistance(e,ne);const We=g.isContainForSegment(ne,M,$);We&&(l==null||l.distance>se)&&(l={distance:se,wallId:N}),We&&g.getDistance(e,ne)<y.minAdsorb&&(a=ne,a.linkedWallId=N)}const d={minPoint:n,minWall:l,tableInfo:{},rectangleInfo:{},circleInfo:{},arrowInfo:{},iconInfo:{},tagInfo:{},signInfo:{},customImageInfo:{},bgImageInfo:{},titleInfo:{},compassInfo:{}};a!=null?d.modifyPoint=JSON.parse(JSON.stringify(a)):o.hasOwnProperty("x")&&o.hasOwnProperty("y")?d.modifyPoint=JSON.parse(JSON.stringify(o)):o.hasOwnProperty("x")?(d.modifyPoint=JSON.parse(JSON.stringify(o)),d.modifyPoint.x=o.x,d.modifyPoint.y=e.y):o.hasOwnProperty("y")?(d.modifyPoint=JSON.parse(JSON.stringify(o)),d.modifyPoint.x=e.x,d.modifyPoint.y=o.y):i&&g.getDistance(e,i)>y.minAdsorb&&(Math.abs(e.x-i.x)<y.minAdsorb?(d.modifyPoint={},d.modifyPoint.x=i.x,d.modifyPoint.y=e.y):Math.abs(e.y-i.y)<y.minAdsorb&&(d.modifyPoint={},d.modifyPoint.y=i.y,d.modifyPoint.x=e.x));const m=r.getTags();for(const N in m)if(r.getTag(N).isContain(e)){d.tagInfo={tagId:N,state:"all"};break}const w=r.getTables();for(const N in w)if(r.getTable(N).isContain(e)){d.tableInfo={tableId:N,state:"all"};break}const T=r.getRectangles();for(const N in T){const M=r.getRectangle(N).isContain(e);if(M){d.rectangleInfo.rectangleId=N,M==b.All?d.rectangleInfo.state=b.All:M.hasOwnProperty("vertex")?(d.rectangleInfo.state=b.Vertex,d.rectangleInfo.index=M.vertex):M.hasOwnProperty("side")&&(d.rectangleInfo.state=b.Side,d.rectangleInfo.index=M.side);break}}const p=r.getCircles();for(const N in p){const M=r.getCircle(N).isContain(e);if(M){d.circleInfo.circleId=N,M==b.All?d.circleInfo.state=b.All:M.hasOwnProperty("vertex")&&(d.circleInfo.state=b.Vertex,d.circleInfo.index=M.vertex);break}}const L=r.getArrows();for(const N in L){const M=r.getArrow(N).isContain(e);if(M){d.arrowInfo.arrowId=N,d.arrowInfo.state=M;break}}const J=r.getIcons();for(const N in J){const M=r.getIcon(N).isContain(e);if(M){d.iconInfo.iconId=N,M==b.All?d.iconInfo.state=b.All:M.hasOwnProperty("vertex")&&(d.iconInfo.state=b.Vertex,d.iconInfo.index=M.vertex);break}}const X=r.getSigns();for(const N in X)if(r.getSign(N).isContain(e)){d.signInfo={signsId:N,state:"all"};break}const W=r.getCustomImages();for(const N in W)if(r.getCustomImage(N).isContain(e)){d.customImageInfo={customImageId:N,state:"all"};break}const D=r.getBgImage();D&&D.url&&D.isContain(e)&&(d.bgImageInfo={bgImageId:D.vectorId,state:"all"});const R=r.getTitle();R.isContain(e)&&(d.titleInfo={titleId:R.vectorId,state:"all"});const B=r.getCompass();return B.isContain(e)&&(d.compassInfo={compassId:B.vectorId,state:"all"}),d}updateSelectInfos(e,t){let s=!1;e.minPoint!=null?e.minPoint.distance<t?(s=this.isChanged(e.minPoint.pointId,b.Select,1),this.pointInfo={pointId:e.minPoint.pointId,state:b.Select}):(s=this.isChanged(e.minPoint.pointId,null,1),this.pointInfo={pointId:e.minPoint.pointId,state:null}):(s=this.isChanged(null,null,1),this.pointInfo={pointId:null,state:null});let i=!1;e.minWall!=null?e.minWall.distance<t?(i=this.isChanged(e.minWall.wallId,b.Select,2),this.wallInfo={wallId:e.minWall.wallId,state:b.Select}):(i=this.isChanged(e.minWall.wallId,null,2),this.wallInfo={wallId:e.minWall.wallId,state:null}):(i=this.isChanged(null,null,2),this.wallInfo={wallId:null,state:null});const n=this.isChanged(e.rectangleInfo.rectangleId,e.rectangleInfo.state,3,e.rectangleInfo.index);this.rectangleInfo={rectangleId:e.rectangleInfo.rectangleId,state:e.rectangleInfo.state},e.rectangleInfo.hasOwnProperty("index")&&(this.rectangleInfo.index=e.rectangleInfo.index);const l=this.isChanged(e.circleInfo.circleId,e.circleInfo.state,4);this.circleInfo={circleId:e.circleInfo.circleId,state:e.circleInfo.state},e.circleInfo.hasOwnProperty("index")&&(this.circleInfo.index=e.circleInfo.index);const o=this.isChanged(e.tagInfo.tagId,e.tagInfo.state,5);this.tagInfo={tagId:e.tagInfo.tagId,state:e.tagInfo.state};const a=this.isChanged(e.signInfo.signsId,e.signInfo.state,6);this.signInfo={signsId:e.signInfo.signsId,state:e.signInfo.state};const h=this.isChanged(e.arrowInfo.arrowId,e.arrowInfo.state,7);this.arrowInfo={arrowId:e.arrowInfo.arrowId,state:e.arrowInfo.state};const f=this.isChanged(e.iconInfo.iconId,e.iconInfo.state,8);this.iconInfo={iconId:e.iconInfo.iconId,state:e.iconInfo.state},e.iconInfo.hasOwnProperty("index")&&(this.iconInfo.index=e.iconInfo.index);const d=this.isChanged(e.tableInfo.tableId,e.tableInfo.state,9);this.tableInfo={tableId:e.tableInfo.tableId,state:e.tableInfo.state};const m=this.isChanged(e.titleInfo.titleId,e.titleInfo.state,10);this.titleInfo={titleId:e.titleInfo.titleId,state:e.titleInfo.state};const w=this.isChanged(e.compassInfo.compassId,e.compassInfo.state,11);this.compassInfo={compassId:e.compassInfo.compassId,state:e.compassInfo.state};const T=this.isChanged(e.customImageInfo.customImageId,e.customImageInfo.state,12);this.customImageInfo={customImageId:e.customImageInfo.customImageId,state:e.customImageInfo.state};const p=this.isChanged(e.bgImageInfo.bgImageId,e.bgImageInfo.state,13);return this.bgImageInfo={bgImageId:e.bgImageInfo.bgImageId,state:e.bgImageInfo.state},s||i||n||l||o||a||h||f||d||m||w||T||p}isChanged(e,t,s,i){let n=!1;return s==1?t==null&&t==this.pointInfo.state||this.pointInfo.pointId==e&&t==this.pointInfo.state?n=!1:n=!0:s==2?t==null&&t==this.wallInfo.state||this.wallInfo.wallId==e&&t==this.wallInfo.state?n=!1:n=!0:s==3?t==null&&t==this.rectangleInfo.state?n=!1:this.rectangleInfo.rectangleId==e&&t==this.rectangleInfo.state?this.rectangleInfo.hasOwnProperty("index")?i==this.rectangleInfo.index?n=!1:n=!0:n=!1:n=!0:s==4?t==null&&t==this.circleInfo.state?n=!1:this.circleInfo.circleId==e&&t==this.circleInfo.state?this.circleInfo.hasOwnProperty("index")?i==this.circleInfo.index?n=!1:n=!0:n=!1:n=!0:s==5?t==null&&t==this.tagInfo.state||this.tagInfo.tagId==e&&t==this.tagInfo.state?n=!1:n=!0:s==6?t==null&&t==this.signInfo.state||this.signInfo.signsId==e&&t==this.signInfo.state?n=!1:n=!0:s==7?t==null&&t==this.arrowInfo.state||this.arrowInfo.arrowId==e&&t==this.arrowInfo.state?n=!1:n=!0:s==8?t==null&&t==this.iconInfo.state||this.iconInfo.iconId==e&&t==this.iconInfo.state?n=!1:n=!0:s==9?t==null&&t==this.tableInfo.state||this.tableInfo.tableId==e&&t==this.tableInfo.state?n=!1:n=!0:s==10?t==null&&t==this.titleInfo.state?n=!1:n=!0:s==11?t==null&&t==this.compassInfo.state?n=!1:n=!0:s==12?t==null&&t==this.customImageInfo.state||this.customImageInfo.customImageId==e&&t==this.customImageInfo.state?n=!1:n=!0:s==13&&(t==null&&t==this.bgImageInfo.state||this.bgImageInfo.bgImageId==e&&t==this.bgImageInfo.state?n=!1:n=!0),n}updateSelectItem(){if(this.tagInfo.tagId!=null&&this.tagInfo.state!=null){const e=r.getTag(this.tagInfo.tagId);x.setSelectItem(this.tagInfo.tagId,e.geoType,this.tagInfo.state)}else if(this.signInfo.signsId!=null&&this.signInfo.state!=null){const e=r.getSign(this.signInfo.signsId);x.setSelectItem(this.signInfo.signsId,e.geoType,this.signInfo.state)}else if(this.pointInfo.pointId!=null&&this.pointInfo.state!=null)x.setSelectItem(this.pointInfo.pointId,u.WallCorner,b.Select);else if(this.wallInfo.wallId!=null&&this.wallInfo.state!=null)x.setSelectItem(this.wallInfo.wallId,u.Wall,b.Select);else if(this.rectangleInfo.rectangleId!=null&&this.rectangleInfo.state!=null)this.rectangleInfo.state==b.All?x.setSelectItem(this.rectangleInfo.rectangleId,u.Rectangle,b.All):this.rectangleInfo.state==b.Vertex?x.setSelectItem(this.rectangleInfo.rectangleId,u.Rectangle,b.Vertex,this.rectangleInfo.index):this.rectangleInfo.state==b.Side&&x.setSelectItem(this.rectangleInfo.rectangleId,u.Rectangle,b.Side,this.rectangleInfo.index);else if(this.circleInfo.circleId!=null&&this.circleInfo.state!=null)this.circleInfo.state==b.All?x.setSelectItem(this.circleInfo.circleId,u.Circle,b.All):this.circleInfo.state==b.Vertex&&x.setSelectItem(this.circleInfo.circleId,u.Circle,b.Vertex,this.circleInfo.index);else if(this.iconInfo.iconId!=null&&this.iconInfo.state!=null)this.iconInfo.state==b.All?x.setSelectItem(this.iconInfo.iconId,u.Icon,b.All):this.iconInfo.state==b.Vertex&&x.setSelectItem(this.iconInfo.iconId,u.Icon,b.Vertex,this.iconInfo.index);else if(this.arrowInfo.arrowId!=null&&this.arrowInfo.state!=null)x.setSelectItem(this.arrowInfo.arrowId,u.Arrow,this.arrowInfo.state);else if(this.tableInfo.tableId!=null&&this.tableInfo.state!=null){const e=r.getTable(this.tableInfo.tableId);x.setSelectItem(this.tableInfo.tableId,e.geoType,this.tableInfo.state)}else if(this.titleInfo.titleId!=null&&this.titleInfo.state!=null){const e=r.getTitle();x.setSelectItem(this.titleInfo.titleId,e.geoType,this.titleInfo.state)}else if(this.compassInfo.compassId!=null&&this.compassInfo.state!=null){const e=r.getCompass();x.setSelectItem(this.compassInfo.compassId,e.geoType,this.compassInfo.state)}else if(this.customImageInfo.customImageId!=null&&this.customImageInfo.state!=null){const e=r.getCustomImage(this.customImageInfo.customImageId);x.setSelectItem(this.customImageInfo.customImageId,e.geoType,this.customImageInfo.state)}else if(this.bgImageInfo.bgImageId!=null&&this.bgImageInfo.state!=null){const e=r.getBgImage();e.url&&x.setSelectItem(this.bgImageInfo.bgImageId,e.geoType,this.bgImageInfo.state)}else x.clearSelectItem()}clear(){this.wallInfo={wallId:null,state:null},this.pointInfo={pointId:null,state:null},this.tagInfo={tagId:null,state:null},this.tableInfo={tableId:null,state:null},this.rectangleInfo={rectangleId:null,state:null},this.circleInfo={circleId:null,state:null},this.arrowInfo={arrowId:null,state:null},this.iconInfo={iconId:null,state:null},this.signInfo={signsId:null,state:null},this.customImageInfo={customImageId:null,state:null},this.bgImageInfo={bgImageId:null,state:null},this.modifyPoint=null}}const z=new As;class De extends ee{constructor(e,t,s){super(),this.start=e,this.end=t,this.name=null,this.display=!1,this.geoType=u.Line,this.setId(s)}setPositions(e,t){this.start.x=e.x,this.start.y=e.y,this.end.x=t.x,this.end.y=t.y}}const Y={StartAddWall:"StartAddWall",NewWall:"NewWall",CheckLinesX:"CheckLinesX",CheckLinesY:"CheckLinesY",VCheckLinesX:"vCheckLinesX",VCheckLinesY:"vCheckLinesY"};class Ws{constructor(){this.startAddWall=null,this.newWall=null,this.checkLines={X:null,Y:null},this.vCheckLines={X:null,Y:null},this.init()}init(){this.startAddWall=new $t(0,0),this.startAddWall.name=Y.StartAddWall,this.newWall=new De({x:0,y:0},{x:1,y:1}),this.newWall.name=Y.NewWall,this.checkLines.X=new De({x:0,y:0},{x:1,y:1}),this.checkLines.X.name=Y.CheckLinesX,this.checkLines.Y=new De({x:0,y:0},{x:1,y:1}),this.checkLines.Y.name=Y.CheckLinesY,this.vCheckLines.X=new De({x:0,y:0},{x:1,y:1}),this.vCheckLines.X.name=Y.VCheckLinesX,this.vCheckLines.Y=new De({x:0,y:0},{x:1,y:1}),this.vCheckLines.Y.name=Y.VCheckLinesY}showStartAddWall(){this.startAddWall.display=!0}hideStartAddWall(){this.startAddWall.display=!1}setStartAddWall(e){this.startAddWall.setPosition(e)}showNewWall(){this.newWall.display=!0}hideNewWall(){this.newWall.display=!1}setNewWall(e,t){this.newWall.setPositions(e,t)}setNewWallStartPosition(e){this.newWall.start.x=e.x,this.newWall.start.y=e.y}setNewWallEndPosition(e){this.newWall.end.x=e.x,this.newWall.end.y=e.y}setNewWallState(e){this.newWall.state=e}showCheckLinesX(){this.checkLines.X.display=!0}hideCheckLinesX(){this.checkLines.X.display=!1}setCheckLinesX(e,t){this.checkLines.X.setPositions(e,t)}showCheckLinesY(){this.checkLines.Y.display=!0}hideCheckLinesY(){this.checkLines.Y.display=!1}setCheckLinesY(e,t){this.checkLines.Y.setPositions(e,t)}showVCheckLinesX(){this.vCheckLines.X.display=!0}hideVCheckLinesX(){this.vCheckLines.X.display=!1}setVCheckLinesX(e,t){this.vCheckLines.X.setPositions(e,t)}showVCheckLinesY(){this.vCheckLines.Y.display=!0}hideVCheckLinesY(){this.vCheckLines.Y.display=!1}setVCheckLinesY(e,t){this.vCheckLines.Y.setPositions(e,t)}hideAll(){this.hideCheckLinesX(),this.hideCheckLinesY(),this.hideStartAddWall(),this.hideNewWall(),this.hideVCheckLinesX(),this.hideVCheckLinesY()}execute(e,t){if(this.hideVCheckLinesX(),this.hideVCheckLinesY(),this.hideCheckLinesX(),this.hideCheckLinesY(),z.modifyPoint){if(z.modifyPoint.linkedPointIdX){const s=r.getPoint(z.modifyPoint.linkedPointIdX);this.setCheckLinesX(s,t),this.showCheckLinesX()}if(z.modifyPoint.linkedPointIdY){const s=r.getPoint(z.modifyPoint.linkedPointIdY);this.setCheckLinesY(s,t),this.showCheckLinesY()}}e&&(Math.abs(t.x-e.x)<y.minAdsorb&&(t.x=e.x,this.setVCheckLinesX(e,t),this.showVCheckLinesX()),Math.abs(t.y-e.y)<y.minAdsorb&&(t.y=e.y,this.setVCheckLinesY(e,t),this.showVCheckLinesY()),g.equalPoint(t,e)&&(this.hideVCheckLinesX(),this.hideVCheckLinesY()))}checkAngle(e,t,s){function i(a,h,f,d){let m=g.createLine1(h,f),w=null;if(d==1){let T=g.getVerticalLine(m,h);w=g.getJoinLinePoint(a,T)}else d==2&&(w=g.getJoinLinePoint(a,m));return w}let n=F.getNeighPoints(t,s),l=r.getPoint(t),o=null;for(let a=0;a<n.length;++a){let h=g.Angle(l,e,n[a]);if(Math.abs(h/Math.PI*180-90)<y.minAngle/2?o=i(e,l,n[a],1):(Math.abs(h/Math.PI*180)<y.minAngle/2||Math.abs(h/Math.PI*180-180)<y.minAngle/2)&&(o=i(e,l,n[a],2)),o!=null)return o}return o}clear(){this.startAddWall=null,this.newWall=null,this.checkLines={X:null,Y:null},this.vCheckLines={X:null,Y:null},this.init()}}const A=new Ws;class Ds{constructor(){this.startInfo={},this.endInfo={},this.canAdd=!1}setPointInfo(e,t){e=="start"?this.startInfo={position:{x:t.x,y:t.y},linkedPointId:t.linkedPointId,linkedWallId:t.linkedWallId}:e=="end"&&(this.endInfo={position:{x:t.x,y:t.y},linkedPointId:t.linkedPointId,linkedWallId:t.linkedWallId})}buildWall(){console.log("添加新墙!");let e=this.getJoinsForWalls(),t=this.splitAllJoins(e);this.creatNewWalls(t),this.canAdd=!1,this.updateStart(this.endInfo.position,t[t.length-1]),z.clear()}creatNewWalls(e){for(let t=0;t<e.length-1;++t){let s=e[t],i=e[t+1];F.getWallId(s,i)||F.createWall(s,i)}}canAddWallForEnd(e){if(z.modifyPoint){if(g.getDistance(this.startInfo.position,z.modifyPoint)<y.minAdsorb)return!1}else if(g.getDistance(this.startInfo.position,e)<y.minAdsorb)return!1;return!0}getJoinsForWalls(){let e=[];const t=r.getWalls();let s=[],i=[];this.startInfo.linkedPointId?(s.push(this.startInfo.linkedPointId),i.push(this.startInfo.linkedPointId),e.push({join:{x:this.startInfo.position.x,y:this.startInfo.position.y},pointId:this.startInfo.linkedPointId})):this.startInfo.linkedWallId?e.push({join:{x:this.startInfo.position.x,y:this.startInfo.position.y},wallId:this.startInfo.linkedWallId}):e.push({join:{x:this.startInfo.position.x,y:this.startInfo.position.y}}),this.endInfo.linkedPointId?(s.push(this.endInfo.linkedPointId),i.push(this.endInfo.linkedPointId),e.push({join:{x:this.endInfo.position.x,y:this.endInfo.position.y},pointId:this.endInfo.linkedPointId})):this.endInfo.linkedWallId?e.push({join:{x:this.endInfo.position.x,y:this.endInfo.position.y},wallId:this.endInfo.linkedWallId}):e.push({join:{x:this.endInfo.position.x,y:this.endInfo.position.y}});const n=g.createLine1(this.startInfo.position,this.endInfo.position);for(let l in t){if(this.startInfo.linkedWallId&&this.startInfo.linkedWallId==l)continue;if(this.endInfo.linkedWallId&&this.endInfo.linkedWallId==l)continue;let o=t[l];if(i.indexOf(o.start)>-1||i.indexOf(o.end)>-1)continue;let a=r.getPoint(o.start),h=r.getPoint(o.end),f=!1;if(s.indexOf(o.start)<0){s.push(o.start);const d=g.getJoinLinePoint(a,n);g.PointInSegment(d,this.startInfo.position,this.endInfo.position,y.minAdsorb)&&g.getDistance(a,d)<y.minAdsorb&&(e.push({join:{x:d.x,y:d.y},pointId:o.start}),f=!0,i.push(o.start))}if(s.indexOf(o.end)<0){s.push(o.end);const d=g.getJoinLinePoint(h,n);g.PointInSegment(d,this.startInfo.position,this.endInfo.position,y.minAdsorb)&&g.getDistance(h,d)<y.minAdsorb&&(e.push({join:{x:d.x,y:d.y},pointId:o.end}),f=!0,i.push(o.end))}if(!f&&i.indexOf(o.start)<0&&i.indexOf(o.end)<0){let d=g.getIntersectionPoint3(a,h,this.startInfo.position,this.endInfo.position);d&&e.push({join:{x:d.x,y:d.y},wallId:l})}}return e}splitAllJoins(e){e=e.sort(t.bind(this));function t(i,n){return g.getDistance(this.startInfo.position,i.join)-g.getDistance(this.startInfo.position,n.join)}const s=[];for(let i=0;i<e.length;++i){const n=e[i],l=n.join,o=n.wallId,a=n.pointId;if(a)s.push(a);else if(o){const f=F.createPoint(l.x,l.y).vectorId;let d=null;if(e[i+1]&&e[i].wallId==e[i+1].wallId){let m=r.getWall(o),w=r.getPoint(m.start);g.getDistance(w,e[i].join)<g.getDistance(w,e[i+1].join)?d=F.splitWall(o,f,"end"):d=F.splitWall(o,f,"start")}else d=F.splitWall(o,f,"start");if(d==null){r.deletePoint(f);continue}s.push(f)}else{const h=F.createPoint(l.x,l.y);s.push(h.vectorId)}}return s}updateStart(e,t){g.clonePoint(this.startInfo.position,e),this.startInfo.linkedPointId=t,A.setNewWallStartPosition(this.startInfo.position)}setNewWallPoint(e,t){return e=="start"?(z.modifyPoint?this.setPointInfo(e,z.modifyPoint):this.setPointInfo(e,c.getXYFromScreen(t)),!0):e=="end"?(z.modifyPoint?this.setPointInfo(e,z.modifyPoint):this.setPointInfo(e,c.getXYFromScreen(t)),!0):!1}clear(){this.startInfo={},this.endInfo={},this.canAdd=!1,A.hideNewWall(),A.hideStartAddWall()}}const q=new Ds;class Ls{constructor(){}getLine(e){const t=r.getPoint(e.start),s=r.getPoint(e.end);return g.createLine1(t,s)}isContain(e,t,s){const i=r.getPoint(e.start),n=r.getPoint(e.end);return g.isContainForSegment(t,i,n,s)}createWall(e,t,s,i){let n=new Ts(e,t,s,i);return(i==null||typeof i>"u")&&(i=r.currentFloor),r.addWall(n,i),this.setPointParent(n.vectorId,e,"start",i),this.setPointParent(n.vectorId,t,"end",i),n}createPoint(e,t,s,i){let n=new $t(e,t,s,i);return(i==null||typeof i>"u")&&(i=r.currentFloor),r.addPoint(n,i),n}setPointParent(e,t,s,i){let n=r.getPoint(t,i),l=r.getWall(e,i);n.setPointParent(e,s),s=="start"?l.start=t:s=="end"&&(l.end=t)}splitWall(e,t,s){const i=r.getWall(e),n=r.getPoint(i.start),l=r.getPoint(i.end),o=r.getPoint(t);g.getDistance(n,o)<y.minAdsorb||g.getDistance(l,o)<y.minAdsorb;let a=null;return s=="start"?(delete l.parent[e],a=this.createWall(t,i.end),this.setPointParent(e,t,"end"),l.setPointParent(a.vectorId,s)):s=="end"&&(delete n.parent[e],a=this.createWall(i.start,t),this.setPointParent(e,t,"start"),n.setPointParent(a.vectorId,s)),a.vectorId}getWallId(e,t){const s=r.getPoint(e),i=r.getPoint(t);if(!s||!i)return console.log("pointId1或者pointId2不存在"),null;if(e==t)return console.log("给的是同一个point"),null;const n=s.parent,l=i.parent;for(const o in n)if(l.hasOwnProperty(o))return o;return null}isWallLink(e,t){let s=r.getWall(e),i=r.getWall(t);return s.start==i.start||s.start==i.end||s.end==i.start||s.end==i.end}AngleForWall(e,t){const s=r.getWall(e),i=r.getWall(t);if(s==null||i==null||typeof s>"u"||typeof i>"u")return null;const n=r.getPoint(s.start),l=r.getPoint(s.end),o=r.getPoint(i.start),a=r.getPoint(i.end),h=g.getDistance(n,o),f=g.getDistance(n,a),d=g.getDistance(l,o),m=g.getDistance(l,a),w=Math.min(h,f,d,m);return g.getIntersectionPoint2(n,l,o,a)==null?Math.PI:h==w?(l.x+=o.x-n.x,l.y+=o.y-n.y,g.Angle(o,l,a)):f==w?(l.x+=a.x-n.x,l.y+=a.y-n.y,g.Angle(a,l,o)):d==w?(n.x+=o.x-l.x,n.y+=o.y-l.y,g.Angle(o,n,a)):m==w?(n.x+=a.x-l.x,n.y+=a.y-l.y,g.Angle(a,n,o)):(console.error("AngleForWall**************************1"),null)}AngleForWall2(e,t){const s=r.getWall(e),i=r.getWall(t);if(s==null||i==null||typeof s>"u"||typeof i>"u")return null;const n=r.getPoint(s.start),l=r.getPoint(s.end),o=r.getPoint(i.start),a=r.getPoint(i.end);let h=null;const f=[];return f.push(n),f.push(l),s.start==i.start?(h=g.Angle(n,l,a),f.push(a)):s.start==i.end?(h=g.Angle(n,l,o),f.push(o)):s.end==i.start?(h=g.Angle(l,n,a),f[0]=l,f[1]=n,f.push(a)):s.end==i.end&&(h=g.Angle(l,n,o),f[0]=l,f[1]=n,f.push(o)),h==null?null:g.isClockwise(f)?{angle:h,clockwise:1}:{angle:h,clockwise:0}}AngleForWall3(e,t){const s=r.getWall(e),i=r.getWall(t);if(s==null||i==null||typeof s>"u"||typeof i>"u")return null;const n=r.getPoint(s.start),l=r.getPoint(s.end),o=r.getPoint(i.start),a=r.getPoint(i.end),h=g.getDistance(n,o),f=g.getDistance(n,a),d=g.getDistance(l,o),m=g.getDistance(l,a),w=Math.min(h,f,d,m),T={},p={};return h==w?(p.x=l.x+o.x-n.x,p.y=l.y+o.y-n.y,g.Angle(o,p,a)):f==w?(p.x=l.x+a.x-n.x,p.y=l.y+a.y-n.y,g.Angle(a,p,o)):d==w?(T.x=n.x+o.x-l.x,T.y=n.y+o.y-l.y,g.Angle(o,T,a)):m==w?(T.x=n.x+a.x-l.x,T.y=n.y+a.y-l.y,g.Angle(a,T,o)):(console.error("WallService.AngleForWall3************************************1"),null)}wallIdForMinAngle(e,t){const i=r.getPoint(e).parent;let n=null,l=null,o=null,a=null,h,f,d,m;if(Object.keys(i).length>2){for(const T in i){if(T==t)continue;const p=this.AngleForWall2(t,T);o==null&&p.clockwise==1?(f=p,f.wallId=T,o=p.angle,m=p,m.wallId=T,a=p.angle):o>p.angle&&p.clockwise==1?(f=p,f.wallId=T,o=p.angle):a<p.angle&&p.clockwise==1?(m=p,m.wallId=T,a=p.angle):n==null&&p.clockwise==0?(h=p,h.wallId=T,n=p.angle,d=p,d.wallId=T,l=p.angle):n>p.angle&&p.clockwise==0?(h=p,h.wallId=T,n=p.angle):l<p.angle&&p.clockwise==0&&(d=p,d.wallId=T,l=p.angle)}const w={min0:h,min1:f};return w.min0||(w.min0=m,w.min0.angle=360-m.angle),w.min1||(w.min1=d,w.min1.angle=360-d.angle),w}else return console.error("wallIdForMinAngle*********************************************************"),null}mergeWall(e,t){const s=this.getLinkPointId(e,t),n=r.getWall(t).getOtherPointId(s),l=r.getPoint(n);if(Object.keys(l.parent).length>1)this.moveTo(s,n);else{r.deleteWall(t);let o=r.getPoint(s);g.clonePoint(o,l)}return n}mergeWallForPoint(e){const t=r.getPoint(e);return t!=null&&Object.keys(t.parent).length==2&&this.AngleForWall(Object.keys(t.parent)[0],Object.keys(t.parent)[1])>y.maxAngle/180*Math.PI?this.mergeWall(Object.keys(t.parent)[0],Object.keys(t.parent)[1]):null}getLinkPointId(e,t){const s=r.getWall(e),i=r.getWall(t);if(s.start==i.start)return s.start;if(s.start==i.end)return s.start;if(s.end==i.start)return s.end;if(s.end==i.end)return s.end;if(s.start==i.start)return null}moveTo(e,t){const s=this.getWallId(e,t);let i=r.getPoint(e),n=r.getPoint(t);i.x-n.x,i.y-n.y;let l=i.parent;const o=n.parent;for(const a in l){if(a==s)continue;const f=r.getWall(a).getOtherPointId(e),d=r.getPoint(f);for(const m in o){if(m==s)continue;const T=r.getWall(m).getOtherPointId(t),p=r.getPoint(T),L=g.Angle(n,d,p);if(Math.abs(L)<y.minAngle/180*Math.PI)return!1}}if(s!=null&&r.deleteWall(s),i=r.getPoint(e),n=r.getPoint(t),!i||!n)return!1;for(const a in l){const h=r.getWall(a),f=h.getOtherPointId(e);if(this.getWallId(f,t)!=null)return!1;h.start==e?(r.deletePoint(h.start,a),h.start=t,n.setPointParent(a,"start")):h.end==e?(r.deletePoint(h.end,a),h.end=t,n.setPointParent(a,"end")):console.error("wallService.moveTo****************************************************")}return!0}getDirction(e,t){const s=r.getWall(t);return s.start==e?"start":s.end==e?"end":(console.error("WallService.getDirction*******************************************************************************************"),null)}isOverlapForMergePoint(e,t){const s=this.getWallId(e,t),i=r.getPoint(e),n=r.getPoint(t),l=i.x-n.x,o=i.y-n.y,a=i.parent,h=n.parent;for(const f in a){if(f==s)continue;const m=r.getWall(f).getOtherPointId(e),w=r.getPoint(m),T={x:w.x-l,y:w.y-o};for(const p in h){if(p==s)continue;const J=r.getWall(p).getOtherPointId(t),X=r.getPoint(J),W=g.Angle(n,T,X);if(Math.abs(W)<y.minAngle/180*Math.PI)return!0}}return!1}subtraWallFromIntersect(e,t){const s=r.getPoint(e),i=s.parent,n=this.getDirction(e,t);if(Object.keys(i).length==1)return;delete i[t];const l=this.createPoint(s.x,s.y);l.setPointParent(t,n);let o=r.getWall(t);n=="start"?o.start=l.vectorId:n=="end"&&(o.end=l.vectorId)}setWallInfo(e){let t=r.getWall(e.vectorId);return t.start=e.start,t.end=e.end,t.color=e.color,t}setPointInfo(e){let t=r.getPoint(e.vectorId);return g.clonePoint(t,e.position),t.parent=JSON.parse(JSON.stringify(e.parent)),t}getNeighPoints(e,t){let s=[],i=r.getPoint(e);for(let n in i.parent){const o=r.getWall(n).getOtherPointId(e);if(t&&t==o)continue;const a=r.getPoint(o);s.push(a)}return s}deleteWallCorner(e){let t=r.getPoint(e);if(Object.keys(t.parent).length==1)r.deleteWall(Object.keys(t.parent)[0]);else if(Object.keys(t.parent).length>2)for(let s in t.parent)r.deleteWall(s);else Object.keys(t.parent).length==2&&(this.AngleForWall(Object.keys(t.parent)[0],Object.keys(t.parent)[1])>y.maxAngle/180*Math.PI?this.mergeWall(Object.keys(t.parent)[0],Object.keys(t.parent)[1]):(r.deleteWall(Object.keys(t.parent)[0]),r.deleteWall(Object.keys(t.parent)[0])))}}const F=new Ls;class zs extends ee{constructor(e,t){super(),this.center=e,this.points2d=[],this.value="文本",this.sideWidth=30,this.sideThickness=30,this.color="rgba(0,0,0,1)",this.fontSize=12,this.geoType=u.Tag,this.setId(t)}isContain(e){let t=[];return t.push(this.points2d[0]),t.push(this.points2d[1]),t.push(this.points2d[2]),t.push(this.points2d[3]),g.isPointInPoly(e,t)}setFontLenAndHeight(){let e=1,t=0,s=[];s[0]="";for(let i=0;i<this.value.length;++i)this.value[i]==`
- `?(++e,++t,s[t]=""):s[t]+=this.value[i];return{textValues:s,height:e}}setPoints2d(){this.points2d=[];const e=this.center.x-this.sideWidth/c.res*y.defaultZoom/c.zoom/2,t=this.center.y-this.sideThickness/c.res*y.defaultZoom/c.zoom/2,s=this.center.x+this.sideWidth/c.res*y.defaultZoom/c.zoom/2,i=this.center.y+this.sideThickness/c.res*y.defaultZoom/c.zoom/2,n={x:e,y:i},l={x:s,y:i},o={x:s,y:t},a={x:e,y:t};this.points2d.push(n),this.points2d.push(l),this.points2d.push(o),this.points2d.push(a);let h=(n.x-this.center.x)/2,f=(n.y-this.center.y)/2;this.points2d.push({x:n.x-h,y:n.y-f}),this.points2d.push({x:l.x+h,y:n.y-f}),this.points2d.push({x:this.center.x,y:n.y-f}),this.points2d.push({x:this.center.x,y:o.y+f})}setValue(e){this.value=e}setColor(e){this.color=e}setFontSize(e){this.fontSize=e}}class Rs{constructor(){}createTag(e,t,s){let i=new zs(e,t);return i.setPoints2d(),r.addTag(i,s),i}setTagInfo(e){let t=r.getTag(e.vectorId);t.vectorId=e.vectorId,t.center=JSON.parse(JSON.stringify(e.center)),t.points2d=JSON.parse(JSON.stringify(e.points2d)),t.value=e.value,t.color=e.color,t.fontSize=e.fontSize}deleteTag(e,t){r.deleteTag(e,t)}clearDefaultTags(){for(let e=0;e<k.floors.length;++e){let t=k.floors[e].tags;for(let s in t){let i=t[s];(i.value==null||i.value.trim()=="")&&this.deleteTag(i.vectorId,e)}}}getTags(e){return k.floors[e].tags}}const ve=new Rs;class Ms extends ee{constructor(e,t,s,i){super(),this.points=[],this.floor=i||0,this.angle=0,this.setPoints(e,t),this.color="rgba(0,0,0,1)",this.geoType=u.Rectangle,this.setId(s)}setPoints(e,t){this.points[0]={x:e.x,y:e.y},this.points[1]={x:t.x,y:e.y},this.points[2]={x:t.x,y:t.y},this.points[3]={x:e.x,y:t.y}}updatePoints(e,t){if(g.getDistance(e,this.points[0])<y.minAdsorb)return;let s=this.getNextIndex(t),i=this.getLastIndex(t),n=this.getNextIndex(s);const l=g.createLine1(this.points[n],this.points[i]),o=g.createLine1(this.points[n],this.points[s]);if(l==null||o==null)return;const a=g.getLineForPoint(l,e),h=g.getLineForPoint(o,e);g.getDistance(a,e)<y.minAdsorb||g.getDistance(h,e)<y.minAdsorb||(this.points[t]={x:e.x,y:e.y},this.points[i]={x:a.x,y:a.y},this.points[s]={x:h.x,y:h.y})}updateSides(e,t){let s=this.getNextIndex(t),i=this.getLastIndex(t),n=this.getNextIndex(s),l=g.createLine1(this.points[t],this.points[s]);l=g.createLine3(l,e);const o=g.createLine1(this.points[i],this.points[t]),a=g.createLine1(this.points[s],this.points[n]);if(o==null||a==null)return;const h=g.getIntersectionPoint(l,o),f=g.getIntersectionPoint(l,a);g.getDistance(this.points[i],h)<y.minAdsorb||(g.clonePoint(this.points[t],h),g.clonePoint(this.points[s],f))}getNextIndex(e){let t=e+1;return t==4&&(t=0),t}getLastIndex(e){let t=e-1;return t<0&&(t=3),t}isContain(e){for(let s=0;s<this.points.length;++s)if(g.getDistance(e,this.points[s])<y.minAdsorb)return{vertex:s};for(let s=0;s<this.points.length;++s){let i=this.points[s],n=this.points[s+1];if(s==this.points.length-1&&(n=this.points[0]),g.isContainForSegment(e,i,n))return{side:s}}return g.isPointInPoly(e,this.points)?b.All:null}setColor(e){this.color=e}}class Os{constructor(){}createRectangle(e,t,s,i){const n=new Ms(e,t,s,i);return r.addRectangle(n),n}updateRectangleVertex(e,t,s){r.getRectangle(e).updatePoints(t,s)}setRectangleInfo(e){let t=r.getRectangle(e.vectorId);t.vectorId=e.vectorId,t.angle=e.angle,t.color=e.color,t.points=JSON.parse(JSON.stringify(e.points))}deleteRectangle(e,t){r.deleteRectangle(e,t)}}const ye=new Os;class st extends ee{constructor(e,t,s,i){super(),this.center=e,this.radius=t,this.points=[],this.setPoints(),this.color="rgba(0,0,0,1)",this.floor=i||0,this.geoType=u.Circle,this.setId(s)}setRadius(e){this.radius=e}setPoints(){this.points[0]={x:this.center.x-this.radius,y:this.center.y+this.radius},this.points[1]={x:this.center.x+this.radius,y:this.center.y+this.radius},this.points[2]={x:this.center.x+this.radius,y:this.center.y-this.radius},this.points[3]={x:this.center.x-this.radius,y:this.center.y-this.radius}}isContain(e){for(let s=0;s<this.points.length;++s)if(g.getDistance(e,this.points[s])<y.minAdsorb)return{vertex:s};return g.isPointInPoly(e,this.points)?b.All:null}updatePoints(e,t){let s=this.getNextIndex(t),i=this.getNextIndex(s);const n=g.createLine1(this.points[i],this.points[t]);if(n==null)return;const l=g.getJoinLinePoint(e,n),o=g.getDistance(l,this.points[i])/2/Math.sqrt(2);o<y.minAdsorb||(g.clonePoint(this.points[t],l),this.center={x:(this.points[t].x+this.points[i].x)/2,y:(this.points[t].y+this.points[i].y)/2},this.radius=o,t==0?(this.points[3]={x:this.points[0].x,y:this.points[2].y},this.points[1]={x:this.points[2].x,y:this.points[0].y}):t==1?(this.points[0]={x:this.points[3].x,y:this.points[1].y},this.points[2]={x:this.points[1].x,y:this.points[3].y}):t==2?(this.points[1]={x:this.points[2].x,y:this.points[0].y},this.points[3]={x:this.points[0].x,y:this.points[2].y}):t==3&&(this.points[2]={x:this.points[1].x,y:this.points[3].y},this.points[0]={x:this.points[3].x,y:this.points[1].y}))}getNextIndex(e){let t=e+1;return t==4&&(t=0),t}getLastIndex(e){let t=e-1;return t<0&&(t=3),t}setColor(e){this.color=e}}class Ns{constructor(){}createCircle(e,t,s){const i=g.getDistance(e,t)/2,n={x:(e.x+t.x)/2,y:(e.y+t.y)/2},l=new st(n,i,s);return r.addCircle(l),l}createCircle2(e,t,s,i){const n=new st(e,t,s,i);return r.addCircle(n),n}updateCircleVertex(e,t,s){r.getCircle(e).updatePoints(t,s)}setCircleInfo(e){let t=r.getCircle(e.vectorId);t.vectorId=e.vectorId,t.radius=e.radius,t.center=JSON.parse(JSON.stringify(e.center)),t.points=JSON.parse(JSON.stringify(e.points)),t.color=e.color}deleteCircle(e,t){r.deleteCircle(e,t)}}const Te=new Ns;class _s extends ee{constructor(e,t,s,i){super(),this.startPoint=e,this.endPoint=t,this.floor=i||0,this.color="rgba( 0,0,0,1)",this.geoType=u.Arrow,this.setId(s)}isContain(e){const t=g.getDistance(e,this.startPoint),s=g.getDistance(e,this.endPoint);return t<y.minAdsorb?b.Start:s<y.minAdsorb?b.End:g.isContainForSegment(e,this.startPoint,this.endPoint)?b.All:null}updatePoint(e,t){t==b.Start&&g.getDistance(e,this.endPoint)>y.minAdsorb?g.clonePoint(this.startPoint,e):t==b.End&&g.getDistance(e,this.startPoint)>y.minAdsorb&&g.clonePoint(this.endPoint,e)}setColor(e){this.color=e}}class Vs{constructor(){}createArrow(e,t,s,i){const n=new _s(e,t,s,i);return r.addArrow(n),n}updateArrow(e,t,s){r.getArrow(e).updatePoint(t,s)}setArrowInfo(e){let t=r.getArrow(e.vectorId);t.vectorId=e.vectorId,t.startPoint=JSON.parse(JSON.stringify(e.startPoint)),t.endPoint=JSON.parse(JSON.stringify(e.endPoint)),t.color=e.color}deleteArrow(e,t){r.deleteArrow(e,t)}}const pe=new Vs;class it extends ee{constructor(e,t,s,i,n){super(),this.center=e,this.radius=t,this.value=s,this.points=[],this.angle=0,this.setPoints(),this.floor=n||0,this.geoType=u.Icon,this.setId(i)}setRadius(e){this.radius=e}setPoints(){this.points[0]={x:this.center.x-this.radius,y:this.center.y+this.radius},this.points[1]={x:this.center.x+this.radius,y:this.center.y+this.radius},this.points[2]={x:this.center.x+this.radius,y:this.center.y-this.radius},this.points[3]={x:this.center.x-this.radius,y:this.center.y-this.radius}}isContain(e){for(let s=0;s<this.points.length;++s)if(g.getDistance(e,this.points[s])<y.minAdsorb)return{vertex:s};return g.getDistance(e,this.center)<this.radius?b.All:null}updatePoints(e,t){let s=this.getNextIndex(t),i=this.getNextIndex(s);const n=g.createLine1(this.points[i],this.points[t]);if(n==null)return;const l=g.getJoinLinePoint(e,n),o=g.getDistance(l,this.points[i])/2/Math.sqrt(2);o<y.minAdsorb||(g.clonePoint(this.points[t],l),this.center={x:(this.points[t].x+this.points[i].x)/2,y:(this.points[t].y+this.points[i].y)/2},this.radius=o,t==0?(this.points[3]={x:this.points[0].x,y:this.points[2].y},this.points[1]={x:this.points[2].x,y:this.points[0].y}):t==1?(this.points[0]={x:this.points[3].x,y:this.points[1].y},this.points[2]={x:this.points[1].x,y:this.points[3].y}):t==2?(this.points[1]={x:this.points[2].x,y:this.points[0].y},this.points[3]={x:this.points[0].x,y:this.points[2].y}):t==3&&(this.points[2]={x:this.points[1].x,y:this.points[3].y},this.points[0]={x:this.points[3].x,y:this.points[1].y}))}getNextIndex(e){let t=e+1;return t==4&&(t=0),t}getLastIndex(e){let t=e-1;return t<0&&(t=3),t}}class Bs{constructor(){this.values=[]}getNewValue(){let e=1;for(;;)if(this.values.includes(e)){++e;continue}else{this.values.push(e);break}return e}createIcon(e,t,s,i,n){const l=g.getDistance(e,t)/2,o={x:(e.x+t.x)/2,y:(e.y+t.y)/2};s==null?s=this.getNewValue():this.values.includes(s)||this.values.push(s);const a=new it(o,l,s,i,n);return r.addIcon(a),a}createIcon2(e,t,s,i,n){const l=new it(e,t,s,i,n);return r.addIcon(l),l}updateIconVertex(e,t,s){r.getIcon(e).updatePoints(t,s)}setIconInfo(e){let t=r.getIcon(e.vectorId);t.vectorId=e.vectorId,t.radius=e.radius,t.value=e.value,t.angle=e.angle,t.center=JSON.parse(JSON.stringify(e.center)),t.points=JSON.parse(JSON.stringify(e.points))}deleteIcon(e,t){const s=r.getIcon(e),i=this.values.indexOf(s.value);this.values.splice(i,1),r.deleteIcon(e,t)}clear(){this.values=[]}}const ae=new Bs;class Ys extends ee{constructor(e,t){super(),this.width=90,this.height=24,this.value="",this.colIndex=0,this.rowIndex=0,this.parent=e,this.geoType=u.Cell,this.setId(t)}setWidth(e){this.width=e}setHeight(e){this.height=e}setValue(e){this.value=e}setColIndex(e){this.colIndex=e}setRowIndex(e){this.rowIndex=e}}class Xs extends ee{constructor(e,t){super(),this.center=e,this.rowLen=1,this.colLen=2,this.points=[],this.cells=[],this.geoType=u.Table,this.setId(t),t||this.init()}init(){let e=G.createCell(this.vectorId),t=G.createCell(this.vectorId);e.rowIndex=0,e.colIndex=0,t.rowIndex=0,t.colIndex=1,e.width=90,t.width=170,this.cells[0]=[],this.cells[0][0]=e.vectorId,this.cells[0][1]=t.vectorId,this.setPoints2d()}isContain(e){let t=[];return t.push(this.points[0]),t.push(this.points[1]),t.push(this.points[2]),t.push(this.points[3]),g.isPointInPoly(e,t)}setPoints2d(){let e=[],t=[],s=0,i=0;for(let n=0;n<this.cells.length;++n)for(let l=0;l<this.cells[n].length;++l){const o=r.getCell(this.cells[n][l]);e.includes(o.rowIndex)||(e.push(o.rowIndex),s+=o.height),t.includes(o.colIndex)||(t.push(o.colIndex),i+=o.width)}this.points=[],this.points[0]={x:this.center.x-i/c.res*y.defaultZoom/c.zoom/2,y:this.center.y+s/c.res*y.defaultZoom/c.zoom/2},this.points[1]={x:this.center.x+i/c.res*y.defaultZoom/c.zoom/2,y:this.center.y+s/c.res*y.defaultZoom/c.zoom/2},this.points[2]={x:this.center.x+i/c.res*y.defaultZoom/c.zoom/2,y:this.center.y-s/c.res*y.defaultZoom/c.zoom/2},this.points[3]={x:this.center.x-i/c.res*y.defaultZoom/c.zoom/2,y:this.center.y-s/c.res*y.defaultZoom/c.zoom/2}}setValue(e){this.cells=[];let t=0,s=0;for(let l=0;l<e.length;++l){const o=e[l];this.cells[o.rowIndex]||(this.cells[o.rowIndex]=[]);let a=this.cells[o.rowIndex][o.colIndex],h=r.getCell(a);h||(h=G.createCell(this.vectorId),this.cells[o.rowIndex][o.colIndex]=h.vectorId),h.width=o.width,h.height=o.height,h.value=o.value,h.colIndex=o.colIndex,h.rowIndex=o.rowIndex,s<o.rowIndex&&(s=o.rowIndex),t<o.colIndex&&(t=o.colIndex)}++s,++t;let i=0,n=0;for(let l=s;l<this.cells.length;++l)for(let o=0;o<this.cells[l].length;++o)r.getCell(this.cells[l][o])&&r.deleteCell(this.cells[l][o]);this.cells.splice(s,this.cells.length-s);for(let l=0;l<s;++l){for(let o=t;o<this.cells[l].length;++o)r.getCell(this.cells[l][o])&&r.deleteCell(this.cells[l][o]);this.cells[l].splice(t,this.cells[0].length-t)}this.rowLen=this.cells.length,this.colLen=this.cells[0].length;for(let l=0;l<s;++l){const o=r.getCell(this.cells[l][0]);n+=o.height}for(let l=0;l<t;++l){const o=r.getCell(this.cells[0][l]);i+=o.width}this.points[1]={x:this.points[0].x+i/c.res,y:this.points[0].y},this.points[2]={x:this.points[0].x+i/c.res,y:this.points[0].y-n/c.res},this.points[3]={x:this.points[0].x,y:this.points[0].y-n/c.res},this.center={x:(this.points[0].x+this.points[1].x)/2,y:(this.points[0].y+this.points[2].y)/2}}getCellPos(e){let t=0,s=0;const i=r.getCell(e);for(let n=0;n<i.rowIndex;++n){const l=r.getCell(this.cells[n][0]);t+=l.height*c.ratio}for(let n=0;n<i.colIndex;++n){const l=r.getCell(this.cells[0][n]);s+=l.width*c.ratio}return{x:s,y:t}}}class Es{constructor(){}createCell(e,t,s){let i=new Ys(e,t);return r.addCell(i,s),i}createTable(e,t,s){let i=new Xs(e,t);return i.setPoints2d(),r.addTable(i,s),i}setTableInfo(e){let t=r.getTable(e.vectorId);t.vectorId=e.vectorId,t.center=JSON.parse(JSON.stringify(e.center)),t.points=JSON.parse(JSON.stringify(e.points)),t.rowLen=e.rowLen,t.colLen=e.colLen,t.cells=e.cells}setCellInfo(e){let t=r.getCell(e.vectorId);t.vectorId=e.vectorId,t.width=e.width,t.height=e.height,t.value=e.value,t.colIndex=e.colIndex,t.rowIndex=e.rowIndex,t.parent=e.parent}deleteTable(e,t){r.deleteTable(e,t)}deleteCell(e,t){r.deleteCell(e,t)}clearDefaultTables(){for(let e=0;e<k.floors.length;++e){let t=k.floors[e].tables;for(let s in t){let i=t[s];(i.value==null||i.value.trim()=="")&&this.deleteTable(i.vectorId,e)}}}}const G=new Es;class Us extends ee{constructor(e,t,s){super(),this.center=t,this.url=e,this.image=null,this.width=40,this.height=30,this.angle=0,this.scale=1,this.ratio=1,this.points=[],this.geoType=u.CustomImage,this.setId(s)}isContain(e){let t={x:this.center.x-this.ratio*this.width/c.res*this.scale,y:this.center.y+this.ratio*this.height/c.res*this.scale},s={x:this.center.x,y:this.center.y+this.ratio*this.height/c.res*this.scale},i={x:this.center.x,y:this.center.y},n={x:this.center.x-this.ratio*this.width/c.res*this.scale,y:this.center.y},l={x:this.center.x-this.ratio*this.width/2/c.res*this.scale,y:this.center.y+this.ratio*this.height/2/c.res*this.scale};return t=this.rotatePoint(t,l,this.angle),s=this.rotatePoint(s,l,this.angle),i=this.rotatePoint(i,l,this.angle),n=this.rotatePoint(n,l,this.angle),this.points=[],this.points.push(t),this.points.push(n),this.points.push(i),this.points.push(s),g.isPointInPoly(e,this.points)?b.Select:null}rotatePoint(e,t,s){s=-1*s;var i=t.x,n=t.y,l=e.x,o=e.y,a=i+(l-i)*Math.cos(s*Math.PI/180)-(o-n)*Math.sin(s*Math.PI/180),h=n+(l-i)*Math.sin(s*Math.PI/180)+(o-n)*Math.cos(s*Math.PI/180),f={x:a,y:h};return f}setImageData(e){this.image=e}setUrl(e){this.url=e}setAngle(e){this.angle=e}setScale(e){this.scale=e}setRatio(e){this.ratio=e}}class Js{constructor(){this.defaultPix=60}async createCustomImage(e,t,s){const i=new Us(e,t,s);if(i.url){const n=await r.loadImageData(i.url);i.setImageData(n),i.width=n.width,i.height=n.height;let l=Math.max(n.width,n.height);i.ratio=this.defaultPix/l}return r.addCustomImage(i),i}deleteCustomImage(e,t){r.deleteCustomImage(e,t)}setCustomImageInfo(e){let t=r.getCustomImage(e.vectorId);t.vectorId=e.vectorId,t.angle=e.angle,t.url=e.url,t.scale=e.scale,t.center=JSON.parse(JSON.stringify(e.center))}}const ke=new Js;class js{constructor(){}async createBgImage(e,t,s){const i=new bs(e,t,s);if(i.url){const n=await r.loadImageData(i.url);i.setImageData(n)}return r.addBgImage(i),i}deleteBgImage(){r.deleteBgImage()}setBgImageInfo(e){let t=r.getBgImage(e.vectorId);t.vectorId=e.vectorId,t.url=e.url,t.scale=e.scale,t.center=JSON.parse(JSON.stringify(e.center))}}const Fe=new js;class Zs{constructor(e){this.layer=e,this.version="v1.1",this.vectorsJson=null}async load(e){if(!e||!e.floors){r.initFloor(0);const t=r.createTitle();r.addTitle(t);const s=r.createCompass();r.addCompass(s);return}r.setCurrentId(e.currentId);for(let t=0;t<e.floors.length;++t){let s=e.floors[t];r.initFloor(t);for(let l in s.points)F.createPoint(s.points[l].x,s.points[l].y,s.points[l].vectorId,t);for(let l in s.walls){let o=F.createWall(s.walls[l].start,s.walls[l].end,s.walls[l].vectorId,t);s.walls[l].color&&o.setColor(s.walls[l].color)}for(let l in s.tags){let o=ve.createTag(s.tags[l].center,s.tags[l].vectorId,t);o.setValue(s.tags[l].value),s.tags[l].color&&o.setColor(s.tags[l].color),s.tags[l].fontSize&&o.setFontSize(s.tags[l].fontSize)}for(let l in s.customImages){let o=await ke.createCustomImage(s.customImages[l].url,s.customImages[l].center,s.customImages[l].vectorId);o.setAngle(s.customImages[l].angle),o.setScale(s.customImages[l].scale),o.setRatio(s.customImages[l].ratio)}for(let l in s.tables){let o=G.createTable(s.tables[l].center,s.tables[l].vectorId,t);o.rowLen=s.tables[l].rowLen,o.colLen=s.tables[l].colLen,o.points=s.tables[l].points,o.cells=s.tables[l].cells}for(let l in s.cells){let o=G.createCell(s.cells[l].parent,s.cells[l].vectorId,t);o.width=s.cells[l].width,o.height=s.cells[l].height,o.value=s.cells[l].value,o.colIndex=s.cells[l].colIndex,o.rowIndex=s.cells[l].rowIndex}for(let l in s.rectangles){let o=ye.createRectangle(s.rectangles[l].points[0],s.rectangles[l].points[2],s.rectangles[l].vectorId,t);s.rectangles[l].color&&o.setColor(s.rectangles[l].color)}for(let l in s.circles){let o=Te.createCircle2(s.circles[l].center,s.circles[l].radius,s.circles[l].vectorId,t);s.circles[l].color&&o.setColor(s.circles[l].color)}for(let l in s.arrows){let o=pe.createArrow(s.arrows[l].startPoint,s.arrows[l].endPoint,s.arrows[l].vectorId,t);s.arrows[l].color&&o.setColor(s.arrows[l].color)}for(let l in s.icons)ae.createIcon2(s.icons[l].center,s.icons[l].radius,s.icons[l].value,s.icons[l].vectorId,t);for(let l in s.signs){let o=te.createSign(s.signs[l].center,s.signs[l].geoType,s.signs[l].vectorId,t);o.angle=s.signs[l].angle,s.signs[l].scale&&o.setScale(s.signs[l].scale)}const i=r.createTitle(s.title.value,s.title.vectorId,t);r.addTitle(i);const n=r.createCompass(s.compass.angle,s.compass.vectorId,t);if(r.addCompass(n),s.bgImage&&s.bgImage.url){const l=await Fe.createBgImage(s.bgImage.url,s.bgImage.center);s.bgImage.hasOwnProperty("scale")&&l.setScale(s.bgImage.scale)}}}}class Gs{constructor(){this.history={records:[],currentRecordIndex:-1,state:{pre:0,next:0}}}getCurrentRecordIndex(){return this.history.currentRecordIndex}getHistoryRecord(){return this.history.currentRecordIndex==null||this.history.records.length==0?null:this.history.records[this.history.currentRecordIndex]}getHistoryRecords(){return this.history.records}getHistoryState(){return this.history.state}addHistoryRecord(e){const t=this.history.records.length;if(t==0)this.history.records.push(e),this.history.currentRecordIndex=0;else if(this.history.currentRecordIndex+1==t)this.history.records.push(e),++this.history.currentRecordIndex;else{const s=this.history.records.slice(0,this.history.currentRecordIndex+1);s.push(e),this.history.records=s,++this.history.currentRecordIndex}}setHistoryState(e,t){this.history.state.pre=e,this.history.state.next=t}undoHistoryRecord(){--this.history.currentRecordIndex}redoHistoryRecord(){++this.history.currentRecordIndex}clearHistoryRecord(){this.history.records=[],this.setHistoryState(0,0)}hasRecords(){return this.history.records.length>0}clear(){this.history={records:[],currentRecordIndex:-1,state:{pre:0,next:0}}}}const Q=new Gs;window.historyService=Q;const P={PanBackGround:"panBackGround",AddWall:"addWall",AddingWall:"addingWall",MoveWall:"moveWall",MoveWallPoint:"moveWallPoint",AddTag:"addTag",MoveTag:"moveTag",AddRectangle:"addRectangle",AddingRectangle:"addingRectangle",MoveRectangle:"moveRectangle",MoveRectangleVertex:"moveRectangleVertex",MoveRectangleSide:"moveRectangleSide",AddCircle:"addCircle",AddingCircle:"addingCircle",MoveCircle:"moveCircle",MoveCircleVertex:"moveCircleVertex",AddArrow:"addArrow",AddingArrow:"addingArrow",MoveArrow:"moveArrow",AddIcon:"addIcon",AddingIcon:"addingIcon",MoveIcon:"moveIcon",MoveIconVertex:"moveIconVertex",AddTable:"addTable",MoveTable:"moveTable",AddCustomImage:"addCustomImage",MoveCustomImage:"moveCustomImage",AddBgImage:"addBgImage",MoveBgImage:"moveBgImage",AddSign:"addSign",MoveSign:"moveSign",MoveTitle:"moveTitle",MoveCompass:"moveCompass"};class Hs{constructor(){}isDifferentForWalls(e,t){return!(e.start==t.start&&e.end==t.end&&e.color==t.color)}isDifferentForTags(e,t){return!(g.equalPoint(e.center,t.center)&&e.value==t.value&&e.color==t.color&&e.fontSize==t.fontSize)}isDifferentForTables(e,t){if(g.equalPoint(e.center,t.center)){if(e.rowLen!=t.rowLen||e.colLen!=t.colLen||e.cells.length!=t.cells.length)return!0;for(let s=0;s<e.cells.length;++s)for(let i=0;i<e.cells[s].length;++i){const n=r.getCell(e.cells[s][i]),l=r.getCell(t.cells[s][i]);if(this.isDifferentForCells(n,l))return!0}}else return!0;return!1}isDifferentForCells(e,t){return!(e.value==t.value&&e.width==t.width&&e.height==t.height&&e.colIndex==t.colIndex&&e.rowIndex==t.rowIndex&&e.parent==t.parent)}isDifferentForRectangles(e,t){for(let s=0;s<e.points.length;++s)if(!g.equalPoint(e.points[s],t.points[s])||e.color!=t.color)return!0;return!1}isDifferentForCircles(e,t){if(!g.equalPoint(e.center,t.center)||e.color!=t.color||e.radius!=t.radius)return!0;for(let s=0;s<e.points.length;++s)if(!g.equalPoint(e.points[s],t.points[s]))return!0;return!1}isDifferentForArrows(e,t){return!(g.equalPoint(e.startPoint,t.startPoint)&&g.equalPoint(e.endPoint,t.endPoint)&&e.color==t.color)}isDifferentForIcons(e,t){if(g.equalPoint(e.center,t.center)){if(e.radius!=t.radius)return!0;if(e.value!=t.value)return!0;if(e.angle!=t.angle)return!0;for(let s=0;s<e.points.length;++s)if(!g.equalPoint(e.points[s],t.points[s]))return!0}else return!0;return!1}isDifferentForSigns(e,t){return!(e.scale==t.scale&&JSON.stringify(e.center)==JSON.stringify(t.center)&&e.angle==t.angle)}isDifferentForTitle(e,t){return e.value!=t.value}isDifferentForBgImage(e,t){return!(e.url==t.url&&e.scale==t.scale&&JSON.stringify(e.center)==JSON.stringify(t.center))}isDifferentForCompass(e,t){return e.angle!=t.angle}isDifferentForCustomImages(e,t){return!(e.angle==t.angle&&e.scale==t.scale&&e.url==t.url&&e.ratio==t.ratio)}assignWallFromWall(e,t){const s={};s.vectorId=e.vectorId,s.start=t.start,s.end=t.end,s.color=t.color,F.setWallInfo(s)}assignPointFromPoint(e,t){const s={};s.vectorId=e.vectorId,s.position={x:t.x,y:t.y},s.parent=JSON.parse(JSON.stringify(t.parent)),F.setPointInfo(s)}assignTagFromTag(e,t){const s={};s.vectorId=e.vectorId,s.value=t.value,s.color=t.color,s.fontSize=t.fontSize,s.center=JSON.parse(JSON.stringify(t.center)),s.points2d=JSON.parse(JSON.stringify(t.points)),ve.setTagInfo(s)}assignCellFromCell(e,t){const s={};s.vectorId=e.vectorId,s.width=t.width,s.height=t.height,s.value=t.value,s.colIndex=t.colIndex,s.rowIndex=t.rowIndex,s.parent=t.parent,G.setCellInfo(s)}assignTableFromTable(e,t){const s={};s.vectorId=e.vectorId,s.rowLen=t.rowLen,s.colLen=t.colLen,s.center=JSON.parse(JSON.stringify(t.center)),s.points=JSON.parse(JSON.stringify(t.points)),s.cells=t.cells,G.setTableInfo(s)}assignRectangleFromRectangle(e,t){const s={};s.vectorId=e.vectorId,s.angle=t.angle,s.color=t.color,s.points=JSON.parse(JSON.stringify(t.points)),ye.setRectangleInfo(s)}assignCircleFromCircle(e,t){const s={};s.vectorId=e.vectorId,s.radius=t.radius,s.color=t.color,s.center=JSON.parse(JSON.stringify(t.center)),s.points=JSON.parse(JSON.stringify(t.points)),Te.setCircleInfo(s)}assignArrowFromArrow(e,t){const s={};s.vectorId=e.vectorId,s.color=t.color,s.startPoint=JSON.parse(JSON.stringify(t.startPoint)),s.endPoint=JSON.parse(JSON.stringify(t.endPoint)),pe.setArrowInfo(s)}assignIconFromIcon(e,t){const s={};s.vectorId=e.vectorId,s.radius=t.radius,s.value=t.value,s.angle=t.angle,s.center=JSON.parse(JSON.stringify(t.center)),s.points=JSON.parse(JSON.stringify(t.points)),ae.setIconInfo(s)}assignSignFromSign(e,t){const s={};s.vectorId=e.vectorId,s.angle=t.angle,s.center=JSON.parse(JSON.stringify(t.center)),s.scale=t.scale,te.setSignInfo(s)}assignTitleFromTitle(e,t){const s={};s.vectorId=e.vectorId,s.value=t.value,r.updateTitle(s.value)}assignBgImageFromBgImage(e,t){const s={};s.vectorId=e.vectorId,s.url=t.url,s.center=JSON.parse(JSON.stringify(t.center)),s.scale=t.scale,Fe.setBgImageInfo(s)}assignCompassFromCompass(e,t){const s={};s.vectorId=e.vectorId,s.angle=t.angle,r.updateCompass(s.angle)}assignCustomImageFromCustomImage(e,t){const s={};s.vectorId=e.vectorId,s.angle=t.angle,s.url=t.url,s.center=JSON.parse(JSON.stringify(t.center)),s.scale=t.scale,ke.setCustomImageInfo(s)}deletePoint(e){const s=r.getPoint(e).parent;for(const i in s)r.deletePoint(e,i)}getDataForPoint(e){const t={};return t.id=e.vectorId,g.clonePoint(t,e),t.parent=JSON.parse(JSON.stringify(e.parent)),t.type=e.geoType,t}getDataForWall(e){const t={};return t.id=e.vectorId,t.color=e.color,t.start=e.start,t.end=e.end,t.type=e.geoType,t}getDataForSign(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.center=JSON.parse(JSON.stringify(e.center)),t.scale=e.scale,t.angle=e.angle,t}getDataForTag(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.color=e.color,t.fontSize=e.fontSize,t.center={},g.clonePoint(t.center,e.center),t.points=[].concat(e.points2d),t.value=e.value,t}getDataForCell(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.width=e.width,t.height=e.height,t.value=e.value,t.colIndex=e.colIndex,t.rowIndex=e.rowIndex,t.parent=e.parent,t}getDataForTable(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.rowLen=e.rowLen,t.colLen=e.colLen,t.center={},g.clonePoint(t.center,e.center),t.points=[].concat(e.points),t.cells=[].concat(e.cells),t}getDataForRectangle(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.color=e.color,t.angle=e.angle,t.points=[].concat(e.points),t}getDataForCircle(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.color=e.color,t.center={},g.clonePoint(t.center,e.center),t.points=[].concat(e.points),t.radius=e.radius,t}getDataForArrow(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.color=e.color,t.startPoint={},g.clonePoint(t.startPoint,e.startPoint),t.endPoint={},g.clonePoint(t.endPoint,e.endPoint),t}getDataForIcon(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.value=e.value,t.angle=e.angle,t.center={},g.clonePoint(t.center,e.center),t.points=[].concat(e.points),t.radius=e.radius,t}getDataForTitle(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.value=e.value,t}getDataForBgImage(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.url=e.url,t.center={},g.clonePoint(t.center,e.center),t.scale=e.scale,t}getDataForCompass(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.angle=e.angle,t}getDataForCustomImage(e){const t={};return t.id=e.vectorId,t.type=e.geoType,t.angle=e.angle,t.scale=e.scale,t.url=e.url,t.center={},g.clonePoint(t.center,e.center),t.ratio=e.ratio,t}}const v=new Hs,S={AddPoint:"addPoint",DeletePoint:"deletePoint",ModifyPoint:"modifyPoint",AddWall:"addWall",DeleteWall:"deleteWall",ModifyWall:"modifyWall",AddTag:"addTag",DeleteTag:"deleteTag",ModifyTag:"modifyTag",AddCell:"addCell",DeleteCell:"deleteCell",ModifyCell:"modifyCell",AddTable:"addTable",DeleteTable:"deleteTable",ModifyTable:"modifyTable",AddRectangle:"addRectangle",DeleteRectangle:"deleteRectangle",ModifyRectangle:"modifyRectangle",AddCircle:"addCircle",DeleteCircle:"deleteCircle",ModifyCircle:"modifyCircle",AddArrow:"addArrow",DeleteArrow:"deleteArrow",ModifyArrow:"modifyArrow",AddIcon:"addIcon",DeleteIcon:"deleteIcon",ModifyIcon:"modifyIcon",AddSign:"addSign",DeleteSign:"deleteSign",ModifySign:"modifySign",AddCustomImage:"addCustomImage",DeleteCustomImage:"deleteCustomImage",ModifyCustomImage:"modifyCustomImage",AddBgImage:"addBgImage",DeleteBgImage:"deleteBgImage",ModifyBgImage:"modifyBgImage",ModifyTitle:"modifyTitle",ModifyImage:"modifyImage",ModifyCompass:"modifyCompass"};class $s{constructor(){this.lastData={},this.elements={}}saveCurrentInfo(){this.lastData.currentFloor=r.getCurrentFloor(),this.lastData.points=JSON.parse(JSON.stringify(r.getPoints())),this.lastData.walls=JSON.parse(JSON.stringify(r.getWalls())),this.lastData.signs=JSON.parse(JSON.stringify(r.getSigns())),this.lastData.tags=JSON.parse(JSON.stringify(r.getTags())),this.lastData.cells=JSON.parse(JSON.stringify(r.getCells())),this.lastData.tables=JSON.parse(JSON.stringify(r.getTables())),this.lastData.rectangles=JSON.parse(JSON.stringify(r.getRectangles())),this.lastData.circles=JSON.parse(JSON.stringify(r.getCircles())),this.lastData.arrows=JSON.parse(JSON.stringify(r.getArrows())),this.lastData.icons=JSON.parse(JSON.stringify(r.getIcons())),this.lastData.title=JSON.parse(JSON.stringify(r.getTitle()));let e=r.getBgImage();e&&(this.lastData.bgImage=JSON.parse(JSON.stringify(e))),this.lastData.compass=JSON.parse(JSON.stringify(r.getCompass())),this.lastData.customImages=JSON.parse(JSON.stringify(r.getCustomImages()))}operate(){return this.elements={},this.comparePoints(),this.compareWalls(),this.compareSigns(),this.compareTags(),this.compareCells(),this.compareTables(),this.compareRectangles(),this.compareCircles(),this.compareArrows(),this.compareIcons(),this.compareTitle(),this.compareBgImage(),this.compareCompass(),this.compareCustomImages(),this.elements.points.length==0&&this.elements.walls.length==0&&this.elements.signs.length==0&&this.elements.tags.length==0&&this.elements.cells.length==0&&this.elements.tables.length==0&&this.elements.rectangles.length==0&&this.elements.circles.length==0&&this.elements.arrows.length==0&&this.elements.icons.length==0&&this.elements.title==null&&this.elements.bgImage==null&&this.elements.compass==null&&this.elements.customImages.length==0?(this.saveCurrentInfo(),!1):(this.lastData={},!0)}comparePoints(){const e=r.getPoints();this.elements.points=[];for(const t in e){const s=e[t];if(this.lastData.points[t]){const i=this.lastData.points[t];if(s.x==i.x&&s.y==i.y&&JSON.stringify(s.parent)==JSON.stringify(i.parent)){delete this.lastData.points[t];continue}else{const n={handle:S.ModifyPoint,prePoint:v.getDataForPoint(i),curPoint:v.getDataForPoint(s)};this.elements.points.push(n)}}else{const i={handle:S.AddPoint,point:v.getDataForPoint(s)};this.elements.points.push(i)}delete this.lastData.points[t]}for(const t in this.lastData.points){const s={handle:S.DeletePoint,point:v.getDataForPoint(this.lastData.points[t])};this.elements.points.push(s)}}compareWalls(){this.elements.walls=[];const e=r.getWalls();for(const t in e){const s=e[t],i=this.lastData.walls[t];if(i)if(v.isDifferentForWalls(s,i)){const n={handle:S.ModifyWall,preWall:v.getDataForWall(i),curWall:v.getDataForWall(s)};this.elements.walls.push(n)}else{delete this.lastData.walls[t];continue}else{const n={handle:S.AddWall,wall:v.getDataForWall(s)};this.elements.walls.push(n)}delete this.lastData.walls[t]}for(const t in this.lastData.walls){const s={handle:S.DeleteWall,wall:v.getDataForWall(this.lastData.walls[t])};this.elements.walls.push(s)}}compareTags(){this.elements.tags=[];const e=r.getTags();for(const t in e){const s=e[t],i=this.lastData.tags[t];if(i)if(v.isDifferentForTags(s,i)){const n={handle:S.ModifyTag,preTag:v.getDataForTag(i),curTag:v.getDataForTag(s)};this.elements.tags.push(n)}else{delete this.lastData.tags[t];continue}else{const n={handle:S.AddTag,tag:v.getDataForTag(s)};this.elements.tags.push(n)}delete this.lastData.tags[t]}for(const t in this.lastData.tags){const s={handle:S.DeleteTag,tag:v.getDataForTag(this.lastData.tags[t])};this.elements.tags.push(s)}}compareCells(){this.elements.cells=[];const e=r.getCells();for(const t in e){const s=e[t],i=this.lastData.cells[t];if(i)if(v.isDifferentForCells(s,i)){const n={handle:S.ModifyCell,preCell:v.getDataForCell(i),curCell:v.getDataForCell(s)};this.elements.cells.push(n)}else{delete this.lastData.cells[t];continue}else{const n={handle:S.AddCell,cell:v.getDataForCell(s)};this.elements.cells.push(n)}delete this.lastData.cells[t]}for(const t in this.lastData.cells){const s={handle:S.DeleteCell,cell:v.getDataForCell(this.lastData.cells[t])};this.elements.cells.push(s)}}compareTables(){this.elements.tables=[];const e=r.getTables();for(const t in e){const s=e[t],i=this.lastData.tables[t];if(i)if(v.isDifferentForTables(s,i)){const n={handle:S.ModifyTable,preTable:v.getDataForTable(i),curTable:v.getDataForTable(s)};this.elements.tables.push(n)}else{delete this.lastData.tables[t];continue}else{const n={handle:S.AddTable,table:v.getDataForTable(s)};this.elements.tables.push(n)}delete this.lastData.tables[t]}for(const t in this.lastData.tables){const s={handle:S.DeleteTable,table:v.getDataForTable(this.lastData.tables[t])};this.elements.tables.push(s)}}compareRectangles(){this.elements.rectangles=[];const e=r.getRectangles();for(const t in e){const s=e[t],i=this.lastData.rectangles[t];if(i)if(v.isDifferentForRectangles(s,i)){const n={handle:S.ModifyRectangle,preRectangle:v.getDataForRectangle(i),curRectangle:v.getDataForRectangle(s)};this.elements.rectangles.push(n)}else{delete this.lastData.rectangles[t];continue}else{const n={handle:S.AddRectangle,rectangle:v.getDataForRectangle(s)};this.elements.rectangles.push(n)}delete this.lastData.rectangles[t]}for(const t in this.lastData.rectangles){const s={handle:S.DeleteRectangle,rectangle:v.getDataForRectangle(this.lastData.rectangles[t])};this.elements.rectangles.push(s)}}compareCircles(){this.elements.circles=[];const e=r.getCircles();for(const t in e){const s=e[t],i=this.lastData.circles[t];if(i)if(v.isDifferentForCircles(s,i)){const n={handle:S.ModifyCircle,preCircle:v.getDataForCircle(i),curCircle:v.getDataForCircle(s)};this.elements.circles.push(n)}else{delete this.lastData.circles[t];continue}else{const n={handle:S.AddCircle,circle:v.getDataForCircle(s)};this.elements.circles.push(n)}delete this.lastData.circles[t]}for(const t in this.lastData.circles){const s={handle:S.DeleteCircle,circle:v.getDataForCircle(this.lastData.circles[t])};this.elements.circles.push(s)}}compareArrows(){this.elements.arrows=[];const e=r.getArrows();for(const t in e){const s=e[t],i=this.lastData.arrows[t];if(i)if(v.isDifferentForArrows(s,i)){const n={handle:S.ModifyArrow,preArrow:v.getDataForArrow(i),curArrow:v.getDataForArrow(s)};this.elements.arrows.push(n)}else{delete this.lastData.arrows[t];continue}else{const n={handle:S.AddArrow,arrow:v.getDataForArrow(s)};this.elements.arrows.push(n)}delete this.lastData.arrows[t]}for(const t in this.lastData.arrows){const s={handle:S.DeleteArrow,arrow:v.getDataForArrow(this.lastData.arrows[t])};this.elements.arrows.push(s)}}compareIcons(){this.elements.icons=[];const e=r.getIcons();for(const t in e){const s=e[t],i=this.lastData.icons[t];if(i)if(v.isDifferentForIcons(s,i)){const n={handle:S.ModifyIcon,preIcon:v.getDataForIcon(i),curIcon:v.getDataForIcon(s)};this.elements.icons.push(n)}else{delete this.lastData.icons[t];continue}else{const n={handle:S.AddIcon,icon:v.getDataForIcon(s)};this.elements.icons.push(n)}delete this.lastData.icons[t]}for(const t in this.lastData.icons){const s={handle:S.DeleteIcon,icon:v.getDataForIcon(this.lastData.icons[t])};this.elements.icons.push(s)}}compareSigns(){this.elements.signs=[];const e=r.getSigns();for(const t in e){const s=e[t],i=this.lastData.signs[t];if(i)if(v.isDifferentForSigns(s,i)){const n={handle:S.ModifySign,preSign:v.getDataForSign(i),curSign:v.getDataForSign(s)};this.elements.signs.push(n)}else{delete this.lastData.signs[t];continue}else{const n={handle:S.AddSign,sign:v.getDataForSign(s)};this.elements.signs.push(n)}delete this.lastData.signs[t]}for(const t in this.lastData.signs){const s={handle:S.DeleteSign,sign:v.getDataForSign(this.lastData.signs[t])};this.elements.signs.push(s)}}compareTitle(){this.elements.title=null;const e=r.getTitle(),t=this.lastData.title;if(v.isDifferentForTitle(e,t)){const i={handle:S.ModifyTitle,preTitle:v.getDataForTitle(t),curTitle:v.getDataForTitle(e)};this.elements.title=i}}compareBgImage(){this.elements.bgImage=null;const e=r.getBgImage(),t=this.lastData.bgImage;let s={};(!t||!t.url)&&(!e||!e.geoType)||((!t||!t.url)&&e&&e.geoType?(s={handle:S.AddBgImage,bgImage:v.getDataForBgImage(e)},this.elements.bgImage=s):t&&t.url&&(!e||!e.geoType)?(s={handle:S.DeleteBgImage,bgImage:v.getDataForBgImage(this.lastData.bgImage)},this.elements.bgImage=s):v.isDifferentForBgImage(e,t)&&(s={handle:S.ModifyBgImage,preBgImage:v.getDataForBgImage(t),curBgImage:v.getDataForBgImage(e)},this.elements.bgImage=s))}compareCompass(){this.elements.compass=null;const e=r.getCompass(),t=this.lastData.compass;if(v.isDifferentForCompass(e,t)){const i={handle:S.ModifyCompass,preCompass:v.getDataForCompass(t),curCompass:v.getDataForCompass(e)};this.elements.compass=i}}compareCustomImages(){this.elements.customImages=[];const e=r.getCustomImages();for(const t in e){const s=e[t],i=this.lastData.customImages[t];if(i)if(v.isDifferentForCustomImages(s,i)){const n={handle:S.ModifyCustomImage,preCustomImage:v.getDataForCustomImage(i),curCustomImage:v.getDataForCustomImage(s)};this.elements.customImages.push(n)}else{delete this.lastData.customImages[t];continue}else{const n={handle:S.AddCustomImage,customImage:v.getDataForCustomImage(s)};this.elements.customImages.push(n)}delete this.lastData.customImages[t]}for(const t in this.lastData.customImages){const s={handle:S.DeleteCustomImage,customImage:v.getDataForCustomImage(this.lastData.customImages[t])};this.elements.customImages.push(s)}}}const ge=new $s;class qs{constructor(){this.bus=Ge()}init(){ge.saveCurrentInfo(),this.bus.emit("redoAvailable",!1),this.bus.emit("undoAvailable",!1)}clear(){ge.lastData={},ge.elements={},Q.clearHistoryRecord()}save(){return ge.operate()?(Q.addHistoryRecord(ge.elements),ge.saveCurrentInfo(),this.setState(),Q.getHistoryState().pre&&this.bus.emit("undoAvailable",!0),ge.elements):void 0}setState(){const e={pre:0,next:0},t=Q.getCurrentRecordIndex(),s=Q.getHistoryRecords();t>-1&&(e.pre=1),t<s.length-1&&(e.next=1);const i=Q.getHistoryState();(i.pre!=e.pre||i.next!=e.next)&&Q.setHistoryState(e.pre,e.next)}canUndo(){return this.setState().pre!=0}canRedo(){return this.setState().next!=0}async handleUndo(){await this.goPreState(),this.layer.renderer.autoRedraw(),Q.getHistoryState().pre?this.bus.emit("undoAvailable",!0):this.bus.emit("undoAvailable",!1),this.bus.emit("redoAvailable",!0),this.layer.uiControl.clearUI()}async handleRedo(){await this.goNextState(),this.layer.renderer.autoRedraw(),Q.getHistoryState().next?this.bus.emit("redoAvailable",!0):this.bus.emit("redoAvailable",!1),this.bus.emit("undoAvailable",!0),this.layer.uiControl.clearUI()}async goPreState(){const e=Q.getHistoryRecord();e?(x.clearItems(),this.layer.uiControl.clearUI(),e.type="pre",this.goPreForPoints(e.points),this.goPreForWalls(e.walls),this.goPreForTags(e.tags),this.goPreForCells(e.cells),this.goPreForTables(e.tables),this.goPreForRectangles(e.rectangles),this.goPreForCircles(e.circles),this.goPreForArrows(e.arrows),this.goPreForIcons(e.icons),this.goPreForSigns(e.signs),this.goPreForTitle(e.title),await this.goPreForBgImage(e.bgImage),this.goPreForCompass(e.compass),await this.goPreForCustomImages(e.customImages),Q.undoHistoryRecord(),ge.saveCurrentInfo(),this.setState()):console.error("goPreState超出范围!")}goPreForPoints(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddPoint)v.deletePoint(s.point.id);else if(s.handle==S.DeletePoint){let i=F.createPoint(s.point.x,s.point.y,s.point.id);i.parent=JSON.parse(JSON.stringify(s.point.parent))}else if(s.handle==S.ModifyPoint){const i=s.prePoint;let n=r.getPoint(s.curPoint.id);v.assignPointFromPoint(n,i)}}}goPreForWalls(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddWall)r.deleteWall(s.wall.id);else if(s.handle==S.DeleteWall){const i=s.wall;let n=F.createWall(i.start,i.end,i.id);v.assignWallFromWall(n,i)}else if(s.handle==S.ModifyWall){const i=s.preWall;let n=r.getWall(s.curWall.id);v.assignWallFromWall(n,i)}}}goPreForSigns(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddSign)r.deleteSign(s.sign.id);else if(s.handle==S.DeleteSign){let i=te.createSign(s.sign.center,s.sign.type,s.sign.id);v.assignSignFromSign(i,s.sign)}else if(s.handle==S.ModifySign){const i=s.preSign;let n=r.getSign(s.curSign.id);v.assignSignFromSign(n,i)}}}goPreForTags(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddTag)ve.deleteTag(s.tag.id);else if(s.handle==S.DeleteTag){let i=ve.createTag(s.tag.center,s.tag.id);v.assignTagFromTag(i,s.tag)}else if(s.handle==S.ModifyTag){const i=s.preTag;let n=r.getTag(s.curTag.id);v.assignTagFromTag(n,i)}}}goPreForCells(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddCell)G.deleteCell(s.cell.id);else if(s.handle==S.DeleteCell){let i=G.createCell(s.cell.parent,s.cell.id);v.assignCellFromCell(i,s.cell)}else if(s.handle==S.ModifyCell){const i=s.preCell;let n=r.getCell(s.curCell.id);v.assignCellFromCell(n,i)}}}goPreForTables(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddTable)G.deleteTable(s.table.id);else if(s.handle==S.DeleteTable){let i=G.createTable(s.table.center,s.table.id);v.assignTableFromTable(i,s.table)}else if(s.handle==S.ModifyTable){const i=s.preTable;let n=r.getTable(s.curTable.id);v.assignTableFromTable(n,i)}}}goPreForRectangles(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddRectangle)ye.deleteRectangle(s.rectangle.id);else if(s.handle==S.DeleteRectangle){let i=ye.createRectangle(s.rectangle.points[0],s.rectangle.points[2],s.rectangle.id);v.assignRectangleFromRectangle(i,s.rectangle)}else if(s.handle==S.ModifyRectangle){const i=s.preRectangle;let n=r.getRectangle(s.curRectangle.id);v.assignRectangleFromRectangle(n,i)}}}goPreForCircles(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddCircle)Te.deleteCircle(s.circle.id);else if(s.handle==S.DeleteCircle){let i=Te.createCircle(s.circle.points[0],s.circle.points[2],s.circle.id);v.assignCircleFromCircle(i,s.circle)}else if(s.handle==S.ModifyCircle){const i=s.preCircle;let n=r.getCircle(s.curCircle.id);v.assignCircleFromCircle(n,i)}}}goPreForArrows(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddArrow)pe.deleteArrow(s.arrow.id);else if(s.handle==S.DeleteArrow){let i=pe.createArrow(s.arrow.startPoint,s.arrow.endPoint,s.arrow.id);v.assignArrowFromArrow(i,s.arrow)}else if(s.handle==S.ModifyArrow){const i=s.preArrow;let n=r.getArrow(s.curArrow.id);v.assignArrowFromArrow(n,i)}}}goPreForIcons(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddIcon)ae.deleteIcon(s.icon.id);else if(s.handle==S.DeleteIcon){let i=ae.createIcon(s.icon.points[0],s.icon.points[2],s.icon.value,s.icon.id);v.assignIconFromIcon(i,s.icon)}else if(s.handle==S.ModifyIcon){const i=s.preIcon;let n=r.getIcon(s.curIcon.id);v.assignIconFromIcon(n,i)}}}goPreForTitle(e){if(e!=null&&e.handle==S.ModifyTitle){const t=e.preTitle;let s=r.getTitle();v.assignTitleFromTitle(s,t)}}async goPreForBgImage(e){if(e){if(e.handle==S.AddBgImage)Fe.deleteBgImage();else if(e.handle==S.DeleteBgImage){let t=await Fe.createBgImage(e.bgImage.url,e.bgImage.id);v.assignBgImageFromBgImage(t,e.bgImage)}else if(e.handle==S.ModifyBgImage){const t=e.preBgImage;let s=r.getBgImage(e.curBgImage.id);v.assignBgImageFromBgImage(s,t)}}}goPreForCompass(e){if(e!=null&&e.handle==S.ModifyCompass){const t=e.preCompass;let s=r.getCompass();v.assignCompassFromCompass(s,t)}}async goPreForCustomImages(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddCustomImage)ke.deleteCustomImage(s.customImage.id);else if(s.handle==S.DeleteCustomImage){let i=await ke.createCustomImage(s.customImage.url,s.customImage.center,s.customImage.id);v.assignCustomImageFromCustomImage(i,s.customImage)}else if(s.handle==S.ModifyCustomImage){const i=s.preCustomImage;let n=r.getCustomImage(s.curCustomImage.id);v.assignCustomImageFromCustomImage(n,i)}}}goNextForPoints(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddPoint){let i=F.createPoint(s.point.x,s.point.y,s.point.id);v.assignPointFromPoint(i,s.point)}else if(s.handle==S.DeletePoint)v.deletePoint(s.point.id);else if(s.handle==S.ModifyPoint){const i=s.curPoint;let n=r.getPoint(s.curPoint.id);v.assignPointFromPoint(n,i)}}}goNextForWalls(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddWall){const i=s.wall;let n=F.createWall(i.start,i.end,i.id);v.assignWallFromWall(n,i)}else if(s.handle==S.DeleteWall)r.deleteWall(s.wall.id);else if(s.handle==S.ModifyWall){const i=s.curWall;let n=r.getWall(s.preWall.id);v.assignWallFromWall(n,i)}}}goNextForTags(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddTag){let i=ve.createTag(s.tag.center,s.tag.id);v.assignTagFromTag(i,s.tag)}else if(s.handle==S.DeleteTag)r.deleteTag(s.tag.id);else if(s.handle==S.ModifyTag){const i=s.curTag;let n=r.getTag(s.curTag.id);v.assignTagFromTag(n,i)}}}goNextForCells(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddCell){let i=G.createCell(s.cell.parent,s.cell.id);v.assignCellFromCell(i,s.cell)}else if(s.handle==S.DeleteCell)G.deleteCell(s.cell.id);else if(s.handle==S.ModifyCell){const i=s.curCell;let n=r.getCell(s.curCell.id);v.assignCellFromCell(n,i)}}}goNextForTables(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddTable){let i=G.createTable(s.table.center,s.table.id);v.assignTableFromTable(i,s.table)}else if(s.handle==S.DeleteTable)G.deleteTable(s.table.id);else if(s.handle==S.ModifyTable){const i=s.curTable;let n=r.getTable(s.curTable.id);v.assignTableFromTable(n,i)}}}goNextForRectangles(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddRectangle){let i=ye.createRectangle(s.rectangle.points[0],s.rectangle.points[2],s.rectangle.id);v.assignRectangleFromRectangle(i,s.rectangle)}else if(s.handle==S.DeleteRectangle)ye.deleteRectangle(s.rectangle.id);else if(s.handle==S.ModifyRectangle){const i=s.curRectangle;let n=r.getRectangle(s.curRectangle.id);v.assignRectangleFromRectangle(n,i)}}}goNextForCircles(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddCircle){let i=Te.createCircle(s.circle.points[0],s.circle.points[2],s.circle.id);v.assignCircleFromCircle(i,s.circle)}else if(s.handle==S.DeleteCircle)r.deleteCircle(s.circle.id);else if(s.handle==S.ModifyCircle){const i=s.curCircle;let n=r.getCircle(s.curCircle.id);v.assignCircleFromCircle(n,i)}}}goNextForArrows(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddArrow){let i=pe.createArrow(s.arrow.startPoint,s.arrow.endPoint,s.arrow.id);v.assignArrowFromArrow(i,s.arrow)}else if(s.handle==S.DeleteArrow)pe.deleteArrow(s.arrow.id);else if(s.handle==S.ModifyArrow){const i=s.curArrow;let n=r.getArrow(s.curArrow.id);v.assignArrowFromArrow(n,i)}}}goNextForIcons(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddIcon){let i=ae.createIcon(s.icon.points[0],s.icon.points[2],s.icon.value,s.icon.id);v.assignIconFromIcon(i,s.icon)}else if(s.handle==S.DeleteIcon)ae.deleteIcon(s.icon.id);else if(s.handle==S.ModifyIcon){const i=s.curIcon;let n=r.getIcon(s.curIcon.id);v.assignIconFromIcon(n,i)}}}goNextForSigns(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddSign){let i=te.createSign(s.sign.center,s.sign.type,s.sign.id);v.assignSignFromSign(i,s.sign)}else if(s.handle==S.DeleteSign)r.deleteSign(s.sign.id);else if(s.handle==S.ModifySign){const i=s.curSign;let n=r.getSign(s.curSign.id);v.assignSignFromSign(n,i)}}}goNextForTitle(e){if(e!=null&&e.handle==S.ModifyTitle){const t=e.curTitle;let s=r.getTitle();v.assignTitleFromTitle(s,t)}}async goNextForBgImage(e){if(e){if(e.handle==S.AddBgImage){let t=await Fe.createBgImage(e.bgImage.url,e.bgImage.center,e.bgImage.id);v.assignBgImageFromBgImage(t,e.bgImage)}else if(e.handle==S.DeleteBgImage)r.deleteBgImage();else if(e.handle==S.ModifyBgImage){const t=e.curBgImage;let s=r.getBgImage(e.curBgImage.id);v.assignBgImageFromBgImage(s,t)}}}goNextForCompass(e){if(e!=null&&e.handle==S.ModifyCompass){const t=e.curCompass;let s=r.getCompass();v.assignCompassFromCompass(s,t)}}async goNextForCustomImages(e){for(let t=0;t<e.length;++t){const s=e[t];if(s.handle==S.AddCustomImage){let i=await ke.createCustomImage(s.customImage.url,s.customImage.center,s.customImage.id);v.assignCustomImageFromCustomImage(i,s.customImage)}else if(s.handle==S.DeleteCustomImage)r.deleteCustomImage(s.customImage.id);else if(s.handle==S.ModifyCustomImage){const i=s.curCustomImage;let n=r.getCustomImage(s.curCustomImage.id);v.assignCustomImageFromCustomImage(n,i)}}}async goNextState(){Q.redoHistoryRecord();const e=Q.getHistoryRecord();if(e){x.clearFocusItem(),this.layer.uiControl.selectUI=null;let t=!1;e.rotate==null?t=!1:t=this.goNextForAngle(e.rotate),t||(this.goNextForPoints(e.points),this.goNextForWalls(e.walls),this.goNextForTags(e.tags),this.goNextForCells(e.cells),this.goNextForTables(e.tables),this.goNextForRectangles(e.rectangles),this.goNextForCircles(e.circles),this.goNextForArrows(e.arrows),this.goNextForIcons(e.icons),this.goNextForSigns(e.signs),this.goNextForTitle(e.title),await this.goNextForBgImage(e.bgImage),this.goNextForCompass(e.compass),await this.goNextForCustomImages(e.customImages)),ge.saveCurrentInfo(),this.setState()}else Q.undoHistoryRecord(),console.error("goNextState超出范围!")}}const O=new qs;class Ks{constructor(){this.start=null,this.end=null,this.currentVectorId=null}execute(e){if(this.end==null)this.end=c.getXYFromScreen(e);else if(this.currentVectorId==null){this.start={x:e.x,y:e.y};const t=pe.createArrow(this.start,this.end);this.currentVectorId=t.vectorId}else r.getArrow(this.currentVectorId).updatePoint(e,b.Start)}clear(){this.start=null,this.end=null,this.currentVectorId=null}}const le=new Ks;class Qs{constructor(){this.start=null,this.end=null,this.currentVectorId=null}execute(e){if(this.start==null)this.start=c.getXYFromScreen(e);else if(this.currentVectorId==null){this.end={x:e.x,y:e.y};const t=Te.createCircle(this.start,e);this.currentVectorId=t.vectorId}else this.end={x:e.x,y:e.y},r.getCircle(this.currentVectorId).updatePoints(e,2)}clear(){this.start=null,this.end=null,this.currentVectorId=null}}const oe=new Qs;class ei{constructor(){this.start=null,this.end=null,this.currentVectorId=null}execute(e){if(this.start==null)this.start=c.getXYFromScreen(e);else if(this.currentVectorId==null){this.end={x:e.x,y:e.y};const t=ae.createIcon(this.start,e);this.currentVectorId=t.vectorId}else this.end={x:e.x,y:e.y},r.getIcon(this.currentVectorId).updatePoints(e,2)}clear(){this.start=null,this.end=null,this.currentVectorId=null}}const re=new ei;class ti{constructor(){this.start=null,this.end=null,this.currentVectorId=null}execute(e){if(this.start==null)this.start=c.getXYFromScreen(e);else if(this.currentVectorId==null){this.end={x:e.x,y:e.y};const t=ye.createRectangle(this.start,e);this.currentVectorId=t.vectorId}else this.end={x:e.x,y:e.y},r.getRectangle(this.currentVectorId).setPoints(this.start,e)}clear(){this.start=null,this.end=null,this.currentVectorId=null}}const ue=new ti;class si{constructor(){this.needUpdateRoom=!1,this.startMoving=!1,this.moveFlag=!1,this.adsorbPointWalls={},this.splitWallId=null}movePoint(e,t,s){let i=r.getPoint(e),n=null,l=null;s!=null&&(t={x:s.x,y:s.y},n=s.linkedPointId,l=s.linkedWallId),this.needUpdateRoom=!1,this.adsorbPointWalls={},this.splitWallId=null;let o=this.canMoveForPoint(e,t,n,l);if(!o){if(this.splitWallId==null&&Object.keys(this.adsorbPointWalls).length>0){const h=i.parent,d=r.getWall(Object.keys(h)[0]).getOtherPointId(e);let m=r.getPoint(d),w=r.getPoint(Object.keys(this.adsorbPointWalls)[0]),T=g.createLine1(m,w);t=g.getJoinLinePoint(t,T),i.setPosition(t)}return!1}let a=null;if(s==null){let h=F.getNeighPoints(e);if(h.length==1?a=A.checkAngle(t,h[0].vectorId,e):h.length==2&&(a=A.checkAngle(t,h[0].vectorId,e),a||(a=A.checkAngle(t,h[1].vectorId,e))),a){if(o=this.canMoveForPoint(e,a,n,l),!o)return!1;g.clonePoint(t,a)}i.setPosition(t)}else if(s.hasOwnProperty("linkedPointId")&&s.linkedPointId!=null){if(F.getWallId(e,s.linkedPointId)!=null)return!1;i.setPosition(s),this.needUpdateRoom=!0}else if(s.hasOwnProperty("linkedWallId")){const h=r.getWall(s.linkedWallId),f=r.getPoint(h.start),d=r.getPoint(h.end);if(g.getDistance(f,t)<y.minAdsorb||g.getDistance(d,t)<y.minAdsorb)return!1;i.setPosition(s),this.needUpdateRoom=!0}else s.hasOwnProperty("linkedPointIdX")&&s.linkedPointIdX&&i.setPosition(t),s.hasOwnProperty("linkedPointIdY")&&s.linkedPointIdY&&i.setPosition(t);return!0}moveWallPlane(e,t,s){let i=1,n=r.getWall(e),l=n.start,o=n.end,a=r.getPoint(n.start),h=r.getPoint(n.end);const f=this.getNewPointsForMoveWall(e,t,s);let d=g.createLine1(f.point1,f.point2);const m=this.getTwoLimitInfos(e,d);this.needUpdateRoom=!1;let w=g.getIntersectionPoint(d,m.startLimitLine),T=g.getIntersectionPoint(d,m.endLimitLine);if(!this.startMoving&&(g.getDistance(a,w)<y.minAdsorb||g.getDistance(h,T)<y.minAdsorb))return this.moveFlag=!1,i=2,i;this.startMoving=!0;let p=this.updateVirtualPosition(n.start,w,m.startWallId,m.newStartWallId),L=this.updateVirtualPosition(n.end,T,m.endWallId,m.newEndWallId);if(p==null||L==null)return this.moveFlag=!1,i=2,this.startMoving=!1,i;let J=!1,X=null;if(p.adsorb&&!L.adsorb){if(d=g.createLine3(d,p.virtualPosition),!this.isOKForTwoSegmentsAngle(p.adsorbPointId,n.start,n.end))return this.moveFlag=!1,i=5,i;T=g.getIntersectionPoint(d,m.endLimitLine),L=this.updateVirtualPosition(n.end,T,m.endWallId,m.newEndWallId),L==null&&(L={adsorb:!1,adsorbPointId:null,virtualPosition:T}),J=this.isCoincideForAdsorbOne(n.start,p.adsorbPointId,e),X=g.getDistance(p.virtualPosition,T),i=4,this.needUpdateRoom=!0,this.startMoving=!1}else if(!p.adsorb&&L.adsorb){if(d=g.createLine3(d,L.virtualPosition),!this.isOKForTwoSegmentsAngle(L.adsorbPointId,n.end,n.start))return this.moveFlag=!1,i=5,i;w=g.getIntersectionPoint(d,m.startLimitLine),p=this.updateVirtualPosition(n.start,w,m.startWallId,m.newStartWallId),p==null&&(p={adsorb:!1,adsorbPointId:null,virtualPosition:w}),J=this.isCoincideForAdsorbOne(n.end,L.adsorbPointId,e),X=g.getDistance(L.virtualPosition,w),i=4,this.needUpdateRoom=!0,this.startMoving=!1}if(p&&L&&p.adsorb&&L.adsorb){if(J=this.isCoincideForAdsorbOne2(e,p.adsorbPointId,L.adsorbPointId),X=g.getDistance(p.virtualPosition,L.virtualPosition),this.startMoving=!1,J)return this.moveFlag=!1,i=5,i;i=4,this.needUpdateRoom=!0}else if(X=g.getDistance(w,T),X<y.minAdsorb)return this.deleteWallForLinked(e),a=r.getPoint(l),h=r.getPoint(o),!a||!h?(this.moveFlag=!1,i=3,this.needUpdateRoom=!0,i):(Object.keys(a.parent).length>1&&Object.keys(h.parent).length==1||Object.keys(a.parent).length==1&&Object.keys(h.parent).length==1?F.moveTo(o,l):Object.keys(a.parent).length==1&&Object.keys(h.parent).length>1&&F.moveTo(l,o),this.moveFlag=!1,i=3,this.needUpdateRoom=!0,i);if(l=n.start,o=n.end,!this.isOKForCrossForMoveWall(w,T,e,l,o,p.adsorbPointId,L.adsorbPointId))return i=2,this.moveFlag=!1,this.startMoving=!1,i;if(J||X!=null&&X<y.minAdsorb)return this.deleteWallForLinked(e),i=3,F.mergeWallForPoint(l),F.mergeWallForPoint(o),this.moveFlag=!1,this.needUpdateRoom=!0,i;{const R=g.getIntersectionPoint3(a,w,h,T);if(R!=null)return a.setPosition(R),h.setPosition(R),F.moveTo(l,o),i=3,this.moveFlag=!1,this.needUpdateRoom=!0,i}let D=!1;return!m.newStartWallId&&p.adsorbPointId?D=F.isOverlapForMergePoint(l,p.adsorbPointId):!m.newEndWallId&&L.adsorbPointId&&(D=F.isOverlapForMergePoint(o,L.adsorbPointId)),D?(this.moveFlag=!1,i=5,i):(this.updatePointForMoveWall(e,l,p,m.startWallId,m.newStartWallId),this.updatePointForMoveWall(e,o,L,m.endWallId,m.newEndWallId),n=r.getWall(e),n==null?(i=3,this.moveFlag=!1,this.needUpdateRoom=!0,i):(i==1?this.moveFlag=!0:this.moveFlag=!1,i))}updateForAbsorbWallPoints(){if(Object.keys(this.adsorbPointWalls).length==0)return;if(Object.keys(this.adsorbPointWalls).length==2)debugger;let e=[],t=null;for(let l in this.adsorbPointWalls){let o=r.getPoint(l);e.push({join:o,pointId:l}),t=this.adsorbPointWalls[l]}const s=r.getWall(t),i=r.getPoint(s.start);function n(l,o){return g.getDistance(i,l.join)-g.getDistance(i,o.join)}e=e.sort(n.bind(this));for(let l=0;l<e.length;++l){const o=e[l];o.join;const a=o.pointId;F.splitWall(t,a,"end")}}getNewPointsForMoveWall(e,t,s){t=t/c.res*y.defaultZoom/c.zoom,s=-s/c.res*y.defaultZoom/c.zoom;const i=r.getWall(e),n=r.getPoint(i.start),l=r.getPoint(i.end),o={x:n.x+t,y:n.y+s},a={x:l.x+t,y:l.y+s};return{point1:o,point2:a}}getTwoLimitInfos(e,t){const s=r.getWall(e),i=r.getPoint(s.start),n=r.getPoint(s.end);let l,o,a;const h=g.createLine1(i,n),f={};if(f.newStartWallId=!1,f.newEndWallId=!1,Object.keys(i.parent).length==1)l=g.getVerticalLine(h,i),f.startWallId=null;else if(Object.keys(i.parent).length==2){let d;Object.keys(i.parent)[0]==e?d=r.getWall(Object.keys(i.parent)[1]):Object.keys(i.parent)[1]==e&&(d=r.getWall(Object.keys(i.parent)[0])),d||console.error(352);const m=F.AngleForWall(d.vectorId,e);l=F.getLine(d),f.startWallId=d.vectorId,m>y.maxAngle/180*Math.PI&&(l=g.getVerticalLine(h,i),f.startWallId=null,f.newStartWallId=!0)}else{let d,m;a=F.wallIdForMinAngle(s.start,e);const w=r.getWall(a.min0.wallId),T=r.getPoint(w.start),p=r.getPoint(w.end),L=r.getWall(a.min1.wallId),J=r.getPoint(L.start),X=r.getPoint(L.end),W=g.getIntersectionPoint4(T,p,t),D=g.getIntersectionPoint4(J,X,t);if(W==null&&D==null){let Z=F.AngleForWall(e,a.min0.wallId),B=F.AngleForWall(e,a.min1.wallId);Z>Math.PI&&(Z=Math.PI-Z),B>Math.PI&&(B=Math.PI-B),Z<B?m=a.min0.wallId:m=a.min1.wallId,f.newStartWallId=!0}else W!=null&&D!=null?a.min0.angle<a.min1.angle?m=a.min0.wallId:m=a.min1.wallId:W==null&&D!=null?m=a.min1.wallId:W!=null&&D==null&&(m=a.min0.wallId);f.startWallId=m,d=r.getWall(m);const R=F.AngleForWall(m,e);l=F.getLine(d),R>y.maxAngle/180*Math.PI&&(l=g.getVerticalLine(h,i),f.startWallId=null,f.newStartWallId=!0)}if(Object.keys(n.parent).length==1)o=g.getVerticalLine(h,n),f.endWallId=null;else if(Object.keys(n.parent).length==2){let d;Object.keys(n.parent)[0]==e?d=r.getWall(Object.keys(n.parent)[1]):Object.keys(n.parent)[1]==e&&(d=r.getWall(Object.keys(n.parent)[0]));const m=F.AngleForWall(d.vectorId,e);o=F.getLine(d),f.endWallId=d.vectorId,m>y.maxAngle/180*Math.PI&&(o=g.getVerticalLine(h,n),f.endWallId=null,f.newEndWallId=!0)}else{let d,m;a=F.wallIdForMinAngle(s.end,e);const w=r.getWall(a.min0.wallId),T=r.getPoint(w.start),p=r.getPoint(w.end),L=r.getWall(a.min1.wallId),J=r.getPoint(L.start),X=r.getPoint(L.end),W=g.getIntersectionPoint4(T,p,t),D=g.getIntersectionPoint4(J,X,t);if(W==null&&D==null){let Z=F.AngleForWall(e,a.min0.wallId),B=F.AngleForWall(e,a.min1.wallId);Z>Math.PI&&(Z=Math.PI-Z),B>Math.PI&&(B=Math.PI-B),Z<B?m=a.min0.wallId:m=a.min1.wallId,f.newEndWallId=!0}else W!=null&&D!=null?a.min0.angle<a.min1.angle?m=a.min0.wallId:m=a.min1.wallId:W==null&&D!=null?m=a.min1.wallId:W!=null&&D==null&&(m=a.min0.wallId);f.endWallId=m,d=r.getWall(m);const R=F.AngleForWall(m,e);o=F.getLine(d),R>y.maxAngle/180*Math.PI&&(o=g.getVerticalLine(h,n),f.endWallId=null,f.newEndWallId=!0)}return f.startLimitLine=l,f.endLimitLine=o,f}canMoveForPoint(e,t,s,i){const n=r.getPoint(e);let l=this.isOKForMinAngleWall(e,t);return l&&(l=this.isOKForCross(e,t,n.parent,s,i)),l}isOKForMinAngleWall(e,t){const i=r.getPoint(e).parent,n=this.getMinAngle(e,t);if(Math.abs(n)<y.minAngle/180*Math.PI)return!1;for(const l in i){const a=r.getWall(l).getOtherPointId(e),h=this.getNeighMinAngle(a,l,t);if(h&&Math.abs(h.angle)<y.minAngle/180*Math.PI)return!1;{const f=r.getPoint(a);if(g.getDistance(t,f)<y.minAdsorb)return!1}}return!0}getMinAngle(e,t){const i=r.getPoint(e).parent;let n=null;if(Object.keys(i).length==1)return 2*Math.PI;if(Object.keys(i).length==2){const o=r.getWall(Object.keys(i)[0]),a=r.getWall(Object.keys(i)[1]),h=o.getOtherPointId(e),f=r.getPoint(h),d=a.getOtherPointId(e),m=r.getPoint(d);return n=g.Angle(t,f,m),n}else{const o={x:t.x+1,y:t.y};let a=[];for(const m in i){const T=r.getWall(m).getOtherPointId(e),p=r.getPoint(T);if(g.equalPoint(o,p)){a.push(0);continue}else{let L=g.Angle(t,o,p);p.y<t.y&&(L=2*Math.PI-L),a.push(L)}}a=a.sort(l);let h=2*Math.PI;for(let m=0;m<a.length-1;++m)for(let w=m+1;w<a.length;++w){const T=a[w]-a[m];T<h&&(h=T)}const f=a[0],d=a[a.length-1];if(f<Math.PI&&d>Math.PI){const m=2*Math.PI+f-d;m<h&&(h=m)}return h}function l(o,a){return o-a}}getNeighMinAngle(e,t,s){const i=r.getPoint(e),n={x:s.x,y:s.y};let l=null,o=null,a=null,h=null;for(const f in i.parent){if(f==t)continue;l=r.getWall(f).getOtherPointId(e),o=r.getPoint(l);const m=g.Angle(i,n,o);(a==null||a>m)&&(a=m,h={angle:a,pointId:l})}return h}isOKForCross(e,t,s,i,n){const l=r.getWalls();for(const o in l)if(!s.hasOwnProperty(o)&&n!=o)for(const a in s){if(F.isWallLink(o,a))continue;const h=r.getWall(a),f=h.getOtherPointId(e),d=r.getPoint(f);if(!this.isOKForCrossTwoWall(t,d,o,i,n,h.vectorId))return this.adsorbPointWalls={},!1}return Object.keys(this.adsorbPointWalls).length>0?!1:this.splitWallId==null}isOKForCrossTwoWall(e,t,s,i,n,l){const o=r.getWall(s),a=r.getPoint(o.start),h=r.getPoint(o.end);if(g.getIntersectionPoint3(e,t,a,h)&&o.start!=i&&o.end!=i)return this.splitWallId=s,!0;{if(g.equalPoint(e,t))return!0;let d=g.createLine1(e,t),m=g.getJoinLinePoint(a,d),w=g.getJoinLinePoint(h,d);if(g.getDistance(m,a)<y.minAdsorb&&g.PointInSegment(m,e,t)){if(o.start!=i)return this.adsorbPointWalls[a.vectorId]=l,!0}else if(g.getDistance(w,h)<y.minAdsorb&&g.PointInSegment(w,e,t)&&o.end!=i)return this.adsorbPointWalls[h.vectorId]=l,!0;if(d=g.createLine1(a,h),m=g.getJoinLinePoint(e,d),w=g.getJoinLinePoint(t,d),g.getDistance(m,e)<y.minAdsorb&&g.PointInSegment(m,a,h)){if(o.start!=i&&o.end!=i&&s!=n)return!0}else if(g.getDistance(w,t)<y.minAdsorb&&g.PointInSegment(w,a,h)&&o.start!=i&&o.end!=i&&s!=n)return!0}return!0}isOKForCrossTwoWall2(e,t,s){const i=r.getWall(s),n=r.getPoint(i.start),l=r.getPoint(i.end);let o=g.crossTwoLines(e,t,n,l,.01);return o?!1:g.equalPoint(e,t)?!0:(o=this.isCoincide(e,t,s),!!o)}isOKForCrossTwoWall3(e,t,s){const i=r.getWall(s),n=r.getPoint(i.start),l=r.getPoint(i.end);if(g.crossTwoLines(e,t,n,l,.01))return!1;{if(g.equalPoint(e,t))return!0;let a=g.createLine1(e,t),h=g.getJoinLinePoint(n,a);const f=g.getJoinLinePoint(l,a);if(g.getDistance(h,n)<y.minAdsorb&&g.PointInSegment(h,e,t))return!1;if(g.getDistance(f,l)<y.minAdsorb&&g.PointInSegment(f,e,t)||(a=g.createLine1(n,l),h=g.getJoinLinePoint(e,a),g.getDistance(h,e)<y.minAdsorb&&F.isContain(i,h)))return!1}return!0}isCoincide(e,t,s){const i=r.getWall(s),n=r.getPoint(i.start),l=r.getPoint(i.end);let o=g.createLine1(e,t),a=g.getJoinLinePoint(n,o),h=g.getJoinLinePoint(l,o);return g.getDistance(a,n)<y.minAdsorb&&g.PointInSegment(a,e,t)||g.getDistance(h,l)<y.minAdsorb&&g.PointInSegment(h,e,t)||(o=g.createLine1(n,l),a=g.getJoinLinePoint(e,o),h=g.getJoinLinePoint(t,o),g.getDistance(a,e)<y.minAdsorb&&F.isContain(i,a))?!1:!(g.getDistance(h,t)<y.minAdsorb&&F.isContain(i,h))}updateVirtualPosition(e,t,s,i){const n=r.getWall(s),l=r.getPoint(e);let o,a,h=!1;if(!i)n!=null&&(o=n.getOtherPointId(e),a=r.getPoint(o),(g.getDistance(t,a)<y.minAdsorb||!F.isContain(n,t)&&g.getDistance(t,a)<g.getDistance(t,l))&&(g.clonePoint(t,a),h=!0));else if(g.getDistance(l,t)<y.minAdsorb)return null;return{adsorb:h,adsorbPointId:h?o:null,virtualPosition:t}}isOKForTwoSegmentsAngle(e,t,s){const i=r.getPoint(e),n=r.getPoint(t),l=r.getPoint(s),o=i.x-n.x,a=i.y-n.y,h={x:o+l.x,y:a+l.y};for(const f in i.parent){const m=r.getWall(f).getOtherPointId(e),w=r.getPoint(m),T=g.Angle(i,w,h);if(Math.abs(T)<y.minAngle/180*Math.PI)return!1}return!0}isCoincideForAdsorbOne(e,t,s){if(e&&t){const n=r.getWall(s).getOtherPointId(e);if(F.getWallId(n,t)!=null)return!0}return!1}isCoincideForAdsorbOne2(e,t,s){if(t&&s){if(F.getWallId(t,s)!=null)return!0;{let n=r.getPoint(t),l=n.parent;for(const o in l){const a=F.AngleForWall3(e,o);if(Math.abs(a)<y.minAngle/180*Math.PI)return!0}n=r.getPoint(s),l=n.parent;for(const o in l){const a=F.AngleForWall3(e,o);if(Math.abs(a)<y.minAngle/180*Math.PI)return!0}}}return!1}isOKForCrossForMoveWall(e,t,s,i,n,l,o){const a=r.getPoint(i),h=r.getPoint(n);let f=!0;const d=r.getWalls();for(const m in d){if(m==s)continue;let w=!0,T=!0;const p=r.getWall(m);if(l&&(l==p.start||l==p.end)&&(w=!1),o&&(o==p.start||o==p.end)&&(T=!1),(p.start==i||p.end==i)&&(w=!1),(p.start==n||p.end==n)&&(T=!1),w&&T&&(f=this.isOKForCrossTwoWall2(e,t,m)),!f||(w&&p.start!=i&&p.end!=i&&(f=this.isOKForCrossTwoWall3(e,a,m)),!f)||(T&&p.start!=n&&p.end!=n&&(f=this.isOKForCrossTwoWall3(t,h,m)),!f))return!1}return f}updatePointForMoveWall(e,t,s,i,n){const l=r.getPoint(t),o=r.getWall(e);if(i==null)n?(this.createWallForMoveWall(t,e,s.virtualPosition),this.needUpdateRoom=!0):l.setPosition(s.virtualPosition);else if(n)this.createWallForMoveWall(t,e,s.virtualPosition),this.needUpdateRoom=!0;else if(s.adsorb)F.moveTo(t,s.adsorbPointId),this.needUpdateRoom=!0;else if(Object.keys(l.parent).length==2)l.setPosition(s.virtualPosition);else{const a=F.wallIdForMinAngle(t,e),h=F.AngleForWall(a.min0.wallId,a.min1.wallId);if(Object.keys(l.parent).length==3&&h>y.maxAngle/180*Math.PI)l.setPosition(s.virtualPosition);else{const f=F.getDirction(t,e);F.subtraWallFromIntersect(t,e);const d=o.getPointId(f);r.getPoint(d).setPosition(s.virtualPosition),F.splitWall(i,d,f),this.needUpdateRoom=!0}}}createWallForMoveWall(e,t,s){const i=r.getWall(t),n=F.getDirction(e,t);F.subtraWallFromIntersect(e,t);const l=i.getPointId(n);r.getPoint(l).setPosition(s),F.createWall(e,l)}deleteWallForLinked(e){const t=r.getWall(e);F.subtraWallFromIntersect(t.start,e),F.subtraWallFromIntersect(t.end,e),r.deleteWall(e)}clear(){this.needUpdateRoom=!1,this.startMoving=!1,this.moveFlag=!1,this.adsorbPointWalls={},this.splitWallId=null}}const be=new si;class ii{constructor(e){this.layer=e,this.bus=Ge(),this.selectUI=null,this.appendData=null}updateEventNameForSelectUI(){A.hideAll(),x.getEventName(),this.selectUI==E.Wall?x.setEventName(P.AddWall):this.selectUI==E.Table?x.setEventName(P.AddTable):this.selectUI==E.Rectangle?x.setEventName(P.AddRectangle):this.selectUI==E.Circle?x.setEventName(P.AddCircle):this.selectUI==E.Arrow?x.setEventName(P.AddArrow):this.selectUI==E.Icon?x.setEventName(P.AddIcon):this.selectUI==E.Tag?x.setEventName(P.AddTag):(this.selectUI==E.Cigaret||this.selectUI==E.FirePoint||this.selectUI==E.LeftFootPrint||this.selectUI==E.RightFootPrint||this.selectUI==E.LeftShoePrint||this.selectUI==E.RightShoePrint||this.selectUI==E.FingerPrint||this.selectUI==E.DeadBody||this.selectUI==E.BloodStain)&&x.setEventName(P.AddSign)}async setAttributes(e,t,s){let i=x.getFocusItem(),n=!0;switch(t){case"delete":this.deleteItem();break;case"update":if(e==u.Tag){const l=r.getTag(i.vectorId);s.hasOwnProperty("version")?(s.color&&l.setColor(s.color),s.fontSize&&l.setFontSize(s.fontSize),s.text&&l.setValue(s.text)):l.setValue(s)}else if(e==u.Arrow){const l=r.getArrow(i.vectorId);s.hasOwnProperty("version")&&l.setColor(s.color)}else if(e==u.Wall){const l=r.getWall(i.vectorId);s.hasOwnProperty("version")&&l.setColor(s.color)}else if(e==u.Rectangle){const l=r.getRectangle(i.vectorId);s.hasOwnProperty("version")&&l.setColor(s.color)}else if(e==u.Circle){const l=r.getCircle(i.vectorId);s.hasOwnProperty("version")&&l.setColor(s.color)}else if(e==u.Table){const l=r.getTable(i.vectorId);s.hasOwnProperty("version")?l.setValue(s.content):l.setValue(s)}else if(e==u.Title)s.hasOwnProperty("version")?r.updateTitle(s.text):r.updateTitle(s);else if(e==u.Compass)s.hasOwnProperty("version")?(r.updateCompass(s.rotate),n=s.save):r.updateCompass(s);else if(e==u.CustomImage){const l=r.getCustomImage(i.vectorId);s.hasOwnProperty("rotate")?(l.setAngle(s.rotate),n=s.save):s.hasOwnProperty("scale")?(l.setScale(s.scale),n=s.save):s.hasOwnProperty("ratio")&&l.setRatio(floor.customImages[key].ratio)}else if(e==u.BgImage){const l=r.getBgImage();s.hasOwnProperty("scale")&&(l.setScale(s.scale),n=s.save)}else if(te.isSign(e)){const l=r.getSign(i.vectorId);s.hasOwnProperty("rotate")?(l.setAngle(s.rotate),n=s.save):s.hasOwnProperty("scale")&&(l.setScale(s.scale),n=s.save)}break;case"upload":if(e==u.CustomImage){let o={vectorId:(await ke.createCustomImage(s.url,{x:0,y:0})).vectorId,type:u.CustomImage};x.setFocusItem(o),this.showAttributes(o)}else if(e==u.BgImage){let o={vectorId:(await Fe.createBgImage(s.url)).vectorId,type:u.BgImage};x.setFocusItem(o),this.showAttributes(o)}break}n&&O.save(),this.layer.renderer.autoRedraw()}showAttributes(e){let t=e.type,s=null;if(te.isSign(t)){const i=r.getSign(e.vectorId);if(!i)return;s={version:"2.0",type:t,rotate:i.angle,scale:i.scale}}else switch(e.type){case u.Tag:const i=r.getTag(e.vectorId);if(!i)return;s={version:"2.0",type:t,text:i.value,color:i.color,fontSize:i.fontSize};break;case u.Table:const n=r.getTable(e.vectorId);if(!n)return;const l=n.cells;let o=[];for(let L=0;L<l.length;++L)for(let J=0;J<l[L].length;++J){const X=r.getCell(l[L][J]);o.push({width:X.width,height:X.height,value:X.value,colIndex:X.colIndex,rowIndex:X.rowIndex})}s={version:"2.0",type:t,content:o};break;case u.Title:const a=r.getTitle();if(!a)return;s={version:"2.0",type:t,text:a.value};break;case u.Compass:const h=r.getCompass();if(!h)return;s={version:"2.0",type:t,rotate:h.angle};break;case u.CustomImage:const f=r.getCustomImage(e.vectorId);if(!f)return;s={version:"2.0",type:t,url:f.url,rotate:f.angle,ratio:f.ratio,scale:f.scale};break;case u.BgImage:const d=r.getBgImage(e.vectorId);if(!d)return;s={version:"2.0",type:t,url:d.url,scale:d.scale};break;case u.Circle:const m=r.getCircle(e.vectorId);if(!m)return;s={version:"2.0",type:t,color:m.color};break;case u.Rectangle:const w=r.getRectangle(e.vectorId);if(!w)return;s={version:"2.0",type:t,color:w.color};break;case u.Wall:const T=r.getWall(e.vectorId);if(!T)return;s={version:"2.0",type:t,color:T.color};break;case u.Arrow:const p=r.getArrow(e.vectorId);if(!p)return;s={version:"2.0",type:t,color:p.color};break}this.bus.emit("showAttribute",{type:t,value:s})}clearUI(){this.selectUI=null,this.bus.emit("hideAttribute"),this.bus.emit("hideUI")}deleteItem(){let e=x.getFocusItem();e&&(e.type==u.Wall?r.deleteWall(e.vectorId):e.type==u.Rectangle?r.deleteRectangle(e.vectorId):e.type==u.Circle?r.deleteCircle(e.vectorId):e.type==u.Arrow?r.deleteArrow(e.vectorId):e.type==u.Icon?ae.deleteIcon(e.vectorId):e.type==u.Tag?r.deleteTag(e.vectorId):e.type==u.Table?r.deleteTable(e.vectorId):te.isSign(e.type)?r.deleteSign(e.vectorId):e.type==u.WallCorner?F.deleteWallCorner(e.vectorId):e.type==u.CustomImage?r.deleteCustomImage(e.vectorId):e.type==u.BgImage&&r.deleteBgImage(),O.save(),this.layer.renderer.autoRedraw())}getSignTypeForUI(){if(this.selectUI==E.Cigaret)return u.Cigaret;if(this.selectUI==E.FirePoint)return u.FirePoint;if(this.selectUI==E.LeftFootPrint)return u.LeftFootPrint;if(this.selectUI==E.RightFootPrint)return u.RightFootPrint;if(this.selectUI==E.LeftShoePrint)return u.LeftShoePrint;if(this.selectUI==E.RightShoePrint)return u.RightShoePrint;if(this.selectUI==E.FingerPrint)return u.FingerPrint;if(this.selectUI==E.DeadBody)return u.DeadBody;if(this.selectUI==E.BloodStain)return u.BloodStain}exportJSON(){return{version:k.version,floors:k.floors,currentId:r.getCurrentId()}}exportImg(e,t,s){c.setRatio(3),e.width=e.width*c.ratio,e.height=e.height*c.ratio,x.clearItems(),this.layer.renderer.autoRedrawForImg(),setTimeout(()=>{e.toBlob(s,"image/jpeg",1),e.width=e.width/c.ratio,e.height=e.height/c.ratio,c.setRatio(1),this.layer.renderer.autoRedraw()},100)}downloadCadImg(e,t){var s="image/png",i=e.toDataURL(s,1);return i}saveFile(e,t){var s=document.createElementNS("http://www.w3.org/1999/xhtml","a");s.href=e,s.download=t;var i=document.createEvent("MouseEvents");i.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),s.dispatchEvent(i)}_fixType(e){e=e.toLowerCase().replace(/jpg/i,"jpeg");var t=e.match(/png|jpeg|bmp|gif/)[0];return"image/"+t}base64ToBlob(e){let t=e.split(","),s=t[0].match(/:(.*?);/)[1],i=atob(t[1]),n=i.length,l=new Uint8Array(n);for(;n--;)l[n]=i.charCodeAt(n);return new Blob([l],{type:s})}menu_screenShot(e){return this.layer.stopAddVector(),this.downloadCadImg(this.layer.canvas,e)}menu_flex(){c.reSet(),this.layer.renderer.autoRedraw()}initTopTable(e){let t={x:770,y:250};t=c.getXYFromScreen(t),G.createTable(t).setValue(e),this.layer.renderer.autoRedraw()}initDownTable(e){let t={x:770,y:520};t=c.getXYFromScreen(t),G.createTable(t).setValue(e),this.layer.renderer.autoRedraw()}reSet(){le.clear(),oe.clear(),re.clear(),ue.clear(),q.clear(),be.clear(),A.clear(),r.clear2(),Q.clear(),ae.clear(),te.clear(),x.clear(),c.clear2()}}class ni{constructor(){}moveFullTag(e,t,s){let i=r.getTag(s);i.center={x:i.center.x+e/c.res*y.defaultZoom/c.zoom,y:i.center.y-t/c.res*y.defaultZoom/c.zoom},i.setPoints2d()}}const nt=new ni;class li{constructor(){}moveFullTable(e,t,s){let i=r.getTable(s);i.center={x:i.center.x+e/c.res*y.defaultZoom/c.zoom,y:i.center.y-t/c.res*y.defaultZoom/c.zoom},i.setPoints2d()}}const lt=new li;class oi{constructor(){}moveFullRectangle(e,t,s){let i=r.getRectangle(s);i.points[0]={x:i.points[0].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[0].y-t/c.res*y.defaultZoom/c.zoom},i.points[1]={x:i.points[1].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[1].y-t/c.res*y.defaultZoom/c.zoom},i.points[2]={x:i.points[2].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[2].y-t/c.res*y.defaultZoom/c.zoom},i.points[3]={x:i.points[3].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[3].y-t/c.res*y.defaultZoom/c.zoom}}moveRectangleVertex(e,t,s){r.getRectangle(t).updatePoints(e,s)}moveRectangleSide(e,t,s){r.getRectangle(t).updateSides(e,s)}}const Xe=new oi;class ri{constructor(){}moveFullCircle(e,t,s){let i=r.getCircle(s);i.points[0]={x:i.points[0].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[0].y-t/c.res*y.defaultZoom/c.zoom},i.points[1]={x:i.points[1].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[1].y-t/c.res*y.defaultZoom/c.zoom},i.points[2]={x:i.points[2].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[2].y-t/c.res},i.points[3]={x:i.points[3].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[3].y-t/c.res*y.defaultZoom/c.zoom},i.center={x:i.center.x+e/c.res*y.defaultZoom/c.zoom,y:i.center.y-t/c.res*y.defaultZoom/c.zoom}}moveCircleVertex(e,t,s){r.getCircle(t).updatePoints(e,s)}}const ot=new ri;class ai{constructor(){}moveFullIcon(e,t,s){let i=r.getIcon(s);i.points[0]={x:i.points[0].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[0].y-t/c.res*y.defaultZoom/c.zoom},i.points[1]={x:i.points[1].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[1].y-t/c.res*y.defaultZoom/c.zoom},i.points[2]={x:i.points[2].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[2].y-t/c.res*y.defaultZoom/c.zoom},i.points[3]={x:i.points[3].x+e/c.res*y.defaultZoom/c.zoom,y:i.points[3].y-t/c.res*y.defaultZoom/c.zoom},i.center={x:i.center.x+e/c.res*y.defaultZoom/c.zoom,y:i.center.y-t/c.res*y.defaultZoom/c.zoom}}moveIconVertex(e,t,s){r.getIcon(t).updatePoints(e,s)}}const rt=new ai;class ci{constructor(){}moveFullArrow(e,t,s){let i=r.getArrow(s);i.startPoint={x:i.startPoint.x+e/c.res*y.defaultZoom/c.zoom,y:i.startPoint.y-t/c.res*y.defaultZoom/c.zoom},i.endPoint={x:i.endPoint.x+e/c.res*y.defaultZoom/c.zoom,y:i.endPoint.y-t/c.res*y.defaultZoom/c.zoom}}moveArrowVertex(e,t,s){r.getArrow(t).updatePoint(e,s)}}const at=new ci;class hi{constructor(){this.context=null}initContext(e){e?this.context=e.getContext("2d"):this.context=null}clear(){this.context.clearRect(0,0,this.context.canvas.width,this.context.canvas.height)}drawBackGround(){this.context.save(),this.context.fillStyle="white",this.context.fillRect(0,0,this.context.canvas.width,this.context.canvas.height),this.context.restore()}drawFrame(){this.context.save(),this.context.strokeStyle="black";const e=this.context.canvas.width/297;this.context.strokeRect(e*20,e*20,this.context.canvas.width-2*e*20,this.context.canvas.height-2*e*20),this.context.restore()}drawWall(e){let t=r.getPoint(e.start),s=r.getPoint(e.end),i=[];i.push(t),i.push(s),i=i.sort(n.bind(this));function n(h,f){return g.getDistance(t,h)-g.getDistance(t,f)}this.context.save(),this.context.beginPath(),this.context.lineCap="round",this.context.lineWidth=I.Wall.lineWidth*c.ratio,this.context.strokeStyle=e.color;const l=x.getSelectItem(),o=x.getDraggingItem(),a=x.getFocusItem();l&&l.type==u.Wall?e.vectorId==l.vectorId&&(this.context.strokeStyle=I.Select.Wall.strokeStyle):o&&o.type==u.Wall&&e.vectorId==o.vectorId&&(this.context.strokeStyle=I.Select.Wall.strokeStyle),a&&a.type==u.Wall&&e.vectorId==a.vectorId&&(this.context.strokeStyle=I.Focus.Wall.strokeStyle);for(let h=0;h<i.length-1;h+=2){let f=c.getScreenXY(i[h]),d=c.getScreenXY(i[h+1]);this.context.moveTo(f.x,f.y),this.context.lineTo(d.x,d.y)}this.context.stroke(),this.context.restore()}drawSpecialPoint(){const e=x.getSelectItem(),t=x.getDraggingItem(),s=x.getFocusItem();let i=null;if(this.context.save(),e&&(i=r.getPoint(e.vectorId),this.context.lineWidth=I.Select.Point.lineWidth*c.ratio,this.context.strokeStyle=I.Select.Point.strokeStyle,this.context.fillStyle=I.Select.Point.fillStyle),t&&(i=r.getPoint(t.vectorId),this.context.lineWidth=I.Select.Point.lineWidth*c.ratio,this.context.strokeStyle=I.Select.Point.strokeStyle,this.context.fillStyle=I.Select.Point.fillStyle),s&&(i=r.getPoint(s.vectorId),this.context.lineWidth=I.Focus.Point.lineWidth*c.ratio,this.context.strokeStyle=I.Focus.Point.strokeStyle,this.context.fillStyle=I.Focus.Point.fillStyle),i==null){this.context.restore();return}const n=c.getScreenXY({x:i.x,y:i.y});let l=I.Point.radius;this.context.beginPath(),this.context.arc(n.x,n.y,l*c.ratio,0,Math.PI*2,!0),this.context.stroke(),this.context.fill(),this.context.restore()}drawPoint(e){const t=c.getScreenXY({x:e.x,y:e.y}),s=x.getSelectItem(),i=x.getDraggingItem(),n=x.getFocusItem();let l=I.Point.radius;if(i&&i.type==u.WallCorner&&e.vectorId==i.vectorId||s&&s.type==u.WallCorner&&e.vectorId==s.vectorId)this.context.save(),this.context.lineWidth=I.Select.Point.lineWidth*c.ratio,this.context.strokeStyle=I.Select.Point.strokeStyle,this.context.fillStyle=I.Select.Point.fillStyle,l=I.Select.Point.radius;else if(n&&n.type==u.WallCorner&&e.vectorId==n.vectorId)this.context.save(),this.context.lineWidth=I.Focus.Point.lineWidth*c.ratio,this.context.strokeStyle=I.Focus.Point.strokeStyle,this.context.fillStyle=I.Focus.Point.fillStyle,l=I.Focus.Point.radius;else return;this.context.beginPath(),this.context.arc(t.x,t.y,l*c.ratio,0,Math.PI*2,!0),this.context.stroke(),this.context.fill(),this.context.restore()}drawText(e,t,s){this.context.save(),this.setCanvasStyle(I.Font),this.context.font="12px Microsoft YaHei";let i={x:e.x,y:e.y};s||(i=c.getScreenXY({x:e.x,y:e.y})),this.context.fillText(t,i.x,i.y),this.context.restore()}drawTag(e){this.context.save(),this.context.lineWidth=I.Tag.lineWidth*c.ratio,this.context.strokeStyle=e.color,this.context.fillStyle=e.color;const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();t&&t.type==u.Tag?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Tag.strokeStyle,this.context.fillStyle=I.Select.Tag.fillStyle):s&&s.type==u.Tag&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Tag.strokeStyle,this.context.fillStyle=I.Select.Tag.fillStyle),i&&i.type==u.Tag&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Tag.strokeStyle,this.context.fillStyle=I.Focus.Tag.fillStyle),this.context.font=`400 ${e.fontSize*c.ratio}px Microsoft YaHei`;let n=e.setFontLenAndHeight(),l=0;for(let d=0;d<n.textValues.length;++d)l=Math.max(l,this.context.measureText(n.textValues[d]).width,this.context.measureText(parseFloat(n.textValues[d]).toFixed(2)).width);e.sideWidth=l,e.sideThickness=n.height*e.fontSize,e.setPoints2d();let o=e.points2d;for(let d=0;d<o.length;++d)c.getScreenXY({x:o[d].x,y:o[d].y});let a=c.getScreenXY({x:e.center.x,y:e.center.y});const h=e.sideWidth;let f=e.sideThickness/n.height/2*c.ratio;for(let d=0;d<n.textValues.length;++d){let m=d+1;m=2*m-n.textValues.length,this.context.fillText(n.textValues[d],a.x-h/2,a.y+f*m)}this.context.restore()}drawTable(e){const t=c.getScreenXY({x:e.center.x-Math.abs(e.points[0].x-e.points[1].x)/2,y:e.center.y+Math.abs(e.points[0].y-e.points[3].y)/2});for(let s=0;s<e.cells.length;++s)for(let i=0;i<e.cells[s].length;++i){const n=r.getCell(e.cells[s][i]),l=e.getCellPos(n.vectorId);this.drawCell(n,l.x+t.x,l.y+t.y)}}drawCell(e,t,s){this.context.save(),this.context.lineWidth=I.Table.lineWidth*c.ratio,this.context.strokeStyle=I.Table.strokeStyle,this.context.fillStyle=I.Table.fillStyle;const i=x.getSelectItem(),n=x.getDraggingItem(),l=x.getFocusItem();i&&i.type==u.Table?e.parent==i.vectorId&&(this.context.strokeStyle=I.Select.Table.strokeStyle,this.context.fillStyle=I.Select.Table.fillStyle):n&&n.type==u.Table&&e.parent==n.vectorId&&(this.context.strokeStyle=I.Select.Table.strokeStyle,this.context.fillStyle=I.Select.Table.fillStyle),l&&l.type==u.Table&&e.parent==l.vectorId&&(this.context.strokeStyle=I.Focus.Table.strokeStyle,this.context.fillStyle=I.Focus.Table.fillStyle),this.context.translate(t,s),this.context.beginPath(),this.context.moveTo(0,0),this.context.lineTo(e.width*c.ratio,0),this.context.lineTo(e.width*c.ratio,e.height*c.ratio),this.context.lineTo(0,e.height*c.ratio),this.context.closePath(),this.context.stroke(),this.context.font=12*c.ratio+"px Microsoft YaHei";let o=this.context.measureText(e.value).width;const a=/[A-z0-9]/g;if(e.value.match(a)){const d=e.value.match(a).length;o=o*(e.value.length-d)/e.value.length+o*d/e.value.length*1.5}let f=Math.ceil(o/(e.width*c.ratio));if(f==1)this.context.textAlign="center",this.context.textBaseline="middle",this.context.fillText(e.value,e.width/2*c.ratio,e.height/2*c.ratio);else{const d=Math.ceil(o/f),m=Math.ceil(e.value.length/f);this.context.textAlign="left";for(let w=0;w<f;++w){const T=e.value.substr(w*m,m);this.context.fillText(T,e.width/2*c.ratio-d/2,(18+18*w)*c.ratio)}}this.context.restore()}drawRectangle(e){let t=[];for(let o=0;o<e.points.length;++o)t.push(c.getScreenXY(e.points[o]));this.context.save(),this.context.beginPath(),this.context.lineCap="round",this.context.lineWidth=I.Rectangle.lineWidth*c.ratio,this.context.strokeStyle=e.color;const s=x.getSelectItem(),i=x.getDraggingItem(),n=x.getFocusItem();let l=!1;if(s&&s.type==u.Rectangle){if(e.vectorId==s.vectorId){if(s.selectIndex==b.All)this.context.strokeStyle=I.Select.Rectangle.strokeStyle,this.context.fillStyle=I.Select.Rectangle.fillStyle,l=!0;else if(s.selectIndex.indexOf(b.Side)>-1)this.context.strokeStyle=I.Select.Rectangle.strokeStyle;else if(s.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Select.Rectangle.strokeStyle;let o=s.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[o].x,y:e.points[o].y,name:Y.StartAddWall})}}}else if(i&&i.type==u.Rectangle&&e.vectorId==i.vectorId){if(i.selectIndex==b.All)this.context.strokeStyle=I.Select.Rectangle.strokeStyle,this.context.fillStyle=I.Select.Rectangle.fillStyle,l=!0;else if(i.selectIndex.indexOf(b.Side)>-1)this.context.strokeStyle=I.Select.Rectangle.strokeStyle;else if(i.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Select.Rectangle.strokeStyle;let o=i.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[o].x,y:e.points[o].y,name:Y.StartAddWall})}}if(n&&n.type==u.Rectangle&&e.vectorId==n.vectorId){if(n.selectIndex==b.All)this.context.strokeStyle=I.Focus.Rectangle.strokeStyle,this.context.fillStyle=I.Focus.Rectangle.fillStyle,l=!0;else if(n.selectIndex.indexOf(b.Side)>-1)this.context.strokeStyle=I.Focus.Rectangle.strokeStyle;else if(n.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Focus.Rectangle.strokeStyle;let o=n.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[o].x,y:e.points[o].y,name:Y.StartAddWall})}}this.context.moveTo(t[0].x,t[0].y);for(let o=1;o<t.length;++o)this.context.lineTo(t[o].x,t[o].y);this.context.closePath(),this.context.stroke(),l&&this.context.fill(),this.context.restore()}drawCircleGeo(e){let t=e.radius*c.res*c.zoom/y.defaultZoom*c.ratio;const s=Math.PI*2,i=c.getScreenXY(e.center);this.context.save(),this.context.lineWidth=I.Circle.lineWidth*c.ratio,this.context.strokeStyle=e.color;const n=x.getSelectItem(),l=x.getDraggingItem(),o=x.getFocusItem();let a=!1;if(n&&n.type==u.Circle){if(e.vectorId==n.vectorId){if(n.selectIndex==b.All)this.context.strokeStyle=I.Select.Circle.strokeStyle,this.context.fillStyle=I.Select.Circle.fillStyle,a=!0,this.drawRec(e.points);else if(n.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Select.Circle.strokeStyle;let h=n.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[h].x,y:e.points[h].y,name:Y.StartAddWall}),this.drawRec(e.points)}}}else if(l&&l.type==u.Circle&&e.vectorId==l.vectorId){if(l.selectIndex==b.All)this.context.strokeStyle=I.Select.Circle.strokeStyle,this.context.fillStyle=I.Select.Circle.fillStyle,a=!0,this.drawRec(e.points);else if(l.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Select.Circle.strokeStyle;let h=l.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[h].x,y:e.points[h].y,name:Y.StartAddWall}),this.drawRec(e.points)}}if(o&&o.type==u.Circle&&e.vectorId==o.vectorId){if(o.selectIndex==b.All)this.context.strokeStyle=I.Focus.Circle.strokeStyle,this.context.fillStyle=I.Focus.Circle.fillStyle,a=!0;else if(o.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Focus.Circle.strokeStyle;let h=o.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[h].x,y:e.points[h].y,name:Y.StartAddWall}),this.drawRec(e.points)}}this.context.beginPath(),this.context.arc(i.x,i.y,t,0,s,!0),this.context.stroke(),a&&this.context.fill(),this.context.restore()}drawIcon(e){let t=e.radius*c.res*c.zoom/y.defaultZoom*c.ratio;const s=Math.PI*2,i=c.getScreenXY(e.center);this.context.save(),this.context.strokeStyle=I.Icon.strokeStyle;const n=x.getSelectItem(),l=x.getDraggingItem(),o=x.getFocusItem();let a=!1;if(n&&n.type==u.Icon){if(e.vectorId==n.vectorId){if(n.selectIndex==b.All)this.context.strokeStyle=I.Select.Icon.strokeStyle,this.context.fillStyle=I.Select.Icon.fillStyle,a=!0;else if(n.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Select.Icon.strokeStyle;let d=n.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[d].x,y:e.points[d].y,name:Y.StartAddWall}),this.drawRec(e.points)}}}else if(l&&l.type==u.Icon&&e.vectorId==l.vectorId){if(l.selectIndex==b.All)this.context.strokeStyle=I.Select.Icon.strokeStyle,this.context.fillStyle=I.Select.Icon.fillStyle,a=!0;else if(l.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Select.Icon.strokeStyle;let d=l.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[d].x,y:e.points[d].y,name:Y.StartAddWall}),this.drawRec(e.points)}}if(o&&o.type==u.Icon&&e.vectorId==o.vectorId){if(o.selectIndex==b.All)this.context.strokeStyle=I.Focus.Icon.strokeStyle,this.context.fillStyle=I.Focus.Icon.fillStyle,a=!0;else if(o.selectIndex.indexOf(b.Vertex)>-1){this.context.strokeStyle=I.Focus.Icon.strokeStyle;let d=o.selectIndex.replace(b.Vertex+"_","");this.drawCircle({x:e.points[d].x,y:e.points[d].y,name:Y.StartAddWall}),this.drawRec(e.points)}}this.context.beginPath(),this.context.arc(i.x,i.y,t,0,s,!0),this.context.stroke(),a&&this.context.fill(),this.context.restore(),this.context.save(),this.setCanvasStyle(I.Font);let h=Math.ceil(t*14/20);this.context.font=h+I.Font.font;let f=c.getScreenXY(e.center);this.context.fillText(e.value,f.x,f.y),this.context.restore()}drawArrow(e){this.context.save(),this.context.beginPath(),this.context.lineCap="round",this.context.strokeStyle=e.color,this.context.lineWidth=I.Arrow.lineWidth*c.ratio;const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();t&&t.type==u.Arrow?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Arrow.strokeStyle,t.selectIndex==b.Start?this.drawCircle({x:e.startPoint.x,y:e.startPoint.y,name:Y.StartAddWall}):t.selectIndex==b.End&&this.drawCircle({x:e.endPoint.x,y:e.endPoint.y,name:Y.StartAddWall})):s&&s.type==u.Arrow&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Arrow.strokeStyle,s.selectIndex==b.Start?this.drawCircle({x:e.startPoint.x,y:e.startPoint.y,name:Y.StartAddWall}):s.selectIndex==b.End&&this.drawCircle({x:e.endPoint.x,y:e.endPoint.y,name:Y.StartAddWall})),i&&i.type==u.Arrow&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Arrow.strokeStyle,i.selectIndex==b.Start?this.drawCircle({x:e.startPoint.x,y:e.startPoint.y,name:Y.StartAddWall}):i.selectIndex==b.End&&this.drawCircle({x:e.endPoint.x,y:e.endPoint.y,name:Y.StartAddWall}));let n=c.getScreenXY(e.startPoint),l=c.getScreenXY(e.endPoint);var o=10,a=20,h,f;let d=l.x,m=l.y,w=n.x,T=n.y;var p=Math.atan2(m-T,d-w)*180/Math.PI,L=(p+a)*Math.PI/180,J=(p-a)*Math.PI/180,X=o*Math.cos(L),W=o*Math.sin(L),D=o*Math.cos(J),R=o*Math.sin(J);this.context.beginPath(),this.context.moveTo(d,m),this.context.lineTo(w,T),h=w+X,f=T+W,this.context.moveTo(h,f),this.context.lineTo(w,T),h=w+D,f=T+R,this.context.lineTo(h,f),this.context.stroke(),this.context.restore()}drawCircle(e){let t=null;const s=Math.PI*2,i=c.getScreenXY(e);this.context.save(),e.name==Y.StartAddWall&&(t=I.Element.StartAddWall.radius*c.ratio,this.context.strokeStyle=I.Element.StartAddWall.strokeStyle,this.context.fillStyle=I.Element.StartAddWall.fillStyle),this.context.beginPath(),this.context.arc(i.x,i.y,t,0,s,!0),this.context.stroke(),this.context.fill(),this.context.restore()}drawRec(e){let t=c.getScreenXY(e[0]);this.context.moveTo(t.x,t.y);for(let s=1;s<e.length;++s)t=c.getScreenXY(e[s]),this.context.lineTo(t.x,t.y);this.context.closePath(),this.context.stroke()}drawLine(e){let t=c.getScreenXY(e.start),s=c.getScreenXY(e.end);this.context.save(),e.name==Y.VCheckLinesX?(this.context.lineWidth=I.Element.VCheckLinesX.lineWidth*c.ratio,this.context.strokeStyle=I.Element.VCheckLinesX.strokeStyle,this.context.setLineDash([3,2,2]),t.y=0,s.y=this.context.canvas.clientHeight):e.name==Y.VCheckLinesY?(this.context.lineWidth=I.Element.VCheckLinesY.lineWidth*c.ratio,this.context.strokeStyle=I.Element.VCheckLinesY.strokeStyle,this.context.setLineDash([3,2,2]),t.x=0,s.x=this.context.canvas.clientWidth):e.name==Y.NewWall?(this.context.lineWidth=I.Element.NewWall.lineWidth*c.ratio,this.context.strokeStyle=I.Element.NewWall.strokeStyle,e.state=="error"&&(this.context.strokeStyle=I.Element.NewWall.errorStrokeStyle)):e.name==Y.CheckLinesX?(this.context.lineWidth=I.Element.CheckLinesX.lineWidth*c.ratio,this.context.strokeStyle=I.Element.CheckLinesX.strokeStyle,this.context.setLineDash([3,2,2])):e.name==Y.CheckLinesY&&(this.context.lineWidth=I.Element.CheckLinesY.lineWidth*c.ratio,this.context.strokeStyle=I.Element.CheckLinesY.strokeStyle,this.context.setLineDash([3,2,2])),this.context.beginPath(),this.context.moveTo(t.x,t.y),this.context.lineTo(s.x,s.y),this.context.stroke(),this.context.restore(),this.context.save(),this.context.lineWidth=I.Point.lineWidth*c.ratio,this.context.strokeStyle=I.Point.strokeStyle,this.context.fillStyle=I.Point.fillStyle;let i=I.Point.radius;this.context.beginPath(),this.context.arc(t.x,t.y,i*c.ratio,0,Math.PI*2,!0),this.context.stroke(),this.context.fill(),this.context.restore()}drawTitle(e){this.context.save(),this.setCanvasStyle(I.Title);const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();t&&t.type==u.Title?(this.context.strokeStyle=I.Select.Title.strokeStyle,this.context.fillStyle=I.Select.Title.fillStyle):s&&s.type==u.Title&&(this.context.strokeStyle=I.Select.Title.strokeStyle,this.context.fillStyle=I.Select.Title.fillStyle),i&&i.type==u.Title&&(this.context.strokeStyle=I.Focus.Title.strokeStyle,this.context.fillStyle=I.Focus.Title.fillStyle),this.context.font=`${24*c.ratio}px Microsoft YaHei`,this.context.fillText(e.value,this.context.canvas.width/2,e.height*c.ratio),this.context.restore()}drawBgImage(e){if(e.url!=null){const s={x:e.center.x*c.ratio,y:e.center.y*c.ratio};if(this.context.save(),this.context.translate(s.x+e.width*c.ratio/2,s.y+e.height*c.ratio/2),this.context.scale(e.scale,e.scale),e.image==null){var t=new Image;t.src=e.src,t.crossOrigin="",t.onload=(function(){this.context.drawImage(t,-t.width*c.ratio/2,-t.height*c.ratio/2,t.width*c.ratio,t.height*c.ratio)}).bind(this),e.image=t}else e.hasOwnProperty("width")?this.context.drawImage(e.image,-e.width*c.ratio/2,-e.height*c.ratio/2,e.width*c.ratio,e.height*c.ratio):this.context.drawImage(e.image,-e.width*c.ratio/2,-e.height*c.ratio/2,e.image.width*c.ratio,e.image.height*c.ratio);const i=x.getFocusItem(),n=x.getSelectItem();i&&i.type==u.BgImage?e.vectorId==i.vectorId&&(this.context.lineWidth=2/e.scale,this.context.strokeStyle=I.Select.Tag.strokeStyle,this.context.fillStyle=I.Select.Tag.fillStyle,this.context.strokeRect(-e.width*c.ratio/2,-e.height*c.ratio/2,e.width,e.height)):n&&n.type==u.BgImage&&e.vectorId==n.vectorId&&(this.context.lineWidth=2/e.scale,this.context.strokeStyle=I.Select.Tag.strokeStyle,this.context.fillStyle=I.Select.Tag.fillStyle,this.context.strokeRect(-e.width*c.ratio/2,-e.height*c.ratio/2,e.width,e.height)),this.context.restore()}}drawCustomImage(e){if(e.url!=null){const s=c.getScreenXY(e.center);if(this.context.save(),this.context.translate(s.x,s.y),this.context.scale(e.scale,e.scale),this.context.translate(-1*e.ratio*e.width/2*c.ratio,-1*e.ratio*e.height/2*c.ratio),this.context.rotate(e.angle/180*Math.PI),this.context.translate(e.ratio*e.width/2*c.ratio,e.ratio*e.height/2*c.ratio),e.image==null){var t=new Image;t.src=e.url,t.crossOrigin="",t.onload=(function(){this.context.drawImage(t,-t.width*c.ratio,-t.height*c.ratio)}).bind(this),e.image=t}else e.hasOwnProperty("width")?this.context.drawImage(e.image,-e.ratio*e.width*c.ratio,-e.ratio*e.height*c.ratio,e.ratio*e.width*c.ratio,e.ratio*e.height*c.ratio):this.context.drawImage(e.image,-e.ratio*e.width*c.ratio,-e.ratio*e.height*c.ratio,e.ratio*e.width*c.ratio,e.ratio*e.height*c.ratio);const i=x.getFocusItem(),n=x.getSelectItem();i&&i.type==u.CustomImage?e.vectorId==i.vectorId&&(this.context.lineWidth=2/e.scale,this.context.strokeStyle=I.Select.Tag.strokeStyle,this.context.fillStyle=I.Select.Tag.fillStyle,this.context.strokeRect(-e.ratio*e.width,-e.ratio*e.height,e.ratio*e.width,e.ratio*e.height)):n&&n.type==u.CustomImage&&e.vectorId==n.vectorId&&(this.context.lineWidth=2/e.scale,this.context.strokeStyle=I.Select.Tag.strokeStyle,this.context.fillStyle=I.Select.Tag.fillStyle,this.context.strokeRect(-e.ratio*e.width,-e.ratio*e.height,e.ratio*e.width,e.ratio*e.height)),this.context.restore()}}drawCompass(e){this.context.save(),this.context.strokeStyle=I.Compass.strokeStyle,this.context.fillStyle=I.Compass.fillStyle;const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();t&&t.type==u.Compass?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Compass.strokeStyle,this.context.fillStyle=I.Select.Compass.fillStyle):s&&s.type==u.Compass&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Compass.strokeStyle,this.context.fillStyle=I.Select.Compass.fillStyle),i&&i.type==u.Compass&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Compass.strokeStyle,this.context.fillStyle=I.Focus.Compass.fillStyle),this.context.translate(e.center.x*c.ratio,e.center.y*c.ratio),this.context.scale(c.ratio,c.ratio),this.context.translate(16,36),this.context.rotate(e.angle/180*Math.PI),this.context.translate(-16,-36),this.context.lineWidth=1,this.context.miterLimit=4,this.context.font="15px ''",this.context.beginPath(),this.context.moveTo(12.5221,3.262),this.context.lineTo(8.93807,3.262),this.context.lineTo(8.93807,4.284),this.context.lineTo(12.5221,4.284),this.context.lineTo(12.5221,8.204),this.context.bezierCurveTo(11.0241,8.778,9.54007,9.352,8.51807,9.688),this.context.lineTo(8.99407,10.724),this.context.bezierCurveTo(10.0021,10.304,11.2761,9.786,12.5221,9.24),this.context.lineTo(12.5221,12.334),this.context.lineTo(13.5861,12.334),this.context.lineTo(13.5861,0),this.context.lineTo(12.5221,0),this.context.lineTo(12.5221,3.262),this.context.closePath(),this.context.moveTo(17.6881,11.13),this.context.bezierCurveTo(17.0721,11.13,16.9601,11.004,16.9601,10.29),this.context.lineTo(16.9601,5.726),this.context.bezierCurveTo(18.4581,4.9,20.0821,3.934,21.2581,2.982),this.context.lineTo(20.4181,2.114),this.context.bezierCurveTo(19.5781,2.912,18.2621,3.85,16.9601,4.648),this.context.lineTo(16.9601,0),this.context.lineTo(15.8961,0),this.context.lineTo(15.8961,10.276),this.context.bezierCurveTo(15.8961,11.746,16.2741,12.152,17.5901,12.152),this.context.lineTo(19.7741,12.152),this.context.bezierCurveTo(21.1321,12.152,21.4261,11.27,21.5521,8.722),this.context.bezierCurveTo(21.2581,8.652,20.8241,8.442,20.5441,8.232),this.context.bezierCurveTo(20.4461,10.556,20.3481,11.13,19.6901,11.13),this.context.lineTo(17.6881,11.13),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(24.8494,49.3321),this.context.lineTo(28.7452,51),this.context.lineTo(27.3498,47.2775),this.context.bezierCurveTo(30.224,44.385,32,40.3999,32,36),this.context.bezierCurveTo(32,27.5465,25.4442,20.6242,17.1394,20.0399),this.context.lineTo(15.9998,17),this.context.lineTo(14.8602,20.04),this.context.bezierCurveTo(6.55559,20.6245,0,27.5467,0,36),this.context.bezierCurveTo(0,40.3998,1.77588,44.3847,4.64993,47.2772),this.context.lineTo(3.25439,51),this.context.lineTo(7.15046,49.3319),this.context.bezierCurveTo(9.68503,51.0177,12.7278,52,16,52),this.context.bezierCurveTo(19.2721,52,22.3148,51.0178,24.8494,49.3321),this.context.closePath(),this.context.moveTo(26.5656,45.1856),this.context.lineTo(17.9232,22.131),this.context.bezierCurveTo(24.7452,23.0683,30,28.9205,30,36),this.context.bezierCurveTo(30,39.5148,28.7048,42.7271,26.5656,45.1856),this.context.closePath(),this.context.moveTo(14.0763,22.1311),this.context.lineTo(5.43414,45.1852),this.context.bezierCurveTo(3.29512,42.7268,2,39.5146,2,36),this.context.bezierCurveTo(2,28.9206,7.25457,23.0685,14.0763,22.1311),this.context.closePath(),this.context.moveTo(7.43459,47.0749),this.context.bezierCurveTo(7.28407,46.9583,7.13599,46.8387,6.99045,46.7162),this.context.lineTo(15,25.3497),this.context.lineTo(15,43.8358),this.context.lineTo(7.43459,47.0749),this.context.closePath(),this.context.moveTo(9.4198,48.3604),this.context.lineTo(15.9998,45.5432),this.context.lineTo(22.58,48.3605),this.context.bezierCurveTo(20.6184,49.4069,18.3785,50,16,50),this.context.bezierCurveTo(13.6214,50,11.3814,49.4068,9.4198,48.3604),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore(),this.context.save(),this.context.font=12*c.ratio+"px Microsoft YaHei";let n="角度:"+e.angle+"°",l=this.context.measureText(n).width;this.context.fillText(n,e.center.x*c.ratio-l/5,(e.center.y+85)*c.ratio),this.context.restore()}setCanvasStyle(e){for(const t in e)t!="isFill"&&t!="isStroke"&&(this.context[t]=e[t])}drawSign(e){e.geoType==u.Cigaret?(this.drawCigaret(e),this.drawTestCircle(e)):e.geoType==u.FirePoint?(this.drawFirePoint(e),this.drawTestCircle(e)):e.geoType==u.LeftFootPrint?(this.drawLeftFootPrint(e),this.drawTestCircle(e)):e.geoType==u.RightFootPrint?(this.drawRightFootPrint(e),this.drawTestCircle(e)):e.geoType==u.LeftShoePrint?(this.drawLeftShoePrint(e),this.drawTestCircle(e)):e.geoType==u.RightShoePrint?(this.drawRightShoePrint(e),this.drawTestCircle(e)):e.geoType==u.FingerPrint?(this.drawFingerPrint(e),this.drawTestCircle(e)):e.geoType==u.DeadBody?(this.drawDeadBody(e),this.drawTestCircle(e)):e.geoType==u.BloodStain&&(this.drawBloodStain(e),this.drawTestCircle(e))}drawTestCircle(e){}drawCigaret(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle=I.Sign.strokeStyle,this.context.fillStyle="rgba(0,0,0,1)",t&&t.type==u.Cigaret?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.Cigaret&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.Cigaret&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.miterLimit=4,this.context.font="15px ''",this.context.beginPath(),this.context.moveTo(38.6342,4),this.context.bezierCurveTo(38.6342,4,41.1545,9.5,39.1546,12.5),this.context.bezierCurveTo(37.1547,15.5,39.1546,19,39.1546,19),this.context.bezierCurveTo(36.0776,15.923,34.9395,14,37.1547,10.5),this.context.bezierCurveTo(39.3699,7,38.6342,4,38.6342,4),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(4,29),this.context.bezierCurveTo(2.89543,29,2,29.8954,2,31),this.context.lineTo(2,39),this.context.bezierCurveTo(2,40.1046,2.89543,41,4,41),this.context.lineTo(34,41),this.context.lineTo(34,29),this.context.lineTo(4,29),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(40.7714,20.5),this.context.bezierCurveTo(38.7716,17.5,41.2918,12,41.2918,12),this.context.bezierCurveTo(41.2918,12,40.5561,15,42.7713,18.5),this.context.bezierCurveTo(44.9866,22,43.8485,23.923,40.7714,27),this.context.bezierCurveTo(40.7714,27,42.7713,23.5,40.7714,20.5),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(37.5,29),this.context.bezierCurveTo(36.6716,29,36,29.6716,36,30.5),this.context.lineTo(36,39.5),this.context.bezierCurveTo(36,40.3284,36.6716,41,37.5,41),this.context.bezierCurveTo(38.3284,41,39,40.3284,39,39.5),this.context.lineTo(39,30.5),this.context.bezierCurveTo(39,29.6716,38.3284,29,37.5,29),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(42,29),this.context.bezierCurveTo(41.1716,29,40.5,29.6716,40.5,30.5),this.context.lineTo(40.5,39.5),this.context.bezierCurveTo(40.5,40.3284,41.1716,41,42,41),this.context.bezierCurveTo(42.8284,41,43.5,40.3284,43.5,39.5),this.context.lineTo(43.5,30.5),this.context.bezierCurveTo(43.5,29.6716,42.8284,29,42,29),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawFirePoint(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="rgba(255,77,79,1)",t&&t.type==u.FirePoint?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.FirePoint&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.FirePoint&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.ratio,e.getLen()*e.scale*c.res/32*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32),this.context.beginPath(),this.context.moveTo(6.15863,28.8837),this.context.bezierCurveTo(4.84988,35.4972,11.9564,43.3721,15.8216,45),this.context.bezierCurveTo(15.8216,45,13.2504,38.8,14.8553,34.7442),this.context.bezierCurveTo(16.7879,29.8605,19.6868,25.9535,19.6868,25.9535),this.context.bezierCurveTo(19.6868,25.9535,20.1699,26.9302,20.6531,28.8837),this.context.bezierCurveTo(21.1363,30.8372,21.1363,31.3256,21.1363,31.3256),this.context.bezierCurveTo(21.1363,31.3256,22.9249,29.2771,23.5519,27.4186),this.context.bezierCurveTo(24.4676,24.7049,24.0351,20.093,24.0351,20.093),this.context.bezierCurveTo(24.0351,20.093,29.8166,25.9798,31.2823,30.8372),this.context.bezierCurveTo(32.8795,36.1307,30.7991,45,30.7991,45),this.context.bezierCurveTo(30.7991,45,40.7338,38.6512,41.9116,29.8605),this.context.bezierCurveTo(42.9992,21.7424,33.698,11.3023,33.698,11.3023),this.context.bezierCurveTo(33.698,11.3023,34.148,13.8357,33.698,15.6977),this.context.bezierCurveTo(33.3976,16.9405,32.2486,18.6279,32.2486,18.6279),this.context.bezierCurveTo(32.2486,18.6279,30.7991,13.884,27.9004,9.83721),this.context.bezierCurveTo(25.5478,6.55294,20.6531,3,20.6531,3),this.context.bezierCurveTo(20.6531,3,20.6531,9.34884,19.2037,13.7442),this.context.bezierCurveTo(17.7542,18.1395,12.9227,22.5349,12.9227,22.5349),this.context.lineTo(11.4733,15.2093),this.context.bezierCurveTo(10.0238,17.9767,7.12508,24,6.15863,28.8837),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawLeftFootPrint(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="rgba(0,0,0,1)",t&&t.type==u.LeftFootPrint?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.LeftFootPrint&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.LeftFootPrint&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(26.5,7),this.context.bezierCurveTo(25.1193,7,24,5.88071,24,4.5),this.context.bezierCurveTo(24,3.11929,25.1193,2,26.5,2),this.context.bezierCurveTo(27.8807,2,29,3.11929,29,4.5),this.context.bezierCurveTo(29,5.88071,27.8807,7,26.5,7),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(32,12),this.context.bezierCurveTo(30.3431,12,29,10.6569,29,9),this.context.bezierCurveTo(29,7.34315,30.3431,6,32,6),this.context.bezierCurveTo(33.6569,6,35,7.34315,35,9),this.context.bezierCurveTo(35,10.6569,33.6569,12,32,12),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(18,5),this.context.bezierCurveTo(18,6.10457,18.8954,7,20,7),this.context.bezierCurveTo(21.1046,7,22,6.10457,22,5),this.context.bezierCurveTo(22,3.89543,21.1046,3,20,3),this.context.bezierCurveTo(18.8954,3,18,3.89543,18,5),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(15,10),this.context.bezierCurveTo(13.8954,10,13,9.10457,13,8),this.context.bezierCurveTo(13,6.89543,13.8954,6,15,6),this.context.bezierCurveTo(16.1046,6,17,6.89543,17,8),this.context.bezierCurveTo(17,9.10457,16.1046,10,15,10),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(10,12.5),this.context.bezierCurveTo(10,13.3284,10.6716,14,11.5,14),this.context.bezierCurveTo(12.3284,14,13,13.3284,13,12.5),this.context.bezierCurveTo(13,11.6716,12.3284,11,11.5,11),this.context.bezierCurveTo(10.6716,11,10,11.6716,10,12.5),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(29.0721,31.5068),this.context.bezierCurveTo(29.0721,31.5068,28.037,29.0085,29.0721,27.2243),this.context.bezierCurveTo(30.1072,25.4402,30.9125,23.8936,31.6392,20.6224),this.context.bezierCurveTo(32.3658,17.3511,30.3143,9.73826,22.1998,10.0059),this.context.bezierCurveTo(14.0852,10.2735,13.2572,17.4108,13.0088,21.4254),this.context.bezierCurveTo(12.7604,25.44,17.8113,38.0193,21.4544,42.1233),this.context.bezierCurveTo(25.0975,46.2273,27.6647,46.5838,29.9831,45.424),this.context.bezierCurveTo(32.3016,44.2642,33.3778,42.5692,32.881,40.4282),this.context.bezierCurveTo(32.3842,38.2873,29.0721,31.5068,29.0721,31.5068),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawRightFootPrint(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="rgba(0,0,0,1)",t&&t.type==u.RightFootPrint?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.RightFootPrint&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.RightFootPrint&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(18.5,7),this.context.bezierCurveTo(19.8807,7,21,5.88071,21,4.5),this.context.bezierCurveTo(21,3.11929,19.8807,2,18.5,2),this.context.bezierCurveTo(17.1193,2,16,3.11929,16,4.5),this.context.bezierCurveTo(16,5.88071,17.1193,7,18.5,7),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(13,12),this.context.bezierCurveTo(14.6569,12,16,10.6569,16,9),this.context.bezierCurveTo(16,7.34315,14.6569,6,13,6),this.context.bezierCurveTo(11.3431,6,10,7.34315,10,9),this.context.bezierCurveTo(10,10.6569,11.3431,12,13,12),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(27,5),this.context.bezierCurveTo(27,6.10457,26.1046,7,25,7),this.context.bezierCurveTo(23.8954,7,23,6.10457,23,5),this.context.bezierCurveTo(23,3.89543,23.8954,3,25,3),this.context.bezierCurveTo(26.1046,3,27,3.89543,27,5),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(30,10),this.context.bezierCurveTo(31.1046,10,32,9.10457,32,8),this.context.bezierCurveTo(32,6.89543,31.1046,6,30,6),this.context.bezierCurveTo(28.8954,6,28,6.89543,28,8),this.context.bezierCurveTo(28,9.10457,28.8954,10,30,10),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(35,12.5),this.context.bezierCurveTo(35,13.3284,34.3284,14,33.5,14),this.context.bezierCurveTo(32.6716,14,32,13.3284,32,12.5),this.context.bezierCurveTo(32,11.6716,32.6716,11,33.5,11),this.context.bezierCurveTo(34.3284,11,35,11.6716,35,12.5),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(15.9279,31.5068),this.context.bezierCurveTo(15.9279,31.5068,16.963,29.0085,15.9279,27.2243),this.context.bezierCurveTo(14.8928,25.4402,14.0875,23.8936,13.3608,20.6224),this.context.bezierCurveTo(12.6342,17.3511,14.6857,9.73826,22.8002,10.0059),this.context.bezierCurveTo(30.9148,10.2735,31.7428,17.4108,31.9912,21.4254),this.context.bezierCurveTo(32.2396,25.44,27.1887,38.0193,23.5456,42.1233),this.context.bezierCurveTo(19.9025,46.2273,17.3353,46.5838,15.0169,45.424),this.context.bezierCurveTo(12.6984,44.2642,11.6222,42.5692,12.119,40.4282),this.context.bezierCurveTo(12.6158,38.2873,15.9279,31.5068,15.9279,31.5068),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawLeftShoePrint(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.fillStyle="rgba(0,0,0,1)",this.context.font=" 15px ''",t&&t.type==u.LeftShoePrint?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.LeftShoePrint&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.LeftShoePrint&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(29.9064,30.2635),this.context.lineTo(18.3897,31.999),this.context.bezierCurveTo(18.3897,31.999,14,24.0766,14,18.5101),this.context.bezierCurveTo(14,9.43774,16.8732,1.75238,22.3803,2.00508),this.context.bezierCurveTo(28.3968,2.28117,31,9.00467,31,15.3264),this.context.bezierCurveTo(31,18.8919,30.7015,20.0653,29.9867,22.8753),this.context.bezierCurveTo(29.7961,23.6244,29.5759,24.4898,29.3239,25.5478),this.context.bezierCurveTo(28.9957,26.926,29.9064,30.2635,29.9064,30.2635),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(30.5,34),this.context.lineTo(19,35.4383),this.context.bezierCurveTo(19,35.4383,19.316,39.7531,19.8057,42.3198),this.context.bezierCurveTo(20.2953,44.8865,22.9828,46.465,26.2418,45.8773),this.context.bezierCurveTo(29.5007,45.2895,32.4426,43.1091,31.9447,40.287),this.context.bezierCurveTo(31.4469,37.4649,30.5,34,30.5,34),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawRightShoePrint(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="rgba(0,0,0,1)",t&&t.type==u.RightShoePrint?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.RightShoePrint&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.RightShoePrint&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(16.0936,30.2635),this.context.lineTo(27.6103,31.999),this.context.bezierCurveTo(27.6103,31.999,32,24.0766,32,18.5101),this.context.bezierCurveTo(32,9.43774,29.1268,1.75238,23.6197,2.00508),this.context.bezierCurveTo(17.6032,2.28117,15,9.00467,15,15.3264),this.context.bezierCurveTo(15,18.8919,15.2985,20.0653,16.0133,22.8753),this.context.bezierCurveTo(16.2039,23.6244,16.4241,24.4898,16.6761,25.5478),this.context.bezierCurveTo(17.0043,26.926,16.0936,30.2635,16.0936,30.2635),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(15.5,34),this.context.lineTo(27,35.4383),this.context.bezierCurveTo(27,35.4383,26.684,39.7531,26.1943,42.3198),this.context.bezierCurveTo(25.7047,44.8865,23.0172,46.465,19.7582,45.8773),this.context.bezierCurveTo(16.4993,45.2895,13.5574,43.1091,14.0553,40.287),this.context.bezierCurveTo(14.5531,37.4649,15.5,34,15.5,34),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawFingerPrint(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="rgba(0,0,0,1)",t&&t.type==u.FingerPrint?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.FingerPrint&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.FingerPrint&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(43.4999,21.5),this.context.bezierCurveTo(43.4999,16.542,39.7109,10.8816,34.1276,7.63537),this.context.bezierCurveTo(28.4657,4.34348,20.8249,3.43868,12.9856,8.14233),this.context.bezierCurveTo(6.24753,12.1852,4.43294,18.9936,4.70686,25.2575),this.context.bezierCurveTo(4.97928,31.4873,7.31395,37.4063,9.18082,40.0733),this.context.bezierCurveTo(9.49752,40.5258,10.121,40.6358,10.5735,40.3191),this.context.bezierCurveTo(11.026,40.0024,11.136,39.3789,10.8193,38.9265),this.context.bezierCurveTo(9.18619,36.5933,6.96197,31.0477,6.70495,25.1701),this.context.bezierCurveTo(6.44942,19.3268,8.13483,13.3852,14.0146,9.85731),this.context.bezierCurveTo(21.1752,5.56085,28.0343,6.40615,33.1223,9.36438),this.context.bezierCurveTo(38.289,12.3683,41.4999,17.458,41.4999,21.5),this.context.bezierCurveTo(41.4999,24.6008,40.785,26.4882,39.8962,27.6385),this.context.bezierCurveTo(39.0131,28.7814,37.8743,29.3053,36.8039,29.5194),this.context.bezierCurveTo(33.9357,30.0933,31.4302,27.9399,30.9899,24.8585),this.context.bezierCurveTo(30.438,20.9948,27.6176,17.4999,23,17.4999),this.context.bezierCurveTo(20.6398,17.4999,18.5331,18.6977,17.4181,20.9277),this.context.bezierCurveTo(16.3192,23.1255,16.2513,26.1767,17.5583,29.8362),this.context.bezierCurveTo(18.5365,32.5753,20.7176,35.1665,22.999,37.2483),this.context.bezierCurveTo(25.2933,39.3417,27.7947,41.0153,29.5528,41.8943),this.context.bezierCurveTo(30.0468,42.1413,30.6474,41.9411,30.8944,41.4471),this.context.bezierCurveTo(31.1414,40.9531,30.9412,40.3525,30.4472,40.1055),this.context.bezierCurveTo(28.8719,39.3178,26.5208,37.7543,24.3471,35.7709),this.context.bezierCurveTo(22.1606,33.7757,20.2584,31.4503,19.4417,29.1636),this.context.bezierCurveTo(18.2488,25.8233,18.4309,23.3744,19.207,21.8222),this.context.bezierCurveTo(19.9669,20.3022,21.3602,19.4999,23,19.4999),this.context.bezierCurveTo(26.3823,19.4999,28.562,22.0051,29.01,25.1413),this.context.bezierCurveTo(29.5699,29.0599,32.9258,32.3349,37.1962,31.4806),this.context.bezierCurveTo(38.6259,31.1946,40.237,30.4684,41.4788,28.8614),this.context.bezierCurveTo(42.7149,27.2617,43.4999,24.8992,43.4999,21.5),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(28.3137,13.9002),this.context.bezierCurveTo(24.531,12.0661,19.8915,12.2936,16.2281,16.1858),this.context.bezierCurveTo(12.5481,20.0959,12.3111,24.8487,13.7047,29.4641),this.context.bezierCurveTo(15.1069,34.1077,18.1345,38.4781,20.738,41.3257),this.context.bezierCurveTo(21.1106,41.7333,21.0823,42.3658,20.6747,42.7385),this.context.bezierCurveTo(20.2671,43.1112,19.6346,43.0828,19.2619,42.6752),this.context.bezierCurveTo(16.5321,39.6895,13.3063,35.0635,11.7901,30.0422),this.context.bezierCurveTo(10.2654,24.9927,10.445,19.4122,14.7717,14.8151),this.context.bezierCurveTo(19.1085,10.2073,24.719,9.93463,29.1863,12.1005),this.context.bezierCurveTo(33.601,14.241,36.9999,18.8096,36.9999,24.0005),this.context.bezierCurveTo(36.9999,24.5528,36.5522,25.0005,35.9999,25.0005),this.context.bezierCurveTo(35.4477,25.0005,34.9999,24.5528,34.9999,24.0005),this.context.bezierCurveTo(34.9999,19.6911,32.1489,15.7597,28.3137,13.9002),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(23.3825,24.507),this.context.bezierCurveTo(23.93,24.4422,24.4265,24.8327,24.4928,25.3797),this.context.lineTo(24.493,25.381),this.context.bezierCurveTo(24.493,25.3814,24.4932,25.3825,23.5001,25.5001),this.context.lineTo(22.507,25.6177),this.context.bezierCurveTo(22.4421,25.0693,22.834,24.572,23.3825,24.507),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(23.5001,25.5001),this.context.lineTo(24.4932,25.3825),this.context.lineTo(24.4934,25.3844),this.context.lineTo(24.498,25.4166),this.context.bezierCurveTo(24.5026,25.4479,24.5105,25.4984,24.5228,25.5664),this.context.bezierCurveTo(24.5472,25.7024,24.5887,25.9078,24.6548,26.1683),this.context.bezierCurveTo(24.7871,26.6901,25.0169,27.4283,25.4033,28.2707),this.context.bezierCurveTo(26.1756,29.9543,27.5658,32.0393,30.0477,33.6633),this.context.bezierCurveTo(32.5055,35.2717,35.0375,35.6213,36.9758,35.563),this.context.bezierCurveTo(37.9445,35.534,38.7565,35.403,39.3219,35.2806),this.context.bezierCurveTo(39.6041,35.2195,39.8233,35.1608,39.9682,35.1188),this.context.bezierCurveTo(40.0407,35.0978,40.0944,35.081,40.1279,35.0701),this.context.bezierCurveTo(40.1373,35.0671,40.1451,35.0645,40.1512,35.0625),this.context.bezierCurveTo(40.1561,35.0609,40.16,35.0596,40.1629,35.0586),this.context.lineTo(40.1665,35.0574),this.context.lineTo(40.1686,35.0566),this.context.bezierCurveTo(40.6887,34.8739,41.2588,35.1466,41.4428,35.6665),this.context.bezierCurveTo(41.6271,36.1871,41.3544,36.7586,40.8337,36.9428),this.context.lineTo(40.5001,36.0001),this.context.bezierCurveTo(40.8337,36.9428,40.8342,36.9427,40.8337,36.9428),this.context.lineTo(40.8319,36.9435),this.context.lineTo(40.8295,36.9443),this.context.lineTo(40.8233,36.9465),this.context.lineTo(40.8046,36.9529),this.context.bezierCurveTo(40.7893,36.958,40.7687,36.9649,40.7427,36.9733),this.context.bezierCurveTo(40.6909,36.99,40.618,37.0128,40.5254,37.0396),this.context.bezierCurveTo(40.3403,37.0933,40.0763,37.1636,39.7451,37.2353),this.context.bezierCurveTo(39.0837,37.3785,38.1486,37.5287,37.0358,37.5621),this.context.bezierCurveTo(34.8114,37.6289,31.8434,37.2285,28.9525,35.3369),this.context.bezierCurveTo(26.0858,33.4609,24.476,31.0459,23.5854,29.1045),this.context.bezierCurveTo(23.1404,28.1344,22.8731,27.2789,22.7161,26.66),this.context.bezierCurveTo(22.6376,26.3502,22.5864,26.0986,22.5543,25.9202),this.context.bezierCurveTo(22.5383,25.8309,22.527,25.7598,22.5195,25.7088),this.context.bezierCurveTo(22.5157,25.6833,22.5129,25.6628,22.5108,25.6476),this.context.lineTo(22.5084,25.6286),this.context.lineTo(22.5076,25.6222),this.context.lineTo(22.5073,25.6197),this.context.lineTo(22.507,25.6177),this.context.bezierCurveTo(22.507,25.6172,22.507,25.6177,23.5001,25.5001),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawDeadBody(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="#040101",t&&t.type==u.DeadBody?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.DeadBody&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.DeadBody&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(5.91335,12.2268),this.context.bezierCurveTo(4.35883,11.5123,3.17581,11.4098,2.00721,12.6867),this.context.lineTo(2,13.7478),this.context.bezierCurveTo(2.29231,15.0665,3.42071,15.5909,4.46298,16.0752),this.context.bezierCurveTo(4.51387,16.0989,4.56455,16.1224,4.61492,16.146),this.context.bezierCurveTo(11.3957,19.2976,16.3298,24.5608,21.2386,29.8665),this.context.bezierCurveTo(21.9491,30.6341,21.8878,31.0197,20.7841,31.1647),this.context.bezierCurveTo(19.2801,31.3628,18.7752,32.3001,19.0853,33.6654),this.context.bezierCurveTo(19.5326,35.6498,20.0123,37.627,20.6327,39.5689),this.context.bezierCurveTo(20.7153,39.9046,20.8859,40.2134,21.1276,40.4646),this.context.bezierCurveTo(21.3692,40.7159,21.6735,40.9009,22.0104,41.0015),this.context.lineTo(22.7318,41.0015),this.context.bezierCurveTo(23.5253,40.5699,23.9725,39.9403,23.785,39.0313),this.context.bezierCurveTo(23.7124,38.6795,23.6668,38.3204,23.6213,37.9616),this.context.bezierCurveTo(23.5492,37.3932,23.4772,36.8256,23.2981,36.29),this.context.bezierCurveTo(22.8184,34.8645,23.3702,34.5816,24.6975,34.7372),this.context.bezierCurveTo(26.9098,34.9961,28.9508,33.7344,30.5482,32.747),this.context.bezierCurveTo(31.0238,32.453,31.46,32.1833,31.8497,31.9853),this.context.bezierCurveTo(32.2324,31.7909,32.6231,31.5841,33.0213,31.3734),this.context.bezierCurveTo(34.3907,30.6486,35.848,29.8773,37.3681,29.4032),this.context.bezierCurveTo(37.9053,29.2344,38.2276,29.511,38.5499,29.7877),this.context.bezierCurveTo(38.6194,29.8473,38.6888,29.9069,38.7603,29.962),this.context.bezierCurveTo(40.191,31.0821,41.6277,32.2081,43.0705,33.34),this.context.bezierCurveTo(43.9,33.9908,44.7584,34.2986,45.5772,33.3789),this.context.bezierCurveTo(46.3959,32.4593,45.9018,31.6634,45.1444,30.956),this.context.bezierCurveTo(44.6458,30.494,44.1439,30.0346,43.6418,29.575),this.context.bezierCurveTo(42.4948,28.5252,41.3468,27.4745,40.2355,26.3895),this.context.bezierCurveTo(39.3158,25.4876,38.4213,25.0313,37.0796,25.5442),this.context.bezierCurveTo(34.0823,26.6973,25.2493,20.2632,24.7877,18.7175),this.context.bezierCurveTo(24.4268,17.5159,24.8984,16.0559,25.3601,14.6263),this.context.bezierCurveTo(25.5168,14.1411,25.6724,13.6594,25.794,13.1925),this.context.bezierCurveTo(26.1835,11.6715,25.5343,10.7589,24.1889,10.3628),this.context.bezierCurveTo(21.4117,9.55275,18.6056,8.84533,15.796,8.13791),this.context.bezierCurveTo(14.768,7.87969,13.7293,7.87262,13.3686,9.16721),this.context.bezierCurveTo(13.0404,10.3522,13.6211,11.0136,14.7356,11.4133),this.context.bezierCurveTo(16.5065,12.0535,18.263,12.7256,20.0159,13.433),this.context.bezierCurveTo(20.0817,13.4588,20.1525,13.4826,20.2245,13.5068),this.context.bezierCurveTo(20.6456,13.6484,21.1094,13.8043,20.8815,14.4658),this.context.bezierCurveTo(20.4549,15.6984,20.0227,16.9292,19.5629,18.2388),this.context.bezierCurveTo(19.3774,18.7669,19.1875,19.3079,18.9916,19.8671),this.context.bezierCurveTo(14.9916,16.4537,10.4759,14.3208,5.91335,12.2268),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(34.7105,32.0067),this.context.bezierCurveTo(32.6436,31.8937,31.1351,33.2167,31.0119,35.2432),this.context.bezierCurveTo(30.9738,35.7034,31.0276,36.1666,31.17,36.6057),this.context.bezierCurveTo(31.3124,37.0448,31.5406,37.4509,31.8411,37.8002),this.context.bezierCurveTo(32.1417,38.1495,32.5086,38.435,32.9204,38.6399),this.context.bezierCurveTo(33.3322,38.8448,33.7805,38.965,34.2391,38.9935),this.context.bezierCurveTo(35.1675,39.0499,36.0808,38.7378,36.7827,38.1244),this.context.bezierCurveTo(37.4845,37.511,37.9188,36.6452,37.9922,35.7133),this.context.bezierCurveTo(38.0231,35.2524,37.9623,34.79,37.8134,34.353),this.context.bezierCurveTo(37.6645,33.916,37.4305,33.5132,37.1249,33.1681),this.context.bezierCurveTo(36.8194,32.823,36.4486,32.5426,36.034,32.3432),this.context.bezierCurveTo(35.6195,32.1438,35.1695,32.0294,34.7105,32.0067),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}drawBloodStain(e){const t=x.getSelectItem(),s=x.getDraggingItem(),i=x.getFocusItem();this.context.save(),this.context.strokeStyle="rgba(0,0,0,0)",this.context.miterLimit=4,this.context.font="15px ''",this.context.fillStyle="rgba(255,77,79,1)",t&&t.type==u.BloodStain?e.vectorId==t.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle):s&&s.type==u.BloodStain&&e.vectorId==s.vectorId&&(this.context.strokeStyle=I.Select.Sign.strokeStyle,this.context.fillStyle=I.Select.Sign.fillStyle),i&&i.type==u.BloodStain&&e.vectorId==i.vectorId&&(this.context.strokeStyle=I.Focus.Sign.strokeStyle,this.context.fillStyle=I.Focus.Sign.fillStyle);const n=c.getScreenXY({x:e.center.x,y:e.center.y}),l=c.getScreenXY({x:e.center.x-e.getLen()*e.scale/2,y:e.center.y+e.getLen()*e.scale/2});this.context.translate(n.x,n.y),this.context.rotate(e.angle/180*Math.PI),this.context.translate(l.x-n.x,l.y-n.y),this.context.scale(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio,e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom*c.ratio),this.context.lineWidth=1/(e.getLen()*e.scale*c.res/32*c.zoom/y.defaultZoom),this.context.beginPath(),this.context.moveTo(11.7832,43.4124),this.context.bezierCurveTo(13.9788,44.5378,19.4679,44.5355,19.468,38.91),this.context.bezierCurveTo(19.468,33.2844,21.1146,29.3458,26.0549,28.7831),this.context.bezierCurveTo(26.3893,28.745,26.7385,28.7077,27.1002,28.669),this.context.bezierCurveTo(32.0834,28.1363,39.425,27.3516,42.5224,20.9046),this.context.bezierCurveTo(44.2471,17.3148,41.7011,10.7791,28.2507,7.40168),this.context.bezierCurveTo(14.3038,3.89964,6.84294,7.40168,5.19509,13.0273),this.context.bezierCurveTo(3.54725,18.6528,12.8799,26.5313,12.8799,26.5313),this.context.bezierCurveTo(12.8799,26.5313,16.1646,30.722,15.0766,33.2844),this.context.bezierCurveTo(14.9608,34.6355,13.8708,35.0844,12.6391,35.5917),this.context.bezierCurveTo(11.5358,36.0461,10.3188,36.5474,9.58641,37.7858),this.context.bezierCurveTo(8.03737,40.4055,9.58751,42.2871,11.7832,43.4124),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(32.8372,34.4465),this.context.bezierCurveTo(32.3576,36.4893,31.5484,37,29.9586,37),this.context.bezierCurveTo(28.3688,37,26.6003,35.9786,27.08,34.4465),this.context.bezierCurveTo(27.5598,32.9144,29.5522,32,31.1421,32),this.context.bezierCurveTo(32.7319,32,33.3169,32.4037,32.8372,34.4465),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(37.4462,43),this.context.bezierCurveTo(38.8566,43,40,42.3284,40,41.5),this.context.bezierCurveTo(40,40.6716,38.3459,40,36.9355,40),this.context.bezierCurveTo(35.525,40,35,40.6716,35,41.5),this.context.bezierCurveTo(35,42.3284,36.0358,43,37.4462,43),this.context.closePath(),this.context.fill(),this.context.stroke(),this.context.restore()}}const V=new hi;class di{constructor(e){this.layer=e,this.displayPanos=!1}drawGeometry(e,t,s){if(!(V.context==null||e==null||!e.geoType)){switch(e.geoType){case u.Wall:V.drawWall(e,t);return;case u.Point:V.drawPoint(e);return;case u.Tag:V.drawTag(e,t,s);return;case u.Rectangle:V.drawRectangle(e);return;case u.Circle:V.drawCircleGeo(e);return;case u.Icon:V.drawIcon(e);return;case u.Arrow:V.drawArrow(e);return;case u.Table:V.drawTable(e);return;case u.Title:V.drawTitle(e);return;case u.BgImage:V.drawBgImage(e);return;case u.Compass:V.drawCompass(e);return;case u.CustomImage:V.drawCustomImage(e);return}if(te.isSign(e.geoType)){V.drawSign(e);return}}}drawElement(e){if(V.context!=null)switch(e.geoType){case u.Point:V.drawCircle(e);break;case u.Line:V.drawLine(e);break}}redrawElements(){A.vCheckLines.X&&A.vCheckLines.X.display&&this.drawElement(A.vCheckLines.X),A.vCheckLines.Y&&A.vCheckLines.Y.display&&this.drawElement(A.vCheckLines.Y),A.startAddWall&&A.startAddWall.display&&this.drawElement(A.startAddWall),A.newWall&&A.newWall.display&&this.drawElement(A.newWall),A.checkLines.X&&A.checkLines.X.display&&this.drawElement(A.checkLines.X),A.checkLines.Y&&A.checkLines.Y.display&&this.drawElement(A.checkLines.Y)}redrawRooms(e){let t=roomService.getRooms(e);for(let s=0;s<t.length;++s){let i=null;for(let n=0;n<this.layer.app.CadManager.labels.length;++n)if(t[s].tagName!=null&&t[s].tagName.trim()==this.layer.app.CadManager.labels[n].text){this.layer.app.CadManager.labels[n].type=="hall"?(i=roomService.getHallImg(),V.drawRoomBackGround(t[s],i)):this.layer.app.CadManager.labels[n].type=="room"?(i=roomService.getDefaultImg(),V.drawRoomBackGround(t[s],i)):this.layer.app.CadManager.labels[n].type=="other"&&(i=roomService.getOtherImg(),V.drawRoomBackGround(t[s],i));break}i==null&&(i=roomService.getOtherImg(),V.drawRoomBackGround(t[s],i))}}autoRedraw(){V.clear();let e=r.getFloorData();if(!e)return;let t=e.title;this.drawGeometry(t);let s=e.bgImage;this.drawGeometry(s);let i=e.compass;this.drawGeometry(i);let n=e.walls;for(let p in n)this.drawGeometry(n[p]);let l=e.points;for(let p in l)this.drawGeometry(l[p]);let o=e.signs;for(let p in o)this.drawGeometry(o[p]);let a=e.tags;for(let p in a)this.drawGeometry(a[p]);let h=e.tables;for(let p in h)this.drawGeometry(h[p]);let f=e.rectangles;for(let p in f)this.drawGeometry(f[p]);let d=e.circles;for(let p in d)this.drawGeometry(d[p]);let m=e.arrows;for(let p in m)this.drawGeometry(m[p]);let w=e.icons;for(let p in w)this.drawGeometry(w[p]);let T=e.customImages;for(let p in T)this.drawGeometry(T[p]);V.drawFrame(),this.redrawElements()}autoRedrawForImg(){V.clear(),V.drawBackGround();let e=r.getFloorData();if(!e)return;let t=e.title;this.drawGeometry(t);let s=e.bgImage;this.drawGeometry(s);let i=e.compass;this.drawGeometry(i);let n=e.walls;for(let p in n)this.drawGeometry(n[p]);let l=e.points;for(let p in l)this.drawGeometry(l[p]);let o=e.signs;for(let p in o)this.drawGeometry(o[p]);let a=e.tags;for(let p in a)this.drawGeometry(a[p]);let h=e.tables;for(let p in h)this.drawGeometry(h[p]);let f=e.rectangles;for(let p in f)this.drawGeometry(f[p]);let d=e.circles;for(let p in d)this.drawGeometry(d[p]);let m=e.arrows;for(let p in m)this.drawGeometry(m[p]);let w=e.icons;for(let p in w)this.drawGeometry(w[p]);let T=e.customImages;for(let p in T)this.drawGeometry(T[p]);V.drawFrame(),this.redrawElements()}redrawCore(){console.log("重绘!"),V.clear();let e=r.getFloorData();if(!e)return;let t=e.walls;for(let n in t)this.drawGeometry(t[n]);let s=e.points;for(let n in s)this.drawGeometry(s[n]);let i=e.signs;for(let n in i)this.drawGeometry(i[n])}clear(){V.clear()}getContext(){return V.context}}class gi{constructor(){}moveFullCustomImage(e,t,s){let i=r.getCustomImage(s);i.center={x:i.center.x+e/c.res*y.defaultZoom/c.zoom,y:i.center.y-t/c.res*y.defaultZoom/c.zoom}}}const ui=new gi;class fi{constructor(){}moveFullBgImage(e,t,s){let i=r.getBgImage();i.url&&(i.center={x:i.center.x+e*y.defaultZoom/c.zoom,y:i.center.y+t*y.defaultZoom/c.zoom})}}const xi=new fi;class Ii{constructor(){this.load=new Zs(this),this.uiControl=new ii(this),this.renderer=new di(this),this.canvas=null,this.startX=null,this.startY=null,O.layer=this}start(e,t){return c.init(e),this.canvas=e,V.initContext(this.canvas),this.bindEvents(),console.log("load vectorData: ",t),this.load.load(t).then(()=>{this.renderer.autoRedraw()}).catch(s=>{console.log("load error: "),this.renderer.autoRedraw()})}bindEvents(){this.canvas.addEventListener("contextmenu",function(e){e.preventDefault()}),this.canvas.addEventListener("mousedown",this.onMouseDown.bind(this)),this.canvas.addEventListener("mousemove",this.onMouseMove.bind(this)),this.canvas.addEventListener("mouseup",this.onMouseUp.bind(this)),this.canvas.addEventListener("mousewheel",this.onWheel.bind(this)),this.canvas.addEventListener("DOMMouseScroll",this.onWheel.bind(this))}onMouseDown(e){if(this.startX=e.offsetX||e.layerX,this.startY=e.offsetY||e.layerY,this.lastX=e.offsetX||e.layerX,this.lastY=e.offsetY||e.layerY,e.button==2){this.stopAddVector(),this.renderer.autoRedraw();return}const t=x.getEventName();if(t==P.AddWall){if(!q.setNewWallPoint("start",{x:this.startX,y:this.startY}))return}else if(t==P.AddingWall){if(!q.setNewWallPoint("end",{x:this.startX,y:this.startY}))return;if(q.canAdd)q.buildWall(),O.save();else return}else if(t==P.AddRectangle)ue.execute({x:this.startX,y:this.startY});else if(t==P.AddCircle)oe.execute({x:this.startX,y:this.startY});else if(t==P.AddIcon)re.execute({x:this.startX,y:this.startY});else if(t==P.AddArrow)le.execute({x:this.startX,y:this.startY});else{const s=x.getSelectItem();t==null&&s&&(x.setDraggingItem(s),this.uiControl.selectUI=s.type)}this.setEventName("mouseDown"),this.uiControl.clearUI(),e.preventDefault(),e.stopPropagation()}onMouseMove(e){console.log("mousemove",e);const t=e.offsetX||e.layerX,s=e.offsetY||e.layerY;this.lastX==null&&(this.lastX=t),this.lastY==null&&(this.lastY=s);let i=t-this.lastX,n=s-this.lastY,l=c.getXYFromScreen({x:t,y:s});const o=x.getEventName();let a=!1;const h=x.getDraggingItem();switch(o){case null:a=z.start(l);break;case P.PanBackGround:break;case P.AddWall:x.clearDraggingItem(),x.clearFocusItem(),a=!0,z.start(l),z.modifyPoint&&(l={x:z.modifyPoint.x,y:z.modifyPoint.y}),A.execute(null,l),A.setStartAddWall(l),A.showStartAddWall();break;case P.AddingWall:x.clearDraggingItem(),x.clearFocusItem(),a=!0;let f={x:q.startInfo.position.x,y:q.startInfo.position.y};if(z.start(l,null,null,f),z.modifyPoint&&(l={x:z.modifyPoint.x,y:z.modifyPoint.y}),A.execute(f,l),A.setStartAddWall(l),!A.newWall.display)A.setNewWall(f,l),A.showNewWall();else{if(!z.modifyPoint&&q.startInfo.linkedPointId){let p=A.checkAngle(l,q.startInfo.linkedPointId,null);p&&(g.clonePoint(l,p),z.modifyPoint={x:p.x,y:p.y})}A.setNewWallEndPosition(l)}q.canAdd=q.canAddWallForEnd(l),q.canAdd?A.setNewWallState("normal"):A.setNewWallState("error");break;case P.MoveWall:i=i*y.defaultZoom/c.zoom,n=n*y.defaultZoom/c.zoom;let d=be.moveWallPlane(h.vectorId,i,n);d==1?(this.lastX=t,this.lastY=s,a=!0):d==2||(d==3?(O.save(),x.clearSelectItem(),x.clearDraggingItem(),x.clearEventName(),z.clear(),a=!0):d==4?(this.lastX=t,this.lastY=s,this.startX=t,this.startY=s,a=!0):d==5&&(this.lastX=t,this.lastY=s));break;case P.MoveWallPoint:let m=r.getPoint(h.vectorId);z.start(l,h.vectorId,m.parent),z.modifyPoint&&(l={x:z.modifyPoint.x,y:z.modifyPoint.y}),A.execute(null,l),be.movePoint(h.vectorId,l,z.modifyPoint)||A.hideAll(),a=!0;break;case P.AddRectangle:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall();break;case P.AddingRectangle:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall(),ue.execute(l);break;case P.MoveRectangle:a=!0,h!=null&&Xe.moveFullRectangle(i,n,h.vectorId),this.lastX=t,this.lastY=s;break;case P.MoveRectangleVertex:a=!0,h!=null&&(A.setStartAddWall(l),A.showStartAddWall(),Xe.moveRectangleVertex(l,h.vectorId,parseInt(h.selectIndex.substring(7))));break;case P.MoveRectangleSide:a=!0,h!=null&&Xe.moveRectangleSide(l,h.vectorId,parseInt(h.selectIndex.substring(5)));break;case P.AddCircle:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall();break;case P.AddingCircle:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall(),oe.execute(l);break;case P.MoveCircle:a=!0,h!=null&&ot.moveFullCircle(i,n,h.vectorId),this.lastX=t,this.lastY=s;break;case P.MoveCircleVertex:a=!0,h!=null&&ot.moveCircleVertex(l,h.vectorId,parseInt(h.selectIndex.substring(7)));break;case P.AddIcon:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall();break;case P.AddingIcon:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall(),re.execute(l);break;case P.MoveIcon:a=!0,h!=null&&rt.moveFullIcon(i,n,h.vectorId),this.lastX=t,this.lastY=s;break;case P.MoveIconVertex:a=!0,h!=null&&rt.moveIconVertex(l,h.vectorId,parseInt(h.selectIndex.substring(7)));break;case P.AddArrow:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall();break;case P.AddingArrow:x.clearDraggingItem(),x.clearFocusItem(),a=!0,A.setStartAddWall(l),A.showStartAddWall(),le.execute(l);break;case P.MoveArrow:a=!0,h!=null&&at.moveFullArrow(i,n,h.vectorId),this.lastX=t,this.lastY=s;break;case P.moveArrowVertex:a=!0,h!=null&&at.moveArrowVertex(l,h.vectorId,h.selectIndex);break;case P.AddTag:if(a=!0,h==null){const p=ve.createTag(l);p.vectorId&&(x.setSelectItem(p.vectorId,u.Tag,b.All),x.setDraggingItem(x.selectItem))}else nt.moveFullTag(i,n,h.vectorId);this.lastX=t,this.lastY=s;break;case P.MoveTag:a=!0,h!=null&&(nt.moveFullTag(i,n,h.vectorId),this.lastX=t,this.lastY=s);break;case P.AddTable:if(a=!0,h==null){const p=G.createTable(l);p.vectorId&&(x.setSelectItem(p.vectorId,u.Table,b.All),x.setDraggingItem(x.selectItem))}else lt.moveFullTable(i,n,h.vectorId);this.lastX=t,this.lastY=s;break;case P.MoveTable:a=!0,h!=null&&(lt.moveFullTable(i,n,h.vectorId),this.lastX=t,this.lastY=s);break;case P.AddSign:if(a=!0,h==null){const p=this.uiControl.getSignTypeForUI(),L=te.createSign(l,p);L.vectorId&&(x.setSelectItem(L.vectorId,p,b.All),x.setDraggingItem(x.selectItem))}else{const p=r.getSign(h.vectorId);g.clonePoint(p.center,l)}break;case P.MoveCustomImage:a=!0,h!=null&&(ui.moveFullCustomImage(i,n,h.vectorId),this.lastX=t,this.lastY=s);break;case P.MoveSign:a=!0;const T=r.getSign(h.vectorId);g.clonePoint(T.center,l);break;case P.MoveBgImage:a=!0,h!=null&&(xi.moveFullBgImage(i,n,h.vectorId),this.lastX=t,this.lastY=s);break}a&&this.renderer.autoRedraw()}onMouseUp(e){const t=e.offsetX||e.layerX,s=e.offsetY||e.layerY;let i=x.getEventName();const n=x.getDraggingItem();let l=null;switch(n&&n.vectorId&&(g.getDistance({x:this.startX,y:this.startY},{x:t,y:s})<y.minMovePix?(l={vectorId:n.vectorId,type:n.type,selectIndex:n.selectIndex,cursor:{x:this.lastX,y:this.lastY}},this.uiControl.showAttributes(l)):l=null,x.setFocusItem(l)),c.getXYFromScreen({x:t,y:s}),i){case null:return;case P.PanBackGround:x.clearFocusItem(),this.uiControl.clearUI();break;case P.MoveWallPoint:if(l==null){let o=r.getPoint(n.vectorId);o&&(z.start(o,n.vectorId,o.parent),z.modifyPoint&&z.modifyPoint.hasOwnProperty("linkedPointId")?F.moveTo(n.vectorId,z.modifyPoint.linkedPointId):z.modifyPoint&&(z.modifyPoint.linkedPointIdX||z.modifyPoint.linkedPointIdY)?g.clonePoint(o,z.modifyPoint):z.modifyPoint&&z.modifyPoint.hasOwnProperty("linkedWallId")?(o=F.createPoint(z.modifyPoint.x,z.modifyPoint.y),F.splitWall(z.modifyPoint.linkedWallId,o.vectorId,"start"),F.moveTo(n.vectorId,o.vectorId)):be.splitWallId!=null&&F.splitWall(be.splitWallId,n.vectorId,"start"),be.updateForAbsorbWallPoints(),O.save())}else this.uiControl.showAttributes(l);A.hideAll();break;case P.AddingWall:if(q.startInfo&&q.startInfo.linkedPointId){let o=r.getPoint(q.startInfo.linkedPointId);q.endInfo.position&&Object.keys(o.parent).length>1&&(x.clearEventName(),q.clear(),A.hideAll(),this.uiControl.clearUI(),O.save())}break;case P.MoveWall:l==null?O.save():this.uiControl.showAttributes(l);break;case P.AddingRectangle:g.getDistance(ue.start,ue.end)<y.minAdsorb&&r.deleteRectangle(ue.currentVectorId),x.clearEventName(),A.hideAll(),ue.clear(),O.save(),this.uiControl.clearUI();break;case P.MoveRectangle:l==null?O.save():this.uiControl.showAttributes(l);break;case P.MoveRectangleVertex:A.hideAll(),O.save();break;case P.MoveRectangleSide:O.save();break;case P.AddingCircle:oe.end!=null&&oe.currentVectorId!=null&&g.getDistance(oe.start,oe.end)<y.minAdsorb&&r.deleteCircle(oe.currentVectorId),x.clearEventName(),A.hideAll(),oe.clear(),O.save(),this.uiControl.clearUI();break;case P.MoveCircle:l==null?O.save():this.uiControl.showAttributes(l);break;case P.MoveCircleVertex:O.save();break;case P.AddingIcon:re.end!=null&&re.currentVectorId!=null&&g.getDistance(re.start,re.end)<y.minAdsorb&&ae.deleteIcon(re.currentVectorId),x.clearEventName(),A.hideAll(),re.clear(),O.save(),this.uiControl.clearUI();break;case P.MoveIcon:l==null?O.save():this.uiControl.showAttributes(l);break;case P.MoveIconVertex:O.save();break;case P.AddingArrow:le.start!=null&&le.currentVectorId!=null&&g.getDistance(le.start,le.end)<y.minAdsorb&&r.deleteArrow(le.currentVectorId),x.clearEventName(),A.hideAll(),le.clear(),O.save(),this.uiControl.clearUI();break;case P.MoveArrow:O.save();break;case P.MoveTag:l==null?O.save():this.uiControl.showAttributes(l);break;case P.AddTag:this.uiControl.showAttributes(l),O.save();break;case P.MoveTable:l==null?O.save():this.uiControl.showAttributes(l);break;case P.AddTable:this.uiControl.showAttributes(l),O.save();break;case P.AddSign:this.uiControl.clearUI(),this.uiControl.showAttributes(l),O.save();break;case P.MoveSign:l!=null&&te.isSign(l.type)?this.uiControl.showAttributes(l):O.save();break;case P.MoveCustomImage:l==null?O.save():this.uiControl.showAttributes(l);break;case P.MoveBgImage:l==null?O.save():this.uiControl.showAttributes(l);break}this.lastX=null,this.lastY=null,this.setEventName("mouseUp"),x.clearDraggingItem(),this.renderer.autoRedraw()}onWheel(e){}onKeydown(e){this.display&&(e.ctrlKey&&e.code=="KeyZ"?(this.revokeHistory(),console.log("ctrl+z")):e.ctrlKey&&e.code=="KeyY"?(this.recoveryHistory(),console.log("ctrl+y")):e.code=="Delete"?(this.uiControl.deleteItem(),this.uiControl.clearUI(),O.save(),this.renderer.autoRedraw(),console.log("Delete")):e.code=="Escape"&&(this.stopAddVector(),this.renderer.autoRedraw(),console.log("Esc")))}setEventName(e){let t=x.getEventName();if(e=="mouseDown")if(t==null){const s=x.getSelectItem();s==null?x.setEventName(P.PanBackGround):s.type==u.Wall?x.setEventName(P.MoveWall):s.type==u.WallCorner?x.setEventName(P.MoveWallPoint):s.type==u.Tag?x.setEventName(P.MoveTag):te.isSign(s.type)?x.setEventName(P.MoveSign):s.type==u.Rectangle?s.selectIndex==b.All?x.setEventName(P.MoveRectangle):s.selectIndex.indexOf(b.Vertex)>-1?x.setEventName(P.MoveRectangleVertex):s.selectIndex.indexOf(b.Side)>-1&&x.setEventName(P.MoveRectangleSide):s.type==u.Circle?s.selectIndex==b.All?x.setEventName(P.MoveCircle):s.selectIndex.indexOf(b.Vertex)>-1&&x.setEventName(P.MoveCircleVertex):s.type==u.Icon?s.selectIndex==b.All?x.setEventName(P.MoveIcon):s.selectIndex.indexOf(b.Vertex)>-1&&x.setEventName(P.MoveIconVertex):s.type==u.Arrow?s.selectIndex==b.All?x.setEventName(P.MoveArrow):x.setEventName(P.moveArrowVertex):s.type==u.Table?x.setEventName(P.MoveTable):s.type==u.Title?x.setEventName(P.MoveTitle):s.type==u.Compass?x.setEventName(P.MoveCompass):s.type==u.CustomImage?x.setEventName(P.MoveCustomImage):s.type==u.BgImage&&x.setEventName(P.MoveBgImage)}else t==P.AddWall&&x.setEventName(P.AddingWall);else e=="mouseUp"&&(t==P.AddTag?x.clearEventName():t==P.AddRectangle?x.setEventName(P.AddingRectangle):t==P.AddCircle?x.setEventName(P.AddingCircle):t==P.AddIcon?x.setEventName(P.AddingIcon):t==P.AddArrow?x.setEventName(P.AddingArrow):(t==P.AddTable||t!=P.AddWall&&t!=P.AddingWall)&&x.clearEventName())}exit(){x.clearItems(),x.clearEventName(),this.uiControl.clearUI()}stopAddVector(){let e=x.getEventName();if(e==P.AddingRectangle)r.deleteRectangle(ue.currentVectorId),x.clearEventName(),ue.clear(),O.save();else if(e==P.AddingArrow)r.deleteArrow(le.currentVectorId),x.clearEventName(),le.clear(),O.save();else if(e==P.AddingCircle)r.deleteCircle(oe.currentVectorId),x.clearEventName(),oe.clear(),O.save();else if(e==P.AddingIcon)ae.deleteIcon(re.currentVectorId),x.clearEventName(),re.clear(),O.save();else if(e!=P.AddingWall){x.clearEventName();const t=x.getDraggingItem();e==P.AddTag?t&&t.vectorId&&(ve.deleteTag(t.vectorId),this.uiControl.clearUI(),x.clearItems()):e==P.AddTable?t&&t.vectorId&&(G.deleteTable(t.vectorId),this.uiControl.clearUI(),x.clearItems()):e==P.AddSign&&t&&t.vectorId&&(r.deleteSign(t.vectorId),x.clearItems())}else x.setEventName(P.AddWall);this.uiControl.clearUI(),A.hideAll()}}const ct={Wall:mt,Tag:yt,Table:pt,Rectangle:vt,Circle:St,Arrow:bt,Icon:Pt,Cigaret:wt,FirePoint:Ct,LeftFootPrint:Tt,RightFootPrint:kt,LeftShoePrint:Ft,RightShoePrint:At,FingerPrint:Wt,DeadBody:Dt,BloodStain:Lt},mi=async(C,e)=>{const t={ctx:e.getContext("2d"),bus:Ge(),shapes:[],baseMap:null};console.log("ssssss",C),setTimeout(()=>{console.log(!!C.floors[0].bgImage),t.bus.emit("exixtsBgImage",!!C.floors[0].bgImage)},100);const s=new Ii;await s.start(e,C);const i={color:"rgba(0,0,0,1)",text:"",fontSize:12,scale:1,rotate:0,content:[{width:160,height:60,value:"",colIndex:0,rowIndex:0},{width:160,height:60,value:"",colIndex:1,rowIndex:0}]};s.uiControl.bus.on("showAttribute",({type:o,value:a})=>{a=a&&typeof a=="object"?Object.assign({...i},a):{...i};const h=Object.fromEntries(Object.keys(a).map(m=>[`set${m.slice(0,1).toUpperCase()+m.slice(1)}`,(w,T=!0)=>{d({[m]:w,save:T})}])),f={data:{type:o,...a},...h,delete:()=>{s.uiControl.clearUI(),s.uiControl.setAttributes(o,"delete"),o===tt&&t.bus.emit("exixtsBgImage",!1)}},d=m=>{s.uiControl.setAttributes(o,"update",{...m,version:2})};t.bus.emit("selectShape",f)}),s.uiControl.bus.on("hideAttribute",()=>{t.bus.emit("selectShape",null)}),O.bus.on("undoAvailable",o=>{t.bus.emit("backDisabled",!o)}),O.bus.on("redoAvailable",o=>t.bus.emit("forwardDisabled",!o)),setTimeout(()=>{},100);let n=!1;const l={bus:t.bus,el:e,async getStore(){var f;const a=s.uiControl.exportJSON().floors[0],h=[];if(a){const d=(f=a.bgImage)==null?void 0:f.url;if(d&&d.includes("blob:")){const m=await fetch(d).then(w=>w.blob()).then(w=>ft(new File([w],(C.id||"image")+".png")));a.bgImage.url=m,console.log(m)}h.push({type:He,text:a.title.value})}return{id:C.id,shapes:h,ognFilesUrl:C.ognFilesUrl,...s.uiControl.exportJSON()}},viewInit(){s.uiControl.menu_flex()},unSelectShape(){s.uiControl.clearUI()},setDefaultTable(o,a){o&&s.uiControl.initDownTable(o),a&&s.uiControl.initTopTable(a)},initHistory(){O.init()},readyAddShape(o,a,h){if(s.uiControl.selectUI=o,_e===o)s.uiControl.setAttributes(o,"upload",{url:a,version:2}),h();else{s.uiControl.updateEventNameForSelectUI();const f=()=>{s.uiControl.bus.off("hideUI",f),h()};s.uiControl.bus.on("hideUI",f)}},back(){n||(n=!0,console.log("撤销"),O.handleUndo().then(()=>{console.log("撤销完成"),n=!1}))},forward(){n||(n=!0,console.log("回复"),O.handleRedo().then(()=>{console.log("回复完成"),n=!1}))},setImage(o){t.bus.emit("exixtsBgImage",!0),s.uiControl.setAttributes(tt,"upload",{url:o,scale:1})},clear(){O.clear()},reSet(){console.log("重置"),s.uiControl.reSet()},export(){return new Promise(o=>{s.uiControl.exportImg(e,"cover.jpg",a=>{o(a)})})},calcTableShape(o){return new Promise(a=>{const h={data:{type:Ne,content:o.map((f,d)=>[{rowIndex:d,colIndex:0,width:0,height:0,value:f[0]},{rowIndex:d,colIndex:1,width:0,height:0,value:f[1]}]).flat()},setContent(f){l.bus.emit("selectShape",null),a({type:Ne,content:f})},autoSet:!0};l.bus.emit("selectShape",h)})},destroy(){}};return l},yi=async C=>{const e=new Image;return e.src=URL.createObjectURL(C),new Promise(t=>e.onload=()=>t(e))},pi=async(C,e,t,s=!0)=>{const i=await yi(C);let n=i.width,l,o=i.height,a;const h=e/t,f=n/o;f>h?(l=n,a=n/h):f<h&&(l=o*h,a=o);const d=document.createElement("canvas");d.width=l,d.height=a;const m=d.getContext("2d");return m.rect(0,0,l,a),m.fillStyle="#fff",m.fill(),m.drawImage(i,(l-n)/2,(a-o)/2,n,o),{blob:await new Promise(T=>d.toBlob(T,"png")),width:l,height:a}},vi={class:"df-slide-content"},Si={class:"def-image-set"},bi={class:"df-shape-layout"},Pi=["onClick"],wi=["src"],Ci={class:"df-shape-layout"},Ti=["onClick"],ki=["src"],Fi=Be({__name:"slider",props:{type:{},existsBgImage:{type:Boolean},addShape:{}},emits:["update:addShape","trackImage","selectImage"],setup(C,{emit:e}){const t=C,s={[Oe.scene]:"户型图",[Oe.map]:"方位图"},i=e,n=Ee(et({maxSize:qe,formats:[".jpg",".png",".raw"]})),l=async()=>{t.existsBgImage&&await ts("重新上传将替换当前图体,确定要上传吗?","继续上传"),document.querySelector("#coverupload").querySelector("input[type=file]").click()};we(async()=>{if(n.file){const a=await pi(n.file,540,390,!1)||n.file,h=await It({img:a.blob,fixed:[a.width,a.height]});h&&i("selectImage",h),n.removeFile()}});const o=Ee(et({maxSize:qe,formats:[".jpg",".png"]}));return we(async()=>{o.file&&(console.log(o.file,"watchEffect",_e),i("update:addShape",_e,o.file),o.removeFile())}),(a,h)=>{const f=he("el-button"),d=he("el-upload");return ie(),Ie("div",vi,[U("h3",null,me(s[a.type]),1),U("div",Si,[j(f,{type:"primary",onClick:h[0]||(h[0]=m=>i("trackImage")),ghost:""},{default:K(()=>[Ce(" 设置"+me(s[a.type]),1)]),_:1}),j(d,{multiple:!1,limit:1,"show-file-list":!1,id:"coverupload","http-request":()=>{},disabled:!!n.percentage,"before-upload":n.upload,accept:n.accept,"file-list":n.fileList},{default:K(()=>[j(f,{onClick:es(l,["stop"]),ghost:"",type:"primary",class:Pe({dispable:n.percentage}),style:{width:"100%"}},{default:K(()=>[Ce(me(n.percentage?"文件上传中":"上传"+s[a.type]),1)]),_:1},8,["class"])]),_:1},8,["disabled","before-upload","accept","file-list"])]),h[1]||(h[1]=U("h3",null,"标注",-1)),U("div",bi,[(ie(!0),Ie(Ke,null,Qe(H(ms),m=>(ie(),Ie("div",{key:m,class:Pe(["df-slide-shape",{active:a.addShape===m}]),onClick:w=>i("update:addShape",m)},[U("img",{src:H(ct)[m]},null,8,wi),U("p",null,me(H(je)[m].desc),1)],10,Pi))),128))]),h[2]||(h[2]=U("h3",null,"图例",-1)),j(d,{multiple:!1,limit:1,"show-file-list":!1,"http-request":()=>{},disabled:!!o.percentage,"before-upload":o.upload,accept:o.accept,"file-list":o.fileList},{default:K(()=>[j(f,{ghost:"",type:"primary",class:Pe({dispable:o.percentage}),style:{width:"100%"}},{default:K(()=>[Ce(me(o.percentage?"文件上传中":"上传图例"),1)]),_:1},8,["class"])]),_:1},8,["disabled","before-upload","accept","file-list"]),U("div",Ci,[(ie(!0),Ie(Ke,null,Qe(H(Ht),m=>(ie(),Ie("div",{key:m,class:Pe(["df-slide-shape",{active:a.addShape===m}]),onClick:w=>i("update:addShape",m)},[U("img",{src:H(ct)[m]},null,8,ki),U("p",null,me(H(je)[m].desc),1)],10,Ti))),128))])])}}});const Ai=Ye(Fi,[["__scopeId","data-v-8fa704a7"]]),ht={id:-1,version:"v4.0",floors:[{points:{},walls:{},tags:{},rectangles:{},circles:{},arrows:{},icons:{},signs:{},title:{len:null,value:"某某案发现场",height:50,floor:0,geoType:"Title",vectorId:"Title6"},image:{len:null,image:null,floor:0,geoType:"BgImage",vectorId:"BgImage8"},compass:{len:null,angle:0,floor:0,center:{x:800,y:70},radius:52,geoType:"Compass",vectorId:"Compass7"}}],currentId:20,shapes:[]},Wi=async(C,e,t)=>{let s;if(e===-1){const i=await ls(C);if(i)ht.floors[0].title.value=i.caseTitle+"案发"+Ze[t],s={...ht};else throw Le.replace({name:ze.vrmodel}),"案件不存在"}else{const i=await cs(e);if(i)s={...i.content,ognFilesUrl:i.ognFilesUrl,id:i.filesId},console.log("fileInfo",s,i.content);else throw Le.replace({name:ze.caseFile,params:{caseId:C}}),"该图不存在!"}return s},Di=C=>{const e=xe(),t=xe({backDisabled:!0,exixtsBgImage:!1,forwardDisabled:!0,selectShape:null,addShape:null,addData:null});return we(async s=>{if(console.log("watchEffect11",C.value),!C.value){e.value=void 0;return}const i=await Wi(C.value.caseId,C.value.fileId,C.value.type);console.log("store",i);const n=e.value=await mi(i,C.value.dom);console.log("boardRaw",n),t.value.exixtsBgImage=!!i.floors[0].bgImage,s(()=>{n&&n.destroy()})}),we(()=>{!C.value||!e.value||(C.value.fileId===-1?e.value.calcTableShape([["案发时间",""],["案发地点",""],["绘图单位",""],["绘图人",""],["绘图时间",""]]).then(s=>{e.value.setDefaultTable(s.content,null),e.value.initHistory()}):e.value.initHistory())},{flush:"post"}),we(s=>{if(!e.value)return;const i=e.value;console.log("开启监听"),i.bus.on("exixtsBgImage",n=>{console.error("a?",n),t.value.exixtsBgImage=n}),i.bus.on("backDisabled",n=>t.value.backDisabled=n),i.bus.on("forwardDisabled",n=>t.value.forwardDisabled=n),i.bus.on("selectShape",n=>{if(!n){t.value.selectShape=null;return}t.value.selectShape=n}),s(()=>{i.bus.off("*")})}),we(s=>{if(e.value&&t.value.addShape){const i=e.value.readyAddShape(t.value.addShape,t.value.addData||null,()=>{t.value.addShape=null,t.value.addData=null}),n=l=>{l.key==="Escape"&&(t.value.addShape=null,t.value.addData=null,i())};document.documentElement.addEventListener("keyup",n),s(()=>{document.documentElement.removeEventListener("keyup",n)})}}),{board:e,state:t}},Li=Object.assign({"./bgImage.vue":()=>fe(()=>import("./bgImage-ebd60e2a.js"),["./bgImage-ebd60e2a.js","./delete-78fcdfd5.js","./index-32c39055.js","./index-8aafabeb.css"],import.meta.url),"./compass.vue":()=>fe(()=>import("./compass-44478c46.js"),["./compass-44478c46.js","./index-32c39055.js","./index-8aafabeb.css","./compass-fca040eb.css"],import.meta.url),"./delete.vue":()=>fe(()=>import("./delete-78fcdfd5.js"),["./delete-78fcdfd5.js","./index-32c39055.js","./index-8aafabeb.css"],import.meta.url),"./image.vue":()=>fe(()=>import("./image-a2fce3df.js"),["./image-a2fce3df.js","./delete-78fcdfd5.js","./index-32c39055.js","./index-8aafabeb.css"],import.meta.url),"./label.vue":()=>fe(()=>import("./label-01ffae3b.js"),["./label-01ffae3b.js","./label.vue_vue_type_script_setup_true_lang-6f740005.js","./index-32c39055.js","./index-8aafabeb.css","./delete-78fcdfd5.js","./label-a763bdcc.css"],import.meta.url),"./table.vue":()=>fe(()=>import("./table-2d13791b.js"),["./table-2d13791b.js","./delete-78fcdfd5.js","./index-32c39055.js","./index-8aafabeb.css","./quisk-5962c204.js","./scrollbar-5051cfce.js","./scrollbar-482cfff9.css","./upload-8c2ee168.js","./scene-3c8ec63c.js","./case-de2e9213.js","./pagging-ff0d698d.js","./index-343523a6.js","./index-f76c9b9c.css","./pagging-58a38392.js","./sys-e4ad01b3.js","./pagging-8837eb8c.css","./pagging-d1ed9130.css","./REG-6dcdd243.js","./quisk-b3633cdd.css"],import.meta.url),"./tag.vue":()=>fe(()=>import("./tag-07a08132.js"),["./tag-07a08132.js","./label.vue_vue_type_script_setup_true_lang-6f740005.js","./index-32c39055.js","./index-8aafabeb.css","./delete-78fcdfd5.js","./label-a763bdcc.css"],import.meta.url),"./title.vue":()=>fe(()=>import("./title-156fe052.js"),["./title-156fe052.js","./index-32c39055.js","./index-8aafabeb.css"],import.meta.url)}),Ve=Ee({}),dt={label:["Circle","Rectangle","Wall","Arrow"],image:[...Ht,_e],delete:["Icon"]};Object.entries(Li).map(([C,e])=>{C=C.substring(2,C.lastIndexOf(".vue")),e().then(t=>{const s=t.default;ss(s),[C,...dt[C]?dt[C]:[]].forEach(n=>{Ve[n]=s,Ve[n.slice(0,1).toUpperCase()+n.slice(1)]=s})})});const zi={key:0,class:"def-shape-edit"},Ri=Be({__name:"eshape",props:{shape:{}},emits:["update:shape","cropping"],setup(C,{emit:e}){const t=C,s=e,i=xt(()=>{const o=t.shape.data.type;if(console.log(o),o&&Ve[o])return Ve[o]}),n=()=>{t.shape.delete(),s("update:shape",null)},l=o=>{!Je.value&&["Backspace","Delete"].includes(o.key)&&![He,Gt].includes(t.shape.data.type)&&n()};return gt(()=>document.documentElement.addEventListener("keydown",l)),ut(()=>document.documentElement.removeEventListener("keydown",l)),(o,a)=>{const h=he("Close"),f=he("el-icon"),d=he("el-form");return i.value?(ie(),Ie("div",zi,[j(f,{class:"def-close-shape-edit",onClick:a[0]||(a[0]=m=>s("update:shape",null))},{default:K(()=>[j(h)]),_:1}),j(d,{class:"def-shape-edit-form","label-width":"60px"},{default:K(()=>[i.value?(ie(),Me(is(i.value),{key:t.shape,shape:t.shape,onDelete:n,onCropping:a[1]||(a[1]=m=>s("cropping",null,m)),onInputIng:a[2]||(a[2]=m=>Je.value=m),onBlur:a[3]||(a[3]=m=>s("update:shape",null))},null,40,["shape"])):Re("",!0)]),_:1})])):Re("",!0)}}});const Mi=Ye(Ri,[["__scopeId","data-v-7f4a9be4"]]),Oi={class:"df-layout"},Ni={class:"df-layout-child"},_i={class:"df-sider"},Vi={class:"df-content"},Bi={class:"df-content-layout"},Yi={class:"df-board"},Xi=Be({__name:"index",setup(C){const e=xe({xct:[],xczp:[],klbj:[]}),t=xe(0),s=xe(0),i=xe(""),n=xe(),l=xt(()=>{const W=Le.currentRoute.value;if(W.name!==ze.drawCaseFile||!n.value)return null;{const D=W.params,R=Number(D.id);return{caseId:Number(D.caseId),inAdd:R===-1,fileId:R,type:D.type.toString(),dom:n.value}}});function o(){os(l.caseId).then(W=>{var R,Z;let D=((R=W.find(B=>B.filesTypeName=="三录材料"))==null?void 0:R.childrenList)||[];e.value.xct=((Z=D.find(B=>B.filesTypeName=="现场图"))==null?void 0:Z.childrenList)||[],s.value=e.value.xct.find(B=>B.filesTypeName=="平面图").filesTypeId,t.value=e.value.xct.find(B=>B.filesTypeName=="方位图").filesTypeId,console.log("list.value",e.value)})}const{board:a,state:h}=Di(l);o();const f=()=>{a.value&&a.value.clear(),a.value&&a.value.reSet(),Le.replace({name:ze.material,params:{caseId:l.caseId}})},d=W=>{console.log("setBackImage",W,a.value),a.value.setImage(URL.createObjectURL(W))},m=async(W,D)=>{D&&(h.value.addData=Ue({type:102})+"/"+await ft(D),console.log("state.value",h.value.addData)),h.value.addShape=W},w=async()=>{const W=l.value.type===Oe.scene?await Kt(l.value):await Qt({});if(console.log("户型图",W),W!=null&&W.ognFilesUrl&&(i.value=W.ognFilesUrl),W!=null&&W.blob&&(d(W.blob),"taggings"in W)){const D=W.taggings,R=await a.value.calcTableShape([["序号","标注"],...D.map((Z,B)=>[`序号${B+1}`,Z.tagTitle])]);a.value.setDefaultTable(null,R.content)}};console.log("useBoard",a,h);const T=async()=>{const W=await a.value.getStore();console.log("getStore",W,a.value,h.value);const D=W.shapes.find(R=>R.type===He);return{store:W,titleShape:D,ognFilesUrl:W.ognFilesUrl}},p=W=>{try{return new URL(W),!0}catch{return!1}},L=async W=>{var $,se,Ae,ne,We,ce,$e;const D=await T();let Z=l.value.inAdd?i.value:D.store.ognFilesUrl;console.log("handleCropping11",Z,i.value,D.store.ognFilesUrl,h.value.selectShape.data.url);const{width:B,height:Se}=($=D.store.floors)==null?void 0:$[0].bgImage,N=p((Ae=(se=h.value.selectShape)==null?void 0:se.data)==null?void 0:Ae.url)?(We=(ne=h.value.selectShape)==null?void 0:ne.data)==null?void 0:We.url:Ue({type:102})+"/"+(($e=(ce=h.value.selectShape)==null?void 0:ce.data)==null?void 0:$e.url),_=await fetch(Z||N).then(qt=>qt.blob()),M=await It({img:_,fixed:[B,Se]});console.log(M),d(M)},J=async()=>{const{store:W,titleShape:D}=await T(),R=l.value;console.log("titleShape",W,D);const Z=await a.value.export();let B=(D==null?void 0:D.text)||`${R.caseId}_${Ze[R.type]}`;const Se={caseId:R.caseId,imgType:R.type,file:new File([Z],`${B}.jpg`),filesTitle:B,content:W&&JSON.stringify(W),ognFileUrl:i.value||W.ognFilesUrl};R.inAdd||(Se.filesId=l.value.fileId);const{data:N}=await rs(Se),_=await as({...Se,caseId:R.caseId,filesTypeId:R.type!=Oe.scene?t.value:s.value,uploadId:N.id});R.inAdd&&Le.replace({name:ze.drawCaseFile,params:{caseId:R.caseId,type:R.type,id:_.filesId}}),await ns(),setTimeout(()=>{location.reload()},100)},X=async()=>{const{titleShape:W}=await T(),D=await a.value.export();hs(D,`${W.text}.jpg`)};return(W,D)=>(ie(),Ie("div",Oi,[l.value&&H(a)?(ie(),Me(xs,{key:0,class:"df-header",type:l.value.type,onBackPage:f,onBack:D[0]||(D[0]=R=>H(a).back()),onForward:D[1]||(D[1]=R=>H(a).forward()),onViewInit:D[2]||(D[2]=R=>H(a).viewInit()),onSave:J,onExport:X,"back-disabled":H(h).backDisabled,"forward-disabled":H(h).forwardDisabled},null,8,["type","back-disabled","forward-disabled"])):Re("",!0),U("div",Ni,[H(h).selectShape?(ie(),Me(Mi,{key:0,shape:H(h).selectShape,"onUpdate:shape":D[3]||(D[3]=R=>H(h).selectShape=R),onCropping:L},null,8,["shape"])):Re("",!0),U("div",_i,[l.value?(ie(),Me(Ai,{key:0,type:l.value.type,"add-shape":H(h).addShape,"exists-bg-image":H(h).exixtsBgImage,"onUpdate:addShape":m,onTrackImage:w,onSelectImage:d},null,8,["type","add-shape","exists-bg-image"])):Re("",!0)]),U("div",Vi,[U("div",Bi,[U("div",Yi,[U("canvas",{ref_key:"dom",ref:n},null,512)])])])])]))}});const sn=Ye(Xi,[["__scopeId","data-v-d99cce18"]]);export{sn as default};
|