@netless/appliance-plugin 1.1.15 → 1.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var an=Object.defineProperty;var cn=(a,s,e)=>s in a?an(a,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[s]=e;var y=(a,s,e)=>cn(a,typeof s!="symbol"?s+"":s,e);const X=require("white-web-sdk"),he=require("spritejs"),eo=require("lz-string"),Us=require("lineclip"),bs=require("eventemitter2"),j=require("lodash"),M=require("react"),as=require("react-dom"),kt=require("react-draggable"),ln=require("re-resizable"),hn="/fullWorker.js",un="/subWorker.js";var re=(a=>(a.selector="selector",a.clicker="clicker",a.laserPointer="laserPointer",a.pencil="pencil",a.rectangle="rectangle",a.ellipse="ellipse",a.shape="shape",a.eraser="eraser",a.pencilEraser="pencilEraser",a.text="text",a.straight="straight",a.arrow="arrow",a.hand="hand",a.laserPen="laserPen",a))(re||{}),te=(a=>(a.Normal="Normal",a.Stroke="Stroke",a.Dotted="Dotted",a.LongDotted="LongDotted",a))(te||{}),He=(a=>(a.Triangle="triangle",a.Rhombus="rhombus",a.Pentagram="pentagram",a.SpeechBalloon="speechBalloon",a.Star="star",a.Polygon="polygon",a))(He||{}),F=(a=>(a.None="None",a.ShowFloatBar="ShowFloatBar",a.ZIndexFloatBar="ZIndexFloatBar",a.DeleteNode="DeleteNode",a.CopyNode="CopyNode",a.ZIndexActive="ZIndexActive",a.ZIndexNode="ZIndexNode",a.RotateNode="RotateNode",a.SetColorNode="SetColorNode",a.TranslateNode="TranslateNode",a.ScaleNode="ScaleNode",a.OriginalEvent="OriginalEvent",a.CreateScene="CreateScene",a.ActiveCursor="ActiveCursor",a.MoveCursor="MoveCursor",a.CommandEditor="CommandEditor",a.SetEditorData="SetEditorData",a.SetFontStyle="SetFontStyle",a.SetPoint="SetPoint",a.SetLock="SetLock",a.SetShapeOpt="SetShapeOpt",a.CameraChange="CameraChange",a.ActiveMethod="ActiveMethod",a))(F||{}),se=(a=>(a.DisplayState="DisplayState",a.MainEngine="MainEngine",a.Cursor="Cursor",a.BindMainView="BindMainView",a))(se||{}),to=(a=>(a[a.MainView=0]="MainView",a[a.Plugin=1]="Plugin",a[a.Both=2]="Both",a))(to||{}),T=(a=>(a[a.Pencil=1]="Pencil",a[a.Eraser=2]="Eraser",a[a.PencilEraser=3]="PencilEraser",a[a.BitMapEraser=4]="BitMapEraser",a[a.Selector=5]="Selector",a[a.Clicker=6]="Clicker",a[a.Arrow=7]="Arrow",a[a.Hand=8]="Hand",a[a.LaserPen=9]="LaserPen",a[a.Text=10]="Text",a[a.Straight=11]="Straight",a[a.Rectangle=12]="Rectangle",a[a.Ellipse=13]="Ellipse",a[a.Star=14]="Star",a[a.Triangle=15]="Triangle",a[a.Rhombus=16]="Rhombus",a[a.Polygon=17]="Polygon",a[a.SpeechBalloon=18]="SpeechBalloon",a[a.Image=19]="Image",a))(T||{}),B=(a=>(a[a.Local=1]="Local",a[a.Service=2]="Service",a[a.Worker=3]="Worker",a))(B||{}),z=(a=>(a[a.Pending=0]="Pending",a[a.Start=1]="Start",a[a.Doing=2]="Doing",a[a.Done=3]="Done",a[a.Unwritable=4]="Unwritable",a))(z||{}),L=(a=>(a[a.None=0]="None",a[a.Init=1]="Init",a[a.UpdateCamera=2]="UpdateCamera",a[a.UpdateTools=3]="UpdateTools",a[a.CreateWork=4]="CreateWork",a[a.DrawWork=5]="DrawWork",a[a.FullWork=6]="FullWork",a[a.UpdateNode=7]="UpdateNode",a[a.RemoveNode=8]="RemoveNode",a[a.Clear=9]="Clear",a[a.Select=10]="Select",a[a.Destroy=11]="Destroy",a[a.Snapshot=12]="Snapshot",a[a.BoundingBox=13]="BoundingBox",a[a.Cursor=14]="Cursor",a[a.TextUpdate=15]="TextUpdate",a[a.GetTextActive=16]="GetTextActive",a[a.TasksQueue=17]="TasksQueue",a[a.CursorHover=18]="CursorHover",a[a.CursorBlur=19]="CursorBlur",a[a.Console=20]="Console",a[a.PriorityWorker=21]="PriorityWorker",a[a.PriorityMainThreadWorker=22]="PriorityMainThreadWorker",a[a.GetImageBitMap=23]="GetImageBitMap",a[a.AuthWriter=24]="AuthWriter",a[a.AuthReader=25]="AuthReader",a[a.AuthClear=26]="AuthClear",a[a.AuthPage=27]="AuthPage",a[a.GetVNodeInfo=28]="GetVNodeInfo",a[a.UpdateDpr=29]="UpdateDpr",a))(L||{}),Me=(a=>(a[a.None=0]="None",a[a.Bg=1]="Bg",a[a.ServiceFloat=2]="ServiceFloat",a[a.Float=3]="Float",a[a.TopFloat=4]="TopFloat",a))(Me||{}),Ot=(a=>(a[a.Cursor=1]="Cursor",a[a.TextCreate=2]="TextCreate",a))(Ot||{}),Rt=(a=>(a[a.Top=1]="Top",a[a.Bottom=2]="Bottom",a))(Rt||{}),ae=(a=>(a[a.none=1]="none",a[a.all=2]="all",a[a.both=3]="both",a[a.proportional=4]="proportional",a))(ae||{}),so=(a=>(a[a.Pending=0]="Pending",a[a.Start=1]="Start",a[a.Doing=2]="Doing",a[a.Done=3]="Done",a[a.Unwritable=4]="Unwritable",a))(so||{}),ut=(a=>(a[a.inside=0]="inside",a[a.outside=1]="outside",a[a.intersect=2]="intersect",a))(ut||{}),ze=(a=>(a.renderPage="renderPage",a.addPage="addPage",a.deletePage="deletePage",a.addElement="addElement",a.deleteElement="deleteElement",a.clearPage="clearPage",a.clearViewScenePath="clearViewScenePath",a.clearView="clearView",a))(ze||{}),Ge=(a=>(a.setAuth="setAuth",a.setShow="addShow",a.setHide="setHide",a.setClear="setClear",a))(Ge||{}),dt=(a=>(a.Image="image",a.Iconify="iconify",a))(dt||{});const dn={linear:a=>a,easeInQuad:a=>a*a,easeOutQuad:a=>a*(2-a),easeInOutQuad:a=>a<.5?2*a*a:-1+(4-2*a)*a,easeInCubic:a=>a*a*a,easeOutCubic:a=>--a*a*a+1,easeInOutCubic:a=>a<.5?4*a*a*a:(a-1)*(2*a-2)*(2*a-2)+1,easeInQuart:a=>a*a*a*a,easeOutQuart:a=>1- --a*a*a*a,easeInOutQuart:a=>a<.5?8*a*a*a*a:1-8*--a*a*a*a,easeInQuint:a=>a*a*a*a*a,easeOutQuint:a=>1+--a*a*a*a*a,easeInOutQuint:a=>a<.5?16*a*a*a*a*a:1+16*--a*a*a*a*a,easeInSine:a=>1-Math.cos(a*Math.PI/2),easeOutSine:a=>Math.sin(a*Math.PI/2),easeInOutSine:a=>-(Math.cos(Math.PI*a)-1)/2,easeInExpo:a=>a<=0?0:Math.pow(2,10*a-10),easeOutExpo:a=>a>=1?1:1-Math.pow(2,-10*a),easeInOutExpo:a=>a<=0?0:a>=1?1:a<.5?Math.pow(2,20*a-10)/2:(2-Math.pow(2,-20*a+10))/2};class C{constructor(s=0,e=0,t=1){this.x=s,this.y=e,this.z=t}get XY(){return[this.x,this.y]}setz(s){return this.z=s,this}setXY(s=this.x,e=this.y){return this.x=s,this.y=e,this}set(s=this.x,e=this.y,t=this.z){return this.x=s,this.y=e,this.z=t,this}setTo({x:s=0,y:e=0,z:t=1}){return this.x=s,this.y=e,this.z=t,this}rot(s){if(s===0)return this;const{x:e,y:t}=this,i=Math.sin(s),o=Math.cos(s);return this.x=e*o-t*i,this.y=e*i+t*o,this}rotWith(s,e){if(e===0)return this;const t=this.x-s.x,i=this.y-s.y,o=Math.sin(e),n=Math.cos(e);return this.x=s.x+(t*n-i*o),this.y=s.y+(t*o+i*n),this}clone(){const{x:s,y:e,z:t}=this;return new C(s,e,t)}sub(s){return this.x-=s.x,this.y-=s.y,this}subXY(s,e){return this.x-=s,this.y-=e,this}subScalar(s){return this.x-=s,this.y-=s,this}add(s){return this.x+=s.x,this.y+=s.y,this}addXY(s,e){return this.x+=s,this.y+=e,this}addScalar(s){return this.x+=s,this.y+=s,this}clamp(s,e){return this.x=Math.max(this.x,s),this.y=Math.max(this.y,s),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(s){return this.x/=s,this.y/=s,this}divV(s){return this.x/=s.x,this.y/=s.y,this}mul(s){return this.x*=s,this.y*=s,this}mulV(s){return this.x*=s.x,this.y*=s.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(s,e){const t=C.Tan(s,this);return this.add(t.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(s){return this.x=this.y*s.z-this.z*s.y,this.y=this.z*s.x-this.x*s.z,this}dpr(s){return C.Dpr(this,s)}cpr(s){return C.Cpr(this,s)}len2(){return C.Len2(this)}len(){return C.Len(this)}pry(s){return C.Pry(this,s)}per(){const{x:s,y:e}=this;return this.x=e,this.y=-s,this}uni(){return C.Uni(this)}tan(s){return C.Tan(this,s)}dist(s){return C.Dist(this,s)}distanceToLineSegment(s,e){return C.DistanceToLineSegment(s,e,this)}slope(s){return C.Slope(this,s)}snapToGrid(s){return this.x=Math.round(this.x/s)*s,this.y=Math.round(this.y/s)*s,this}angle(s){return C.Angle(this,s)}toAngle(){return C.ToAngle(this)}lrp(s,e){return this.x=this.x+(s.x-this.x)*e,this.y=this.y+(s.y-this.y)*e,this}equals(s,e){return C.Equals(this,s,e)}equalsXY(s,e){return C.EqualsXY(this,s,e)}norm(){const s=this.len();return this.x=s===0?0:this.x/s,this.y=s===0?0:this.y/s,this}toFixed(){return C.ToFixed(this)}toString(){return C.ToString(C.ToFixed(this))}toJson(){return C.ToJson(this)}toArray(){return C.ToArray(this)}static Add(s,e){return new C(s.x+e.x,s.y+e.y)}static AddXY(s,e,t){return new C(s.x+e,s.y+t)}static Sub(s,e){return new C(s.x-e.x,s.y-e.y)}static SubXY(s,e,t){return new C(s.x-e,s.y-t)}static AddScalar(s,e){return new C(s.x+e,s.y+e)}static SubScalar(s,e){return new C(s.x-e,s.y-e)}static Div(s,e){return new C(s.x/e,s.y/e)}static Mul(s,e){return new C(s.x*e,s.y*e)}static DivV(s,e){return new C(s.x/e.x,s.y/e.y)}static MulV(s,e){return new C(s.x*e.x,s.y*e.y)}static Neg(s){return new C(-s.x,-s.y)}static Per(s){return new C(s.y,-s.x)}static Dist2(s,e){return C.Sub(s,e).len2()}static Abs(s){return new C(Math.abs(s.x),Math.abs(s.y))}static Dist(s,e){return Math.hypot(s.y-e.y,s.x-e.x)}static Dpr(s,e){return s.x*e.x+s.y*e.y}static Cross(s,e){return new C(s.y*e.z-s.z*e.y,s.z*e.x-s.x*e.z)}static Cpr(s,e){return s.x*e.y-e.x*s.y}static Len2(s){return s.x*s.x+s.y*s.y}static Len(s){return Math.hypot(s.x,s.y)}static Pry(s,e){return C.Dpr(s,e)/C.Len(e)}static Uni(s){return C.Div(s,C.Len(s))}static Tan(s,e){return C.Uni(C.Sub(s,e))}static Min(s,e){return new C(Math.min(s.x,e.x),Math.min(s.y,e.y))}static Max(s,e){return new C(Math.max(s.x,e.x),Math.max(s.y,e.y))}static From(s){return new C().add(s)}static FromArray(s){return new C(s[0],s[1])}static Rot(s,e=0){const t=Math.sin(e),i=Math.cos(e);return new C(s.x*i-s.y*t,s.x*t+s.y*i)}static RotWith(s,e,t){const i=s.x-e.x,o=s.y-e.y,n=Math.sin(t),r=Math.cos(t);return new C(e.x+(i*r-o*n),e.y+(i*n+o*r))}static NearestPointOnLineThroughPoint(s,e,t){return C.Mul(e,C.Sub(t,s).pry(e)).add(s)}static NearestPointOnLineSegment(s,e,t,i=!0){const o=C.Tan(e,s),n=C.Add(s,C.Mul(o,C.Sub(t,s).pry(o)));if(i){if(n.x<Math.min(s.x,e.x))return C.Cast(s.x<e.x?s:e);if(n.x>Math.max(s.x,e.x))return C.Cast(s.x>e.x?s:e);if(n.y<Math.min(s.y,e.y))return C.Cast(s.y<e.y?s:e);if(n.y>Math.max(s.y,e.y))return C.Cast(s.y>e.y?s:e)}return n}static DistanceToLineThroughPoint(s,e,t){return C.Dist(t,C.NearestPointOnLineThroughPoint(s,e,t))}static DistanceToLineSegment(s,e,t,i=!0){return C.Dist(t,C.NearestPointOnLineSegment(s,e,t,i))}static Snap(s,e=1){return new C(Math.round(s.x/e)*e,Math.round(s.y/e)*e)}static Cast(s){return s instanceof C?s:C.From(s)}static Slope(s,e){return s.x===e.y?NaN:(s.y-e.y)/(s.x-e.x)}static Angle(s,e){return Math.atan2(e.y-s.y,e.x-s.x)}static Lrp(s,e,t){return C.Sub(e,s).mul(t).add(s)}static Med(s,e){return new C((s.x+e.x)/2,(s.y+e.y)/2)}static Equals(s,e,t=1e-4){return Math.abs(s.x-e.x)<t&&Math.abs(s.y-e.y)<t}static EqualsXY(s,e,t){return s.x===e&&s.y===t}static EqualsXYZ(s,e,t=1e-4){return C.Equals(s,e,t)&&Math.abs((s.z||0)-(e.z||0))<t}static Clockwise(s,e,t){return(t.x-s.x)*(e.y-s.y)-(e.x-s.x)*(t.y-s.y)<0}static Rescale(s,e){const t=C.Len(s);return new C(e*s.x/t,e*s.y/t)}static ScaleWithOrigin(s,e,t){return C.Sub(s,t).mul(e).add(t)}static ScaleWOrigin(s,e,t){return C.Sub(s,t).mulV(e).add(t)}static ToFixed(s,e=2){return new C(+s.x.toFixed(e),+s.y.toFixed(e),+s.z.toFixed(e))}static Nudge(s,e,t){return C.Add(s,C.Tan(e,s).mul(t))}static ToString(s){return`${s.x}, ${s.y}`}static ToAngle(s){let e=Math.atan2(s.y,s.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(s,e=1){return new C(Math.cos(s)*e,Math.sin(s)*e)}static ToArray(s){return[s.x,s.y,s.z]}static ToJson(s){const{x:e,y:t,z:i}=s;return{x:e,y:t,z:i}}static Average(s){const e=s.length,t=new C(0,0);for(let i=0;i<e;i++)t.add(s[i]);return t.div(e)}static Clamp(s,e,t){return t===void 0?new C(Math.min(Math.max(s.x,e)),Math.min(Math.max(s.y,e))):new C(Math.min(Math.max(s.x,e),t),Math.min(Math.max(s.y,e),t))}static PointsBetween(s,e,t=6){const i=[];for(let o=0;o<t;o++){const n=dn.easeInQuad(o/(t-1)),r=C.Lrp(s,e,n);r.z=Math.min(1,.5+Math.abs(.5-pn(n))*.65),i.push(r)}return i}static SnapToGrid(s,e=8){return new C(Math.round(s.x/e)*e,Math.round(s.y/e)*e)}}const pn=a=>a<.5?2*a*a:-1+(4-2*a)*a;class V extends C{constructor(s=0,e=0,t=0,i={x:0,y:0},o=0,n=0){super(s,e,t),this.x=s,this.y=e,this.z=t,this.v=i,this.t=o,this.a=n}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(s){this.a=s}setT(s){this.t=s}setv(s){return this.v={x:s.x,y:s.y},this}set(s=this.x,e=this.y,t=this.z,i=this.v,o=this.t,n=this.a){return this.x=s,this.y=e,this.z=t,this.v=i,this.t=o,this.a=n,this}clone(){const{x:s,y:e,z:t,v:i,t:o,a:n}=this,r={x:i.x,y:i.y};return new V(s,e,t,r,o,n)}distance(s){return V.GetDistance(this,s)}isNear(s,e){return V.IsNear(this,s,e)}getAngleByPoints(s,e){return V.GetAngleByPoints(s,this,e)}static Sub(s,e){return new V(s.x-e.x,s.y-e.y)}static Add(s,e){return new V(s.x+e.x,s.y+e.y)}static GetDistance(s,e){return V.Len(s.clone().sub(e))}static GetAngleByPoints(s,e,t){const i=e.x-s.x,o=t.x-e.x,n=e.y-s.y,r=t.y-e.y;let c=0;const l=Math.sqrt(i*i+n*n),u=Math.sqrt(o*o+r*r);if(l&&u){const h=i*o+n*r;c=Math.acos(h/(l*u)),c=c/Math.PI*180;let d=i*r-n*o;d=d>0?1:-1,c=180+d*c}return c}static IsNear(s,e,t){return V.Len(s.clone().sub(e))<t}static RotWith(s,e,t,i=2){const o=s.x-e.x,n=s.y-e.y,r=Math.sin(t),c=Math.cos(t),l=Math.pow(10,i),u=Math.floor((e.x+(o*c-n*r))*l)/l,h=Math.floor((e.y+(o*r+n*c))*l)/l;return new V(u,h)}static GetDotStroke(s,e,t=16){const i=new C(1,1),o=Math.PI+.001,n=V.Add(s,V.Sub(s,i).uni().per().mul(-e)),r=[];for(let c=1/t,l=c;l<=1;l+=c)r.push(V.RotWith(n,s,o*2*l));return r}static GetSemicircleStroke(s,e,t=-1,i=8){const o=t*(Math.PI+.001),n=[];for(let r=1/i,c=r;c<=1;c+=r)n.push(V.RotWith(e,s,o*c));return n}}var Vt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ct(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var fn=typeof Vt=="object"&&Vt&&Vt.Object===Object&&Vt,io=fn,gn=io,yn=typeof self=="object"&&self&&self.Object===Object&&self,Mn=gn||yn||Function("return this")(),Ze=Mn,mn=Ze,wn=mn.Symbol,Ut=wn,ci=Ut,oo=Object.prototype,vn=oo.hasOwnProperty,In=oo.toString,At=ci?ci.toStringTag:void 0;function Sn(a){var s=vn.call(a,At),e=a[At];try{a[At]=void 0;var t=!0}catch{}var i=In.call(a);return t&&(s?a[At]=e:delete a[At]),i}var Nn=Sn,Tn=Object.prototype,kn=Tn.toString;function Cn(a){return kn.call(a)}var bn=Cn,li=Ut,xn=Nn,Ln=bn,Pn="[object Null]",zn="[object Undefined]",hi=li?li.toStringTag:void 0;function Dn(a){return a==null?a===void 0?zn:Pn:hi&&hi in Object(a)?xn(a):Ln(a)}var pt=Dn;function An(a){return a!=null&&typeof a=="object"}var Je=An,jn=pt,En=Je,On="[object Number]";function Rn(a){return typeof a=="number"||En(a)&&jn(a)==On}var Wn=Rn;const De=Ct(Wn);function Yn(){this.__data__=[],this.size=0}var Un=Yn;function Bn(a,s){return a===s||a!==a&&s!==s}var Bs=Bn,Fn=Bs;function Vn(a,s){for(var e=a.length;e--;)if(Fn(a[e][0],s))return e;return-1}var cs=Vn,$n=cs,Hn=Array.prototype,Qn=Hn.splice;function Gn(a){var s=this.__data__,e=$n(s,a);if(e<0)return!1;var t=s.length-1;return e==t?s.pop():Qn.call(s,e,1),--this.size,!0}var Zn=Gn,qn=cs;function Xn(a){var s=this.__data__,e=qn(s,a);return e<0?void 0:s[e][1]}var Jn=Xn,Kn=cs;function _n(a){return Kn(this.__data__,a)>-1}var er=_n,tr=cs;function sr(a,s){var e=this.__data__,t=tr(e,a);return t<0?(++this.size,e.push([a,s])):e[t][1]=s,this}var ir=sr,or=Un,nr=Zn,rr=Jn,ar=er,cr=ir;function bt(a){var s=-1,e=a==null?0:a.length;for(this.clear();++s<e;){var t=a[s];this.set(t[0],t[1])}}bt.prototype.clear=or;bt.prototype.delete=nr;bt.prototype.get=rr;bt.prototype.has=ar;bt.prototype.set=cr;var ls=bt,lr=ls;function hr(){this.__data__=new lr,this.size=0}var ur=hr;function dr(a){var s=this.__data__,e=s.delete(a);return this.size=s.size,e}var pr=dr;function fr(a){return this.__data__.get(a)}var gr=fr;function yr(a){return this.__data__.has(a)}var Mr=yr;function mr(a){var s=typeof a;return a!=null&&(s=="object"||s=="function")}var ot=mr,wr=pt,vr=ot,Ir="[object AsyncFunction]",Sr="[object Function]",Nr="[object GeneratorFunction]",Tr="[object Proxy]";function kr(a){if(!vr(a))return!1;var s=wr(a);return s==Sr||s==Nr||s==Ir||s==Tr}var no=kr,Cr=Ze,br=Cr["__core-js_shared__"],xr=br,Is=xr,ui=function(){var a=/[^.]+$/.exec(Is&&Is.keys&&Is.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""}();function Lr(a){return!!ui&&ui in a}var Pr=Lr,zr=Function.prototype,Dr=zr.toString;function Ar(a){if(a!=null){try{return Dr.call(a)}catch{}try{return a+""}catch{}}return""}var ro=Ar,jr=no,Er=Pr,Or=ot,Rr=ro,Wr=/[\\^$.*+?()[\]{}|]/g,Yr=/^\[object .+?Constructor\]$/,Ur=Function.prototype,Br=Object.prototype,Fr=Ur.toString,Vr=Br.hasOwnProperty,$r=RegExp("^"+Fr.call(Vr).replace(Wr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Hr(a){if(!Or(a)||Er(a))return!1;var s=jr(a)?$r:Yr;return s.test(Rr(a))}var Qr=Hr;function Gr(a,s){return a==null?void 0:a[s]}var Zr=Gr,qr=Qr,Xr=Zr;function Jr(a,s){var e=Xr(a,s);return qr(e)?e:void 0}var ft=Jr,Kr=ft,_r=Ze,ea=Kr(_r,"Map"),Fs=ea,ta=ft,sa=ta(Object,"create"),hs=sa,di=hs;function ia(){this.__data__=di?di(null):{},this.size=0}var oa=ia;function na(a){var s=this.has(a)&&delete this.__data__[a];return this.size-=s?1:0,s}var ra=na,aa=hs,ca="__lodash_hash_undefined__",la=Object.prototype,ha=la.hasOwnProperty;function ua(a){var s=this.__data__;if(aa){var e=s[a];return e===ca?void 0:e}return ha.call(s,a)?s[a]:void 0}var da=ua,pa=hs,fa=Object.prototype,ga=fa.hasOwnProperty;function ya(a){var s=this.__data__;return pa?s[a]!==void 0:ga.call(s,a)}var Ma=ya,ma=hs,wa="__lodash_hash_undefined__";function va(a,s){var e=this.__data__;return this.size+=this.has(a)?0:1,e[a]=ma&&s===void 0?wa:s,this}var Ia=va,Sa=oa,Na=ra,Ta=da,ka=Ma,Ca=Ia;function xt(a){var s=-1,e=a==null?0:a.length;for(this.clear();++s<e;){var t=a[s];this.set(t[0],t[1])}}xt.prototype.clear=Sa;xt.prototype.delete=Na;xt.prototype.get=Ta;xt.prototype.has=ka;xt.prototype.set=Ca;var ba=xt,pi=ba,xa=ls,La=Fs;function Pa(){this.size=0,this.__data__={hash:new pi,map:new(La||xa),string:new pi}}var za=Pa;function Da(a){var s=typeof a;return s=="string"||s=="number"||s=="symbol"||s=="boolean"?a!=="__proto__":a===null}var Aa=Da,ja=Aa;function Ea(a,s){var e=a.__data__;return ja(s)?e[typeof s=="string"?"string":"hash"]:e.map}var us=Ea,Oa=us;function Ra(a){var s=Oa(this,a).delete(a);return this.size-=s?1:0,s}var Wa=Ra,Ya=us;function Ua(a){return Ya(this,a).get(a)}var Ba=Ua,Fa=us;function Va(a){return Fa(this,a).has(a)}var $a=Va,Ha=us;function Qa(a,s){var e=Ha(this,a),t=e.size;return e.set(a,s),this.size+=e.size==t?0:1,this}var Ga=Qa,Za=za,qa=Wa,Xa=Ba,Ja=$a,Ka=Ga;function Lt(a){var s=-1,e=a==null?0:a.length;for(this.clear();++s<e;){var t=a[s];this.set(t[0],t[1])}}Lt.prototype.clear=Za;Lt.prototype.delete=qa;Lt.prototype.get=Xa;Lt.prototype.has=Ja;Lt.prototype.set=Ka;var ao=Lt,_a=ls,ec=Fs,tc=ao,sc=200;function ic(a,s){var e=this.__data__;if(e instanceof _a){var t=e.__data__;if(!ec||t.length<sc-1)return t.push([a,s]),this.size=++e.size,this;e=this.__data__=new tc(t)}return e.set(a,s),this.size=e.size,this}var oc=ic,nc=ls,rc=ur,ac=pr,cc=gr,lc=Mr,hc=oc;function Pt(a){var s=this.__data__=new nc(a);this.size=s.size}Pt.prototype.clear=rc;Pt.prototype.delete=ac;Pt.prototype.get=cc;Pt.prototype.has=lc;Pt.prototype.set=hc;var co=Pt;function uc(a,s){for(var e=-1,t=a==null?0:a.length;++e<t&&s(a[e],e,a)!==!1;);return a}var dc=uc,pc=ft,fc=function(){try{var a=pc(Object,"defineProperty");return a({},"",{}),a}catch{}}(),lo=fc,fi=lo;function gc(a,s,e){s=="__proto__"&&fi?fi(a,s,{configurable:!0,enumerable:!0,value:e,writable:!0}):a[s]=e}var ho=gc,yc=ho,Mc=Bs,mc=Object.prototype,wc=mc.hasOwnProperty;function vc(a,s,e){var t=a[s];(!(wc.call(a,s)&&Mc(t,e))||e===void 0&&!(s in a))&&yc(a,s,e)}var uo=vc,Ic=uo,Sc=ho;function Nc(a,s,e,t){var i=!e;e||(e={});for(var o=-1,n=s.length;++o<n;){var r=s[o],c=t?t(e[r],a[r],r,e,a):void 0;c===void 0&&(c=a[r]),i?Sc(e,r,c):Ic(e,r,c)}return e}var ds=Nc;function Tc(a,s){for(var e=-1,t=Array(a);++e<a;)t[e]=s(e);return t}var kc=Tc,Cc=pt,bc=Je,xc="[object Arguments]";function Lc(a){return bc(a)&&Cc(a)==xc}var Pc=Lc,gi=Pc,zc=Je,po=Object.prototype,Dc=po.hasOwnProperty,Ac=po.propertyIsEnumerable,jc=gi(function(){return arguments}())?gi:function(a){return zc(a)&&Dc.call(a,"callee")&&!Ac.call(a,"callee")},fo=jc,Ec=Array.isArray,Bt=Ec,qt={exports:{}};function Oc(){return!1}var Rc=Oc;qt.exports;(function(a,s){var e=Ze,t=Rc,i=s&&!s.nodeType&&s,o=i&&!0&&a&&!a.nodeType&&a,n=o&&o.exports===i,r=n?e.Buffer:void 0,c=r?r.isBuffer:void 0,l=c||t;a.exports=l})(qt,qt.exports);var Vs=qt.exports,Wc=9007199254740991,Yc=/^(?:0|[1-9]\d*)$/;function Uc(a,s){var e=typeof a;return s=s??Wc,!!s&&(e=="number"||e!="symbol"&&Yc.test(a))&&a>-1&&a%1==0&&a<s}var Bc=Uc,Fc=9007199254740991;function Vc(a){return typeof a=="number"&&a>-1&&a%1==0&&a<=Fc}var go=Vc,$c=pt,Hc=go,Qc=Je,Gc="[object Arguments]",Zc="[object Array]",qc="[object Boolean]",Xc="[object Date]",Jc="[object Error]",Kc="[object Function]",_c="[object Map]",el="[object Number]",tl="[object Object]",sl="[object RegExp]",il="[object Set]",ol="[object String]",nl="[object WeakMap]",rl="[object ArrayBuffer]",al="[object DataView]",cl="[object Float32Array]",ll="[object Float64Array]",hl="[object Int8Array]",ul="[object Int16Array]",dl="[object Int32Array]",pl="[object Uint8Array]",fl="[object Uint8ClampedArray]",gl="[object Uint16Array]",yl="[object Uint32Array]",me={};me[cl]=me[ll]=me[hl]=me[ul]=me[dl]=me[pl]=me[fl]=me[gl]=me[yl]=!0;me[Gc]=me[Zc]=me[rl]=me[qc]=me[al]=me[Xc]=me[Jc]=me[Kc]=me[_c]=me[el]=me[tl]=me[sl]=me[il]=me[ol]=me[nl]=!1;function Ml(a){return Qc(a)&&Hc(a.length)&&!!me[$c(a)]}var ml=Ml;function wl(a){return function(s){return a(s)}}var ps=wl,Xt={exports:{}};Xt.exports;(function(a,s){var e=io,t=s&&!s.nodeType&&s,i=t&&!0&&a&&!a.nodeType&&a,o=i&&i.exports===t,n=o&&e.process,r=function(){try{var c=i&&i.require&&i.require("util").types;return c||n&&n.binding&&n.binding("util")}catch{}}();a.exports=r})(Xt,Xt.exports);var $s=Xt.exports,vl=ml,Il=ps,yi=$s,Mi=yi&&yi.isTypedArray,Sl=Mi?Il(Mi):vl,yo=Sl,Nl=kc,Tl=fo,kl=Bt,Cl=Vs,bl=Bc,xl=yo,Ll=Object.prototype,Pl=Ll.hasOwnProperty;function zl(a,s){var e=kl(a),t=!e&&Tl(a),i=!e&&!t&&Cl(a),o=!e&&!t&&!i&&xl(a),n=e||t||i||o,r=n?Nl(a.length,String):[],c=r.length;for(var l in a)(s||Pl.call(a,l))&&!(n&&(l=="length"||i&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||bl(l,c)))&&r.push(l);return r}var Mo=zl,Dl=Object.prototype;function Al(a){var s=a&&a.constructor,e=typeof s=="function"&&s.prototype||Dl;return a===e}var Hs=Al;function jl(a,s){return function(e){return a(s(e))}}var mo=jl,El=mo,Ol=El(Object.keys,Object),Rl=Ol,Wl=Hs,Yl=Rl,Ul=Object.prototype,Bl=Ul.hasOwnProperty;function Fl(a){if(!Wl(a))return Yl(a);var s=[];for(var e in Object(a))Bl.call(a,e)&&e!="constructor"&&s.push(e);return s}var Vl=Fl,$l=no,Hl=go;function Ql(a){return a!=null&&Hl(a.length)&&!$l(a)}var Qs=Ql,Gl=Mo,Zl=Vl,ql=Qs;function Xl(a){return ql(a)?Gl(a):Zl(a)}var Gs=Xl,Jl=ds,Kl=Gs;function _l(a,s){return a&&Jl(s,Kl(s),a)}var eh=_l;function th(a){var s=[];if(a!=null)for(var e in Object(a))s.push(e);return s}var sh=th,ih=ot,oh=Hs,nh=sh,rh=Object.prototype,ah=rh.hasOwnProperty;function ch(a){if(!ih(a))return nh(a);var s=oh(a),e=[];for(var t in a)t=="constructor"&&(s||!ah.call(a,t))||e.push(t);return e}var lh=ch,hh=Mo,uh=lh,dh=Qs;function ph(a){return dh(a)?hh(a,!0):uh(a)}var Zs=ph,fh=ds,gh=Zs;function yh(a,s){return a&&fh(s,gh(s),a)}var Mh=yh,Jt={exports:{}};Jt.exports;(function(a,s){var e=Ze,t=s&&!s.nodeType&&s,i=t&&!0&&a&&!a.nodeType&&a,o=i&&i.exports===t,n=o?e.Buffer:void 0,r=n?n.allocUnsafe:void 0;function c(l,u){if(u)return l.slice();var h=l.length,d=r?r(h):new l.constructor(h);return l.copy(d),d}a.exports=c})(Jt,Jt.exports);var mh=Jt.exports;function wh(a,s){var e=-1,t=a.length;for(s||(s=Array(t));++e<t;)s[e]=a[e];return s}var vh=wh;function Ih(a,s){for(var e=-1,t=a==null?0:a.length,i=0,o=[];++e<t;){var n=a[e];s(n,e,a)&&(o[i++]=n)}return o}var wo=Ih;function Sh(){return[]}var vo=Sh,Nh=wo,Th=vo,kh=Object.prototype,Ch=kh.propertyIsEnumerable,mi=Object.getOwnPropertySymbols,bh=mi?function(a){return a==null?[]:(a=Object(a),Nh(mi(a),function(s){return Ch.call(a,s)}))}:Th,qs=bh,xh=ds,Lh=qs;function Ph(a,s){return xh(a,Lh(a),s)}var zh=Ph;function Dh(a,s){for(var e=-1,t=s.length,i=a.length;++e<t;)a[i+e]=s[e];return a}var Xs=Dh,Ah=mo,jh=Ah(Object.getPrototypeOf,Object),Io=jh,Eh=Xs,Oh=Io,Rh=qs,Wh=vo,Yh=Object.getOwnPropertySymbols,Uh=Yh?function(a){for(var s=[];a;)Eh(s,Rh(a)),a=Oh(a);return s}:Wh,So=Uh,Bh=ds,Fh=So;function Vh(a,s){return Bh(a,Fh(a),s)}var $h=Vh,Hh=Xs,Qh=Bt;function Gh(a,s,e){var t=s(a);return Qh(a)?t:Hh(t,e(a))}var No=Gh,Zh=No,qh=qs,Xh=Gs;function Jh(a){return Zh(a,Xh,qh)}var To=Jh,Kh=No,_h=So,eu=Zs;function tu(a){return Kh(a,eu,_h)}var su=tu,iu=ft,ou=Ze,nu=iu(ou,"DataView"),ru=nu,au=ft,cu=Ze,lu=au(cu,"Promise"),hu=lu,uu=ft,du=Ze,pu=uu(du,"Set"),ko=pu,fu=ft,gu=Ze,yu=fu(gu,"WeakMap"),Mu=yu,xs=ru,Ls=Fs,Ps=hu,zs=ko,Ds=Mu,Co=pt,zt=ro,wi="[object Map]",mu="[object Object]",vi="[object Promise]",Ii="[object Set]",Si="[object WeakMap]",Ni="[object DataView]",wu=zt(xs),vu=zt(Ls),Iu=zt(Ps),Su=zt(zs),Nu=zt(Ds),at=Co;(xs&&at(new xs(new ArrayBuffer(1)))!=Ni||Ls&&at(new Ls)!=wi||Ps&&at(Ps.resolve())!=vi||zs&&at(new zs)!=Ii||Ds&&at(new Ds)!=Si)&&(at=function(a){var s=Co(a),e=s==mu?a.constructor:void 0,t=e?zt(e):"";if(t)switch(t){case wu:return Ni;case vu:return wi;case Iu:return vi;case Su:return Ii;case Nu:return Si}return s});var fs=at,Tu=Object.prototype,ku=Tu.hasOwnProperty;function Cu(a){var s=a.length,e=new a.constructor(s);return s&&typeof a[0]=="string"&&ku.call(a,"index")&&(e.index=a.index,e.input=a.input),e}var bu=Cu,xu=Ze,Lu=xu.Uint8Array,bo=Lu,Ti=bo;function Pu(a){var s=new a.constructor(a.byteLength);return new Ti(s).set(new Ti(a)),s}var Js=Pu,zu=Js;function Du(a,s){var e=s?zu(a.buffer):a.buffer;return new a.constructor(e,a.byteOffset,a.byteLength)}var Au=Du,ju=/\w*$/;function Eu(a){var s=new a.constructor(a.source,ju.exec(a));return s.lastIndex=a.lastIndex,s}var Ou=Eu,ki=Ut,Ci=ki?ki.prototype:void 0,bi=Ci?Ci.valueOf:void 0;function Ru(a){return bi?Object(bi.call(a)):{}}var Wu=Ru,Yu=Js;function Uu(a,s){var e=s?Yu(a.buffer):a.buffer;return new a.constructor(e,a.byteOffset,a.length)}var Bu=Uu,Fu=Js,Vu=Au,$u=Ou,Hu=Wu,Qu=Bu,Gu="[object Boolean]",Zu="[object Date]",qu="[object Map]",Xu="[object Number]",Ju="[object RegExp]",Ku="[object Set]",_u="[object String]",ed="[object Symbol]",td="[object ArrayBuffer]",sd="[object DataView]",id="[object Float32Array]",od="[object Float64Array]",nd="[object Int8Array]",rd="[object Int16Array]",ad="[object Int32Array]",cd="[object Uint8Array]",ld="[object Uint8ClampedArray]",hd="[object Uint16Array]",ud="[object Uint32Array]";function dd(a,s,e){var t=a.constructor;switch(s){case td:return Fu(a);case Gu:case Zu:return new t(+a);case sd:return Vu(a,e);case id:case od:case nd:case rd:case ad:case cd:case ld:case hd:case ud:return Qu(a,e);case qu:return new t;case Xu:case _u:return new t(a);case Ju:return $u(a);case Ku:return new t;case ed:return Hu(a)}}var pd=dd,fd=ot,xi=Object.create,gd=function(){function a(){}return function(s){if(!fd(s))return{};if(xi)return xi(s);a.prototype=s;var e=new a;return a.prototype=void 0,e}}(),yd=gd,Md=yd,md=Io,wd=Hs;function vd(a){return typeof a.constructor=="function"&&!wd(a)?Md(md(a)):{}}var Id=vd,Sd=fs,Nd=Je,Td="[object Map]";function kd(a){return Nd(a)&&Sd(a)==Td}var Cd=kd,bd=Cd,xd=ps,Li=$s,Pi=Li&&Li.isMap,Ld=Pi?xd(Pi):bd,Pd=Ld,zd=fs,Dd=Je,Ad="[object Set]";function jd(a){return Dd(a)&&zd(a)==Ad}var Ed=jd,Od=Ed,Rd=ps,zi=$s,Di=zi&&zi.isSet,Wd=Di?Rd(Di):Od,xo=Wd;const Yd=Ct(xo);var Ud=co,Bd=dc,Fd=uo,Vd=eh,$d=Mh,Hd=mh,Qd=vh,Gd=zh,Zd=$h,qd=To,Xd=su,Jd=fs,Kd=bu,_d=pd,ep=Id,tp=Bt,sp=Vs,ip=Pd,op=ot,np=xo,rp=Gs,ap=Zs,cp=1,lp=2,hp=4,Lo="[object Arguments]",up="[object Array]",dp="[object Boolean]",pp="[object Date]",fp="[object Error]",Po="[object Function]",gp="[object GeneratorFunction]",yp="[object Map]",Mp="[object Number]",zo="[object Object]",mp="[object RegExp]",wp="[object Set]",vp="[object String]",Ip="[object Symbol]",Sp="[object WeakMap]",Np="[object ArrayBuffer]",Tp="[object DataView]",kp="[object Float32Array]",Cp="[object Float64Array]",bp="[object Int8Array]",xp="[object Int16Array]",Lp="[object Int32Array]",Pp="[object Uint8Array]",zp="[object Uint8ClampedArray]",Dp="[object Uint16Array]",Ap="[object Uint32Array]",ye={};ye[Lo]=ye[up]=ye[Np]=ye[Tp]=ye[dp]=ye[pp]=ye[kp]=ye[Cp]=ye[bp]=ye[xp]=ye[Lp]=ye[yp]=ye[Mp]=ye[zo]=ye[mp]=ye[wp]=ye[vp]=ye[Ip]=ye[Pp]=ye[zp]=ye[Dp]=ye[Ap]=!0;ye[fp]=ye[Po]=ye[Sp]=!1;function Gt(a,s,e,t,i,o){var n,r=s&cp,c=s&lp,l=s&hp;if(e&&(n=i?e(a,t,i,o):e(a)),n!==void 0)return n;if(!op(a))return a;var u=tp(a);if(u){if(n=Kd(a),!r)return Qd(a,n)}else{var h=Jd(a),d=h==Po||h==gp;if(sp(a))return Hd(a,r);if(h==zo||h==Lo||d&&!i){if(n=c||d?{}:ep(a),!r)return c?Zd(a,$d(n,a)):Gd(a,Vd(n,a))}else{if(!ye[h])return i?a:{};n=_d(a,h,r)}}o||(o=new Ud);var f=o.get(a);if(f)return f;o.set(a,n),np(a)?a.forEach(function(m){n.add(Gt(m,s,e,m,a,o))}):ip(a)&&a.forEach(function(m,N){n.set(N,Gt(m,s,e,N,a,o))});var g=l?c?Xd:qd:c?ap:rp,p=u?void 0:g(a);return Bd(p||a,function(m,N){p&&(N=m,m=a[N]),Fd(n,N,Gt(m,s,e,N,a,o))}),n}var jp=Gt,Ep=jp,Op=1,Rp=4;function Wp(a){return Ep(a,Op|Rp)}var Yp=Wp;const ke=Ct(Yp),Do="1.1.15",Up="@netless/appliance-plugin",Ks=typeof OffscreenCanvas=="function"?"worker":"mainThread";if(typeof window<"u"){let a=window.__netlessUA||"";a+=` ${Up}@${Do}`,window.__netlessUA=a}const Se={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10}};function _e(a,s=!0){const e=a.length;if(e<2)return"";let t=a[0],i=a[1];if(e===2)return`M${gt(t)}L${gt(i)}`;let o="";for(let n=2,r=e-1;n<r;n++)t=a[n],i=a[n+1],o+=yt(t,i);return s?`M${yt(a[0],a[1])}Q${gt(a[1])}${yt(a[1],a[2])}T${o}${yt(a[e-1],a[0])}${yt(a[0],a[1])}Z`:`M${gt(a[0])}Q${gt(a[1])}${yt(a[1],a[2])}${a.length>3?"T":""}${o}L${gt(a[e-1])}`}const We=class We{constructor(s){y(this,"maxImageWidth",Se.pencilEraser.maxImageWidth);y(this,"maxImageHeight",Se.pencilEraser.maxImageHeight);y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"vNodes");y(this,"drawLayer");y(this,"fullLayer");y(this,"workId");y(this,"isDelete",!1);const{vNodes:e,fullLayer:t,drawLayer:i,workId:o,toolsOpt:n}=s;this.vNodes=e,this.fullLayer=t,this.drawLayer=i,this.workId=o,this.syncUnitTime=n.syncUnitTime||this.syncUnitTime}get baseConsumeResult(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions}}filterSamePoints(s,e=.01){return s.reduce((t,i)=>{const o=t[t.length-1];return(i&&!o||i&&o&&!i.isNear(o,e))&&t.push(i),t},[])}setWorkId(s){this.workId=s}getWorkId(){return this.workId}getWorkOptions(){return this.workOptions}setWorkOptions(s){var i,o,n;this.workOptions=s,this.syncUnitTime=s.syncUnitTime||this.syncUnitTime;const e=(i=this.workId)==null?void 0:i.toString(),t=e&&((o=this.vNodes)==null?void 0:o.get(e))||void 0;e&&t&&(t.opt=s,(n=this.vNodes)==null||n.setInfo(e,t))}updataOptService(s){var i,o;let e;const t=(i=this.workId)==null?void 0:i.toString();if(t&&s){const n=this.fullLayer.getElementsByName(t)||this.drawLayer&&this.drawLayer.getElementsByName(t)||[];if(n.length!==1)return;const r=n[0],{pos:c,zIndex:l,scale:u,angle:h,translate:d}=s,f={};De(l)&&(f.zIndex=l),c&&(f.pos=[c[0],c[1]]),u&&(f.scale=u),h&&(f.rotate=h),d&&(f.translate=d),r.attr(f);const g=r==null?void 0:r.getBoundingClientRect();return g&&(e=le(e,{x:Math.floor(g.x-We.SafeBorderPadding),y:Math.floor(g.y-We.SafeBorderPadding),w:Math.floor(g.width+We.SafeBorderPadding*2),h:Math.floor(g.height+We.SafeBorderPadding*2)})),(o=this.vNodes)==null||o.setInfo(t,{rect:e,centerPos:c}),e}}drawEraserlines(s,e){const{group:t,eraserlines:i,pos:o,layer:n}=s,r=n.parent;if(!e)return;const l=(n.renderer.glRenderer||n.renderer.canvasRenderer).options.displayRatio,u=t.getBoundingClientRect(),h=u.width*l*n.worldScaling[0],d=u.height*l*n.worldScaling[1];let f=1;(h>this.maxImageWidth||d>this.maxImageHeight)&&(f=Math.min(this.maxImageWidth/h,this.maxImageHeight/d));let g=n.getAttribute("scale");g=[g[0]*f,g[1]*f];const p=n.parent.parent,m=n.getAttribute("translate"),N=this.createVmRenderNode(`${this.workId}_bitMapLayer`,p,{offscreen:r.offscreen,width:r.width,height:r.height,contextType:"2d",autoRender:!1,bufferSize:500},g,m),v=t.cloneNode(!0);this.addEraserlines(v,i,o,!1),N.appendChild(v);const I=N.parent;I.render();const k=N.renderer.canvasRenderer,w=k.context;if(!w)return;const S=k.options.displayRatio,b=v.getBoundingClientRect(),x={x:b.x,y:b.y,w:b.width,h:b.height},P={x:0,y:0,w:p.width,h:p.height};if(ri(x,P)===ut.outside){Oe(v,I),p.removeChild(I),this.isDelete=!0;return}const R=ke(x);R.x=Math.floor(Math.max(x.x,0)),R.y=Math.floor(Math.max(x.y,0)),R.w=Math.min(x.x+x.w,p.width)-R.x,R.h=Math.min(x.y+x.h,p.height)-R.y;const O=this.getGroupRect(R,S),D=O.x,A=O.y,G=O.w,ne=O.h;let q=w.getImageData(D,A,G,ne);if(this.isTransparentRectByCanvas(q)){Oe(v,I),p.removeChild(I),this.isDelete=!0,q=null;return}Oe(t,r);const H=this.createSpriteNode({imageData:q,safariRect:R,originRect:x,worldScaling:N.worldScaling});t.append(H),Oe(v,I),p.removeChild(I),r.deleteTexture(q),q=null}createVmRenderNode(s,e,t,i,o){const{width:n,height:r}=t,c=`bitMap-${s}`,l=e.layer(c,t),u=new he.Group({anchor:[.5,.5],pos:[n*.5,r*.5],size:[n,r],name:"viewport",id:s});return u.setAttribute("scale",i),u.setAttribute("translate",o),l.append(u),u}getGroupRect(s,e){const t=Math.floor(s.x*e),i=Math.floor(s.y*e),o=Math.floor(s.w*e),n=Math.floor(s.h*e);return{x:t,y:i,w:o,h:n}}addEraserlines(s,e,t,i=!0){for(const o of e){const{thickness:n,op:r}=o;for(const c of r){const l=c.map((g,p)=>p%2?g-t[1]:g-t[0]),u=this.computEraserPoints(l,n),h=_e(u,!0),d={pos:[0,0],d:h,fillColor:"rgba(0,0,0,1)"},f=new he.Path(d);f.addEventListener("beforerender",({detail:g})=>{const p=g.context;i?p.blendFuncSeparate(p.ZERO,p.ZERO,p.ZERO,p.ZERO):p.globalCompositeOperation="destination-out"}),f.addEventListener("afterrender",({detail:g})=>{const p=g.context;i?p.blendFuncSeparate(p.SRC_ALPHA,p.ONE_MINUS_SRC_ALPHA,p.ONE,p.ONE_MINUS_SRC_ALPHA):p.globalCompositeOperation="source-over"}),s.append(f)}}}isTransparentRectByCanvas(s){let e=!0;for(let t=0;t<s.data.length;t+=4)if(s.data[t+3]!==0){e=!1;break}return e}createSpriteNode(s){const{imageData:e,worldScaling:t,safariRect:i,originRect:o}=s,n=new OffscreenCanvas(e.width,e.height),r=n.getContext("2d");r&&r.putImageData(e,0,0);const c=[Math.floor(o.w/t[0]),Math.floor(o.h/t[1])],l=[Math.floor((i.x-o.x)/t[0]),Math.floor((i.y-o.y)/t[1]),Math.floor(i.w/t[0]),Math.floor(i.h/t[1])],u={name:"eraserTexture",anchor:[.5,.5],pos:[0,0],size:c,texture:n,textureRect:l};return new he.Sprite(u)}computEraserPoints(s,e){const t=Math.ceil(e/2);return s.length===2?this.computDot(s,t):this.computLine(s,t)}computDot(s,e){const t=new V(s[0],s[1]);return V.GetDotStroke(t,e,8)}computLine(s,e){const t=[],i=[];let o,n;for(let r=0;r<s.length;r+=2){const c=new V(s[r],s[r+1]);let l;if(r==s.length-2){const u=new V(s[r-2],s[r-1]);l=C.Sub(c,u).uni(),o=c}else{r===0&&(n=c);const u=new V(s[r+2],s[r+3]);l=C.Sub(u,c).uni()}if(l){const u=C.Per(l).mul(e);t.push(V.Sub(c,u)),i.push(V.Add(c,u))}}if(o&&n){const r=V.GetSemicircleStroke(o,t[t.length-1],-1,8),c=V.GetSemicircleStroke(n,i[0],-1,8);return t.concat(r,i.reverse(),c)}return[]}replace(s,e,t){var n;if(!e){t&&s.append(t);return}const i=s.getElementsByName(e);if(i.length)for(const r of i)t?NM(t,r,s):(r.remove(),Ee(r,s.parent));else t&&s.append(t);this.fullLayer===s?(n=this.drawLayer)==null||n.getElementsByName(e).forEach(r=>{var c;r.remove(),Ee(r,(c=this.drawLayer)==null?void 0:c.parent)}):this.fullLayer.getElementsByName(e).forEach(r=>{r.remove(),Ee(r,this.fullLayer.parent)})}removeDrawCountNodes(s,e){const t=[];s.getElementsByName(this.workId).forEach(i=>{i.id&&e&&Number(i.id)<e&&t.push(i)});for(const i of t)i.remove(),Ee(i,s.parent)}static updateNodeOpt(s){var v;const{node:e,opt:t,vNodes:i,willSerializeData:o,targetNode:n}=s,{zIndex:r,translate:c,angle:l,originPoint:u,scenePoint:h,scale:d,pointMap:f,thickness:g}=t;let p;const m=n&&ke(n)||i.get(e.name);if(!m)return;De(r)&&(e.setAttribute("zIndex",r),m.opt.zIndex=r);const N=e.parent;if(N){if(u&&d&&n){const I=[m.op[0],m.op[1]];oi(m.op,h,d,c);const k=[m.op[0],m.op[1]],w=[k[0]-I[0],k[1]-I[1]];if(m.centerPos=[m.centerPos[0]+w[0],m.centerPos[1]+w[1]],m.opt.translate=void 0,m.opt.scale=void 0,m.opt.eraserlines)for(const S of Object.values(m.opt.eraserlines)){const{op:b,thickness:x}=S;S.thickness=x*Math.max(d[0],d[1]);for(let P=0;P<b.length;P++)ni(b[P],h,d,c)}}else if(c)if(e.setAttribute("translate",c),m.opt.translate=c,n){const I=[c[0]*N.worldScaling[0],c[1]*N.worldScaling[1]];p=js(m.rect,I),m.rect=p}else{const I=We.getRectFromLayer(N,e.name);m.rect=I||m.rect}else if(De(l))if(e.setAttribute("rotate",l),m.opt.rotate=l,n)p=Jo(m.rect,l),m.rect=p;else{const I=We.getRectFromLayer(N,e.name);m.rect=I||m.rect}if(f){const I=f.get(e.name);if(I)for(let k=0,w=0;k<m.op.length;k+=3,w++)m.op[k]=I[w][0],m.op[k+1]=I[w][1]}if(g&&((v=m==null?void 0:m.opt)!=null&&v.thickness)&&(m.opt.thickness=g),o&&!(u&&d&&n)){if(c){const I=m.op.map((k,w)=>{const S=w%3;return S===0?k+c[0]:S===1?k+c[1]:k});if(m.op=I,m.centerPos=[m.centerPos[0]+c[0],m.centerPos[1]+c[1]],m!=null&&m.opt&&(m.opt.translate=void 0),m.opt.eraserlines)for(const k of Object.values(m.opt.eraserlines)){const{op:w}=k;for(let S=0;S<w.length;S++){const b=w[S].map((x,P)=>P%2?x+c[1]:x+c[0]);k.op[S]=b}}}else if(De(l)){const I=m.op;if(yM(I,m.centerPos,l),m.op=I,m!=null&&m.opt&&(m.opt.rotate=void 0),m.opt.eraserlines)for(const k of Object.values(m.opt.eraserlines)){const{op:w}=k;for(let S=0;S<w.length;S++)MM(w[S],m.centerPos,l)}}}m&&i.setInfo(e.name,m)}}static getCenterPos(s,e){const{worldPosition:t,worldScaling:i}=e;return[(s.x+s.w/2-t[0])/i[0],(s.y+s.h/2-t[1])/i[1]]}static getRectFromLayer(s,e){const t=s.getElementsByName(e)[0];if(t){const i=t.getBoundingClientRect();return{x:Math.floor(i.x-We.SafeBorderPadding),y:Math.floor(i.y-We.SafeBorderPadding),w:Math.floor(i.width+We.SafeBorderPadding*2),h:Math.floor(i.height+We.SafeBorderPadding*2)}}}static isWillRefresh(s){const{toolsType:e,opt:t,node:i,updateOpt:o,willSerializeData:n}=s;return!!(n&&(o.angle||o.translate)||o.thickness&&t.thickness&&t.thickness!==o.thickness||o.strokeType&&t.strokeType&&t.strokeType!==o.strokeType||o.originPoint&&o.scenePoint&&o.scale||o.pointMap&&o.pointMap.has(i.name)||e===T.Text&&(o.fontSize||o.translate||o.textInfos&&o.textInfos.get(i.name))||e===T.Image&&(o.angle||o.translate||o.scale||o.strokeColor&&o.type===dt.Iconify)||e===o.toolsType&&o.willRefresh||t.eraserlines&&t.eraserlines.length&&(o.strokeColor||o.fillColor))}};y(We,"SafeBorderPadding",10);let Y=We;const _s=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);function nt(a){return JSON.parse(eo.decompress(a))}function Ye(a){return eo.compress(JSON.stringify(a))}const Le=Object.keys;class Ao extends Y{constructor(e){super(e);y(this,"canRotate",!0);y(this,"scaleType",ae.all);y(this,"toolsType",T.Pencil);y(this,"syncTimestamp");y(this,"syncIndex",0);y(this,"tmpPoints",[]);y(this,"MAX_REPEAR",10);y(this,"uniThickness");y(this,"workOptions");y(this,"centerPos",[0,0]);this.workOptions=e.toolsOpt,this.uniThickness=this.MAX_REPEAR/this.workOptions.thickness/10,this.syncTimestamp=0}combineConsume(){var r;const e=(r=this.workId)==null?void 0:r.toString();if(this.tmpPoints.length<2)return{type:L.None};const t=this.transformDataAll(!0),i={name:e};let o;const n=this.drawLayer||this.fullLayer;return t.length&&(o=this.draw({attrs:i,tasks:t,replaceId:e,layer:n})),{rect:o,type:L.DrawWork,dataType:B.Local}}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n,drawCount:r,removeDrawCount:c}=e,{workId:l}=t,{tasks:u,effects:h,consumeIndex:d}=this.transformData(t,!1);this.syncIndex=Math.min(this.syncIndex,d,Math.max(0,this.tmpPoints.length-2));const f={name:l,id:De(r)&&r.toString()||void 0};let g,p=!1;const m=this.syncIndex;if(this.syncTimestamp===0&&(this.syncTimestamp=Date.now()),u.length&&(u[0].taskId-this.syncTimestamp>this.syncUnitTime&&(p=!0,this.syncTimestamp=u[0].taskId,this.syncIndex=this.tmpPoints.length),o||n)){const v=i?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({attrs:f,tasks:u,effects:h,layer:v,removeDrawCount:c})}if(o)return d>10&&this.tmpPoints.splice(0,d-10),{rect:g,type:L.DrawWork,dataType:B.Local};const N=[];return this.tmpPoints.slice(m).forEach(v=>{N.push(v.x,v.y,this.computRadius(v.z,this.workOptions.thickness))}),{...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local,rect:g,op:p?N:void 0,index:p?m*3:void 0,updateNodeOpt:{useAnimation:!0}}}consumeAll(e){var u;const t=this.workId;if(e.data){const{op:h,workState:d}=e.data;h!=null&&h.length&&d===z.Done&&this.workOptions.strokeType===te.Stroke&&this.updateTempPointsWithPressureWhenDone(h)}const i=this.transformDataAll(!0),o={name:t};let n;const r=this.fullLayer;if(i.length&&(n=this.draw({attrs:o,tasks:i,replaceId:t,layer:r})),this.tmpPoints.length<2)return this.replace(r,t),{type:L.RemoveNode,removeIds:[t],rect:n};const c=[];this.tmpPoints.map(h=>{c.push(h.x,h.y,h.z)}),this.syncTimestamp=0,delete this.workOptions.syncUnitTime;const l=Ye(c);return(u=this.vNodes)==null||u.setInfo(t,{rect:n,op:c,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&Y.getCenterPos(n,r)}),{...this.baseConsumeResult,rect:n,type:L.FullWork,dataType:B.Local,ops:l,updateNodeOpt:{pos:this.centerPos,useAnimation:!0}}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var h,d;const{op:t,isFullWork:i,replaceId:o,workState:n=z.Done}=e;this.tmpPoints.length=0;for(let f=0;f<t.length;f+=3){const g=new V(t[f],t[f+1],t[f+2]);if(this.tmpPoints.length>0){const p=this.tmpPoints[this.tmpPoints.length-1],m=C.Sub(g,p).uni();g.setv(m)}this.tmpPoints.push(g)}if(this.tmpPoints.length<2)return;const r=this.transformDataAll(!0),c=(h=this.workId)==null?void 0:h.toString(),l={name:c};let u;if(c&&r.length){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;u=this.draw({attrs:l,tasks:r,replaceId:o,layer:f,isDrawEraserlines:n===z.Done}),(d=this.vNodes)==null||d.setInfo(c,{rect:u,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Y.getCenterPos(u,f)})}return u}transformDataAll(e=!0){const t=this.filterSamePoints(this.tmpPoints,this.workOptions.thickness);return this.getTaskPoints(t,e&&this.workOptions.thickness||void 0)}draw(e){const{attrs:t,tasks:i,replaceId:o,effects:n,layer:r,removeDrawCount:c,isDrawEraserlines:l=!0}=e,{strokeColor:u,strokeType:h,thickness:d,zIndex:f,scale:g,rotate:p,translate:m,eraserlines:N}=this.workOptions;n!=null&&n.size&&(n.forEach(b=>{var x;(x=r.getElementById(b+""))==null||x.remove()}),n.clear()),c&&this.removeDrawCountNodes(r,c);let v;const I=[],k=r.worldPosition,w=r.worldScaling;for(let b=0;b<i.length;b++){const{pos:x,points:P}=i[b],{ps:E,rect:R}=this.computDrawPoints(P);let O;const D=P.length===1;h===te.Stroke||D?O=_e(E,!0):O=_e(E,!1);const A={pos:x,d:O,fillColor:h===te.Stroke||D?u:void 0,lineDash:h===te.Dotted&&!D?[1,d*2]:h===te.LongDotted&&!D?[d,d*2]:void 0,strokeColor:u,lineCap:h===te.Stroke||D?void 0:"round",lineWidth:h===te.Stroke||D?0:d};v=le(v,{x:Math.floor((R.x+x[0])*w[0]+k[0]-Y.SafeBorderPadding),y:Math.floor((R.y+x[1])*w[1]+k[1]-Y.SafeBorderPadding),w:Math.floor(R.w*w[0]+2*Y.SafeBorderPadding),h:Math.floor(R.h*w[1]+2*Y.SafeBorderPadding)}),I.push(A)}g&&(t.scale=g),p&&(t.rotate=p),m&&(t.translate=m);const S=new he.Group;if(v){this.centerPos=Y.getCenterPos(v,r);const b=h===te.Stroke&&!N;S.attr({...t,normalize:!0,anchor:[.5,.5],bgcolor:b?u:void 0,pos:this.centerPos,size:[(v.w-2*Y.SafeBorderPadding)/w[0],(v.h-2*Y.SafeBorderPadding)/w[1]],zIndex:f});const x=I.map(P=>(P.pos=[P.pos[0]-this.centerPos[0],P.pos[1]-this.centerPos[1]],new he.Path(P)));S.append(...x),b&&S.seal(),N&&(this.scaleType=ae.proportional,this.drawEraserlines({group:S,eraserlines:N,pos:this.centerPos,layer:r},l)),this.replace(r,o,S)}if(g||p||m){const b=S==null?void 0:S.getBoundingClientRect();b&&(v={x:Math.floor(b.x-Y.SafeBorderPadding),y:Math.floor(b.y-Y.SafeBorderPadding),w:Math.floor(b.width+Y.SafeBorderPadding*2),h:Math.floor(b.height+Y.SafeBorderPadding*2)})}return this.isDelete&&S.setAttribute("opacity",0),v}computDrawPoints(e){return this.workOptions.strokeType===te.Stroke||e.length===1?this.computStroke(e):this.computNomal(e)}computNomal(e){let t=this.workOptions.thickness;const i=e.map(o=>(t=Math.max(t,o.radius),o.point));return{ps:i,rect:fe(i,t)}}computStroke(e){return e.length===1?this.computDotStroke(e[0]):this.computLineStroke(e)}computLineStroke(e){const t=[],i=[];for(let l=0;l<e.length;l++){const{point:u,radius:h}=e[l];let d=u.v;l===0&&e.length>1&&(d=e[l+1].point.v);const f=C.Per(d).mul(h);t.push(V.Sub(u,f)),i.push(V.Add(u,f))}const o=e[e.length-1],n=V.GetSemicircleStroke(o.point,t[t.length-1],-1,8),r=V.GetSemicircleStroke(e[0].point,i[0],-1,8),c=t.concat(n,i.reverse(),r);return{ps:c,rect:fe(c)}}computDotStroke(e){const{point:t,radius:i}=e,o={x:t.x-i,y:t.y-i,w:i*2,h:i*2};return{ps:V.GetDotStroke(t,i,8),rect:o}}transformData(e,t){const{op:i,workState:o}=e;let n=this.tmpPoints.length-1,r=[];if(i!=null&&i.length&&o){const{strokeType:c,thickness:l}=this.workOptions,u=new Set;n=c===te.Stroke?this.updateTempPointsWithPressure(i,l,u):this.updateTempPoints(i,l,u);const h=t?this.tmpPoints:this.tmpPoints.slice(n);return r=this.getTaskPoints(h,l),{tasks:r,effects:u,consumeIndex:n}}return{tasks:r,consumeIndex:n}}computRadius(e,t){return e*.03*t+t*.5}getMinZ(e,t){return((t||Math.max(1,Math.floor(e*.3)))-e*.5)*100/e/3}getTaskPoints(e,t){var h;const i=[];if(e.length===0)return[];let o=0,n=e[0].x,r=e[0].y,c=[n,r],l=[],u=e[0].t;for(;o<e.length;){const d=e[o],f=d.x-n,g=d.y-r,p=d.z,m=t?this.computRadius(p,t):p;if(l.push({point:new V(f,g,p,e[o].v),radius:m}),o>0&&o<e.length-1){const N=e[o].getAngleByPoints(e[o-1],e[o+1]);if(N<60||N>300){const v=(h=l.pop())==null?void 0:h.point.clone();v&&i.push({taskId:u,pos:c,points:[...l,{point:v,radius:m}]}),n=e[o].x,r=e[o].y,c=[n,r];const I=d.x-n,k=d.y-r;l=[{point:new V(I,k,p),radius:m}],u=Date.now()}}o++}return i.push({taskId:u,pos:c,points:l}),i}updateTempPointsWithPressure(e,t,i){const o=Date.now(),n=this.tmpPoints.length;let r=n;for(let l=0;l<e.length;l+=2){r=Math.min(r,n);const u=this.tmpPoints.length,h=new V(e[l],e[l+1]);if(u===0){this.tmpPoints.push(h);continue}const d=u-1,f=this.tmpPoints[d],g=C.Sub(h,f).uni();if(h.isNear(f,t)){if(f.z<this.MAX_REPEAR){if(f.setz(Math.min(f.z+1,this.MAX_REPEAR)),r=Math.min(r,d),u>1){let N=u-1;for(;N>0;){const v=this.tmpPoints[N].distance(this.tmpPoints[N-1]),I=Math.max(this.tmpPoints[N].z-this.uniThickness*v,0);if(this.tmpPoints[N-1].z>=I)break;this.tmpPoints[N-1].setz(I),r=Math.min(r,N-1),N--}}}else r=1/0;continue}h.setv(g);const p=h.distance(f),m=Math.max(f.z-this.uniThickness*p,0);u>1&&C.Equals(g,f.v,.02)&&(m>0||f.z<=0)&&(i&&f.t&&i.add(f.t),this.tmpPoints.pop(),r=Math.min(d,r)),h.setz(m),this.tmpPoints.push(h)}if(r===1/0)return this.tmpPoints.length;let c=n;if(r===n){c=Math.max(c-1,0);const l=this.tmpPoints[c].t;l&&(i==null||i.add(l))}else{let l=n-1;for(c=r;l>=0;){const u=this.tmpPoints[l].t;if(u&&(i==null||i.add(u),l<=r)){c=l,l=-1;break}l--}}return this.tmpPoints[c].setT(o),c}updateTempPoints(e,t,i){var l;const o=Date.now(),n=this.tmpPoints.length;let r=n;for(let u=0;u<e.length;u+=2){const h=this.tmpPoints.length,d=new V(e[u],e[u+1]);if(h===0){this.tmpPoints.push(d);continue}const f=h-1,g=this.tmpPoints[f],p=C.Sub(d,g).uni();if(d.isNear(g,t/2)){r=Math.min(f,r);continue}C.Equals(p,g.v,.02)&&(i&&g.t&&i.add(g.t),this.tmpPoints.pop(),r=Math.min(f,r)),d.setv(p),this.tmpPoints.push(d)}let c=n;if(r===n){c=Math.max(c-1,0);const u=this.tmpPoints[c].t;u&&(i==null||i.add(u))}else{let u=Math.min(n-1,r);for(c=r;u>=0;){const h=(l=this.tmpPoints[u])==null?void 0:l.t;if(h&&(i==null||i.add(h),u<=r)){c=u,u=-1;break}u--}}return this.tmpPoints[c].setT(o),c}updateTempPointsWithPressureWhenDone(e){const{thickness:t}=this.workOptions,i=e.length,o=this.getMinZ(t);for(let n=0;n<i;n+=2){const r=this.tmpPoints.length,c=new V(e[n],e[n+1]);if(r===0){this.tmpPoints.push(c);continue}const l=r-1,u=this.tmpPoints[l],h=C.Sub(c,u).uni(),d=c.distance(u);if(r>1&&u.z===o)break;if(c.isNear(u,t/2)){if(i<3&&u.z<this.MAX_REPEAR&&(u.setz(Math.min(u.z+1,this.MAX_REPEAR)),r>1)){let g=r-1;for(;g>0;){const p=this.tmpPoints[g].distance(this.tmpPoints[g-1]),m=Math.max(this.tmpPoints[g].z-this.uniThickness*p,-t/4);if(this.tmpPoints[g-1].z>=m)break;this.tmpPoints[g-1].setz(m),g--}}continue}c.setv(h);const f=Math.max(u.z-this.uniThickness*d,o);r>1&&C.Equals(h,u.v,.02)&&u.z<=0&&this.tmpPoints.pop(),c.setz(f),this.tmpPoints.push(c)}}static updateNodeOpt(e){var l,u;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,strokeType:r}=i,c=o.get(t.name);return n&&(t.tagName==="GROUP"?SM(t)?t.setAttribute("bgcolor",n):t.children.forEach(h=>{h.setAttribute("strokeColor",n),h.getAttribute("fillColor")&&h.setAttribute("fillColor",n)}):(t.setAttribute("strokeColor",n),t.setAttribute("fillColor",n)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=n)),r&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=r),c&&o.setInfo(t.name,c),Y.updateNodeOpt(e)}}class jo extends Y{constructor(e){super(e);y(this,"toolsType",T.LaserPen);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"syncTimestamp");y(this,"syncIndex",0);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"consumeIndex",0);this.workOptions=e.toolsOpt,this.syncTimestamp=0}combineConsume(){}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:t,isSubWorker:i}=e,{workId:o,op:n}=t;if((n==null?void 0:n.length)===0)return{type:L.None};if(this.updateTempPoints(n||[]),this.consumeIndex>this.tmpPoints.length-4)return{type:L.None};const{strokeColor:r,thickness:c,strokeType:l}=this.workOptions,u=fe(this.tmpPoints,c);let h=!1;const d=this.syncIndex,f=this.tmpPoints.slice(this.consumeIndex);this.consumeIndex=this.tmpPoints.length-1,this.syncTimestamp===0&&(this.syncTimestamp=Date.now());const g={name:o==null?void 0:o.toString(),opacity:1,lineDash:l===te.Dotted?[1,c*2]:l===te.LongDotted?[c,c*2]:void 0,strokeColor:r,lineCap:"round",lineWidth:c,anchor:[.5,.5]},p=this.getTaskPoints(f);if(p.length){const N=Date.now();N-this.syncTimestamp>this.syncUnitTime&&(h=!0,this.syncTimestamp=N,this.syncIndex=this.tmpPoints.length),i&&this.draw({attrs:g,tasks:p,isDot:!1,layer:this.drawLayer||this.fullLayer})}const m=[];return this.tmpPoints.slice(d).forEach(N=>{m.push(N.x,N.y)}),{rect:{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]},type:L.DrawWork,dataType:B.Local,op:h?m:void 0,index:h?d*2:void 0,...this.baseConsumeResult}}consumeAll(){var n;const e=(n=this.workId)==null?void 0:n.toString();let t;if(this.tmpPoints.length-1>this.consumeIndex){let r=this.tmpPoints.slice(this.consumeIndex);const c=r.length===1,{strokeColor:l,thickness:u,strokeType:h}=this.workOptions;if(c){const g=this.computDotStroke({point:r[0],radius:u/2});r=g.ps,t=g.rect}else t=fe(this.tmpPoints,u);const d={name:e==null?void 0:e.toString(),fillColor:c?l:void 0,opacity:1,lineDash:h===te.Dotted&&!c?[1,u*2]:h===te.LongDotted&&!c?[u,u*2]:void 0,strokeColor:l,lineCap:c?void 0:"round",lineWidth:c?0:u,anchor:[.5,.5]},f=this.getTaskPoints(r);f.length&&this.draw({attrs:d,tasks:f,isDot:c,layer:this.drawLayer||this.fullLayer})}const i=[];this.tmpPoints.forEach(r=>{i.push(r.x,r.y)});const o=Ye(i);return{rect:t&&{x:t.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:t.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:t.w*this.fullLayer.worldScaling[0],h:t.h*this.fullLayer.worldScaling[1]},type:L.FullWork,dataType:B.Local,ops:o,index:this.syncIndex*2,...this.baseConsumeResult}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var p;const{op:t,replaceId:i,isFullWork:o}=e,{strokeColor:n,thickness:r,strokeType:c}=this.workOptions;if(!t.length){const m=fe(this.tmpPoints,r);return{x:m.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:m.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:m.w*this.fullLayer.worldScaling[0],h:m.h*this.fullLayer.worldScaling[1]}}const l=Math.max(0,this.tmpPoints.length-1);this.updateTempPoints(t||[]);let u,h=this.tmpPoints.slice(l);const d=h.length===1;if(d){const m=this.computDotStroke({point:h[0],radius:r/2});h=m.ps,u=m.rect}else u=fe(this.tmpPoints,r);const f={name:(p=this.workId)==null?void 0:p.toString(),fillColor:d?n:void 0,opacity:1,lineDash:c===te.Dotted&&!d?[1,r*2]:c===te.LongDotted&&!d?[r,r*2]:void 0,strokeColor:n,lineCap:d?void 0:"round",lineWidth:d?0:r,anchor:[.5,.5]},g=this.getTaskPoints(h);if(g.length){const m=o?this.fullLayer:this.drawLayer||this.fullLayer;this.draw({attrs:f,tasks:g,isDot:d,replaceId:i,layer:m})}return{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]}}computDotStroke(e){const{point:t,radius:i}=e,o={x:t.x-i,y:t.y-i,w:i*2,h:i*2};return{ps:V.GetDotStroke(t,i,8),rect:o}}updateTempPoints(e){const t=this.tmpPoints.length;for(let i=0;i<e.length;i+=2){if(t){const o=this.tmpPoints.slice(-1)[0];o&&o.x===e[i]&&o.y===e[i+1]&&this.tmpPoints.pop()}this.tmpPoints.push(new V(e[i],e[i+1]))}}async draw(e){const{attrs:t,tasks:i,isDot:o,layer:n}=e,{duration:r}=this.workOptions;for(const c of i){const l=new he.Path,{pos:u,points:h}=c;let d;o?d=_e(h,!0):d=_e(h,!1),l.attr({...t,pos:u,d});const{vertex:f,fragment:g}=this.workOptions;if(f&&g){const p=n.renderer.createProgram({vertex:f,fragment:g}),{width:m,height:N}=n.getResolution();l.setUniforms({u_time:0,u_resolution:[m,N]}),l.setProgram(p)}n.appendChild(l),l.transition(r).attr({scale:o?[.1,.1]:[1,1],lineWidth:o?0:1}).then(()=>{l.remove()})}}getTaskPoints(e){var l;const t=[];if(e.length===0)return[];let i=0,o=e[0].x,n=e[0].y,r=[o,n],c=[];for(;i<e.length;){const u=e[i],h=u.x-o,d=u.y-n;if(c.push(new V(h,d)),i>0&&i<e.length-1){const f=e[i].getAngleByPoints(e[i-1],e[i+1]);if(f<60||f>300){const g=(l=c.pop())==null?void 0:l.clone();g&&t.push({pos:r,points:[...c,g]}),o=e[i].x,n=e[i].y,r=[o,n];const p=u.x-o,m=u.y-n;c=[new V(p,m)]}}i++}return t.push({pos:r,points:c}),t}removeLocal(){}removeService(e){let t;const i=[];return this.fullLayer.getElementsByName(e).forEach(o=>{if(o.name===e){const n=o.getBoundingClientRect();t=le(t,{x:n.x,y:n.y,w:n.width,h:n.height}),i.push(o)}}),i.length&&i.forEach(o=>o.remove()),t}}const wt=class wt extends Y{constructor(e,t){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"toolsType",T.Eraser);y(this,"serviceWork");y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"worldPosition");y(this,"worldScaling");y(this,"eraserRect");y(this,"eraserPolyline");this.serviceWork=t,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(){}consumeService(){}setWorkOptions(e){super.setWorkOptions(e)}createEraserRect(e){const t=e[0]*this.worldScaling[0]+this.worldPosition[0],i=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:o,height:n}=wt.eraserSizes[this.workOptions.thickness];this.eraserRect={x:t-o*.5,y:i-n*.5,w:o,h:n},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const t=new C(this.tmpPoints[0],this.tmpPoints[1]),i=new C(this.tmpPoints[2],this.tmpPoints[3]),o=C.Sub(i,t).uni(),n=C.Dist(t,i),{width:r,height:c}=wt.eraserSizes[this.workOptions.thickness],l=Math.min(r,c),u=Math.round(n/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=C.Mul(o,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,t){const i=new C(e[0],e[1]),o=new C(t[0],t[1]),{width:n,height:r}=wt.eraserSizes[this.workOptions.thickness];return C.Dist(i,o)<Math.hypot(n,r)*.5}remove(e){const{curNodeMap:t,removeIds:i}=e;let o;for(const n of t.values())if(n.rect&&this.eraserRect&&this.eraserPolyline&&Yt(this.eraserRect,n.rect)){const{op:r}=n,c=[],l=[];for(let h=0;h<r.length;h+=3){const d=new C(r[h]*this.worldScaling[0]+this.worldPosition[0],r[h+1]*this.worldScaling[1]+this.worldPosition[1],r[h+2]);l.push(d),c.push(new V(d.x,d.y))}const u=c.length&&fe(c)||n.rect;Yt(u,this.eraserRect)&&(l.length>1?Us.polyline(l.map(d=>d.XY),this.eraserPolyline).length&&i.add(n.name):i.add(n.name),o=le(o,n.rect||u))}return i.forEach(n=>{var c;const r=this.fullLayer.getElementsByName(n);r[0]&&(r[0].remove(),Ee(r[0],this.fullLayer.parent),(c=this.vNodes)==null||c.delete(n))}),o&&(o.x-=Y.SafeBorderPadding,o.y-=Y.SafeBorderPadding,o.w+=Y.SafeBorderPadding*2,o.h+=Y.SafeBorderPadding*2),o}consume(e){const{op:t,disableEraseImage:i,disableEraseText:o}=e.data;if(!t||t.length===0)return{type:L.None,...this.baseConsumeResult};const n=this.tmpPoints.length;if(n>1&&this.isNear([t[0],t[1]],[this.tmpPoints[n-2],this.tmpPoints[n-1]]))return{type:L.None,...this.baseConsumeResult};n<3?this.tmpPoints.push(t[0],t[1]):this.tmpPoints.splice(2,2,t[0],t[1]);const r=this.computRectCenterPoints();let c;const l=new Set;if(!this.vNodes)return{type:L.None,...this.baseConsumeResult};const u=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap,{disableEraseImage:i,disableEraseText:o}));for(let h=0;h<r.length-1;h+=2){this.createEraserRect(r.slice(h,h+2));const d=this.remove({curNodeMap:u,removeIds:l});c=le(c,d)}return c&&l.size?{type:L.RemoveNode,rect:c,removeIds:[...l]}:{type:L.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var t;if(this.serviceWork){const i=new Map(e),o=this.serviceWork.selectorWorkShapes,n=this.serviceWork.workShapes;for(const r of o.values())if((t=r.selectIds)!=null&&t.length)for(const c of r.selectIds)i.delete(c);for(const r of n.keys())i.delete(r);return i}return e}};y(wt,"eraserSizes",_s);let Kt=wt;const je="++",Q="selector",Zt="all";var Bp="__lodash_hash_undefined__";function Fp(a){return this.__data__.set(a,Bp),this}var Vp=Fp;function $p(a){return this.__data__.has(a)}var Hp=$p,Qp=ao,Gp=Vp,Zp=Hp;function _t(a){var s=-1,e=a==null?0:a.length;for(this.__data__=new Qp;++s<e;)this.add(a[s])}_t.prototype.add=_t.prototype.push=Gp;_t.prototype.has=Zp;var ei=_t;function qp(a,s){for(var e=-1,t=a==null?0:a.length;++e<t;)if(s(a[e],e,a))return!0;return!1}var Xp=qp;function Jp(a,s){return a.has(s)}var ti=Jp,Kp=ei,_p=Xp,ef=ti,tf=1,sf=2;function of(a,s,e,t,i,o){var n=e&tf,r=a.length,c=s.length;if(r!=c&&!(n&&c>r))return!1;var l=o.get(a),u=o.get(s);if(l&&u)return l==s&&u==a;var h=-1,d=!0,f=e&sf?new Kp:void 0;for(o.set(a,s),o.set(s,a);++h<r;){var g=a[h],p=s[h];if(t)var m=n?t(p,g,h,s,a,o):t(g,p,h,a,s,o);if(m!==void 0){if(m)continue;d=!1;break}if(f){if(!_p(s,function(N,v){if(!ef(f,v)&&(g===N||i(g,N,e,t,o)))return f.push(v)})){d=!1;break}}else if(!(g===p||i(g,p,e,t,o))){d=!1;break}}return o.delete(a),o.delete(s),d}var Eo=of;function nf(a){var s=-1,e=Array(a.size);return a.forEach(function(t,i){e[++s]=[i,t]}),e}var rf=nf;function af(a){var s=-1,e=Array(a.size);return a.forEach(function(t){e[++s]=t}),e}var si=af,Ai=Ut,ji=bo,cf=Bs,lf=Eo,hf=rf,uf=si,df=1,pf=2,ff="[object Boolean]",gf="[object Date]",yf="[object Error]",Mf="[object Map]",mf="[object Number]",wf="[object RegExp]",vf="[object Set]",If="[object String]",Sf="[object Symbol]",Nf="[object ArrayBuffer]",Tf="[object DataView]",Ei=Ai?Ai.prototype:void 0,Ss=Ei?Ei.valueOf:void 0;function kf(a,s,e,t,i,o,n){switch(e){case Tf:if(a.byteLength!=s.byteLength||a.byteOffset!=s.byteOffset)return!1;a=a.buffer,s=s.buffer;case Nf:return!(a.byteLength!=s.byteLength||!o(new ji(a),new ji(s)));case ff:case gf:case mf:return cf(+a,+s);case yf:return a.name==s.name&&a.message==s.message;case wf:case If:return a==s+"";case Mf:var r=hf;case vf:var c=t&df;if(r||(r=uf),a.size!=s.size&&!c)return!1;var l=n.get(a);if(l)return l==s;t|=pf,n.set(a,s);var u=lf(r(a),r(s),t,i,o,n);return n.delete(a),u;case Sf:if(Ss)return Ss.call(a)==Ss.call(s)}return!1}var Cf=kf,Oi=To,bf=1,xf=Object.prototype,Lf=xf.hasOwnProperty;function Pf(a,s,e,t,i,o){var n=e&bf,r=Oi(a),c=r.length,l=Oi(s),u=l.length;if(c!=u&&!n)return!1;for(var h=c;h--;){var d=r[h];if(!(n?d in s:Lf.call(s,d)))return!1}var f=o.get(a),g=o.get(s);if(f&&g)return f==s&&g==a;var p=!0;o.set(a,s),o.set(s,a);for(var m=n;++h<c;){d=r[h];var N=a[d],v=s[d];if(t)var I=n?t(v,N,d,s,a,o):t(N,v,d,a,s,o);if(!(I===void 0?N===v||i(N,v,e,t,o):I)){p=!1;break}m||(m=d=="constructor")}if(p&&!m){var k=a.constructor,w=s.constructor;k!=w&&"constructor"in a&&"constructor"in s&&!(typeof k=="function"&&k instanceof k&&typeof w=="function"&&w instanceof w)&&(p=!1)}return o.delete(a),o.delete(s),p}var zf=Pf,Ns=co,Df=Eo,Af=Cf,jf=zf,Ri=fs,Wi=Bt,Yi=Vs,Ef=yo,Of=1,Ui="[object Arguments]",Bi="[object Array]",$t="[object Object]",Rf=Object.prototype,Fi=Rf.hasOwnProperty;function Wf(a,s,e,t,i,o){var n=Wi(a),r=Wi(s),c=n?Bi:Ri(a),l=r?Bi:Ri(s);c=c==Ui?$t:c,l=l==Ui?$t:l;var u=c==$t,h=l==$t,d=c==l;if(d&&Yi(a)){if(!Yi(s))return!1;n=!0,u=!1}if(d&&!u)return o||(o=new Ns),n||Ef(a)?Df(a,s,e,t,i,o):Af(a,s,c,e,t,i,o);if(!(e&Of)){var f=u&&Fi.call(a,"__wrapped__"),g=h&&Fi.call(s,"__wrapped__");if(f||g){var p=f?a.value():a,m=g?s.value():s;return o||(o=new Ns),i(p,m,e,t,o)}}return d?(o||(o=new Ns),jf(a,s,e,t,i,o)):!1}var Yf=Wf,Uf=Yf,Vi=Je;function Oo(a,s,e,t,i){return a===s?!0:a==null||s==null||!Vi(a)&&!Vi(s)?a!==a&&s!==s:Uf(a,s,e,t,Oo,i)}var Bf=Oo,Ff=Bf;function Vf(a,s){return Ff(a,s)}var $f=Vf;const it=Ct($f),rs=class rs extends Y{constructor(e){super(e);y(this,"toolsType",T.Selector);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"vNodes");y(this,"selectIds");y(this,"selectorColor");y(this,"strokeColor");y(this,"fillColor");y(this,"oldSelectRect");y(this,"canRotate",!1);y(this,"canTextEdit",!1);y(this,"canLock",!1);y(this,"scaleType",ae.all);y(this,"toolsTypes");y(this,"shapeOpt");y(this,"textOpt");y(this,"isLocked");y(this,"thickness");y(this,"strokeType");y(this,"useStroke");this.workOptions=e.toolsOpt,this.vNodes=e.vNodes}computSelector(e=!0){const t=fe(this.tmpPoints);if(t.w===0||t.h===0)return{selectIds:[],intersectRect:void 0,subNodeMap:new Map};const{rectRange:i,nodeRange:o}=this.vNodes.getRectIntersectRange(t,e);return{selectIds:[...o.keys()],intersectRect:i,subNodeMap:o}}updateTempPoints(e){const t=this.tmpPoints.length,i=e.length;if(i>1){const o=new V(e[i-2]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[i-1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]);t===2?this.tmpPoints.splice(1,1,o):this.tmpPoints.push(o)}}drawSelector(e){const{drawRect:t,subNodeMap:i,selectorId:o,layer:n,isService:r}=e,c=new he.Group({pos:[t.x,t.y],anchor:[0,0],size:[t.w,t.h],id:o,name:o,zIndex:9999}),l=[];if(r){const u=new he.Rect({normalize:!0,pos:[t.w/2,t.h/2],lineWidth:1,strokeColor:this.selectorColor||this.workOptions.strokeColor,width:t.w,height:t.h,name:rs.selectorBorderId});l.push(u)}i.forEach((u,h)=>{const d=[u.rect.x+u.rect.w/2-t.x,u.rect.y+u.rect.h/2-t.y],f=new he.Rect({normalize:!0,pos:d,lineWidth:1,strokeColor:i.size>1?this.selectorColor||this.workOptions.strokeColor:void 0,width:u.rect.w,height:u.rect.h,id:`selector-${h}`,name:`selector-${h}`});l.push(f)}),l&&c.append(...l),(n==null?void 0:n.parent).appendChild(c)}draw(e,t,i,o=!1){var c,l;const{intersectRect:n,subNodeMap:r}=i;(l=(c=t.parent)==null?void 0:c.getElementById(e))==null||l.remove(),n&&this.drawSelector({drawRect:n,subNodeMap:r,selectorId:e,layer:t,isService:o})}getSelecteorInfo(e){this.scaleType=ae.all,this.canRotate=!1,this.textOpt=void 0,this.strokeColor=void 0,this.fillColor=void 0,this.canTextEdit=!1,this.canLock=!1,this.isLocked=!1,this.toolsTypes=void 0,this.shapeOpt=void 0,this.thickness=void 0,this.strokeType=void 0,this.useStroke=!1;const t=new Set;let i,o=!0;for(const n of e.values()){const{opt:r,canRotate:c,scaleType:l,toolsType:u}=n;this.selectorColor=this.workOptions.strokeColor,r.strokeColor&&(this.strokeColor=r.strokeColor),r.fillColor&&(this.fillColor=r.fillColor),r.textOpt&&(this.textOpt=r.textOpt),r.thickness&&(this.thickness=r.thickness),u!==T.Pencil&&(o=!1),r.strokeType&&(this.strokeType=r.strokeType),u===T.SpeechBalloon&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.placement=r.placement),u===T.Polygon&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=r.vertices),u===T.Star&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=r.vertices,this.shapeOpt.innerRatio=r.innerRatio,this.shapeOpt.innerVerticeStep=r.innerVerticeStep),u===T.Text&&(this.textOpt=r),e.size===1&&(this.textOpt&&(this.canTextEdit=!0),this.canRotate=c,this.scaleType=l),u===T.Image&&(i=n),(l===ae.proportional&&this.scaleType!==ae.none||l===ae.none)&&(this.scaleType=l)}o&&(this.useStroke=!0),t.size&&(this.toolsTypes=[...t]),i&&(e.size===1?(this.canLock=!0,i.opt.locked&&(this.isLocked=!0,this.scaleType=ae.none,this.canRotate=!1,this.textOpt=void 0,this.fillColor=void 0,this.selectorColor="rgb(177,177,177)",this.strokeColor=void 0,this.canTextEdit=!1,this.thickness=void 0,this.strokeType=void 0,this.useStroke=void 0)):e.size>1&&!i.opt.locked&&(this.canLock=!1,this.canRotate=!1))}getChildrenPoints(){var e,t;if(this.scaleType===ae.both&&((e=this.selectIds)==null?void 0:e.length)===1){const i=this.selectIds[0],o=(t=this.vNodes.get(i))==null?void 0:t.op;if(o){const n=[];for(let r=0;r<o.length;r+=3)n.push([o[r],o[r+1]]);return n}}}consume(e){const{op:t,workState:i}=e.data;let o=this.oldSelectRect;if(i===z.Start&&(o=this.unSelectedAllIds()),!(t!=null&&t.length)||!this.vNodes.curNodeMap.size)return{type:L.None};this.updateTempPoints(t);const n=this.computSelector();if(this.selectIds&&it(this.selectIds,n.selectIds))return{type:L.None};this.selectIds=n.selectIds;const r=n.intersectRect;this.getSelecteorInfo(n.subNodeMap),this.draw(Q,this.fullLayer,n),this.oldSelectRect=r;const c=this.getChildrenPoints();return{type:L.Select,dataType:B.Local,rect:le(r,o),selectIds:n.selectIds,selectRect:r,selectorColor:this.selectorColor,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:c,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}consumeAll(){var t,i;let e=this.oldSelectRect;if(!((t=this.selectIds)!=null&&t.length)&&this.tmpPoints[0]&&this.selectSingleTool(this.tmpPoints[0].XY,Q,!1),(i=this.selectIds)!=null&&i.length&&(e=this.selectedByIds(this.selectIds)),e){const o=this.getChildrenPoints();return{type:L.Select,dataType:B.Local,rect:this.oldSelectRect,selectIds:this.selectIds,selectorColor:this.selectorColor,selectRect:this.oldSelectRect,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:o,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}return{type:L.None}}consumeService(){}clearTmpPoints(){this.tmpPoints.length=0}clearSelectData(){this.selectIds=void 0,this.oldSelectRect=void 0}selectSingleTool(e,t=Q,i=!1){if(e.length===2){const o=e[0],n=e[1];let r;const{nodeRange:c}=this.vNodes.getRectIntersectRange({x:o,y:n,w:0,h:0},!1),l=[...c.values()].sort((u,h)=>(h.opt.zIndex||0)-(u.opt.zIndex||0));for(const u of l){const h=this.fullLayer.getElementsByName(u.name);if(Ho(h).find(f=>f.isPointCollision(o,n))){r=u;break}}if(r){const u=r.name;if(!it(this.oldSelectRect,r.rect)){const h=new Map([[u,r]]);this.getSelecteorInfo(h),this.draw(t,this.fullLayer,{intersectRect:r.rect,subNodeMap:h,selectIds:this.selectIds||[]},i)}this.selectIds=[u],this.oldSelectRect=r.rect}}}unSelectedAllIds(){let e;for(const[t,i]of this.vNodes.curNodeMap.entries())i.isSelected&&(e=le(e,i.rect),this.vNodes.unSelected(t));return e}unSelectedByIds(e){let t;for(const i of e){const o=this.vNodes.get(i);o&&o.isSelected&&(t=le(t,o.rect),this.vNodes.unSelected(i))}return t}selectedByIds(e){let t;for(const i of e){const o=this.vNodes.get(i);o&&(t=le(t,o.rect),this.vNodes.selected(i))}return t}getSelectorRect(e,t){var r;let i;const o=(r=e.parent)==null?void 0:r.getElementById(t),n=o==null?void 0:o.getBoundingClientRect();return n&&(i=le(i,{x:Math.floor(n.x),y:Math.floor(n.y),w:Math.floor(n.width+1),h:Math.floor(n.height+1)})),i}isCanFillColor(e){return e===T.Ellipse||e===T.Triangle||e===T.Rectangle||e===T.Polygon||e===T.Star||e===T.SpeechBalloon}async updateSelector(e){const{updateSelectorOpt:t,selectIds:i,vNodes:o,willSerializeData:n,worker:r,offset:c}=e,l=this.fullLayer;if(!l)return;let u;const h=new Map,{originPoint:d,workState:f,angle:g,translate:p,dir:m,scale:N}=t;c&&(p?t.translate=[p[0]+c[0],p[1]+c[1]]:t.translate=c);let v;if(d||p||De(g)){if(f===z.Start&&i)return o.setTargetAssignKeys(i),{type:L.Select,dataType:B.Local,selectRect:this.oldSelectRect,rect:this.oldSelectRect};if(v=o.getLastTarget(),!v)return}if(i)for(const w of i){const S=o.get(w);if(S){const{toolsType:b,opt:x}=S,P=(l==null?void 0:l.getElementsByName(w))[0];if(P){const E={...t};let R;const O=Y.isWillRefresh({toolsType:b,opt:x,updateOpt:E,vNodes:o,node:P,willSerializeData:n});if(b){R=v==null?void 0:v.get(w);const D=$o(b);if(D==null||D.updateNodeOpt({node:P,opt:E,vNodes:o,willSerializeData:n,targetNode:R}),S&&r&&O){const A=r.createWorkShapeNode({workId:w,toolsType:b,toolsOpt:S.opt});A==null||A.setWorkId(w);let G;if(b===T.Image)G=await A.consumeServiceAsync({isFullWork:!0,replaceId:w,worker:r});else if(b===T.Text)G=await A.consumeServiceAsync({isFullWork:!0,replaceId:w});else try{G=A==null?void 0:A.consumeService({op:S.op,isFullWork:!0,replaceId:w,workState:f})}catch{continue}G&&(S.rect=G)}S&&(h.set(w,S),u=le(u,S.rect))}}}}v&&f===z.Done&&(o.deleteLastTarget(),v=void 0);const I=u;if(d&&p&&N&&m&&I&&!c){const w=[[I.x,I.y],[I.x+I.w,I.y],[I.x+I.w,I.y+I.h],[I.x,I.y+I.h]];let S;switch(m){case"top":case"topLeft":case"left":p[0]>0&&p[1]>0?S=w[0]:p[0]>0?S=w[3]:p[1]>0?S=w[1]:S=w[2];break;case"topRight":p[0]<0&&p[1]>0?S=w[1]:p[0]<0?S=w[2]:p[1]>0?S=w[0]:S=w[3];break;case"right":case"bottomRight":case"bottom":p[0]<0&&p[1]<0?S=w[2]:p[0]<0?S=w[1]:p[1]<0?S=w[3]:S=w[0];break;case"bottomLeft":p[0]>0&&p[1]<0?S=w[3]:p[0]>0?S=w[0]:p[1]<0?S=w[2]:S=w[1];break}const b=S&&[d[0]-S[0],d[1]-S[1]]||[0,0];if(!it(b,[0,0]))return await this.updateSelector({...e,updateSelectorOpt:{workState:f},offset:b})}this.getSelecteorInfo(h),this.draw(Q,l,{selectIds:i||[],subNodeMap:h,intersectRect:I});const k=le(this.oldSelectRect,I);return this.oldSelectRect=I,{type:L.Select,dataType:B.Local,selectRect:I,renderRect:u,rect:le(k,I),selectIds:i}}blurSelector(){const e=this.unSelectedAllIds();return{type:L.Select,dataType:B.Local,rect:e,selectIds:[],willSyncService:!0}}getRightServiceId(e){return e.replace(je,"-")}selectServiceNode(e,t,i){const{selectIds:o}=t,n=this.getRightServiceId(e),r=this.getSelectorRect(this.fullLayer,n);let c;const l=new Map;return o==null||o.forEach(u=>{const h=this.vNodes.get(u);h&&(c=le(c,h.rect),l.set(u,h))}),this.getSelecteorInfo(l),this.draw(n,this.fullLayer,{intersectRect:c,selectIds:o||[],subNodeMap:l},i),le(c,r)}reRenderSelector(){var i;let e;const t=new Map;return(i=this.selectIds)==null||i.forEach(o=>{const n=this.vNodes.get(o);n&&(e=le(e,n.rect),t.set(o,n))},this),this.getSelecteorInfo(t),this.draw(Q,this.fullLayer,{intersectRect:e,subNodeMap:t,selectIds:this.selectIds||[]}),this.oldSelectRect=e,e}updateSelectIds(e){var n;let t;const i=(n=this.selectIds)==null?void 0:n.filter(r=>!e.includes(r));if(i!=null&&i.length&&(t=this.unSelectedByIds(i)),e.length){const r=this.selectedByIds(e);t=le(t,r)}this.selectIds=e;const o=this.reRenderSelector();return{bgRect:t,selectRect:o}}cursorHover(e){var n,r;const t=this.oldSelectRect;this.selectIds=[];const i=(n=this.workId)==null?void 0:n.toString(),o=[e[0]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]];if(this.selectSingleTool(o,i,!0),this.oldSelectRect&&!it(t,this.oldSelectRect))return{type:L.CursorHover,dataType:B.Local,rect:le(t,this.oldSelectRect),selectorColor:this.selectorColor,willSyncService:!1};if((r=this.selectIds)!=null&&r.length||(this.oldSelectRect=void 0),t&&!this.oldSelectRect)return this.cursorBlur(),{type:L.CursorHover,dataType:B.Local,rect:t,selectorColor:this.selectorColor,willSyncService:!1}}cursorBlur(){var t,i;this.selectIds=[];const e=(t=this.workId)==null?void 0:t.toString();((i=this.fullLayer)==null?void 0:i.parent).children.forEach(o=>{o.name===e&&o.remove()})}};y(rs,"selectorBorderId","selector-border");let es=rs;class Ro extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.both);y(this,"toolsType",T.Arrow);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"arrowTipWidth");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.arrowTipWidth=this.workOptions.thickness*4,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:f})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Y.getCenterPos(i,t)}),{rect:i,...this.baseConsumeResult,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0}}draw(e){const{workId:t,layer:i,isDrawEraserlines:o}=e,{strokeColor:n,thickness:r,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f}=this.workOptions,g=i.worldPosition,p=i.worldScaling,{points:m,pos:N,rect:v,isTriangle:I,trianglePoints:k,trianglePos:w}=this.computDrawPoints(r),S=[v.x+v.w/2,v.y+v.h/2],b={pos:S,name:t,id:t,zIndex:c,anchor:[.5,.5],size:[v.w,v.h]};l&&(b.scale=l),u&&(b.rotate=u),h&&(b.translate=h);const x=new he.Group(b),P={points:k,pos:[w[0]-S[0],w[1]-S[1]],fillColor:n,strokeColor:n,lineWidth:0,normalize:!1},E=new he.Polyline(P);if(x.append(E),!I&&m&&N){const O={points:m,pos:[N[0]-S[0],N[1]-S[1]],fillColor:n,strokeColor:n,lineDash:d===te.Dotted&&!I?[1,r*2]:d===te.LongDotted&&!I?[r,r*2]:void 0,lineCap:d===te.Normal?void 0:"round",lineWidth:r,normalize:!1},D=new he.Polyline(O);x.append(D)}f&&(this.scaleType=ae.proportional,this.drawEraserlines({group:x,eraserlines:f,pos:S,layer:i},o)),this.replace(i,t,x);let R={x:Math.floor(v.x*p[0]+g[0]-Y.SafeBorderPadding),y:Math.floor(v.y*p[1]+g[1]-Y.SafeBorderPadding),w:Math.floor(v.w*p[0]+2*Y.SafeBorderPadding),h:Math.floor(v.h*p[1]+2*Y.SafeBorderPadding)};if(l||u||h){const O=x.getBoundingClientRect();R={x:Math.floor(O.x-Y.SafeBorderPadding),y:Math.floor(O.y-Y.SafeBorderPadding),w:Math.floor(O.width+Y.SafeBorderPadding*2),h:Math.floor(O.height+Y.SafeBorderPadding*2)}}return this.isDelete&&x.setAttribute("opacity",0),R}computDrawPoints(e){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.arrowTipWidth?this.computFullArrowPoints(e):this.computTrianglePoints()}computFullArrowPoints(e){const t=C.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),i=C.Per(t).mul(e/2),o=V.Sub(this.tmpPoints[0],i),n=V.Add(this.tmpPoints[0],i),r=C.Mul(t,this.arrowTipWidth),c=C.Sub(this.tmpPoints[1],r),l=V.Sub(c,i),u=V.Add(c,i),h=C.Per(t).mul(e*1.5),d=V.Sub(c,h),f=V.Add(c,h),g=[this.tmpPoints[0],c],p=[d,this.tmpPoints[1],f],m=[o,n,...p,l,u];return{trianglePoints:p.map(N=>V.Sub(N,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,points:g.map(N=>V.Sub(N,this.tmpPoints[0]).XY).flat(1),rect:fe(m),isTriangle:!1,pos:this.tmpPoints[0].XY}}computTrianglePoints(){const e=C.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),t=this.tmpPoints[1].distance(this.tmpPoints[0]),i=C.Per(e).mul(Math.floor(t*3/8)),o=V.Sub(this.tmpPoints[0],i),n=V.Add(this.tmpPoints[0],i),r=[o,this.tmpPoints[1],n];return{trianglePoints:r.map(c=>V.Sub(c,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,rect:fe(r),isTriangle:!0}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,strokeType:r}=i,c=o.get(t.name);return n&&(t.tagName==="GROUP"?t.children.forEach(h=>{h.setAttribute("strokeColor",n),h.getAttribute("fillColor")&&h.setAttribute("fillColor",n)}):(t.setAttribute("strokeColor",n),t.setAttribute("fillColor",n)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=n)),r&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=r),c&&o.setInfo(t.name,c),Y.updateNodeOpt(e)}}class Wo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.Ellipse);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};if(!o){const d=Date.now();return d-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=d,{type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult,op:this.tmpPoints.map(f=>[...f.XY,0]).flat(1),isSync:!0,index:0}):{type:L.None}}let h;if(o||n){const d=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:d,isDrawing:!0});const f=d.parent.parent,g={x:0,y:0,w:Math.floor(f.width),h:Math.floor(f.height)};if(ri(h,g)!==ut.outside){const m=le(h,this.oldRect);return this.oldRect=h,{rect:m,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}return{type:L.None}}return{type:L.None}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,...this.baseConsumeResult,ops:n,isSync:!0}}draw(e){const{workId:t,layer:i,isDrawing:o,isDrawEraserlines:n}=e,{strokeColor:r,fillColor:c,thickness:l,zIndex:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:p}=this.workOptions,m=i.worldScaling,{radius:N,rect:v,pos:I}=this.computDrawPoints(l),k={closeType:"normal",radius:N,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:r,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:g===te.Dotted?[1,l*2]:g===te.LongDotted?[l,l*2]:void 0},w={name:t,id:t,zIndex:u,pos:I,anchor:[.5,.5],size:[v.w,v.h]};h&&(w.scale=h),d&&(w.rotate=d),f&&(w.translate=f);const S=new he.Group(w);if(o){const P=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:r,lineWidth:1,scale:[1/m[0],1/m[1]]});S.append(P)}const b=new he.Ellipse({...k,pos:[0,0]});S.append(b),p&&(this.scaleType=ae.proportional,this.drawEraserlines({group:S,eraserlines:p,pos:I,layer:i},n)),this.replace(i,t,S);const x=S.getBoundingClientRect();return this.isDelete&&S.setAttribute("opacity",0),{x:Math.floor(x.x-Y.SafeBorderPadding),y:Math.floor(x.y-Y.SafeBorderPadding),w:Math.floor(x.width+Y.SafeBorderPadding*2),h:Math.floor(x.height+Y.SafeBorderPadding*2)}}computDrawPoints(e){const t=fe(this.tmpPoints),i=fe(this.tmpPoints,e),o=[Math.floor(t.x+t.w/2),Math.floor(t.y+t.h/2)];return{rect:i,pos:o,radius:[Math.floor(t.w/2),Math.floor(t.h/2)]}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,strokeType:c}=i,l=o.get(t.name);let u=t;return t.tagName==="GROUP"&&(u=t.children[0]),n&&(u.setAttribute("strokeColor",n),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=n)),r&&(r==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",r),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=r)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&o.setInfo(t.name,l),Y.updateNodeOpt(e)}}class Yo extends Y{constructor(e){super(e);y(this,"canRotate",!0);y(this,"scaleType",ae.all);y(this,"toolsType",T.Rectangle);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}transformData(){const e=fe(this.tmpPoints);return[[e.x,e.y,0],[e.x+e.w,e.y,0],[e.x+e.w,e.y+e.h,0],[e.x,e.y+e.h,0]]}computDrawPoints(e){const{thickness:t}=this.workOptions,i=[];for(const r of e)i.push(new C(...r));const o=fe(i,t),n=[o.x+o.w/2,o.y+o.h/2];return{rect:o,pos:n,points:i.map(r=>r.XY).flat(1)}}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};const h=this.transformData();let d;if(o||n){const g=i?this.fullLayer:this.drawLayer||this.fullLayer;d=this.draw({ps:h,workId:r,layer:g,isDrawing:!0})}if(!o){const g=Date.now();return g-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=g,{type:L.DrawWork,dataType:B.Local,op:h.flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const f=le(d,this.oldRect);return this.oldRect=d,{rect:f,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var c;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.transformData(),i=this.fullLayer,o=this.draw({ps:t,workId:e,layer:i,isDrawing:!1});this.oldRect=o;const n=t.flat(1),r=Ye(n);return(c=this.vNodes)==null||c.setInfo(e,{rect:o,op:n,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:o&&Y.getCenterPos(o,i)}),{rect:o,type:L.FullWork,dataType:B.Local,ops:r,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawing:o,ps:n,replaceId:r,isDrawEraserlines:c=!0}=e,{strokeColor:l,fillColor:u,thickness:h,zIndex:d,scale:f,rotate:g,translate:p,strokeType:m,eraserlines:N}=this.workOptions,v=i.worldPosition,I=i.worldScaling,{points:k,rect:w,pos:S}=this.computDrawPoints(n),b={close:!0,normalize:!0,points:k,lineWidth:h,fillColor:u!=="transparent"&&u||void 0,strokeColor:l,lineJoin:"round",lineCap:"round",lineDash:m===te.Dotted?[1,h*2]:m===te.LongDotted?[h,h*2]:void 0};let x={x:Math.floor(w.x*I[0]+v[0]-Y.SafeBorderPadding),y:Math.floor(w.y*I[1]+v[1]-Y.SafeBorderPadding),w:Math.floor(w.w*I[0]+2*Y.SafeBorderPadding),h:Math.floor(w.h*I[0]+2*Y.SafeBorderPadding)};const P=new he.Group({name:t,id:t,zIndex:d,pos:S,anchor:[.5,.5],size:[w.w,w.h],scale:f,rotate:g,translate:p}),E=new he.Polyline({...b,pos:[0,0]});if(P.appendChild(E),o){const R=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:l,lineWidth:1,scale:[1/I[0],1/I[1]]});P.appendChild(R)}if(N&&(this.scaleType=ae.proportional,this.drawEraserlines({group:P,eraserlines:N,pos:S,layer:i},c)),this.replace(i,r||t,P),f||g||p){const R=P.getBoundingClientRect();x={x:Math.floor(R.x-Y.SafeBorderPadding),y:Math.floor(R.y-Y.SafeBorderPadding),w:Math.floor(R.width+2*Y.SafeBorderPadding),h:Math.floor(R.height+2*Y.SafeBorderPadding)}}return this.isDelete&&P.setAttribute("opacity",0),x}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var h,d;const{op:t,isFullWork:i,replaceId:o,workState:n=z.Done}=e,r=(h=this.workId)==null?void 0:h.toString();if(!r)return;const c=[];for(let f=0;f<t.length;f+=3)c.push([t[f],t[f+1],t[f+2]]);const l=i?this.fullLayer:this.drawLayer||this.fullLayer,u=this.draw({ps:c,workId:r,layer:l,isDrawing:!1,replaceId:o,isDrawEraserlines:n===z.Done});return this.oldRect=u,(d=this.vNodes)==null||d.setInfo(r,{rect:u,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Y.getCenterPos(u,l)}),u}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,strokeType:c}=i,l=o.get(t.name);let u=t;return t.tagName==="GROUP"&&(u=t.children[0]),n&&(u.setAttribute("strokeColor",n),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=n)),r&&(r==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",r),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=r)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&o.setInfo(t.name,l),Y.updateNodeOpt(e)}}class Uo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.Star);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:f,isDrawing:!0})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawing:o,isDrawEraserlines:n=!0}=e,{strokeColor:r,fillColor:c,thickness:l,zIndex:u,vertices:h,innerVerticeStep:d,innerRatio:f,scale:g,rotate:p,translate:m,strokeType:N,eraserlines:v}=this.workOptions,I=i.worldScaling,{rect:k,pos:w,points:S}=this.computDrawPoints(l,h,d,f),b={close:!0,points:S,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:r,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:N===te.Dotted?[1,l*2]:N===te.LongDotted?[l,l*2]:void 0},x={name:t,id:t,zIndex:u,pos:w,anchor:[.5,.5],size:[k.w,k.h]};g&&(x.scale=g),p&&(x.rotate=p),m&&(x.translate=m);const P=new he.Group(x);if(o){const O=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:r,lineWidth:1,scale:[1/I[0],1/I[1]]});P.append(O)}const E=new he.Polyline({...b,pos:[0,0]});P.append(E),v&&(this.scaleType=ae.proportional,this.drawEraserlines({group:P,eraserlines:v,pos:w,layer:i},n)),this.replace(i,t,P);const R=P.getBoundingClientRect();return this.isDelete&&P.setAttribute("opacity",0),{x:Math.floor(R.x-Y.SafeBorderPadding),y:Math.floor(R.y-Y.SafeBorderPadding),w:Math.floor(R.width+Y.SafeBorderPadding*2),h:Math.floor(R.height+Y.SafeBorderPadding*2)}}computDrawPoints(e,t,i,o){const n=fe(this.tmpPoints),r=[Math.floor(n.x+n.w/2),Math.floor(n.y+n.h/2)],c=_o(n.w,n.h),l=Math.floor(Math.min(n.w,n.h)/2),u=o*l,h=[],d=2*Math.PI/t;for(let g=0;g<t;g++){const p=g*d-.5*Math.PI;let m,N;g%i===1?(m=u*c[0]*Math.cos(p),N=u*c[1]*Math.sin(p)):(m=l*c[0]*Math.cos(p),N=l*c[1]*Math.sin(p),h.push(m,N)),h.push(m,N)}return{rect:fe(this.tmpPoints,e),pos:r,points:h}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n)||V.Sub(o,i).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var m;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,toolsType:c,vertices:l,innerVerticeStep:u,innerRatio:h,strokeType:d}=i,f=o.get(t.name),g=f==null?void 0:f.opt;let p=t;return t.tagName==="GROUP"&&(p=t.children[0]),n&&(p.setAttribute("strokeColor",n),g!=null&&g.strokeColor&&(g.strokeColor=n)),r&&(r==="transparent"?p.setAttribute("fillColor","rgba(0,0,0,0)"):p.setAttribute("fillColor",r),g!=null&&g.fillColor&&(g.fillColor=r)),c===T.Star&&(l&&(g.vertices=l),u&&(g.innerVerticeStep=u),h&&(g.innerRatio=h)),d&&(f!=null&&f.opt)&&((m=f.opt)!=null&&m.strokeType)&&(f.opt.strokeType=d),f&&o.setInfo(t.name,{...f,opt:g}),Y.updateNodeOpt(e)}}class Bo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.Polygon);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,{op:r}=t,c=this.workId,l=r==null?void 0:r.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(r[0],r[1])],u=!1):u=this.updateTempPoints(r),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:c,layer:f,isDrawing:!0})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawing:o,isDrawEraserlines:n=!0}=e,{strokeColor:r,fillColor:c,thickness:l,zIndex:u,vertices:h,scale:d,rotate:f,translate:g,strokeType:p,eraserlines:m}=this.workOptions,N=i.worldScaling,{rect:v,pos:I,points:k}=this.computDrawPoints(l,h),w={close:!0,points:k,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:r,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:p===te.Dotted?[1,l*2]:p===te.LongDotted?[l,l*2]:void 0},S={name:t,id:t,zIndex:u,pos:I,anchor:[.5,.5],size:[v.w,v.h]};d&&(S.scale=d),f&&(S.rotate=f),g&&(S.translate=g);const b=new he.Group(S);if(o){const E=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:r,lineWidth:1,scale:[1/N[0],1/N[1]]});b.append(E)}const x=new he.Polyline({...w,pos:[0,0]});b.append(x),m&&(this.scaleType=ae.proportional,this.drawEraserlines({group:b,eraserlines:m,pos:I,layer:i},n)),this.replace(i,t,b);const P=b.getBoundingClientRect();return this.isDelete&&b.setAttribute("opacity",0),{x:Math.floor(P.x-Y.SafeBorderPadding),y:Math.floor(P.y-Y.SafeBorderPadding),w:Math.floor(P.width+Y.SafeBorderPadding*2),h:Math.floor(P.height+Y.SafeBorderPadding*2)}}computDrawPoints(e,t){const i=fe(this.tmpPoints),o=[Math.floor(i.x+i.w/2),Math.floor(i.y+i.h/2)],n=_o(i.w,i.h),r=Math.floor(Math.min(i.w,i.h)/2),c=[],l=2*Math.PI/t;for(let h=0;h<t;h++){const d=h*l-.5*Math.PI,f=r*n[0]*Math.cos(d),g=r*n[1]*Math.sin(d);c.push(f,g)}return{rect:fe(this.tmpPoints,e),pos:o,points:c}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n)||V.Sub(o,i).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,toolsType:c,vertices:l,strokeType:u}=i,h=o.get(t.name),d=h==null?void 0:h.opt;let f=t;return t.tagName==="GROUP"&&(f=t.children[0]),n&&(f.setAttribute("strokeColor",n),d!=null&&d.strokeColor&&(d.strokeColor=n)),r&&(r==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",r),d!=null&&d.fillColor&&(d.fillColor=r)),c===T.Polygon&&l&&(d.vertices=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&o.setInfo(t.name,{...h,opt:d}),Y.updateNodeOpt(e)}}class Qe{static bezier(s,e){const t=[];for(let i=0;i<e.length;i+=4){const o=e[i],n=e[i+1],r=e[i+2],c=e[i+3];o&&n&&r&&c?t.push(...Qe.getBezierPoints(s,o,n,r,c)):o&&n&&r?t.push(...Qe.getBezierPoints(s,o,n,r)):o&&n?t.push(...Qe.getBezierPoints(s,o,n)):o&&t.push(o)}return t}static getBezierPoints(s=10,e,t,i,o){let n=null;const r=[];!i&&!o?n=Qe.oneBezier:i&&!o?n=Qe.twoBezier:i&&o&&(n=Qe.threeBezier);for(let c=0;c<s;c++)n&&r.push(n(c/s,e,t,i,o));return o?r.push(o):i&&r.push(i),r}static oneBezier(s,e,t){const i=e.x+(t.x-e.x)*s,o=e.y+(t.y-e.y)*s;return new C(i,o)}static twoBezier(s,e,t,i){const o=(1-s)*(1-s)*e.x+2*s*(1-s)*t.x+s*s*i.x,n=(1-s)*(1-s)*e.y+2*s*(1-s)*t.y+s*s*i.y;return new C(o,n)}static threeBezier(s,e,t,i,o){const n=e.x*(1-s)*(1-s)*(1-s)+3*t.x*s*(1-s)*(1-s)+3*i.x*s*s*(1-s)+o.x*s*s*s,r=e.y*(1-s)*(1-s)*(1-s)+3*t.y*s*(1-s)*(1-s)+3*i.y*s*s*(1-s)+o.y*s*s*s;return new C(n,r)}}class Fo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.SpeechBalloon);y(this,"ratio",.8);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){var f;const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=(f=t==null?void 0:t.workId)==null?void 0:f.toString();if(!r)return{type:L.None};const{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const g=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:g,isDrawing:!0})}if(!o){const g=Date.now();return g-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=g,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(p=>[...p.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawEraserlines:o=!0}=e,{strokeColor:n,fillColor:r,thickness:c,zIndex:l,placement:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:p}=this.workOptions,{rect:m,pos:N,points:v}=this.computDrawPoints(c,u),I={points:v.map(x=>x.XY),lineWidth:c,fillColor:r!=="transparent"&&r||void 0,strokeColor:n,normalize:!0,className:`${N[0]},${N[1]}`,close:!0,lineJoin:"round",lineCap:"round",lineDash:g===te.Dotted?[1,c*2]:g===te.LongDotted?[c,c*2]:void 0},k={name:t,id:t,zIndex:l,pos:N,anchor:[.5,.5],size:[m.w,m.h]};h&&(k.scale=h),d&&(k.rotate=d),f&&(k.translate=f);const w=new he.Group(k),S=new he.Polyline({...I,pos:[0,0]});w.append(S),p&&(this.scaleType=ae.proportional,this.drawEraserlines({group:w,eraserlines:p,pos:N,layer:i},o)),this.replace(i,t,w);const b=w.getBoundingClientRect();return this.isDelete&&w.setAttribute("opacity",0),{x:Math.floor(b.x-Y.SafeBorderPadding),y:Math.floor(b.y-Y.SafeBorderPadding),w:Math.floor(b.width+Y.SafeBorderPadding*2),h:Math.floor(b.height+Y.SafeBorderPadding*2)}}transformControlPoints(e){const t=fe(this.tmpPoints);switch(e){case"bottom":case"bottomLeft":case"bottomRight":{const i=t.y+t.h*this.ratio;return[new C(t.x,t.y,0),new C(t.x+t.w,t.y,0),new C(t.x+t.w,i,0),new C(t.x,i,0)]}case"top":case"topLeft":case"topRight":{const i=t.y+t.h*(1-this.ratio);return[new C(t.x,i,0),new C(t.x+t.w,i,0),new C(t.x+t.w,t.y+t.h,0),new C(t.x,t.y+t.h,0)]}case"left":case"leftBottom":case"leftTop":{const i=t.x+t.w*(1-this.ratio);return[new C(i,t.y,0),new C(t.x+t.w,t.y,0),new C(t.x+t.w,t.y+t.h,0),new C(i,t.y+t.h,0)]}case"right":case"rightBottom":case"rightTop":{const i=t.x+t.w*this.ratio;return[new C(t.x,t.y,0),new C(i,t.y,0),new C(i,t.y+t.h,0),new C(t.x,t.y+t.h,0)]}}}computDrawPoints(e,t){const i=fe(this.tmpPoints),o=this.transformControlPoints(t),n=Math.floor(i.w*.1),r=Math.floor(i.h*.1),c=[],l=C.Add(o[0],new C(0,r,0)),u=C.Add(o[0],new C(n,0,0)),h=Qe.getBezierPoints(10,l,o[0],u),d=C.Sub(o[1],new C(n,0,0)),f=C.Add(o[1],new C(0,r,0)),g=Qe.getBezierPoints(10,d,o[1],f),p=C.Sub(o[2],new C(0,r,0)),m=C.Sub(o[2],new C(n,0,0)),N=Qe.getBezierPoints(10,p,o[2],m),v=C.Add(o[3],new C(n,0,0)),I=C.Sub(o[3],new C(0,r,0)),k=Qe.getBezierPoints(10,v,o[3],I),w=n*(1-this.ratio)*10,S=r*(1-this.ratio)*10;switch(t){case"bottom":{const P=C.Sub(o[2],new C(n*5-w/2,0,0)),E=C.Sub(o[2],new C(n*5,-S,0)),R=C.Sub(o[2],new C(n*5+w/2,0,0));c.push(E,R,...k,...h,...g,...N,P);break}case"bottomRight":{const P=C.Sub(o[2],new C(n*1.1,0,0)),E=C.Sub(o[2],new C(n*1.1+w/2,-S,0)),R=C.Sub(o[2],new C(n*1.1+w,0,0));c.push(E,R,...k,...h,...g,...N,P);break}case"bottomLeft":{const P=C.Add(o[3],new C(n*1.1+w,0,0)),E=C.Add(o[3],new C(n*1.1+w/2,S,0)),R=C.Add(o[3],new C(n*1.1,0,0));c.push(E,R,...k,...h,...g,...N,P);break}case"top":{const P=C.Sub(o[1],new C(n*5-w/2,0,0)),E=C.Sub(o[1],new C(n*5,S,0)),R=C.Sub(o[1],new C(n*5+w/2,0,0));c.push(E,P,...g,...N,...k,...h,R);break}case"topRight":{const P=C.Sub(o[1],new C(n*1.1,0,0)),E=C.Sub(o[1],new C(n*1.1+w/2,S,0)),R=C.Sub(o[1],new C(n*1.1+w,0,0));c.push(E,P,...g,...N,...k,...h,R);break}case"topLeft":{const P=C.Add(o[0],new C(n*1.1+w,0,0)),E=C.Add(o[0],new C(n*1.1+w/2,-S,0)),R=C.Add(o[0],new C(n*1.1,0,0));c.push(E,P,...g,...N,...k,...h,R);break}case"left":{const P=C.Add(o[0],new C(0,r*5-S/2,0)),E=C.Add(o[0],new C(-w,r*5,0)),R=C.Add(o[0],new C(0,r*5+S/2,0));c.push(E,P,...h,...g,...N,...k,R);break}case"leftTop":{const P=C.Add(o[0],new C(0,r*1.1,0)),E=C.Add(o[0],new C(-w,r*1.1+S/2,0)),R=C.Add(o[0],new C(0,r*1.1+S,0));c.push(E,P,...h,...g,...N,...k,R);break}case"leftBottom":{const P=C.Sub(o[3],new C(0,r*1.1+S,0)),E=C.Sub(o[3],new C(w,r*1.1+S/2,0)),R=C.Sub(o[3],new C(0,r*1.1,0));c.push(E,P,...h,...g,...N,...k,R);break}case"right":{const P=C.Add(o[1],new C(0,r*5-S/2,0)),E=C.Add(o[1],new C(w,r*5,0)),R=C.Add(o[1],new C(0,r*5+S/2,0));c.push(E,R,...N,...k,...h,...g,P);break}case"rightTop":{const P=C.Add(o[1],new C(0,r*1.1,0)),E=C.Add(o[1],new C(w,r*1.1+S/2,0)),R=C.Add(o[1],new C(0,r*1.1+S,0));c.push(E,R,...N,...k,...h,...g,P);break}case"rightBottom":{const P=C.Sub(o[2],new C(0,r*1.1+S,0)),E=C.Sub(o[2],new C(-w,r*1.1+S/2,0)),R=C.Sub(o[2],new C(0,r*1.1,0));c.push(E,R,...N,...k,...h,...g,P);break}}const b=fe(this.tmpPoints,e),x=[Math.floor(b.x+b.w/2),Math.floor(b.y+b.h/2)];return{rect:b,pos:x,points:c}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n)||V.Sub(o,i).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,toolsType:c,placement:l,strokeType:u}=i,h=o.get(t.name),d=h==null?void 0:h.opt;let f=t;return t.tagName==="GROUP"&&(f=t.children[0]),n&&(f.setAttribute("strokeColor",n),d!=null&&d.strokeColor&&(d.strokeColor=n)),r&&(r==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",r),d!=null&&d.fillColor&&(d.fillColor=r)),c===T.SpeechBalloon&&l&&(d.placement=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&o.setInfo(t.name,{...h,opt:d}),Y.updateNodeOpt(e)}}var Hf=pt,Qf=Je,Gf="[object Boolean]";function Zf(a){return a===!0||a===!1||Qf(a)&&Hf(a)==Gf}var qf=Zf;const mt=Ct(qf);class Vo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.both);y(this,"toolsType",T.Straight);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"straightTipWidth");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.straightTipWidth=this.workOptions.thickness/2,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:f})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawEraserlines:o=!0}=e,{strokeColor:n,thickness:r,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f}=this.workOptions,g=i.worldPosition,p=i.worldScaling,{d:m,rect:N,isDot:v}=this.computDrawPoints(r,d),I=[N.x+N.w/2,N.y+N.h/2],k=new he.Group({pos:I,anchor:[.5,.5],size:[N.w,N.h],name:t,id:t,normalize:!0,zIndex:c}),w={pos:[0,0],normalize:!0,d:m,fillColor:n,strokeColor:n,lineDash:d===te.Dotted&&!v?[1,r*2]:d===te.LongDotted&&!v?[r,r*2]:void 0,lineCap:d===te.Normal||v?void 0:"round",lineWidth:d===te.Normal||v?0:r};l&&(w.scale=l),u&&(w.rotate=u),h&&(w.translate=h);const S=new he.Path(w);k.append(S),f&&(this.scaleType=ae.proportional,this.drawEraserlines({group:k,eraserlines:f,pos:I,layer:i},o)),this.replace(i,t,k);let b={x:Math.floor(N.x*p[0]+g[0]-Y.SafeBorderPadding),y:Math.floor(N.y*p[1]+g[1]-Y.SafeBorderPadding),w:Math.floor(N.w*p[0]+2*Y.SafeBorderPadding),h:Math.floor(N.h*p[1]+2*Y.SafeBorderPadding)};if(u||l||h){const x=S.getBoundingClientRect();b={x:Math.floor(x.x-Y.SafeBorderPadding),y:Math.floor(x.y-Y.SafeBorderPadding),w:Math.floor(x.width+Y.SafeBorderPadding*2),h:Math.floor(x.height+Y.SafeBorderPadding*2)}}return this.isDelete&&k.setAttribute("opacity",0),b}computDrawPoints(e,t){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.straightTipWidth?this.computFullPoints(e,t):this.computDotPoints(e)}computFullPoints(e,t){const i=C.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),o=C.Per(i).mul(e/2),n=V.Sub(this.tmpPoints[0],o),r=V.Add(this.tmpPoints[0],o),c=V.Sub(this.tmpPoints[1],o),l=V.Add(this.tmpPoints[1],o),u=V.GetSemicircleStroke(this.tmpPoints[1],c,-1,8),h=V.GetSemicircleStroke(this.tmpPoints[0],r,-1,8),d=[n,c,...u,l,r,...h];let f;return t!==te.Normal?f=_e(this.tmpPoints,!1):f=_e(d,!0),{d:f,rect:fe(d),isDot:!1,pos:this.tmpPoints[0].XY}}computDotPoints(e){const t=V.GetDotStroke(this.tmpPoints[0],e/2,8);return{d:_e(t,!0),rect:fe(t),isDot:!0,pos:this.tmpPoints[0].XY}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,strokeType:r}=i,c=o.get(t.name);return n&&(t.tagName==="GROUP"?t.children.forEach(h=>{h.setAttribute("strokeColor",n),h.getAttribute("fillColor")&&h.setAttribute("fillColor",n)}):(t.setAttribute("strokeColor",n),t.setAttribute("fillColor",n)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=n)),r&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=r),c&&o.setInfo(t.name,c),Y.updateNodeOpt(e)}}const st=class st extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.proportional);y(this,"toolsType",T.Text);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");this.workOptions=e.toolsOpt}consume(){return{type:L.None}}consumeAll(){return{type:L.None}}consumeService(){}async draw(e){const{workId:t,layer:i,isDrawLabel:o}=e,{boxSize:n,boxPoint:r,zIndex:c}=this.workOptions,l=i.worldPosition,u=i.worldScaling;if(!r||!n)return;const h={name:t,id:t,pos:[r[0],r[1]],anchor:[0,0],size:n,zIndex:c},d=new he.Group(h),f={x:r[0],y:r[1],w:n[0],h:n[1]},g={x:Math.floor(f.x*u[0]+l[0]),y:Math.floor(f.y*u[1]+l[1]),w:Math.floor(f.w*u[0])+2,h:Math.floor(f.h*u[1])+2};if(this.replace(i,t,d),o&&i&&this.workOptions.text){const p=await st.createLabels(this.workOptions,i,g),{labels:m,maxWidth:N}=p;d.append(...m),g.w=Math.ceil(Math.max(N*i.worldScaling[0],g.w))}return g}async consumeServiceAsync(e){var l,u,h,d;const t=(l=this.workId)==null?void 0:l.toString();if(!t)return;const{isFullWork:i,replaceId:o,isDrawLabel:n}=e;this.oldRect=o&&((h=(u=this.vNodes)==null?void 0:u.get(o))==null?void 0:h.rect)||void 0;const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=await this.draw({workId:t,layer:r,isDrawLabel:typeof n>"u"&&this.workOptions.workState===z.Done||n});return(d=this.vNodes)==null||d.setInfo(t,{rect:c,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}updataOptService(){}async updataOptServiceAsync(e,t){var g,p;if(!this.workId)return;const i=this.workId.toString(),{fontColor:o,fontBgColor:n,bold:r,italic:c,lineThrough:l,underline:u,zIndex:h}=e,d=(g=this.vNodes)==null?void 0:g.get(i);if(!d)return;o&&(d.opt.fontColor=o),n&&(d.opt.fontBgColor=n),r&&(d.opt.bold=r),c&&(d.opt.italic=c),mt(l)&&(d.opt.lineThrough=l),mt(u)&&(d.opt.underline=u),De(h)&&(d.opt.zIndex=h),this.oldRect=d.rect;const f=await this.draw({workId:i,layer:this.fullLayer,isDrawLabel:typeof t>"u"&&this.workOptions.workState===z.Done||t});return(p=this.vNodes)==null||p.setInfo(i,{rect:f,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:f&&Y.getCenterPos(f,this.fullLayer)}),f}clearTmpPoints(){this.tmpPoints.length=0}static getSafetySnippetRatio(e){const t=(e==null?void 0:e.parent).displayRatio||1,i=Math.ceil(e.worldScaling[0]*10)/10;let o=i;return i>=.2&&i<1?o=i*t:i<=2&&i>=1?o=i*t*1.6:i>2&&i<=3?o=i*t*1.4:i>3&&i<=4?o=i*t*.8:i>4&&(o=i*t*.6),Math.floor(o*1e3)/1e3}static getSafetySnippetFontLength(e){return Math.floor(st.textImageSnippetSize*3/4/e)||1}static async createLabels(e,t,i){var R;const o=[],{x:n,y:r}=i,{width:c,height:l}=(R=t.parent)==null?void 0:R.parent,u=nt(e.text),h=u.length,{fontSize:d,lineHeight:f,bold:g,textAlign:p,italic:m,fontFamily:N,verticalAlign:v,fontColor:I,fontBgColor:k,underline:w,lineThrough:S}=e,b=st.getSafetySnippetRatio(t)||1,x=Math.floor(d*b),P=st.getSafetySnippetFontLength(x);let E=0;for(let O=0;O<h;O++){const D=u[O],A=f||x*1.5;if(D){const G=kM(D),ne=[0,0],q=[0,d*1.2];v==="middle"&&(ne[1]=O*d*1.2+5);const Z=[0,-d*.15];ne[0]=5;const H=Math.sin(Math.PI/180*20);let _=0;const ie=[];let K=0;for(;K<G;){p==="left"&&(Z[0]=_),K===0&&m==="italic"&&(Z[0]=Z[0]-H/2*d);const ee=D.slice(K,K+P),ce={anchor:[0,0],pos:Z,text:ee,fontFamily:N,fontSize:x,lineHeight:A,strokeColor:I,fontWeight:g,fillColor:I,textAlign:p,fontStyle:m,scale:[1/b,1/b]},J=new he.Label(ce),$=await J.textImageReady;let de=!0;if($){const ge=$.rect&&$.rect[2],Re=$.rect&&$.rect[3];if(ge&&Re){const ve=ge/b,we=Re/b;_=ve+_,m==="italic"&&(g==="bold"?_=_-H*d*1.2:_=_-H*d),((Z[0]+ne[0]+ve)*t.worldScaling[0]+n<=0||(Z[0]+ne[0])*t.worldScaling[0]+n>=c||(Z[1]+ne[1]+we)*t.worldScaling[1]+r<=0||(Z[1]+ne[1])*t.worldScaling[1]+r>=l)&&(J.disconnect(),de=!1),de&&ie.push(J)}}K+=P}q[0]=_,m==="italic"&&(q[0]=q[0]+H*d),E=Math.max(E,q[0]);let ue=!0;if(((ne[0]+q[0])*t.worldScaling[0]+n<=0||ne[0]*t.worldScaling[0]+n>=c||(ne[1]+q[1])*t.worldScaling[0]+r<=0||ne[1]*t.worldScaling[1]+r>=l)&&(ue=!1),ue){if(w){const J=Math.floor(d/10),$={normalize:!1,pos:[0,d*1.1+J/2],lineWidth:J,points:[0,0,Math.ceil(q[0]),0],strokeColor:I,className:"underline"},de=new he.Polyline($);ie.push(de)}if(S){const J={normalize:!1,pos:[0,d*1.2/2],lineWidth:Math.floor(d/10),points:[0,0,Math.ceil(q[0]),0],strokeColor:I,className:"lineThrough"},$=new he.Polyline(J);ie.push($)}const ee={pos:ne,anchor:[0,0],size:q,bgcolor:k},ce=new he.Group(ee);ce.append(...ie),o.push(ce)}}}return{labels:o,maxWidth:E}}static updateNodeOpt(e){const{node:t,opt:i,vNodes:o,targetNode:n}=e,{fontBgColor:r,fontColor:c,translate:l,originPoint:u,scenePoint:h,scale:d,bold:f,italic:g,lineThrough:p,underline:m,fontSize:N,textInfos:v,zIndex:I}=i,k=n&&ke(n)||o.get(t.name);if(!k||!t.parent)return;const S=k.opt;if(De(I)&&(t.setAttribute("zIndex",I),k.opt.zIndex=I),c&&S.fontColor&&(S.fontColor=c,t.children.forEach(b=>{b.tagName==="GROUP"&&b.children.forEach(x=>{x.tagName==="LABEL"?(x.setAttribute("fillColor",c),x.setAttribute("strokeColor",c)):x.tagName==="POLYLINE"&&x.setAttribute("strokeColor",c)})})),r&&S.fontBgColor&&(S.fontBgColor=r,t.children.forEach(b=>{b.tagName==="GROUP"&&b.setAttribute("bgcolor",r)})),f&&(S.bold=f),g&&(S.italic=g),mt(p)&&(S.lineThrough=p),mt(m)&&(S.underline=m),N&&(S.fontSize=N),u&&h&&d&&n&&S.boxPoint){const b=v==null?void 0:v.get(t.name);if(b){const{fontSize:R,boxSize:O}=b;S.boxSize=O||S.boxSize,S.fontSize=R||S.fontSize}const x=[S.boxPoint[0],S.boxPoint[1]];oi(S.boxPoint,h,d,l);const P=[k.op[0],k.op[1]],E=[P[0]-x[0],P[1]-x[1]];if(k.centerPos=[k.centerPos[0]+E[0],k.centerPos[1]+E[1]],k.opt.eraserlines)for(const R of Object.values(k.opt.eraserlines)){const{op:O,thickness:D}=R;R.thickness=D*Math.max(d[0],d[1]);for(let A=0;A<O.length;A++)ni(O[A],h,d,l)}}else if(l&&S.boxPoint&&(S.boxPoint=[S.boxPoint[0]+l[0],S.boxPoint[1]+l[1]],k.centerPos=[k.centerPos[0]+l[0],k.centerPos[1]+l[1]],k.opt.eraserlines))for(const b of Object.values(k.opt.eraserlines)){const{op:x}=b;for(let P=0;P<x.length;P++){const E=x[P].map((R,O)=>O%2?R+l[1]:R+l[0]);b.op[P]=E}}return k&&o.setInfo(t.name,k),k==null?void 0:k.rect}static getRectFromLayer(e,t){const i=e.getElementsByName(t)[0];if(i){const o=i.getBoundingClientRect();let n={x:Math.floor(o.x),y:Math.floor(o.y),w:Math.floor(o.width+2),h:Math.floor(o.height+2)};return i.children.forEach(r=>{if(r.tagName==="GROUP"){const c=i.getBoundingClientRect();n=le(n,{x:Math.floor(c.x),y:Math.floor(c.y),w:Math.floor(c.width+2),h:Math.floor(c.height+2)})}}),n}}};y(st,"textImageSnippetSize",1024*4),y(st,"SafeBorderPadding",30);let ts=st;const vt=class vt extends Y{constructor(e,t){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"toolsType",T.PencilEraser);y(this,"serviceWork");y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"worldPosition");y(this,"worldScaling");y(this,"eraserRect");y(this,"eraserPolyline");this.serviceWork=t,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}consumeService(){}createEraserRect(e){const t=e[0]*this.worldScaling[0]+this.worldPosition[0],i=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:o,height:n}=vt.eraserSizes[this.workOptions.thickness];this.eraserRect={x:t-o*.5,y:i-n*.5,w:o,h:n},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const t=new C(this.tmpPoints[0],this.tmpPoints[1]),i=new C(this.tmpPoints[2],this.tmpPoints[3]),o=C.Sub(i,t).uni(),n=C.Dist(t,i),{width:r,height:c}=vt.eraserSizes[this.workOptions.thickness],l=Math.min(r,c),u=Math.round(n/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=C.Mul(o,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,t){const i=new C(e[0],e[1]),o=new C(t[0],t[1]),{width:n,height:r}=vt.eraserSizes[this.workOptions.thickness];return C.Dist(i,o)<Math.hypot(n,r)*.5}cutPolyline(e,t){let i=[t],o=0;for(;o<e.length;){const c=e[o];if(c.length<2)break;i=n(i,c),o++}return i;function n(c,l){const u=c;for(let h=0;h<c.length;h++){const d=c[h],f=d.findIndex((g,p)=>p<d.length-1?r([g,d[p+1]],[l[0],l[1]]):!1);if(f!==-1&&f>-1){const g=[],p=d.slice(0,f+1);if(C.Equals(d[f],l[0])||p.push(l[0].clone().setz(d[f].z)),p.length>1&&g.push(p),f+l.length-1<d.length-1){const m=f+l.length-1,N=d.slice(m),v=l[l.length-1];C.Equals(d[m],v)||N.unshift(v.clone().setz(d[m].z)),N.length>1&&g.push(N)}return u.splice(h,1,...g),u}}return u}function r(c,l){const u=C.Sub(c[1],c[0]),h=C.Sub(l[1],l[0]),d=C.Sub(l[0],c[0]);return Math.abs(C.Cpr(u,h))<.1&&Math.abs(C.Cpr(u,d))<.1}}isSamePoint(e,t){return e[0]===t[0]&&e[1]===t[1]}translateIntersect(e){const t=[];for(let i=0;i<e.length;i++){const o=e[i].filter((c,l,u)=>!(l>0&&this.isSamePoint(c,u[l-1]))),n=[];let r=0;for(;r<o.length;){const c=o[r],l=new C(c[0],c[1]);n.push(l),r++}t.push(n)}return t}isLineEraser(e,t){return!(e===T.Pencil&&!t)}remove(e){const{curNodeMap:t,removeIds:i,newWorkDatas:o}=e;let n;for(const[r,c]of t.entries())if(c.rect&&this.eraserRect&&this.eraserPolyline&&Yt(this.eraserRect,c.rect)){const{op:l,toolsType:u}=c,h=this.isLineEraser(u,!1),d=[],f=[];for(let p=0;p<l.length;p+=3){const m=new C(l[p]*this.worldScaling[0]+this.worldPosition[0],l[p+1]*this.worldScaling[1]+this.worldPosition[1],l[p+2]);f.push(m),d.push(new V(m.x,m.y))}const g=d.length&&fe(d)||c.rect;if(Yt(g,this.eraserRect)){if(f.length>1){const p=Us.polyline(f.map(m=>m.XY),this.eraserPolyline);if(p.length&&(i.add(c.name),!h)){const m=this.translateIntersect(p),N=this.cutPolyline(m,f);for(let v=0;v<N.length;v++){const I=`${r}_s_${v}`,k=[];N[v].forEach(w=>{k.push((w.x-this.worldPosition[0])/this.worldScaling[0],(w.y-this.worldPosition[1])/this.worldScaling[1],w.z)}),c.opt&&c.toolsType&&this.vNodes&&(this.vNodes.setInfo(I,{rect:g,op:k,opt:c.opt,canRotate:c.canRotate,scaleType:c.scaleType,toolsType:c.toolsType}),o.set(I,{workId:I,op:k,opt:c.opt,toolsType:c.toolsType}))}}}else i.add(c.name);n=le(n,g)}}return i.forEach(r=>{var c;return(c=this.vNodes)==null?void 0:c.delete(r)}),n&&(n.x-=Y.SafeBorderPadding,n.y-=Y.SafeBorderPadding,n.w+=Y.SafeBorderPadding*2,n.h+=Y.SafeBorderPadding*2),n}consume(e){const{op:t,disableEraseImage:i,disableEraseText:o}=e.data;if(!t||t.length===0)return{type:L.None,...this.baseConsumeResult};const n=this.tmpPoints.length;if(n>1&&this.isNear([t[0],t[1]],[this.tmpPoints[n-2],this.tmpPoints[n-1]]))return{type:L.None,...this.baseConsumeResult};n<3?this.tmpPoints.push(t[0],t[1]):this.tmpPoints.splice(2,2,t[0],t[1]);const r=this.computRectCenterPoints();let c;const l=new Set,u=new Map;if(!this.vNodes)return{type:L.None,...this.baseConsumeResult};this.vNodes.setTarget();const h=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.getLastTarget(),{disableEraseImage:i,disableEraseText:o}));for(let d=0;d<r.length-1;d+=2){this.createEraserRect(r.slice(d,d+2));const f=this.remove({curNodeMap:h,removeIds:l,newWorkDatas:u});c=le(c,f)}if(this.vNodes.deleteLastTarget(),c&&l.size){for(const d of u.keys())l.has(d)&&u.delete(d);return{type:L.RemoveNode,rect:c,removeIds:[...l],newWorkDatas:u}}return{type:L.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var t;if(this.serviceWork){const i=ke(e),o=this.serviceWork.selectorWorkShapes,n=this.serviceWork.workShapes;for(const r of o.values())if((t=r.selectIds)!=null&&t.length)for(const c of r.selectIds)i.delete(c);for(const r of n.keys())i.delete(r);return i}return e}};y(vt,"eraserSizes",_s);let ss=vt;const It=class It extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"toolsType",T.BitMapEraser);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"worldPosition");y(this,"worldScaling");y(this,"eraserRect");y(this,"eraserPolyline");y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"syncIndex",0);y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling,this.syncTimestamp=0}combineConsume(){if(this.tmpPoints.length<2)return{type:L.None};const{thickness:e}=this.workOptions,{width:t,height:i}=It.eraserSizes[e],o=Math.max(t,i)/this.worldScaling[0],n=this.drawLayer||this.fullLayer,r=this.workId,c={name:r};return{rect:this.draw({attrs:c,consumePoints:this.tmpPoints,replaceId:r,layer:n,thickness:o}),type:L.DrawWork,dataType:B.Local}}consumeService(e){const{op:t,isFullWork:i,replaceId:o}=e;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3){const d=new V(t[h],t[h+1],t[h+2]);if(this.tmpPoints.length>0){const f=this.tmpPoints[this.tmpPoints.length-1],g=C.Sub(d,f).uni();d.setv(g)}this.tmpPoints.push(d)}if(this.tmpPoints.length<2)return;const n=this.tmpPoints[0].z*2,r=i?this.fullLayer:this.drawLayer||this.fullLayer,l={name:this.workId};return this.draw({attrs:l,consumePoints:this.tmpPoints,layer:r,thickness:n,replaceId:o})}updateTempPoints(e,t){let i=this.tmpPoints.length-1;const o=Date.now();for(let n=0;n<e.length;n+=2){const r=this.tmpPoints.length,c=new V(e[n],e[n+1]);if(r===0){this.tmpPoints.push(c);continue}const l=r-1,u=this.tmpPoints[l],h=C.Sub(c,u).uni();c.isNear(u,t/2)||(C.Equals(h,u.v,.02)&&(this.tmpPoints.pop(),i--),c.setv(h),c.setT(o),this.tmpPoints.push(c))}return Math.max(i,0)}getChangeNodes(e,t){const i=new Map,o=new Set;let n;if(!this.vNodes)return{willDeleteNodes:o,willUpdateNodes:i,rect:n};const r=this.worldPosition;let c=fe(this.tmpPoints,e);c=js(c,r),c=gM(c,this.worldScaling,r);const{nodeRange:l}=this.vNodes.getRectIntersectRange(c);if(!l.size)return{willDeleteNodes:o,willUpdateNodes:i,rect:n};const u=this.computEraserPointLines(this.tmpPoints);for(const[h,d]of l.entries()){if(d.toolsType===T.Text||d.toolsType===T.Image)continue;let f=js(d.rect,[-r[0],-r[1]]);f={x:f.x/this.worldScaling[0],y:f.y/this.worldScaling[1],w:f.w/this.worldScaling[0],h:f.h/this.worldScaling[1]};const g=[f.x,f.y,f.x+f.w,f.y+f.h],p=[],m=[];for(const v of u)Us.polyline(v,g,p);if(p.length&&d.opt)for(const v of p){const I=[];for(let k=0;k<v.length;k++)k!==0&&it(v[k],v[k-1])||I.push(...v[k]);m.push(I)}if(d.opt.eraserlines||(d.opt.eraserlines=[]),d.opt.eraserlines){if(d.opt.eraserlines.push({op:m,thickness:e}),t){const{toolsType:v}=d,I=t.createWorkShapeNode({workId:h,toolsType:v,toolsOpt:d.opt});I==null||I.setWorkId(h);const k=I==null?void 0:I.consumeService({op:d.op,isFullWork:!0,replaceId:h});if(n=le(n,k),I!=null&&I.isDelete){t.removeNode(h),o.add(h);continue}}i.set(h,d)}}return{willUpdateNodes:i,willDeleteNodes:o,rect:n}}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n,removeDrawCount:r,drawCount:c}=e,{op:l}=t;if(!l||l.length===0)return{type:L.None,...this.baseConsumeResult};const{thickness:u}=this.workOptions,{width:h,height:d}=It.eraserSizes[u],f=Math.max(h,d)/this.worldScaling[0],g=this.tmpPoints.length,p=this.tmpPoints[this.tmpPoints.length-1],m=this.updateTempPoints(l,f),N=this.tmpPoints[this.tmpPoints.length-1];if(g===this.tmpPoints.length&&N.equalsXY(p.x,p.y))return{type:L.None,...this.baseConsumeResult};this.syncIndex=Math.min(this.syncIndex,m,Math.max(0,this.tmpPoints.length-2));const v={name:this.workId,id:De(c)&&c.toString()||void 0},I=this.syncIndex;this.syncTimestamp===0&&(this.syncTimestamp=Date.now());let k=!1,w;const S=this.tmpPoints.slice(m);if(o||n){const x=i?this.fullLayer:this.drawLayer||this.fullLayer;w=this.draw({attrs:v,consumePoints:S,layer:x,removeDrawCount:r,thickness:f})}if(o)return m>10&&this.tmpPoints.splice(0,m-10),{rect:w,type:L.DrawWork,dataType:B.Local};S[0].t-this.syncTimestamp>this.syncUnitTime&&(k=!0,this.syncTimestamp=S[0].t,this.syncIndex=this.tmpPoints.length);const b=[];return this.tmpPoints.slice(I).forEach(x=>{b.push(x.x,x.y,f/2)}),{...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local,rect:w,op:k?b:void 0,index:k?I*3:void 0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{attrs:t,consumePoints:i,layer:o,thickness:n,replaceId:r,removeDrawCount:c}=e;c&&this.removeDrawCountNodes(o,c);let l=fe(i,n);l={x:Math.floor(l.x*this.worldScaling[0]+this.worldPosition[0]-Y.SafeBorderPadding),y:Math.floor(l.y*this.worldScaling[1]+this.worldPosition[1]-Y.SafeBorderPadding),w:Math.floor(l.w*this.worldScaling[0]+2*Y.SafeBorderPadding),h:Math.floor(l.h*this.worldScaling[1]+2*Y.SafeBorderPadding)};const u=new he.Group({...t,normalize:!0,pos:[0,0],anchor:[.5,.5],zIndex:9999,bgcolor:"rgba(136,136,136,0.3)"}),h=this.computEraserPointLines(i),d=[];for(const f of h)d.push({op:f,thickness:n});for(const f of d){const{thickness:g,op:p}=f,m=p.reduce((w,S,b,x)=>b>0&&x[b-1][0]===S[0]&&x[b-1][1]===S[1]?w:w.concat(S[0],S[1]),[]),N=this.computEraserPoints(m,g),v=_e(N,!0),I={pos:[0,0],d:v,fillColor:"rgba(136,136,136,0.3)"},k=new he.Path(I);u.append(k),u.seal()}return this.replace(o,r,u),l}computEraserPointLines(e,t=60){const i=[];let o=0;const n=360-t;for(let r=1;r<e.length;r++){const c=e[r-1],l=e[r];if(r===1&&o===0&&(i[o]=[c.XY]),i[o].push(l.XY),r<e.length-1){const u=l.getAngleByPoints(c,e[r+1]);(u<t||u>n)&&(o++,i[o]=[l.XY])}}return e.length===1&&i.length===0&&i.push([e[0].XY,e[0].XY]),i}consumeAll(e){const{workerEngine:t}=e;if(this.replace(this.fullLayer,this.workId),!this.tmpPoints.length)return{type:L.None,...this.baseConsumeResult};const{thickness:i}=this.workOptions,{width:o,height:n}=It.eraserSizes[i],r=Math.max(o,n)/this.worldScaling[0],{willDeleteNodes:c,willUpdateNodes:l,rect:u}=this.getChangeNodes(r,t);if(c.size===0&&l.size===0)return{type:L.FullWork,...this.baseConsumeResult,rect:u};const h=[];this.tmpPoints.map(f=>{h.push(f.x,f.y,r/2)});const d=Ye(h);return{...this.baseConsumeResult,type:L.FullWork,dataType:B.Local,rect:u,ops:d,willUpdateNodes:l,willDeleteNodes:c}}clearTmpPoints(){this.tmpPoints.length=0}};y(It,"eraserSizes",_s);let is=It;function $o(a){switch(a){case T.Arrow:return Ro;case T.Pencil:return Ao;case T.Straight:return Vo;case T.Ellipse:return Wo;case T.Polygon:case T.Triangle:return Bo;case T.Star:case T.Rhombus:return Uo;case T.Rectangle:return Yo;case T.SpeechBalloon:return Fo;case T.Text:return ts;case T.LaserPen:return jo;case T.Eraser:return Kt;case T.PencilEraser:return ss;case T.BitMapEraser:return is;case T.Selector:return es;case T.Image:return Wt}}function gs(a,s){const{toolsType:e,...t}=a;switch(e){case T.Arrow:return new Ro(t);case T.Pencil:return new Ao(t);case T.Straight:return new Vo(t);case T.Ellipse:return new Wo(t);case T.Polygon:case T.Triangle:return new Bo(t);case T.Star:case T.Rhombus:return new Uo(t);case T.Rectangle:return new Yo(t);case T.SpeechBalloon:return new Fo(t);case T.Text:return new ts(t);case T.LaserPen:return new jo(t);case T.Eraser:return new Kt(t,s);case T.BitMapEraser:return new is(t);case T.PencilEraser:return new ss(t,s);case T.Selector:return t.vNodes?new es({...t,vNodes:t.vNodes,drawLayer:t.fullLayer}):void 0;case T.Image:return new Wt(t);default:return}}function Ho(a){const s=[],e=["PATH","SPRITE","POLYLINE","RECT","ELLIPSE","LABEL"];for(const t of a){if(t.tagName==="GROUP"&&t.children.length)return Ho(t.children);t.tagName&&e.includes(t.tagName)&&s.push(t)}return s}const Xf="cursorhover",ys=20,pe="mainView";class Qo{constructor(s,e){y(this,"viewId");y(this,"scene");y(this,"fullLayer");y(this,"curNodeMap",new Map);y(this,"targetNodeMap",[]);y(this,"highLevelIds");y(this,"canClearUids");y(this,"localUid");this.viewId=s,this.scene=e}init(s){this.fullLayer=s}get(s){return this.curNodeMap.get(s)}setLocalUid(s){this.localUid=s}getLocalUid(){return this.localUid}setCanClearUids(s){this.canClearUids=s}getCanClearUids(){return this.canClearUids}getCanEraserNodes(s,e){const t=new Map;for(const[i,o]of s.entries())o.toolsType===T.Image&&(o.opt.locked||e&&e.disableEraseImage)||o.toolsType===T.Text&&(o.opt.workState===z.Doing||o.opt.workState===z.Start||e&&e.disableEraseText)||this.isCanClearWorkId(i)&&t.set(i,o);return t}getNodesByType(s){const e=new Map;return this.curNodeMap.forEach((t,i)=>{t.toolsType===s&&e.set(i,t)}),e}gethasEraserNodes(){const s=new Map;return this.curNodeMap.forEach((e,t)=>{var i;(i=e.opt.eraserlines)!=null&&i.length&&s.set(t,e)}),s}hasRenderNodes(){return!0}has(s){return this.curNodeMap.has(s)}setInfo(s,e){const t=this.curNodeMap.get(s)||{name:s,rect:e.rect};e.rect&&(t.rect=ke(e.rect)),e.op&&mM(e.op)&&(t.op=ke(e.op)),e.canRotate&&(t.canRotate=e.canRotate),e.scaleType&&(t.scaleType=e.scaleType),e.opt&&(t.opt=ke(e.opt)),e.toolsType&&(t.toolsType=e.toolsType),e.centerPos&&(t.centerPos=ke(e.centerPos)),mt(e.isSelected)&&(t.isSelected=e.isSelected),t.rect?this.curNodeMap.set(s,t):this.curNodeMap.delete(s)}selected(s){this.setInfo(s,{isSelected:!0})}unSelected(s){this.setInfo(s,{isSelected:!1})}delete(s){this.curNodeMap.delete(s)}clear(){this.curNodeMap.clear(),this.targetNodeMap.length=0}getRectIntersectRange(s,e=!0,t=!0){let i;const o=new Map;for(const[n,r]of this.curNodeMap.entries())if(Yt(s,r.rect)){if(e&&r.toolsType===T.Image&&r.opt.locked||t&&r.toolsType===T.Text&&(r.opt.workState===z.Doing||r.opt.workState===z.Start))continue;i=le(i,r.rect),o.set(n,r)}return{rectRange:i,nodeRange:o}}getNodeRectFormShape(s,e){const t=$o(e.toolsType);return this.fullLayer&&(t==null?void 0:t.getRectFromLayer(this.fullLayer,s))}updateNodeRect(s){const e=this.curNodeMap.get(s);if(e){const t=this.getNodeRectFormShape(s,e);if(!t){this.curNodeMap.delete(s);return}e.rect=t,this.curNodeMap.set(s,e)}}updateHighLevelNodesRect(s){this.highLevelIds=s;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var s;for(const e of this.curNodeMap.keys())(s=this.highLevelIds)!=null&&s.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}setTargetAssignKeys(s){const e=new Map;for(const t of s){const i=this.curNodeMap.get(t);i&&e.set(t,ke(i))}return this.targetNodeMap.push(ke(e)),this.targetNodeMap.length-1}setTarget(){return this.targetNodeMap.push(ke(this.curNodeMap)),this.targetNodeMap.length-1}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(s){return this.targetNodeMap[s]}deleteTarget(s){this.targetNodeMap.length=s}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(s){return s.split(je).length===1}isCanClearWorkId(s){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(Yd(this.canClearUids)){const e=s.split(je);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}class Jf{constructor(s,e,t){y(this,"viewId");y(this,"scene");y(this,"fullLayer");y(this,"vNodes");y(this,"dpr");y(this,"contextType");y(this,"opt");y(this,"cameraOpt");y(this,"isSafari",!1);y(this,"combinePostMsg",new Set);y(this,"workerTaskId");y(this,"protectedTask");y(this,"hasPriorityDraw",!0);y(this,"delayPostDoneResolve");y(this,"cacheImages",new Map);y(this,"imageResolveMap",new Map);y(this,"taskUpdateCameraId");y(this,"debounceUpdateCameraId");var i,o;if(this.viewId=s,this.opt=e,this.dpr=e.dpr,this.contextType=this.getSupportContextType(t,(i=e==null?void 0:e.offscreenCanvasOpt)==null?void 0:i.contextType),!this.contextType)throw new Error("Sorry, your browser doesn't support canvas context type 2d or webgl");try{this.createRenderLayer(e)}catch{if(this.contextType!=="2d")this.contextType="2d",(o=this.scene)==null||o.disconnect(),this.createRenderLayer(e);else throw new Error(`Sorry, your browser doesn't support canvas context type ${this.contextType}`)}this.vNodes=new Qo(s,this.scene)}createRenderLayer(s){this.scene=this.createScene(s.offscreenCanvasOpt);const e=Se.bufferSize.full,t=Se.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...s.layerOpt,bufferSize:this.viewId===pe?e:t*2})}async updateDpr(s){this.dpr=s,this.scene.displayRatio=s}getCachedImages(s){var e;return(e=this.cacheImages.get(s))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(s){for(const[e,t]of this.cacheImages.entries())if(e===s&&t.imageBitmap)return t.imageBitmap}deleteCachedImagesByWorkId(s,e){for(const[t,i]of this.cacheImages.entries())e&&t===e||i.workId===s&&(i.imageBitmap.close(),this.cacheImages.delete(t))}clearCacheImages(){this.cacheImages.forEach(s=>s.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:s})=>{s&&clearTimeout(s)}),this.imageResolveMap.clear()}setHasPriorityDraw(s){this.hasPriorityDraw=s}getPriorityDraw(){return this.hasPriorityDraw}setIsSafari(s){this.isSafari=s}async on(s){const{msgType:e,toolsType:t,opt:i,imageSrc:o,imageBitmap:n,workId:r,dpr:c}=s;switch(e){case L.UpdateDpr:De(c)&&await this.updateDpr(c);break;case L.UpdateCamera:await this.updateCamera(s);break;case L.Destroy:this.destroy();break;case L.Clear:await this.clearAll();break;case L.UpdateTools:if(t&&i){const l={toolsType:t,toolsOpt:i};this.localWork.setToolsOpt(l)}break;case L.GetImageBitMap:if(o&&n&&r){const l=r.toString();this.cacheImages.set(o,{imageBitmap:n,workId:l});const u=this.imageResolveMap.get(o);if(u){const{resolve:h,timer:d}=u;d&&clearTimeout(d),h&&h(o)}this.deleteCachedImagesByWorkId(l,o)}break}}getIconSize(s,e,t){const i=s*t,o=e*t;return i<=50||o<=50?[50,50]:i<=100||o<=100?[100,100]:i<=200||o<=200?[200,200]:i<=400||o<=400?[400,400]:i<=800||o<=800?[800,800]:[1600,1600]}async loadImageBitMap(s){const{toolsType:e,opt:t,workId:i,isSubWorker:o}=s;if(e===T.Image&&t&&i){const n=i.toString(),{src:r,type:c,width:l,height:u,strokeColor:h}=t;if(!r||!c||!l||!u)return;let d=r;if(c===dt.Iconify){const[m,N]=this.getIconSize(l,u,this.dpr);d=`${r}?width=${m}&height=${N}&color=${h}`}if(this.cacheImages.has(d)){const m=this.getCachedImages(d);if(m)return m}if(this.imageResolveMap.has(d)){const m=this.getCachedImagesByWorkId(n);if(m)return m}const p=await new Promise(m=>{const N=this.imageResolveMap.get(d)||{resolve:void 0,timer:void 0};N.timer&&clearTimeout(N.timer),N.resolve=m,N.timer=setTimeout(()=>{const v=this.imageResolveMap.get(d);v!=null&&v.resolve&&v.resolve(d)},5e3),this.imageResolveMap.set(d,N),this._post({sp:[{imageSrc:d,workId:n,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:o,type:L.GetImageBitMap}]})});return this.imageResolveMap.delete(p),this.getCachedImages(d)}}createLocalWork(s){const{workId:e,opt:t,toolsType:i}=s;e&&t&&(!this.localWork.getToolsOpt()&&i&&this.setToolsOpt({toolsType:i,toolsOpt:t}),this.setWorkOpt({workId:e,toolsOpt:t}))}updateScene(s){this.scene.attr({...s});const{width:e,height:t}=s;this.scene.container.width=e,this.scene.container.height=t,this.scene.width=e,this.scene.height=t,this.updateLayer({width:e,height:t})}updateLayer(s){const{width:e,height:t}=s;this.fullLayer&&(this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",t),this.fullLayer.setAttribute("size",[e,t]),this.fullLayer.setAttribute("pos",[e*.5,t*.5]))}getSupportContextType(s,e){const t=new OffscreenCanvas(100,100);let i=["2d"];s===As.Full&&this.viewId===pe&&(i=["webgl2","webgl","2d"],e&&i.unshift(e));for(const o of i)try{if(t.getContext(o))return o}catch{continue}}createScene(s){const{width:e,height:t}=s,i=new OffscreenCanvas(e,t);s.contextType&&delete s.contextType;const o=new he.Scene({container:i,displayRatio:this.dpr,depth:!1,desynchronized:!0,failIfMajorPerformanceCaveat:!0,...s,contextType:this.contextType,id:this.viewId});return o.setAttribute("id",this.viewId),o}createLayer(s,e,t){const{width:i,height:o}=t,n=`offscreen-${s}`,r=e.layer(n,t),c=new he.Group({anchor:[.5,.5],pos:[i*.5,o*.5],size:[i,o],name:"viewport",id:s});return r.append(c),c}async clearAll(){var s;this.fullLayer&&(this.fullLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),Oe(this.fullLayer,this.fullLayer.parent)),this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),this.debounceUpdateCameraId&&(clearTimeout(this.debounceUpdateCameraId),this.debounceUpdateCameraId=void 0),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.destroy(),(s=this.serviceWork)==null||s.destroy()}setToolsOpt(s){this.localWork.setToolsOpt(s)}setWorkOpt(s){const{workId:e,toolsOpt:t}=s;e&&t&&this.localWork.setWorkOptions(e.toString(),t)}destroy(){var s;this.vNodes.clear(),this.fullLayer.remove(),Ee(this.fullLayer,this.fullLayer.parent),this.clearCacheImages(),this.clearImageResolveMap(),this.scene.remove(),this.localWork.destroy(),(s=this.serviceWork)==null||s.destroy()}async post(s){this.combinePostMsg.add(s),await this.runBatchPostData()}async runBatchPostData(){this.workerTaskId||(this.workerTaskId=setTimeout(()=>{this.workerTaskId=void 0,this.combinePost()},16)),this.type===As.Full&&!this.delayPostDoneResolve&&await new Promise(e=>{this.delayPostDoneResolve=e})&&(this.delayPostDoneResolve=void 0)}combinePostData(){var r,c;this.workerTaskId=void 0;const s=[],e=[];let t,i,o;const n=new Set;for(const l of this.combinePostMsg.values()){if((r=l.render)!=null&&r.length)for(const u of l.render){let h=!1;if(u.workId&&n.add(u.workId),u.isClearAll&&(u.rect=this.getSceneRect(),u.isClear=!0,delete u.isClearAll),u.drawCanvas){const d=this.getLayer(u.drawCanvas);if(!d||!(d.parent instanceof he.Layer))continue;if(d.parent.render(),u.isDrawAll){const f=this.getSceneRect();u.rect=f,delete u.isDrawAll}}for(const d of s)if(u.viewId===d.viewId){u.isClear&&d.clearCanvas&&d.isClear&&d.clearCanvas===u.clearCanvas&&(d.rect=le(d.rect,u.rect),h=!0),d.drawCanvas&&d.drawCanvas===u.drawCanvas&&(d.rect=le(d.rect,u.rect),h=!0);continue}h||(u.isClear&&!u.drawCanvas?s.unshift(u):s.push(u))}if((c=l.sp)!=null&&c.length)for(const u of l.sp){let h=!1;for(const d of e)if(it(u,d)){h=!0;break}h||e.push(u)}De(l.fullWorkerDrawCount)&&(t=l.fullWorkerDrawCount),De(l.subWorkerDrawCount)&&(i=l.subWorkerDrawCount),De(l.consumeCount)&&(o=l.consumeCount)}return this.combinePostMsg.clear(),{render:s,sp:e,fullWorkerDrawCount:t,subWorkerDrawCount:i,consumeCount:o,workIds:n,viewId:this.viewId}}getSceneRect(){const{width:s,height:e}=this.scene;return{x:0,y:0,w:Math.floor(s),h:Math.floor(e)}}}class Kf{constructor(s){y(this,"viewId");y(this,"vNodes");y(this,"thread");y(this,"fullLayer");y(this,"drawLayer");y(this,"_post");y(this,"tmpOpt");y(this,"workShapes",new Map);y(this,"drawCount",0);y(this,"consumeCount",0);y(this,"syncUnitTime",Se.syncOpt.interval);this.thread=s.thread,this.viewId=s.viewId,this.vNodes=s.vNodes,this.fullLayer=s.fullLayer,this.drawLayer=s.drawLayer,this._post=this.thread.post.bind(s.thread)}destroy(){this.workShapes.clear()}getWorkShapes(){return this.workShapes}getWorkShape(s){return this.workShapes.get(s)}createWorkShape(s,e){if(s&&this.tmpOpt){const t={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},i=this.createWorkShapeNode({...t,workId:s});i&&this.workShapes.set(s,i)}}setWorkOptions(s,e){const t=this.getWorkShape(s);t||this.createWorkShape(s,e),t==null||t.setWorkOptions(e)}createWorkShapeNode(s){var e;return gs({...s,vNodes:this.vNodes,fullLayer:this.fullLayer,drawLayer:this.drawLayer},(e=this.thread)==null?void 0:e.serviceWork)}setToolsOpt(s){var e,t,i;((e=this.tmpOpt)==null?void 0:e.toolsType)!==s.toolsType&&(t=this.tmpOpt)!=null&&t.toolsType&&this.clearAllWorkShapesCache(),this.tmpOpt=s,(i=s.toolsOpt)!=null&&i.syncUnitTime&&(this.syncUnitTime=s.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}clearWorkShapeNodeCache(s){var e;(e=this.getWorkShape(s))==null||e.clearTmpPoints(),this.workShapes.delete(s)}clearAllWorkShapesCache(){this.workShapes.forEach(s=>s.clearTmpPoints()),this.workShapes.clear()}setFullWork(s){const{workId:e,opt:t,toolsType:i}=s;if(e&&t&&i){const o=e.toString();let n;return e&&this.workShapes.has(o)?(n=this.workShapes.get(o),n==null||n.setWorkOptions(t)):n=this.createWorkShapeNode({toolsOpt:t,toolsType:i,workId:o}),n?(this.workShapes.set(o,n),n):void 0}}}var _f=Ze,eg=function(){return _f.Date.now()},tg=eg,sg=/\s/;function ig(a){for(var s=a.length;s--&&sg.test(a.charAt(s)););return s}var og=ig,ng=og,rg=/^\s+/;function ag(a){return a&&a.slice(0,ng(a)+1).replace(rg,"")}var cg=ag,lg=pt,hg=Je,ug="[object Symbol]";function dg(a){return typeof a=="symbol"||hg(a)&&lg(a)==ug}var pg=dg,fg=cg,$i=ot,gg=pg,Hi=NaN,yg=/^[-+]0x[0-9a-f]+$/i,Mg=/^0b[01]+$/i,mg=/^0o[0-7]+$/i,wg=parseInt;function vg(a){if(typeof a=="number")return a;if(gg(a))return Hi;if($i(a)){var s=typeof a.valueOf=="function"?a.valueOf():a;a=$i(s)?s+"":s}if(typeof a!="string")return a===0?a:+a;a=fg(a);var e=Mg.test(a);return e||mg.test(a)?wg(a.slice(2),e?2:8):yg.test(a)?Hi:+a}var Ig=vg,Sg=ot,Ts=tg,Qi=Ig,Ng="Expected a function",Tg=Math.max,kg=Math.min;function Cg(a,s,e){var t,i,o,n,r,c,l=0,u=!1,h=!1,d=!0;if(typeof a!="function")throw new TypeError(Ng);s=Qi(s)||0,Sg(e)&&(u=!!e.leading,h="maxWait"in e,o=h?Tg(Qi(e.maxWait)||0,s):o,d="trailing"in e?!!e.trailing:d);function f(S){var b=t,x=i;return t=i=void 0,l=S,n=a.apply(x,b),n}function g(S){return l=S,r=setTimeout(N,s),u?f(S):n}function p(S){var b=S-c,x=S-l,P=s-b;return h?kg(P,o-x):P}function m(S){var b=S-c,x=S-l;return c===void 0||b>=s||b<0||h&&x>=o}function N(){var S=Ts();if(m(S))return v(S);r=setTimeout(N,p(S))}function v(S){return r=void 0,d&&t?f(S):(t=i=void 0,n)}function I(){r!==void 0&&clearTimeout(r),l=0,t=c=i=r=void 0}function k(){return r===void 0?n:v(Ts())}function w(){var S=Ts(),b=m(S);if(t=arguments,i=this,c=S,b){if(r===void 0)return g(c);if(h)return clearTimeout(r),r=setTimeout(N,s),f(c)}return r===void 0&&(r=setTimeout(N,s)),n}return w.cancel=I,w.flush=k,w}var bg=Cg,xg=bg,Lg=ot,Pg="Expected a function";function zg(a,s,e){var t=!0,i=!0;if(typeof a!="function")throw new TypeError(Pg);return Lg(e)&&(t="leading"in e?!!e.leading:t,i="trailing"in e?!!e.trailing:i),xg(a,s,{leading:t,maxWait:s,trailing:i})}var Dg=zg;const Ms=Ct(Dg);function Ag(a){return a}var Go=Ag;function jg(a,s,e){switch(e.length){case 0:return a.call(s);case 1:return a.call(s,e[0]);case 2:return a.call(s,e[0],e[1]);case 3:return a.call(s,e[0],e[1],e[2])}return a.apply(s,e)}var Eg=jg,Og=Eg,Gi=Math.max;function Rg(a,s,e){return s=Gi(s===void 0?a.length-1:s,0),function(){for(var t=arguments,i=-1,o=Gi(t.length-s,0),n=Array(o);++i<o;)n[i]=t[s+i];i=-1;for(var r=Array(s+1);++i<s;)r[i]=t[i];return r[s]=e(n),Og(a,this,r)}}var Wg=Rg;function Yg(a){return function(){return a}}var Ug=Yg,Bg=Ug,Zi=lo,Fg=Go,Vg=Zi?function(a,s){return Zi(a,"toString",{configurable:!0,enumerable:!1,value:Bg(s),writable:!0})}:Fg,$g=Vg,Hg=800,Qg=16,Gg=Date.now;function Zg(a){var s=0,e=0;return function(){var t=Gg(),i=Qg-(t-e);if(e=t,i>0){if(++s>=Hg)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}var qg=Zg,Xg=$g,Jg=qg,Kg=Jg(Xg),_g=Kg,ey=Go,ty=Wg,sy=_g;function iy(a,s){return sy(ty(a,s,ey),a+"")}var oy=iy;function ny(a,s,e,t){for(var i=a.length,o=e+(t?1:-1);t?o--:++o<i;)if(s(a[o],o,a))return o;return-1}var ry=ny;function ay(a){return a!==a}var cy=ay;function ly(a,s,e){for(var t=e-1,i=a.length;++t<i;)if(a[t]===s)return t;return-1}var hy=ly,uy=ry,dy=cy,py=hy;function fy(a,s,e){return s===s?py(a,s,e):uy(a,dy,e)}var gy=fy,yy=gy;function My(a,s){var e=a==null?0:a.length;return!!e&&yy(a,s,0)>-1}var Zo=My;function my(a,s,e){for(var t=-1,i=a==null?0:a.length;++t<i;)if(e(s,a[t]))return!0;return!1}var qo=my;function wy(a,s){for(var e=-1,t=a==null?0:a.length,i=Array(t);++e<t;)i[e]=s(a[e],e,a);return i}var vy=wy,Iy=ei,Sy=Zo,Ny=qo,Ty=vy,ky=ps,Cy=ti,by=200;function xy(a,s,e,t){var i=-1,o=Sy,n=!0,r=a.length,c=[],l=s.length;if(!r)return c;e&&(s=Ty(s,ky(e))),t?(o=Ny,n=!1):s.length>=by&&(o=Cy,n=!1,s=new Iy(s));e:for(;++i<r;){var u=a[i],h=e==null?u:e(u);if(u=t||u!==0?u:0,n&&h===h){for(var d=l;d--;)if(s[d]===h)continue e;c.push(u)}else o(s,h,t)||c.push(u)}return c}var Ly=xy,qi=Ut,Py=fo,zy=Bt,Xi=qi?qi.isConcatSpreadable:void 0;function Dy(a){return zy(a)||Py(a)||!!(Xi&&a&&a[Xi])}var Ay=Dy,jy=Xs,Ey=Ay;function Xo(a,s,e,t,i){var o=-1,n=a.length;for(e||(e=Ey),i||(i=[]);++o<n;){var r=a[o];s>0&&e(r)?s>1?Xo(r,s-1,e,t,i):jy(i,r):t||(i[i.length]=r)}return i}var Oy=Xo;function Ry(){}var Wy=Ry,ks=ko,Yy=Wy,Uy=si,By=1/0,Fy=ks&&1/Uy(new ks([,-0]))[1]==By?function(a){return new ks(a)}:Yy,Vy=Fy,$y=ei,Hy=Zo,Qy=qo,Gy=ti,Zy=Vy,qy=si,Xy=200;function Jy(a,s,e){var t=-1,i=Hy,o=a.length,n=!0,r=[],c=r;if(e)n=!1,i=Qy;else if(o>=Xy){var l=s?null:Zy(a);if(l)return qy(l);n=!1,i=Gy,c=new $y}else c=s?[]:r;e:for(;++t<o;){var u=a[t],h=s?s(u):u;if(u=e||u!==0?u:0,n&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue e;s&&c.push(h),r.push(u)}else i(c,h,e)||(c!==r&&c.push(h),r.push(u))}return r}var Ky=Jy,_y=Ly,eM=Oy,Ji=Ky;function tM(a,s,e){var t=a.length;if(t<2)return t?Ji(a[0]):[];for(var i=-1,o=Array(t);++i<t;)for(var n=a[i],r=-1;++r<t;)r!=i&&(o[i]=_y(o[i]||n,a[r],s,e));return Ji(eM(o,1),s,e)}var sM=tM,iM=Qs,oM=Je;function nM(a){return oM(a)&&iM(a)}var rM=nM,aM=wo,cM=oy,lM=sM,hM=rM;cM(function(a){return lM(aM(a,hM))});class uM extends Kf{constructor(e){super(e);y(this,"drawWorkActiveId")}async runFullWork(e){var o;const t=this.setFullWork(e),i=e.ops&&nt(e.ops);if(t){let n,r;const c=(o=t.getWorkId())==null?void 0:o.toString();return t.toolsType===T.Image?n=await t.consumeServiceAsync({isFullWork:!0,worker:this.thread}):t.toolsType===T.Text?n=await t.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(n=t.consumeService({op:i,isFullWork:!0,replaceId:c}),r=(e==null?void 0:e.updateNodeOpt)&&t.updataOptService(e.updateNodeOpt)),e.workId&&this.workShapes.delete(e.workId.toString()),le(n,r)}}runSelectWork(e){var i;const t=this.setFullWork(e);t&&((i=e.selectIds)!=null&&i.length)&&e.workId&&t.selectServiceNode(e.workId.toString(),{selectIds:e.selectIds},!1)}workShapesDone(){for(const e of this.workShapes.keys())this.clearWorkShapeNodeCache(e);Oe(this.fullLayer,this.fullLayer.parent)}canUseSubWorker(e){const t=this.thread.getPriorityDraw();return t||!t&&e!==T.Pencil}async consumeDraw(e){const{workId:t,fullWorkerDrawCount:i,postCount:o}=e,n=t==null?void 0:t.toString(),r=n&&this.workShapes.get(n);if(!r)return;this.drawWorkActiveId&&this.drawWorkActiveId!==n&&(await this.consumeDrawAll({workId:this.drawWorkActiveId,viewId:this.viewId,msgType:L.DrawWork,dataType:B.Local}),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&n!==Q&&(this.drawWorkActiveId=n);const c=r.toolsType;De(o)&&(this.consumeCount=o);const l=r.consume({data:e,drawCount:this.drawCount,isFullWork:!0,isSubWorker:!0,removeDrawCount:i});switch(c){case T.Ellipse:case T.Arrow:case T.Straight:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:{l&&(this.drawCount++,await this.drawShape(l));break}case T.Pencil:case T.BitMapEraser:{l&&(this.drawCount++,await this.drawPencil(l,t==null?void 0:t.toString()));break}}}async consumeDrawAll(e){const{workId:t}=e;if(t){const i=t.toString();this.drawWorkActiveId===i&&(this.drawWorkActiveId=void 0);const o=this.workShapes.get(i);if(!o)return;switch(o.toolsType){case T.Arrow:case T.Straight:case T.Ellipse:case T.Pencil:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.BitMapEraser:this.drawCount=0,Oe(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(i);break}}}async removeWork(e){const{workId:t}=e,i=t==null?void 0:t.toString();if(i){const o=this.removeNode(i);if(o){const n=[];n.push({rect:Et(o),clearCanvas:Me.Float,isClear:!0,viewId:this.viewId},{rect:Et(o),drawCanvas:Me.Float,viewId:this.viewId}),await this._post({render:n})}}}removeNode(e){const t=this.workShapes.has(e);let i;return t&&(this.fullLayer.getElementsByName(e).forEach(o=>{const n=o.getBoundingClientRect();i=le(i,{x:n.x-Y.SafeBorderPadding,y:n.y-Y.SafeBorderPadding,w:n.width+Y.SafeBorderPadding*2,h:n.height+Y.SafeBorderPadding*2}),o.remove(),Ee(o,this.fullLayer.parent)}),i&&this.clearWorkShapeNodeCache(e)),i}async drawPencil(e,t){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:e==null?void 0:e.rect,workId:t,drawCanvas:Me.Float,viewId:this.viewId}],sp:(e==null?void 0:e.op)&&[e]})}async drawShape(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&Et(e.rect),isClear:!0,clearCanvas:Me.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&Et(e.rect),drawCanvas:Me.Float,viewId:this.viewId}]})}}class dM{constructor(s){y(this,"viewId");y(this,"vNodes");y(this,"topLayer");y(this,"thread");y(this,"post");y(this,"serviceWorkShapes",new Map);y(this,"localWorkShapes",new Map);y(this,"tmpOpt");y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"animationId");this.viewId=s.viewId,this.vNodes=s.vNodes,this.topLayer=s.topLayer,this.thread=s.thread,this.post=s.thread.post.bind(s.thread)}canUseTopLayer(s){return s===T.LaserPen}getWorkShape(s){return this.localWorkShapes.get(s)}createWorkShape(s,e){if(s&&this.tmpOpt){const t={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},i=this.createWorkShapeNode({...t,workId:s});return i&&this.localWorkShapes.set(s,{node:i,toolsType:i.toolsType,workState:z.Start}),i}}setWorkOptions(s,e){var i;const t=(i=this.localWorkShapes.get(s))==null?void 0:i.node;t||this.createWorkShape(s,e),t==null||t.setWorkOptions(e)}createWorkShapeNode(s){const{toolsType:e}=s;if(e===T.LaserPen)return gs({...s,vNodes:this.vNodes,fullLayer:this.topLayer,drawLayer:this.topLayer})}clearAllWorkShapesCache(){this.localWorkShapes.forEach(s=>{var e;return(e=s.node)==null?void 0:e.clearTmpPoints()}),this.localWorkShapes.clear()}setToolsOpt(s){var e;this.tmpOpt=s,(e=s.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=s.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}consumeDraw(s){const{workId:e,dataType:t}=s;if(t===B.Service)this.activeServiceWorkShape(s);else{const i=e==null?void 0:e.toString(),o=i&&this.localWorkShapes.get(i);if(!o)return;const n=o.node.consume({data:s,isFullWork:!1,isSubWorker:!0});n.rect&&(o.totalRect=le(n.rect,o.totalRect),o.result=n,o.workState=z.Doing,i&&this.localWorkShapes.set(i,o))}this.runAnimation()}consumeDrawAll(s){const{workId:e,dataType:t}=s;if(t===B.Service)this.activeServiceWorkShape(s);else{const i=e==null?void 0:e.toString(),o=i&&this.localWorkShapes.get(i);if(!o)return;const n=o.node.consumeAll({data:s});o.totalRect=le(n.rect,o.totalRect),o.result=n,o.workState=z.Done,i&&this.localWorkShapes.set(i,o)}this.runAnimation()}destroy(){this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}setNodeKey(s,e,t,i){return e.toolsType=t,e.node=this.createWorkShapeNode({workId:s,toolsType:t,toolsOpt:i}),e}activeServiceWorkShape(s){var d,f;const{workId:e,opt:t,toolsType:i,type:o,updateNodeOpt:n,ops:r,op:c}=s;if(!e)return;const l=e.toString(),u=(d=this.vNodes.get(l))==null?void 0:d.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(l))){let g={toolsType:i,animationWorkData:c||[],animationIndex:0,type:o,updateNodeOpt:n,ops:r,oldRect:u};i&&t&&(g=this.setNodeKey(l,g,i,t)),this.serviceWorkShapes.set(l,g)}const h=this.serviceWorkShapes.get(l);o&&(h.type=o),r&&(h.animationWorkData=nt(r),h.ops=r),n&&(h.updateNodeOpt=n),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==l&&h.node.setWorkId(l),u&&(h.oldRect=u),i&&t&&(h.toolsType!==i&&i&&t&&this.setNodeKey(l,h,i,t),h.node&&h.node.setWorkOptions(t))}computNextAnimationIndex(s,e){const t=Math.floor((s.animationWorkData||[]).slice(s.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((s.animationIndex||0)+(t||e),(s.animationWorkData||[]).length)}async animationDraw(){var n,r,c,l;this.animationId=void 0;let s=!1;const e=new Map,t=[],i=[],o=[];for(const[u,h]of this.serviceWorkShapes.entries())switch(h.toolsType){case T.LaserPen:{const f=this.computNextAnimationIndex(h,8),g=Math.max(0,h.animationIndex||0),p=(h.animationWorkData||[]).slice(g,f);if((h.animationIndex||0)<f){const m=(n=h.node)==null?void 0:n.consumeService({op:p,isFullWork:!1});h.totalRect=le(h.totalRect,m),h.animationIndex=f,p.length&&e.set(u,{workState:g===0?z.Start:f===((r=h.animationWorkData)==null?void 0:r.length)?z.Done:z.Doing,op:p.slice(-2)})}if(i.push({isClear:!0,rect:h.totalRect,clearCanvas:Me.TopFloat,viewId:this.viewId}),t.push({rect:h.totalRect,drawCanvas:Me.TopFloat,viewId:this.viewId}),h.isDel){(c=h.node)==null||c.clearTmpPoints(),this.serviceWorkShapes.delete(u);break}h.ops&&h.animationIndex===((l=h.animationWorkData)==null?void 0:l.length)&&!h.isDel&&(this.topLayer.getElementsByName(u.toString())[0]||(h.isDel=!0,this.serviceWorkShapes.set(u,h))),s=!0;break}}for(const[u,h]of this.localWorkShapes.entries()){const{result:d,toolsType:f,totalRect:g,isDel:p,workState:m}=h;switch(f){case T.LaserPen:{if(g&&(i.push({isClear:!0,rect:g,clearCanvas:Me.TopFloat,viewId:this.viewId}),t.push({rect:g,drawCanvas:Me.TopFloat,viewId:this.viewId})),p){h.node.clearTmpPoints(),this.localWorkShapes.delete(u),o.push({removeIds:[u.toString()],viewId:this.viewId,type:L.RemoveNode});break}d&&((d.op||d.ops)&&o.push(d),h.result=void 0),!this.topLayer.getElementsByName(u.toString())[0]&&m===z.Done&&(h.isDel=!0,this.localWorkShapes.set(u,h)),s=!0;break}}}s&&this.runAnimation(),e.size&&e.forEach((u,h)=>{o.push({type:L.Cursor,uid:h.split(je)[0],op:u.op,workState:u.workState,viewId:this.viewId})}),(t.length||i.length||o.length)&&this.post({render:[...i,...t],sp:o})}runAnimation(){this.animationId||(this.animationId=setTimeout(()=>{this.animationId=void 0,this.animationDraw()},16))}}var As=(a=>(a.Full="full",a.Sub="sub",a))(As||{});class pM extends Jf{constructor(e,t,i){super(e,t,"sub");y(this,"type","sub");y(this,"_post");y(this,"topLayer");y(this,"snapshotFullLayer");y(this,"serviceWork");y(this,"localWork");y(this,"topLayerWork");this._post=i;const o=Se.bufferSize.sub;this.topLayer=this.createLayer("topLayer",this.scene,{...t.layerOpt,bufferSize:o,contextType:"2d"});const n={thread:this,viewId:this.viewId,vNodes:this.vNodes,fullLayer:this.fullLayer,topLayer:this.topLayer};this.localWork=new uM(n),this.topLayerWork=new dM(n),this.vNodes.init(this.fullLayer)}async combinePost(){var n,r;const{render:e,...t}=this.combinePostData();let i;if(e!=null&&e.length){const c=[];for(const l of e)if(l.rect){if(l.rect=TM(ke(l.rect),this.scene,this.dpr),!l.rect)continue;if(l.drawCanvas&&l.rect&&l.rect.w>0&&l.rect.h>0){const u=await this.getRectImageBitmap(l);l.imageBitmap=u,i||(i=[]),i.push(u)}c.push(l)}t.render=c}const o=(n=t.sp)==null?void 0:n.filter(c=>c.type!==L.None);o!=null&&o.length?t.sp=o.map(c=>({...c,viewId:this.viewId})):delete t.sp,t.consumeCount===void 0&&delete t.consumeCount,t.subWorkerDrawCount===void 0&&delete t.subWorkerDrawCount,(o!=null&&o.length||t.consumeCount||t.subWorkerDrawCount||(r=t==null?void 0:t.render)!=null&&r.length)&&this._post(t,i),this.delayPostDoneResolve&&this.delayPostDoneResolve(!0)}getLayer(e,t){if(t&&this.snapshotFullLayer)return this.snapshotFullLayer;switch(e){case Me.TopFloat:return this.topLayer;default:return this.fullLayer}}async on(e){const{msgType:t,toolsType:i,opt:o,dataType:n,workState:r}=e;switch(t){case L.UpdateTools:if(i&&this.topLayerWork.canUseTopLayer(i)&&o){const c={toolsType:i,toolsOpt:o};this.topLayerWork.setToolsOpt(c);return}break;case L.CreateWork:this.createLocalWork(e);return;case L.DrawWork:r===z.Done&&n===B.Local?await this.consumeDrawAll(n,e):this.consumeDraw(n,e);return;case L.RemoveNode:await this.removeNode(e);return;case L.FullWork:i&&this.topLayerWork.canUseTopLayer(i)&&await this.consumeDrawAll(n,e);return;case L.Snapshot:this.snapshotFullLayer=this.createLayer("snapshotFullLayer",this.scene,{...this.opt.layerOpt,bufferSize:this.viewId===pe?6e3:3e3,contextType:"2d"}),this.snapshotFullLayer&&(await this.getSnapshot(e),this.snapshotFullLayer=void 0);return;case L.BoundingBox:this.snapshotFullLayer=this.createLayer("snapshotFullLayer",this.scene,{...this.opt.layerOpt,bufferSize:this.viewId===pe?6e3:3e3,contextType:"2d"}),this.snapshotFullLayer&&(await this.getBoundingRect(e),this.snapshotFullLayer=void 0);return}await super.on(e)}createLocalWork(e){const{workId:t,toolsType:i,opt:o}=e;if(i&&this.topLayerWork.canUseTopLayer(i)&&t&&o){this.topLayerWork.getToolsOpt()||this.topLayerWork.setToolsOpt({toolsType:i,toolsOpt:o}),this.topLayerWork.setWorkOptions(t.toString(),o);return}i&&this.localWork.canUseSubWorker(i)&&super.createLocalWork(e)}async removeNode(e){const{dataType:t}=e;t===B.Local&&await this.localWork.removeWork(e)}getOffscreen(e,t){return this.getLayer(e,t).parent.canvas}async consumeDraw(e,t){const{workId:i,toolsType:o}=t;if(i){if(o&&this.topLayerWork.canUseTopLayer(o)){e===B.Local&&(this.topLayerWork.getWorkShape(i.toString())||this.createLocalWork(t)),this.topLayerWork.consumeDraw(t);return}o&&this.localWork.canUseSubWorker(o)&&(this.localWork.getWorkShape(i.toString())||this.createLocalWork(t),await this.localWork.consumeDraw(t));return}}async consumeDrawAll(e,t){const{workId:i,toolsType:o,dataType:n}=t;if(i){const r=i.toString();if(o&&this.topLayerWork.canUseTopLayer(o)){n===B.Local&&(this.topLayerWork.getWorkShape(r)||this.createLocalWork(t)),this.topLayerWork.consumeDrawAll(t);return}o&&this.localWork.canUseSubWorker(o)&&(this.localWork.getWorkShape(r)||super.createLocalWork(t),this.localWork.consumeDrawAll(t));return}}async clearAll(){this.vNodes.clear(),super.clearAll(),this.topLayer&&(this.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),Oe(this.topLayer,this.topLayer.parent)),await this.post({render:[{isClearAll:!0,clearCanvas:Me.TopFloat,viewId:this.viewId}],sp:[{type:L.Clear}]})}getRectImageBitmap(e,t=!1,i){const{rect:o,drawCanvas:n}=e,r=Math.floor(o.x*this.dpr),c=Math.floor(o.y*this.dpr),l=Math.floor(o.w*this.dpr||1),u=Math.floor(o.h*this.dpr||1);return createImageBitmap(this.getOffscreen(n,t),r,c,l,u,i)}updateLayer(e){const{width:t,height:i}=e;super.updateLayer(e),this.topLayer&&(this.topLayer.parent.setAttribute("width",t),this.topLayer.parent.setAttribute("height",i),this.topLayer.setAttribute("size",[t,i]),this.topLayer.setAttribute("pos",[t*.5,i*.5])),this.snapshotFullLayer&&(this.snapshotFullLayer.parent.setAttribute("width",t),this.snapshotFullLayer.parent.setAttribute("height",i),this.snapshotFullLayer.setAttribute("size",[t,i]),this.snapshotFullLayer.setAttribute("pos",[t*.5,i*.5]))}async updateDpr(e){super.updateDpr(e);const t=!!this.topLayerWork.localWorkShapes.size,i=!!this.localWork.getWorkShapes().size,o=[];i&&o.push({isClearAll:!0,clearCanvas:Me.Float,viewId:this.viewId}),t&&o.push({isClearAll:!0,clearCanvas:Me.TopFloat,viewId:this.viewId}),o.length&&await this.post({render:o})}async updateCamera(e){const t=[],{cameraOpt:i}=e;if(i&&!it(this.cameraOpt,i)){const o=!!this.topLayerWork.localWorkShapes.size,n=!!this.localWork.getWorkShapes().size;if(n&&this.localWork.workShapesDone(),this.setCameraOpt(i),n&&t.push({isClearAll:!0,clearCanvas:Me.Float,viewId:this.viewId}),o){t.push({isClearAll:!0,clearCanvas:Me.TopFloat,viewId:this.viewId});for(const[r,c]of this.topLayerWork.localWorkShapes.entries())if(c.totalRect){let l;this.topLayer.getElementsByName(r.toString()).forEach(u=>{const h=u.getBoundingClientRect(),d=Et({x:h.x,y:h.y,w:h.width,h:h.height});l=le(l,d)}),c.totalRect=l,this.topLayerWork.localWorkShapes.set(r,c)}}t.length&&await this.post({render:t})}}setCameraOpt(e,t){this.cameraOpt=e;const{scale:i,centerX:o,centerY:n,width:r,height:c}=e;(r!==this.scene.width||c!==this.scene.height)&&this.updateScene({width:r,height:c}),t?(t.setAttribute("scale",[i,i]),t.setAttribute("translate",[-o,-n])):(this.fullLayer.setAttribute("scale",[i,i]),this.fullLayer.setAttribute("translate",[-o,-n]),this.topLayer.setAttribute("scale",[i,i]),this.topLayer.setAttribute("translate",[-o,-n]))}async getSnapshot(e){const{scenePath:t,scenes:i,cameraOpt:o,w:n,h:r}=e;if(t&&i&&o&&this.snapshotFullLayer){const c=ke(this.cameraOpt);this.setCameraOpt(o,this.snapshotFullLayer),this.localWork.fullLayer=this.snapshotFullLayer,this.localWork.drawLayer=void 0;let l;for(const[h,d]of Object.entries(i))if(d!=null&&d.type)switch(d==null?void 0:d.type){case L.UpdateNode:case L.FullWork:{const{opt:f}=d,g={...d,opt:f,workId:h,msgType:L.FullWork,dataType:B.Service,viewId:this.viewId},p=await this.localWork.runFullWork(g);l=le(l,p);break}}let u;n&&r&&(u={resizeWidth:n,resizeHeight:r}),await this.getSnapshotRender({scenePath:t,curCameraOpt:c,options:u}),this.localWork.fullLayer=this.fullLayer,this.localWork.drawLayer=void 0}}async getSnapshotRender(e){var r;const{scenePath:t,curCameraOpt:i,options:o}=e;((r=this.snapshotFullLayer)==null?void 0:r.parent).render();const n=await this.getRectImageBitmap({rect:this.getSceneRect(),drawCanvas:Me.None},!0,o);n&&(this._post({sp:[{type:L.Snapshot,scenePath:t,imageBitmap:n,viewId:this.viewId}]},[n]),n.close(),this.snapshotFullLayer&&Oe(this.snapshotFullLayer,this.snapshotFullLayer.parent),this.setCameraOpt(i,this.fullLayer))}async getBoundingRect(e){const{scenePath:t,scenes:i,cameraOpt:o}=e;if(t&&i&&o&&this.snapshotFullLayer){const n=ke(this.cameraOpt);this.setCameraOpt(o,this.snapshotFullLayer),this.localWork.fullLayer=this.snapshotFullLayer,this.localWork.drawLayer=void 0;let r;for(const[c,l]of Object.entries(i))if(l!=null&&l.type)switch(l==null?void 0:l.type){case L.UpdateNode:case L.FullWork:{const u=await this.localWork.runFullWork({...l,workId:c,msgType:L.FullWork,dataType:B.Service,viewId:this.viewId});r=le(r,u);break}}r&&await this.post({sp:[{type:L.BoundingBox,scenePath:t,rect:r}]}),this.localWork.fullLayer=this.fullLayer,this.localWork.drawLayer=void 0,Oe(this.snapshotFullLayer,this.snapshotFullLayer.parent),this.setCameraOpt(n,this.fullLayer)}}}class Wt extends Y{constructor(e){super(e);y(this,"canRotate",!0);y(this,"scaleType",ae.all);y(this,"toolsType",T.Image);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Wt.getScaleType(this.workOptions)}consume(){return{type:L.None}}consumeAll(){return{type:L.None}}draw(e){const{layer:t,workId:i,replaceId:o,imageBitmap:n}=e,{centerX:r,centerY:c,width:l,height:u,rotate:h,zIndex:d,eraserlines:f}=this.workOptions,g=new he.Group({anchor:[.5,.5],pos:[r,c],name:i,size:[l,u],zIndex:d,rotate:h}),p={anchor:[.5,.5],pos:[0,0],size:[l,u],texture:n};n||(p.bgcolor="rgba(0,0,0,0.3)");const m=new he.Sprite(p);g.append(m),f&&this.drawEraserlines({group:g,eraserlines:f,pos:[r,c],layer:t}),this.replace(t,o||i,g);const N=g.getBoundingClientRect();if(N)return{x:Math.floor(N.x-Y.SafeBorderPadding),y:Math.floor(N.y-Y.SafeBorderPadding),w:Math.floor(N.width+Y.SafeBorderPadding*2),h:Math.floor(N.height+Y.SafeBorderPadding*2)}}consumeService(){}async consumeServiceAsync(e){var u,h,d,f;const{isFullWork:t,replaceId:i,worker:o}=e,{src:n,uuid:r}=this.workOptions,c=((u=this.workId)==null?void 0:u.toString())||r,l=t?this.fullLayer:this.drawLayer||this.fullLayer;if(n){const g=await o.loadImageBitMap({toolsType:this.toolsType,opt:this.workOptions,workId:c,isSubWorker:o instanceof pM});if(g){const p=this.draw({workId:c,layer:l,replaceId:i,imageBitmap:g});return this.oldRect=c&&((d=(h=this.vNodes)==null?void 0:h.get(c))==null?void 0:d.rect)||void 0,(f=this.vNodes)==null||f.setInfo(c,{rect:p,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:p&&Y.getCenterPos(p,l)}),p}}}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:t,rotate:i}=e;return t!==!1||i&&Math.abs(i)%90>0?ae.proportional:ae.all}static updateNodeOpt(e){const{node:t,opt:i,vNodes:o,targetNode:n}=e,{translate:r,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndex:f,strokeColor:g}=i,p=n&&ke(n)||o.get(t.name);if(!p)return;const m=t.parent;if(m){if(g&&(p.opt.strokeColor=g),De(f)&&(t.setAttribute("zIndex",f),p.opt.zIndex=f),mt(d)&&(p.opt.locked=d),c&&l&&u&&r){const{centerX:N,centerY:v,width:I,height:k,uniformScale:w}=p.opt,S=w!==!1?[u[0],u[0]]:u,b=[N,v],x=[N,v];oi(x,l,S,r);const P=[x[0]-b[0],x[1]-b[1]];if(p.centerPos=[p.centerPos[0]+P[0],p.centerPos[1]+P[1]],p.opt.width=Math.round(I*S[0]),p.opt.height=Math.round(k*S[1]),p.opt.centerX=x[0],p.opt.centerY=x[1],p.opt.eraserlines)for(const E of Object.values(p.opt.eraserlines)){const{op:R,thickness:O}=E;E.thickness=O*Math.max(u[0],u[1]);for(let D=0;D<R.length;D++)ni(R[D],l,u,r)}}else if(r){if(p.opt.centerX=p.opt.centerX+r[0],p.opt.centerY=p.opt.centerY+r[1],p.centerPos=[p.centerPos[0]+r[0],p.centerPos[1]+r[1]],p.opt.eraserlines)for(const N of Object.values(p.opt.eraserlines)){const{op:v}=N;for(let I=0;I<v.length;I++){const k=v[I].map((w,S)=>S%2?w+r[1]:w+r[0]);N.op[I]=k}}}else if(De(h))if(p.opt.rotate=h,p.scaleType=Wt.getScaleType(p.opt),n){const N=Jo(p.rect,h);p.rect=N}else{const N=Y.getRectFromLayer(m,t.name);p.rect=N||p.rect}return p&&o.setInfo(t.name,p),p==null?void 0:p.rect}}}function le(a,s){if(a&&s){const e=Math.min(a.x,s.x),t=Math.min(a.y,s.y),i=Math.max(a.x+a.w,s.x+s.w),o=Math.max(a.y+a.h,s.y+s.h),n=i-e,r=o-t;return{x:e,y:t,w:n,h:r}}return s||a}function ii(a,s){if(a&&s){const e=Math.min(a.originX,s.originX),t=Math.min(a.originY,s.originY),i=Math.max(a.originX+a.width,s.originX+s.width),o=Math.max(a.originY+a.height,s.originY+s.height),n=i-e,r=o-t;return{originX:e,originY:t,width:n,height:r}}return s||a}function fe(a,s=0){const e={x:0,y:0,w:0,h:0};let t=1/0,i=1/0,o=-1/0,n=-1/0;return a.forEach(r=>{const[c,l]=r.XY;t=Math.min(t,c-s),i=Math.min(i,l-s),o=Math.max(o,c+s),n=Math.max(n,l+s)}),e.x=t,e.y=i,e.w=o-t,e.h=n-i,e}function Yt(a,s){return!(a.x+a.w<s.x||a.x>s.x+s.w||a.y+a.h<s.y||a.y>s.y+s.h)}function Et(a,s=10){return{x:Math.floor(a.x-s),y:Math.floor(a.y-s),w:Math.ceil(a.w+s*2),h:Math.ceil(a.h+s*2)}}function js(a,s){return{x:a.x+s[0],y:a.y+s[1],w:a.w,h:a.h}}function fM(a,s){const e=new C(a.x,a.y),t=new C(a.x+a.w,a.y),i=new C(a.x+a.w,a.y+a.h),o=new C(a.x,a.y+a.h),n=new C(a.x+a.w/2,a.y+a.h/2),r=Math.PI*s/180,c=C.RotWith(e,n,r),l=C.RotWith(t,n,r),u=C.RotWith(i,n,r),h=C.RotWith(o,n,r);return[c,l,u,h]}function Jo(a,s){const e=fM(a,s);return fe(e)}function gM(a,s,e){const t=new C(a.x,a.y),i=new C(a.x+a.w,a.y),o=new C(a.x+a.w,a.y+a.h),n=new C(a.x,a.y+a.h),r=new C(e[0],e[1]),c=new C(s[0],s[1]),l=C.ScaleWOrigin(t,c,r),u=C.ScaleWOrigin(i,c,r),h=C.ScaleWOrigin(o,c,r),d=C.ScaleWOrigin(n,c,r);return fe([l,u,h,d])}function yM(a,s,e){const t=new C(s[0],s[1]);for(let i=0;i<a.length;i+=3){const o=new C(a[i],a[i+1]),n=Math.PI*e/180,r=C.RotWith(o,t,n);a[i]=r.x,a[i+1]=r.y}}function MM(a,s,e){const t=new C(s[0],s[1]);for(let i=0;i<a.length;i+=2){const o=new C(a[i],a[i+1]),n=Math.PI*e/180,r=C.RotWith(o,t,n);a[i]=r.x,a[i+1]=r.y}}function oi(a,s,e,t=[0,0]){const i=new C(s[0],s[1]);for(let o=0;o<a.length;o+=3){const n=new C(a[o],a[o+1]),r=new C(e[0],e[1]),c=C.ScaleWOrigin(n,r,i);a[o]=c.x+t[0],a[o+1]=c.y+t[1]}}function ni(a,s,e,t=[0,0]){const i=new C(s[0],s[1]);for(let o=0;o<a.length;o+=2){const n=new C(a[o],a[o+1]),r=new C(e[0],e[1]),c=C.ScaleWOrigin(n,r,i);a[o]=c.x+t[0],a[o+1]=c.y+t[1]}}function Ko(a,s){return a[0]>=s.x&&a[0]<=s.x+s.w&&a[1]>=s.y&&a[1]<=s.y+s.h}function _o(a,s){const e=a<=s?1:a/s,t=s<=a?1:s/a;return[e,t]}function mM(a){for(const s of a)if(isNaN(s)||s===1/0||s===-1/0)return!1;return!0}function wM(a){return a!==Math.floor(a)}function vM(a){const s=a.toString();return s.indexOf(".")!==-1?s.split(".")[1].length:0}function IM(a,s){for(;s!==0;)[a,s]=[s,a%s];return a}const SM=a=>{if(a.tagName==="GROUP"){const s=Object.getOwnPropertySymbols(a).find(e=>e.toString()==="Symbol(sealed)");if(s&&a[s])return!0}return!1},Ee=(a,s)=>{if(a.mesh&&a.mesh.texture&&a.name==="eraserTexture"){const e=a.mesh.texture.image;s.deleteTexture(e)}else if(a.tagName==="GROUP"&&a&&a.children)for(const e of a.children)Ee(e,s)},Oe=(a,s)=>{Ee(a,s),a.removeAllChildren()},NM=(a,s,e)=>{const t=e.parent;if(s){const i=s.children;if(i){for(const o of i)if(Ee(o,t),o.tagName==="GROUP")for(const n of o.children)Ee(n,t)}}s.parent.replaceChild(a,s)},TM=(a,s,e)=>{if(a.w+a.x<=0||a.h+a.y<=0||a.w<=0||a.h<=0)return;const t=s.width,i=s.height,o={x:Math.floor(Math.max(0,a.x)),y:Math.floor(Math.max(0,a.y)),w:Math.floor(Math.min(t,a.w)),h:Math.floor(Math.min(i,a.h))};if(o.x+o.w>t&&(o.w=Math.floor(t-o.x)),o.y+o.h>i&&(o.h=Math.floor(i-o.y)),wM(e)){const n=vM(e),r=Math.pow(10,n),c=IM(r,e*r),l=o.x%c,u=o.x-l;u>=0?(o.x=u,o.w=o.w+l):(o.x=0,o.w=o.w+l-u);const h=o.y%c,d=o.y-h;d>=0?(o.y=d,o.h=o.h+h):(o.y=0,o.h=o.h+h-d)}return o};function gt(a){return`${os(a.x)},${os(a.y)} `}function yt(a,s){return`${os((a.x+s.x)/2)},${os((a.y+s.y)/2)} `}function os(a){return+a.toFixed(4)}const Fe=(a,s)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:s}):setTimeout(()=>{e(2)},s)}).then(function(){a()},()=>{a()}),et=a=>{const s=(a==null?void 0:a.webkitBackingStorePixelRatio)||(a==null?void 0:a.mozBackingStorePixelRatio)||(a==null?void 0:a.msBackingStorePixelRatio)||(a==null?void 0:a.oBackingStorePixelRatio)||(a==null?void 0:a.backingStorePixelRatio)||1;return Math.max(1,(window.devicePixelRatio||1)/s)},ri=(a,s)=>a.x+a.w<s.x||a.x>s.x+s.w||a.y+a.h<s.y||a.y>s.y+s.h?ut.outside:a.x>=s.x&&a.y>=s.y&&a.x+a.w<=s.x+s.w&&a.y+a.h<=s.y+s.h?ut.inside:ut.intersect;function kM(a){let s=0;for(let e=0;e<a.length;e++){const t=a.charCodeAt(e);t>=1&&t<=126||65376<=t&&t<=65439?s++:s+=2}return s}class CM{constructor(s,e){y(this,"plugin");y(this,"uid");y(this,"control");this.control=s,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var s;return X.toJS((s=this.plugin)==null?void 0:s.attributes[this.namespace])||{}}getAuthSpaceData(){var s;return X.toJS((s=this.plugin)==null?void 0:s.attributes[this.authSpace])||{}}getUidFromKey(s){return s.split(je).length===2&&s.split(je)[0]||this.uid}isLocalId(s){return s.split(je).length===1}getLocalId(s){return s.split(je)[1]}isSelector(s){return this.getLocalId(s)===Q}}const Ie=class Ie extends CM{constructor(e,t,i){super(e,t);y(this,"authSpace");y(this,"namespace");y(this,"serviceStorage",{});y(this,"storage",{});y(this,"authStorage",{});y(this,"stateDisposer");y(this,"authDisposer");y(this,"asyncClockState",!1);y(this,"limitNums",new Map);y(this,"limitComponents",j.debounce((e,t)=>{var n,r,c,l,u,h,d,f;const i=((r=(n=this.storage)==null?void 0:n[e])==null?void 0:r[t])&&Object.keys(this.storage[e][t]).length||0;if(i===0)return;let o=this.limitNums.get(`${e}/${t}`);if(!o){const g=this.getLimitNum(i);this.limitNums.set(`${e}/${t}`,g),o=g}if(o>0&&i>=o){const g=Ie.componentsLimits.indexOf(o),p=g>=0&&g<Ie.componentsLimits.length-1;if((u=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&u.map.onObjectsLimit&&((d=(h=this.control.room)==null?void 0:h.callbacks)==null||d.dispatch("onObjectsLimit",N=>N(o,p))),!p){this.control.room.logger.error(`exceeds the limit of ${o} components, current: ${i}`),(f=this.control.room)==null||f.disconnect().then(()=>{var N,v,I,k,w;(I=(v=(N=this.control.room)==null?void 0:N.callbacks)==null?void 0:v.listeners)!=null&&I.map.onKickedWithReason&&((w=(k=this.control.room)==null?void 0:k.callbacks)==null||w.dispatch("onKickedWithReason",S=>S("kickByAdmin")))});return}console.warn(`exceeds the limit of ${o} components, current: ${i}`);const m=p?Ie.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${t}`,m)}},2e3,{maxWait:5e3}));y(this,"clearLimitComponents",(e,t)=>{if(t)this.limitNums.delete(`${e}/${t}`);else for(const i of this.limitNums.keys())`${e}/`.indexOf(i)===0&&this.limitNums.delete(i)});Ie.syncInterval=(i||Ie.syncInterval)*.5,this.namespace=Ie.namespace,this.authSpace=Ie.authSpace,this.serviceStorage=this.getNamespaceData(),this.storage=j.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.getLimitNums()}getLimitNum(e){return e>=Ie.componentsLimits[0]?Ie.componentsLimits[1]:Ie.componentsLimits[0]}getLimitNums(){for(const[e,t]of Object.entries(this.storage))if(e&&t){for(const[i,o]of Object.entries(t))if(i&&o){const n=this.getLimitNum(Object.keys(o).length);this.limitNums.set(`${e}/${i}`,n)}}}getViewIdBySecenPath(e){const t=this.getNamespaceData();for(const[i,o]of Object.entries(t))if(o){for(const n of Object.keys(o))if(n===e)return i}}getScenePathData(e){const t=this.getNamespaceData();for(const i of Object.values(t))if(i){for(const o of Object.keys(i))if(o===e)return j.cloneDeep(i[o])}}getStorageData(e,t){const i=this.getNamespaceData();return i&&i[e]&&j.cloneDeep(i[e][t])||void 0}hasSelector(e,t){const i=this.storage&&this.storage[e]&&this.storage[e][t];return!!(i&&Object.keys(i).find(o=>this.isOwn(o)&&this.getLocalId(o)===Q))}addStorageStateListener(e){this.stateDisposer=X.autorun(async()=>{var c,l,u,h,d,f;const t=this.getNamespaceData(),{diffView:i,diffScenePath:o,diffData:n}=this.diffFunByView(this.serviceStorage,t);this.serviceStorage=t;const r={};if(Object.keys(i).length>0)for(const[g,p]of Object.entries(i))p&&!j.isEqual((c=this.storage)==null?void 0:c[g],p.newValue)&&(r.diffView||(r.diffView={}),r.diffView[g]=p,this.storage||(this.storage={}),p.newValue===void 0?delete this.storage[g]:this.storage[g]=p.newValue);if(Object.keys(o).length>0){for(const[g,p]of Object.entries(o))if(p){const{viewId:m,newValue:N}=p;p&&!j.isEqual((u=(l=this.storage)==null?void 0:l[m])==null?void 0:u[g],N)&&(r.diffScenePath||(r.diffScenePath={}),r.diffScenePath[g]=p,this.storage||(this.storage={}),this.storage[m]||(this.storage[m]={}),p.newValue===void 0?delete this.storage[m][g]:this.storage[m][g]=p.newValue)}}if(Object.keys(n).length>0){for(const[g,p]of Object.entries(n))if(p){const{viewId:m,scenePath:N,newValue:v}=p;p&&!j.isEqual((f=(d=(h=this.storage)==null?void 0:h[m])==null?void 0:d[N])==null?void 0:f[g],v)&&(r.diffData||(r.diffData={}),r.diffData[g]=p,this.storage||(this.storage={}),this.storage[m]||(this.storage[m]={}),this.storage[m][N]||(this.storage[m][N]={}),p.newValue===void 0?delete this.storage[m][N][g]:this.storage[m][N][g]=p.newValue)}}Object.keys(r).length>0&&e(r)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,t){const i=Le(e),o=Le(t),n={},r={},c={};for(const l of o)if(!i.includes(l)||e[l]===void 0){n[l]={newValue:t[l],oldValue:void 0};continue}for(const l of i){if(j.isEqual(e[l],t[l]))continue;if(!o.includes(l)||t[l]===void 0){n[l]={newValue:void 0,oldValue:e[l]};continue}const u=this.diffFunByScenePath(e[l],t[l],l);Object.assign(r,u.diffScenePath),Object.assign(c,u.diffData)}return{diffData:c,diffScenePath:r,diffView:n}}diffFunByScenePath(e,t,i){const o=Le(e),n=Le(t),r={},c={};for(const l of n)if(!o.includes(l)||e[l]===void 0){r[l]={newValue:t[l],oldValue:void 0,viewId:i};continue}for(const l of o){if(j.isEqual(e[l],t[l]))continue;if(!n.includes(l)||t[l]===void 0){r[l]={newValue:void 0,oldValue:e[l],viewId:i};continue}const u=this.diffFunByKeys(e[l],t[l],l,i);Object.assign(c,u)}return{diffScenePath:r,diffData:c}}diffFunByKeys(e,t,i,o){const n=Le(e),r=Le(t),c={};for(const l of r)(!n.includes(l)||e[l]===void 0)&&(c[l]={oldValue:void 0,newValue:t[l],viewId:o,scenePath:i});for(const l of n)if(!j.isEqual(e[l],t[l])){if(!r.includes(l)||t[l]===void 0){c[l]={newValue:void 0,oldValue:e[l],viewId:o,scenePath:i};continue}r.includes(l)&&(c[l]={oldValue:e[l],newValue:t[l],viewId:o,scenePath:i})}return c}transformKey(e){return this.uid+je+e}isOwn(e){return e.split(je)[0]===this.uid}dispatch(e){const{type:t,workId:i,ops:o,index:n,opt:r,toolsType:c,removeIds:l,updateNodeOpt:u,op:h,selectIds:d,isSync:f,scenePath:g,viewId:p}=e;if(p)switch(t){case L.Clear:const m={};g&&this.storage[p]&&this.storage[p][g]?(delete this.storage[p][g],this.setState(m,{isSync:f,viewId:p,scenePath:g})):this.storage[p]&&(delete this.storage[p],this.setState(m,{isSync:f,viewId:p,scenePath:""})),Fe(()=>{var w;this.control.pluginManager.dispatchPluginEvent("syncStorage",p,g),(w=this.control.miniMapManager)==null||w.updateMiniMapCamera(p),this.clearLimitComponents(p,g)},Ie.syncInterval);break;case L.CreateWork:if(g&&i&&c&&r){const w=this.isLocalId(i.toString())?this.transformKey(i):i;this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.addRenderPageElementId({viewId:p,scenePath:g,elementId:w.toString()}),this.updateValue(w.toString(),{type:L.CreateWork,workId:i,toolsType:c,opt:r},{isSync:f,viewId:p,scenePath:g})}break;case L.DrawWork:if(g&&i&&typeof n=="number"&&(h!=null&&h.length)){const w=this.isLocalId(i.toString())?this.transformKey(i):i,S=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][w]||void 0;if(S!=null&&S.ops||(S==null?void 0:S.type)===L.FullWork)return;const b=n?((S==null?void 0:S.op)||[]).slice(0,n).concat(h):h||(S==null?void 0:S.op),x=c||(S==null?void 0:S.toolsType),P=r||(S==null?void 0:S.opt),E=u||(S==null?void 0:S.updateNodeOpt);i&&x&&P&&b&&(this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.addRenderPageElementId({viewId:p,scenePath:g,elementId:w.toString()}),this.updateValue(w.toString(),{...S,type:L.DrawWork,workId:i,updateNodeOpt:E,toolsType:x,opt:P,op:b,index:n},{isSync:f,viewId:p,scenePath:g}))}break;case L.FullWork:if(g&&i){const w=this.isLocalId(i.toString())?this.transformKey(i):i,S=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][w]||void 0,b=u||(S==null?void 0:S.updateNodeOpt),x=c||(S==null?void 0:S.toolsType),P=r||(S==null?void 0:S.opt),E=o||(S==null?void 0:S.ops);x&&P&&(this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.addRenderPageElementId({viewId:p,scenePath:g,elementId:w.toString()}),this.updateValue(w.toString(),{type:L.FullWork,updateNodeOpt:b,workId:w,toolsType:x,opt:P,ops:E},{isSync:f,viewId:p,scenePath:g}),Fe(()=>{var R;this.control.pluginManager.dispatchPluginEvent("syncStorage",p,g),(R=this.control.miniMapManager)==null||R.updateMiniMapCamera(p),this.limitComponents(p,g)},Ie.syncInterval))}break;case L.RemoveNode:if(g&&(l!=null&&l.length)){const w=l.map(S=>this.isLocalId(S+"")?this.transformKey(S):S);this.storage[p]&&this.storage[p][g]&&(Object.keys(this.storage[p][g]).map(S=>{w!=null&&w.includes(S)&&(this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.delRenderPageElementId({viewId:p,scenePath:g,elementId:S}),this.updateValue(S,void 0,{isSync:f,viewId:p,scenePath:g}))}),Fe(()=>{var S;this.control.pluginManager.dispatchPluginEvent("syncStorage",p,g),(S=this.control.miniMapManager)==null||S.updateMiniMapCamera(p)},Ie.syncInterval))}break;case L.UpdateNode:if(g&&i&&(u||o||r)){const w=this.isLocalId(i.toString())?this.transformKey(i):i,S=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][w]||void 0;S&&(S.updateNodeOpt=u,(o||h)&&(S.ops=o,S.op=h),r&&(S.opt=r),S.type=L.FullWork,this.updateValue(w.toString(),S,{isSync:f,viewId:p,scenePath:g}),Fe(()=>{var b;(b=this.control.miniMapManager)==null||b.updateMiniMapCamera(p)},Ie.syncInterval))}break;case L.Select:if(!g)return;let N;d!=null&&d.length&&(N=d.map(w=>this.isLocalId(w+"")?this.transformKey(w):w));const v=this.transformKey(Q),I=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][v]||void 0,k=r||(I==null?void 0:I.opt);N&&this.checkOtherSelector(v,N,{isSync:f,viewId:p,scenePath:g}),this.updateValue(v,N&&{type:L.Select,toolsType:T.Selector,opt:k,selectIds:N},{isSync:f,viewId:p,scenePath:g});break}}checkOtherSelector(e,t,i){const{viewId:o,scenePath:n}=i;for(const r of Object.keys(this.storage[o][n]))if(r!==e&&this.getLocalId(r)===Q){const c=this.storage[o][n][r];if(c&&c.selectIds){const l=c.selectIds.filter(u=>!t.includes(u));l.length>0&&(c.selectIds=l),this.updateValue(r,l.length&&c||void 0,i)}}}setState(e,t){const{viewId:i,scenePath:o}=t,n=Le(e);for(let r=0;r<n.length;r++){const c=n[r],l=e[c];typeof l<"u"?(this.storage[i]||(this.storage[i]={}),this.storage[i][o]||(this.storage[i][o]={}),this.storage[i][o][c]=l):delete this.storage[i][o][c]}this.runSyncService(t)}updateValue(e,t,i){const{viewId:o,scenePath:n,storage:r}=i,c=r||this.storage;t===void 0?delete c[o][n][e]:(c[o]||(c[o]={}),c[o][n]||(c[o][n]={}),c[o][n][e]=t),this.runSyncService(i)}runSyncService(e){this.asyncClockState||(this.asyncClockState=!0,setTimeout(()=>{e.isSync?(this.asyncClockState=!1,this.syncSerivice(e)):Fe(()=>{this.asyncClockState=!1,this.syncSerivice(e)},Ie.syncInterval)},e!=null&&e.isSync?0:Ie.syncInterval))}syncSerivice(e={storage:this.storage}){const{storage:t}=e,i=t||this.storage,o=Le(this.serviceStorage),n=Le(i),r=new Map;for(const c of o){if(!n.includes(c)){r.set(c,void 0);continue}j.isEqual(this.serviceStorage[c],i[c])||this.syncViewData(i,c)}for(const c of n)o.includes(c)||r.set(c,i[c]);if(r.size>5)this.syncStorageView(i);else for(const[c,l]of r.entries())this.syncUpdataView(i,c,l)}syncViewData(e,t){const i=Le(this.serviceStorage[t]),o=Le(e[t]),n=new Map;for(const r of i){if(!o.includes(r)){n.set(r,void 0);continue}j.isEqual(this.serviceStorage[t][r],e[t][r])||this.syncScenePathData(e,t,r)}for(const r of o)i.includes(r)||n.set(r,e[t][r]);if(n.size>5)this.syncStorageScenePath(t,e[t]);else for(const[r,c]of n.entries())this.syncUpdataScenePath(e,t,r,c)}syncScenePathData(e,t,i){const o=Le(this.serviceStorage[t][i]),n=Le(e[t][i]),r=new Map;for(const c of o){if(!n.includes(c)){r.set(c,void 0);continue}j.isEqual(this.serviceStorage[t][i][c],e[t][i][c])||r.set(c,e[t][i][c])}for(const c of n)o.includes(c)||r.set(c,e[t][i][c]);if(r.size>5)this.syncStorageKey(t,i,e[t][i]);else for(const[c,l]of r.entries())this.syncUpdataKey(e,t,i,c,l)}syncUpdataView(e,t,i){var n;Object.keys(this.serviceStorage).length?(n=this.plugin)==null||n.updateAttributes([this.namespace,t],i):this.syncStorageView(e)}syncStorageView(e){var t;(t=this.plugin)==null||t.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,t,i,o){var r;Object.keys(this.serviceStorage[t]).length?(r=this.plugin)==null||r.updateAttributes([this.namespace,t,i],o):this.syncStorageScenePath(t,e[t])}syncStorageScenePath(e,t){var i;(i=this.plugin)==null||i.updateAttributes([this.namespace,e],t)}syncUpdataKey(e,t,i,o,n){var c;Object.keys(this.serviceStorage[t][i]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,t,i,o],n):this.syncStorageKey(t,i,e[t][i])}syncStorageKey(e,t,i){var o;(o=this.plugin)==null||o.updateAttributes([this.namespace,e,t],i)}keyTransformWorkId(e){const t=e.split(je);return t.length===2?t[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.removeAuthStateListener(),this.authStorage={}}dispatchPageAuth(e,t=!0){var l,u,h,d,f,g,p,m,N,v,I,k,w,S,b,x,P,E,R,O,D,A,G,ne,q,Z,H,_,ie,K,ue,ee,ce,J,$,de,ge,Re;const{operation:i,viewId:o,scenePath:n,pageId:r,pageData:c}=e;switch(i){case ze.addPage:{if(!o||!n||!r)return;const ve=[this.authSpace];Object.keys(this.authStorage).length&&ve.push("pageAuth");const we=this.authStorage.pageAuth||{};this.authStorage.pageAuth=we,Object.keys(we).length&&ve.push(o),we[o]=we[o]||{},Object.keys(we[o]).length&&ve.push(n),we[o][n]=we[o][n]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(we[o][n].pages).length&&ve.push("pages",r);const rt={};if(c!=null&&c.elementIds)for(const be of c.elementIds.keys())rt[be]=!0;we[o][n].pages[r]=rt,t&&(ve.length===1?(l=this.plugin)==null||l.updateAttributes(ve,j.cloneDeep(this.authStorage)):ve.length===2?(u=this.plugin)==null||u.updateAttributes(ve,j.cloneDeep(we)):ve.length===3?(h=this.plugin)==null||h.updateAttributes(ve,j.cloneDeep(we[o])):ve.length===4?(d=this.plugin)==null||d.updateAttributes(ve,j.cloneDeep(we[o][n])):(f=this.plugin)==null||f.updateAttributes(ve,j.cloneDeep(rt)));return}case ze.renderPage:{if(!o||!n||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[o]&&this.authStorage.pageAuth[o][n]&&c.render!==this.authStorage.pageAuth[o][n].render&&(this.authStorage.pageAuth[o][n].render=c.render,t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",o,n,"render"],c.render)));return}case ze.deletePage:{if(!o||!n||!r)return;(I=(v=(N=(m=(p=this.authStorage)==null?void 0:p.pageAuth)==null?void 0:m[o])==null?void 0:N[n])==null?void 0:v.pages)!=null&&I[r]&&(delete this.authStorage.pageAuth[o][n].pages[r],t&&((k=this.plugin)==null||k.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r],void 0)));return}case ze.clearPage:{if(!o||!n||!r)return;(P=(x=(b=(S=(w=this.authStorage)==null?void 0:w.pageAuth)==null?void 0:S[o])==null?void 0:b[n])==null?void 0:x.pages)!=null&&P[r]&&(delete this.authStorage.pageAuth[o][n].pages[r],t&&((E=this.plugin)==null||E.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r],{})));return}case ze.addElement:{if(!o||!n||!r||!(c!=null&&c.elementId))return;(G=(A=(D=(O=(R=this.authStorage)==null?void 0:R.pageAuth)==null?void 0:O[o])==null?void 0:D[n])==null?void 0:A.pages)!=null&&G[r]&&(this.authStorage.pageAuth[o][n].pages[r][c.elementId]=!0,t&&((ne=this.plugin)==null||ne.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r,c.elementId],!0)));return}case ze.deleteElement:{if(!o||!n||!r||!(c!=null&&c.elementId))return;(K=(ie=(_=(H=(Z=(q=this.authStorage)==null?void 0:q.pageAuth)==null?void 0:Z[o])==null?void 0:H[n])==null?void 0:_.pages)==null?void 0:ie[r])!=null&&K[c.elementId]&&(delete this.authStorage.pageAuth[o][n].pages[r][c.elementId],t&&((ue=this.plugin)==null||ue.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r,c.elementId],void 0)));return}case ze.clearViewScenePath:{if(!o||!n)return;(J=(ce=(ee=this.authStorage)==null?void 0:ee.pageAuth)==null?void 0:ce[o])!=null&&J[n]&&(delete this.authStorage.pageAuth[o][n],t&&(($=this.plugin)==null||$.updateAttributes([this.authSpace,"pageAuth",o,n],void 0)));return}case ze.clearView:{if(!o)return;(ge=(de=this.authStorage)==null?void 0:de.pageAuth)!=null&&ge[o]&&(delete this.authStorage.pageAuth[o],t&&((Re=this.plugin)==null||Re.updateAttributes([this.authSpace,"pageAuth",o],void 0)));return}}}dispatchRenderAuth(e,t=!0){var l,u,h,d,f,g,p,m,N,v,I,k,w,S,b,x,P,E,R,O;const{operation:i,viewId:o,uid:n,renderData:r,isClear:c}=e;if(o)switch(i){case Ge.setAuth:{if(!r||r.render===void 0&&r.hide===void 0&&r.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[o]&&(delete this.authStorage.renderAuth[o],t&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",o],void 0)));return}const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]={},this.authStorage.renderAuth=A;const{render:G,hide:ne,clear:q}=r;if(G===!0)A[o].render=!0;else if(j.isSet(G)){A[o].render={};for(const Z of G.keys())A[o].render[Z]=!0}if(ne===!0)A[o].hide=!0;else if(j.isSet(ne)){A[o].hide={};for(const Z of ne.keys())A[o].hide[Z]=!0}if(q===!0)A[o].clear=!0;else if(j.isSet(q)){A[o].clear={};for(const Z of q.keys())A[o].clear[Z]=!0}t&&(D.length===1?(u=this.plugin)==null||u.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(h=this.plugin)==null||h.updateAttributes(D,j.cloneDeep(A)):(d=this.plugin)==null||d.updateAttributes(D,j.cloneDeep(A[o])));return}case Ge.setShow:{if(!n)return;const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]=A[o]||{},this.authStorage.renderAuth=A,Object.keys(A[o]).length&&D.push("render"),A[o].render=A[o].render||{},A[o].render!==!0&&(Object.keys(A[o].render).length&&D.push(n),A[o].render[n]=!0),A[o].hide!==!0&&((f=A[o].hide)!=null&&f[n])&&(delete A[o].hide[n],t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",o,"hide",n],void 0))),t&&(D.length===1?(p=this.plugin)==null||p.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(m=this.plugin)==null||m.updateAttributes(D,j.cloneDeep(A)):D.length===3?(N=this.plugin)==null||N.updateAttributes(D,j.cloneDeep(A[o])):(v=this.plugin)==null||v.updateAttributes(D,!0));return}case Ge.setHide:{if(!n)return;const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]=A[o]||{},this.authStorage.renderAuth=A,Object.keys(A[o]).length&&D.push("hide"),A[o].hide=A[o].hide||{},A[o].hide!==!0&&(Object.keys(A[o].hide).length&&D.push(n),A[o].hide[n]=!0),A[o].render!==!0&&((I=A[o].render)!=null&&I[n])&&(delete A[o].render[n],t&&((k=this.plugin)==null||k.updateAttributes([this.authSpace,"renderAuth",o,"render",n],void 0))),t&&(D.length===1?(w=this.plugin)==null||w.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(S=this.plugin)==null||S.updateAttributes(D,j.cloneDeep(A)):D.length===3?(b=this.plugin)==null||b.updateAttributes(D,j.cloneDeep(A[o])):(x=this.plugin)==null||x.updateAttributes(D,!0));return}case Ge.setClear:{if(!n)return;const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]=A[o]||{},this.authStorage.renderAuth=A,Object.keys(A[o]).length&&D.push("clear"),A[o].clear=A[o].clear||{},A[o].clear!==!0&&(Object.keys(A[o].clear).length&&D.push(n),c?A[o].clear[n]=!0:delete A[o].clear[n]),t&&(D.length===1?(P=this.plugin)==null||P.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(E=this.plugin)==null||E.updateAttributes(D,j.cloneDeep(A)):D.length===3?(R=this.plugin)==null||R.updateAttributes(D,j.cloneDeep(A[o])):(O=this.plugin)==null||O.updateAttributes(D,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=X.autorun(async()=>{const t=this.getAuthSpaceData(),{renderAuth:i,pageAuth:o}=t;let n,r;j.isEqual(i,this.authStorage.renderAuth)||(n=this.diffAuthFun(this.authStorage.renderAuth||{},i||{}),this.authStorage.renderAuth=i),j.isEqual(o,this.authStorage.pageAuth)||(r=this.diffAuthPageFun(this.authStorage.pageAuth||{},o||{}),this.authStorage.pageAuth=o),(n||r)&&e(n,r)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,t){const i=Le(e),o=Le(t),n={};for(const r of o)if(!i.includes(r)||e[r]===void 0){n[r]={newValue:t[r],oldValue:void 0};continue}for(const r of i)if(!j.isEqual(e[r],t[r])){if(!o.includes(r)||t[r]===void 0){n[r]={newValue:void 0,oldValue:e[r]};continue}n[r]={newValue:t[r],oldValue:e[r]}}return n}diffAuthPageFun(e,t){const i=Le(e),o=Le(t),n={};for(const r of o)if(!i.includes(r)||e[r]===void 0){n[r]={newValue:t[r],oldValue:void 0};continue}for(const r of i)if(!j.isEqual(e[r],t[r])){if(!o.includes(r)||t[r]===void 0){n[r]={newValue:void 0,oldValue:e[r]};continue}n[r]={newValue:t[r],oldValue:e[r]}}return n}};y(Ie,"namespace","PluginState"),y(Ie,"authSpace","PluginAuth"),y(Ie,"syncInterval",500),y(Ie,"componentsLimits",[500,1e3]);let Es=Ie;class bM{constructor(){y(this,"roomMembers",[]);y(this,"onChangeHooks",new Set)}setRoomMembers(s){this.executChangeUidHook(this.roomMembers,s),this.roomMembers=s}executChangeUidHook(s,e){const t={online:e.map(i=>{var o;return((o=i.payload)==null?void 0:o.uid)||i.session}),offline:s.map(i=>{var o;return((o=i.payload)==null?void 0:o.uid)||i.session})};this.onChangeHooks.forEach(i=>i(t))}getAllRoomMembers(){return this.roomMembers}getRoomMember(s){return this.roomMembers.find(e=>{var t;return((t=e.payload)==null?void 0:t.uid)===s})}isOnLine(s){return!!this.getRoomMember(s)}onUidChangeHook(s){this.onChangeHooks.add(s)}destroy(){this.onChangeHooks.clear()}}var Xe=(a=>(a[a.Text=1]="Text",a[a.Shape=2]="Shape",a))(Xe||{});const Ae=class Ae{createProxy(s){const e=new Proxy(s,{get(t,i,o){const n=Ae.interceptors.hasOwnProperty(i)?Ae.interceptors:t;return Reflect.get(n,i,o)}});return Ae.proxyToRaw.set(e,s),e}};y(Ae,"proxyToRaw",new WeakMap),y(Ae,"interceptors",{entries(...s){return Ae.proxyToRaw.get(this).entries(...s)},forEach(...s){return Ae.proxyToRaw.get(this).forEach(...s)},size(){return Ae.proxyToRaw.get(this).size},get(s){return Ae.proxyToRaw.get(this).get(s)},set(s,e){return Ae.proxyToRaw.get(this).set(s,e)},delete(s,e){return Ae.proxyToRaw.get(this).delete(s)},clear(){return Ae.proxyToRaw.get(this).clear()}});let ct=Ae;class xM{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"editors");y(this,"activeId");y(this,"proxyMap");y(this,"taskqueue",new Map);const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t;const i=new Map;this.proxyMap=new ct;const o=this,n=ct.interceptors.set;ct.interceptors.set=function(c,l){return o.interceptors.set(c,l),n.call(this,c,l)};const r=ct.interceptors.delete;ct.interceptors.delete=function(c,l){return o.interceptors.delete(c,l),r.call(this,c)},this.editors=this.proxyMap.createProxy(i)}get collector(){return this.control.collector}filterEditor(s){const e=new Map;return this.editors.forEach((t,i)=>{t.viewId===s&&e.set(i,t)}),e}get interceptors(){return{set:(s,e)=>{var f,g,p,m,N,v,I,k;if(!this.collector)return!0;const{viewId:t,scenePath:i,canSync:o,canWorker:n,type:r,opt:c,dataType:l}=e;if(!n&&!o)return!0;const h=((f=this.collector)==null?void 0:f.isLocalId(s))?(g=this.collector)==null?void 0:g.transformKey(s):s,d=((p=this.collector)==null?void 0:p.storage[t])&&this.collector.storage[t][i]&&this.collector.storage[t][i][h]||void 0;d?d.toolsType===T.Text&&(n&&(this.control.worker.queryTaskBatchData({workId:s,msgType:L.UpdateNode}).forEach(w=>{var S;(S=this.control.worker)==null||S.taskBatchData.delete(w)}),(I=this.control.worker)==null||I.taskBatchData.add({workId:s,msgType:L.UpdateNode,dataType:l||B.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:i,willRefresh:!0}),(k=this.control.worker)==null||k.runAnimation()),o&&Fe(()=>{var w;(w=this.collector)==null||w.dispatch({type:L.UpdateNode,workId:s,toolsType:T.Text,opt:c,viewId:t,scenePath:i})},this.control.worker.maxLastSyncTime)):r===Xe.Text&&(o&&((m=this.collector)==null||m.dispatch({type:c.text&&L.FullWork||L.CreateWork,workId:s,toolsType:T.Text,opt:c,isSync:!0,viewId:t,scenePath:i})),n&&((N=this.control.worker)==null||N.taskBatchData.add({workId:s,msgType:c.text&&L.FullWork||L.CreateWork,dataType:l||B.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:i,willRefresh:!0}),(v=this.control.worker)==null||v.runAnimation()))},delete:s=>{var r,c;if(!this.collector)return!0;const e=this.editors.get(s);if(!e)return!0;const{viewId:t,scenePath:i,canSync:o,canWorker:n}=e;if(!n&&!o)return!0;n&&((r=this.control.worker)==null||r.taskBatchData.add({workId:s,toolsType:T.Text,msgType:L.RemoveNode,dataType:B.Local,viewId:t,scenePath:i,willRefresh:!0}),(c=this.control.worker)==null||c.runAnimation()),o&&Fe(()=>{var l;(l=this.collector)==null||l.dispatch({type:L.RemoveNode,removeIds:[s],toolsType:T.Text,viewId:t,scenePath:i})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(s,e){var o,n,r,c;const t=(o=this.control.viewContainerManager)==null?void 0:o.transformToScenePoint(s,e),i=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);e&&i&&((r=this.control.worker)==null||r.taskBatchData.add({msgType:L.GetTextActive,dataType:B.Local,op:t,viewId:e,scenePath:i}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let s=this.activeId;for(const[t,i]of this.editors.entries())if(i.opt.uid&&i.opt.uid===((e=this.collector)==null?void 0:e.uid)){s=t;break}if(s){const t=this.editors.get(s);(t==null?void 0:t.opt.text)&&(t==null?void 0:t.opt.text.replace(/\s*,/g,""))?this.unActive(s):this.delete(s,!0,!0)}}onCameraChange(s,e){var t,i;for(const[o,n]of this.editors.entries())if(n.viewId===e){const{boxPoint:r,boxSize:c}=n.opt,l=r&&((t=this.control.viewContainerManager)==null?void 0:t.transformToOriginPoint(r,n.viewId)),u=(i=this.control.viewContainerManager)==null?void 0:i.getCurScenePath(e);if(u&&e){const h={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:n.opt,scale:s.scale,type:Xe.Text,viewId:e,scenePath:u,canWorker:!1,canSync:!1};this.editors.set(o,h),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(s){var g,p;const{workId:e,opt:t,msgType:i,viewId:o,scenePath:n,dataType:r}=s;if(!e||!o||!n)return;const c=e.toString();if(i===L.RemoveNode){this.delete(c,!0,!0);return}const{boxPoint:l,boxSize:u}=t,h=l&&((g=this.control.viewContainerManager)==null?void 0:g.transformToOriginPoint(l,o)),d=this.control.viewContainerManager.getView(o),f={x:h&&h[0]||0,y:h&&h[1]||0,w:u&&u[0]||0,h:u&&u[1]||0,opt:t,type:Xe.Text,canWorker:!0,canSync:!1,dataType:r,scale:((p=d==null?void 0:d.cameraOpt)==null?void 0:p.scale)||1,viewId:o,scenePath:n};this.editors.set(c,f),r===B.Service&&t.workState===z.Done&&this.activeId===c&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(o,this.activeId)}updateForViewEdited(s,e){var i;this.editors.set(s,e);const t=(i=this.taskqueue.get(s))==null?void 0:i.resolve;t&&t(e)}active(s){var t;const e=this.editors.get(s);e&&e.viewId&&(e.opt.workState=z.Start,e.opt.uid=(t=this.collector)==null?void 0:t.uid,this.activeId=s,e.canWorker=!0,e.canSync=!0,this.editors.set(s,e),this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}unActive(s){const e=this.editors.get(s);e&&e.viewId&&(e.opt.workState=z.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(s,e),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}createTextForMasterController(s,e){var n;const{workId:t,isActive:i,...o}=s;e&&this.internalMsgEmitter.emit("addUndoTicker",e,o.viewId),o.opt.uid=(n=this.collector)==null?void 0:n.uid,i&&(this.activeId=t),o.dataType=B.Local,o.canWorker=!0,o.canSync=!0,this.editors.set(t,o),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId)}updateTextForMasterController(s,e){var n;const{workId:t,...i}=s;e&&this.internalMsgEmitter.emit("addUndoTicker",e,i.viewId);const o=this.editors.get(t)||{};i.opt&&(i.opt.uid=(n=this.collector)==null?void 0:n.uid),i.dataType=B.Local,this.editors.set(t,{...o,...i}),this.control.viewContainerManager.setActiveTextEditor(i.viewId,this.activeId)}async updateTextControllerWithEffectAsync(s,e){var u;const{workId:t,...i}=s;e&&this.internalMsgEmitter.emit("addUndoTicker",e,i.viewId);const o=this.editors.get(t)||{};i.opt&&(i.opt.uid=(u=this.collector)==null?void 0:u.uid),i.dataType=B.Local;const n={...o,...i};if(this.editors.set(t,n),this.control.viewContainerManager.setActiveTextEditor(i.viewId,this.activeId),this.taskqueue.has(t)){const h=this.taskqueue.get(t);return h&&(h.clocker&&clearTimeout(h.clocker),this.taskqueue.delete(t)),await this.updateTextControllerWithEffectAsync(s)}const r=setTimeout(()=>{var d;const h=(d=this.taskqueue.get(t))==null?void 0:d.resolve;h&&h(n)},50),c=await new Promise(h=>{this.taskqueue.set(t,{resolve:h,clocker:r})}),l=this.taskqueue.get(t);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(t)),c}updateTextForWorker(s,e){const{workId:t,isActive:i,...o}=s,r={...this.editors.get(t)||{},...o};if(i){r.canWorker=!1,r.canSync=!1,this.editors.set(t,r),this.active(t);return}this.editors.set(t,r),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId),e&&this.internalMsgEmitter.emit("addUndoTicker",e,o.viewId)}get(s){return this.editors.get(s)}delete(s,e,t){const i=this.editors.get(s);if(i){const o=i.viewId;i.canSync=e,i.canWorker=t,this.editors.delete(s),this.activeId===s&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(o,this.activeId)}}deleteBatch(s,e,t){const i=new Set;for(const o of s){const n=this.editors.get(o);if(n){const r=n.viewId;n.canSync=e,n.canWorker=t,this.editors.delete(o),this.activeId===o&&(this.activeId=void 0),i.add(r)}}for(const o of i)this.control.viewContainerManager.setActiveTextEditor(o,this.activeId)}clear(s,e){this.editors.forEach((t,i)=>{t.viewId===s&&(e&&(t.canSync=!1),t.canWorker=!1,this.editors.delete(i))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(s,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}}class LM{constructor(s){y(this,"expirationTime",Se.cursor.expirationTime);y(this,"internalMsgEmitter");y(this,"control");y(this,"eventName","applianc-cursor");y(this,"displayer");y(this,"roomMember");y(this,"animationId");y(this,"maxLastSyncTime",Se.syncOpt.interval);y(this,"willSendEventWorkers",[]);y(this,"willConsumeEventWorkers",new Map);y(this,"sendEventTimerId");y(this,"animationDrawWorkers",new Map);y(this,"animationEventWorkers",new Map);y(this,"cursorInfoMap",new Map);y(this,"doneRenderCursorInfoMap",new Map);y(this,"eventCollector");var i,o;const{control:e,internalMsgEmitter:t}=s;this.internalMsgEmitter=t,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=((o=(i=this.control.pluginOptions)==null?void 0:i.syncOpt)==null?void 0:o.interval)||this.maxLastSyncTime}activeCollector(){this.control.plugin&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(s){var r;const{event:e,payload:t}=s;if(e!==this.eventName)return;const{uid:i,op:o,type:n}=t;if(((r=this.control.collector)==null?void 0:r.uid)!==i&&n===Ot.Cursor&&(o!=null&&o.length)){const c=this.willConsumeEventWorkers.get(i)||[];for(const l of o){const{viewId:u}=l;j.isNumber(l.consumPoint[0])&&j.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,u)),this.control.renderControl.isFilterCursor(u)&&c.unshift({...l,timestamp:Date.now()})}this.willConsumeEventWorkers.set(i,c),this.runAnimation()}}onFocusViewChange(){this.checkDrawWorks(),this.runAnimation()}updateRoomMembers(s){const{offline:e}=s;for(const t of this.cursorInfoMap.keys())t&&e.includes(t)&&this.cursorInfoMap.delete(t)}getKey(s,e){return`${s}${je}${e}`}getUidAndviewId(s){const[e,t]=s.split(je);return{uid:e,viewId:t}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const s=this.control.viewContainerManager.focuedViewId;for(const[t,i]of this.animationDrawWorkers.entries()){const{viewId:o,uid:n}=this.getUidAndviewId(t);n!==((e=this.control.collector)==null?void 0:e.uid)&&o!==s&&i.workState===z.Done&&(i.consumPoint=[void 0,void 0])}}animationCursor(){this.animationId=void 0;const s=Date.now();for(const[t,i]of this.animationDrawWorkers.entries()){const{uid:o,viewId:n}=this.getUidAndviewId(t),r=this.roomMember.getRoomMember(o);if(!r){this.animationDrawWorkers.delete(t);continue}const{consumPoint:c,timestamp:l,workState:u}=i,h=this.cursorInfoMap.get(n)||new Map;c&&j.isNumber(c[0])&&j.isNumber(c[1])&&l+this.expirationTime>s?h.set(r.memberId,{x:c[0],y:c[1],roomMember:r,timestamp:l,type:1,workState:u}):h.delete(r.memberId),h.size?this.cursorInfoMap.set(n,h):this.cursorInfoMap.delete(n),this.animationDrawWorkers.delete(t)}const e=new Set;for(const[t,i]of this.cursorInfoMap.entries())if(i)for(const[o,n]of i.entries())n.type===1&&n.workState!==z.Done&&e.add(o);else this.cursorInfoMap.delete(t);for(const[t,i]of this.willConsumeEventWorkers.entries()){const o=this.roomMember.getRoomMember(t);if(j.isNumber(o==null?void 0:o.memberId)&&!e.has(o.memberId)){const n=i.pop();n?this.animationEventWorkers.set(t,n):this.willConsumeEventWorkers.delete(t)}}for(const[t,i]of this.animationEventWorkers.entries()){const o=this.roomMember.getRoomMember(t);if(!o){this.animationEventWorkers.delete(t);continue}const{viewId:n,consumPoint:r,timestamp:c}=i,l=this.cursorInfoMap.get(n)||new Map;r&&j.isNumber(r[0])&&j.isNumber(r[1])&&c+this.expirationTime>s?l.set(o.memberId,{x:r[0],y:r[1],roomMember:o,timestamp:c,type:0}):l.delete(o.memberId),l.size?this.cursorInfoMap.set(n,l):this.cursorInfoMap.delete(n),this.animationEventWorkers.delete(t)}for(const t of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(t)||(this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([se.Cursor,t],[]));for(const[t,i]of this.cursorInfoMap.entries())if(i!=null&&i.size){const o=[];for(const[r,c]of i.entries()){const{timestamp:l,...u}=c;l+this.expirationTime>s?o.push(u):(i.delete(r),i.size===0&&(this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([se.Cursor,t],[])))}const n=this.doneRenderCursorInfoMap.get(t);j.isEqual(n,o)||(this.doneRenderCursorInfoMap.set(t,o),this.internalMsgEmitter.emit([se.Cursor,t],o))}else this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([se.Cursor,t],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(s,e){if(this.displayer&&X.isRoom(this.displayer)){const t=j.isNumber(s[0])&&j.isNumber(s[1])&&this.control.viewContainerManager.transformToScenePoint(s,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:t,viewId:e}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var s;this.displayer.dispatchMagixEvent(this.eventName,{type:Ot.Cursor,op:j.cloneDeep(this.willSendEventWorkers),uid:(s=this.control.collector)==null?void 0:s.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(s){var n;const{op:e,uid:t,workState:i,viewId:o}=s;if(t&&e&&i&&o){const r=this.roomMember.getRoomMember(t);if(!r||t===((n=this.control.collector)==null?void 0:n.uid))return;const c=this.getKey(t,o);let l=[void 0,void 0];if(j.isNumber(e[0])&&j.isNumber(e[1])){const[h,d]=this.control.viewContainerManager.transformToOriginPoint(e,o);l=[h,d]}if(i===z.Start){for(const h of this.cursorInfoMap.values())if(h!=null&&h.size)for(const d of h.keys())d===r.memberId&&h.delete(d)}const u={consumPoint:l,workState:i,viewId:o,timestamp:Date.now()};if(i===z.Start||i===z.Done){const h=this.willConsumeEventWorkers.get(t);i===z.Start&&h&&this.willConsumeEventWorkers.delete(t),h&&i===z.Done&&(u.timestamp=u.timestamp-this.expirationTime)}this.animationDrawWorkers.set(c,u),this.runAnimation()}}unabled(){var s;this.displayer&&X.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:Ot.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(s=this.control.collector)==null?void 0:s.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0))}clearViewCursor(s){var e,t,i;for(const[o]of this.animationDrawWorkers.entries()){const{uid:n}=this.getUidAndviewId(o);n===((e=this.control.collector)==null?void 0:e.uid)&&s===s&&this.animationDrawWorkers.delete(o)}for(const[o]of this.willConsumeEventWorkers.entries())o===((t=this.control.collector)==null?void 0:t.uid)&&this.willConsumeEventWorkers.delete(o);for(const[o]of this.animationEventWorkers.entries())o===((i=this.control.collector)==null?void 0:i.uid)&&this.animationEventWorkers.delete(o);for(const[o]of this.cursorInfoMap.entries())o===o&&(this.cursorInfoMap.delete(o),this.doneRenderCursorInfoMap.delete(o),this.internalMsgEmitter.emit([se.Cursor,o],[]))}stopAnimation(){this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.cursorInfoMap.clear()}destroy(){var s;(s=this.displayer)==null||s.removeMagixEventListener(this.eventName),this.stopAnimation()}}class Ve{constructor(){y(this,"useEmtMsg");y(this,"emtType");y(this,"control");y(this,"mainEngine")}static dispatch(s,e,t){var i;(i=Te.InternalMsgEmitter)==null||i.emit([s,e],t)}get serviceColloctor(){return this.control.collector}registerForMainEngine(s,e){return this.emtType=s,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collect.bind(this)),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collect.bind(this))}collectForLocalWorker(s,e){var t,i,o;for(const[n,r]of s)(t=this.mainEngine)==null||t.queryTaskBatchData(r).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(i=this.mainEngine)==null||i.taskBatchData.add(n);if(e){this.mainEngine.consume();return}(o=this.mainEngine)==null||o.runAnimation()}collectForServiceWorker(s){Fe(()=>{s.forEach(e=>{var t;(t=this.serviceColloctor)==null||t.dispatch(e)})},this.mainEngine.maxLastSyncTime)}pause(){var s;if(this.lastEmtData){this.useEmtMsg=!0;const e={...this.lastEmtData,workState:z.Done};this.collect(e,!0),(s=Te.InternalMsgEmitter)==null||s.emit(F.ActiveMethod,!1)}}recover(){var s;this.useEmtMsg&&Te.InternalMsgEmitter.hasListeners(F.ActiveMethod)&&((s=Te.InternalMsgEmitter)==null||s.emit(F.ActiveMethod,!0))}}class PM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.CopyNode)}collect(e){var c;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:i}=e,o=this.control.viewContainerManager.getView(i);if(!(o!=null&&o.displayer))return;const n=o.focusScenePath,r=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",r,i);for(const l of t){const u=l.toString(),d=this.serviceColloctor.isLocalId(u)?this.serviceColloctor.transformKey(l):u,f=(c=this.serviceColloctor.getStorageData(i,n))==null?void 0:c[d];if(f){if(l===Q){const g=f&&this.copySelector({viewId:i,store:f});g&&this.pasteSelector({...g,viewId:i,scenePath:n,undoTickerId:r});break}if(f.toolsType===T.Text&&f.opt&&f.opt.workState&&f.opt.workState!==z.Done){const g=f&&this.copyText({viewId:i,store:f});g&&this.pasteText({...g,viewId:i,scenePath:n,key:d,store:f,undoTickerId:r});break}}}}copyText(e){const{viewId:t,store:i}=e,o=this.control.viewContainerManager.getView(t);if(!this.serviceColloctor||!o)return;const n=o==null?void 0:o.cameraOpt,r=n&&[n.centerX,n.centerY],c=i.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:r,textCenter:l}}pasteText(e){var m,N;const{bgCenter:t,textCenter:i,store:o,key:n,viewId:r,scenePath:c,undoTickerId:l}=e,u=this.control.viewContainerManager.getView(r);if(!this.serviceColloctor||!u)return;const h=Math.floor(Math.random()*30+1),d=((m=u.cameraOpt)==null?void 0:m.scale)||1,f=t&&i&&[t[0]-i[0]+h,t[1]-i[1]+h]||[h/d,h/d],p=(this.serviceColloctor.isLocalId(n)?n:this.serviceColloctor.getLocalId(n.toString()))+"-"+l;if(o.toolsType===T.Text&&o.opt){const v=o.opt;if(v&&v.boxPoint&&v.text){v.workState=z.Done;const I=v.boxPoint;v.boxPoint=[I[0]+f[0],I[1]+f[1]],v.workState=z.Done;const k=this.control.viewContainerManager.transformToOriginPoint(v.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:p,x:k[0],y:k[1],opt:v,scale:((N=u.cameraOpt)==null?void 0:N.scale)||1,type:Xe.Text,isActive:!1,viewId:r,scenePath:c}),this.collectForServiceWorker([{...o,opt:v,type:L.FullWork,workId:p,viewId:r,scenePath:c}])}}}copySelector(e){var p,m,N,v,I,k,w,S,b;const{viewId:t,store:i}=e,o=this.control.viewContainerManager.getView(t),n=i.selectIds;if(!this.serviceColloctor||!(n!=null&&n.length)||!o)return;const r=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((p=o.cameraOpt)==null?void 0:p.centerX)||0,centerY:((m=o.cameraOpt)==null?void 0:m.centerY)||0,scale:((N=o.cameraOpt)==null?void 0:N.scale)||1}},l=this.control.hasOffscreenCanvas()&&((v=o.displayer.canvasBgRef.current)==null?void 0:v.getBoundingClientRect())||((I=o.displayer.canvasContainerRef.current)==null?void 0:I.getBoundingClientRect()),u=(w=(k=o.displayer)==null?void 0:k.floatBarRef.current)==null?void 0:w.getBoundingClientRect(),h=l&&[l.x+l.width/2,l.y+l.height/2],d=u&&[u.x+u.width/2,u.y+u.height/2],f=h&&o.viewData&&o.viewData.convertToPointInWorld({x:h[0],y:h[1]}),g=d&&o.viewData&&o.viewData.convertToPointInWorld({x:d[0],y:d[1]});f&&g&&(c.offset={x:f.x-g.x,y:f.y-g.y});for(const x of n){const P=(b=(S=this.serviceColloctor)==null?void 0:S.getStorageData(o.id,o.focusScenePath))==null?void 0:b[x];P&&r.set(x,P)}return{copyStores:r,copyCoordInfo:c}}pasteSelector(e){var m,N;const{copyStores:t,copyCoordInfo:i,viewId:o,scenePath:n,undoTickerId:r}=e,c=this.control.viewContainerManager.getView(o);if(!t.size||!this.serviceColloctor||!c)return;const{offset:l,cameraOpt:u}=i,{scale:h}=u,d=Math.floor(Math.random()*30+1),f=l&&[l.x+d,l.y+d]||[d/h,d/h],g=[],p=[];for(const[v,I]of t.entries()){const w=(this.serviceColloctor.isLocalId(v)?v:this.serviceColloctor.getLocalId(v.toString()))+"-"+r,S={useAnimation:!1};if(I.toolsType===T.Text&&I.opt){const x=I.opt;if(x&&x.boxPoint&&x.text){x.workState=z.Done;const P=x.boxPoint;x.boxPoint=[P[0]+f[0],P[1]+f[1]],x.workState=z.Done;const E=this.control.viewContainerManager.transformToOriginPoint(x.boxPoint,o);this.control.textEditorManager.createTextForMasterController({workId:w,x:E[0],y:E[1],opt:x,scale:((m=c.cameraOpt)==null?void 0:m.scale)||1,type:Xe.Text,isActive:!1,viewId:o,scenePath:n})}p.push({...I,opt:x,type:L.FullWork,workId:w,viewId:o,scenePath:n});continue}if(I.toolsType===T.Image&&(I.opt.uuid=w,I.opt.centerX=I.opt.centerX+f[0],I.opt.centerY=I.opt.centerY+f[1]),I.ops){const x=nt(I.ops).map((E,R)=>{const O=R%3;return O===0?E+f[0]:O===1?E+f[1]:E}),P=Ye(x);I.ops=P}const b=((N=I==null?void 0:I.opt)==null?void 0:N.eraserlines)??[];if(b.length)for(const x of Object.values(b)){const{op:P}=x;for(let E=0;E<P.length;E++){const R=P[E].map((O,D)=>D%2?O+f[1]:O+f[0]);x.op[E]=R}}p.push({...I,updateNodeOpt:S,type:L.FullWork,workId:w,viewId:o,scenePath:n}),g.push([{...I,updateNodeOpt:S,workId:w,msgType:L.FullWork,dataType:B.Local,emitEventType:F.CopyNode,willSyncService:!1,willRefresh:!0,viewId:o},{workId:w,msgType:L.FullWork,emitEventType:F.CopyNode}])}g.length&&this.collectForLocalWorker(g),p.length&&this.collectForServiceWorker(p)}}function Ft(a,s,e){return"#"+((a<<16)+(s<<8)+e).toString(16).padStart(6,"0")}function Ce(a,s=1){return"rgba("+parseInt("0x"+a.slice(1,3))+","+parseInt("0x"+a.slice(3,5))+","+parseInt("0x"+a.slice(5,7))+","+s+")"}function jt(a,s,e,t=1){return`rgba(${a},${s},${e},${t})`}function ms(a){const s=a.split(","),e=parseInt(s[0].split("(")[1]),t=parseInt(s[1]),i=parseInt(s[2]),o=Number(s[3].split(")")[0]);return[Ft(e,t,i),o]}function Ht(a){const s=a.split(","),e=parseInt(s[0].split("(")[1]),t=parseInt(s[1]),i=parseInt(s[2]),o=Number(s[3].split(")")[0]);return[e,t,i,o]}function Qt(a){return a==="transparent"}class zM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetColorNode);y(this,"undoTickerId")}setTextColor(e,t,i,o){const{fontColor:n,fontBgColor:r}=i;t.opt&&(n&&(t.opt.fontColor=n),r&&(t.opt.fontBgColor=r),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:t.opt,viewId:o,canSync:!0,canWorker:!0}))}collect(e){var v,I;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,strokeColor:i,fillColor:o,fontColor:n,fontBgColor:r,viewId:c,workState:l,thickness:u,strokeType:h}=e,d=this.control.viewContainerManager.getView(c);if(!(d!=null&&d.displayer))return;const f=d.focusScenePath,g=[...t],p=this.serviceColloctor.storage,m=[],N={};for((l===z.Start||!this.undoTickerId&&l===z.Done)&&(this.undoTickerId=Date.now(),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,c));g.length;){const k=g.pop();if(!k)continue;const w=k.toString(),S=this.serviceColloctor.isLocalId(w),b=S?this.serviceColloctor.transformKey(k):w;let x=w;!S&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const P=(I=(v=p==null?void 0:p[c])==null?void 0:v[f])==null?void 0:I[b];if(P){const E=P.updateNodeOpt||{};if(n||r){if(n){E.fontColor=n;const[O,D,A,G]=Ht(n);N.textColor=[O,D,A],N.textOpacity=G}if(r)if(E.fontBgColor=Qt(r)?"transparent":r,Qt(r))N.textBgColor=void 0,N.textBgOpacity=void 0;else{const[O,D,A,G]=Ht(r);N.textBgColor=[O,D,A],N.textBgOpacity=G}if(P.toolsType===T.Text&&P.opt&&l!==z.Start){this.setTextColor(x,ke(P),E,c),l===z.Done&&(this.undoTickerId=void 0);continue}}if(i){E.strokeColor=i;const[O,D,A,G]=Ht(i);N.strokeColor=[O,D,A],N.strokeOpacity=G}if(o)if(E.fillColor=Qt(o)?"transparent":o,Qt(o))N.fillColor=void 0,N.fillOpacity=void 0;else{const[O,D,A,G]=Ht(o);N.fillColor=[O,D,A],N.fillOpacity=G}u&&(E.thickness=u,N.strokeWidth=u),h&&(E.strokeType=h,N.strokeType=h);const R={workId:x,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:E,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c};m.push([R,{workId:x,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}m.length&&(l===z.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(m)),Object.keys(N).length&&setTimeout(()=>{var k;(k=this.control.room)==null||k.setMemberState(N)},0)}}class DM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.ZIndexNode);y(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.min)||0}getMaxZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.max)||0}setMaxZIndex(e,t){const i=this.getMinZIndex(t);this.zIndexMap.set(t,{min:i,max:e})}setMinZIndex(e,t){const i=this.getMaxZIndex(t);this.zIndexMap.set(t,{min:e,max:i})}addMaxLayer(e){const t=this.getMaxZIndex(e)+1;this.setMaxZIndex(t,e)}addMinLayer(e){const t=this.getMinZIndex(e)-1;this.setMinZIndex(t,e)}correct(e){const t=e.sort((i,o)=>i[1]-o[1]);for(let i=1;i<t.length;i++){const o=t[i][1],n=t[i-1][1];o<=n&&(t[i][1]=n+1)}return t}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,layer:i,viewId:o}=e,n=this.control.viewContainerManager.getView(o);if(!(n!=null&&n.displayer))return;const r=n.focusScenePath,c=[...t],l=this.serviceColloctor.storage,u=[],h=[];for(;c.length;){const f=c.pop();if(!f)continue;const g=f.toString(),p=this.serviceColloctor.isLocalId(g),m=p?this.serviceColloctor.transformKey(f):g;let N=g;!p&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N));const v=ke(l[o][r][m]);let I;if(v&&N===Q){if(v.selectIds){h.push(...v.selectIds),h.sort((b,x)=>{var R,O,D,A;const P=((O=(R=l[d(b,this.serviceColloctor)])==null?void 0:R.opt)==null?void 0:O.zIndex)||0,E=((A=(D=l[d(b,this.serviceColloctor)])==null?void 0:D.opt)==null?void 0:A.zIndex)||0;return P>E?1:b<x?-1:0});const k=v.updateNodeOpt||{};k.zIndexLayer=i;const w={workId:f,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:o},S=new Map;i===Rt.Top?(this.addMaxLayer(o),I=this.getMaxZIndex(o)):(this.addMinLayer(o),I=this.getMinZIndex(o)),h.forEach(b=>{var R,O,D,A,G;const x=(R=this.serviceColloctor)==null?void 0:R.isLocalId(b);let P=x&&((O=this.serviceColloctor)==null?void 0:O.transformKey(b))||b;const E=(A=(D=l==null?void 0:l[o])==null?void 0:D[r])==null?void 0:A[P];E&&(!x&&((G=this.serviceColloctor)!=null&&G.isOwn(P))&&(P=this.serviceColloctor.getLocalId(P)),k.zIndex=I,E!=null&&E.opt&&(E.opt.zIndex=I),E!=null&&E.opt&&S.set(P,{updateNodeOpt:E.updateNodeOpt,opt:E.opt}))}),w.selectStore=S,w.willSerializeData=!0,u.push([w,{workId:f,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}continue}}u.length&&this.collectForLocalWorker(u);function d(f,g){return g.isLocalId(f)&&g.transformKey(f)||f}}}class AM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.TranslateNode);y(this,"cachePosition")}collect(e,t){var g,p,m;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,position:o,workState:n,viewId:r}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(r);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,u=[...i],h=(g=this.serviceColloctor)==null?void 0:g.storage,d=[],f=n===z.Start&&Date.now()||void 0;for(f&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",f,r);u.length;){const N=u.pop();if(!N)continue;const v=N.toString(),I=this.serviceColloctor.isLocalId(v),k=I&&this.serviceColloctor.transformKey(N)||v;let w=v;!I&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const S=(m=(p=h==null?void 0:h[r])==null?void 0:p[l])==null?void 0:m[k];if(S&&w===Q){if(S.selectIds){const b=this.control.viewContainerManager.transformToScenePoint([o.x,o.y],r);if(n===z.Start&&(this.cachePosition=b),this.cachePosition){const x=S.updateNodeOpt||{};x.translate=[b[0]-this.cachePosition[0],b[1]-this.cachePosition[1]],x.workState=n;const P={workId:N,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:x,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:r};n===z.Done&&(P.textUpdateForWoker=!0,P.willSerializeData=!0,this.cachePosition=void 0),d.push([P,{workId:N,msgType:L.UpdateNode,emitEventType:this.emitEventType,workState:n}])}}continue}}n===z.Start?this.mainEngine.unWritable():n===z.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length&&this.collectForLocalWorker(d,t)}}class jM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.DeleteNode)}collect(e){var d,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:i}=e,o=this.control.viewContainerManager.getView(i);if(!(o!=null&&o.displayer))return;const n=o.focusScenePath,r=this.serviceColloctor.storage,c=[...t],l=[],u=[],h=Date.now();for(;c.length;){const g=c.pop();if(!g)continue;const p=g.toString(),m=this.serviceColloctor.isLocalId(p),N=m?this.serviceColloctor.transformKey(g):p,v=(f=(d=r==null?void 0:r[i])==null?void 0:d[n])==null?void 0:f[N];if(v){let I=p;if(!m&&this.serviceColloctor.isOwn(I)&&(I=this.serviceColloctor.getLocalId(I)),v.toolsType===T.Text){this.control.textEditorManager.delete(I,!0,!0);continue}u.push(I)}}u.length&&(l.push([{msgType:L.RemoveNode,emitEventType:F.DeleteNode,removeIds:u,dataType:B.Local,willSyncService:!0,willRefresh:!0,viewId:i},void 0]),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,i),this.collectForLocalWorker(l))}}class EM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.ScaleNode);y(this,"targetText",new Map);y(this,"cacheTextInfo",new Map)}async setTextStyle(e,t,i){const o=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t,viewId:i,canSync:!1,canWorker:!1});return{key:e,textInfo:o}}async collect(e,t){var v,I,k,w,S,b,x;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,workState:o,viewId:n,originPoint:r,scenePoint:c,dir:l,scale:u,translate:h}=e;this.lastEmtData=e;const d=this.control.viewContainerManager.getView(n);if(!(d!=null&&d.displayer))return;const f=d.focusScenePath,g=[...i],p=(v=this.serviceColloctor)==null?void 0:v.storage,m=[],N=o===z.Start&&Date.now()||void 0;for(N&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",N,n);g.length;){const P=g.pop();if(!P)continue;const E=P.toString(),R=this.serviceColloctor.isLocalId(E),O=R&&this.serviceColloctor.transformKey(P)||E;let D=E;!R&&this.serviceColloctor.isOwn(D)&&(D=this.serviceColloctor.getLocalId(D));const A=(k=(I=p==null?void 0:p[n])==null?void 0:I[f])==null?void 0:k[O];if(A&&D===Q&&A.selectIds){const G=A.updateNodeOpt||{};if(G.dir=l,G.originPoint=r,G.scenePoint=c,G.workState=o,G.scale=u,G.translate=h,o===z.Start){this.cacheTextInfo.clear();for(const q of A.selectIds){const Z=(w=this.serviceColloctor)==null?void 0:w.isLocalId(q),H=Z&&((S=this.serviceColloctor)==null?void 0:S.transformKey(q))||q;let _=H;!Z&&((b=this.serviceColloctor)!=null&&b.isOwn(H))&&(_=this.serviceColloctor.getLocalId(H));const ie=this.control.textEditorManager.get(_);ie&&o===z.Start&&this.targetText.set(_,ke(ie))}}if(this.targetText.size&&o!==z.Start&&u){const q=[];for(const[H,_]of this.targetText.entries()){const{opt:ie}=_,K=Math.floor(ie.fontSize*u[0]),ue=this.cacheTextInfo.get(H),ee=!ue&&ie.fontSize!==K||ue&&ue.fontSize!==K||!1,ce=(x=this.control.textEditorManager.get(H))==null?void 0:x.opt;if(ee&&ce&&ie.boxSize&&ie.boxPoint){const J=this.setTextStyle(H,{...ce,fontSize:K},n);q.push(J)}}const Z=await Promise.all(q);for(const H of Z)if(H){const{key:_,textInfo:ie}=H;this.cacheTextInfo.set(_,{fontSize:ie.opt.fontSize,boxSize:ie.opt.boxSize,boxPoint:ie.opt.boxPoint})}G.textInfos=this.cacheTextInfo}const ne={workId:P,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:G,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:n};o===z.Done&&(ne.willSerializeData=!0,this.targetText.clear()),m.push([ne,{workId:P,msgType:L.UpdateNode,emitEventType:this.emitEventType,workState:o}]);continue}}o===z.Start?this.mainEngine.unWritable():o===z.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),m.length&&this.collectForLocalWorker(m,t)}}class OM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.RotateNode);y(this,"cacheOriginRotate",0)}collect(e,t){var g,p,m,N,v,I,k;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,angle:o,workState:n,viewId:r}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(r);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,u=[...i],h=(g=this.serviceColloctor)==null?void 0:g.storage,d=[],f=n===z.Start&&Date.now()||void 0;for(f&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",f,r);u.length;){const w=u.pop();if(!w)continue;const S=w.toString(),b=this.serviceColloctor.isLocalId(S),x=b&&this.serviceColloctor.transformKey(w)||S;let P=S;!b&&this.serviceColloctor.isOwn(P)&&(P=this.serviceColloctor.getLocalId(P));const E=(m=(p=h==null?void 0:h[r])==null?void 0:p[l])==null?void 0:m[x];if(E&&P===Q){if(((N=E.selectIds)==null?void 0:N.length)===1){const R=E.selectIds[0];if(n===z.Start){const G=((v=this.serviceColloctor)==null?void 0:v.isLocalId(R))&&((I=this.serviceColloctor)==null?void 0:I.transformKey(R))||R,ne=h[r][l][G];this.cacheOriginRotate=((k=ne==null?void 0:ne.opt)==null?void 0:k.rotate)||0}const O=E.updateNodeOpt||{};O.angle=(o+this.cacheOriginRotate)%360,O.workState=n;const D={workId:w,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:O,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:r};n===z.Done&&(D.willRefreshSelector=!0,D.willSerializeData=!0,this.cacheOriginRotate=0),d.push([D,{workId:w,msgType:L.UpdateNode,emitEventType:this.emitEventType,workState:n}])}continue}}n===z.Start?this.mainEngine.unWritable():n===z.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length&&this.collectForLocalWorker(d,t)}}function RM(a){switch(a){case T.Text:return Xe.Text;case T.SpeechBalloon:case T.Star:case T.Ellipse:case T.Rectangle:case T.Triangle:case T.Rhombus:case T.Polygon:return Xe.Shape}}class WM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetFontStyle);y(this,"timerId")}async setTextStyle(e,t,i,o){const{bold:n,underline:r,lineThrough:c,italic:l,fontSize:u}=i;if(t.toolsType&&RM(t.toolsType)===Xe.Text){t.opt&&(n&&(t.opt.bold=n),j.isBoolean(r)&&(t.opt.underline=r),j.isBoolean(c)&&(t.opt.lineThrough=c),l&&(t.opt.italic=l),u&&(t.opt.fontSize=u));const d=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t.opt,viewId:o,canSync:!1,canWorker:!1});return{key:e,textInfo:d}}}async collect(e){var v,I,k,w,S,b;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,bold:i,italic:o,lineThrough:n,underline:r,viewId:c,fontSize:l}=e,u=this.control.viewContainerManager.getView(c);if(!(u!=null&&u.displayer))return;const h=u.focusScenePath,d=[...t],f=this.serviceColloctor.storage,g={},p=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",p,c);const m=[];for(;d.length;){const x=d.pop();if(!x)continue;const P=x.toString(),E=this.serviceColloctor.isLocalId(P),R=E?this.serviceColloctor.transformKey(x):P;let O=P;!E&&this.serviceColloctor.isOwn(O)&&(O=this.serviceColloctor.getLocalId(O));const D=(I=(v=f==null?void 0:f[c])==null?void 0:v[h])==null?void 0:I[R];if(D){const A=D.updateNodeOpt||{};if(i&&(A.bold=i,g.bold=i==="bold"),o&&(A.italic=o,g.italic=o==="italic"),j.isBoolean(n)&&(A.lineThrough=n,g.lineThrough=n),j.isBoolean(r)&&(A.underline=r,g.underline=r),l&&(A.fontSize=l,g.textSize=l),D.toolsType===T.Text&&D.opt){const G=this.setTextStyle(O,j.cloneDeep(D),A,c);m.push(G);continue}if(D&&O===Q&&((k=D.selectIds)!=null&&k.length))for(const G of D.selectIds){const ne=(w=this.serviceColloctor)==null?void 0:w.isLocalId(G);let q=ne&&((S=this.serviceColloctor)==null?void 0:S.transformKey(G))||G;const Z=f[c][h][q]||void 0;if(!ne&&((b=this.serviceColloctor)!=null&&b.isOwn(q))&&(q=this.serviceColloctor.getLocalId(q)),Z&&Z.toolsType===T.Text&&D.opt){const H=this.setTextStyle(q,j.cloneDeep(Z),A,c);m.push(H);continue}}}}const N=await Promise.all(m);for(const x of N)if(x){const{key:P,textInfo:E}=x;E&&(E.canSync=!0,E.canWorker=!0,this.control.textEditorManager.updateForViewEdited(P,E))}Object.keys(g).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var x;this.timerId=void 0,(x=this.control.room)==null||x.setMemberState(g)},0))}}class YM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetPoint);y(this,"undoTickerId")}collect(e){var v,I,k;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:t,pointMap:i,workState:o,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const c=r.focusScenePath,l=(v=this.serviceColloctor)==null?void 0:v.storage,u=[],h=o===z.Start&&Date.now()||void 0;h&&(this.undoTickerId=h,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,n));const d=t;if(!d)return;const f=d.toString(),g=this.serviceColloctor.isLocalId(f),p=g&&this.serviceColloctor.transformKey(d)||f;let m=f;!g&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const N=(k=(I=l==null?void 0:l[n])==null?void 0:I[c])==null?void 0:k[p];if(N&&m===Q&&N.selectIds){const w=N.updateNodeOpt||{};w.pointMap=i,w.workState=o;const S={workId:d,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:w,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:n};o===z.Done&&(S.undoTickerId=this.undoTickerId),u.push([S,{workId:d,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}o===z.Start?this.mainEngine.unWritable():o===z.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}class UM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetLock)}collect(e){var d,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,isLocked:i,viewId:o}=e,n=this.control.viewContainerManager.getView(o);if(!(n!=null&&n.displayer))return;const r=n.focusScenePath,c=[...t],l=this.serviceColloctor.storage,u=[],h=Date.now();for(;c.length;){const g=c.pop();if(!g)continue;const p=g.toString(),m=this.serviceColloctor.isLocalId(p),N=m?this.serviceColloctor.transformKey(g):p;let v=p;!m&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const I=(f=(d=l==null?void 0:l[o])==null?void 0:d[r])==null?void 0:f[N];if(I){const k=I.updateNodeOpt||{};k.isLocked=i;const w={workId:v,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:o};u.push([w,{workId:v,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,o),u.length&&this.collectForLocalWorker(u)}}class BM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetShapeOpt)}collect(e){var d,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:i,...o}=e,n=this.control.viewContainerManager.getView(i);if(!(n!=null&&n.displayer))return;const r=n.focusScenePath,c=[...t],l=this.serviceColloctor.storage,u=[],h=Date.now();for(;c.length;){const g=c.pop();if(!g)continue;const p=g.toString(),m=this.serviceColloctor.isLocalId(p),N=m?this.serviceColloctor.transformKey(g):p;let v=p;!m&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const I=(f=(d=l==null?void 0:l[i])==null?void 0:d[r])==null?void 0:f[N];if(I){const k={...I.updateNodeOpt,...o,willRefresh:!0};if(I&&v===Q){const w={workId:v,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:i};u.push([w,{workId:v,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}}u.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,i),this.collectForLocalWorker(u))}}class oe{constructor(s){y(this,"builders",new Map);this.builders=new Map(s.map(e=>[e,this.build(e)]))}build(s){switch(s){case F.TranslateNode:return new AM;case F.ZIndexNode:return new DM;case F.CopyNode:return new PM;case F.SetColorNode:return new zM;case F.DeleteNode:return new jM;case F.ScaleNode:return new EM;case F.RotateNode:return new OM;case F.SetFontStyle:return new WM;case F.SetPoint:return new YM;case F.SetLock:return new UM;case F.SetShapeOpt:return new BM}}getBuilder(s){return this.builders.get(s)}registerForMainEngine(s,e){return this.builders.forEach(t=>{t&&t.registerForMainEngine(s,e)}),this}destroy(){this.builders.forEach(s=>{s&&s.destroy()}),this.builders.clear()}pause(){return this.builders.forEach(s=>{s&&s.pause()}),this}recover(){return this.builders.forEach(s=>{s&&s.recover()}),this}static emitMethod(s,e,t){Ve.dispatch(s,e,t)}static activeListener(s){Te.InternalMsgEmitter.on(F.ActiveMethod,s)}static unmountActiveListener(s){Te.InternalMsgEmitter.off(F.ActiveMethod,s)}}class FM{constructor(s){y(this,"master");y(this,"mainThreadWorkerMap",new Map);this.master=s}updateCamera(){for(const[s,e]of this.mainThreadWorkerMap.entries()){const t=this.master.control.viewContainerManager.getView(s);if(t){const{cameraOpt:i}=t;e.updateCamera({cameraOpt:i,viewId:t.viewId,msgType:L.UpdateCamera,dataType:B.Local})}}}notifyDrawCount(s){const e=this.master.getFullWorkDrawCount(),t=this.mainThreadWorkerMap.get(s);t&&t.clearDrawLayer(e)}clearDrawCount(s){const e=this.mainThreadWorkerMap.get(s);e&&e.clearDrawLayer(1/0)}createMainThreadWorker(s,e){return new VM(s,e,this)}consume(s){var e;for(const t of s.values()){const{msgType:i,viewId:o,layerOpt:n,offscreenCanvasOpt:r,cameraOpt:c}=t;if(i===L.Console){console.log(this);continue}if(i===L.Init){const u=(e=this.master.control.viewContainerManager.getView(o))==null?void 0:e.displayer,h=u==null?void 0:u.subLocalCanvasContainerRef.current;if(u&&h&&n&&r){const d=this.createMainThreadWorker(o,{displayer:u,container:h,layerOpt:n,master:this.master,canvasOpt:r,post:this.post.bind(this)});this.mainThreadWorkerMap.set(o,d),d&&c&&d.setCameraOpt(c)}continue}if(i===L.TasksQueue)continue;const l=this.mainThreadWorkerMap.get(o);l&&(l.on(t),i===L.Destroy&&(l.destroy(),this.mainThreadWorkerMap.delete(o)))}}post(s){const{sp:e}=s;e&&this.master.collectorSyncData(e)}destroy(){for(const s of this.mainThreadWorkerMap.values())s.destroy();this.mainThreadWorkerMap.clear()}active(){}}class VM{constructor(s,e,t){y(this,"viewId");y(this,"opt");y(this,"manager");y(this,"subLocalLayer");y(this,"subLocalWork");y(this,"scene");y(this,"cameraOpt");this.viewId=s,this.opt=e,this.manager=t,this.scene=this.createScene({...e.canvasOpt,container:e.container});const i=Se.bufferSize.full,o=Se.bufferSize.sub;this.subLocalLayer=this.createLayer("subLocalLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===pe?i:o,contextType:"2d"});const n={thread:this};this.subLocalWork=new $M(n)}createScene(s){return new he.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...s,contextType:"2d",autoRender:!0,id:this.viewId})}createLayer(s,e,t){const{width:i,height:o}=t,n=`canvas-${s}`,r=e.layer(n,{...t,offscreen:!1}),c=new he.Group({anchor:[.5,.5],pos:[i*.5,o*.5],size:[i,o],name:"viewport",id:s});return r.append(c),c}updateScene(s){this.scene.attr({...s});const{width:e,height:t}=s;this.scene.width=e,this.scene.height=t,this.updateLayer({width:e,height:t})}updateLayer(s){const{width:e,height:t}=s;this.subLocalLayer.parent.setAttribute("width",e),this.subLocalLayer.parent.setAttribute("height",t),this.subLocalLayer.setAttribute("size",[e,t]),this.subLocalLayer.setAttribute("pos",[e*.5,t*.5])}updateDpr(s){this.scene.displayRatio=s}on(s){const{msgType:e,toolsType:t,opt:i,dataType:o,workId:n,workState:r}=s,c=n==null?void 0:n.toString();switch(e){case L.Destroy:this.destroy();break;case L.Clear:this.clearAll();break;case L.UpdateDpr:j.isNumber(s.dpr)&&this.updateDpr(s.dpr);break;case L.UpdateCamera:this.updateCamera(s);break;case L.UpdateTools:if(t&&this.subLocalWork.canUseSubWorkerLayer(t)&&i){const l={toolsType:t,toolsOpt:i};this.subLocalWork.setToolsOpt(l)}break;case L.CreateWork:c&&i&&t&&this.subLocalWork.canUseSubWorkerLayer(t)&&(this.subLocalWork.getToolsOpt()||this.subLocalWork.setToolsOpt({toolsType:t,toolsOpt:i}),this.subLocalWork.setWorkOptions(c,i));break;case L.DrawWork:t&&this.subLocalWork.canUseSubWorkerLayer(t)&&(r===z.Done&&o===B.Local?this.subLocalWork.consumeDrawAll(s):this.subLocalWork.consumeDraw(s));break;case L.RemoveNode:this.subLocalWork.removeNode(s);return}}setCameraOpt(s){this.cameraOpt=s;const{scale:e,centerX:t,centerY:i,width:o,height:n}=s;(o!==this.scene.width||n!==this.scene.height)&&this.updateScene({width:o,height:n}),this.subLocalLayer&&(this.subLocalLayer.setAttribute("scale",[e,e]),this.subLocalLayer.setAttribute("translate",[-t,-i]))}updateCamera(s){const{cameraOpt:e}=s;e&&!j.isEqual(this.cameraOpt,e)&&(this.subLocalWork.workShapes.size&&this.clearAll(),this.setCameraOpt(e))}clearAll(){this.subLocalLayer.children.length&&(this.subLocalLayer.parent.children.forEach(s=>{s.name!=="viewport"&&s.remove()}),Oe(this.subLocalLayer,this.subLocalLayer.parent)),this.subLocalWork.clearAll()}destroy(){this.subLocalLayer.remove(),Ee(this.subLocalLayer,this.subLocalLayer.parent),this.scene.remove(),this.subLocalWork.destroy()}clearDrawLayer(s){if(s===1/0){this.clearAll();return}const e=this.subLocalLayer.children.filter(t=>t.id&&j.isNumber(parseInt(t.id))&&parseInt(t.id)<s);for(const t of e)t.remove(),Ee(t,this.subLocalLayer.parent)}}class $M{constructor(s){y(this,"thread");y(this,"workShapes",new Map);y(this,"tmpOpt");y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"subWorkerDrawCount",0);this.thread=s.thread}getToolsOpt(){return this.tmpOpt}consumeDrawAll(s){const{workId:e}=s,t=e==null?void 0:e.toString();t&&this.workShapes.get(t)&&(this.subWorkerDrawCount=0,Oe(this.thread.subLocalLayer,this.thread.subLocalLayer.parent),this.clearWorkShapeNodeCache(t))}consumeDraw(s){const{workId:e,toolsType:t,postCount:i}=s;e&&t&&this.canUseSubWorkerLayer(t)&&(this.getWorkShape(e.toString())||this.createLocalWork(s));const o=e==null?void 0:e.toString(),n=o&&this.workShapes.get(o);if(!n)return;n.consume({data:s,drawCount:this.subWorkerDrawCount,isFullWork:!1,isSubWorker:!0}),this.subWorkerDrawCount++;const r=this.thread.manager.master;r.setSubWorkerDrawCount(this.subWorkerDrawCount);const c=Math.max(r.getMaxDrawCount(),this.subWorkerDrawCount);r.setMaxDrawCount(c),j.isNumber(i)&&r.setConsumeCount(i)}removeNode(s){const{workId:e}=s,t=e==null?void 0:e.toString();t&&this.workShapes.has(t)&&(this.thread.subLocalLayer.getElementsByName(t).forEach(o=>{o.remove()}),this.clearWorkShapeNodeCache(t))}createLocalWork(s){const{workId:e,toolsType:t,opt:i}=s,o=e==null?void 0:e.toString();t&&this.canUseSubWorkerLayer(t)&&o&&i&&(this.getToolsOpt()||this.setToolsOpt({toolsType:t,toolsOpt:i}),this.setWorkOptions(o,i))}setWorkOptions(s,e){let t=this.workShapes.get(s);if(!t&&this.tmpOpt){const{toolsType:i}=this.tmpOpt;this.tmpOpt.toolsOpt=e,t=this.createWorkShapeNode({workId:s,toolsType:i,toolsOpt:e}),t&&this.workShapes.set(s,t),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),t&&t.setWorkOptions(e)}destroy(){this.clearAll()}clearAll(){Oe(this.thread.subLocalLayer,this.thread.subLocalLayer.parent),this.workShapes.clear()}canUseSubWorkerLayer(s){return s===T.Pencil}setToolsOpt(s){var e;this.tmpOpt=s,(e=s.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=s.toolsOpt.syncUnitTime)}createWorkShapeNode(s){return gs({...s,fullLayer:this.thread.subLocalLayer,drawLayer:this.thread.subLocalLayer})}clearWorkShapeNodeCache(s){this.workShapes.delete(s)}getWorkShape(s){return this.workShapes.get(s)}}const HM=async(a,s)=>{const{src:e,isgl:t,isCache:i}=a;if(typeof Image=="function"){const o=new Image;return typeof e=="string"&&(o.crossOrigin="anonymous"),new Promise(n=>{o.onload=function(){createImageBitmap(o,{imageOrientation:t?"flipY":"none"}).then(r=>{n(r)})},o.onerror=function(){n(void 0)},o.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(o=>o.blob()).then(o=>createImageBitmap(o,{imageOrientation:t?"flipY":"none"}).then(n=>n))};class QM{constructor(){y(this,"maxLastSyncTime",Se.syncOpt.interval)}setCurrentToolsData(s){this.currentToolsData=s}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(s){this.currentLocalWorkData=s}getWorkId(){return this.currentLocalWorkData.workId}getWorkState(){return this.currentLocalWorkData.workState}}class GM extends QM{constructor(e){var o,n;super();y(this,"isActive",!1);y(this,"currentToolsData");y(this,"currentLocalWorkData");y(this,"control");y(this,"internalMsgEmitter");y(this,"taskBatchData",new Set);y(this,"fullWorker");y(this,"subWorker");y(this,"fullWorkerUrl");y(this,"subWorkerUrl");y(this,"methodBuilder");y(this,"zIndexNodeMethod");y(this,"subWorkerDrawCount",0);y(this,"fullWorkerDrawCount",0);y(this,"maxDrawCount",0);y(this,"_consumeCount",0);y(this,"_postCount",0);y(this,"reRenders",new Map);y(this,"localWorkViewId");y(this,"localPointsBatchData",new Map);y(this,"tasksqueue",new Map);y(this,"useTasksqueue",!1);y(this,"useTasksClockId");y(this,"mainTasksqueueCount");y(this,"workerTasksqueueCount");y(this,"snapshotMap",new Map);y(this,"boundingRectMap",new Map);y(this,"clearAllResolveMap",new Map);y(this,"delayWorkStateToDoneResolve");y(this,"animationId");y(this,"tmpImageConfigMap",new Map);y(this,"mainThread");y(this,"willSelectorWorkId");y(this,"isLockSentEventCursor",!1);y(this,"subMainThreadWorker");y(this,"getVNodeInfoResolveMap",new Map);const{control:t,internalMsgEmitter:i}=e;this.control=t,this.maxLastSyncTime=((n=(o=this.control.pluginOptions)==null?void 0:o.syncOpt)==null?void 0:n.interval)||this.maxLastSyncTime,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl,this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl,this.internalMsgEmitter=i,this.currentLocalWorkData={workState:z.Pending}}destroy(){var e,t,i;(e=this.methodBuilder)==null||e.destroy(),this.unWritable(),this.taskBatchData.clear(),this.tasksqueue.clear(),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.isActive=!1,this.clearAllResolveMap.clear(),this.snapshotMap.clear(),this.boundingRectMap.clear(),(t=this.fullWorker)==null||t.terminate(),(i=this.subWorker)==null||i.terminate()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}get postCount(){return this._postCount}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.BitMapEraser||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon}get isCanDrawWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.BitMapEraser}get isUseZIndex(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanRecordUndoRedo(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Eraser||e===T.BitMapEraser||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanSentCursor(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Text||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}get isPostCountType(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}get isCanPostDraw(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.BitMapEraser}get isCanStartEventConsum(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Selector||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}async init(){this.destroy(),await this.on(),this.internalMsgEmitterListener(),this.isActive=!0}async useMainThread(){console.info("no OffscreenCanvas");const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-VwIhaoVA.js"));this.mainThread=new e(this)}async on(){if(!this.control.hasOffscreenCanvas()){await this.useMainThread();return}if(!this.fullWorkerUrl||!this.subWorkerUrl){console.error("no worker url config");return}this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"}),this.subMainThreadWorker=new FM(this),this.fullWorker.onmessage=e=>{var t,i;if(e.data){const{render:o,sp:n,fullWorkerDrawCount:r,workerTasksqueueCount:c,viewId:l,consumeCount:u}=e.data;u&&(this.consumeCount=u),this.isBusy&&c&&this.setWorkerTasksqueueCount(c),n!=null&&n.length&&this.collectorSyncData(n);const h=(o==null?void 0:o.length)&&o||[];if(r&&l){if(this.fullWorkerDrawCount=r,this.fullWorkerDrawCount<1/0){const d=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(d),this.control.priority==="ui"?(t=this.subMainThreadWorker)==null||t.notifyDrawCount(l):this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.control.priority==="ui"?(i=this.subMainThreadWorker)==null||i.clearDrawCount(l):this.clearReRenders(1/0);if(this.reRenders.size)for(const d of this.reRenders.values())h.push(...d)}h.length&&this.viewContainerManager.render(h)}},this.subWorker.onmessage=e=>{if(e.data){const{render:t,sp:i,subWorkerDrawCount:o,consumeCount:n}=e.data;n&&(this.consumeCount=n),i!=null&&i.length&&this.collectorSyncData(i);const r=(t==null?void 0:t.length)&&t||[];if(this.control.priority==="cpu"&&j.isNumber(o)){if(this.subWorkerDrawCount=o,this.fullWorkerDrawCount<1/0){const c=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(c)}if(t!=null&&t.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const c=[];for(const l of t)l.imageBitmap&&(l.isUnClose=!0,c.push(l));this.reRenders.set(this.subWorkerDrawCount,c)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}r.length&&this.viewContainerManager.render(r)}}}clearReRenders(e=1/0){for(const t of this.reRenders.keys())if(j.isNumber(Number(t))&&Number(t)<=e){const i=this.reRenders.get(Number(t));i==null||i.forEach(o=>{var n;(n=o.imageBitmap)==null||n.close()}),this.reRenders.delete(t)}}get isBusy(){return this.getTasksqueueState()===z.Doing}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.useTasksqueue&&z.Doing||z.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e){this.consumeCount=e}setWorkerTasksqueueCount(e){const t=Math.max(this.workerTasksqueueCount||0,e);this.workerTasksqueueCount=t}collectorSyncData(e){var i,o,n,r;let t=!1;for(const c of e){const{type:l,selectIds:u,opt:h,selectRect:d,strokeColor:f,fillColor:g,willSyncService:p,isSync:m,imageBitmap:N,canvasHeight:v,canvasWidth:I,rect:k,op:w,canTextEdit:S,points:b,selectorColor:x,canRotate:P,scaleType:E,textOpt:R,toolsType:O,workId:D,viewId:A,dataType:G,canLock:ne,isLocked:q,shapeOpt:Z,toolsTypes:H,thickness:_,strokeType:ie,useStroke:K,isgl:ue,imageSrc:ee,isSubWorker:ce}=c;if(!A)return;const J=c.scenePath||this.viewContainerManager.getCurScenePath(A);switch(l){case L.Select:{const $=u!=null&&u.length?{...d,selectIds:u,canvasHeight:v,canvasWidth:I,points:b}:void 0;$&&(h!=null&&h.strokeColor)&&($.selectorColor=h.strokeColor),$&&x&&($.selectorColor=x),$&&f&&($.strokeColor=f),$&&(h!=null&&h.fillColor)&&($.fillColor=h.fillColor),$&&g&&($.fillColor=g),$&&j.isBoolean(P)&&($.canRotate=P),$&&E&&($.scaleType=E),$&&S&&($.canTextEdit=S),$&&R&&($.textOpt=R),$&&j.isBoolean(ne)&&($.canLock=ne),$&&j.isBoolean(q)&&($.isLocked=q),$&&Z&&($.shapeOpt=Z),$&&H&&($.toolsTypes=H),$&&_&&($.thickness=_),$&&ie&&($.strokeType=ie),$&&j.isBoolean(K)&&($.useStroke=K),A&&this.viewContainerManager.showFloatBar(A,!!$,$),p&&((i=this.collector)==null||i.dispatch({type:l,selectIds:u,opt:h,isSync:m,viewId:A,scenePath:J}));break}case L.Snapshot:if(N&&J){const $=this.snapshotMap.get(J);$&&$(N)}break;case L.BoundingBox:if(k&&J){const $=this.boundingRectMap.get(J);$&&$(k)}break;case L.Cursor:w&&this.control.cursor.collectServiceCursor({...c});break;case L.Clear:if(A){this.viewContainerManager.showFloatBar(A,!1);const $=(o=this.clearAllResolveMap.get(A))==null?void 0:o.resolve;$&&$(A)}break;case L.TextUpdate:if(O===T.Text&&D&&A){const $=this.viewContainerManager.transformToOriginPoint((h==null?void 0:h.boxPoint)||[0,0],A),de=(h==null?void 0:h.boxSize)||[0,0],ge=(n=this.viewContainerManager.getView(A))==null?void 0:n.cameraOpt;h?this.control.textEditorManager.updateTextForWorker({x:$[0],y:$[1],w:de[0],h:de[1],scale:(ge==null?void 0:ge.scale)||1,workId:D,opt:h,dataType:G,viewId:A,canSync:p||!1,canWorker:!1}):this.control.textEditorManager.delete(D,p||!1,!1)}break;case L.GetTextActive:O===T.Text&&D&&A&&this.control.textEditorManager.updateTextForWorker({workId:D,isActive:!0,viewId:A,dataType:B.Local,canWorker:!1,canSync:!0},Date.now());break;case L.GetImageBitMap:ee&&A&&D&&HM({src:ee,isgl:ue}).then($=>{var ge;const de=new Set;if(de.add({msgType:L.GetImageBitMap,dataType:B.Local,workId:D,viewId:A,imageSrc:ee,isSubWorker:ce,imageBitmap:$}),!this.control.hasOffscreenCanvas())(ge=this.mainThread)==null||ge.consume(de);else{const Re=ce?this.subWorker:this.fullWorker;$?Re.postMessage(de,[$]):Re.postMessage(de)}});break;case L.GetVNodeInfo:if(D){const $=D.toString(),de=(r=this.getVNodeInfoResolveMap.get($))==null?void 0:r.resolve,ge={...c,uuid:$};de&&de(ge)}break;default:t=!0;break}}t&&Fe(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var t,i,o,n;for(const r of e){const{type:c,op:l,workId:u,index:h,removeIds:d,ops:f,opt:g,updateNodeOpt:p,toolsType:m,isSync:N,viewId:v,isLockSentEventCursor:I,nextTasks:k}=r;if(!v){console.error("collectorAsyncData",r);return}const w=r.scenePath||this.viewContainerManager.getCurScenePath(v);switch(c){case L.None:{I&&Fe(()=>{this.setLockSentEventCursor(!1)},this.maxLastSyncTime);break}case L.DrawWork:{(t=this.collector)==null||t.dispatch({type:c,op:l,opt:g,toolsType:m,workId:u,index:h,isSync:N,viewId:v,scenePath:w,updateNodeOpt:p});break}case L.FullWork:{(i=this.collector)==null||i.dispatch({type:c,ops:f,workId:u,updateNodeOpt:p,opt:g,toolsType:m,isSync:N,viewId:v,scenePath:w}),this.willSelectorWorkId&&u&&u.toString()===this.willSelectorWorkId&&this.control.runEffectWork(()=>{this.setShapeSelectorByWorkId(this.willSelectorWorkId,v),this.willSelectorWorkId=void 0});break}case L.UpdateNode:{(o=this.collector)==null||o.dispatch({type:c,updateNodeOpt:p,workId:u,opt:g,ops:f,op:l,isSync:N,viewId:v,scenePath:w});break}case L.RemoveNode:{d&&this.control.textEditorManager.deleteBatch(d,!1,!1),(n=this.collector)==null||n.dispatch({type:c,removeIds:d,isSync:N,viewId:v,scenePath:w}),this.willSelectorWorkId&&(d!=null&&d.includes(this.willSelectorWorkId))&&(this.willSelectorWorkId=void 0);break}}k&&Fe(()=>{this.collectorAsyncData(k)},this.maxLastSyncTime)}}async onLocalEventEnd(e,t){var l;const i=this.viewContainerManager.getView(t);if(!i)return;const{focusScenePath:o,cameraOpt:n}=i,r=this.viewContainerManager.transformToScenePoint(e,t),c=[];for(const u of this.localPointsBatchData.keys())if(((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Text){const h=this.getLocalPointInfo(u),d=h==null?void 0:h.state;if(d&&d===z.Start){const f=this.currentLocalWorkData.toolsOpt;f.workState=z.Doing,f.boxPoint=r,f.boxSize=[f.fontSize,f.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:Date.now().toString(),x:e[0],y:e[1],scale:(n==null?void 0:n.scale)||1,opt:f,type:Xe.Text,isActive:!0,viewId:t,scenePath:o},Date.now())}this.deleteLocalPoint(u);continue}else this.pushLocalPoint(u,r,z.Done,t),c.push(u);if(c.length){try{if(await new Promise(h=>{setTimeout(async()=>{c.forEach(d=>{this.setLocalPointIsFullWork(d)}),this.delayWorkStateToDoneResolve=h,this.consume()},0)})&&c[0]){const h=c[0];c.forEach(d=>{this.deleteLocalPoint(d)}),this.willSelectorWorkId=h.toString()}}catch(u){console.log("error",u)}this.delayWorkStateToDoneResolve=void 0,c.length=0}}onLocalEventDoing(e,t){var o;if(((o=this.currentToolsData)==null?void 0:o.toolsType)===T.Text)return;this.currentLocalWorkData.workState===z.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:z.Doing});let i=!1;for(const[n,{state:r}]of this.localPointsBatchData.entries())if(this.isAbled()&&r!==z.Pending){const c=this.viewContainerManager.transformToScenePoint(e,t);this.pushLocalPoint(n,c,r===z.Start?z.Doing:r,t),i=!0}if(i){this.runAnimation();return}this.useTasksqueue||this.hoverCursor(e,t)}onLocalEventStart(e,t){var c,l,u;this.viewContainerManager.focuedViewId!==t&&this.viewContainerManager.setFocuedViewId(t),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const i=(c=this.currentToolsData)==null?void 0:c.toolsType,o=i===T.Selector?Q:Date.now(),n=this.setZIndex(t);this.setCurrentLocalWorkData({workState:z.Start,toolsOpt:n,viewId:t});const r=this.viewContainerManager.transformToScenePoint(e,t);if(this.pushLocalPoint(o,r,z.Start,t,n),i!==T.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",o,t),o&&n&&i&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:o,toolsOpt:n,viewId:t},i),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),(l=this.subMainThreadWorker)==null||l.clearDrawCount(t),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(t);h&&((u=this.collector)!=null&&u.hasSelector(t,h))&&this.blurSelector(t,h)}this.consume()}}setLocalPointIsFullWork(e){const t=this.getLocalPointInfo(e);t&&(t.isFullWork=!0,this.localPointsBatchData.set(e,t))}pushLocalPoint(e,t,i,o,n){let r=this.getLocalPointInfo(e);i===z.Start?r={state:z.Start,points:t,opt:n||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:o}:r&&(r.state=i,r.points.push(t[0],t[1])),r&&this.localPointsBatchData.set(e,r)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}correctStorage(e,t,i){var c;const o=new Map,n=[];Object.keys(e).forEach(l=>{var h,d;const u=(d=(h=e[l])==null?void 0:h.opt)==null?void 0:d.zIndex;j.isNumber(u)&&n.push([l,u])});const r=n.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(n))||[];this.zIndexNodeMethod&&r.length&&(this.zIndexNodeMethod.setMinZIndex(r[0][1]||0,t),this.zIndexNodeMethod.setMaxZIndex(r[r.length-1][1]||0,t));for(const[l,u]of r){if(!e[l])continue;const h=e[l];h.opt&&j.isNumber(h.opt.zIndex)&&h.opt.zIndex!==u&&(h.opt.zIndex=u,o.set(l,h))}return o.size&&o.forEach((l,u)=>{var h;(h=this.collector)==null||h.updateValue(u,l,{viewId:t,scenePath:i,isSync:!0}),e[u]=l}),e}async originalEventLintener(e,t,i){var r,c;if(!this.isAbled())return;const o=(r=this.collector)==null?void 0:r.uid,n=this.viewContainerManager.getCurScenePath(i);if(!(o&&!this.control.renderControl.isWritable)){switch((c=this.currentToolsData)==null?void 0:c.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(o&&!this.control.renderControl.isClearAble({uid:o,viewId:i,scenePath:n}))return;break}default:{if(o&&!this.control.renderControl.isRenderAble({uid:o,viewId:i,scenePath:n}))return;break}}switch(Fe(()=>{this.control.pluginManager.dispatchPluginEvent("localEvent",i,e,t)},ys),e){case z.Start:this.setLocalWorkViewId(i),i&&this.onLocalEventStart(t,i);break;case z.Doing:i&&i===this.getLocalWorkViewId()&&this.onLocalEventDoing(t,i);break;case z.Done:i&&i===this.getLocalWorkViewId()&&await this.onLocalEventEnd(t,i);break}}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var o,n,r;const t=e.toolsType,i=((o=this.currentToolsData)==null?void 0:o.toolsType)!==e.toolsType;if(super.setCurrentToolsData(e),i){const c=(n=this.viewContainerManager)==null?void 0:n.getAllViews();for(const l of c)if(l){const{id:u,focusScenePath:h}=l;i&&u&&h&&((r=this.collector)!=null&&r.hasSelector(u,h)&&this.blurSelector(u,h),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:L.UpdateTools,dataType:B.Local,toolsType:t,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:Zt}),this.runAnimation()}}prepareOnceWork(e,t){const{workId:i,toolsOpt:o,viewId:n}=e,r={msgType:L.CreateWork,dataType:B.Local,viewId:n,toolsType:t};this.queryTaskBatchData(r).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...r,workId:i,opt:{...o,syncUnitTime:this.maxLastSyncTime},dataType:B.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,t){const{offscreenCanvasOpt:i,layerOpt:o,dpr:n,cameraOpt:r}=t;this.taskBatchData.add({msgType:L.Init,dataType:B.Local,viewId:e,offscreenCanvasOpt:i,layerOpt:o,dpr:n,cameraOpt:r,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}),this.isBusy&&this.destroyTaskQueue(),this.consume()}destroyViewWorker(e,t=!1){var i;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:L.Destroy,dataType:B.Local,viewId:e,isRunSubWork:!0}),this.consume(),t||(i=this.collector)==null||i.dispatch({type:L.Clear,viewId:e}),this.control.renderControl.destoryByViewId(e,t)}onServiceDerive(e,t){var f,g,p,m,N,v,I;const{newValue:i,oldValue:o,viewId:n,scenePath:r}=t,c=j.cloneDeep(i)||{},l=e;let u=c.type;if(!i&&o){if(l&&((f=this.collector)==null?void 0:f.getLocalId(l))===Q){this.collector.isOwn(l)?this.blurSelector(n,r):this.blurSelector(n,r,l);return}if(u=L.RemoveNode,o.toolsType===T.LaserPen)return}const h=(g=this.viewContainerManager.getView(n))==null?void 0:g.focusScenePath;if(h&&h!==r)return;if((p=this.collector)!=null&&p.isSelector(e)){const k=(m=this.collector)==null?void 0:m.getUidFromKey(e);if(k&&!this.control.roomMember.isOnLine(k))return}if(u&&l){if(!this.control.renderControl.isFilterAble({viewId:n,elementId:e,scenePath:r},u))return;const k=c;if(k.workId=(N=this.collector)!=null&&N.isOwn(l)?(v=this.collector)==null?void 0:v.getLocalId(l):l,k.msgType=u,k.toolsType===T.LaserPen&&(k.isRunSubWork=!0),k.dataType=B.Service,k.viewId=n,k.scenePath=r,k.selectIds&&(k.selectIds=k.selectIds.map(w=>{var S,b;return(S=this.collector)!=null&&S.isOwn(w)?(b=this.collector)==null?void 0:b.getLocalId(w):w})),k&&k.toolsType===T.Text||(o==null?void 0:o.toolsType)===T.Text){this.control.textEditorManager.onServiceDerive(k);return}this.taskBatchData.add(k)}this.runAnimation();const d=t.newValue&&((I=t.newValue.opt)==null?void 0:I.zIndex);if(this.zIndexNodeMethod&&j.isNumber(d)){const k=this.zIndexNodeMethod.getMinZIndex(n);this.zIndexNodeMethod.getMaxZIndex(n)<d&&this.zIndexNodeMethod.setMaxZIndex(d,n),k>d&&this.zIndexNodeMethod.setMinZIndex(d,n)}}pullServiceData(e,t,i={isAsync:!1,useAnimation:!1}){var c,l,u,h,d,f;let o=(c=this.collector)==null?void 0:c.getStorageData(e,t);const{isAsync:n,useAnimation:r}=i;if(o){this.control.renderControl.isWritable&&(o=this.correctStorage(o,e,t));const g=Object.keys(o);for(const p of g){if((l=this.collector)!=null&&l.isSelector(p)){const N=(u=this.collector)==null?void 0:u.getUidFromKey(p);if(N&&!this.control.roomMember.isOnLine(N))continue}const m=(h=o[p])==null?void 0:h.type;if(m&&p){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:p,scenePath:t},m))continue;const N=o[p];if(N.workId=(d=this.collector)!=null&&d.isOwn(p)?(f=this.collector)==null?void 0:f.getLocalId(p):p,N.msgType=m,N.dataType=B.Service,N.viewId=e,N.scenePath=t,N.useAnimation=!!r,N.selectIds&&(N.selectIds=N.selectIds.map(v=>{var I,k;return(I=this.collector)!=null&&I.isOwn(v)?(k=this.collector)==null?void 0:k.getLocalId(v):v})),N.toolsType===T.Text){this.control.textEditorManager.onServiceDerive(N);continue}this.taskBatchData.add(N)}this.internalMsgEmitter.emit("excludeIds",g,e)}n?this.consume():this.runAnimation()}}runAnimation(){!this.animationId&&!this.isBusy&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var t;this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const i=this.consumeQueue(),o=!!i.size;if(this.taskBatchData.size)for(const n of this.taskBatchData.values())n.dataType===B.Service&&(i.add(n),this.taskBatchData.delete(n));i.size?(this.post(i),o&&this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[i,{state:o,isFullWork:n,points:r,opt:c}]of this.localPointsBatchData.entries()){if(o===z.Done&&!n||o===z.Start&&!this.isCanStartEventConsum)continue;const l=r.map(u=>u);if(l.length){if(this.isPostCountType&&o===z.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}this.delayWorkStateToDoneResolve&&o===z.Done&&(this.delayWorkStateToDoneResolve(!0),this.setLockSentEventCursor(!0)),this.taskBatchData.add({op:l,workState:o,workId:i,dataType:B.Local,msgType:L.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(t=this.currentToolsData)==null?void 0:t.toolsType,viewId:e,scenePath:e&&this.viewContainerManager.getCurScenePath(e),opt:c,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0}),r.length=0}}this.taskBatchData.size&&(this.post(this.taskBatchData),this.taskBatchData.clear()),this.taskBatchData.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}unWritable(){this.setCurrentLocalWorkData({workState:z.Unwritable,workId:void 0})}abled(){this.setCurrentLocalWorkData({workState:z.Pending,workId:void 0})}isAbled(){return this.currentLocalWorkData.workState!==z.Unwritable}post(e){var i;if(!this.control.hasOffscreenCanvas()){if(!this.mainThread){let o=[];o=j.cloneDeep([...e]),setTimeout(()=>{for(const n of o)this.taskBatchData.add(n)},0);return}this.mainThread.consume(e);return}this.fullWorker.postMessage(e);const t=new Set;for(const o of e.values()){const n=o.msgType;(n===L.Init||n===L.Clear||n===L.Destroy||n===L.UpdateCamera||o.isRunSubWork)&&t.add(o)}t.size&&(this.subWorker.postMessage(t),this.control.priority==="ui"&&((i=this.subMainThreadWorker)==null||i.consume(t)))}updateNode(e,t,i,o){this.taskBatchData.add({msgType:L.UpdateNode,workId:e,updateNodeOpt:t,viewId:i,scenePath:o,dataType:B.Local}),this.runAnimation()}destroyTaskQueue(){this.useTasksqueue=!1,this.useTasksClockId&&(clearTimeout(this.useTasksClockId),this.useTasksClockId=void 0),this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0}updateDpr(e,t){this.queryTaskBatchData({msgType:L.UpdateDpr,dataType:B.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add({dataType:B.Local,msgType:L.UpdateDpr,viewId:e,dpr:t,isRunSubWork:!0}),this.runAnimation()}updateCamera(e,t){var i;this.useTasksqueue||((i=this.methodBuilder)==null||i.pause(),this.blurCursor(e),this.checkDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:L.UpdateCamera,dataType:B.Local,cameraOpt:{...t,width:t.width,height:t.height},scenePath:this.viewContainerManager.getCurScenePath(e),isRunSubWork:!0,viewId:e}),this.consume(),this.useTasksClockId&&clearTimeout(this.useTasksClockId),this.updateCameraDone())}updateCameraDone(){this.useTasksClockId=setTimeout(()=>{var e,t;this.useTasksClockId=void 0,this.mainTasksqueueCount===this.workerTasksqueueCount?(this.tasksqueue.size&&this.consume(),this.useTasksqueue=!1,this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0,this.control.priority==="ui"&&((e=this.subMainThreadWorker)==null||e.updateCamera()),(t=this.methodBuilder)==null||t.recover(),this.runAnimation()):this.updateCameraDone()},this.maxLastSyncTime)}consumeQueue(){const e=new Set;let t=!this.isBusy;if(this.isBusy&&this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount<=this.workerTasksqueueCount&&(t=!0),t){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:L.TasksQueue,dataType:B.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[i,o]of this.tasksqueue.entries())o.cameraOpt&&this.control.textEditorManager.onCameraChange(o.cameraOpt,i)}return e}async clearViewScenePath(e,t,i){var n,r;const o=this.viewContainerManager.getCurScenePath(e);if(i){const c=(n=this.collector)==null?void 0:n.uid;if(c&&!this.control.renderControl.isClearAble({uid:c,viewId:e,scenePath:o}))return}this.control.textEditorManager.clear(e,t),this.queryTaskBatchData({msgType:L.Clear,dataType:B.Local,viewId:e}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({dataType:B.Local,msgType:L.Clear,viewId:e}),this.runAnimation(),t||(this.control.renderControl.isUsePageAuth(e)&&o?this.control.renderControl.clearRenderPage(e,o):(r=this.collector)==null||r.dispatch({type:L.Clear,viewId:e,scenePath:o})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.localPointsBatchData.clear(),await new Promise(c=>{const l=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};l.timer&&clearTimeout(l.timer),l.resolve=c,l.timer=setTimeout(()=>{const u=this.clearAllResolveMap.get(e);u!=null&&u.resolve&&u.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,l)}).then(c=>{this.clearAllResolveMap.delete(c)})}internalMsgEmitterListener(){var e;this.methodBuilder=new oe([F.CopyNode,F.SetColorNode,F.DeleteNode,F.RotateNode,F.ScaleNode,F.TranslateNode,F.ZIndexNode,F.SetFontStyle,F.SetPoint,F.SetLock,F.SetShapeOpt]).registerForMainEngine(se.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(F.ZIndexNode)}setZIndex(e){const t=this.currentToolsData&&j.cloneDeep(this.currentToolsData.toolsOpt);return t&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),t.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),t}checkDrawingWork(e){var o,n,r;let t=!1;const i=[];for(const[c,{state:l,viewId:u,points:h,opt:d}]of this.localPointsBatchData.entries())if(e===u&&l===z.Start||l===z.Doing){if(l===z.Doing&&this.isCanDrawWork){Number(c)&&Number(c)+60>Date.now()&&(i.push(c.toString()),this.taskBatchData.add({msgType:L.RemoveNode,workId:c,viewId:u,dataType:B.Local,isRunSubWork:!0}));const f=h.map(g=>g);this.taskBatchData.add({op:f,workState:z.Done,workId:c,dataType:B.Local,msgType:L.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(o=this.currentToolsData)==null?void 0:o.toolsType,viewId:u,opt:d,scenePath:u&&this.viewContainerManager.getCurScenePath(u)}),t=!0}this.deleteLocalPoint(c)}if((t||i.length)&&(this.consume(),i.length)){const c=(n=this.viewContainerManager.getView(e))==null?void 0:n.focusScenePath;(r=this.collector)==null||r.dispatch({type:L.RemoveNode,removeIds:i,viewId:e,scenePath:c})}}removeDrawingWork(e){var i,o;const t=[];for(const[n,{state:r,viewId:c}]of this.localPointsBatchData.entries())(e===c&&r===z.Start||r===z.Doing)&&(this.deleteLocalPoint(n),r===z.Doing&&this.isCanDrawWork&&(t.push(n.toString()),this.taskBatchData.add({msgType:L.RemoveNode,workId:n,viewId:c,dataType:B.Local,isRunSubWork:!0})));if(t.length){this.consume();const n=(i=this.viewContainerManager.getView(e))==null?void 0:i.focusScenePath;(o=this.collector)==null||o.dispatch({type:L.RemoveNode,removeIds:t,viewId:e,scenePath:n})}}removeNodes(e,t){var o,n;const i=(o=this.viewContainerManager.getView(e))==null?void 0:o.focusScenePath;if(i&&t.length){for(const r of t)this.taskBatchData.add({msgType:L.RemoveNode,workId:r,viewId:e,dataType:B.Local,isRunSubWork:!1});this.consume(),(n=this.collector)==null||n.dispatch({type:L.RemoveNode,removeIds:t,viewId:e,scenePath:i})}}hoverCursor(e,t){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)===T.Selector){const o=this.viewContainerManager.getView(t);if(o&&o.displayer&&o.displayer.vDom){const c=o.displayer.vDom.state.floatBarData;if(c){const{x:l,y:u,w:h,h:d}=c;if(Ko(e,{x:l,y:u,w:h,h:d}))return}}const n=this.viewContainerManager.transformToScenePoint(e,t),r={msgType:L.CursorHover,dataType:B.Local,point:n,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:t};this.queryTaskBatchData({msgType:L.CursorHover,dataType:B.Local,toolsType:this.currentToolsData.toolsType,viewId:t}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(r),this.runAnimation()}}blurCursor(e){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)!==T.Selector)return;const t={msgType:L.CursorBlur,dataType:B.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:L.CursorHover,dataType:B.Local,viewId:e}).forEach(o=>{this.taskBatchData.delete(o)}),this.taskBatchData.add(t),this.consume()}sendCursorEvent(e,t){var r,c;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===z.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;const i=(r=this.collector)==null?void 0:r.uid,o=this.viewContainerManager.getCurScenePath(t);switch((c=this.currentToolsData)==null?void 0:c.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(i&&!this.control.renderControl.isClearAble({uid:i,viewId:t,filterLocalSelf:!1,scenePath:o}))return;break}default:if(i&&!this.control.renderControl.isWritable||i&&!this.control.renderControl.isRenderAble({uid:i,viewId:t,filterLocalSelf:!1,scenePath:o}))return;break}let n=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(n=e,this.control.cursor.sendEvent(n,t))}getBoundingRect(e){var i,o;if(!((i=this.boundingRectMap)==null?void 0:i.get(e))){const n=(o=this.collector)==null?void 0:o.getScenePathData(e);if(!n)return;if(Object.keys(n).forEach(r=>{var c;((c=this.collector)==null?void 0:c.getLocalId(r))===Q&&delete n[r]}),Object.keys(n).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const r={msgType:L.BoundingBox,dataType:B.Local,scenePath:e,scenes:n,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:this.viewContainerManager.mainView.id};return this.taskBatchData.add(r),this.runAnimation(),new Promise(c=>{this.boundingRectMap.set(e,c)}).then(c=>(this.boundingRectMap.delete(e),c))}}}getSnapshot(e,t,i,o){var r,c,l,u,h;if(!((r=this.snapshotMap)==null?void 0:r.get(e))){const d=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!d)return;const f=(l=this.collector)==null?void 0:l.getStorageData(d,e);if(!f)return;if(Object.keys(f).forEach(g=>{var p;((p=this.collector)==null?void 0:p.getLocalId(g))===Q&&delete f[g]}),Object.keys(f).length){const g=this.viewContainerManager.mainView;if(!g)return;const p=t||((u=g.cameraOpt)==null?void 0:u.width),m=i||((h=g.cameraOpt)==null?void 0:h.height),N={msgType:L.Snapshot,dataType:B.Local,scenePath:e,scenes:f,w:p,h:m,cameraOpt:o&&{...o,width:p,height:m}||g.cameraOpt,isRunSubWork:!0,viewId:g.id};return this.taskBatchData.add(N),this.runAnimation(),new Promise(v=>{this.snapshotMap.set(e,v)}).then(v=>(this.snapshotMap.delete(e),v))}}}queryTaskBatchData(e){const t=[];if(e)for(const i of this.taskBatchData.values()){let o=!0;for(const[n,r]of Object.entries(e))if(i[n]!==r){o=!1;break}o&&t.push(i)}return t}insertIconify(e,t){var r;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertIconify viewId is not exist");if(!t.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(t.src))throw new Error("iconify src must be http or https");t.strokeColor||(t.strokeColor=(r=this.currentLocalWorkData.toolsOpt)==null?void 0:r.strokeColor);const n=i==null?void 0:i.focusScenePath;if(e&&n){const c=Date.now();Te.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:dt.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:L.FullWork,dataType:B.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}insertImage(e,t){const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");if(t.src&&!/^(http|https):\/\//.test(t.src))throw new Error("Image src must be http or https");const o=i==null?void 0:i.focusScenePath;if(e&&o){const{src:n,uuid:r}=t;if(r&&!n){this.tmpImageConfigMap.set(r,t);return}const c=Date.now();Te.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:dt.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:L.FullWork,dataType:B.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,t,i){var r,c;const o=this.viewContainerManager.getView(e);if(!o)throw new Error("insertImage viewId is not exist");const n=o==null?void 0:o.focusScenePath;if(e&&n&&this.collector){const l=this.collector.getStorageData(e,n);if(!l)return;for(const[u,h]of Object.entries(l))if(h&&h.toolsType===T.Image&&h.opt.uuid===t){const d=Date.now();Te.InternalMsgEmitter.emit("addUndoTicker",d,e);const f=(r=this.collector)!=null&&r.isOwn(u)?(c=this.collector)==null?void 0:c.getLocalId(u):u,g={...h.opt,locked:i,type:dt.Image};this.taskBatchData.add({msgType:L.FullWork,dataType:B.Local,toolsType:T.Image,workId:f,opt:g,viewId:e,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,t,i){const o=this.viewContainerManager.getView(e);if(!o)throw new Error("insertImage viewId is not exist");const n=o==null?void 0:o.focusScenePath;if(e&&n){const r=this.tmpImageConfigMap.get(t);r&&(r.src=i,this.insertImage(e,r),this.tmpImageConfigMap.delete(t));return}}getImagesInformation(e){const t=[];if(this.collector){const i=this.collector.getScenePathData(e);if(!i)return t;for(const o of Object.values(i))if(o&&o.toolsType===T.Image){const n=o.opt;t.push({uuid:n.uuid,centerX:n.centerX,centerY:n.centerY,width:n.width,height:n.height,locked:n.locked,uniformScale:n.uniformScale,crossOrigin:n.crossOrigin})}}return t}setShapeSelectorByWorkId(e,t){this.taskBatchData.add({workId:Q,selectIds:[e],msgType:L.Select,dataType:B.Local,viewId:t,willSyncService:!0}),this.runAnimation()}blurSelector(e,t,i){this.taskBatchData.add({workId:i||Q,selectIds:[],msgType:L.Select,dataType:B.Service,viewId:e,scenePath:t}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:L.Console,dataType:B.Local,isRunSubWork:!0,viewId:""}),this.consume()}setPriority(e){var o,n;const t=new Set,i=new Set;if(e==="cpu"&&((o=this.subMainThreadWorker)==null||o.destroy(),t.add({msgType:L.PriorityWorker,viewId:Zt,dataType:B.Local,isRunSubWork:!0})),e==="ui"){t.add({msgType:L.PriorityMainThreadWorker,viewId:Zt,dataType:B.Local,isRunSubWork:!0});const r=this.viewContainerManager.mainView;if(r){const l=this.viewContainerManager.getViewInitData(r.id);if(l){const{offscreenCanvasOpt:u,layerOpt:h,dpr:d,cameraOpt:f}=l;i.add({msgType:L.Init,dataType:B.Local,viewId:r.id,offscreenCanvasOpt:u,layerOpt:h,dpr:d,cameraOpt:f,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1})}}const c=this.viewContainerManager.appViews;for(const l of c.keys()){const u=this.viewContainerManager.getViewInitData(l);if(u){const{offscreenCanvasOpt:h,layerOpt:d,dpr:f,cameraOpt:g}=u;i.add({msgType:L.Init,dataType:B.Local,viewId:l,offscreenCanvasOpt:h,layerOpt:d,dpr:f,cameraOpt:g,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1})}}}t.size&&this.subWorker.postMessage(t),i.size&&((n=this.subMainThreadWorker)==null||n.consume(i))}sendClearUids(e,t){var o,n;const i=new Set;i.add({msgType:L.AuthClear,dataType:B.Local,viewId:e,clearUids:t,localUid:(o=this.collector)==null?void 0:o.uid}),this.control.hasOffscreenCanvas()?this.fullWorker.postMessage(i):(n=this.mainThread)==null||n.consume(i)}async getVNodeInfo(e,t,i){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:L.GetVNodeInfo,dataType:B.Local,isRunSubWork:!0,viewId:t,workIds:i,workId:e}),this.consume(),await new Promise(o=>{const n=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};n.timer&&clearTimeout(n.timer),n.resolve=o,n.timer=setTimeout(()=>{const r=this.getVNodeInfoResolveMap.get(e);r!=null&&r.resolve&&r.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,n)}).then(o=>{const{uuid:n}=o;return this.getVNodeInfoResolveMap.delete(n),o})}}class ZM{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"roomHotkeyCheckers");y(this,"tmpCopyStore",new Map);y(this,"tmpCopyCoordInfo");var i;const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t,this.roomHotkeyCheckers=((i=this.control.room)==null?void 0:i.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var s;return((s=this.control.room)==null?void 0:s.disableDeviceInputs)||!1}get isSelector(){var s;return((s=this.control.worker.currentToolsData)==null?void 0:s.toolsType)===T.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(s){switch(s.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(s){var i,o,n;const e=this.control.viewContainerManager.focuedViewId,t=(i=this.control.viewContainerManager.focuedView)==null?void 0:i.focusScenePath;if(e&&t)switch(s){case"delete":this.isSelector&&((o=this.collector)!=null&&o.hasSelector(e,t))&&oe.emitMethod(se.MainEngine,F.DeleteNode,{workIds:[Q],viewId:e});break;case"copy":this.isSelector&&((n=this.collector)!=null&&n.hasSelector(e,t))&&this.copySelectorToTemp(e,t);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,t);break}(s==="changeToPencil"||s==="redo"||s==="undo")&&this.onSelfActiveHotkey(s)}colloctHotkey(s){if(this.isUseSelf){const e=this.checkHotkey(s);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(s){switch(s){case"changeToPencil":this.setMemberState({currentApplianceName:re.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:re.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:re.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:re.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:re.eraser,isLine:!0});break;case"changeToHand":this.setMemberState({currentApplianceName:re.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:re.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:re.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:re.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:re.straight});break;case"redo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.redo();break;case"undo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.undo();break;case"changeToText":this.setMemberState({currentApplianceName:re.text});break}}checkHotkey(s){for(const e of this.roomHotkeyCheckers){const{kind:t,checker:i}=e;if(i({nativeEvent:s,kind:this.getEventKey(s),key:s.key,altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey},this.keyboardKind))return t}}copySelectorToTemp(s,e){var l,u;const t=this.control.viewContainerManager.getView(s),i=(u=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:u.getBuilder(F.CopyNode);if(!t||!this.collector||!i)return;const o=this.collector.transformKey(Q),n=this.collector.getStorageData(s,e);if(!n)return;const r=n[o],c=r&&i.copySelector({viewId:s,store:r});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(s,e){var o,n;const t=this.control.viewContainerManager.getView(s),i=(n=(o=this.mainEngine)==null?void 0:o.methodBuilder)==null?void 0:n.getBuilder(F.CopyNode);if(!(!t||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!i)&&t.viewData&&this.tmpCopyCoordInfo){const r=j.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=t.viewData.camera;r.x=r.x+l.centerX-c.centerX,r.y=r.y+l.centerY-c.centerY;const u=Date.now();this.control.worker.internalMsgEmitter.emit("addUndoTicker",u,s),i.pasteSelector({viewId:s,scenePath:e,copyStores:j.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:r,cameraOpt:l},undoTickerId:u})}}setMemberState(s){var e;(e=this.control.room)==null||e.setMemberState(s)}}class qM{constructor(s){y(this,"control");y(this,"roomMemberManager");y(this,"worker");y(this,"publicMsgEmitter");y(this,"renderUids",new Map);y(this,"pageAuth",new Map);y(this,"isLocalRender",!1);y(this,"isCurWritable",!1);var i;const{control:e,publicMsgEmitter:t}=s;this.control=e,this.publicMsgEmitter=t,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((i=this.control.room)==null?void 0:i.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(s){this.isCurWritable=s}addPage(s,e=!0){var l,u;const{viewId:t,render:i="localSelf",elementIds:o,pageId:n=(l=this.control.collector)==null?void 0:l.uid}=s,r=this.pageAuth.get(t)||new Map,c=this.control.viewContainerManager.getCurScenePath(t);if(c&&n){const h=r.get(c)||{render:"localSelf",pages:new Map};e&&(h.render=i);const d=o&&this.cloneElementIds(t,c,o,n)||new Set;h.pages.set(n,d),r.set(c,h),this.pageAuth.set(t,r),e&&this.pageAuthEffect(t),this.isLocalRender=!1,(u=this.control.collector)==null||u.dispatchPageAuth({operation:ze.addPage,viewId:t,scenePath:c,pageId:n,pageData:{render:i,elementIds:d}},!0)}}delPage(s,e){var n,r;const t=this.pageAuth.get(e);if(!t)return;const i=[...t.keys()].find(c=>{const l=t.get(c);return!!(l&&l.pages.has(s))});if(!i)return;const o=t.get(i);if(o){const{render:c,pages:l}=o,u=c==="localSelf"?(n=this.control.collector)==null?void 0:n.uid:c,h=l.get(s);h!=null&&h.size&&this.delElementIds(e,i,h),l.delete(s),u===s&&this.pageAuthEffect(e)}(r=this.control.collector)==null||r.dispatchPageAuth({operation:ze.deletePage,viewId:e,scenePath:i,pageId:s},!0)}delViewPage(s,e=!0){var i;this.pageAuth.get(s)&&(this.pageAuth.delete(s),e&&((i=this.control.collector)==null||i.dispatchPageAuth({operation:ze.clearView,viewId:s},e)))}clearRenderPage(s,e,t=!0){var r,c;const i=this.pageAuth.get(s);if(!i)return;const o=i.get(e);let n;if(o){const{render:l,pages:u}=o,h=l==="localSelf"?(r=this.control.collector)==null?void 0:r.uid:l;if(h){if(t){const d=u.get(h);d&&this.delElementIds(s,e,d)}u.set(h,new Set),n=h}}t&&n&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:ze.clearPage,viewId:s,scenePath:e,pageId:n},t))}hasPage(s,e,t){const i=this.pageAuth.get(e);if(!i)return!1;const o=i.get(t);return o?o.pages.has(s):!1}getPageInfo(s,e,t){const i=this.pageAuth.get(e);if(!i)return;const o=i.get(t);if(o)return o.pages.get(s)}addRenderPageElementId(s,e=!0,t=!1){var u,h;const{viewId:i,elementId:o,scenePath:n}=s,r=this.pageAuth.get(i);if(!r)throw new Error(`no view info in viewId: ${i}`);const c=r.get(n);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const p=f.get(g)||new Set;p.add(o),f.set(g,p),l=g}}t&&this.pageAuthEffect(i),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:ze.addElement,viewId:i,scenePath:n,pageId:l,pageData:{elementId:o}},e))}delRenderPageElementId(s,e=!0,t=!1){var u,h;const{viewId:i,elementId:o,scenePath:n}=s,r=this.pageAuth.get(i);if(!r)throw new Error(`no view info in viewId: ${i}`);const c=r.get(n);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const p=f.get(g);p&&(p.delete(o),f.set(g,p),l=g)}}t&&this.pageAuthEffect(i),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:ze.deleteElement,viewId:i,scenePath:n,pageId:l,pageData:{elementId:o}},e))}setPageRender(s,e,t,i=!0){var r;const o=this.pageAuth.get(s);if(!o)throw new Error(`no view info in viewId: ${s}`);const n=o.get(e);n&&(n.render=t),e===this.control.viewContainerManager.getCurScenePath(s)&&this.pageAuthEffect(s),i||(this.isLocalRender=!0),i&&(this.isLocalRender=!1,(r=this.control.collector)==null||r.dispatchPageAuth({operation:ze.renderPage,viewId:s,scenePath:e,pageData:{render:t}},i))}isRenderAble(s){var c,l;const{uid:e,viewId:t,filterLocalSelf:i=!0,scenePath:o}=s,n=this.renderUids.get(t);if(n){const{render:u,hide:h}=n;if(u===void 0&&h===void 0)return!0;if(j.isSet(u)){if(u.has(e)||i&&((c=this.control.collector)==null?void 0:c.uid)===e&&u.has("localSelf"))return!0}else if(u===!0&&(!h||j.isSet(h)&&!h.has(e)&&!(i&&h.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const r=this.pageAuth.get(t);if(r&&o){const u=r.get(o);if(u){const{render:h}=u;if(h)return!(h==="localSelf"&&!i)}}return!0}isClearAble(s){var c;const{uid:e,viewId:t,filterLocalSelf:i=!0,scenePath:o}=s,n=this.renderUids.get(t);if(n){const{clear:l}=n;return!!(l===void 0||l===!0||j.isSet(l)&&(l.has(e)||i&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const r=this.pageAuth.get(t);if(r&&o){const l=r.get(o);if(l){const{render:u}=l;if(u)return!(u==="localSelf"&&!i)}}return!0}isFilterAble(s,e){var c,l,u,h;const{viewId:t,scenePath:i,elementId:o}=s,n=this.renderUids.get(t);if(n&&o){const{render:d,hide:f}=n;if(d===void 0&&f===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(o);return g?!!(j.isSet(d)&&(d.has(g)||d.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||d===!0&&(!f||j.isSet(f)&&!f.has(g)&&!(f.has("localSelf")&&((u=this.control.collector)==null?void 0:u.uid)===g))):!1}const r=this.pageAuth.get(t);if(r&&i&&o){const d=r.get(i);if(d){const{render:f,pages:g}=d;if(!f)return!0;const p=(h=this.control.collector)==null?void 0:h.uid,m=f==="localSelf"?p:f,N=m&&g.get(m)||void 0;if(N)switch(e){case L.RemoveNode:return!0;default:return N.has(o)}return!1}}return!0}isFilterCursor(s){if(this.isUsePageAuth(s)){const e=this.control.viewContainerManager.getCurScenePath(s),t=this.pageAuth.get(s);if(e&&t){const i=t.get(e);if(i){const{render:o}=i;return o!=="localSelf"}}}return!0}isUsePageAuth(s){var i;if(!this.pageAuth.has(s))return!1;const t=this.control.viewContainerManager.getCurScenePath(s);return t&&((i=this.pageAuth.get(s))==null?void 0:i.has(t))||!1}publishRender(s){var n;const{viewId:e,option:t,isSync:i=!0}=s,o={};if(t){const{render:r,hide:c,clear:l}=t;r&&(o.render=r===!0&&!0||new Set(r)),c&&(o.hide=c===!0&&!0||new Set(c)),l&&(o.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,o)}else this.renderUids.delete(e);i&&((n=this.control.collector)==null||n.dispatchRenderAuth({operation:Ge.setAuth,viewId:e,renderData:o},i)),this.renderEffect(e)}publishOneRender(s,e,t,i=!0){var r;const o=this.renderUids.get(s);let n;switch(t){case"show":o?(o.render||(o.render=new Set),j.isSet(o.render)&&o.render.add(e),j.isSet(o.hide)&&o.hide.delete(e)):this.renderUids.set(s,{render:new Set([e])}),n=Ge.setShow;break;case"hide":o?(o.hide||(o.hide=new Set),j.isSet(o.hide)&&o.hide.add(e),j.isSet(o.render)&&o.render.delete(e)):this.renderUids.set(s,{hide:new Set([e])}),n=Ge.setHide;break}o?this.renderUids.set(s,o):this.renderUids.delete(s),i&&n&&((r=this.control.collector)==null||r.dispatchRenderAuth({operation:n,viewId:s,uid:e},i)),this.renderEffect(s)}publishOneClear(s,e,t,i=!0){var n;const o=this.renderUids.get(s);t?o?(o.clear||(o.clear=new Set),j.isSet(o.clear)&&o.clear.add(e)):this.renderUids.set(s,{clear:new Set([e])}):o&&j.isSet(o.clear)&&o.clear.has(e)&&o.clear.delete(e),o?this.renderUids.set(s,o):this.renderUids.delete(s),i&&((n=this.control.collector)==null||n.dispatchRenderAuth({operation:Ge.setClear,viewId:s,uid:e,isClear:t},i)),this.renderEffect(s)}syncRenderUids(s,e,t,i){const o=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,n=t===!0?!0:t&&Object.keys(t)?new Set(Object.keys(t)):void 0,r=i===!0?!0:i&&Object.keys(i)?new Set(Object.keys(i)):void 0;o||n||r?this.renderUids.set(s,{render:o,hide:n,clear:r}):this.renderUids.delete(s),this.renderEffect(s),this.publicMsgEmitter.emit("syncRenderUids",s,{render:o,hide:n,clear:r})}syncPageAuth(s,e,t=!1){let i=!1;if(!e)this.pageAuth.delete(s);else{const o=this.pageAuth.get(s)||new Map;for(const[n,r]of Object.entries(e)){const{render:c,pages:l}=r,u=o.get(n),h=this.isLocalRender?u==null?void 0:u.render:c;if(h){h!==(u==null?void 0:u.render)&&(i=!0);const d=new Map;for(const[g,p]of Object.entries(l))d.set(g,new Set(Object.keys(p)));const f={render:h,pages:d};d.size&&o.set(n,f)}}o.size&&(this.pageAuth.set(s,o),this.publicMsgEmitter.emit("syncPageAuth",s,o))}(t||i)&&this.pageAuthEffect(s)}destoryByViewId(s,e=!1){var t;this.renderUids.has(s)&&(this.renderUids.delete(s),e||(t=this.control.collector)==null||t.dispatchRenderAuth({operation:Ge.setAuth,viewId:s})),this.pageAuth.has(s)&&this.control.renderControl.delViewPage(s,!e)}renderEffect(s){var t;const e=(t=this.control.viewContainerManager.getView(s))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(s,!0).then(()=>{var i;this.worker.pullServiceData(s,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(s,(i=this.renderUids.get(s))==null?void 0:i.clear)})}pageAuthEffect(s){var t;const e=(t=this.control.viewContainerManager.getView(s))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(s,!0).then(()=>{this.worker.pullServiceData(s,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(s,!0)})}cloneElementIds(s,e,t,i){var r,c;const o=(r=this.control.collector)==null?void 0:r.getStorageData(s,e),n=new Set;if(o){for(const l of Object.keys(o))if(t.has(l)){const u=`${l}_${i}`;if(n.add(u),!Object.keys(o).includes(u)){const h=j.cloneDeep(o[l]);(c=this.control.collector)==null||c.updateValue(u,{type:L.FullWork,...h,workId:u},{isSync:!0,viewId:s,scenePath:e})}}}return n}delElementIds(s,e,t){var o,n;const i=(o=this.control.collector)==null?void 0:o.getStorageData(s,e);if(i)for(const r of Object.keys(i))t.has(r)&&Object.keys(i).includes(r)&&((n=this.control.collector)==null||n.updateValue(r,void 0,{isSync:!0,viewId:s,scenePath:e}))}}class XM{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"maps",new Map);y(this,"showId");y(this,"color");y(this,"timer");y(this,"updateMiniMapCamera",j.debounce(async s=>{const e=this.maps.get(s);if(e){const t=await this.getMiniMapCamera(s);if(t){const i=t.width/t.scale,o=t.height/t.scale,n=e.miniMapCamera.width/e.miniMapCamera.scale,r=e.miniMapCamera.height/e.miniMapCamera.scale;(i>=n||o>=r)&&(e.miniMapCamera=t);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const u=this.control.viewContainerManager.getView(s);if(!(u!=null&&u.focusScenePath))return;const{miniMapCamera:h,contianer:d}=e,{width:f,height:g}=d.getBoundingClientRect(),p=Math.min(f/h.width,g/h.height);l.clearRect(0,0,c.width,c.height),c.width=h.width,c.height=h.height,c.style.width=`${h.width*p}px`,c.style.height=`${h.height*p}px`,await this.control.screenshotToCanvas(l,u.focusScenePath,h.width,h.height,h),this.listener.emitAsync([s,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var i;const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t,this.color=((i=this.control.worker.currentToolsData)==null?void 0:i.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(s){this.color=s}async createMiniMap(s,e,t){const i=this.control.viewContainerManager.getView(s);if(!i)throw new Error("view not found");const o=i.cameraOpt;if(!o)throw new Error("view camera not found");const{width:n,height:r}=e.getBoundingClientRect();if(!n||!r)throw new Error("contianer width or height is 0");const c=M.createRef();this.maps.set(s,{contianer:e,miniMapCanvas:c,miniMapCamera:t,viewCamera:o}),this.showId=s,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(n/t.width,r/t.height),u=await new Promise(h=>{this.listener.once([s,"miniMapCreate"],()=>{const d=c.current;d&&(d.width=t.width,d.height=t.height,d.style.width=`${t.width*l}px`,d.style.height=`${t.height*l}px`),h(!0)}),this.timer=setTimeout(()=>{h(!1)},2e3)});return this.timer&&clearTimeout(this.timer),u}async getMiniMapCamera(s){const e=this.control.viewContainerManager.getView(s);if(!e)return;const{cameraOpt:t,focusScenePath:i}=e;if(!t||!i)return;const o={originX:t.centerX-t.width/t.scale/2,originY:t.centerY-t.height/t.scale/2,width:t.width/t.scale,height:t.height/t.scale};let n=await this.control.getBoundingRect(i)||o;n=ii(n,o)||o;let r=n.width,c=n.height,l=1;const u=r>t.width&&Math.min(t.width/r,l)||l,h=c>t.height&&Math.min(t.height/c,l)||l;return u<=h?(r=u<1&&t.width||r,c=Math.floor(c*u)+1,l=u):u>h&&(c=h<1&&t.height||c,r=Math.floor(r*h)+1,l=h),{scale:l,centerX:n.originX+n.width/2,centerY:n.originY+n.height/2,width:r,height:c}}getMiniMapCanvas(s){const e=this.maps.get(s);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(s,e){const t=this.maps.get(s);t&&(t.viewCamera=e,this.listener.emitAsync([s,"viewCameraUpate"],1))}destroyMiniMap(s){const e=s||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}class en{constructor(){y(this,"control");y(this,"_listeners",{})}_inject(s){this.control=s}_onEvent(s,e){this._listeners[s]&&this._listeners[s](...e)}callbacks(s,e){this._listeners[s]=e}removeCallback(s){delete this._listeners[s]}}class JM{constructor(s){y(this,"control");y(this,"worker");y(this,"publicMsgEmitter");y(this,"plugins",new Map);const{control:e,publicMsgEmitter:t}=s;this.control=e,this.publicMsgEmitter=t,this.worker=e.worker}use(s){this.plugins.set(s.kind,s),s._inject(this.control),s.onCreate()}destroy(){this.plugins.forEach(s=>{this.plugins.delete(s.kind),s.onDestroy()})}dispatchPluginEvent(s,...e){this.plugins.forEach(t=>{t._onEvent(s,e)})}}const lt=class lt{constructor(s){y(this,"version",Do);y(this,"plugin");y(this,"room");y(this,"play");y(this,"collector");y(this,"hasSwitchToSelectorEffect");y(this,"snapshootStateMap");y(this,"_disableDeviceInputs");y(this,"_disableEraseImage");y(this,"_disableEraseText");y(this,"priority","cpu");y(this,"effectResolve");y(this,"hotkeyManager");y(this,"pluginOptions");y(this,"roomMember");y(this,"cursor");y(this,"textEditorManager");y(this,"worker");y(this,"renderControl");y(this,"miniMapManager");y(this,"pluginManager");y(this,"onSceneChange",async(s,e)=>{var n;const t=this.viewContainerManager.getView(e);t!=null&&t.focusScenePath&&(n=this.collector)!=null&&n.hasSelector(e,t.focusScenePath)&&this.worker.blurSelector(e,t.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const i=t==null?void 0:t.displayer;i&&(i.setActive(!1),await i.stopEventHandler());const o=s;o&&this.viewContainerManager.setViewScenePath(e,o),i==null||i.setActive(!0)});y(this,"onRoomMembersChange",s=>{this.roomMember.setRoomMembers(X.toJS(s))});y(this,"onMemberChange",Ms(s=>{var n;if(!this.room||!this.worker||!s||!this.room.isWritable)return;const e=this.getToolsKey(s),t=(n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType,i=this.viewContainerManager.focuedViewId;i&&t===T.Selector&&e!==T.Selector&&this.worker.blurCursor(i);const o=this.getToolsOpt(e,s);this.worker.setCurrentToolsData(o),this.pluginManager.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));y(this,"internalSceneChange",(s,e)=>{var i;this.miniMapManager.activeViewId===s&&this.miniMapManager.destroyMiniMap(s),this.pluginManager.dispatchPluginEvent("sceneChange",s,e),(i=this.worker)==null||i.clearViewScenePath(s,!0).then(()=>{var o;(o=this.worker)==null||o.pullServiceData(s,e,{isAsync:!0,useAnimation:!1})})});y(this,"internalCameraChange",(s,e)=>{var t;(t=this.worker)==null||t.updateCamera(s,e),this.miniMapManager.updateViewCamera(s,e)});const{displayer:e,plugin:t,options:i}=s;this.plugin=t,this.room=X.isRoom(e)?e:void 0,this.play=X.isPlayer(e)?e:void 0,this.room&&(this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1),this.pluginOptions=i,this.roomMember=new bM;const o={control:this,internalMsgEmitter:lt.InternalMsgEmitter,publicMsgEmitter:lt.PublicMsgEmitter};this.cursor=new LM(o),this.textEditorManager=new xM(o),this.worker=new GM(o),this.hotkeyManager=new ZM(o),this.renderControl=new qM(o),this.miniMapManager=new XM(o),this.pluginManager=new JM(o)}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(s){this._disableEraseText=s}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(s){this._disableEraseImage=s}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(s){var t;this._disableDeviceInputs=s;const e=(t=this.worker.getCurrentToolsData())==null?void 0:t.toolsType;e&&this.effectViewContainer(e)}setPriority(s){var e;this.priority=s,this.hasOffscreenCanvas()&&((e=this.worker)==null||e.setPriority(s))}hasOffscreenCanvas(){return Ks==="worker"}bindPlugin(s){var e,t;this.plugin=s,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new Es(this,s,(t=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:t.interval),this.activePlugin()}destroy(){var s,e,t,i,o,n;this.roomMember.destroy(),(s=this.collector)==null||s.destroy(),(e=this.worker)==null||e.destroy(),(t=this.viewContainerManager)==null||t.destroy(),(i=this.cursor)==null||i.destroy(),(o=this.textEditorManager)==null||o.destory(),(n=this.pluginManager)==null||n.destroy()}cleanCurrentScene(){const s=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(lt.InternalMsgEmitter.emit("addUndoTicker",s,e),this.worker.clearViewScenePath(e,!1,!0))}async setWritable(s){var e;if(!s){this.textEditorManager.checkEmptyTextBlur();const t=this.viewContainerManager.getAllViews();for(const i of t){i!=null&&i.focusScenePath&&(e=this.collector)!=null&&e.hasSelector(i.id,i.focusScenePath)&&this.worker.blurSelector(i.id,i.focusScenePath);const o=i==null?void 0:i.displayer;o&&o.getActive()&&(o.setActive(!1),await o.stopEventHandler())}}await new Promise(t=>{setTimeout(()=>{t()},500)})}onWritableChange(s){var t,i;s?(i=this.worker)==null||i.abled():(t=this.worker)==null||t.unWritable(),this.renderControl.onWritableChange(s),this.viewContainerManager.getAllViews().forEach(o=>{const n=o==null?void 0:o.displayer;n&&(n.bindToolsClass(),s?n.setActive(!0):n.setActive(!1))})}getToolsKey(s){var t;const e=s.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case re.text:return s.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Text;case re.pencil:return s.useLaserPen?T.LaserPen:T.Pencil;case re.eraser:return T.Eraser;case re.pencilEraser:return((t=this.pluginOptions.pencilEraser)==null?void 0:t.useBitMap)===!1?T.PencilEraser:T.BitMapEraser;case re.selector:return T.Selector;case re.arrow:return s.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Arrow;case re.straight:return s.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Straight;case re.ellipse:return s.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Ellipse;case re.rectangle:return s.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Rectangle;case re.shape:if(s.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),s.shapeType===He.Pentagram||s.shapeType===He.Star)return T.Star;if(s.shapeType===He.Polygon||s.shapeType===He.Triangle||s.shapeType===He.Rhombus)return T.Polygon;if(s.shapeType===He.SpeechBalloon)return T.SpeechBalloon;break}return T.Clicker}getToolsOpt(s,e){if(s===T.Clicker)return{toolsType:s,toolsOpt:{}};const t={strokeColor:jt(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(s){case T.Text:t.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),t.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),t.textAlign=(e==null?void 0:e.textAlign)||"left",t.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",t.fontColor=(e==null?void 0:e.textColor)&&jt(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||t.strokeColor||"rgba(0,0,0,1)",t.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&jt(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",t.bold=(e==null?void 0:e.bold)&&"bold"||void 0,t.italic=(e==null?void 0:e.italic)&&"italic"||void 0,t.underline=(e==null?void 0:e.underline)||void 0,t.lineThrough=(e==null?void 0:e.lineThrough)||void 0,t.text="",t.strokeColor=void 0;break;case T.Pencil:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal;break;case T.PencilEraser:case T.BitMapEraser:case T.Eraser:t.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1;break;case T.LaserPen:t.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===te.Stroke?t.strokeType=te.Normal:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal;break;case T.Arrow:case T.Straight:e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===te.Stroke?t.strokeType=te.Normal:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal;break;case T.Ellipse:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===te.Stroke?t.strokeType=te.Normal:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal,s===T.Star&&(e.shapeType===He.Pentagram?(t.vertices=10,t.innerVerticeStep=2,t.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(t.vertices=e.vertices,t.innerVerticeStep=e.innerVerticeStep,t.innerRatio=e.innerRatio)),s===T.Polygon&&(e.shapeType===He.Triangle?t.vertices=3:e.shapeType===He.Rhombus?t.vertices=4:e.vertices&&(t.vertices=e.vertices)),t.fillColor=(e==null?void 0:e.fillColor)&&jt(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",s===T.SpeechBalloon&&(t.placement=e.placement||"bottomLeft");break}return{toolsType:s,toolsOpt:t}}effectViewContainer(s){var e,t,i,o,n,r,c;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.unWritable(),(t=this.cursor)==null||t.unabled();else switch(s){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Triangle:case T.Rhombus:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:this.room.disableDeviceInputs=!0,(i=this.worker)==null||i.abled();break;case T.Selector:this.room.disableDeviceInputs=!1,(o=this.cursor)==null||o.unabled(),(n=this.worker)==null||n.abled();break;default:this.room.disableDeviceInputs=!1,(r=this.worker)==null||r.unWritable(),(c=this.cursor)==null||c.unabled();break}setTimeout(()=>{this.viewContainerManager.getAllViews().forEach(u=>{u!=null&&u.displayer&&u.displayer.bindToolsClass()})},0)}async getBoundingRect(s){var t,i,o,n,r;const e=await((t=this.worker)==null?void 0:t.getBoundingRect(s));if(e){const c=((o=(i=this.viewContainerManager.mainView)==null?void 0:i.viewData)==null?void 0:o.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((r=(n=this.viewContainerManager.mainView)==null?void 0:n.viewData)==null?void 0:r.camera.scale)||1;return{width:Math.floor(e.w/l)+1,height:Math.floor(e.h/l)+1,originX:c.x,originY:c.y}}}async screenshotToCanvas(s,e,t,i,o,n,r){const c=await this.worker.getSnapshot(e,t,i,o);c&&(s.drawImage(c,n||0,r||0),c.close())}async scenePreview(s,e){var n,r,c,l;const t=(n=this.collector)==null?void 0:n.getViewIdBySecenPath(s);if(!t)return;const i=this.viewContainerManager.getView(t);if(!i||!((r=i.cameraOpt)!=null&&r.width)||!((c=i.cameraOpt)!=null&&c.height))return;const o=await((l=this.worker)==null?void 0:l.getSnapshot(s));if(o&&this.worker){const u=document.createElement("canvas"),h=u.getContext("2d"),{width:d,height:f}=i.cameraOpt;u.width=d,u.height=f,h&&(h.drawImage(o,0,0),e.crossOrigin="anonymous",e.src=u.toDataURL(),e.onload=()=>{u.remove()},e.onerror=()=>{u.remove(),e.remove()}),o.close()}}switchToText(){var s;(s=this.room)==null||s.setMemberState({currentApplianceName:re.text})}switchToSelector(){var s;(s=this.room)==null||s.setMemberState({currentApplianceName:re.selector})}async runEffectWork(s){if(this.hasSwitchToSelectorEffect){const e=await new Promise(t=>{this.switchToSelector(),this.effectResolve=t});this.effectResolve=void 0,e&&s&&s()}}setSnapshootData(){var s;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(s=this.room)==null?void 0:s.state.memberState))}getSnapshootData(s){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(s)}clearSnapshootData(){var s;(s=this.snapshootStateMap)==null||s.clear(),this.snapshootStateMap=void 0}useBitMapEraser(s){var e;if(((e=this.pluginOptions.pencilEraser)==null?void 0:e.useBitMap)===void 0){this.pluginOptions.pencilEraser={useBitMap:s,maxImageWidth:Se.pencilEraser.maxImageWidth,maxImageHeight:Se.pencilEraser.maxImageHeight};return}this.pluginOptions.pencilEraser.useBitMap=s}consoleWorkerInfo(){var s;(s=this.worker)==null||s.consoleWorkerInfo()}filterRenderByUid(s,e,t=!0){var o;this.viewContainerManager.getView(s)&&((o=this.renderControl)==null||o.publishRender({viewId:s,option:e,isSync:t}))}cancelFilterRender(s,e=!0){var t;(t=this.renderControl)==null||t.publishRender({viewId:s,isSync:e})}async createMiniMap(s,e){const t=await this.miniMapManager.getMiniMapCamera(s);if(t&&await this.miniMapManager.createMiniMap(s,e,t)){const o=this.miniMapManager.getMiniMapCanvas(s);if(o){const n=o.getContext("2d");if(n){const r=this.viewContainerManager.getView(s);r!=null&&r.focusScenePath&&this.screenshotToCanvas(n,r.focusScenePath,t.width,t.height,t)}}}}async destroyMiniMap(s){this.miniMapManager.destroyMiniMap(s)}insertIconify(s,e){var i;if(this.viewContainerManager.getView(s)&&this.room){const o=this.room.state.memberState,n=jt(o.strokeColor[0],o.strokeColor[1],o.strokeColor[2],o.strokeOpacity||1);(i=this.worker)==null||i.insertIconify(s,{...e,strokeColor:n})}}usePlugin(s){return this.pluginManager.use(s)}};y(lt,"InternalMsgEmitter",new bs),y(lt,"PublicMsgEmitter",new bs);let Te=lt;const ht=class ht{constructor(s){y(this,"emitter",new bs);y(this,"undoStack");y(this,"redoStack");y(this,"worker");y(this,"control");y(this,"room");y(this,"isTicking");y(this,"undoTickerId");y(this,"viewId");y(this,"scenePath");y(this,"tickStartStorerCache");y(this,"excludeIds",new Set);y(this,"onChangeScene",j.debounce(()=>{const s=this.control.viewContainerManager.getCurScenePath(this.viewId);if(s){let e=this.undoStack.filter(i=>i.scenePath===s).length;const t=this.redoStack.filter(i=>i.scenePath===s).length;e===0&&t===0&&this.tickStartStorerCache&&this.scenePath===s&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",t)}},ht.waitTime));const{control:e,internalMsgEmitter:t,viewId:i}=s;this.control=e,this.emitter=t,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=i}get collector(){return this.control.collector}addExcludeIds(s){if(this.isTicking)for(const e of s)this.excludeIds.add(e)}undoTickerStart(s,e){var t,i;if(this.collector&&(this.undoTickerId!==s||this.scenePath!==e)){!this.undoTickerId&&!this.tickStartStorerCache&&!this.scenePath&&this.emitter.emit("onCanUndoStepsUpdate",1),this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const o=this.collector.transformKey(Q);this.excludeIds.add(o),this.undoTickerId=s,this.scenePath=e;const n=((t=this.collector)==null?void 0:t.storage[this.viewId])&&((i=this.collector)==null?void 0:i.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(j.cloneDeep(n)))}}undoTickerEndSync(s,e,t){var i,o;if(s===this.undoTickerId&&t===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const n=((i=this.collector)==null?void 0:i.storage[e])&&((o=this.collector)==null?void 0:o.storage[e][t])||{},r=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(n)));r.size&&(this.undoStack.push({id:s,type:2,data:j.cloneDeep(r),scenePath:t}),this.undoStack.length>ht.MaxStackLength&&this.undoStack.shift(),this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)),this.redoStack.length&&(this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.undoTickerId=void 0,this.excludeIds.clear()}}undo(s){this.undoTickerId&&this.tickStartStorerCache&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath);let e=this.undoStack.length-1;for(;e>=0;){if(this.undoStack[e].scenePath===s){const n=this.undoStack[e];n&&(this.redoStack.push(n),n.type===2&&n.data&&this.refreshPlugin(n)),this.undoStack.splice(e,1);break}e--}const t=this.undoStack.filter(o=>o.scenePath===s).length,i=this.redoStack.filter(o=>o.scenePath===s).length;return this.emitter.emit("onCanUndoStepsUpdate",t),this.emitter.emit("onCanRedoStepsUpdate",i),t}redo(s){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===s){const n=this.redoStack[e];n&&(!this.undoTickerId&&n.tickStartStorerCache?(this.undoTickerId=n.id,this.tickStartStorerCache=n.tickStartStorerCache,this.scenePath=n.scenePath):this.undoStack.push(n),n.type===2&&n.data&&this.refreshPlugin(n,!0)),this.redoStack.splice(e,1);break}e--}const t=this.undoStack.filter(o=>o.scenePath===s).length,i=this.redoStack.filter(o=>o.scenePath===s).length;return this.emitter.emit("onCanUndoStepsUpdate",t),this.emitter.emit("onCanRedoStepsUpdate",i),i}clear(){this.clearUndo(),this.clearRedo()}clearUndo(){this.undoStack.length=0,this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){const s=this.control.viewContainerManager.getCurScenePath(this.viewId);if(s){let e=this.undoStack.filter(i=>i.scenePath===s).length;const t=this.redoStack.filter(i=>i.scenePath===s).length;e===0&&t===0&&this.tickStartStorerCache&&this.scenePath===s&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",t)}}diffFun(s,e){const t=new Set,i=s.keys(),o=e.keys();for(const n of i){if(this.excludeIds.has(n))continue;const r=s.get(n),c=e.get(n);if(r&&c){if(j.isEqual(c,r))continue;t.add({dataType:3,key:n,data:[r,c]});continue}r&&t.add({dataType:2,key:n,data:r})}for(const n of o){if(this.excludeIds.has(n))continue;const r=e.get(n);r&&!s.has(n)&&t.add({dataType:1,key:n,data:r})}return t}isDrawEffectiveScene(s,e){const{key:t}=s;return!e.includes(t)}isDeleteEffectiveScene(s,e,t){var n;const{key:i}=s;if(!e.includes(i))return!1;const o=e.filter(r=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(r))===Q&&!((l=this.collector)!=null&&l.isOwn(r))}).map(r=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][t][r]});for(const r of o)if((n=r==null?void 0:r.selectIds)!=null&&n.includes(i))return!1;return!0}isOldEffectiveScene(s,e,t){var n;const{key:i}=s;if(!e.includes(i))return!1;const o=e.filter(r=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(r))===Q&&!((l=this.collector)!=null&&l.isOwn(r))}).map(r=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][t][r]});for(const r of o)if((n=r==null?void 0:r.selectIds)!=null&&n.includes(i))return!1;return!0}isNewEffectiveScene(s,e){const{key:t}=s;return!!e.includes(t)}refreshPlugin(s,e=!1){var r,c,l,u,h,d,f,g,p,m,N,v,I,k,w,S,b,x,P,E,R;let t;const{scenePath:i}=s,o=s.data;if(!o||!this.collector)return;const n=j.cloneDeep(this.collector.storage);for(const O of o.values()){const{dataType:D,data:A,key:G}=O,ne=this.collector.getStorageData(this.viewId,i),q=ne&&Object.keys(ne)||[];switch(D){case 1:if(t=e?this.isDrawEffectiveScene(O,q):this.isDeleteEffectiveScene(O,q,i),t)if(e&&!Array.isArray(A)){if((r=A.updateNodeOpt)!=null&&r.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((c=this.collector)==null?void 0:c.getLocalId(G))===Q&&((l=this.collector)!=null&&l.isOwn(O.key))){const Z=A.selectIds;if(Z){const H=q.filter(ie=>{var K,ue;return((K=this.collector)==null?void 0:K.getLocalId(ie))===Q&&!((ue=this.collector)!=null&&ue.isOwn(ie))}).map(ie=>{var K;return(K=this.collector)==null?void 0:K.storage[this.viewId][i][ie]});let _=!1;for(const ie of H)for(let K=0;K<Z.length;K++)(u=ie==null?void 0:ie.selectIds)!=null&&u.includes(Z[K])&&(delete Z[K],_=!0);_&&(A.selectIds=Z.filter(ie=>!!ie))}}(h=this.collector)==null||h.updateValue(O.key,A,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}else!e&&!Array.isArray(O.data)&&((d=this.collector)==null||d.updateValue(O.key,void 0,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n}));break;case 2:if(t=e?this.isDeleteEffectiveScene(O,q,i):this.isDrawEffectiveScene(O,q),t){if(e&&!Array.isArray(A))(f=this.collector)==null||f.updateValue(G,void 0,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n});else if(!e&&!Array.isArray(A)){if((g=A.updateNodeOpt)!=null&&g.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((p=this.collector)==null?void 0:p.getLocalId(O.key))===Q&&((m=this.collector)!=null&&m.isOwn(O.key))){const Z=A.selectIds;if(Z){const H=q.filter(ie=>{var K,ue;return((K=this.collector)==null?void 0:K.getLocalId(ie))===Q&&!((ue=this.collector)!=null&&ue.isOwn(ie))}).map(ie=>{var K;return(K=this.collector)==null?void 0:K.storage[this.viewId][i][ie]});let _=!1;for(const ie of H)for(let K=0;K<Z.length;K++)(N=ie==null?void 0:ie.selectIds)!=null&&N.includes(Z[K])&&(delete Z[K],_=!0);_&&(A.selectIds=Z.filter(ie=>!!ie))}}(v=this.collector)==null||v.updateValue(O.key,O.data,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}}break;case 3:if(t=e?this.isNewEffectiveScene(O,q):this.isOldEffectiveScene(O,q,i),t){if(e&&Array.isArray(A)&&A.length===2){const Z=A[1];if((I=Z.updateNodeOpt)!=null&&I.useAnimation&&(Z.updateNodeOpt.useAnimation=!1),((k=this.collector)==null?void 0:k.getLocalId(O.key))===Q&&((w=this.collector)!=null&&w.isOwn(O.key))){const H=Z.selectIds;if(H){const _=q.filter(K=>{var ue,ee;return((ue=this.collector)==null?void 0:ue.getLocalId(K))===Q&&!((ee=this.collector)!=null&&ee.isOwn(K))}).map(K=>{var ue;return(ue=this.collector)==null?void 0:ue.storage[this.viewId][i][K]});let ie=!1;for(const K of _)for(let ue=0;ue<H.length;ue++)K!=null&&K.selectIds&&((S=K.selectIds)!=null&&S.includes(H[ue]))&&(delete H[ue],ie=!0);ie&&(Z.selectIds=H.filter(K=>!!K))}}(b=this.collector)==null||b.updateValue(G,Z,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}else if(!e&&Array.isArray(A)&&A.length===2){const Z=A[0];if((x=Z.updateNodeOpt)!=null&&x.useAnimation&&(Z.updateNodeOpt.useAnimation=!1),((P=this.collector)==null?void 0:P.getLocalId(O.key))===Q&&((E=this.collector)!=null&&E.isOwn(O.key))){const H=Z.selectIds;if(H){const _=q.filter(K=>{var ue,ee;return((ue=this.collector)==null?void 0:ue.getLocalId(K))===Q&&!((ee=this.collector)!=null&&ee.isOwn(K))}).map(K=>{var ue;return(ue=this.collector)==null?void 0:ue.storage[this.viewId][i][K]});let ie=!1;for(const K of _)for(let ue=0;ue<H.length;ue++)K!=null&&K.selectIds&&K.selectIds.includes(H[ue])&&(delete H[ue],ie=!0);ie&&(Z.selectIds=H.filter(K=>!!K))}}(R=this.collector)==null||R.updateValue(O.key,Z,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}}break}}}};y(ht,"sdkCallBack"),y(ht,"MaxStackLength",20),y(ht,"waitTime",100);let ns=ht;function KM(a){return a instanceof TouchEvent||a instanceof window.TouchEvent||(a==null?void 0:a.touches)&&(a==null?void 0:a.touches.length)||(a==null?void 0:a.changedTouches)&&(a==null?void 0:a.changedTouches.length)}function Nt(a){return KM(a)&&(a.touches&&a.touches.length===1||a.changedTouches&&a.changedTouches.length===1)}function tn(a){return a.touches&&a.touches.length?{x:a.touches[0].pageX,y:a.touches[0].pageY}:a.changedTouches&&a.changedTouches.length?{x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY}:{x:a.pageX,y:a.pageY}}class Tt{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"mainView");y(this,"appViews",new Map);const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t,this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart.bind(this)),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds.bind(this))}undoTickerStart(s,e){const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.undoTickerStart(s,t.focusScenePath)}addExcludeIds(s,e){const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.addExcludeIds(s)}undo(){const s=this.focuedView;let e=0;if(s){const t=s.focusScenePath;e=s.displayer.commiter.undo(t)||0}return e}redo(){const s=this.focuedView;let e=0;if(s){const t=s.focusScenePath;e=s.displayer.commiter.redo(t)||0}return e}validator(s,e,t){var n;const i=j.clone(s[e]),o=j.clone(t);e==="focusScenePath"&&t&&!j.isEqual(i,o)&&(this.control.internalSceneChange(s.id,o),(n=this.focuedView)==null||n.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!j.isEqual(i,o)&&this.control.internalCameraChange(s.id,o)}destroyAppView(s,e=!1){const t=this.appViews.get(s);t&&(this.control.textEditorManager.clear(s,e),t.displayer.destroy(),this.appViews.delete(s))}createMianView(s){this.mainView=new Proxy(s,{set:(e,t,i)=>(this.control.worker.isActive&&this.validator(e,t,i),e[t]=i,!0)})}createAppView(s){const e=s.id,t=new Proxy(s,{set:(i,o,n)=>(this.control.worker.isActive&&this.validator(i,o,n),i[o]=n,!0)});this.appViews.set(e,t)}isAppView(s){return s!==pe&&this.appViews.has(s)}getView(s){var e;return s===pe?this.mainView:(e=this.appViews)==null?void 0:e.get(s)}getCurScenePath(s){const e=this.getView(s);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(s,e){var t;if(s===pe&&this.mainView)this.mainView.focusScenePath=e;else{const i=s&&((t=this.appViews)==null?void 0:t.get(s))||void 0;i&&(i.focusScenePath=e)}}setViewData(s,e){var t;if(s===pe&&this.mainView)this.mainView.viewData=e;else{const i=s&&((t=this.appViews)==null?void 0:t.get(s))||void 0;i&&(i.viewData=e)}}setFocuedViewId(s){var e;this.focuedViewId=s,s===pe?this.focuedView=this.mainView:this.focuedView=s&&((e=this.appViews)==null?void 0:e.get(s))||void 0,this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(s,e){var i;let t;s===pe?t=this.mainView:t=(i=this.appViews)==null?void 0:i.get(s),t&&(t.focusScenePath=e)}destroy(){var s;this.internalMsgEmitter.removeAllListeners("addUndoTicker"),this.internalMsgEmitter.removeAllListeners("excludeIds"),(s=this.mainView)==null||s.displayer.destroy(),this.control.destroyMiniMap(pe),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.control.worker.destroyViewWorker(e.id),this.control.destroyMiniMap(e.id)})}setFocuedViewCameraOpt(s){if(this.focuedView){const e=this.focuedView.cameraOpt;j.isEqual(e,s)||(this.focuedView.cameraOpt=s)}}transformToOriginPoint(s,e){const t=this.getView(e);if(t!=null&&t.viewData){const i=t.viewData.convertToPointOnScreen(s[0],s[1]);return[i.x,i.y]}return s}transformToScenePoint(s,e){const t=this.getView(e);if(t!=null&&t.viewData){const i=t.viewData.convertToPointInWorld({x:s[0],y:s[1]});return[i.x,i.y]}return s}render(s){var e,t,i,o,n,r,c,l,u,h,d,f,g,p,m,N,v;for(const I of s){const{rect:k,imageBitmap:w,isClear:S,isUnClose:b,drawCanvas:x,clearCanvas:P,viewId:E}=I,R=(e=this.getView(E))==null?void 0:e.displayer;if(R&&k){const{dpr:O,canvasBgRef:D,canvasFloatRef:A,canvasServiceFloatRef:G,canvasTopRef:ne}=R,q=Math.floor(k.w*O),Z=Math.floor(k.h*O),H=k.x*O,_=k.y*O;if(S){switch(P){case Me.TopFloat:(i=(t=ne.current)==null?void 0:t.getContext("2d"))==null||i.clearRect(H,_,q,Z);break;case Me.Float:(n=(o=A.current)==null?void 0:o.getContext("2d"))==null||n.clearRect(H,_,q,Z);break;case Me.ServiceFloat:(c=(r=G.current)==null?void 0:r.getContext("2d"))==null||c.clearRect(H,_,q,Z);break;case Me.Bg:(u=(l=D.current)==null?void 0:l.getContext("2d"))==null||u.clearRect(H,_,q,Z);break}continue}if(x&&w)switch(x){case Me.TopFloat:(d=(h=ne.current)==null?void 0:h.getContext("2d"))==null||d.drawImage(w,0,0,q,Z,H,_,q,Z);break;case Me.Float:{(g=(f=A.current)==null?void 0:f.getContext("2d"))==null||g.drawImage(w,0,0,q,Z,H,_,q,Z);break}case Me.ServiceFloat:{(m=(p=G.current)==null?void 0:p.getContext("2d"))==null||m.drawImage(w,0,0,q,Z,H,_,q,Z);break}case Me.Bg:{(v=(N=D.current)==null?void 0:N.getContext("2d"))==null||v.drawImage(w,0,0,q,Z,H,_,q,Z);break}}if(b)continue;w==null||w.close()}}}showFloatBar(s,e,t){const i=this.getView(s),o=i==null?void 0:i.displayer.vDom;o&&o.showFloatBar(e,t)}setActiveTextEditor(s,e){const t=this.getView(s),i=t==null?void 0:t.displayer.vDom;i&&i.setActiveTextEditor(e)}setActiveMiniMap(s,e){const t=this.getView(s),i=t==null?void 0:t.displayer.vDom;i&&i.setActiveMiniMap(e&&s||void 0)}}y(Tt,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),y(Tt,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"webgl2"}),y(Tt,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class _M{constructor(s,e,t){y(this,"viewId");y(this,"control");y(this,"internalMsgEmitter");y(this,"commiter");y(this,"cachePoint");y(this,"cacheCursorPoint");y(this,"active",!0);y(this,"mousedown",s=>{if(this.active&&s.button===0&&this.viewId){this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Start,e,this.viewId)}});y(this,"mousemove",s=>{if(this.active&&this.viewId){const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)}});y(this,"mouseup",s=>{if(this.active&&s.button===0&&this.viewId){const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0}});y(this,"touchstart",s=>{var e;if(this.active){if(!Nt(s)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){if(!this.control.worker.isAbled()){const i=(e=this.control.worker.getCurrentToolsData())==null?void 0:e.toolsType;i&&this.control.effectViewContainer(i)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(s);this.cachePoint=t,t&&this.control.worker.originalEventLintener(z.Start,t,this.viewId)}}});y(this,"touchmove",s=>{if(this.active){if(!Nt(s)){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)}}});y(this,"touchend",s=>{if(this.active){if(!Nt(s)||!this.control.worker.isAbled()){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0}}});y(this,"cursorMouseMove",j.throttle(s=>{const e=this.getPoint(s);this.cacheCursorPoint&&j.isEqual(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));y(this,"cursorMouseLeave",j.throttle(()=>{this.viewId&&(this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId))},30,{leading:!1}));y(this,"keydown",s=>{this.control.hotkeyManager.colloctHotkey(s)});this.viewId=s,this.control=e,this.internalMsgEmitter=t;const i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new ns(i)}bindToolsClass(){var e,t;const s=(t=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:t.toolsType;switch(s){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${s===T.Text?"cursor-text":s===T.Eraser||s===T.PencilEraser||s===T.BitMapEraser?"cursor-eraser":s===T.Pencil||s===T.LaserPen?"cursor-pencil":"cursor-arrow"}`);break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}setViewId(s){this.viewId=s}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([se.Cursor,this.viewId])}getPoint(s){const e=tn(s);if(e&&j.isNumber(e.x)&&j.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}getActive(){this.active=!0}setActive(s){this.active=s}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(z.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(s){const t=(s.style.WebkitTransform||getComputedStyle(s,"").getPropertyValue("-webkit-transform")||s.style.transform||getComputedStyle(s,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),i=t&&parseInt(t[0])||0,o=t&&parseInt(t[1])||0;return[i,o]}getContainerOffset(s,e){var o;const t=this.getTranslate(s);let i={x:e.x+s.offsetLeft+t[0],y:e.y+s.offsetTop+t[1]};return(o=s.offsetParent)!=null&&o.nodeName&&s.offsetParent.nodeName!=="BODY"&&(i=this.getContainerOffset(s.offsetParent,i)),i}bindDisplayerEvent(s){s.addEventListener("mousedown",this.mousedown,!1),s.addEventListener("touchstart",this.touchstart,!1),document.addEventListener("mouseleave",this.mouseup,!1),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1),document.addEventListener("touchmove",this.touchmove,!1),document.addEventListener("touchend",this.touchend,!1),s.addEventListener("mousemove",this.cursorMouseMove,!1),s.addEventListener("mouseleave",this.cursorMouseLeave,!1),s.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(s){s.removeEventListener("mousedown",this.mousedown,!1),s.removeEventListener("touchstart",this.touchstart,!1),document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),s.removeEventListener("mousemove",this.cursorMouseMove,!1),s.removeEventListener("mouseleave",this.cursorMouseLeave,!1),s.removeEventListener("keydown",this.keydown,!0)}}class sn{constructor(s,e){y(this,"viewId",pe);y(this,"control");y(this,"internalMsgEmitter");y(this,"commiter");y(this,"cachePoint");y(this,"cacheCursorPoint");y(this,"active",!0);y(this,"mousedown",s=>{if(this.active&&s.button===0){this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Start,e,this.viewId)}});y(this,"mousemove",s=>{if(!this.active)return;const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)});y(this,"mouseup",s=>{if(this.active&&s.button===0){const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0}});y(this,"touchstart",s=>{var t;if(!this.active)return;if(!Nt(s)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}if(!this.control.worker.isAbled()){const i=(t=this.control.worker.getCurrentToolsData())==null?void 0:t.toolsType;i&&this.control.effectViewContainer(i)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Start,e,this.viewId)});y(this,"touchmove",s=>{if(!this.active)return;if(!Nt(s)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)});y(this,"touchend",s=>{if(!this.active)return;if(!Nt(s)||!this.control.worker.isAbled()){this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0});y(this,"cursorMouseMove",j.throttle(s=>{const e=this.getPoint(s);this.cacheCursorPoint&&j.isEqual(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));y(this,"cursorMouseLeave",j.throttle(()=>{this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)},30,{leading:!1}));y(this,"keydown",s=>{this.control.hotkeyManager.colloctHotkey(s)});this.control=s,this.internalMsgEmitter=e;const t={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new ns(t)}bindToolsClass(){var i,o;const s=(o=(i=this.control.worker)==null?void 0:i.currentToolsData)==null?void 0:o.toolsType,e=this.control.renderControl.isWritable,t=this.control.worker.isAbled();switch(s){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:this.eventTragetElement&&(this.eventTragetElement.className=e&&t?`netless-whiteboard ${s===T.Text?"cursor-text":s===T.Eraser||s===T.PencilEraser||s===T.BitMapEraser?"cursor-eraser":s===T.Pencil||s===T.LaserPen?"cursor-pencil":"cursor-arrow"}`:"netless-whiteboard");break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}updateSize(){this.setCanvassStyle()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.destroy(),this.internalMsgEmitter.removeAllListeners([se.Cursor,this.viewId])}getPoint(s){const e=tn(s);if(e&&j.isNumber(e.x)&&j.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}getActive(){return this.active}setActive(s){this.active=s}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(z.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(s){const t=(s.style.WebkitTransform||getComputedStyle(s,"").getPropertyValue("-webkit-transform")||s.style.transform||getComputedStyle(s,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),i=t&&parseInt(t[0])||0,o=t&&parseInt(t[1])||0;return[i,o]}getContainerOffset(s,e){var o;const t=this.getTranslate(s);let i={x:e.x+s.offsetLeft+t[0],y:e.y+s.offsetTop+t[1]};return(o=s.offsetParent)!=null&&o.nodeName&&s.offsetParent.nodeName!=="BODY"&&(i=this.getContainerOffset(s.offsetParent,i)),i}bindDisplayerEvent(s){s.addEventListener("mousedown",this.mousedown,!1),document.addEventListener("mouseleave",this.mouseup,!1),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1),s.addEventListener("touchstart",this.touchstart,!1),document.addEventListener("touchmove",this.touchmove,!1),document.addEventListener("touchend",this.touchend,!1),s.addEventListener("mousemove",this.cursorMouseMove,!1),s.addEventListener("mouseleave",this.cursorMouseLeave,!1),s.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(s){s.removeEventListener("mousedown",this.mousedown,!1),document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),s.removeEventListener("touchstart",this.touchstart,!1),document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),s.removeEventListener("mousemove",this.cursorMouseMove,!1),s.removeEventListener("mouseleave",this.cursorMouseLeave,!1),s.removeEventListener("keydown",this.keydown,!0)}}const em="index-module__Container__nLsM3",tm="index-module__CanvasBox__j2Xe-",sm="index-module__FloatCanvas__d1YR7",im="index-module__TopFloatCanvas__7IaCw",om="index-module__CanvasBoxSub__hcMeK",nm="index-module__SnapshotBox__--eeE",rm="index-module__FloatBar__cm-EL",am="index-module__RotateBtn__HSSkf",cm="index-module__ResizeBtn__yjvda",lm="index-module__CursorBox__2UHvI",hm="index-module__TextEditorContainer__Qm8KC",um="index-module__ResizeTowBox__HOllX",dm="index-module__FloatBarBtn__FJrOG",Pe={Container:em,CanvasBox:tm,FloatCanvas:sm,TopFloatCanvas:im,CanvasBoxSub:om,SnapshotBox:nm,FloatBar:rm,RotateBtn:am,ResizeBtn:cm,CursorBox:lm,TextEditorContainer:hm,ResizeTowBox:um,FloatBarBtn:dm},pm={delete:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDZ2NmEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2aDBtMS0yYTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAyaDBNMyA0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",duplicate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMSAySDZhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRoMGwtMi0yeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTExIDJ2MWExIDEgMCAwIDAgMSAxaDFsLTItMnoiLz48cGF0aCBkPSJNOSAxNEg0YTEgMSAwIDAgMS0xLTFWNWgwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L2c+PC9zdmc+","layer-pressed":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzMzODFGRiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",layer:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",rotate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEzIDZhNiA2IDAgMSAxLTMuNzA5IDEuMjgzIi8+PHBhdGggZD0ibTEzIDYgMS40MTQgMi40NUwxMyA2bDIuNDUtMS40MTQiLz48L2c+PC9zdmc+","rotation-button":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+",rotation:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZGIiBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+","font-colors-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","font-colors":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","to-bottom":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDEwdjhtMCAwLTItMm0yIDIgMi0ybS00IDZoMTJtLTYtNGg2bS02LTRoNm0tNi00aDYiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+","to-top":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIydi04bTAgMC0yIDJtMi0yIDIgMm0tNC02aDEybS02IDRoNm0tNiA0aDZtLTYgNGg2IiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","bold-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",bold:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","underline-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",underline:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","italic-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",italic:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","unlock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiMzMzgxRkYiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0xYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDN2MyIgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+","lock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiM0NDRFNjAiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0zYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDV2MyIgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+",shapes:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","shapes-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","font-style-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","font-style":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",polygon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==","polygon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","polygon-vertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTA3NyAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU0My40NzQ1MjYgNDIuMzA3MzY4YTExOS4zNzY4NDIgMTE5LjM3Njg0MiAwIDAgMSAxMTAuODA3NTc5IDE2My44NGwxOTAuNTcxNzkgMTM4LjYxNzI2NGExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEgODMuMzc1MTU4IDIxOC43MDQ4NDJsLTc0LjMyMDg0MiAyMjguODM3MDUyYTExOS4zMjI5NDcgMTE5LjMyMjk0NyAwIDAgMS02MS4yNzgzMTYgMjIxLjg4NDYzMmMtNDYuNzgwNjMyIDAtODcuMzA5NDc0LTI2Ljk0NzM2OC0xMDYuODczMjYzLTY2LjEyODg0MmgtMjg5LjQxNDczN2ExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEtMTc5LjczODk0OC0xNDcuODMzMjYzbC03Mi4yNzI4NDItMjIyLjY5MzA1My0zLjM5NTM2OCAwLjEwNzc4OUExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAwIDEgMjEuODI3MzY4IDQ2Ni43Mjg0MjFMMjEuNTU3ODk1IDQ1OC4yMTMwNTNhMTE5LjM3Njg0MiAxMTkuMzc2ODQyIDAgMCAxIDE4My44MzQ5NDctMTAwLjUxMzY4NWwyMjMuNTAxNDc0LTE2Mi4zODQ4NDJhMTE5LjQzMDczNyAxMTkuNDMwNzM3IDAgMCAxIDExNC41ODAyMS0xNTMuMDYxMDUyek0yODkuNDE0NzM3IDg0MC4wNTcyNjNhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6IG01MDMuMTYxMjYzIDBhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6TTQ2Mi42ODYzMTYgMjQ5LjU4NjUyNkwyNDguMTMxMzY4IDQwNS41NTc4OTVhMTE5LjMyMjk0NyAxMTkuMzIyOTQ3IDAgMCAxLTQyLjg0NjMxNSAxNTMuMjIyNzM3bDcwLjcwOTg5NCAyMTcuMzU3NDczYTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMSAxMzIuNDE5MzY5IDEwOC4yMjA2MzJINjczLjY4NDIxMWExMTkuNDMwNzM3IDExOS40MzA3MzcgMCAwIDEgMTE5LjE2MTI2My0xMDguOTc1MTU4bDcxLjE0MTA1Mi0yMTguOTc0MzE2YTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMS02Mi4wODY3MzctMTY0LjIxNzI2M2wtMTg2LjM2OC0xMzUuMjc1Nzg5Yy0xOS45OTQ5NDcgMTUuMDkwNTI2LTQ1LjAwMjEwNSAyNC4xNDQ4NDItNzIuMDU3MjYzIDI0LjE0NDg0MmExMTguOTQ1Njg0IDExOC45NDU2ODQgMCAwIDEtODAuNzg4MjEtMzEuNDc0NTI3eiBtLTMyMS43NTE1NzkgMTUzLjkyMzM2OWE1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQwNjMxNiA1NC43MDMxNTggNTQuNzAzMTU4IDAgMCAwIDAtMTA5LjQwNjMxNnogbTc2Ny43MzA1MjYtMTIuNTU3NDc0YTU0LjcwMzE1OCA1NC43MDMxNTggMCAxIDAgMCAxMDkuNDA2MzE2IDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE2eiBtLTM2NS4xOTA3MzctMjg0LjAyNTI2M2E1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQ2MDIxIDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE1eiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",star:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","star-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","star-innerVertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTg1LjMzMzMzMyAwYTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODEuNDA4IDU5LjczMzMzM2g0OC4yMTMzMzR2ODUuMzMzMzM0TDE3MC42NjY2NjcgMTQ0Ljk4MTMzM1Y4NTMuMzMzMzMzaDY5My4zMzMzMzNsLTI2LjQ1MzMzMy02My40ODggNzguNzYyNjY2LTMyLjc2OCAzMi44NTMzMzQgNzguNzYyNjY3LTQyLjI0IDE3LjQ5MzMzM0g5MzguNjY2NjY3YTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODQuNzM2IDc1LjM0OTMzNEwxMDI0IDkzOC42NjY2NjdhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS0xNzAuNjY2NjY3IDBIMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxLTg1LjMzMzMzNC04NS4zMzMzMzRWMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxIDAtMTcwLjY2NjY2N3ogbTc2NS4zNTQ2NjcgNTk5LjQ2NjY2N2wzMi44NTMzMzMgNzguNzYyNjY2LTc4Ljg0OCAzMi44NTMzMzQtMzIuNzY4LTc4Ljc2MjY2NyA3OC43NjI2NjctMzIuODUzMzMzeiBtLTY1LjcwNjY2Ny0xNTcuNTI1MzM0bDMyLjg1MzMzNCA3OC43NjI2NjctNzguNzYyNjY3IDMyLjg1MzMzMy0zMi43NjgtNzguNzYyNjY2IDc4Ljc2MjY2Ny0zMi44NTMzMzR6TTcxOS4zNiAyODQuNDE2bDMyLjg1MzMzMyA3OC43NjI2NjctNzguNzYyNjY2IDMyLjg1MzMzMy0zMi44NTMzMzQtNzguNzYyNjY3IDc4Ljc2MjY2Ny0zMi44NTMzMzN6IG0tNjUuNjIxMzMzLTE1Ny41MjUzMzNsMzIuODUzMzMzIDc4Ljc2MjY2Ni03OC43NjI2NjcgMzIuODUzMzM0LTMyLjg1MzMzMy03OC43NjI2NjcgNzguNzYyNjY3LTMyLjg1MzMzM3pNMzg1LjcwNjY2NyA1OS43MzMzMzN2ODUuMzMzMzM0aC04NS4zMzMzMzR2LTg1LjMzMzMzNGg4NS4zMzMzMzR6IG0xNzAuNjY2NjY2IDB2ODUuMzMzMzM0aC04NS4zMzMzMzN2LTg1LjMzMzMzNGg4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIiA+PC9wYXRoPjwvc3ZnPg==","star-innerRatio":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU2OS4zNDQgNDQ5LjUzNmwxNDYuOTQ0IDI4LjY3MiAxLjAyNC00LjYwOHY0LjYwOGgxLjAyNGM5LjcyOCAwIDE2Ljg5Ni03LjY4IDIwLjQ4LTE0Ljg0OGwxLjAyNC0yLjA0OHYtMi41NmMwLTUuNjMyIDAtMTEuMjY0LTUuMTItMTYuMzg0LTMuMDcyLTMuMDcyLTcuMTY4LTcuMTY4LTEyLjgtNy42OGwtMTI0LjkyOC0yNC4wNjRMNTQxLjY5NiAyODYuNzJjLTIuMDQ4LTQuNjA4LTYuNjU2LTguMTkyLTExLjc3Ni05LjcyOC01LjEyLTEuNTM2LTEwLjc1Mi0xLjUzNi0xNS4zNiAxLjAyNGwtMS41MzYgMC41MTItMS4wMjQgMS4wMjRjLTguMTkyIDguMTkyLTEwLjc1MiAxOS40NTYtNi42NTYgMjcuMTM2bDY0IDE0Mi44NDh6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PHBhdGggZD0iTTkzMS4zMjggNDAzLjQ1NmMtMTAuMjQtMzUuMzI4LTM4LjQtNjEuNDQtNzEuNjgtNjYuNTZsLTE4NC44MzItMzUuODQtODIuNDMyLTE4Mi43ODRjLTEyLjgtMzMuMjgtNDYuMDgtNTYuMzItODAuMzg0LTU2LjMyLTMzLjc5MiAwLTY0LjUxMiAyMC40OC03OS44NzIgNTMuNzZMMzQ5LjE4NCAyOTkuMDA4bC0xODQuMzIgMzUuMzI4Yy0zMy43OTIgNS4xMi02MS45NTIgMzEuMjMyLTcyLjE5MiA2Ni41Ni05LjcyOCAzNC4zMDQtMS4wMjQgNzIuMTkyIDIzLjA0IDk4LjgxNmwxMzEuNTg0IDEzMy42MzItMzUuODQgMTk2LjYwOGMtNS42MzIgMzQuODE2IDguNzA0IDcxLjY4IDM1Ljg0IDk0LjIwOCAxMy44MjQgMTEuMjY0IDM0LjMwNCAxOC40MzIgNTIuMjI0IDE4LjQzMiAxNi44OTYgMCAyOS42OTYtMy4wNzIgNDEuNDcyLTEwLjI0bDE2OC45Ni05MS4xMzYgMTY2LjkxMiA5MS4xMzYgMS4wMjQgMC41MTJjMTYuODk2IDYuNjU2IDI5LjY5NiA5LjcyOCA0MC40NDggOS43MjggMTQuMzM2IDAgMjcuNjQ4LTQuMDk2IDQwLjQ0OC03LjY4IDQuNjA4LTEuNTM2IDkuNzI4LTMuMDcyIDE0Ljg0OC00LjA5NmwyLjU2LTAuNTEyIDIuMDQ4LTEuNTM2YzI1LjA4OC0yMy4wNCAzNy44ODgtNTguODggMzIuNzY4LTkzLjY5NmwtMzMuMjgtMTk2LjYwOCAxMzEuNTg0LTEzNi4xOTJjMjQuMDY0LTI3LjY0OCAzMi4yNTYtNjIuOTc2IDIyLjAxNi05OC44MTZ6TTI3Ni45OTIgODM2LjA5Nmw0MS45ODQtMjMxLjkzNi0xNTcuMTg0LTE1OS4yMzJjLTUuNjMyLTUuNjMyLTguMTkyLTE3LjQwOC02LjY1Ni0yOS4xODQgMy41ODQtMTAuMjQgMTAuMjQtMTYuMzg0IDE5LjQ1Ni0xNy45MmwyMTguMTEyLTQxLjk4NCA5Ni4yNTYtMjE1LjU1MmMzLjA3Mi03LjE2OCAxMi44LTE0LjMzNiAyMC40OC0xNC4zMzZzMTcuNDA4IDcuMTY4IDIwLjQ4IDE0Ljg0OGw5OC4zMDQgMjE1LjA0IDIxOC4xMTIgNDEuOTg0YzcuMTY4IDEuNTM2IDE1LjM2IDcuMTY4IDE2Ljg5NiAxNi4zODR2My4wNzJjMi4wNDggMTEuNzc2LTAuNTEyIDIyLjUyOC02LjY1NiAzMC43Mkw2OTkuOTA0IDYwOS4yOGwzOS45MzYgMjMxLjQyNGMxLjUzNiAxMC43NTItMi4wNDggMjAuNDgtMTAuMjQgMjcuMTM2bC0xLjAyNCAwLjUxMmMtMi41NiAyLjU2LTYuNjU2IDQuMDk2LTExLjI2NCA0LjA5Ni0yLjA0OCAwLTcuMTY4LTEuNTM2LTExLjI2NC0zLjU4NGwtMTk3LjEyLTEwOC4wMzItMTk5LjE2OCAxMDIuOTEyYy00LjA5NiAyLjA0OC05LjIxNiAzLjU4NC0xMS43NzYgMy41ODQtNC42MDggMC04LjcwNC0xLjUzNi0xMS4yNjQtNC4wOTZsLTEuMDI0LTAuNTEyYy02LjY1Ni02LjE0NC0xMC43NTItMTYuMzg0LTguNzA0LTI2LjYyNHoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=",speechBallon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=","speechBallon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48L3N2Zz4=","speechBallon-placement":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU3NiAyMTMuMzMzMzMzbDIyLjYxMzMzMyAyMi42MTMzMzRhMzIgMzIgMCAwIDAgMC00NS4yMjY2NjdMNTc2IDIxMy4zMzMzMzN6IG0tNjIuNzItMTA3Ljk0NjY2NmEzMiAzMiAwIDEgMC00NS4yMjY2NjcgNDUuMjI2NjY2bDQ1LjIyNjY2Ny00NS4yMjY2NjZ6IG0tNDUuMjI2NjY3IDE3MC42NjY2NjZhMzIgMzIgMCAwIDAgNDUuMjI2NjY3IDQ1LjIyNjY2N2wtNDUuMjI2NjY3LTQ1LjIyNjY2N3pNNDQ4IDgxMC42NjY2NjdsLTIyLjYxMzMzMy0yMi42MTMzMzRhMzIgMzIgMCAwIDAgMCA0NS4yMjY2NjdsMjIuNjEzMzMzLTIyLjYxMzMzM3ogbTEwNy45NDY2NjctNjIuNzJhMzIgMzIgMCAxIDAtNDUuMjI2NjY3LTQ1LjIyNjY2N2w0NS4yMjY2NjcgNDUuMjI2NjY3eiBtLTQ1LjIyNjY2NyAxNzAuNjY2NjY2YTMyIDMyIDAgMSAwIDQ1LjIyNjY2Ny00NS4yMjY2NjZsLTQ1LjIyNjY2NyA0NS4yMjY2NjZ6TTgxMC42NjY2NjcgNTc2bC0yMi42MTMzMzQgMjIuNjEzMzMzYTMyIDMyIDAgMCAwIDQ1LjIyNjY2NyAwTDgxMC42NjY2NjcgNTc2eiBtMTA3Ljk0NjY2Ni02Mi43MmEzMiAzMiAwIDEgMC00NS4yMjY2NjYtNDUuMjI2NjY3bDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAtNDUuMjI2NjY3IDQ1LjIyNjY2N2w0NS4yMjY2NjctNDUuMjI2NjY3ek0yMTMuMzMzMzMzIDQ0OGwyMi42MTMzMzQtMjIuNjEzMzMzYTMyIDMyIDAgMCAwLTQ1LjIyNjY2NyAwbDIyLjYxMzMzMyAyMi42MTMzMzN6IG02Mi43MiAxMDcuOTQ2NjY3YTMyIDMyIDAgMCAwIDQ1LjIyNjY2Ny00NS4yMjY2NjdsLTQ1LjIyNjY2NyA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAgNDUuMjI2NjY2IDQ1LjIyNjY2N2wtNDUuMjI2NjY2LTQ1LjIyNjY2N3pNMzA5LjMzMzMzMyAyMTMuMzMzMzMzQTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMjM0LjY2NjY2NyAyODh2NjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDM3My4zMzMzMzMgMjEzLjMzMzMzM2gtNjR6TTIzNC42NjY2NjcgMjg4QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMTYwIDIxMy4zMzMzMzNoLTY0QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAyMzQuNjY2NjY3IDM1MnYtNjR6TTE2MCAyMTMuMzMzMzMzYzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2NnYtNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDk2IDIxMy4zMzMzMzNoNjR6TTIzNC42NjY2NjcgMTM4LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NiA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIzNC42NjY2NjcgNzQuNjY2NjY3djY0ek0zNDEuMzMzMzMzIDI0NS4zMzMzMzNoMjM0LjY2NjY2N3YtNjRIMzQxLjMzMzMzM3Y2NHogbTI1Ny4yOC01NC42MTMzMzNsLTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NiA4NS4zMzMzMzQgODUuMzMzMzM0IDQ1LjIyNjY2Ni00NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsLTg1LjMzMzMzNCA4NS4zMzMzMzMgNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2Njd6TTY1MC42NjY2NjcgODEwLjY2NjY2N2ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2NiAxMzguNjY2NjY2di02NEE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxIDcxNC42NjY2NjcgODEwLjY2NjY2N2gtNjR6IG0xMzguNjY2NjY2IDEzOC42NjY2NjZBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDkyOCA4MTAuNjY2NjY3aC02NGE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxLTc0LjY2NjY2NyA3NC42NjY2NjZ2NjR6TTkyOCA4MTAuNjY2NjY3YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY3LTEzOC42NjY2Njd2NjRjNDEuMjE2IDAgNzQuNjY2NjY3IDMzLjQ1MDY2NyA3NC42NjY2NjcgNzQuNjY2NjY3aDY0eiBtLTEzOC42NjY2NjctMTM4LjY2NjY2N0ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgNjUwLjY2NjY2NyA4MTAuNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY2LTc0LjY2NjY2N3YtNjR6IG0tMTA2LjY2NjY2NiAxMDYuNjY2NjY3aC0yMzQuNjY2NjY3djY0SDY4Mi42NjY2Njd2LTY0eiBtLTIxMi4wNTMzMzQgNTQuNjEzMzMzbDg1LjMzMzMzNC04NS4zMzMzMzMtNDUuMjI2NjY3LTQ1LjIyNjY2Ny04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsODUuMzMzMzMzIDg1LjMzMzMzMyA0NS4yMjY2NjctNDUuMjI2NjY2LTg1LjMzMzMzNC04NS4zMzMzMzQtNDUuMjI2NjY2IDQ1LjIyNjY2N3pNNjcyIDIzNC42NjY2NjdBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDgxMC42NjY2NjcgMzczLjMzMzMzM3YtNjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjctNzQuNjY2NjY2aC02NHpNODEwLjY2NjY2NyAzNzMuMzMzMzMzYTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAxMzguNjY2NjY2LTEzOC42NjY2NjZoLTY0QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgODEwLjY2NjY2NyAzMDkuMzMzMzMzdjY0eiBtMTM4LjY2NjY2Ni0xMzguNjY2NjY2QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCA4MTAuNjY2NjY3IDk2djY0YzQxLjIxNiAwIDc0LjY2NjY2NyAzMy40NTA2NjcgNzQuNjY2NjY2IDc0LjY2NjY2N2g2NHpNODEwLjY2NjY2NyA5NmExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAtMTM4LjY2NjY2NyAxMzguNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2N3YtNjR6TTc3OC42NjY2NjcgMzQxLjMzMzMzM3YyMzQuNjY2NjY3aDY0VjM0MS4zMzMzMzNoLTY0eiBtNTQuNjEzMzMzIDI1Ny4yOGw4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2NjctODUuMzMzMzM0IDg1LjMzMzMzNCA0NS4yMjY2NjcgNDUuMjI2NjY2eiBtMC00NS4yMjY2NjZsLTg1LjMzMzMzMy04NS4zMzMzMzQtNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2Ny00NS4yMjY2NjZ6TTEzOC42NjY2NjcgNzg5LjMzMzMzM2MwLTQxLjIxNiAzMy40NTA2NjctNzQuNjY2NjY3IDc0LjY2NjY2Ni03NC42NjY2NjZ2LTY0YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY2IDEzOC42NjY2NjZoNjR6TTIxMy4zMzMzMzMgNzE0LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NyA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIxMy4zMzMzMzMgNjUwLjY2NjY2N3Y2NHogbTc0LjY2NjY2NyA3NC42NjY2NjZBNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMSAyMTMuMzMzMzMzIDg2NHY2NGExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2Ny0xMzguNjY2NjY3aC02NHpNMjEzLjMzMzMzMyA4NjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjYtNzQuNjY2NjY3aC02NEExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMjEzLjMzMzMzMyA5Mjh2LTY0ek0yNDUuMzMzMzMzIDY4Mi42NjY2Njd2LTIzNC42NjY2NjdoLTY0VjY4Mi42NjY2NjdoNjR6IG0tNTQuNjEzMzMzLTIxMi4wNTMzMzRsODUuMzMzMzMzIDg1LjMzMzMzNCA0NS4yMjY2NjctNDUuMjI2NjY3LTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NnogbTAtNDUuMjI2NjY2bC04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2NjcgODUuMzMzMzM0LTg1LjMzMzMzNC00NS4yMjY2NjctNDUuMjI2NjY2eiIgIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4="};function xe(a){return pm[a]}const fm=a=>{const{workIds:s,mananger:e}=a;return M.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:t=>{t.cancelable&&t.preventDefault(),t.stopPropagation(),oe.emitMethod(se.MainEngine,F.DeleteNode,{workIds:s||[Q],viewId:e.viewId})}},M.createElement("img",{alt:"icon",src:xe("delete")}))},gm=a=>{const{workIds:s,viewId:e}=a;return M.createElement("div",{className:"button normal-button",onPointerUp:t=>{t.stopPropagation(),oe.emitMethod(se.MainEngine,F.CopyNode,{workIds:s||[Q],viewId:e})}},M.createElement("img",{alt:"icon",src:xe("duplicate")}))},Ki=a=>{const{icon:s,onPointerUpHandler:e}=a;return M.createElement("div",{className:"button normal-button",onPointerUp:e},M.createElement("img",{src:xe(s)}))},ym=a=>{const{open:s,setOpen:e,floatBarRef:t}=a,{floatBarData:i,mananger:o}=M.useContext(Ne),[n,r]=M.useState([]),c=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(i==null?void 0:i.y)&&(o!=null&&o.height)){if(t.current.offsetTop&&t.current.offsetTop+i.y>180){const h={};return h.top="inherit",h.bottom=50,h}else if(!t.current.offsetTop&&(o==null?void 0:o.height)-t.current.offsetTop-i.y<120){const h={};return h.top="inherit",h.bottom=50,h}}},[t==null?void 0:t.current,i,o]),l=M.useMemo(()=>s?M.createElement("div",{className:"image-layer-menu",style:c},M.createElement(Ki,{icon:"to-top",onPointerUpHandler:h=>{h.stopPropagation(),oe.emitMethod(se.MainEngine,F.ZIndexNode,{workIds:[Q],layer:Rt.Top,viewId:o==null?void 0:o.viewId})}}),M.createElement(Ki,{icon:"to-bottom",onPointerUpHandler:h=>{h.stopPropagation(),oe.emitMethod(se.MainEngine,F.ZIndexNode,{workIds:[Q],layer:Rt.Bottom,viewId:o==null?void 0:o.viewId})}})):null,[s,c]),u=h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),e(!s)};return M.useEffect(()=>{j.isEqual(i==null?void 0:i.selectIds,n)||i!=null&&i.selectIds&&!j.isEqual(i==null?void 0:i.selectIds,n)&&(r(i==null?void 0:i.selectIds),e(!1))},[s,i,n,e]),M.createElement("div",{className:`button normal-button ${s&&"active"}`,onPointerUp:u},l,M.createElement("img",{alt:"icon",src:xe(s?"layer-pressed":"layer")}))},Mm=()=>M.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},M.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),on=a=>{const{activeColor:s,onPointerUpHandler:e}=a;return M.createElement("div",{className:`font-color-button ${s==="transparent"?"active":""}`,onPointerUp:e},M.createElement("div",{className:"circle none"}))},ws=a=>{const{color:s,activeColor:e,onPointerUpHandler:t}=a;return M.createElement("div",{className:`font-color-button ${s===e?"active":""}`,onPointerUp:t},M.createElement("div",{className:"circle",style:{backgroundColor:Ce(s,1)}}))},vs=a=>{const{opacity:s,activeColor:e,setCurOpacity:t}=a,[i,o]=M.useState({x:108,y:0});if(M.useEffect(()=>{o({x:s*100+8,y:0})},[]),!e)return null;const n=j.throttle((l,u)=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),u.x!==(i==null?void 0:i.x)&&o({x:u.x,y:0});const h=Math.min(Math.max(u.x-8,0),100)/100;s!==h&&t(h,e,z.Doing)},100,{trailing:!0}),r=l=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),t(s,e,z.Start)},c=(l,u)=>{n.cancel(),l.cancelable&&l.preventDefault(),l.stopPropagation(),u.x!==(i==null?void 0:i.x)&&o({x:u.x,y:0});const h=Math.min(Math.max(u.x-8,0),100)/100;t(h,e,z.Done)};return M.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:l=>{const u=l.nativeEvent.offsetX,h=Math.min(Math.max(u-12,0),100)/100;o({x:h*100+8,y:0}),t(h,e,z.Done)}},M.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Ce(e,0)}, ${Ce(e,1)})`}}),M.createElement("div",{className:"range-opacity"},M.createElement(kt,{bounds:"parent",axis:"x",position:i,onDrag:n,onStart:r,onStop:c},M.createElement("div",{className:"circle",style:{backgroundColor:Ce(e,s)},onClick:l=>{l.cancelable&&l.preventDefault(),l.stopPropagation()}}))))},mm=a=>{const{min:s,max:e,activeNumber:t,setActiveNumber:i,color:o}=a,[n,r]=M.useState({x:108,y:0});if(M.useEffect(()=>{const h=Math.ceil((t-s)/(e-s)*100)+8;r({x:h,y:0})},[]),!t)return null;const c=j.throttle((h,d)=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),d.x!==(n==null?void 0:n.x)&&r({x:d.x,y:0});const f=Math.ceil(Math.max(d.x-8,0)/100*(e-s)+s);t!==f&&i(f,z.Doing)},100,{trailing:!0}),l=h=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),i(t,z.Start)},u=(h,d)=>{c.cancel(),h.cancelable&&h.preventDefault(),h.stopPropagation(),d.x!==(n==null?void 0:n.x)&&r({x:d.x,y:0});const f=Math.ceil(Math.max(d.x-8,0)/100*(e-s)+s);i(f,z.Done)};return M.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:h=>{const d=h.nativeEvent.offsetX,f=Math.ceil(Math.max(d-12,0)/100*(e-s)+s),g=Math.ceil((f-s)/(e-s)*100)+8;r({x:g,y:0}),i(f,z.Done)}},M.createElement("div",{className:"range-color",style:{backgroundColor:o}}),M.createElement("div",{className:"range-opacity"},M.createElement(kt,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:u},M.createElement("div",{className:"circle",style:{backgroundColor:o},onClick:h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()}},M.createElement("div",{className:"range-opacity-data-icon"},t)))))},wm=a=>{const{useStroke:s,color:e,activeStrokeType:t,setStrokeType:i}=a;return M.createElement("div",{className:"stroke-type-box"},!!s&&M.createElement("div",{className:`stroke-type-box-item Stroke ${t===te.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{i(te.Stroke)}}),M.createElement("div",{className:`stroke-type-box-item Normal ${t===te.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{i(te.Normal)}}),M.createElement("div",{className:`stroke-type-box-item Dotted ${t===te.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{i(te.Dotted)}}),M.createElement("div",{className:`stroke-type-box-item LongDotted ${t===te.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{i(te.LongDotted)}}))},vm=a=>{const{open:s,setOpen:e,floatBarRef:t}=a,{floatBarData:i,floatBarColors:o,mananger:n,setFloatBarData:r}=M.useContext(Ne),[c,l]=M.useState(),[u,h]=M.useState(1);M.useEffect(()=>{if(i!=null&&i.strokeColor){const[v,I]=ms(i.strokeColor);l(v),h(I)}},[i]);const d=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(i==null?void 0:i.y)&&(n!=null&&n.height)){if(t.current.offsetTop&&t.current.offsetTop+i.y>180){const v={};return v.top="inherit",v.bottom=50,v}else if(!t.current.offsetTop&&(n==null?void 0:n.height)-t.current.offsetTop-i.y<120){const v={};return v.top="inherit",v.bottom=50,v}}},[(t==null?void 0:t.current)&&i,n==null?void 0:n.height]),f=M.useMemo(()=>M.createElement(vs,{key:"strokeColors",opacity:u,activeColor:c,setCurOpacity:(v,I,k)=>{k===z.Start&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!0),k===z.Done&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!1),h(v);const w=Ce(I,v);i!=null&&i.strokeColor&&r({strokeColor:w}),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],strokeColor:w,workState:k,viewId:n==null?void 0:n.viewId})}}),[u,c,n==null?void 0:n.control.room,n==null?void 0:n.viewId,i]),g=M.useMemo(()=>{var v,I;return c&&(i!=null&&i.thickness)?M.createElement(mm,{key:"strokeThickness",min:Math.min(i.thickness,((v=n==null?void 0:n.control.pluginOptions.strokeWidth)==null?void 0:v.min)||1),max:Math.max(i.thickness,((I=n==null?void 0:n.control.pluginOptions.strokeWidth)==null?void 0:I.max)||10),activeNumber:i.thickness,setActiveNumber:(k,w)=>{w===z.Start&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!0),w===z.Done&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!1),i!=null&&i.thickness&&r({thickness:k}),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],thickness:k,workState:w,viewId:n==null?void 0:n.viewId})},color:c}):null},[c,i==null?void 0:i.thickness,n==null?void 0:n.control.room,n==null?void 0:n.viewId]),p=M.useMemo(()=>c&&(i!=null&&i.strokeType)?M.createElement(wm,{key:"strokeType",useStroke:i==null?void 0:i.useStroke,activeStrokeType:i.strokeType,setStrokeType:v=>{i.strokeType&&r({strokeType:v}),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],strokeType:v,workState:z.Done,viewId:n==null?void 0:n.viewId})},color:c}):null,[c,i==null?void 0:i.strokeType,n==null?void 0:n.control.room,n==null?void 0:n.viewId,i==null?void 0:i.useStroke]),m=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},p,g,M.createElement("div",{className:"font-colors-line"}),o.concat().map((v,I)=>{const k=Ft(...v);return M.createElement(ws,{key:I,color:k,activeColor:c,onPointerUpHandler:w=>{w.stopPropagation(),l(k);const S=Ce(k,u);i!=null&&i.strokeColor&&(i.strokeColor=S,r({strokeColor:S})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],workState:z.Done,strokeColor:S,viewId:n==null?void 0:n.viewId})}})}),f):null,[s,o,f,c,u,i,n==null?void 0:n.viewId,d]),N=M.useMemo(()=>c?M.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Ce(c,u)}},M.createElement("div",{className:"circle"})):null,[c,u]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!s)}},N,m)},Im=a=>{const{open:s,setOpen:e,floatBarRef:t}=a,{floatBarData:i,floatBarColors:o,mananger:n,setFloatBarData:r}=M.useContext(Ne),[c,l]=M.useState(),[u,h]=M.useState(1);M.useEffect(()=>{if(i!=null&&i.fillColor){const[m,N]=(i==null?void 0:i.fillColor)==="transparent"&&["transparent",1]||ms(i.fillColor);l(m),h(N)}},[i]);const d=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(i==null?void 0:i.y)&&(n!=null&&n.height)){if(t.current.offsetTop&&t.current.offsetTop+i.y>200){const m={};return m.top="inherit",m.bottom=50,m}else if(!t.current.offsetTop&&(n==null?void 0:n.height)-t.current.offsetTop-i.y<140){const m={};return m.top="inherit",m.bottom=50,m}}},[t==null?void 0:t.current,i,n==null?void 0:n.height]),f=M.useMemo(()=>c&&c!=="transparent"?M.createElement(vs,{key:"fillColors",opacity:u||0,activeColor:c,setCurOpacity:(m,N,v)=>{v===z.Start&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!0),v===z.Done&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!1),h(m);const I=Ce(N,m);i!=null&&i.fillColor&&(i.fillColor=I,r({fillColor:I})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],fillColor:c&&Ce(N,m),workState:v,viewId:n==null?void 0:n.viewId})}}):null,[c,u,n==null?void 0:n.control.room,n==null?void 0:n.viewId,i]),g=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:m=>{m.stopPropagation(),m.nativeEvent.stopImmediatePropagation()}},M.createElement(on,{activeColor:c,onPointerUpHandler:m=>{m.stopPropagation(),l("transparent");const N="transparent";i!=null&&i.fillColor&&(i.fillColor=N,r({fillColor:N})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],workState:z.Done,fillColor:N,viewId:n==null?void 0:n.viewId})}}),o.map((m,N)=>{const v=Ft(...m);return M.createElement(ws,{key:N,color:v,activeColor:c,onPointerUpHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),l(v);const k=Ce(v,u);i!=null&&i.fillColor&&(i.fillColor=k,r({fillColor:k})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],workState:z.Done,fillColor:k,viewId:n==null?void 0:n.viewId})}})}),f):null,[s,c,o,f,i,n==null?void 0:n.viewId,u,d]),p=M.useMemo(()=>{const m=c&&c!=="transparent"&&Ce(c,u)||"transparent";return M.createElement("div",{className:"color-bar-fill"},M.createElement("div",{className:"circle",style:{backgroundColor:m}}))},[c,u]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:m=>{m.stopPropagation(),m.nativeEvent.stopImmediatePropagation(),e(!s)}},p,g)},Sm=a=>{const{open:s,setOpen:e,textOpt:t,workIds:i,floatBarRef:o}=a,{floatBarColors:n,mananger:r,setFloatBarData:c,floatBarData:l}=M.useContext(Ne),[u,h]=M.useState(),[d,f]=M.useState(1);M.useEffect(()=>{if(t!=null&&t.fontColor){const[v,I]=(t==null?void 0:t.fontColor)==="transparent"&&["transparent",0]||ms(t.fontColor);h(v),f(I)}},[t==null?void 0:t.fontColor]);const g=M.useMemo(()=>{if(o!=null&&o.current&&j.isNumber(l==null?void 0:l.y)&&(r!=null&&r.height)){if(o.current.offsetTop&&o.current.offsetTop+l.y>180){const v={};return v.top="inherit",v.bottom=50,v}else if(!o.current.offsetTop&&(r==null?void 0:r.height)-o.current.offsetTop-l.y<120){const v={};return v.top="inherit",v.bottom=50,v}}},[o==null?void 0:o.current,l,r]),p=M.useMemo(()=>u&&u!=="transparent"?M.createElement(vs,{key:"fontColors",opacity:d,activeColor:u,setCurOpacity:(v,I,k)=>{k===z.Start&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!0),k===z.Done&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!1),f(v);const w=Ce(I,v);l!=null&&l.textOpt&&(l.textOpt.fontColor=w,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],fontColor:u&&w,workState:k,viewId:r==null?void 0:r.viewId})}}):null,[u,d,r==null?void 0:r.control.room,r==null?void 0:r.viewId,l==null?void 0:l.textOpt,i]),m=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},n.map((v,I)=>{const k=Ft(...v);return M.createElement(ws,{key:I,color:k,activeColor:u,onPointerUpHandler:w=>{w.stopPropagation(),h(k);const S=Ce(k,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=S,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],workState:z.Done,fontColor:S,viewId:r==null?void 0:r.viewId})}})}),p):null,[s,n,p,u,d,l==null?void 0:l.textOpt,i,r==null?void 0:r.viewId,g]),N=M.useMemo(()=>{const v=u&&u!=="transparent"&&Ce(u,d)||"transparent";return M.createElement("div",{className:"color-bar"},M.createElement("div",{className:"color-bar-color",style:{backgroundColor:v}}))},[u,d]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!s)}},M.createElement("img",{alt:"icon",src:xe("font-colors")}),N,m)},Nm=a=>{const{open:s,setOpen:e,textOpt:t,workIds:i,floatBarRef:o}=a,{floatBarColors:n,mananger:r,setFloatBarData:c,floatBarData:l}=M.useContext(Ne),[u,h]=M.useState(),[d,f]=M.useState(1);M.useEffect(()=>{if(t!=null&&t.fontBgColor){const[v,I]=(t==null?void 0:t.fontBgColor)==="transparent"&&["transparent",1]||ms(t.fontBgColor);h(v),f(I)}},[t==null?void 0:t.fontBgColor]);const g=M.useMemo(()=>{if(o!=null&&o.current&&j.isNumber(l==null?void 0:l.y)&&(r!=null&&r.height)){if(o.current.offsetTop&&o.current.offsetTop+l.y>180){const v={};return v.top="inherit",v.bottom=50,v}else if(!o.current.offsetTop&&(r==null?void 0:r.height)-o.current.offsetTop-l.y<120){const v={};return v.top="inherit",v.bottom=50,v}}},[o==null?void 0:o.current,l,r]),p=M.useMemo(()=>u&&u!=="transparent"?M.createElement(vs,{key:"fontBgColor",opacity:d||0,activeColor:u,setCurOpacity:(v,I,k)=>{k===z.Start&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!0),k===z.Done&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!1),f(v);const w=Ce(I,v);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=w,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],fontBgColor:u&&Ce(I,v),workState:k,viewId:r==null?void 0:r.viewId})}}):null,[u,d,r==null?void 0:r.control.room,r==null?void 0:r.viewId,l==null?void 0:l.textOpt,i]),m=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},M.createElement(on,{activeColor:u,onPointerUpHandler:v=>{v.stopPropagation();const I="transparent";h(I),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=I,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],workState:z.Done,fontBgColor:I,viewId:r==null?void 0:r.viewId})}}),n.map((v,I)=>{const k=Ft(...v);return M.createElement(ws,{key:I,color:k,activeColor:u,onPointerUpHandler:w=>{w.stopPropagation(),h(k);const S=Ce(k,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=S,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],workState:z.Done,fontBgColor:Ce(k,d),viewId:r==null?void 0:r.viewId})}})}),p):null,[s,n,p,d,u,l==null?void 0:l.textOpt,i,r==null?void 0:r.viewId,g]),N=M.useMemo(()=>{const v=u&&u!=="transparent"&&Ce(u,d)||"transparent";return M.createElement("div",{className:"color-bar",style:{marginTop:0}},M.createElement("div",{className:"color-bar-color",style:{backgroundColor:v}}))},[u,d]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!s)}},M.createElement(Mm,null),N,m)},Tm=a=>{const{bold:s,setBold:e,workIds:t,viewId:i}=a,o=n=>{const r=s==="bold"?"normal":"bold";n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,bold:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s==="bold"?"bold-active":"bold")}))},km=a=>{const{underline:s,setUnderline:e,workIds:t,viewId:i}=a,o=n=>{const r=!s;n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,underline:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s?"underline-active":"underline")}))},Cm=a=>{const{lineThrough:s,setLineThrough:e,workIds:t,viewId:i}=a,o=n=>{const r=!s;n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,lineThrough:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s?"line-through-active":"line-through")}))},bm=a=>{const{italic:s,setItalic:e,workIds:t,viewId:i}=a,o=n=>{const r=s==="italic"?"normal":"italic";n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,italic:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s==="italic"?"italic-active":"italic")}))},xm=a=>{const{open:s,setOpen:e,textOpt:t,workIds:i,style:o,floatBarRef:n}=a,{mananger:r,floatBarData:c}=M.useContext(Ne),[l,u]=M.useState("normal"),[h,d]=M.useState("normal"),[f,g]=M.useState(!1),[p,m]=M.useState(!1);M.useEffect(()=>{t!=null&&t.bold&&u(t.bold),j.isBoolean(t==null?void 0:t.underline)&&g(t.underline||!1),j.isBoolean(t==null?void 0:t.lineThrough)&&m(t.lineThrough||!1),t!=null&&t.italic&&d(t.italic)},[t]);const N=M.useMemo(()=>{if(o&&(n!=null&&n.current)&&j.isNumber(c==null?void 0:c.y)&&(r!=null&&r.height)){if(n.current.offsetTop&&n.current.offsetTop+c.y>180){const I={};return I.top="inherit",I.bottom=50,I}else if(!n.current.offsetTop&&(r==null?void 0:r.height)-n.current.offsetTop-c.y<120){const I={};return I.top="inherit",I.bottom=50,I}}},[o,n==null?void 0:n.current,c,r]),v=M.useMemo(()=>s?M.createElement("div",{className:"font-style-menu",style:N,onPointerUp:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},M.createElement(Tm,{workIds:i||[Q],bold:l,setBold:u,viewId:r==null?void 0:r.viewId}),M.createElement(km,{workIds:i||[Q],underline:f,setUnderline:g,viewId:r==null?void 0:r.viewId}),M.createElement(Cm,{workIds:i||[Q],lineThrough:p,setLineThrough:m,viewId:r==null?void 0:r.viewId}),M.createElement(bm,{workIds:i||[Q],italic:h,setItalic:d,viewId:r==null?void 0:r.viewId})):null,[s,i,l,r==null?void 0:r.viewId,f,p,h,N]);return M.createElement("div",{className:`button normal-button ${s&&"active"}`,onPointerUp:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),e(!s)}},M.createElement("img",{alt:"icon",src:xe(s?"font-style-active":"font-style")}),v)},qe=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Mt=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Lm=a=>{const{style:s,onClickHandler:e}=a;return M.createElement("div",{className:"font-size-menu",style:s,onPointerUp:t=>{t.stopPropagation(),t.nativeEvent.stopImmediatePropagation()}},qe.map(t=>M.createElement("div",{className:"font-size-btn",key:t,onPointerUp:()=>{e(t)}},t)))},Pm=a=>{const s=M.useRef(null),{open:e,setOpen:t,textOpt:i,workIds:o,floatBarRef:n}=a,{mananger:r,floatBarData:c}=M.useContext(Ne),[l,u]=M.useState(0),[h,d]=M.useState(),f=qe.length-1;M.useEffect(()=>{i!=null&&i.fontSize&&(u(i.fontSize),s.current&&(s.current.value=i.fontSize.toString()))},[i==null?void 0:i.fontSize]);const g=M.useMemo(()=>{if(n!=null&&n.current&&j.isNumber(c==null?void 0:c.y)&&(r!=null&&r.height)){if(n.current.offsetTop&&n.current.offsetTop+c.y>180){const I={};return I.top="inherit",I.bottom=35,I}else if(!n.current.offsetTop&&(r==null?void 0:r.height)-n.current.offsetTop-c.y<120){const I={};return I.top="inherit",I.bottom=35,I}}},[n==null?void 0:n.current,c,r]);function p(I){u(I),I&&I>=qe[0]&&I<=qe[f]&&oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:o||[Q],fontSize:I,viewId:r==null?void 0:r.viewId})}const m=I=>{var k;(k=s.current)==null||k.blur(),t(!1),v(I)},N=M.useMemo(()=>e?M.createElement(Lm,{onClickHandler:m,style:g}):null,[e,m,g]),v=I=>{I>qe[f]&&(I=qe[f]),I<qe[0]&&(I=qe[0]),p(I)};return M.useEffect(()=>()=>{r!=null&&r.control.room&&j.isBoolean(h)&&(r.control.room.disableDeviceInputs=h)},[r,h]),M.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},M.createElement("input",{className:"font-size-input",ref:s,onTouchEnd:()=>{s.current&&s.current.focus()},onClick:()=>{t(!e),s.current&&s.current.focus()},onKeyDown:I=>{if(I.key==="Backspace"){const k=window.getSelection(),w=k==null?void 0:k.getRangeAt(0);if(w!=null&&w.collapsed)return I.cancelable&&I.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:I=>{var k;if(s.current){const w=s.current.value,S=parseInt(w);isNaN(S)?s.current.value="0":s.current.value=S.toString(),S&&I.key==="Enter"&&(v(S),(k=s.current)==null||k.blur(),t(!1))}},onFocus:()=>{r!=null&&r.control.room&&!r.control.room.disableDeviceInputs&&(d(r.control.room.disableDeviceInputs),r.control.room.disableDeviceInputs=!0)},onBlur:()=>{r!=null&&r.control.room&&j.isBoolean(h)&&(r.control.room.disableDeviceInputs=h)}}),M.createElement("div",{className:"font-size-btns"},M.createElement("div",{className:"font-size-add",onPointerUp:()=>{v(l+qe[0])}}),M.createElement("div",{className:"font-size-cut",onPointerUp:()=>{v(l-qe[0])}})),N)},zm=a=>{const{workIds:s,mananger:e,islocked:t}=a;return M.createElement("div",{className:"button normal-button",onPointerUp:i=>{i.stopPropagation(),oe.emitMethod(se.MainEngine,F.SetLock,{workIds:s||[Q],isLocked:!t,viewId:e==null?void 0:e.viewId})}},M.createElement("img",{alt:"icon",src:xe(t?"unlock-new":"lock-new")}))},Os=a=>{const{icon:s,min:e,max:t,step:i,value:o,onInputHandler:n}=a,[r,c]=M.useState(0),l=M.useRef(null),u=h=>{h>t&&(h=t),h<e&&(h=e),c(h),n(h),l.current&&(l.current.value=h.toString())};return M.useEffect(()=>{o&&(c(o),l.current&&(l.current.value=o.toString()))},[o]),M.createElement("div",{className:"button input-button",onPointerUp:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation()}},M.createElement("img",{src:xe(s)}),M.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:h=>{if(h.key==="Backspace"){const d=window.getSelection(),f=d==null?void 0:d.getRangeAt(0);if(f!=null&&f.collapsed)return h.cancelable&&h.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(l.current){const h=l.current.value,d=parseInt(h);isNaN(d)?l.current.value="0":l.current.value=d.toString()}},onChange:h=>{const d=h.target.value,f=parseInt(d);f&&f&&f>=e&&f<=t&&u(f)}}),M.createElement("div",{className:"input-number-btns"},M.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(r+i)}}),M.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(r-i)}})))},Dm=a=>{const{icon:s,min:e,max:t,step:i,value:o,onInputHandler:n}=a;return M.createElement("div",{className:"button input-button"},M.createElement("img",{src:xe(s)}),M.createElement(Am,{min:e,max:t,step:i,value:o,onInputHandler:n}))},Am=a=>{const{value:s,min:e,max:t,onInputHandler:i}=a,[o,n]=M.useState({x:0,y:0});M.useEffect(()=>{n({x:s*100,y:0})},[]);const r=j.throttle((u,h)=>{u.cancelable&&u.preventDefault(),u.stopPropagation();let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,t*100)),h.x!==(o==null?void 0:o.x)&&n({x:d,y:0});const f=d/100;s!==f&&i(f)},100,{trailing:!0}),c=u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},l=(u,h)=>{r.cancel(),u.cancelable&&u.preventDefault(),u.stopPropagation();let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,t*100)),h.x!==(o==null?void 0:o.x)&&n({x:d,y:0});const f=d/100;s!==f&&i(f)};return M.createElement("div",{className:"range-number-container",onClick:u=>{const h=u.nativeEvent.offsetX-6;let d=Math.floor(Math.max(h,e*100));d=Math.floor(Math.min(d,t*100)),n({x:d,y:0});const f=d/100;s!==f&&i(f)}},M.createElement("div",{className:"range-number-color"}),M.createElement("div",{className:"range-number"},M.createElement(kt,{bounds:"parent",axis:"x",position:o,onDrag:r,onStart:c,onStop:l},M.createElement("div",{className:"circle",onClick:c}))))},jm=a=>{const{icon:s,value:e,onChangeHandler:t,style:i}=a,[o,n]=M.useState(0),[r,c]=M.useState(),l=M.useRef(null),u=M.useCallback(f=>{f>=Mt.length&&(f=0),f<0&&(f=Mt.length-1),n(f),t(Mt[f]),c(!1),l.current&&(l.current.value=Mt[f])},[t]),h=M.useMemo(()=>{if(i&&i.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[i]);M.useEffect(()=>{e&&(n(Mt.indexOf(e)),l.current&&(l.current.value=e))},[e]);const d=M.useMemo(()=>r?M.createElement(Em,{options:Mt,onClickHandler:u,style:h}):null,[r,u,h]);return M.createElement("div",{className:"button input-button"},M.createElement("img",{src:xe(s)}),M.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onTouchEnd:f=>{f.stopPropagation(),l.current&&l.current.focus()},onClick:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),l.current&&(l.current.focus(),c(!r))}}),M.createElement("div",{className:"input-number-btns"},M.createElement("div",{className:"input-number-add",onPointerUp:f=>{f.stopPropagation(),u(o+1)}}),M.createElement("div",{className:"input-number-cut",onPointerUp:f=>{f.stopPropagation(),u(o-1)}})),d)},Em=a=>{const{options:s,style:e,onClickHandler:t}=a;return M.createElement("div",{className:"select-option-menu",style:e,onPointerUp:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}},s.map((i,o)=>M.createElement("div",{className:"select-option-btn",key:i,onPointerUp:n=>{n.stopPropagation(),t(o)}},i)))},Om=a=>{const{mananger:s,innerRatio:e,innerVerticeStep:t,vertices:i}=a,o=c=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Star,viewId:s.viewId,vertices:c})},n=c=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Star,viewId:s.viewId,innerVerticeStep:c})},r=c=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Star,viewId:s.viewId,innerRatio:c})};return M.createElement(M.Fragment,null,M.createElement(Os,{value:i,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:o}),M.createElement(Os,{value:t,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:n}),M.createElement(Dm,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:r}))},Rm=a=>{const{mananger:s,vertices:e}=a,t=i=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Polygon,viewId:s.viewId,vertices:i})};return M.createElement(Os,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:t})},Wm=a=>{const{mananger:s,placement:e}=a,t=i=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.SpeechBalloon,viewId:s.viewId,placement:i})};return M.createElement(jm,{value:e,icon:"speechBallon-placement",onChangeHandler:t})},Cs=a=>{const{icon:s,isActive:e,onPointerUpHandler:t}=a;return M.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:t},M.createElement("img",{src:xe(s)}))},Ym=a=>{const{toolsTypes:s,style:e,mananger:t,shapeOpt:i}=a,[o,n]=M.useState();M.useEffect(()=>{s.includes(T.Polygon)?n(T.Polygon):s.includes(T.Star)?n(T.Star):n(T.SpeechBalloon)},[s]);const r=(h,d)=>{d==null||d.stopPropagation(),n(h)},c=M.useMemo(()=>o===T.Polygon&&t&&i.vertices?M.createElement(Rm,{vertices:i.vertices,mananger:t}):null,[t,o,i]),l=M.useMemo(()=>o===T.Star&&t&&i.vertices&&i.innerVerticeStep&&i.innerRatio?M.createElement(Om,{mananger:t,vertices:i.vertices,innerVerticeStep:i.innerVerticeStep,innerRatio:i.innerRatio}):null,[t,o,i]),u=M.useMemo(()=>o===T.SpeechBalloon&&t&&i.placement?M.createElement(Wm,{mananger:t,placement:i.placement}):null,[t,o,i]);return M.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.cancelable&&h.preventDefault()}},M.createElement("div",{className:"shapeOpt-sub-menu-tabs"},s.includes(T.Polygon)&&M.createElement(Cs,{isActive:o===T.Polygon,icon:o===T.Polygon?"polygon-active":"polygon",onPointerUpHandler:r.bind(void 0,T.Polygon)})||null,s.includes(T.Star)&&M.createElement(Cs,{isActive:o===T.Star,icon:o===T.Star?"star-active":"star",onPointerUpHandler:r.bind(void 0,T.Star)})||null,s.includes(T.SpeechBalloon)&&M.createElement(Cs,{isActive:o===T.SpeechBalloon,icon:o===T.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:r.bind(void 0,T.SpeechBalloon)})||null),M.createElement("div",{className:"shapeOpt-sub-menu-content"},c,l,u))},Um=a=>{const{open:s,setOpen:e,floatBarRef:t,toolsTypes:i,shapeOpt:o}=a,{floatBarData:n,mananger:r}=M.useContext(Ne),[c,l]=M.useState([]),[u,h]=M.useState(),d=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(n==null?void 0:n.x)&&j.isNumber(n==null?void 0:n.y)&&(r!=null&&r.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>200){const p={};return p.top="inherit",p.bottom=50,p}else if(!t.current.offsetTop&&(r==null?void 0:r.height)-t.current.offsetTop-(n==null?void 0:n.y)<140){const p={};return p.top="inherit",p.bottom=50,p}}},[t,n==null?void 0:n.x,n==null?void 0:n.y,r==null?void 0:r.height]),f=M.useMemo(()=>s&&i&&r&&o?(r.control.room&&!r.control.room.disableDeviceInputs&&(h(r.control.room.disableDeviceInputs),r.control.room.disableDeviceInputs=!0),M.createElement(Ym,{shapeOpt:o,style:d,toolsTypes:i,mananger:r})):(r!=null&&r.control.room&&j.isBoolean(u)&&(r.control.room.disableDeviceInputs=u),null),[s,d,i,r,o]),g=p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!s)};return M.useEffect(()=>{j.isEqual(n==null?void 0:n.selectIds,c)||n!=null&&n.selectIds&&!j.isEqual(n==null?void 0:n.selectIds,c)&&(l(n==null?void 0:n.selectIds),e(!1))},[s,n,c,e]),M.useEffect(()=>()=>{s&&r!=null&&r.control.room&&j.isBoolean(u)&&(r.control.room.disableDeviceInputs=u)},[s,r,u]),M.createElement("div",{className:`button normal-button ${s&&"active"}`,onPointerUp:g},f,M.createElement("img",{alt:"icon",src:xe(s?"shapes-active":"shapes")}))},nn=M.memo(a=>{const{textOpt:s,workIds:e,noLayer:t,position:i}=a,{floatBarData:o,mananger:n}=M.useContext(Ne),[r,c]=M.useState(0),[l,u]=M.useState(),h=M.useRef(null);M.useEffect(()=>{var x,P,E,R;const w={},S=(o==null?void 0:o.w)||((x=s==null?void 0:s.boxSize)==null?void 0:x[0])||0,b=(o==null?void 0:o.h)||((P=s==null?void 0:s.boxSize)==null?void 0:P[1])||0;if(i&&S&&b&&(n!=null&&n.width)&&(n!=null&&n.height)){if(i.y<60?i.y+b<n.height-60?w.bottom=-120:i.y+b<n.height?w.bottom=-58:i.y>0?w.top=62:w.top=-i.y+62:w.top=0,i.x<0)w.left=-i.x+3;else if(i.x+(((E=h.current)==null?void 0:E.offsetWidth)||S)>n.width){const O=n.width-(((R=h.current)==null?void 0:R.offsetWidth)||S)-i.x;w.left=O}u(w);return}u(void 0)},[h,i,o==null?void 0:o.w,o==null?void 0:o.h,n==null?void 0:n.width,n==null?void 0:n.height,s==null?void 0:s.boxSize]);const d=M.useMemo(()=>o!=null&&o.fillColor?M.createElement(Im,{floatBarRef:h,open:r===3,setOpen:w=>{c(w===!0?3:0)}}):null,[o==null?void 0:o.fillColor,r,h]),f=M.useMemo(()=>o!=null&&o.strokeColor?M.createElement(vm,{floatBarRef:h,open:r===2,setOpen:w=>{c(w===!0?2:0)}}):null,[o==null?void 0:o.strokeColor,r,h]),g=M.useMemo(()=>s!=null&&s.fontColor&&(n!=null&&n.viewId)?M.createElement(Sm,{floatBarRef:h,open:r===4,setOpen:w=>{c(w===!0?4:0)},textOpt:s,workIds:e}):null,[s,r,e,n,h]),p=M.useMemo(()=>s!=null&&s.fontBgColor&&(n!=null&&n.viewId)?M.createElement(Nm,{floatBarRef:h,open:r===5,setOpen:w=>{c(w===!0?5:0)},textOpt:s,workIds:e}):null,[s,r,e,n,h]),m=M.useMemo(()=>s&&(n!=null&&n.viewId)?M.createElement(xm,{floatBarRef:h,open:r===6,setOpen:w=>{c(w===!0?6:0)},textOpt:s,workIds:e,style:l}):null,[s,r,e,n,l,h]),N=M.useMemo(()=>s&&(n!=null&&n.viewId)?M.createElement(Pm,{open:r===7,setOpen:w=>{c(w===!0?7:0)},textOpt:s,workIds:e,floatBarRef:h}):null,[s,r,e,n,h]),v=M.useMemo(()=>t?null:M.createElement(ym,{open:r===1,setOpen:w=>{c(w===!0?1:0)},floatBarRef:h}),[t,r,h]),I=M.useMemo(()=>o!=null&&o.canLock&&n?M.createElement(zm,{workIds:e,mananger:n,islocked:o.isLocked}):null,[o,n,e]),k=M.useMemo(()=>n&&(n!=null&&n.viewId)&&l&&(o!=null&&o.shapeOpt)&&(o!=null&&o.toolsTypes)?M.createElement(Um,{open:r===8,setOpen:w=>{c(w===!0?8:0)},floatBarRef:h,workIds:e,toolsTypes:o.toolsTypes,shapeOpt:o.shapeOpt}):null,[o,n,r,l,e,h]);return M.createElement("div",{className:"appliance-plugin-floatbtns",style:l,ref:h,onPointerOver:w=>(w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),n==null||n.control.worker.blurCursor(n.viewId),!1),onMouseMove:w=>(w.stopPropagation(),w.cancelable&&w.preventDefault(),w.nativeEvent.stopImmediatePropagation(),!1)},n&&M.createElement(fm,{workIds:e,mananger:n}),v,I,!!(n!=null&&n.viewId)&&M.createElement(gm,{workIds:e,viewId:n.viewId}),k,N,m,g,p,f,d)}),Bm=a=>{const{data:s,isActive:e,manager:t,workId:i}=a,{opt:o,scale:n,translate:r,x:c,y:l}=s,u=`scale(${n||1}) ${r&&"translate("+r[0]+"px,"+r[1]+"px)"||""}`,{fontSize:h,fontFamily:d,underline:f,fontColor:g,lineThrough:p,textAlign:m,strokeColor:N,lineHeight:v,bold:I,italic:k,uid:w,workState:S}=o,b=h,x=v||b*1.2,P={fontSize:`${b}px`,lineHeight:`${x}px`,color:g,borderColor:N,minHeight:`${x}px`,paddingRight:`${k==="italic"?Math.round(b*.3):5}px`};d&&(P.fontFamily=`${d}`),(p||f)&&(P.textDecoration=`${p&&"line-through"||""}${f&&" underline"||""}`),I&&(P.fontWeight=`${I}`),k&&(P.fontStyle=`${k}`),m&&(P.textAlign=`${m}`);function E(){var O;e&&(w&&w===((O=t.control.collector)==null?void 0:O.uid)||!w)&&t.control.textEditorManager.active(i)}const R=M.useMemo(()=>{const O=[];if(o.text){const D=nt(o.text);for(let A=0;A<D.length;A++){const G=D[A];G===""?O.push(M.createElement("div",{style:{backgroundColor:o.fontBgColor},key:A},M.createElement("br",null))):O.push(M.createElement("div",{style:{backgroundColor:o.fontBgColor},key:A},G))}}return O.length?O:null},[o.fontBgColor,o.text]);return M.createElement("div",{className:"editor-box",style:{left:`${c}px`,top:`${l}px`,transform:u,transformOrigin:"left top",pointerEvents:"none",opacity:S===z.Done?0:1}},M.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:P,onClick:E},R))},Fm=M.memo(a=>{const{data:s,left:e,top:t,workId:i,updateOptInfo:o}=a,{opt:n,scale:r,translate:c}=s,l=M.useRef(null);M.useEffect(()=>{var P,E;if((P=l.current)!=null&&P.offsetWidth&&((E=l.current)!=null&&E.offsetHeight)){const R=n.boxSize;if((R==null?void 0:R[0])!==l.current.offsetWidth||R[1]!==l.current.offsetHeight||!R){const O=[l.current.offsetWidth,l.current.offsetHeight];o({activeTextId:i,update:{boxSize:O,workState:z.Done}})}}},[n.fontSize,n.italic,n.bold,n.boxSize,i]);const u=`scale(${r||1}) ${c&&"translate("+c[0]+"px,"+c[1]+"px)"||""}`,{fontSize:h,fontFamily:d,underline:f,fontColor:g,lineThrough:p,textAlign:m,strokeColor:N,lineHeight:v,bold:I,italic:k}=n,w=h,S=v||w*1.2,b={fontSize:`${w}px`,lineHeight:`${S}px`,color:g,borderColor:N,minHeight:`${S}px`,pointerEvents:"none",paddingRight:`${k==="italic"?Math.round(w*.3):5}px`};d&&(b.fontFamily=`${d}`),(p||f)&&(b.textDecoration=`${p&&"line-through"||""}${f&&" underline"||""}`),m&&(b.textAlign=`${m}`),I&&(b.fontWeight=`${I}`),k&&(b.fontStyle=`${k}`);const x=M.useMemo(()=>{const P=[];if(n.text){const E=nt(n.text);for(let R=0;R<E.length;R++){const O=E[R];O===""?P.push(M.createElement("div",{key:R},M.createElement("br",null))):P.push(M.createElement("div",{key:R},O))}}return P.length?P:null},[n.text]);return M.createElement("div",{className:"editor-box",style:{left:`${e}`,top:`${t}`,transform:u,transformOrigin:"left top",zIndex:1,pointerEvents:"none",opacity:0}},M.createElement("div",{className:"editor readOnly",ref:l,style:b},x))},(a,s)=>!(a.workId!==s.workId||a.left!==s.left||a.top!==s.top||!j.isEqual(a.data,s.data))),Vm=a=>{const{data:s,workId:e,isSelect:t,showFloatBtns:i,handleKeyUp:o,handleFocus:n,updateOptInfo:r,manager:c,runAnimation:l}=a,[u,h]=M.useState(),{opt:d,scale:f,translate:g,x:p,y:m}=s,{fontSize:N,fontFamily:v,underline:I,fontColor:k,lineThrough:w,textAlign:S,strokeColor:b,lineHeight:x,bold:P,italic:E,boxSize:R}=d,O=M.useRef(null),D=M.useMemo(()=>{const ee=N,ce=x||ee*1.2,J={fontSize:`${ee}px`,lineHeight:`${ce}px`,color:k,borderColor:b,minHeight:`${ce}px`,paddingRight:`${E==="italic"?Math.round(ee*.3):5}px`,borderWidth:`${Math.max(Math.round(1/(f||1)),1)}px`};return v&&(J.fontFamily=`${v}`),(w||I)&&(J.textDecoration=`${w&&"line-through"||""} ${I&&" underline"||""}`),S&&(J.textAlign=`${S}`),P&&(J.fontWeight=`${P}`),E&&(J.fontStyle=`${E}`),J},[P,k,v,N,E,x,w,f,b,S,I]),A=M.useMemo(()=>{const ee=`scale(${f||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`;return{left:`${p}px`,top:`${m}px`,zIndex:2,pointerEvents:"none",transform:ee,transformOrigin:"left top"}},[f,g,p,m]),G=M.useMemo(()=>{var ee,ce;return!t&&f&&i&&j.isNumber(p)&&j.isNumber(m)&&d.boxSize&&j.isNumber((ee=d.boxSize)==null?void 0:ee[0])&&j.isNumber((ce=d.boxSize)==null?void 0:ce[1])?M.createElement("div",{className:Pe.FloatBarBtn,style:{left:p,top:m,width:d.boxSize[0]*f,height:d.boxSize[1]*f}},M.createElement(nn,{position:{x:p,y:m},textOpt:d,workIds:[e],noLayer:!0})):null},[t,d,i,e,p,m,f]),ne=M.useMemo(()=>{let ee="";if(d.text){const ce=nt(d.text);for(let J=0;J<ce.length;J++){const $=ce[J];$===""?ee=ee+"<div><br/></div>":ee=ee+`<div style="background-color:${d.fontBgColor}">${$}</div>`}}else ee=`<div style="background-color:${d.fontBgColor}"></div>`;return ee},[d.fontBgColor,d.text]),q=M.useMemo(()=>typeof ne=="string"?M.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:O,style:D,onKeyDown:H,onKeyUp:o,onPointerUp:Z,onFocus:n,onPaste:K,onInput:ue,dangerouslySetInnerHTML:{__html:ne}}):null,[ne,D,e]);M.useEffect(()=>{q&&O.current&&(O.current.click(),setTimeout(()=>{var ee;if(O.current){const ce=window==null?void 0:window.getSelection(),J=O.current.lastChild;if(ce&&J){const $=document.createRange(),de=((ee=J.textContent)==null?void 0:ee.length)||0;(J==null?void 0:J.nodeName)==="#text"?$.setStart(J,de):$.setStart(J,de&&1||0),$.collapse(!0),ce.removeAllRanges(),ce.addRange($)}}},ys))},[q,O.current]),M.useEffect(()=>{var ee,ce,J,$;if(q&&((ee=O.current)!=null&&ee.offsetWidth||(ce=O.current)!=null&&ce.offsetHeight||(J=O.current)!=null&&J.offsetLeft||($=O.current)!=null&&$.offsetTop)){const de=[O.current.offsetWidth,O.current.offsetHeight];(R&&R[0]!==de[0]&&R[1]!==de[1]||!R)&&r({activeTextId:e,update:{boxSize:de,workState:z.Doing}})}},[R,q,D,e]);function Z(){O.current&&O.current.focus(),l()}function H(ee){if(ee.key==="Backspace"){const ce=window.getSelection(),J=ce==null?void 0:ce.getRangeAt(0);if(J!=null&&J.collapsed)return ee.cancelable&&ee.preventDefault(),document.execCommand("delete",!1),!1}return l(),!1}function _(ee,ce){const J=window==null?void 0:window.getSelection();if(J!=null&&J.rangeCount&&ee&&J&&J.anchorNode){const $=J.anchorOffset,de=J.anchorNode.textContent||"",ge=de.slice(0,$)||"",Re=de.slice($)||"",ve=ge.concat(ee)||"";ie(ve,Re,ce)}}function ie(ee,ce,J){const $=window==null?void 0:window.getSelection();if(!($!=null&&$.rangeCount)||!$.anchorNode)return;const de=ee.split(/\n/);let ge=$.anchorNode.parentNode;ge===J&&(ge=$.anchorNode);const Re=[...J.childNodes],ve=[];let we,rt=$.anchorOffset;for(;Re.length;){const be=Re.pop();if(be){if(be===ge){let $e=de[0];de.length===1&&(rt=de[0].length,$e=de[0].concat(ce)),ge.nodeName==="#text"?(ge.textContent=$e,we=ge):ge.nodeName==="DIV"&&(ge.innerText=$e,we=ge.childNodes[0]);break}ve.push(be),J.removeChild(be)}}if(de.length>1)for(let be=1;be<de.length;be++){let $e=de[be];const Dt=document.createElement("div");d.fontBgColor&&(Dt.style.backgroundColor=d.fontBgColor),be===de.length-1&&(rt=$e.length,$e=$e.concat(ce)),$e===""?Dt.innerHTML="<br/>":Dt.innerText=$e,J.appendChild(Dt),be===de.length-1&&(we=Dt.childNodes[0])}if(ve.length){ve.reverse();for(const be of ve)J.appendChild(be)}if(we&&we.nodeName==="#text"){$.deleteFromDocument();const be=document.createRange(),$e=Math.min(rt,(we==null?void 0:we.length)||0);be.setStart(we,$e),be.collapse(!0),$.removeAllRanges(),$.addRange(be)}}function K(ee){if(ee.cancelable&&ee.preventDefault(),ee.stopPropagation(),O.current){const ce=(ee.clipboardData||window.clipboardData).getData("text"),J=window==null?void 0:window.getSelection();if(!(J!=null&&J.rangeCount))return;ce&&J&&J.anchorNode&&_(ce,O.current),l()}}function ue(ee){o(ee),l()}return M.createElement(M.Fragment,null,G,M.createElement("div",{className:"editor-box",style:A,onFocus:()=>{c.control.room&&!c.control.room.disableDeviceInputs&&(h(c.control.room.disableDeviceInputs),c.control.room.disableDeviceInputs=!0)},onBlur:()=>{c!=null&&c.control.room&&j.isBoolean(u)&&(c.control.room.disableDeviceInputs=u)}},q))};class rn extends M.Component{constructor(s){super(s)}getInnerText(s){const e=[];for(let t=0;t<s.childNodes.length;t++){const i=s.childNodes[t];if(i.nodeName==="#text"&&t===0){const o=i.textContent.split(/\n/),n=o.pop();e.push(...o),n&&e.push(n)}else if(i.nodeName==="DIV"){const o=i.innerText.split(/\n/);if(o.length===2&&o[0]===""&&o[1]==="")e.push("");else{const n=o.shift();n&&e.push(n);const r=o.pop();e.push(...o),r&&e.push(r)}}}return e}updateOptInfo(s){var n,r;const{activeTextId:e,update:t,syncData:i}=s,o=e&&j.cloneDeep(((n=this.props.manager.control.textEditorManager)==null?void 0:n.get(e))||((r=this.props.editors)==null?void 0:r.get(e)));o&&o.opt&&(o.opt={...o.opt,...t},i&&(o.canSync=Object.keys(i).includes("canSync")&&i.canSync||o.canSync,o.canWorker=Object.keys(i).includes("canWorker")&&i.canWorker||o.canWorker),this.props.manager.control.textEditorManager.updateForViewEdited(e,o))}get editorUI(){var s;if((s=this.props.editors)!=null&&s.size){const e=[];return this.props.editors.forEach((t,i)=>{if(this.props.selectIds.includes(i)&&!(this.props.activeTextId==i)&&this.props.box){const{x:n,y:r}=this.props.box,{x:c,y:l}=t,u=`${c-n}px`,h=`${l-r}px`,d=M.createElement(Fm,{left:u,top:h,key:i,data:t,workId:i,isSelect:!0,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(d)}}),e}return null}render(){return M.createElement(M.Fragment,null,this.editorUI)}}class $m extends rn{constructor(e){super(e);y(this,"ref");y(this,"isRunAnimation");this.ref=M.createRef(),this.isRunAnimation=void 0}runAnimation(){this.isRunAnimation||(this.isRunAnimation=requestAnimationFrame(()=>{var e,t;(e=this.ref)!=null&&e.current&&((t=this.ref)==null||t.current.scrollTo({left:0,behavior:"instant"})),this.isRunAnimation=void 0}))}handleKeyUp(e){const t=this.getInnerText(e.nativeEvent.target),i=this.props.activeTextId;if(i){const o=this.props.manager.control.textEditorManager.get(i),n=Ye(t),r=z.Doing,c=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!o||o&&(o.opt.text!==n||!j.isEqual(o.opt.boxSize,c)||!j.isEqual(o.opt.workState,r)))&&this.updateOptInfo({activeTextId:i,update:{text:n,boxSize:c,workState:r},syncData:{canSync:!0,canWorker:!0}})}}handleFocus(e){const t=this.props.activeTextId;if(t){const i=this.props.manager.control.textEditorManager.get(t),o=z.Doing,n=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!i||i&&(!j.isEqual(i.opt.boxSize,n)||!j.isEqual(i.opt.workState,o)))&&this.updateOptInfo({activeTextId:t,update:{boxSize:n,workState:o},syncData:{canSync:!0,canWorker:!0}})}}get editorUI(){var e;if((e=this.props.editors)!=null&&e.size){const t=[];return this.props.editors.forEach((i,o)=>{if(!(this.props.selectIds.includes(o)&&this.props.activeTextId!==o)){const c=this.props.activeTextId==o?M.createElement(Vm,{key:o,data:i,workId:o,showFloatBtns:this.props.showFloatBtns||!1,handleFocus:this.handleFocus.bind(this),handleKeyUp:this.handleKeyUp.bind(this),updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager,runAnimation:this.runAnimation.bind(this)}):M.createElement(Bm,{manager:this.props.manager,isActive:i.opt.workState===z.Doing||i.opt.workState===z.Start||!1,key:o,data:i,workId:o});t.push(c)}}),t}return null}render(){return M.createElement("div",{className:`${this.props.className}`,ref:this.ref},this.editorUI)}}const Hm=()=>{const{floatBarData:a}=M.useContext(Ne);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},M.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}))},Qm=()=>{const{floatBarData:a,mananger:s}=M.useContext(Ne),[e,t]=M.useState(),[i,o]=M.useState();M.useEffect(()=>{const c=[];if(s&&j.isNumber(a==null?void 0:a.x)&&j.isNumber(a==null?void 0:a.y)&&(a!=null&&a.points)){const l=s.viewId;if(s.control.viewContainerManager.getView(l))for(const h of a.points){const d=s.control.viewContainerManager.transformToOriginPoint(h,l);c.push(d)}c[0]&&t({x:c[0][0]-((a==null?void 0:a.x)||0),y:c[0][1]-((a==null?void 0:a.y)||0)}),c[1]&&o({x:c[1][0]-((a==null?void 0:a.x)||0),y:c[1][1]-((a==null?void 0:a.y)||0)})}},[s,a==null?void 0:a.points,a==null?void 0:a.x,a==null?void 0:a.y]);const n=M.useMemo(()=>e?M.createElement("div",{className:"point point-dot",style:{borderColor:a==null?void 0:a.selectorColor,left:e.x,top:e.y}}):null,[a==null?void 0:a.selectorColor,e]),r=M.useMemo(()=>i?M.createElement("div",{className:"point point-dot",style:{borderColor:a==null?void 0:a.selectorColor,left:i.x,top:i.y}}):null,[i,a==null?void 0:a.selectorColor]);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},n,r)},Gm=()=>{const{floatBarData:a}=M.useContext(Ne);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},M.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}))},Zm=()=>{const{floatBarData:a}=M.useContext(Ne);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},M.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},qm=a=>{const{className:s}=a,{floatBarData:e,angle:t,setAngle:i,setOperationType:o,mananger:n}=M.useContext(Ne),[r,c]=M.useState(),[l,u]=M.useState(!1),[h,d]=M.useState(new V),[f,g]=M.useState(new V),[p,m]=M.useState(!1);M.useEffect(()=>(oe.activeListener(N),()=>{oe.unmountActiveListener(N)}),[]),M.useEffect(()=>{if(e){const w={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},S={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};g(new V(S.x,S.y)),d(new V(w.x,w.y)),c({x:w.x,y:w.y})}},[e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.h]);const N=w=>{var S;if(!w){m(!0),u(!1),o(F.None);return}m(!1),(S=n==null?void 0:n.control.room)!=null&&S.disableDeviceInputs&&(n.control.room.disableDeviceInputs=!1)},v=(w,S)=>{if(w.cancelable&&w.preventDefault(),w.stopPropagation(),n!=null&&n.control.worker.isBusy){m(!0);return}u(!0);const b=Math.round(V.GetAngleByPoints(h,f,new V(S.x,S.y)))||0;i(b),o(F.RotateNode),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.RotateNode,{workIds:[Q],angle:0,workState:z.Start,viewId:n==null?void 0:n.viewId})},I=(w,S)=>{if(k.cancel(),w.cancelable&&w.preventDefault(),w.stopPropagation(),n!=null&&n.control.worker.isBusy){m(!0);return}u(!1);const b=Math.round(V.GetAngleByPoints(h,f,new V(S.x,S.y)))||0;i(b),o(F.None),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!1),oe.emitMethod(se.MainEngine,F.RotateNode,{workIds:[Q],angle:b,workState:z.Done,viewId:n==null?void 0:n.viewId})},k=Ms((w,S)=>{if(w.cancelable&&w.preventDefault(),w.stopPropagation(),n!=null&&n.control.worker.isBusy){m(!0);return}u(!0);const b=Math.round(V.GetAngleByPoints(h,f,new V(S.x,S.y)))||0;i(b),c({x:S.x,y:S.y}),o(F.RotateNode),oe.emitMethod(se.MainEngine,F.RotateNode,{workIds:[Q],angle:b,workState:z.Doing,viewId:n==null?void 0:n.viewId})},100,{trailing:!0});return M.createElement(kt,{disabled:p,position:r,handle:".appliance-plugin-rotate-mouse-pointer",onStart:v,onDrag:k,onStop:I},M.createElement("div",{className:`${s}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!l&&M.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},M.createElement("img",{alt:"icon",src:xe("rotation-button")})),M.createElement("div",{className:`appliance-plugin-rotate-mouse-pointer ${l?"active":""}`},M.createElement("img",{alt:"icon",src:xe("rotation")}),M.createElement("div",{className:"angle-icon"},t,"°"))))},Xm=a=>{const{floatBarData:s,setOperationType:e,mananger:t}=M.useContext(Ne),{onClickHandle:i}=a,[o,n]=M.useState(z.Pending),[r,c]=M.useState(),[l,u]=M.useState(),[h,d]=M.useState(!1);M.useEffect(()=>(oe.activeListener(f),()=>{oe.unmountActiveListener(f)}),[]);const f=I=>{var k;if(!I||s!=null&&s.isLocked){d(!0),n(z.Pending),e(F.None);return}d(!1),(k=t==null?void 0:t.control.room)!=null&&k.disableDeviceInputs&&(t.control.room.disableDeviceInputs=!1)};M.useEffect(()=>{if(s!=null&&s.isLocked||t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}d(!1)},[s==null?void 0:s.isLocked]),M.useEffect(()=>{j.isNumber(s==null?void 0:s.x)&&j.isNumber(s==null?void 0:s.y)&&(o===z.Pending||o===z.Done)&&u({x:s==null?void 0:s.x,y:s==null?void 0:s.y})},[o,s==null?void 0:s.x,s==null?void 0:s.y]);const g=I=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}j.isNumber(s==null?void 0:s.x)&&j.isNumber(s==null?void 0:s.y)&&(e(F.TranslateNode),n(z.Start),c({x:s==null?void 0:s.x,y:s==null?void 0:s.y}),t!=null&&t.control.room&&(t.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.TranslateNode,{workIds:[Q],position:{x:s==null?void 0:s.x,y:s==null?void 0:s.y},workState:z.Start,viewId:t==null?void 0:t.viewId}))},p=(I,k)=>{if(m.cancel(),I.cancelable&&I.preventDefault(),t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}I.stopPropagation();const w={x:k.x,y:k.y};e(F.None),n(z.Done),t!=null&&t.control.room&&(t.control.room.disableDeviceInputs=!1),oe.emitMethod(se.MainEngine,F.TranslateNode,{workIds:[Q],position:w,workState:z.Done,viewId:t==null?void 0:t.viewId})},m=j.throttle((I,k)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}const w={x:k.x,y:k.y};(k.x!==(s==null?void 0:s.x)||k.y!==(s==null?void 0:s.y))&&(n(z.Doing),oe.emitMethod(se.MainEngine,F.TranslateNode,{workIds:[Q],position:w,workState:z.Doing,viewId:t==null?void 0:t.viewId}))},100,{trailing:!1}),N=M.useMemo(()=>!!((s==null?void 0:s.scaleType)===ae.none&&(s!=null&&s.canLock)),[s]),v=j.debounce(I=>(m.cancel(),I.stopPropagation(),I.cancelable&&I.preventDefault(),(r==null?void 0:r.x)===(s==null?void 0:s.x)&&(r==null?void 0:r.y)===(s==null?void 0:s.y)&&i(I),!1),150,{trailing:!0});return M.createElement(kt,{disabled:h,position:l,onStart:g,onDrag:m,onStop:p},M.createElement("div",{style:s?{position:"absolute",left:0,top:0,width:s.w,height:s.h,zIndex:2,pointerEvents:N?"none":"auto",touchAction:"none"}:void 0,onPointerUp:I=>{I.persist(),v(I)}}))},Jm=a=>{const{className:s}=a,[e,t]=M.useState({x:0,y:0,h:0,w:0}),[i,o]=M.useState(),[n,r]=M.useState(),[c,l]=M.useState(),{floatBarData:u,mananger:h}=M.useContext(Ne),[d,f]=M.useState(),[g,p]=M.useState(!1);M.useEffect(()=>{if(u&&h){const b={x:u.x,y:u.y,w:u.w,h:u.h};t(b)}return oe.activeListener(m),()=>{oe.unmountActiveListener(m)}},[]);const m=b=>{var x;if(!b){p(!0);return}p(!1),(x=h==null?void 0:h.control.room)!=null&&x.disableDeviceInputs&&(h.control.room.disableDeviceInputs=!1)},N=b=>[[b.x,b.y],[b.x+b.w,b.y],[b.x+b.w,b.y+b.h],[b.x,b.y+b.h]],v=(b,x)=>{switch(x){case"top":case"topLeft":case"left":return b[2];case"topRight":return b[3];case"right":case"bottomRight":case"bottom":return b[0];case"bottomLeft":return b[1]}},I=(b,x,P,E)=>{let R=!1,O=!1;const D={x:e.x,y:e.y,w:e.w,h:e.h},A=[1,1],G=[0,0];switch(b){case"top":{const H=x.height+e.h;H<0?(O=!0,D.y=e.y+e.h,D.h=Math.abs(H)):(D.y=e.y-x.height,D.h=e.h+x.height);break}case"topLeft":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+e.w,D.w=Math.abs(H)):(D.x=e.x-x.width,D.w=e.w+x.width);const _=x.height+e.h;_<0?(O=!0,D.y=e.y+e.h,D.h=Math.abs(_)):(D.y=e.y-x.height,D.h=e.h+x.height);break}case"topRight":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+H,D.w=Math.abs(H)):D.w=e.w+x.width;const _=x.height+e.h;_<0?(O=!0,D.y=e.y+e.h,D.h=Math.abs(_)):(D.y=e.y-x.height,D.h=e.h+x.height);break}case"bottom":{const H=x.height+e.h;H<0?(O=!0,D.y=e.y+H,D.h=Math.abs(H)):D.h=e.h+x.height;break}case"bottomLeft":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+e.w,D.w=Math.abs(H)):(D.x=e.x-x.width,D.w=e.w+x.width);const _=x.height+e.h;_<0?(O=!0,D.y=e.y+_,D.h=Math.abs(_)):D.h=e.h+x.height;break}case"left":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+e.w,D.w=Math.abs(H)):(D.x=e.x-x.width,D.w=e.w+x.width);break}case"bottomRight":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+H,D.w=Math.abs(H)):D.w=e.w+x.width;const _=x.height+e.h;_<0?(O=!0,D.y=e.y+_,D.h=Math.abs(_)):D.h=e.h+x.height;break}case"right":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+H,D.w=Math.abs(H)):D.w=e.w+x.width;break}}A[0]=D.w/e.w,A[1]=D.h/e.h;const q=N(D).map(H=>P.control.viewContainerManager.transformToScenePoint(H,P.viewId)),Z=v(q,b);return O&&(G[1]=Z[1]-E[1]),R&&(G[0]=Z[0]-E[0]),{scale:A,translate:G}},k=(b,x)=>{if(b.cancelable&&b.preventDefault(),b.stopPropagation(),h!=null&&h.control.worker.isBusy){p(!0);return}if(u!=null&&u.w&&(u!=null&&u.h)&&h){const P={x:u.x,y:u.y,w:u.w,h:u.h},E=N(P),R=E.map(A=>h.control.viewContainerManager.transformToScenePoint(A,h.viewId)),O=v(E,x),D=v(R,x);t(P),o(O),r(D),l(x),h!=null&&h.control.room&&(h.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.ScaleNode,{workIds:[Q],originPoint:O,scenePoint:D,workState:z.Start,viewId:h.viewId})}},w=j.throttle((b,x,P,E)=>{if(b.cancelable&&b.preventDefault(),b.stopPropagation(),!h||!i||!n)return;if(h!=null&&h.control.worker.isBusy){p(!0);return}const{scale:R,translate:O}=I(x,E,h,n);(!j.isEqual(R,d==null?void 0:d.scale)||!j.isEqual(O,d==null?void 0:d.translate))&&(f({scale:R,translate:O}),oe.emitMethod(se.MainEngine,F.ScaleNode,{workIds:[Q],scale:R,dir:x,translate:O,originPoint:i,scenePoint:n,workState:z.Doing,viewId:h.viewId}))},100,{trailing:!0}),S=b=>{if(w.cancel(),b.cancelable&&b.preventDefault(),b.stopPropagation(),!(!h||!i||!n)){if(h!=null&&h.control.worker.isBusy){p(!0);return}if(h!=null&&h.control.room&&(h.control.room.disableDeviceInputs=!1),d){const{scale:x,translate:P}=d;oe.emitMethod(se.MainEngine,F.ScaleNode,{workIds:[Q],scale:x,dir:c,translate:P,originPoint:i,scenePoint:n,workState:z.Done,viewId:h.viewId})}}};return M.createElement(ln.Resizable,{className:`${s}`,boundsByDirection:!0,minWidth:-(((u==null?void 0:u.x)||0)+((u==null?void 0:u.w)||0)),minHeight:-(((u==null?void 0:u.y)||0)+((u==null?void 0:u.h)||0)),size:{width:(u==null?void 0:u.w)||0,height:(u==null?void 0:u.h)||0},style:{position:"absolute",pointerEvents:"auto",left:u==null?void 0:u.x,top:u==null?void 0:u.y},enable:g?!1:{top:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,right:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,bottom:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,left:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(u==null?void 0:u.scaleType)===ae.proportional,onResizeStart:k,onResize:w,onResizeStop:S})},_i=a=>{const{id:s,pos:e,pointMap:t,type:i}=a,{setOperationType:o,mananger:n,floatBarData:r}=M.useContext(Ne),[c,l]=M.useState({x:0,y:0}),[u,h]=M.useState(z.Pending),[d,f]=M.useState(!1);M.useEffect(()=>(oe.activeListener(g),()=>{oe.unmountActiveListener(g)}),[]);const g=v=>{var I;if(!v||r!=null&&r.isLocked){f(!0),h(z.Pending),o(F.None);return}f(!1),(I=n==null?void 0:n.control.room)!=null&&I.disableDeviceInputs&&(n.control.room.disableDeviceInputs=!1)};M.useEffect(()=>{j.isNumber(e.x)&&j.isNumber(e.y)&&(u===z.Pending||u===z.Done)&&l({x:e.x,y:e.y})},[e,u]);const p=v=>{if(v.cancelable&&v.preventDefault(),v.stopPropagation(),n!=null&&n.control.worker.isBusy){f(!0),h(z.Pending);return}j.isNumber(e.x)&&j.isNumber(e.y)&&(o(F.SetPoint),h(z.Start),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.SetPoint,{workId:Q,pointMap:t,workState:z.Start,viewId:n==null?void 0:n.viewId}))},m=j.throttle((v,I)=>{if(v.cancelable&&v.preventDefault(),v.stopPropagation(),n!=null&&n.control.worker.isBusy){f(!0),h(z.Pending);return}const k={x:I.x,y:I.y};if((k.x!==(e==null?void 0:e.x)||k.y!==(e==null?void 0:e.y))&&(n!=null&&n.control.viewContainerManager)){const w=n.control.viewContainerManager.transformToScenePoint([k.x,k.y],n.viewId),S=t.get(s);S&&i==="start"?S[0]=w:S&&i==="end"&&(S[1]=w),h(z.Doing),oe.emitMethod(se.MainEngine,F.SetPoint,{workId:Q,pointMap:t,workState:z.Doing,viewId:n==null?void 0:n.viewId})}},100,{trailing:!0}),N=(v,I)=>{if(m.cancel(),v.cancelable&&v.preventDefault(),n!=null&&n.control.worker.isBusy){f(!0),h(z.Pending);return}v.stopPropagation(),o(F.None),h(z.Done);const k={x:I.x,y:I.y};if(n!=null&&n.control.viewContainerManager){const w=n.control.viewContainerManager.transformToScenePoint([k.x,k.y],n.viewId),S=t.get(s);S&&i==="start"?S[0]=w:S&&i==="end"&&(S[1]=w),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!1),oe.emitMethod(se.MainEngine,F.SetPoint,{workId:Q,pointMap:t,workState:z.Done,viewId:n==null?void 0:n.viewId})}};return M.createElement(kt,{disabled:d,position:c,onStart:p,onDrag:m,onStop:N},M.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:r?{left:0,top:0}:void 0}))},Km=a=>{const{className:s}=a,{floatBarData:e,mananger:t}=M.useContext(Ne),[i,o]=M.useState(),[n,r]=M.useState(),[c,l]=M.useState(new Map);M.useEffect(()=>{const d=[];if(t&&(e!=null&&e.points)){const f=t.viewId;if(t.control.viewContainerManager.getView(f))for(const p of e.points){const m=t.control.viewContainerManager.transformToOriginPoint(p,f);d.push(m)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}d[0]&&o({x:d[0][0],y:d[0][1]}),d[1]&&r({x:d[1][0],y:d[1][1]})},[t,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const u=M.useMemo(()=>i&&(e!=null&&e.selectIds)?M.createElement(_i,{pos:i,type:"start",id:e.selectIds[0],pointMap:c}):null,[i,e==null?void 0:e.selectIds,c]),h=M.useMemo(()=>n&&(e!=null&&e.selectIds)?M.createElement(_i,{pos:n,type:"end",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]);return M.createElement("div",{className:`${s}`},u,h)},_m=M.forwardRef((a,s)=>{const{floatBarData:e,operationType:t}=M.useContext(Ne),i=M.useMemo(()=>(e==null?void 0:e.scaleType)!==ae.all||t===F.RotateNode?null:M.createElement(Hm,null),[e,t]),o=M.useMemo(()=>(e==null?void 0:e.scaleType)!==ae.both||t===F.RotateNode?null:M.createElement(Qm,null),[e,t]),n=M.useMemo(()=>(e==null?void 0:e.scaleType)!==ae.proportional||t===F.RotateNode?null:M.createElement(Gm,null),[e,t]),r=M.useMemo(()=>(e==null?void 0:e.scaleType)===ae.none&&(e!=null&&e.canLock)?M.createElement(Zm,null):null,[e]);return M.createElement("div",{ref:s,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},r,i,o,n,a.children)}),ew=M.forwardRef((a,s)=>{var f;const{floatBarData:e,operationType:t,mananger:i}=M.useContext(Ne),{editors:o,activeTextId:n,isHide:r}=a,c=M.useMemo(()=>{var g;return e!=null&&e.canRotate&&((g=e==null?void 0:e.selectIds)==null?void 0:g.length)===1&&(t===F.None||t===F.RotateNode)?M.createElement(qm,{className:Pe.RotateBtn}):null},[e==null?void 0:e.canRotate,(f=e==null?void 0:e.selectIds)==null?void 0:f.length,t]),l=M.useMemo(()=>((e==null?void 0:e.scaleType)===ae.all||(e==null?void 0:e.scaleType)===ae.proportional)&&(t===F.None||t===F.ScaleNode)&&j.isNumber(e==null?void 0:e.x)&&j.isNumber(e==null?void 0:e.y)?M.createElement(Jm,{className:Pe.ResizeBtn}):null,[e==null?void 0:e.scaleType,t,e==null?void 0:e.x,e==null?void 0:e.y]),u=M.useMemo(()=>(e==null?void 0:e.scaleType)===ae.both&&(t===F.None||t===F.SetPoint)?M.createElement(Km,{className:Pe.ResizeTowBox}):null,[e==null?void 0:e.scaleType,t]),h=M.useMemo(()=>{const g=(e==null?void 0:e.selectIds)||[];return o&&i&&g&&j.isNumber(e==null?void 0:e.x)&&j.isNumber(e==null?void 0:e.y)&&j.isNumber(e==null?void 0:e.w)&&j.isNumber(e==null?void 0:e.h)?M.createElement(rn,{box:{x:e==null?void 0:e.x,y:e==null?void 0:e.y,w:e==null?void 0:e.w,h:e==null?void 0:e.h},manager:i,selectIds:g,activeTextId:n,editors:o}):null},[e==null?void 0:e.selectIds,e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.w,e==null?void 0:e.h,o,i,n]),d=M.useMemo(()=>r&&t===F.None&&j.isNumber(e==null?void 0:e.x)&&j.isNumber(e==null?void 0:e.y)&&j.isNumber(e==null?void 0:e.w)&&j.isNumber(e==null?void 0:e.h)?M.createElement("div",{className:Pe.FloatBarBtn,style:{left:e==null?void 0:e.x,top:e==null?void 0:e.y,width:e.w,height:e.h}},M.createElement(nn,{position:{x:e.x,y:e.y},textOpt:e==null?void 0:e.textOpt,noLayer:e==null?void 0:e.isLocked})):null,[e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.w,e==null?void 0:e.h,e==null?void 0:e.textOpt,e==null?void 0:e.isLocked,t,r]);return M.createElement("div",{className:Pe.FloatBar,onPointerOver:g=>(g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),i==null||i.control.worker.blurCursor(i.viewId),!1)},M.createElement(_m,{ref:s},M.createElement(M.Fragment,null,h)),M.createElement(Xm,{onClickHandle:g=>{if(i&&(o!=null&&o.size)){const p=i.getPoint(g.nativeEvent);p&&i.control.textEditorManager.computeTextActive(p,i.viewId)}}}),c,l,u,d)}),tw=M.memo(ew,(a,s)=>!!j.isEqual(a,s)),sw="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",iw="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='40px'%20height='40px'%20viewBox='0%200%2040%2040'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3eshape-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-64.6%25'%20y='-59.5%25'%20width='229.3%25'%20height='246.1%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-344.000000,%20-751.000000)'%3e%3cg%20id='shape-cursor'%20transform='translate(344.000000,%20751.000000)'%3e%3crect%20id='矩形备份-44'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M20,21%20C20.4854103,21%2020.898085,21.3479993%2020.9899479,21.8654877%20L21,22%20L21,27%20C21,27.5522847%2020.5522847,28%2020,28%20C19.5145897,28%2019.101915,27.6520007%2019.0100521,27.1345123%20L19,27%20L19,22%20C19,21.4477153%2019.4477153,21%2020,21%20Z%20M27,19%20C27.5522847,19%2028,19.4477153%2028,20%20C28,20.4854103%2027.6520007,20.898085%2027.1345123,20.9899479%20L27,21%20L22,21%20C21.4477153,21%2021,20.5522847%2021,20%20C21,19.5145897%2021.3479993,19.101915%2021.8654877,19.0100521%20L22,19%20L27,19%20Z%20M18,19%20C18.5522847,19%2019,19.4477153%2019,20%20C19,20.4854103%2018.6520007,20.898085%2018.1345123,20.9899479%20L18,21%20L13,21%20C12.4477153,21%2012,20.5522847%2012,20%20C12,19.5145897%2012.3479993,19.101915%2012.8654877,19.0100521%20L13,19%20L18,19%20Z%20M20,12%20C20.4854103,12%2020.898085,12.3479993%2020.9899479,12.8654877%20L21,13%20L21,18%20C21,18.5522847%2020.5522847,19%2020,19%20C19.5145897,19%2019.101915,18.6520007%2019.0100521,18.1345123%20L19,18%20L19,13%20C19,12.4477153%2019.4477153,12%2020,12%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='18.5'%20y='17'%20width='3'%20height='6'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='17'%20y='18.5'%20width='6'%20height='3'%3e%3c/rect%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='形状结合'%20fill='%23212324'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",ow="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='47px'%20height='40px'%20viewBox='0%200%2047%2040'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3etext-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M16,26.5%20C15.7238576,26.5%2015.5,26.2761424%2015.5,26%20C15.5,25.7545401%2015.6768752,25.5503916%2015.9101244,25.5080557%20L16,25.5%20L19.5,25.5%20L19.5,14.5%20L16,14.5%20C15.7238576,14.5%2015.5,14.2761424%2015.5,14%20C15.5,13.7545401%2015.6768752,13.5503916%2015.9101244,13.5080557%20L16,13.5%20L24,13.5%20C24.2761424,13.5%2024.5,13.7238576%2024.5,14%20C24.5,14.2454599%2024.3231248,14.4496084%2024.0898756,14.4919443%20L24,14.5%20L20.5,14.5%20L20.5,25.5%20L24,25.5%20C24.2761424,25.5%2024.5,25.7238576%2024.5,26%20C24.5,26.2454599%2024.3231248,26.4496084%2024.0898756,26.4919443%20L24,26.5%20L16,26.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-284.0%25'%20y='-81.5%25'%20width='668.1%25'%20height='293.9%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-388.000000,%20-672.000000)'%3e%3cg%20id='text-cursor'%20transform='translate(392.000000,%20672.000000)'%3e%3crect%20id='矩形备份-40'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M19,25%20L19,15%20L16,15%20C15.4477153,15%2015,14.5522847%2015,14%20C15,13.5145897%2015.3479993,13.101915%2015.8654877,13.0100521%20L16,13%20L24,13%20C24.5522847,13%2025,13.4477153%2025,14%20C25,14.4854103%2024.6520007,14.898085%2024.1345123,14.9899479%20L24,15%20L21,15%20L21,25%20L24,25%20C24.5522847,25%2025,25.4477153%2025,26%20C25,26.4854103%2024.6520007,26.898085%2024.1345123,26.9899479%20L24,27%20L16,27%20C15.4477153,27%2015,26.5522847%2015,26%20C15,25.5145897%2015.3479993,25.101915%2015.8654877,25.0100521%20L16,25%20L19,25%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",nw="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgrSURBVHgB7ZprTBRXFIDP7gIt8lQppTwE5V0KaAn6o1pqNGkDDTEmTUhsgKRp+gNJw68CFkLbVC2QkDS+gD8KJdWmARvbFBNNWpuIRGPFWBXQRMPDqIki+KLATs+ZnTvcvXtnX8w2beJJToaduTP3fHPOPffcOwC8kP+2WCDwIvahGFxTuN8KmNSZmULPNjLeqF9F8rdPkIEGEn+r+vjx46LQ0NA8/Dsader58+e/h4WFDWntFO7ot6fMFAt3JLWi2lCDpqamCux2+2+KROj82NhYGrXT2lu5Z/DP/deFByElA4Pv3LlTiHY/nJ6eVnbv3q1s2bJFyc7OVrZu3arU1dUp4+PjxPUQoT+g9tp9PkMFgpo9kxljHRoaWp2Xl3duYmIiurKyEvDoclNCQgIcPnxYPc7MzHwcGRnZhaft4Ag7O9fUbRhaITCie4lgcnNzT7qDIaHz27dvh+vXr0NEREQneqoCHKFnAR+8ZCaQGGq2CxcurCGYycnJZHcwTNAzUFFRoUJFRUV1IFQ5OKBsXB9uxSwgl0TQ3d29Yt26dccwoyVXV1d7hGEiQmGi2AzOUHx/hob4K2yuYS9G987s7OwPISEh7xPM6dOnwVfBsIMjR45AZmbmo5s3b76Xnp7+J55egMVxBSAZT0v1ED+76yn66dOnLQSzd+9ev2BIyFP0MjBco1JTU/sxfFeDazp3cYgZHmKqdoaGNISHh9fv378fSJcqlPV6e3sBJ+I/goOD34VFL0k95Y+HxPHCYGxmw5DQ2NuzZw8EBQVtunXr1jvgwUP+hhz/QDXMMCNVE8zx48dNg2FCz6QQjI2N/RA8VBFmANnu3btXihnpG8pM9fX1EAi5du0aeWkVOAMBCF7yN+R0z4yOjq6NiYlpp9CgdBtIwXpPH6vgDKWLt0CygtM6MDCwBuUYZSKaOCksAiVY9wFOBePgDOOytPAGSKzNVCCC2bBhw69YdK7ypgpYimzbtk2dl7CM+hFcveOUHDylbTFO1YdhFbByx44dA1QFUP0VSJj4+Hjo6+sDq9U6iEmHKvFZTedQ50GYbN15SITVlwNlZWUnLRZL8s6dOwMOQ9UCTtKTra2ttdppt9V2kMF5cbmsjxuM43bMNrmUzc6fP6+GQiDGDoOJi4ubwb4qm5ubafyIE6nLxGqTPEsGo1cBOGNX0TyDYafC0CyOaxcVziyh53Z2dkJycvLMvn37PmpoaBgFR4jxYSbWdVIgI89Iq4CjR48CZjlYv369+tssqI6ODsjPz4f+/v668vLycxrEHHfkYdwC8SB6mGEV8Cl64cuuri5oa2tTG+EyGjZu3AiXLl1qefDgwV8lJSUFZkDV1tZCcXExXLx4sbWoqKgPFj0zx8GI9ZwO5W4M6ekZYeqpaqbqmaSqqkpNpcPDw4dwzfM9nrLduHEjEs+X0XV/Sx96LnqE1kLtBQUF3eDwCO8dGQyzV5rl+JyuegfXI29jRotiRlKnpFghHMzKyjqotVXS0tLacKPjF3bdHxjSq1evduAkepAD+ZsDYlC8V5w8ZBVg+PPq2MGMlkInqE4joTf45MmT4YyMjAPcA+ltLSQlJX2BafxnX6HI29QeK44TOTk57mCYZ0QoJ8OBM4yB6dkNkwGlSygsLFQvYtYB3BTMxFL+M+0eFgZqp4mJiU2+QKGX1fGIk/QIrn0aYXGsyDxjmAyMhO2jhaCGoUbX1NSkLSwsPMJqV8Fspu6lIZS6OYhjiOLwdU7fQM1HfRPD7wS1obZ0j0xpb4726Z49ezaJf2/S7s9ATUGNR41BjdJseRnke3WGwhrRTS9pD1mOGoeG15BxOOfoxuCkp0Ih6NeaEaSZGlieJyiCoc1FgsGldokGk8nBvAKOrWIGQ5uPsm0tt0BWDiicAaGuGhkZ+YqMw9StGzU4OKhCnT179hNsswY1FTXdE5QEJhc1S3tGogazXLOBwQSBl3tzIhQPtAL1VQJCTcNx8y1vHIUghSKFZE9PT7H2dlM1b+Wgrr1y5Uq77J75+fnplpaWMg2ch4nlYEI5z7hdensDpI4hrYNErcMMXJ32koG4ztf3pultz83NjWG99Ra2WQ0OL2VjZjwgeufUqVOqV8+cOdPIwdBLSNJeHg8TAh5WqJ6EfSmgt7IMNRJ1JThiOlnrOAMHshprmMKdoGSCpb9s3B3SYLIFGIqICJB7xisYi+RvfiypXw40DWGdlJaWRmMd141hk8V2OWm7ieYTXhBc3+BgaZyqAISjOYxSMVvXsBTNlzdiNQDgRao2AtK3pjggpmrqbGpqSsLPIN/dv38/gaBwUjTshMHcvn27JyUlpRmc5xpPMD599LIYnLNyUKKndKjGxsakXbt2deMCLIE8IVvs0YRM1fjdu3d/wrXN5+BcnzEgvor2uN3rjzAYMp5lPEoQlE5fA0fWo8GfhlCbKVFQ1pKNIfzcOHH58mWqaimVUwJI0+6n59D4pIlzmdZPMPiZzXjDjX47Le5g0Uu8x2zgPqWyKpjVe7x3+AUbq9NYjQbgp2dsBud5o8TP7d5kHAWcQchQfoEmLgn8HjOiBIF7o5hI1x6CEbLNP3bdqYAF44JzyWLzcN1i8DcT/o3awbm8Fz3DAy2A62INwPV/E3wWdx5inmBHuwChCBD6R2JwHge80TIQRQLjt7e8DTkGZgfX8cUMZTDAteFDkveaIlzjX9ySQs8X18r2t2VHUURPKoICmDR+eCO9aSdmOIub3/w9RgpgUpiJhvraXpa6jZKHGEqyusw0GLFzX+5RhN/8kYnMSNMMfyH/V/kHST6OYVElTPAAAAAASUVORK5CYII=";class rw extends M.Component{constructor(e){super(e);y(this,"renderAvatar",e=>{var i;const t=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const o=this.getCursorName(e);return M.createElement("img",{className:"cursor-selector-avatar",style:{width:o?19:28,height:o?19:28,position:o?"initial":"absolute",borderColor:o?"white":t,marginRight:o?4:0},src:(i=e.payload)==null?void 0:i.avatar,alt:"avatar"})}else return null});y(this,"getOpacity",e=>{const t=this.getCursorName(e),i=this.detectAvatar(e);return t===void 0&&i===void 0?0:1});y(this,"getCursorName",e=>{if(e.payload)return e.payload.nickName||e.payload.cursorName||e.payload.uid});y(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");y(this,"getCursorBackgroundColor",e=>{const t=this.getCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:t?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});y(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");y(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));y(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));y(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return M.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)})}render(){const{roomMember:e}=this.props,t=this.getCursorName(e);switch(e.memberState.currentApplianceName){case re.pencil:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"10px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-pencil-image",src:sw,alt:"pencilCursor"}))));case re.eraser:case re.pencilEraser:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"0px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-pencil-image",src:nw,alt:"pencilEraser"}))));case re.text:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-arrow-image",src:ow,alt:"textCursor"}))));case re.rectangle:case re.arrow:case re.straight:case re.shape:case re.ellipse:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-arrow-image",src:iw,alt:"shapeCursor"}))));default:return null}}}const aw=a=>{const{className:s,info:e}=a,{roomMember:t,...i}=e||{};return M.createElement("div",{className:`${s}`,style:i?{transform:`translate(${i.x}px, ${i.y}px)`}:{display:"none"}},t&&M.createElement(rw,{roomMember:t}))},cw=a=>{const{className:s,manager:e}=a,[t,i]=M.useState();M.useEffect(()=>(e.internalMsgEmitter.on([se.Cursor,e.viewId],o),()=>{e.internalMsgEmitter.off([se.Cursor,e.viewId],o)}),[e]);function o(r){i(r)}return M.useMemo(()=>{if(t!=null&&t.length){const r=t.map(c=>{var l;return c.roomMember?M.createElement(aw,{key:(l=c.roomMember)==null?void 0:l.memberId,className:s,info:c}):null});return M.createElement(M.Fragment,null,r)}return null},[t])},lw=a=>{const{viewId:s,miniMapCanvas:e,highlightColor:t,miniMapManager:i,contianer:o}=a,[n,r]=M.useState();M.useEffect(()=>(c(),i.listener.addListener([s,"viewCameraUpate"],c),i.listener.emitAsync([s,"miniMapCreate"],!0),()=>{i.listener.removeListener([s,"viewCameraUpate"],c)}),[]);const c=()=>{const h=i.maps.get(s);h&&l(h.miniMapCamera,h.viewCamera)},l=(h,d)=>{const{width:f,height:g}=o.getBoundingClientRect(),p=Math.min(f/h.width,g/h.height),m=d.width/d.scale,N=d.height/d.scale,v=[d.centerX,d.centerY],I=[h.centerX,h.centerY],k=[v[0]-I[0],v[1]-I[1]],w=Math.min(h.scale*p,h.scale*p),S=[k[0]*w,k[1]*w,m,N,w];r(S)},u=h=>{var d;if(i.control.renderControl.isWritable){const f=h.nativeEvent.target||h.nativeEvent.srcElement;if(f&&h.nativeEvent&&n){const{width:g,height:p}=f.getBoundingClientRect(),[m,N]=[g/2,p/2],[v,I]=[(h.nativeEvent.offsetX-m)/n[4],(h.nativeEvent.offsetY-N)/n[4]],k=i.maps.get(s);if(k!=null&&k.viewCamera){const[w,S]=[k.miniMapCamera.centerX+v,k.miniMapCamera.centerY+I];(d=i.control.room)==null||d.moveCamera({centerX:w,centerY:S,animationMode:"immediately"})}}}};return M.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:u},M.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),n&&M.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:n[2]*n[4],height:n[3]*n[4],boxSizing:"content-box",border:`2px solid ${t}`,transform:`translate(calc(-50% + ${n[0]}px), calc(-50% + ${n[1]}px))`,pointerEvents:"none"}}))},hw=a=>{const{miniMapManager:s,active:e,className:t}=a,i=M.useMemo(()=>{const o=s.maps;if(e){const n=o.get(e);if(n){const{miniMapCamera:r,viewCamera:c,...l}=n;if(l.contianer&&r&&c){const u=s.highlightColor;return as.createPortal(M.createElement(lw,{viewId:e,...l,highlightColor:u,miniMapManager:s}),l.contianer)}}}return null},[e,s]);return M.createElement("div",{className:t},i)},Ne=M.createContext({mananger:void 0,floatBarColors:[],floatBarData:void 0,dpr:1,angle:0,operationType:F.None,scale:[1,1],setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class ai extends M.Component{constructor(e){var t,i;super(e);y(this,"setAngle",e=>{this.setState({angle:e})});y(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,dpr:1,angle:0,operationType:F.None,scale:[1,1],editors:this.editors,activeTextId:(t=this.props.mananger.control.textEditorManager)==null?void 0:t.activeId,activeMiniMapViewId:(i=this.props.mananger.control.miniMapManager)==null?void 0:i.activeViewId}}get editors(){return ke(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBar(e,t){const i=e&&t&&{...this.state.floatBarData,...t}||void 0;this.setState({showFloatBar:e,floatBarData:i,angle:0})}setActiveTextEditor(e){this.setState({activeTextId:e,editors:this.editors})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var t,i,o,n,r,c,l;const e=!!((i=(t=this.props.mananger.control)==null?void 0:t.room)!=null&&i.floatBarOptions);return M.createElement("div",{className:Pe.Container},!this.props.mananger.control.hasOffscreenCanvas()&&M.createElement("div",{className:Pe.CanvasBox,ref:this.props.refs.canvasContainerRef})||M.createElement("div",{className:Pe.CanvasBox,onMouseDown:u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},onMouseUp:u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},onPointerDown:u=>{u.stopPropagation()},onPointerUp:u=>{u.stopPropagation()},onTouchStart:u=>{u.stopPropagation()},onTouchEnd:u=>{u.stopPropagation()},onMouseMove:u=>{this.props.mananger.cursorMouseMove(u)}},M.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),M.createElement("canvas",{id:"serviceCanvas",className:Pe.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),M.createElement("canvas",{id:"localCanvas",className:Pe.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),M.createElement("div",{id:"subLocalCanvas",className:Pe.CanvasBoxSub,ref:this.props.refs.subLocalCanvasContainerRef}),M.createElement("canvas",{id:"topCanvas",className:Pe.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.mananger.control.hasOffscreenCanvas()&&this.props.refs.snapshotContainerRef&&M.createElement("div",{className:Pe.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,M.createElement(Ne.Provider,{value:{mananger:this.props.mananger,floatBarColors:e&&((r=(n=(o=this.props.mananger.control)==null?void 0:o.room)==null?void 0:n.floatBarOptions)==null?void 0:r.colors)||[],floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&M.createElement(tw,{ref:this.props.refs.floatBarRef,editors:this.state.editors,activeTextId:this.state.activeTextId,isHide:e})||null,((c=this.state.editors)==null?void 0:c.size)&&M.createElement($m,{className:Pe.TextEditorContainer,showFloatBtns:e,manager:this.props.mananger,selectIds:((l=this.state.floatBarData)==null?void 0:l.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null),M.createElement(cw,{className:Pe.CursorBox,manager:this.props.mananger}),M.createElement(hw,{className:Pe.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class uw extends sn{constructor(e,t){super(e,t);y(this,"width",1e3);y(this,"height",1e3);y(this,"dpr",et());y(this,"vDom");y(this,"eventTragetElement");y(this,"snapshotContainerRef");y(this,"canvasContainerRef",M.createRef());y(this,"subLocalCanvasContainerRef",M.createRef());y(this,"canvasTopRef",M.createRef());y(this,"canvasServiceFloatRef",M.createRef());y(this,"canvasFloatRef",M.createRef());y(this,"canvasBgRef",M.createRef());y(this,"floatBarRef",M.createRef());y(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=M.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth||this.width,t=this.eventTragetElement.offsetHeight||this.height;let i=et();this.canvasBgRef.current&&(i=et(this.canvasBgRef.current.getContext("2d"))),i!==this.dpr&&(this.dpr=i,this.control.worker.updateDpr(this.viewId,this.dpr)),e&&t&&this.canvasContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${t}px`),e&&t&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t),e&&t&&this.canvasBgRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=t*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=t*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=t*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=t*this.dpr))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const t=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const i of t)i.remove()}}}createMainViewDisplayer(e){const t=document.createElement("div");return t.className="appliance-plugin-main-view-displayer",e.appendChild(t),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),as.render(M.createElement(ai,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),t),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class dw extends _M{constructor(e,t,i){super(e,t,i);y(this,"dpr",et());y(this,"width",1e3);y(this,"height",1e3);y(this,"vDom");y(this,"eventTragetElement");y(this,"canvasContainerRef",M.createRef());y(this,"subLocalCanvasContainerRef",M.createRef());y(this,"canvasTopRef",M.createRef());y(this,"canvasServiceFloatRef",M.createRef());y(this,"canvasFloatRef",M.createRef());y(this,"canvasBgRef",M.createRef());y(this,"floatBarRef",M.createRef());y(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){let e=et();if(this.canvasBgRef.current&&(e=et(this.canvasBgRef.current.getContext("2d"))),e!==this.dpr&&(this.dpr=e,this.control.worker.updateDpr(this.viewId,this.dpr)),this.canvasContainerRef.current){const t=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;t&&i&&(t!==this.width||i!==this.height)&&(this.width=t,this.height=i,this.canvasContainerRef.current.style.width=`${t}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){const t=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;t&&i&&(t!==this.width||i!==this.height)&&(this.width=t,this.height=i,this.canvasBgRef.current.width=t*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=t*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=t*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=t*this.dpr,this.canvasTopRef.current.height=i*this.dpr))}}}createAppViewDisplayer(e,t){const i=document.createElement("div");return i.className="appliance-plugin-app-view-displayer",t.appendChild(i),this.eventTragetElement=t.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),as.render(M.createElement(ai,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),i),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Ue extends Tt{constructor(e){super(e);y(this,"focuedViewId");y(this,"focuedView");y(this,"control");y(this,"tmpFocusedViewId");y(this,"checkScaleTimer");y(this,"onMainViewRelease",async e=>{this.control.textEditorManager.clear(pe,!0),this.mainViewDestroy(e),await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),this.onMainViewMounted(e);const t=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(t),this.control.clearSnapshootData()});y(this,"mainViewDestroy",e=>{var t;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const i=e.divElement;if(i){const o=i.getElementsByClassName("appliance-plugin-main-view-displayer");for(const n of o)n.remove()}if(this.mainView.container&&i!==this.mainView.container){const o=this.mainView.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const n of o)n.remove()}(t=this.control.worker)==null||t.destroyViewWorker(this.mainView.id,!0),this.mainView.displayer.destroy(),this.mainView=void 0}});y(this,"onMainViewMounted",e=>{const t=e.divElement;if(!t||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const o=new uw(this.control,Te.InternalMsgEmitter),n=e.size.width||o.width,r=e.size.height||o.height,l={dpr:o.dpr,originalPoint:[n/2,r/2],offscreenCanvasOpt:{...Ue.defaultScreenCanvasOpt,width:n,height:r},layerOpt:{...Ue.defaultLayerOpt,width:n,height:r},cameraOpt:{...Ue.defaultCameraOpt,width:n,height:r}},{scale:u,...h}=e.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u},this.focuedViewId=pe,this.createMianView({id:pe,container:t,displayer:o,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.focuedView=this.mainView,o.createMainViewDisplayer(t),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});y(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData&&this.updateMainViewCamera()});y(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.updateMainViewCamera()});y(this,"updateMainViewCamera",()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera,t=this.mainView.cameraOpt;if(t){const i=t.width,o=t.height,{width:n,height:r}=this.mainView.viewData.size;(n!==i||r!==o)&&this.mainView.displayer.updateSize();const c=e.scale===1/0?1:e.scale,l=e.centerX||0,u=e.centerY||0,h={...t,scale:c,centerX:l,centerY:u,width:n,height:r};j.isEqual(t,h)||(this.mainView.cameraOpt=h),this.checkScaleTimer&&e.scale==1/0&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),!this.checkScaleTimer&&e.scale===1/0&&this.mainView.viewData&&this.mainView.viewData.camera.scale===1/0&&(this.checkScaleTimer=setTimeout(()=>{var d,f;(f=(d=this.mainView)==null?void 0:d.viewData)==null||f.moveCamera({scale:c,centerX:l,centerY:u,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});y(this,"onAppViewMounted",async e=>{var d;const{appId:t,view:i}=e,o=i.divElement;if(!o||!i.focusScenePath)return;const n=this.appViews.get(t);if(n&&n.displayer){let f=o.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of f)g.remove();if(n.container&&n.container!==o){f=n.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of f)g.remove()}this.destroyAppView(e.appId,!0),(d=this.control.worker)==null||d.destroyViewWorker(t,!0),await new Promise(g=>{setTimeout(()=>{g(!0)},0)})}const r=new dw(t,this.control,Te.InternalMsgEmitter),c=i.size.width||r.width,l=i.size.height||r.height,h={dpr:r.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...Ue.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...Ue.defaultLayerOpt,width:c,height:l},cameraOpt:{...Ue.defaultCameraOpt,...i.camera,width:c,height:l}};if(this.createAppView({id:t,container:o,displayer:r,cameraOpt:h.cameraOpt,focusScenePath:i.focusScenePath,viewData:i}),r.createAppViewDisplayer(t,o),i.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,t)),i.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,t)),i.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===t){const f=this.control.worker.getLocalWorkViewId();f&&f!==t?this.setFocuedViewId(f):this.setFocuedViewId(t),this.tmpFocusedViewId=void 0}setTimeout(()=>{this.onAppViewCameraUpdated(t)},0)});y(this,"onAppViewSizeUpdated",async e=>{await new Promise(i=>{setTimeout(()=>{i(!0)},0)});const t=this.appViews.get(e);t&&t.viewData&&this.updateAppCamera(e)});y(this,"onAppViewCameraUpdated",async e=>{await new Promise(t=>{setTimeout(()=>{t(!0)},0)}),this.updateAppCamera(e)});y(this,"updateAppCamera",e=>{const t=this.appViews.get(e);if(t&&t.viewData){const i=t.viewData.camera,o=t.cameraOpt;if(o){const{width:n,height:r}=t.viewData.size,c=o.width,l=o.height;(n!==c||r!==l)&&t.displayer.updateSize();const u=i.scale===1/0?1:i.scale,h=i.centerX||0,d=i.centerY||0,f={...o,scale:u,centerX:h,centerY:d,width:n,height:r};j.isEqual(f,o)||(t.cameraOpt=f)}}});this.control=e.control}getViewInitData(e){var i;const t=this.getView(e);if(t){const{width:o,height:n,dpr:r}=t.displayer;(i=this.control.pluginOptions.canvasOpt)!=null&&i.contextType&&(Ue.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.canvasOpt.contextType);const c={dpr:r,originalPoint:[o/2,n/2],offscreenCanvasOpt:{...Ue.defaultScreenCanvasOpt,width:o,height:n},layerOpt:{...Ue.defaultLayerOpt,width:o,height:n},cameraOpt:{...Ue.defaultCameraOpt,width:o,height:n}};if(t.viewData){const{scale:l,...u}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...u,scale:l===1/0?1:l}}return c}}async mountView(e){var i,o;const t=this.getView(e);if(t){e===((i=this.mainView)==null?void 0:i.id)&&(this.control.cursor.activeCollector(),await this.control.activeWorker());const n=this.getViewInitData(e);if(n&&((o=this.control.worker)==null||o.createViewWorker(e,n)),t.focusScenePath&&this.control.collector){if(this.control.collector.authStorage){const{renderAuth:r,pageAuth:c}=this.control.collector.authStorage;if(r){const l=r[e];if(l){const{render:u,hide:h,clear:d}=l;this.control.renderControl.syncRenderUids(e,u,h,d);return}}if(c){const l=c[e];if(l){this.control.renderControl.syncPageAuth(e,l,!0);return}}}this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1})}}}listenerWindowManager(e){e.emitter.on("focusedChange",t=>{const i=t||pe;if(this.focuedViewId!==i)if(this.getView(i)){const n=this.control.worker.getLocalWorkViewId();n&&n!==i?this.setFocuedViewId(n):this.setFocuedViewId(i)}else this.tmpFocusedViewId=i}),e.emitter.on("mainViewScenePathChange",t=>{this.control.onSceneChange(t,pe)}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",t=>{this.appViews.get(t.appId)&&(this.destroyAppView(t.appId),this.control.worker.destroyViewWorker(t.appId))}),e.emitter.on("onAppScenePathChange",t=>{const{appId:i,view:o}=t;this.control.onSceneChange(o.focusScenePath,i)}),e.emitter.on("appsChange",t=>{for(const i of this.appViews.keys())t.includes(i)||(this.destroyAppView(i),this.control.worker.destroyViewWorker(i,!0))})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class tt extends Te{constructor(e){super(e);y(this,"windowManager");y(this,"viewContainerManager");const t={control:this,internalMsgEmitter:Te.InternalMsgEmitter,publicMsgEmitter:Te.PublicMsgEmitter};this.viewContainerManager=new Ue(t)}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,t)=>{e&&Object.keys(e).forEach(i=>{var n;const o=(n=e[i])==null?void 0:n.newValue;this.renderControl.syncRenderUids(i,o==null?void 0:o.render,o==null?void 0:o.hide,o==null?void 0:o.clear)}),t&&Object.keys(t).forEach(i=>{var n;const o=(n=t[i])==null?void 0:n.newValue;this.renderControl.syncPageAuth(i,o)})}),this.collector.addStorageStateListener(e=>{var r,c;if((r=this.collector)!=null&&r.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(pe,!0);return}const{diffView:t,diffScenePath:i,diffData:o}=e,n=new Map;if(t){let l;Object.keys(t).forEach(u=>{var d;const h=t[u];if(h&&!h.newValue)(d=this.worker)==null||d.clearViewScenePath(u,!0),h.oldValue&&(l=h.oldValue);else if(h&&h.newValue){for(const f of Object.keys(h.newValue))this.worker.pullServiceData(u,f,{isAsync:!1,useAnimation:!1});l=h.newValue}if(l)for(const f of Object.values(l)){const g=new Set;for(const p of Object.keys(f))p&&g.add(p);n.set(u,g)}})}if(i){let l;Object.keys(i).forEach(u=>{var d;const h=i[u];if(h&&h.viewId&&!h.newValue?((d=this.worker)==null||d.clearViewScenePath(h.viewId,!0),h.oldValue&&(l=h.oldValue)):h&&h.viewId&&h.newValue&&(this.worker.pullServiceData(h.viewId,u,{isAsync:!1,useAnimation:!1}),l=h.newValue),h!=null&&h.viewId&&l){const f=new Set;for(const g of Object.keys(l))g&&f.add(g),n.set(h.viewId,f)}})}o&&Object.keys(o).forEach(l=>{var h,d;const u=o[l];if(u){const{viewId:f}=u,g=n.get(f)||new Set;g.add(l),n.set(f,g),(h=this.worker)==null||h.onServiceDerive(l,u),(d=this.miniMapManager)==null||d.updateMiniMapCamera(f)}});for(const[l,u]of n.entries())Te.InternalMsgEmitter.emit("excludeIds",[...u],l)}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var t,i;if((t=this.collector)!=null&&t.serviceStorage){const o=[];this.viewContainerManager.getAllViews().forEach(n=>{var r;if(n&&n.focusScenePath&&((r=this.collector)!=null&&r.serviceStorage[n.id])&&this.collector.serviceStorage[n.id][n.focusScenePath]){const c=Object.keys(this.collector.serviceStorage[n.id][n.focusScenePath]).filter(l=>{var u;return(u=this.collector)==null?void 0:u.isSelector(l)}).map(l=>({viewId:n.id,scenePath:n.focusScenePath,key:l}));c.length&&o.push(...c)}}),o.forEach(({key:n,viewId:r,scenePath:c})=>{var u,h;const l=(u=this.collector)==null?void 0:u.getUidFromKey(n);l&&!e.online.includes(l)&&(this.renderControl.isWritable&&((h=this.collector)==null||h.updateValue(n,void 0,{viewId:r,scenePath:c,isSync:!0})),this.worker.blurSelector(r,c,n))})}(i=this.cursor)==null||i.updateRoomMembers(e)}))}async activeWorker(){await this.worker.init()}setWindowManager(e){var t,i,o,n,r;this.windowManager=e,(i=(t=this.windowManager)==null?void 0:t.mainView)!=null&&i.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(r=(n=(o=this.windowManager.appManager)==null?void 0:o.viewManager)==null?void 0:n.views)!=null&&r.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const U=class U extends X.InvisiblePlugin{constructor(){super(...arguments);y(this,"onPhaseChanged",e=>{var t;e===X.RoomPhase.Reconnecting&&((t=U.currentManager)==null||t.setSnapshootData())});y(this,"updateRoomWritable",()=>{var e;(e=U.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});y(this,"roomStateChangeListener",async e=>{var t,i;e!=null&&e.roomMembers&&((t=U.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(X.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((i=U.currentManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,t){!t.options.cdn.fullWorkerUrl&&!t.options.cdn.subWorkerUrl&&U.logger.error("[ApplianceMultiPlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl");const i=e.displayer,o=i.callbacks.on,n=i.callbacks.off,r=i.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState;let u;X.isRoom(i)&&(u=i.setWritable),t!=null&&t.logger&&(U.logger=t.logger),t.options&&(U.options={...Se,...t.options});let h=i.getInvisiblePlugin(U.kind);h||(h=await U.createApplianceMultiPlugin(i,U.kind)),i&&h&&U.createCurrentManager(e,U.options,h),h&&U.currentManager&&(U.currentManager.bindPlugin(h),h.init(i));const d={displayer:i,windowManager:e,currentManager:U.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(p){var v;U.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const m=(e.mainView||i).getBoundingRect(p),N=await((v=U.currentManager)==null?void 0:v.getBoundingRect(p));return!m.width||!m.height?N:ii(m,N)},screenshotToCanvasAsync:async function(p,m,N,v,I,k){var E;U.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let w=N,S=v,b=I.scale;w>this.maxScreenshotWidth&&(b=this.maxScreenshotWidth/w*b,w=this.maxScreenshotWidth),S>this.maxScreenshotHeight&&(b=Math.min(this.maxScreenshotHeight/S*b,b),S=this.maxScreenshotHeight),I.scale=b;const x=document.createElement("canvas"),P=x.getContext("2d");x.width=w*(k||1),x.height=S*(k||1),P&&((e.mainView||i).screenshotToCanvas(P,m,w,S,I,k),p.drawImage(x,Math.floor((N-w)/2),Math.floor((v-S)/2),w*(k||1),S*(k||1),0,0,w,S),x.remove()),U.currentManager&&await((E=U.currentManager)==null?void 0:E.screenshotToCanvas(p,m,w,S,I,Math.floor((N-w)/2),Math.floor((v-S)/2)))},scenePreviewAsync:async function(p,m,N,v,I){U.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||i).scenePreview(p,m,N,v,I);const k=document.createElement("img");k.className="appliance-plugin-fill-scene-snapshot-img",m.append(k),getComputedStyle(m).position||(m.style.position="relative"),U.currentManager&&await U.currentManager.scenePreview(p,k)},fillSceneSnapshotAsync:async function(p,m,N,v,I){U.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),m.innerHTML="",(e.mainView||i).fillSceneSnapshot(p,m,N,v,I);const k=N||e.mainView.size.width,w=v||e.mainView.size.height;let S=await this.getBoundingRectAsync(p);S||(S={originX:0,originY:0,width:k,height:w});let b=Math.max(S==null?void 0:S.width,k),x=Math.max(S==null?void 0:S.height,w),P=1;const E=b>k&&Math.min(k/b,P)||P,R=x>w&&Math.min(w/x,P)||P;E<=R?(b=E<1&&k||b,x=Math.floor(x*E)+1,P=E):E>R&&(x=R<1&&w||x,b=Math.floor(b*R)+1,P=R);const O={scale:P,centerX:S.originX+S.width/2,centerY:S.originY+S.height/2},D=document.createElement("canvas"),A=D.getContext("2d");D.width=b,D.height=x,A&&await this.screenshotToCanvasAsync(A,p,b,x,O,devicePixelRatio);const G=document.createElement("img");G.className="appliance-plugin-fill-scene-snapshot-img",G.src=D.toDataURL(),G.onload=()=>{D.remove()},G.onerror=()=>{D.remove(),G.remove()},m.append(G),getComputedStyle(m).position||(m.style.position="relative")},_callbacksOn:function(p,m){U.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?tt.InternalMsgEmitter.on(p,m):o.call(i.callbacks,p,m)},_callbacksOnce:function(p,m){U.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?tt.InternalMsgEmitter.on(p,m):r.call(i.callbacks,p,m)},_callbacksOff:function(p,m){U.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?tt.InternalMsgEmitter.off(p,m):n.call(i.callbacks,p,m)},canRedoSteps(){if(U.logger.info("[ApplianceMultiPlugin] canRedoSteps"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization){const p=U.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.redoStack.filter(N=>N.scenePath===m).length}return 0},canUndoSteps(){if(U.logger.info("[ApplianceMultiPlugin] canUndoSteps"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization){const p=U.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.undoStack.filter(N=>N.scenePath===m).length}return 0},undo:function(){return U.logger.info("[ApplianceMultiPlugin] undo"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization?U.currentManager.viewContainerManager.undo():0},redo:function(){return U.logger.info("[ApplianceMultiPlugin] redo"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization?U.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){U.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),U.currentManager&&X.isRoom(i)&&i.isWritable&&(U.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(p){U.logger.info("[ApplianceMultiPlugin] insertImage"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.insertImage(pe,p)},lockImage:function(p,m){U.logger.info("[ApplianceMultiPlugin] lockImage"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.lockImage(pe,p,m)},completeImageUpload:function(p,m){U.logger.info("[ApplianceMultiPlugin] completeImageUpload"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.completeImageUpload(pe,p,m)},getImagesInformation:function(p){return U.logger.info("[ApplianceMultiPlugin] completeImageUpload"),U.currentManager&&X.isRoom(i)&&i.isWritable?U.currentManager.worker.getImagesInformation(p):[]},callbacks:()=>(U.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...i.callbacks,on:d._callbacksOn.bind(d),once:d._callbacksOnce.bind(d),off:d._callbacksOff.bind(d)}),destroy(){U.currentManager&&(U.logger.info("[ApplianceMultiPlugin] destroy"),U.currentManager.destroy(),U.currentManager=void 0)},setMemberState(p){U.logger.info(`[ApplianceMultiPlugin] setMemberState ${JSON.stringify(p)}`);const m=Object.keys(p);if(X.isRoom(i)&&i.isWritable){m.includes("currentApplianceName")&&(p.currentApplianceName&&p.currentApplianceName===re.laserPen?(p.currentApplianceName=re.pencil,p.useLaserPen=!0):p.currentApplianceName&&p.currentApplianceName===re.pencil&&(p.useLaserPen=!1)),l.call(e.mainView,p);return}throw new Error("[ApplianceMultiPlugin] setMemberState must be called in writable room")},setPerformancePriority(p){U.logger.info("[ApplianceMultiPlugin] setPriority"),U.currentManager&&U.currentManager.setPriority(p)},createMiniMap:async function(p,m){if(U.logger.info("[ApplianceMultiPlugin] createMiniMap"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.createMiniMap(p,m)},destroyMiniMap:async function(p){if(U.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.destroyMiniMap(p)},filterRenderByUid(p,m,N){if(U.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.filterRenderByUid(p,m,N)},cancelFilterRender(p,m){if(U.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.cancelFilterRender(p,m)},addListener:(p,m)=>{U.logger.info(`[ApplianceMultiPlugin] addListener ${p}`),tt.PublicMsgEmitter.on(p,m)},removeListener:(p,m)=>{U.logger.info(`[ApplianceMultiPlugin] removeListener ${p}`),tt.PublicMsgEmitter.off(p,m)},usePlugin:p=>{var m;U.logger.info("[ApplianceMultiPlugin] usePlugin"),(m=U.currentManager)==null||m.usePlugin(p)},getDisableDeviceInputs(){if(U.logger.info("[ApplianceMultiPlugin] getDisableDeviceInputs"),U.currentManager&&X.isRoom(i))return U.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){U.logger.info("[ApplianceMultiPlugin] setDisableDeviceInputs"),U.currentManager&&X.isRoom(i)&&(U.currentManager.disableDeviceInputs=p)},getDisableEraseImage(){if(U.logger.info("[ApplianceMultiPlugin] getDisableEraseImage"),U.currentManager&&X.isRoom(i))return U.currentManager.disableEraseImage},setDisableEraseImage(p){U.logger.info("[ApplianceMultiPlugin] setDisableEraseImage"),U.currentManager&&X.isRoom(i)&&(U.currentManager.disableEraseImage=p)},setWritable:async function(p){var m;U.logger.info(`[ApplianceMultiPlugin] setWritable ${p}`),X.isRoom(i)&&u&&(await((m=U.currentManager)==null?void 0:m.setWritable(p)),await u.call(i,p))}},f=(p,m)=>{if(U.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${m}`),typeof p[m]=="function"||typeof p[m]>"u"){p[m]=d[m];return}m==="callbacks"&&(p.callbacks.on=d._callbacksOn.bind(d),p.callbacks.off=d._callbacksOff.bind(d),p.callbacks.once=d._callbacksOnce.bind(d))};f(e,"undo"),f(e,"redo"),f(e,"cleanCurrentScene"),f(e,"insertImage"),f(e,"completeImageUpload"),f(e,"lockImage"),f(i,"getImagesInformation"),f(i,"callbacks"),f(i,"screenshotToCanvasAsync"),f(i,"getBoundingRectAsync"),f(i,"scenePreviewAsync"),f(i,"fillSceneSnapshotAsync"),f(e.mainView,"setMemberState"),X.isRoom(i)&&f(i,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return d.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return d.canRedoSteps()}}),tt.InternalMsgEmitter.on("onCanUndoStepsUpdate",p=>{e.emitter.emit("canUndoStepsChange",p)}),tt.InternalMsgEmitter.on("onCanRedoStepsUpdate",p=>{e.emitter.emit("canRedoStepsChange",p)});const g={...d,callbacks:d.callbacks()};return Object.defineProperty(g,"disableDeviceInputs",{set(p){d.setDisableDeviceInputs(p)},get(){return d.getDisableDeviceInputs()}}),Object.defineProperty(g,"disableEraseImage",{set(p){d.setDisableEraseImage(p)},get(){return d.getDisableEraseImage()}}),e._appliancePlugin=g,e._appliancePlugin}static onCreate(e){e&&U.currentManager&&(U.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,t){try{await e.createInvisiblePlugin(U,{})}catch{if(!e.isWritable){await e.setWritable(!0);const n=await this.createApplianceMultiPlugin(e,t);return await e.setWritable(!1),n}}let i=e.getInvisiblePlugin(t);return i||(i=await U.createApplianceMultiPlugin(e,t)),i}get isReplay(){return X.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;const t=e.state;(i=U.currentManager)==null||i.onRoomMembersChange(t.roomMembers),X.isRoom(e)&&((o=U.currentManager)==null||o.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;U.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=U.currentManager)==null||e.destroy(),U.currentManager=void 0}};y(U,"kind","appliance-multi-plugin"),y(U,"currentManager"),y(U,"logger",{info:console.log,warn:console.warn,error:console.error}),y(U,"options",Se),y(U,"createCurrentManager",(e,t,i)=>{U.currentManager&&U.currentManager.destroy();const o={plugin:i,displayer:e.displayer,options:t},n=new tt(o);U.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),n.setWindowManager(e),U.currentManager=n,e.room&&e.room.logger.info(`[ApplianceMultiPlugin] use ${Ks}`)});let Rs=U;class pw extends sn{constructor(e,t){super(e,t);y(this,"width",1e3);y(this,"height",1e3);y(this,"dpr",et());y(this,"vDom");y(this,"viewId",pe);y(this,"eventTragetElement");y(this,"snapshotContainerRef");y(this,"canvasContainerRef",M.createRef());y(this,"subLocalCanvasContainerRef",M.createRef());y(this,"canvasTopRef",M.createRef());y(this,"canvasServiceFloatRef",M.createRef());y(this,"canvasFloatRef",M.createRef());y(this,"canvasBgRef",M.createRef());y(this,"floatBarRef",M.createRef());y(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=M.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,t=this.eventTragetElement.offsetHeight;let i=et();this.canvasBgRef.current&&(i=et(this.canvasBgRef.current.getContext("2d"))),i!==this.dpr&&(this.dpr=i,this.control.worker.updateDpr(this.viewId,this.dpr)),e&&t&&this.canvasContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t),e&&t&&this.canvasBgRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=t*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=t*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=t*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=t*this.dpr))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",as.render(M.createElement(ai,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Ke extends Tt{constructor(e){super(e);y(this,"focuedViewId");y(this,"control");y(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new pw(this.control,Te.InternalMsgEmitter);this.focuedViewId=pe;const{width:t,height:i,dpr:o}=e,n={dpr:o,originalPoint:[t/2,i/2],offscreenCanvasOpt:{...Ke.defaultScreenCanvasOpt,width:t,height:i},layerOpt:{...Ke.defaultLayerOpt,width:t,height:i},cameraOpt:{...Ke.defaultCameraOpt,width:t,height:i}},r=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(r){const{scale:c,...l}=r.camera;n.cameraOpt={...n.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:pe,displayer:e,focusScenePath:r.focusScenePath||r.scenePath,cameraOpt:n.cameraOpt,viewData:r}),this.focuedView=this.mainView,e.createMainViewDisplayer(this.control.divMainView)}}getViewInitData(e){var i;const t=this.getView(e);if(t){const{width:o,height:n,dpr:r}=t.displayer;(i=this.control.pluginOptions.canvasOpt)!=null&&i.contextType&&(Ke.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.canvasOpt.contextType);const c={dpr:r,originalPoint:[o/2,n/2],offscreenCanvasOpt:{...Ke.defaultScreenCanvasOpt,width:o,height:n},layerOpt:{...Ke.defaultLayerOpt,width:o,height:n},cameraOpt:{...Ke.defaultCameraOpt,width:o,height:n}};if(t.viewData){const{scale:l,...u}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...u,scale:l===1/0?1:l}}return c}}async mountView(e){var i;const t=this.getView(e);if(t){this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.activeWorker());const o=this.getViewInitData(e);o&&((i=this.control.worker)==null||i.createViewWorker(e,o)),t.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1})}}}class Be extends Te{constructor(e){super(e);y(this,"viewContainerManager");y(this,"divMainView");y(this,"onCameraChange",Ms(e=>{var i;const t=this.viewContainerManager.mainView;t&&t.cameraOpt&&(t.cameraOpt.width!==e.width||t.cameraOpt.height!==e.height)&&((i=this.viewContainerManager.mainView)==null||i.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},ys,{leading:!1}));const t={control:this,internalMsgEmitter:Be.InternalMsgEmitter,publicMsgEmitter:Be.PublicMsgEmitter};this.viewContainerManager=new Ke(t)}init(){Be.InternalMsgEmitter.on(se.BindMainView,e=>{this.divMainView=e,this.plugin&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView()})}activePlugin(){this.plugin&&this.divMainView&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView(),this.collector&&(this.collector.addStorageStateListener(e=>{var r,c;if((r=this.collector)!=null&&r.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(pe,!0);return}const{diffView:t,diffScenePath:i,diffData:o}=e,n=new Map;if(t){let l;Object.keys(t).forEach(u=>{var d;const h=t[u];if(h&&!h.newValue)(d=this.worker)==null||d.clearViewScenePath(u,!0),h.oldValue&&(l=h.oldValue);else if(h&&h.newValue){for(const f of Object.keys(h.newValue))this.worker.pullServiceData(u,f,{isAsync:!1,useAnimation:!0});l=h.newValue}if(l)for(const f of Object.values(l)){const g=new Set;for(const p of Object.keys(f))p&&g.add(p);n.set(u,g)}})}if(i){let l;Object.keys(i).forEach(u=>{var d;const h=i[u];if(h&&h.viewId&&!h.newValue?((d=this.worker)==null||d.clearViewScenePath(h.viewId,!0),h.oldValue&&(l=h.oldValue)):h&&h.viewId&&h.newValue&&(this.worker.pullServiceData(h.viewId,u,{isAsync:!1,useAnimation:!0}),l=h.newValue),h!=null&&h.viewId&&l){const f=new Set;for(const g of Object.keys(l))g&&f.add(g),n.set(h.viewId,f)}})}o&&Object.keys(o).forEach(l=>{var h,d;const u=o[l];if(u){const{viewId:f}=u,g=n.get(f)||new Set;g.add(l),n.set(f,g),(h=this.worker)==null||h.onServiceDerive(l,u),(d=this.miniMapManager)==null||d.updateMiniMapCamera(f)}});for(const[l,u]of n.entries())Te.InternalMsgEmitter.emit("excludeIds",[...u],l)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var t,i,o,n;if((t=this.collector)!=null&&t.serviceStorage){const r=[];this.viewContainerManager.getAllViews().forEach(c=>{var l,u,h;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&((u=this.collector)!=null&&u.serviceStorage[c.id][c.focusScenePath])){const d=Object.keys((h=this.collector)==null?void 0:h.serviceStorage[c.id][c.focusScenePath]).filter(f=>{var g;return(g=this.collector)==null?void 0:g.isSelector(f)}).map(f=>({viewId:c.id,scenePath:c.focusScenePath,key:f}));d.length&&r.push(...d)}}),r.forEach(({key:c,viewId:l,scenePath:u})=>{var d,f;const h=(d=this.collector)==null?void 0:d.getUidFromKey(c);h&&!e.online.includes(h)&&(this.renderControl.isWritable&&((f=this.collector)==null||f.updateValue(c,void 0,{viewId:l,scenePath:u,isSync:!0})),this.worker.blurSelector(l,u,c))})}(o=(i=this.cursor)==null?void 0:i.eventCollector)!=null&&o.serviceStorage&&Object.keys((n=this.cursor)==null?void 0:n.eventCollector.serviceStorage).forEach(c=>{var l,u;e.online.includes(c)||(u=(l=this.cursor)==null?void 0:l.eventCollector)==null||u.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.worker.init()}}const W=class W extends X.InvisiblePlugin{constructor(){super(...arguments);y(this,"onPhaseChanged",e=>{var t;e===X.RoomPhase.Reconnecting&&((t=W.currentManager)==null||t.setSnapshootData())});y(this,"updateRoomWritable",()=>{var e;(e=W.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});y(this,"roomStateChangeListener",async e=>{var t,i;W.currentManager instanceof Be&&(e.cameraState&&W.currentManager.onCameraChange(e.cameraState),e.sceneState&&W.currentManager.onSceneChange(e.sceneState.scenePath,pe)),e!=null&&e.roomMembers&&((t=W.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(X.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((i=W.currentManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,t){const i=e.callbacks.on,o=e.callbacks.off,n=e.callbacks.once,r=e.cleanCurrentScene.bind(e),c=e.setMemberState.bind(e);let l;X.isRoom(e)&&(l=e.setWritable),t!=null&&t.logger&&(W.logger=t.logger),t.options&&(W.options={...Se,...t.options});let u=e.getInvisiblePlugin(W.kind);u||(u=await W.createAppliancePlugin(e,W.kind)),e&&u&&W.createCurrentManager(e,W.options,u),u&&W.currentManager&&(W.currentManager.bindPlugin(u),u.init(e)),t!=null&&t.cursorAdapter&&(W.cursorAdapter=t.cursorAdapter),W.effectInstance();const h={displayer:e,currentManager:W.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var N;W.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const p=e.getBoundingRect(g),m=await((N=W.currentManager)==null?void 0:N.getBoundingRect(g));return!p.width||!p.height?m:ii(p,m)},screenshotToCanvasAsync:async function(g,p,m,N,v,I){var P;W.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let k=m,w=N,S=v.scale;k>this.maxScreenshotWidth&&(S=this.maxScreenshotWidth/k*S,k=this.maxScreenshotWidth),w>this.maxScreenshotHeight&&(S=Math.min(this.maxScreenshotHeight/w*S,S),w=this.maxScreenshotHeight),v.scale=S;const b=document.createElement("canvas"),x=b.getContext("2d");b.width=k*(I||1),b.height=w*(I||1),x&&(e.screenshotToCanvas(x,p,k,w,v,I),g.drawImage(b,Math.floor((m-k)/2),Math.floor((N-w)/2),k*(I||1),w*(I||1),0,0,k,w),b.remove()),W.currentManager&&await((P=W.currentManager)==null?void 0:P.screenshotToCanvas(g,p,k,w,v,Math.floor((m-k)/2),Math.floor((N-w)/2)))},scenePreviewAsync:async function(g,p,m,N,v){W.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(g,p,m,N,v);const I=document.createElement("img");I.className="appliance-plugin-fill-scene-snapshot-img",p.append(I),getComputedStyle(p).position||(p.style.position="relative"),W.currentManager&&await W.currentManager.scenePreview(g,I)},fillSceneSnapshotAsync:async function(g,p,m,N,v){var G,ne;W.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),p.innerHTML="",e.fillSceneSnapshot(g,p,m,N,v);const I=m||((G=e.state.cameraState)==null?void 0:G.width)||0,k=N||((ne=e.state.cameraState)==null?void 0:ne.height)||0;let w=await this.getBoundingRectAsync(g);w||(w={originX:0,originY:0,width:I,height:k});let S=Math.max(w==null?void 0:w.width,I),b=Math.max(w==null?void 0:w.height,k),x=1;const P=S>I&&Math.min(I/S,x)||x,E=b>k&&Math.min(k/b,x)||x;P<=E?(S=P<1&&I||S,b=Math.floor(b*P)+1,x=P):P>E&&(b=E<1&&k||b,S=Math.floor(S*E)+1,x=E);const R={scale:x,centerX:w.originX+w.width/2,centerY:w.originY+w.height/2},O=document.createElement("canvas"),D=O.getContext("2d");O.width=S,O.height=b,D&&await this.screenshotToCanvasAsync(D,g,S,b,R,devicePixelRatio);const A=document.createElement("img");A.className="appliance-plugin-fill-scene-snapshot-img",A.src=O.toDataURL(),A.onload=()=>{O.remove()},A.onerror=()=>{O.remove(),A.remove()},p.append(A),getComputedStyle(p).position||(p.style.position="relative")},_callbacksOn:function(g,p){W.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Be.InternalMsgEmitter.on(g,p):i.call(e.callbacks,g,p)},_callbacksOnce:function(g,p){W.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Be.InternalMsgEmitter.on(g,p):n.call(e.callbacks,g,p)},_callbacksOff:function(g,p){W.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Be.InternalMsgEmitter.off(g,p):o.call(e.callbacks,g,p)},canRedoSteps(){if(W.logger.info("[ApplianceSinglePlugin] canRedoSteps"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization){const g=W.currentManager.viewContainerManager.focuedView,p=g==null?void 0:g.focusScenePath;if(g&&p)return g.displayer.commiter.redoStack.filter(m=>m.scenePath===p).length}return 0},canUndoSteps(){if(W.logger.info("[ApplianceSinglePlugin] canUndoSteps"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization){const g=W.currentManager.viewContainerManager.focuedView,p=g==null?void 0:g.focusScenePath;if(g&&p)return g.displayer.commiter.undoStack.filter(m=>m.scenePath===p).length}return 0},undo:function(){return W.logger.info("[ApplianceSinglePlugin] undo"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization?W.currentManager.viewContainerManager.undo():0},redo:function(){return W.logger.info("[ApplianceSinglePlugin] redo"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization?W.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(g){W.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),W.currentManager&&X.isRoom(e)&&e.isWritable&&(W.currentManager.cleanCurrentScene(),r.call(e,g))},insertImage:function(g){W.logger.info("[ApplianceSinglePlugin] insertImage"),W.currentManager&&X.isRoom(e)&&e.isWritable&&W.currentManager.worker.insertImage(pe,g)},lockImage:function(g,p){W.logger.info("[ApplianceSinglePlugin] lockImage"),W.currentManager&&X.isRoom(e)&&e.isWritable&&W.currentManager.worker.lockImage(pe,g,p)},completeImageUpload:function(g,p){W.logger.info("[ApplianceSinglePlugin] completeImageUpload"),W.currentManager&&X.isRoom(e)&&e.isWritable&&W.currentManager.worker.completeImageUpload(pe,g,p)},getImagesInformation:function(g){return W.logger.info("[ApplianceSinglePlugin] completeImageUpload"),W.currentManager&&X.isRoom(e)&&e.isWritable?W.currentManager.worker.getImagesInformation(g):[]},callbacks:()=>({...e.callbacks,on:h._callbacksOn.bind(h),once:h._callbacksOnce.bind(h),off:h._callbacksOff.bind(h)}),destroy(){W.currentManager&&(W.logger.info("[ApplianceSinglePlugin] destroy"),W.currentManager.destroy(),W.currentManager=void 0,W.cursorAdapter=void 0)},setMemberState(g){W.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(g)}`);const p=Object.keys(g);if(X.isRoom(e)&&e.isWritable){p.includes("currentApplianceName")&&(g.currentApplianceName&&g.currentApplianceName===re.laserPen?(g.currentApplianceName=re.pencil,g.useLaserPen=!0):g.currentApplianceName&&g.currentApplianceName===re.pencil&&(g.useLaserPen=!1)),c(g);return}throw new Error("setMemberState must be called in writable room")},setPerformancePriority(g){W.logger.info("[ApplianceSinglePlugin] setPriority"),W.currentManager&&W.currentManager.setPriority(g)},createMiniMap:async function(g,p){if(W.logger.info("[ApplianceSinglePlugin] createMiniMap"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.createMiniMap(g,p)},destroyMiniMap:async function(g){if(W.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.destroyMiniMap(g)},filterRenderByUid(g,p,m){if(W.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.filterRenderByUid(g,p,m)},cancelFilterRender(g,p){if(W.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.cancelFilterRender(g,p)},addListener:(g,p)=>{W.logger.info(`[ApplianceSinglePlugin] addListener ${g}`),Be.PublicMsgEmitter.on(g,p)},removeListener:(g,p)=>{W.logger.info(`[ApplianceSinglePlugin] removeListener ${g}`),Be.PublicMsgEmitter.off(g,p)},usePlugin:g=>{var p;W.logger.info("[ApplianceSinglePlugin] usePlugin"),(p=W.currentManager)==null||p.usePlugin(g)},getDisableDeviceInputs(){if(W.logger.info("[ApplianceSinglePlugin] getDisableDeviceInputs"),W.currentManager&&X.isRoom(e))return W.currentManager.disableDeviceInputs},setDisableDeviceInputs(g){W.logger.info("[ApplianceSinglePlugin] setDisableDeviceInputs"),W.currentManager&&X.isRoom(e)&&(W.currentManager.disableDeviceInputs=g)},getDisableEraseImage(){if(W.logger.info("[ApplianceSinglePlugin] getDisableEraseImage"),W.currentManager&&X.isRoom(e))return W.currentManager.disableEraseImage},setDisableEraseImage(g){W.logger.info("[ApplianceSinglePlugin] setDisableEraseImage"),W.currentManager&&X.isRoom(e)&&(W.currentManager.disableEraseImage=g)},setWritable:async function(g){var p;W.logger.info(`[ApplianceSinglePlugin] setWritable ${g}`),X.isRoom(e)&&l&&(await((p=W.currentManager)==null?void 0:p.setWritable(g)),await l.call(e,g))}},d=(g,p)=>{if(W.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${p}`),typeof g[p]=="function"||typeof g[p]>"u"){g[p]=h[p];return}p==="callbacks"&&(g.callbacks.on=h._callbacksOn.bind(h),g.callbacks.off=h._callbacksOff.bind(h),g.callbacks.once=h._callbacksOnce.bind(h))};d(e,"undo"),d(e,"redo"),d(e,"cleanCurrentScene"),d(e,"insertImage"),d(e,"completeImageUpload"),d(e,"lockImage"),d(e,"getImagesInformation"),d(e,"callbacks"),d(e,"screenshotToCanvasAsync"),d(e,"getBoundingRectAsync"),d(e,"scenePreviewAsync"),d(e,"fillSceneSnapshotAsync"),d(e,"setMemberState"),X.isRoom(e)&&d(e,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return h.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return h.canRedoSteps()}});const f={...h,callbacks:h.callbacks()};return Object.defineProperty(f,"disableDeviceInputs",{set(g){h.setDisableDeviceInputs(g)},get(){return h.getDisableDeviceInputs()}}),Object.defineProperty(f,"disableEraseImage",{set(g){h.setDisableEraseImage(g)},get(){return h.getDisableEraseImage()}}),e._appliancePlugin=f,e._appliancePlugin}static onCreate(e){e&&W.currentManager&&(W.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,t){try{await e.createInvisiblePlugin(W,{})}catch{if(!e.isWritable){await e.setWritable(!0);const n=await this.createAppliancePlugin(e,t);return await e.setWritable(!1),n}}let i=e.getInvisiblePlugin(t);return i||(i=await W.createAppliancePlugin(e,t)),i}static effectInstance(){if(W.cursorAdapter){const e=W.cursorAdapter.onAddedCursor;W.cursorAdapter.onAddedCursor=function(t){t.onCursorMemberChanged=i=>{try{i.appliance===re.pencil||i.appliance===re.shape||i.appliance===re.text||i.appliance===re.arrow||i.appliance===re.straight||i.appliance===re.rectangle||i.appliance===re.ellipse||i.appliance===re.eraser?t!=null&&t.divElement&&(t.divElement.style.display="none"):t!=null&&t.divElement&&(t.divElement.style.display="block")}catch{}},e.call(W.cursorAdapter,t)}}}get isReplay(){return X.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;const t=e.state;(i=W.currentManager)==null||i.onRoomMembersChange(t.roomMembers),X.isRoom(e)&&t!=null&&t.memberState&&((o=W.currentManager)==null||o.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;W.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=W.currentManager)==null||e.destroy(),W.currentManager=void 0,W.cursorAdapter=void 0}};y(W,"kind","appliance-aids-single-plugin"),y(W,"cursorAdapter"),y(W,"currentManager"),y(W,"logger",{info:console.log,warn:console.warn,error:console.error}),y(W,"options",Se),y(W,"createCurrentManager",(e,t,i)=>{W.currentManager&&W.currentManager.destroy();const o={plugin:i,displayer:e,options:t},n=new Be(o);n.init(),W.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),W.currentManager=n,X.isRoom(e)&&e.logger.info(`[ApplianceSinglePlugin] use ${Ks}`)});let Ws=W;const St=class St extends M.Component{constructor(){super(...arguments);y(this,"mainViewRef",null)}componentDidMount(){St.emiter||(St.emiter=Be.InternalMsgEmitter),St.emiter.emit(se.BindMainView,this.mainViewRef)}render(){return M.createElement(M.Fragment,null,this.props.children,M.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};y(St,"emiter");let Ys=St;class fw extends en{constructor(e){super();y(this,"kind","autoDraw");y(this,"localStorage",[]);y(this,"excludeStorage",[]);y(this,"timer");y(this,"hostServer");y(this,"iconsContainer");y(this,"icons",[]);y(this,"iconRect");y(this,"isActive",!1);y(this,"viewId",pe);y(this,"scenePath");y(this,"delay",2e3);const{container:t,hostServer:i,delay:o}=e;this.hostServer=i,this.iconsContainer=t,this.delay=o||2e3}get collector(){return this.control.collector}onDestroy(){this.unMount()}onCreate(){}onSetToolkey(e){e===T.Pencil?this.isActive=!0:(this.isActive&&(this.localStorage.length=0,this.timer&&clearTimeout(this.timer),this.timer=void 0,this.iconRect&&(this.iconRect=void 0),this.icons.length=0),this.isActive=!1)}syncStorage(e,t){if(!this.isActive||e!==this.viewId)return;if(!t){this.localStorage.length=0;return}const i=this.getOwnStorage(this.viewId,t);this.localStorage=i.map(o=>{var n;return((n=this.collector)==null?void 0:n.getLocalId(o))||o})}getOwnStorage(e,t){var n,r;if(!e||!t)return[];const i=(r=(n=this.collector)==null?void 0:n.storage[e])==null?void 0:r[t];return i?Object.keys(i).filter(c=>{var l,u;return((l=this.collector)==null?void 0:l.isOwn(c))&&((u=i[c])==null?void 0:u.toolsType)===T.Pencil&&!this.excludeStorage.includes(c)}):[]}async batchLocalDraw(){var r;if(this.localStorage.length===0||!this.scenePath||!((r=this.collector)==null?void 0:r.getStorageData(this.viewId,this.scenePath)))return;const t=this.localStorage.toString(),i=await this.control.worker.getVNodeInfo(this.localStorage.toString(),this.viewId,this.localStorage);if(!i)return;const{vInfo:o,uuid:n}=i;if(n===t&&o){const c={rect:{centerX:0,centerY:0,width:0,height:0},ink:[]};let l;const u=[];for(const{rect:h,op:d}of o){l=le(l,h);const f=[],g=[];for(let p=0;p<d.length;p+=3){f.push(d[p]),g.push(d[p+1]);const m=u.length&&u[u.length-1]||0;p===0?u.length===0?u.push(0):u.push(m+100):u.push(m+15)}c.ink.push([f,g,u])}return l&&(c.rect.centerX=Math.floor(l.x+l.w/2),c.rect.centerY=Math.floor(l.y+l.h/2),c.rect.width=Math.floor(l.w),c.rect.height=Math.floor(l.h)),c}}async computAutoDraw(e){const{rect:t,ink:i}=e;this.iconRect=t;const o=await fetch(this.hostServer,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({width:t.width,height:t.height,ink:i})}).then(n=>n.json()).then(n=>n.data);this.icons=o||[]}buildHTML(){var i;this.iconsContainer.innerHTML="";const e=document.createElement("div");e.style.display="flex",e.style.overflow="auto",e.style.padding="10px 0";const t=((i=this.control.worker.currentToolsData)==null?void 0:i.toolsOpt.strokeColor)||"#7f7f7f";this.icons.forEach(o=>{const n=document.createElement("img");n.src=`https://api.iconify.design/${o}.svg?color=${t}`,n.onclick=()=>{this.onClickIcon(o)},n.onload=()=>{e.appendChild(n)}}),this.iconsContainer.appendChild(e)}onClickIcon(e){var t,i;if(this.iconRect){const o=this.control.viewContainerManager.transformToScenePoint([this.iconRect.centerX,this.iconRect.centerY],this.viewId),n=((i=(t=this.control.viewContainerManager.getView(this.viewId))==null?void 0:t.cameraOpt)==null?void 0:i.scale)||1;this.icons.length=0,this.iconsContainer.innerHTML="";const r=Date.now().toString();this.control.worker.removeNodes(this.viewId,this.localStorage),this.localStorage.length=0,this.control.insertIconify(this.viewId,{uuid:r,centerX:o[0],centerY:o[1],width:Math.floor(this.iconRect.width/n),height:Math.floor(this.iconRect.height/n),src:`https://api.iconify.design/${e}.svg`,uniformScale:!1,locked:!1}),this.iconRect=void 0}}sceneChange(e,t){e===this.viewId&&(this.scenePath=t,this.excludeStorage=this.getOwnStorage(e,t)),this.localStorage.length=0}localEvent(e,t){var i;if(e===this.viewId&&((i=this.control.worker.currentToolsData)==null?void 0:i.toolsType)===T.Pencil)switch(t){case z.Start:this.timer&&(clearTimeout(this.timer),this.timer=void 0);break;case z.Done:this.timer&&clearTimeout(this.timer),this.timer=setTimeout(async()=>{this.timer=void 0;const o=await this.batchLocalDraw();o&&(await this.computAutoDraw(o),this.buildHTML())},this.delay);break}}mount(){var t,i;this.scenePath=(t=this.control.viewContainerManager.getView(this.viewId))==null?void 0:t.focusScenePath,this.excludeStorage=this.getOwnStorage(this.viewId,this.scenePath);const e=(i=this.control.worker.currentToolsData)==null?void 0:i.toolsType;e&&this.onSetToolkey(e),this.callbacks("setToolkey",this.onSetToolkey.bind(this)),this.callbacks("syncStorage",this.syncStorage.bind(this)),this.callbacks("sceneChange",this.sceneChange.bind(this)),this.callbacks("localEvent",this.localEvent.bind(this))}unMount(){this.timer&&clearTimeout(this.timer),this.timer=void 0,this.iconRect&&(this.iconRect=void 0),this.icons.length=0,this.excludeStorage.length=0,this.localStorage.length=0,this.iconsContainer.innerHTML="",this.removeCallback("setToolkey"),this.removeCallback("syncStorage"),this.removeCallback("sceneChange"),this.removeCallback("localEvent")}}exports.ActiveContainerType=to;exports.ApplianceMultiPlugin=Rs;exports.ApplianceNames=re;exports.ApplianceSigleWrapper=Ys;exports.ApplianceSinglePlugin=Ws;exports.AutoDrawPlugin=fw;exports.Cursor_Hover_Id=Xf;exports.DefaultAppliancePluginOptions=Se;exports.ECanvasShowType=Me;exports.EDataType=B;exports.EImageType=dt;exports.EMatrixrRelationType=ut;exports.EOperationType=ze;exports.EPostMessageType=L;exports.ERenderFilterType=Ge;exports.EScaleType=ae;exports.EStrokeType=te;exports.EToolsKey=T;exports.ElayerType=Rt;exports.EmitEventType=F;exports.EventMessageType=Ot;exports.EvevtWorkState=z;exports.EvevtWorkType=so;exports.InternalMsgEmitterType=se;exports.Main_View_Id=pe;exports.Plugin=en;exports.ShapeType=He;exports.Storage_Selector_key=Q;exports.Storage_Splitter=je;exports.Storage_ViewId_ALL=Zt;exports.Task_Time_Interval=ys;exports.VNodeManager=Qo;exports.ViewContainerManager=Tt;exports.computRect=le;exports.fullWorker=hn;exports.getRectMatrixrRelation=ri;exports.getShapeInstance=gs;exports.isEqual=it;exports.isIntersectForPoint=Ko;exports.isNumber=De;exports.removeAllChildren=Oe;exports.removeTexture=Ee;exports.subWorker=un;exports.throttle=Ms;exports.transformToNormalData=nt;exports.transformToSerializableData=Ye;
1
+ "use strict";var an=Object.defineProperty;var cn=(a,s,e)=>s in a?an(a,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[s]=e;var y=(a,s,e)=>cn(a,typeof s!="symbol"?s+"":s,e);const X=require("white-web-sdk"),he=require("spritejs"),eo=require("lz-string"),Us=require("lineclip"),bs=require("eventemitter2"),j=require("lodash"),M=require("react"),as=require("react-dom"),kt=require("react-draggable"),ln=require("re-resizable"),hn="/fullWorker.js",un="/subWorker.js";var re=(a=>(a.selector="selector",a.clicker="clicker",a.laserPointer="laserPointer",a.pencil="pencil",a.rectangle="rectangle",a.ellipse="ellipse",a.shape="shape",a.eraser="eraser",a.pencilEraser="pencilEraser",a.text="text",a.straight="straight",a.arrow="arrow",a.hand="hand",a.laserPen="laserPen",a))(re||{}),te=(a=>(a.Normal="Normal",a.Stroke="Stroke",a.Dotted="Dotted",a.LongDotted="LongDotted",a))(te||{}),He=(a=>(a.Triangle="triangle",a.Rhombus="rhombus",a.Pentagram="pentagram",a.SpeechBalloon="speechBalloon",a.Star="star",a.Polygon="polygon",a))(He||{}),F=(a=>(a.None="None",a.ShowFloatBar="ShowFloatBar",a.ZIndexFloatBar="ZIndexFloatBar",a.DeleteNode="DeleteNode",a.CopyNode="CopyNode",a.ZIndexActive="ZIndexActive",a.ZIndexNode="ZIndexNode",a.RotateNode="RotateNode",a.SetColorNode="SetColorNode",a.TranslateNode="TranslateNode",a.ScaleNode="ScaleNode",a.OriginalEvent="OriginalEvent",a.CreateScene="CreateScene",a.ActiveCursor="ActiveCursor",a.MoveCursor="MoveCursor",a.CommandEditor="CommandEditor",a.SetEditorData="SetEditorData",a.SetFontStyle="SetFontStyle",a.SetPoint="SetPoint",a.SetLock="SetLock",a.SetShapeOpt="SetShapeOpt",a.CameraChange="CameraChange",a.ActiveMethod="ActiveMethod",a))(F||{}),se=(a=>(a.DisplayState="DisplayState",a.MainEngine="MainEngine",a.Cursor="Cursor",a.BindMainView="BindMainView",a))(se||{}),to=(a=>(a[a.MainView=0]="MainView",a[a.Plugin=1]="Plugin",a[a.Both=2]="Both",a))(to||{}),T=(a=>(a[a.Pencil=1]="Pencil",a[a.Eraser=2]="Eraser",a[a.PencilEraser=3]="PencilEraser",a[a.BitMapEraser=4]="BitMapEraser",a[a.Selector=5]="Selector",a[a.Clicker=6]="Clicker",a[a.Arrow=7]="Arrow",a[a.Hand=8]="Hand",a[a.LaserPen=9]="LaserPen",a[a.Text=10]="Text",a[a.Straight=11]="Straight",a[a.Rectangle=12]="Rectangle",a[a.Ellipse=13]="Ellipse",a[a.Star=14]="Star",a[a.Triangle=15]="Triangle",a[a.Rhombus=16]="Rhombus",a[a.Polygon=17]="Polygon",a[a.SpeechBalloon=18]="SpeechBalloon",a[a.Image=19]="Image",a))(T||{}),B=(a=>(a[a.Local=1]="Local",a[a.Service=2]="Service",a[a.Worker=3]="Worker",a))(B||{}),z=(a=>(a[a.Pending=0]="Pending",a[a.Start=1]="Start",a[a.Doing=2]="Doing",a[a.Done=3]="Done",a[a.Unwritable=4]="Unwritable",a))(z||{}),L=(a=>(a[a.None=0]="None",a[a.Init=1]="Init",a[a.UpdateCamera=2]="UpdateCamera",a[a.UpdateTools=3]="UpdateTools",a[a.CreateWork=4]="CreateWork",a[a.DrawWork=5]="DrawWork",a[a.FullWork=6]="FullWork",a[a.UpdateNode=7]="UpdateNode",a[a.RemoveNode=8]="RemoveNode",a[a.Clear=9]="Clear",a[a.Select=10]="Select",a[a.Destroy=11]="Destroy",a[a.Snapshot=12]="Snapshot",a[a.BoundingBox=13]="BoundingBox",a[a.Cursor=14]="Cursor",a[a.TextUpdate=15]="TextUpdate",a[a.GetTextActive=16]="GetTextActive",a[a.TasksQueue=17]="TasksQueue",a[a.CursorHover=18]="CursorHover",a[a.CursorBlur=19]="CursorBlur",a[a.Console=20]="Console",a[a.PriorityWorker=21]="PriorityWorker",a[a.PriorityMainThreadWorker=22]="PriorityMainThreadWorker",a[a.GetImageBitMap=23]="GetImageBitMap",a[a.AuthWriter=24]="AuthWriter",a[a.AuthReader=25]="AuthReader",a[a.AuthClear=26]="AuthClear",a[a.AuthPage=27]="AuthPage",a[a.GetVNodeInfo=28]="GetVNodeInfo",a[a.UpdateDpr=29]="UpdateDpr",a))(L||{}),Me=(a=>(a[a.None=0]="None",a[a.Bg=1]="Bg",a[a.ServiceFloat=2]="ServiceFloat",a[a.Float=3]="Float",a[a.TopFloat=4]="TopFloat",a))(Me||{}),Ot=(a=>(a[a.Cursor=1]="Cursor",a[a.TextCreate=2]="TextCreate",a))(Ot||{}),Rt=(a=>(a[a.Top=1]="Top",a[a.Bottom=2]="Bottom",a))(Rt||{}),ae=(a=>(a[a.none=1]="none",a[a.all=2]="all",a[a.both=3]="both",a[a.proportional=4]="proportional",a))(ae||{}),so=(a=>(a[a.Pending=0]="Pending",a[a.Start=1]="Start",a[a.Doing=2]="Doing",a[a.Done=3]="Done",a[a.Unwritable=4]="Unwritable",a))(so||{}),ut=(a=>(a[a.inside=0]="inside",a[a.outside=1]="outside",a[a.intersect=2]="intersect",a))(ut||{}),ze=(a=>(a.renderPage="renderPage",a.addPage="addPage",a.deletePage="deletePage",a.addElement="addElement",a.deleteElement="deleteElement",a.clearPage="clearPage",a.clearViewScenePath="clearViewScenePath",a.clearView="clearView",a))(ze||{}),Ge=(a=>(a.setAuth="setAuth",a.setShow="addShow",a.setHide="setHide",a.setClear="setClear",a))(Ge||{}),dt=(a=>(a.Image="image",a.Iconify="iconify",a))(dt||{});const dn={linear:a=>a,easeInQuad:a=>a*a,easeOutQuad:a=>a*(2-a),easeInOutQuad:a=>a<.5?2*a*a:-1+(4-2*a)*a,easeInCubic:a=>a*a*a,easeOutCubic:a=>--a*a*a+1,easeInOutCubic:a=>a<.5?4*a*a*a:(a-1)*(2*a-2)*(2*a-2)+1,easeInQuart:a=>a*a*a*a,easeOutQuart:a=>1- --a*a*a*a,easeInOutQuart:a=>a<.5?8*a*a*a*a:1-8*--a*a*a*a,easeInQuint:a=>a*a*a*a*a,easeOutQuint:a=>1+--a*a*a*a*a,easeInOutQuint:a=>a<.5?16*a*a*a*a*a:1+16*--a*a*a*a*a,easeInSine:a=>1-Math.cos(a*Math.PI/2),easeOutSine:a=>Math.sin(a*Math.PI/2),easeInOutSine:a=>-(Math.cos(Math.PI*a)-1)/2,easeInExpo:a=>a<=0?0:Math.pow(2,10*a-10),easeOutExpo:a=>a>=1?1:1-Math.pow(2,-10*a),easeInOutExpo:a=>a<=0?0:a>=1?1:a<.5?Math.pow(2,20*a-10)/2:(2-Math.pow(2,-20*a+10))/2};class C{constructor(s=0,e=0,t=1){this.x=s,this.y=e,this.z=t}get XY(){return[this.x,this.y]}setz(s){return this.z=s,this}setXY(s=this.x,e=this.y){return this.x=s,this.y=e,this}set(s=this.x,e=this.y,t=this.z){return this.x=s,this.y=e,this.z=t,this}setTo({x:s=0,y:e=0,z:t=1}){return this.x=s,this.y=e,this.z=t,this}rot(s){if(s===0)return this;const{x:e,y:t}=this,i=Math.sin(s),o=Math.cos(s);return this.x=e*o-t*i,this.y=e*i+t*o,this}rotWith(s,e){if(e===0)return this;const t=this.x-s.x,i=this.y-s.y,o=Math.sin(e),n=Math.cos(e);return this.x=s.x+(t*n-i*o),this.y=s.y+(t*o+i*n),this}clone(){const{x:s,y:e,z:t}=this;return new C(s,e,t)}sub(s){return this.x-=s.x,this.y-=s.y,this}subXY(s,e){return this.x-=s,this.y-=e,this}subScalar(s){return this.x-=s,this.y-=s,this}add(s){return this.x+=s.x,this.y+=s.y,this}addXY(s,e){return this.x+=s,this.y+=e,this}addScalar(s){return this.x+=s,this.y+=s,this}clamp(s,e){return this.x=Math.max(this.x,s),this.y=Math.max(this.y,s),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(s){return this.x/=s,this.y/=s,this}divV(s){return this.x/=s.x,this.y/=s.y,this}mul(s){return this.x*=s,this.y*=s,this}mulV(s){return this.x*=s.x,this.y*=s.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(s,e){const t=C.Tan(s,this);return this.add(t.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(s){return this.x=this.y*s.z-this.z*s.y,this.y=this.z*s.x-this.x*s.z,this}dpr(s){return C.Dpr(this,s)}cpr(s){return C.Cpr(this,s)}len2(){return C.Len2(this)}len(){return C.Len(this)}pry(s){return C.Pry(this,s)}per(){const{x:s,y:e}=this;return this.x=e,this.y=-s,this}uni(){return C.Uni(this)}tan(s){return C.Tan(this,s)}dist(s){return C.Dist(this,s)}distanceToLineSegment(s,e){return C.DistanceToLineSegment(s,e,this)}slope(s){return C.Slope(this,s)}snapToGrid(s){return this.x=Math.round(this.x/s)*s,this.y=Math.round(this.y/s)*s,this}angle(s){return C.Angle(this,s)}toAngle(){return C.ToAngle(this)}lrp(s,e){return this.x=this.x+(s.x-this.x)*e,this.y=this.y+(s.y-this.y)*e,this}equals(s,e){return C.Equals(this,s,e)}equalsXY(s,e){return C.EqualsXY(this,s,e)}norm(){const s=this.len();return this.x=s===0?0:this.x/s,this.y=s===0?0:this.y/s,this}toFixed(){return C.ToFixed(this)}toString(){return C.ToString(C.ToFixed(this))}toJson(){return C.ToJson(this)}toArray(){return C.ToArray(this)}static Add(s,e){return new C(s.x+e.x,s.y+e.y)}static AddXY(s,e,t){return new C(s.x+e,s.y+t)}static Sub(s,e){return new C(s.x-e.x,s.y-e.y)}static SubXY(s,e,t){return new C(s.x-e,s.y-t)}static AddScalar(s,e){return new C(s.x+e,s.y+e)}static SubScalar(s,e){return new C(s.x-e,s.y-e)}static Div(s,e){return new C(s.x/e,s.y/e)}static Mul(s,e){return new C(s.x*e,s.y*e)}static DivV(s,e){return new C(s.x/e.x,s.y/e.y)}static MulV(s,e){return new C(s.x*e.x,s.y*e.y)}static Neg(s){return new C(-s.x,-s.y)}static Per(s){return new C(s.y,-s.x)}static Dist2(s,e){return C.Sub(s,e).len2()}static Abs(s){return new C(Math.abs(s.x),Math.abs(s.y))}static Dist(s,e){return Math.hypot(s.y-e.y,s.x-e.x)}static Dpr(s,e){return s.x*e.x+s.y*e.y}static Cross(s,e){return new C(s.y*e.z-s.z*e.y,s.z*e.x-s.x*e.z)}static Cpr(s,e){return s.x*e.y-e.x*s.y}static Len2(s){return s.x*s.x+s.y*s.y}static Len(s){return Math.hypot(s.x,s.y)}static Pry(s,e){return C.Dpr(s,e)/C.Len(e)}static Uni(s){return C.Div(s,C.Len(s))}static Tan(s,e){return C.Uni(C.Sub(s,e))}static Min(s,e){return new C(Math.min(s.x,e.x),Math.min(s.y,e.y))}static Max(s,e){return new C(Math.max(s.x,e.x),Math.max(s.y,e.y))}static From(s){return new C().add(s)}static FromArray(s){return new C(s[0],s[1])}static Rot(s,e=0){const t=Math.sin(e),i=Math.cos(e);return new C(s.x*i-s.y*t,s.x*t+s.y*i)}static RotWith(s,e,t){const i=s.x-e.x,o=s.y-e.y,n=Math.sin(t),r=Math.cos(t);return new C(e.x+(i*r-o*n),e.y+(i*n+o*r))}static NearestPointOnLineThroughPoint(s,e,t){return C.Mul(e,C.Sub(t,s).pry(e)).add(s)}static NearestPointOnLineSegment(s,e,t,i=!0){const o=C.Tan(e,s),n=C.Add(s,C.Mul(o,C.Sub(t,s).pry(o)));if(i){if(n.x<Math.min(s.x,e.x))return C.Cast(s.x<e.x?s:e);if(n.x>Math.max(s.x,e.x))return C.Cast(s.x>e.x?s:e);if(n.y<Math.min(s.y,e.y))return C.Cast(s.y<e.y?s:e);if(n.y>Math.max(s.y,e.y))return C.Cast(s.y>e.y?s:e)}return n}static DistanceToLineThroughPoint(s,e,t){return C.Dist(t,C.NearestPointOnLineThroughPoint(s,e,t))}static DistanceToLineSegment(s,e,t,i=!0){return C.Dist(t,C.NearestPointOnLineSegment(s,e,t,i))}static Snap(s,e=1){return new C(Math.round(s.x/e)*e,Math.round(s.y/e)*e)}static Cast(s){return s instanceof C?s:C.From(s)}static Slope(s,e){return s.x===e.y?NaN:(s.y-e.y)/(s.x-e.x)}static Angle(s,e){return Math.atan2(e.y-s.y,e.x-s.x)}static Lrp(s,e,t){return C.Sub(e,s).mul(t).add(s)}static Med(s,e){return new C((s.x+e.x)/2,(s.y+e.y)/2)}static Equals(s,e,t=1e-4){return Math.abs(s.x-e.x)<t&&Math.abs(s.y-e.y)<t}static EqualsXY(s,e,t){return s.x===e&&s.y===t}static EqualsXYZ(s,e,t=1e-4){return C.Equals(s,e,t)&&Math.abs((s.z||0)-(e.z||0))<t}static Clockwise(s,e,t){return(t.x-s.x)*(e.y-s.y)-(e.x-s.x)*(t.y-s.y)<0}static Rescale(s,e){const t=C.Len(s);return new C(e*s.x/t,e*s.y/t)}static ScaleWithOrigin(s,e,t){return C.Sub(s,t).mul(e).add(t)}static ScaleWOrigin(s,e,t){return C.Sub(s,t).mulV(e).add(t)}static ToFixed(s,e=2){return new C(+s.x.toFixed(e),+s.y.toFixed(e),+s.z.toFixed(e))}static Nudge(s,e,t){return C.Add(s,C.Tan(e,s).mul(t))}static ToString(s){return`${s.x}, ${s.y}`}static ToAngle(s){let e=Math.atan2(s.y,s.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(s,e=1){return new C(Math.cos(s)*e,Math.sin(s)*e)}static ToArray(s){return[s.x,s.y,s.z]}static ToJson(s){const{x:e,y:t,z:i}=s;return{x:e,y:t,z:i}}static Average(s){const e=s.length,t=new C(0,0);for(let i=0;i<e;i++)t.add(s[i]);return t.div(e)}static Clamp(s,e,t){return t===void 0?new C(Math.min(Math.max(s.x,e)),Math.min(Math.max(s.y,e))):new C(Math.min(Math.max(s.x,e),t),Math.min(Math.max(s.y,e),t))}static PointsBetween(s,e,t=6){const i=[];for(let o=0;o<t;o++){const n=dn.easeInQuad(o/(t-1)),r=C.Lrp(s,e,n);r.z=Math.min(1,.5+Math.abs(.5-pn(n))*.65),i.push(r)}return i}static SnapToGrid(s,e=8){return new C(Math.round(s.x/e)*e,Math.round(s.y/e)*e)}}const pn=a=>a<.5?2*a*a:-1+(4-2*a)*a;class V extends C{constructor(s=0,e=0,t=0,i={x:0,y:0},o=0,n=0){super(s,e,t),this.x=s,this.y=e,this.z=t,this.v=i,this.t=o,this.a=n}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(s){this.a=s}setT(s){this.t=s}setv(s){return this.v={x:s.x,y:s.y},this}set(s=this.x,e=this.y,t=this.z,i=this.v,o=this.t,n=this.a){return this.x=s,this.y=e,this.z=t,this.v=i,this.t=o,this.a=n,this}clone(){const{x:s,y:e,z:t,v:i,t:o,a:n}=this,r={x:i.x,y:i.y};return new V(s,e,t,r,o,n)}distance(s){return V.GetDistance(this,s)}isNear(s,e){return V.IsNear(this,s,e)}getAngleByPoints(s,e){return V.GetAngleByPoints(s,this,e)}static Sub(s,e){return new V(s.x-e.x,s.y-e.y)}static Add(s,e){return new V(s.x+e.x,s.y+e.y)}static GetDistance(s,e){return V.Len(s.clone().sub(e))}static GetAngleByPoints(s,e,t){const i=e.x-s.x,o=t.x-e.x,n=e.y-s.y,r=t.y-e.y;let c=0;const l=Math.sqrt(i*i+n*n),u=Math.sqrt(o*o+r*r);if(l&&u){const h=i*o+n*r;c=Math.acos(h/(l*u)),c=c/Math.PI*180;let d=i*r-n*o;d=d>0?1:-1,c=180+d*c}return c}static IsNear(s,e,t){return V.Len(s.clone().sub(e))<t}static RotWith(s,e,t,i=2){const o=s.x-e.x,n=s.y-e.y,r=Math.sin(t),c=Math.cos(t),l=Math.pow(10,i),u=Math.floor((e.x+(o*c-n*r))*l)/l,h=Math.floor((e.y+(o*r+n*c))*l)/l;return new V(u,h)}static GetDotStroke(s,e,t=16){const i=new C(1,1),o=Math.PI+.001,n=V.Add(s,V.Sub(s,i).uni().per().mul(-e)),r=[];for(let c=1/t,l=c;l<=1;l+=c)r.push(V.RotWith(n,s,o*2*l));return r}static GetSemicircleStroke(s,e,t=-1,i=8){const o=t*(Math.PI+.001),n=[];for(let r=1/i,c=r;c<=1;c+=r)n.push(V.RotWith(e,s,o*c));return n}}var Vt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ct(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var fn=typeof Vt=="object"&&Vt&&Vt.Object===Object&&Vt,io=fn,gn=io,yn=typeof self=="object"&&self&&self.Object===Object&&self,Mn=gn||yn||Function("return this")(),Ze=Mn,mn=Ze,wn=mn.Symbol,Ut=wn,ci=Ut,oo=Object.prototype,vn=oo.hasOwnProperty,In=oo.toString,At=ci?ci.toStringTag:void 0;function Sn(a){var s=vn.call(a,At),e=a[At];try{a[At]=void 0;var t=!0}catch{}var i=In.call(a);return t&&(s?a[At]=e:delete a[At]),i}var Nn=Sn,Tn=Object.prototype,kn=Tn.toString;function Cn(a){return kn.call(a)}var bn=Cn,li=Ut,xn=Nn,Ln=bn,Pn="[object Null]",zn="[object Undefined]",hi=li?li.toStringTag:void 0;function Dn(a){return a==null?a===void 0?zn:Pn:hi&&hi in Object(a)?xn(a):Ln(a)}var pt=Dn;function An(a){return a!=null&&typeof a=="object"}var Je=An,jn=pt,En=Je,On="[object Number]";function Rn(a){return typeof a=="number"||En(a)&&jn(a)==On}var Wn=Rn;const De=Ct(Wn);function Yn(){this.__data__=[],this.size=0}var Un=Yn;function Bn(a,s){return a===s||a!==a&&s!==s}var Bs=Bn,Fn=Bs;function Vn(a,s){for(var e=a.length;e--;)if(Fn(a[e][0],s))return e;return-1}var cs=Vn,$n=cs,Hn=Array.prototype,Qn=Hn.splice;function Gn(a){var s=this.__data__,e=$n(s,a);if(e<0)return!1;var t=s.length-1;return e==t?s.pop():Qn.call(s,e,1),--this.size,!0}var Zn=Gn,qn=cs;function Xn(a){var s=this.__data__,e=qn(s,a);return e<0?void 0:s[e][1]}var Jn=Xn,Kn=cs;function _n(a){return Kn(this.__data__,a)>-1}var er=_n,tr=cs;function sr(a,s){var e=this.__data__,t=tr(e,a);return t<0?(++this.size,e.push([a,s])):e[t][1]=s,this}var ir=sr,or=Un,nr=Zn,rr=Jn,ar=er,cr=ir;function bt(a){var s=-1,e=a==null?0:a.length;for(this.clear();++s<e;){var t=a[s];this.set(t[0],t[1])}}bt.prototype.clear=or;bt.prototype.delete=nr;bt.prototype.get=rr;bt.prototype.has=ar;bt.prototype.set=cr;var ls=bt,lr=ls;function hr(){this.__data__=new lr,this.size=0}var ur=hr;function dr(a){var s=this.__data__,e=s.delete(a);return this.size=s.size,e}var pr=dr;function fr(a){return this.__data__.get(a)}var gr=fr;function yr(a){return this.__data__.has(a)}var Mr=yr;function mr(a){var s=typeof a;return a!=null&&(s=="object"||s=="function")}var ot=mr,wr=pt,vr=ot,Ir="[object AsyncFunction]",Sr="[object Function]",Nr="[object GeneratorFunction]",Tr="[object Proxy]";function kr(a){if(!vr(a))return!1;var s=wr(a);return s==Sr||s==Nr||s==Ir||s==Tr}var no=kr,Cr=Ze,br=Cr["__core-js_shared__"],xr=br,Is=xr,ui=function(){var a=/[^.]+$/.exec(Is&&Is.keys&&Is.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""}();function Lr(a){return!!ui&&ui in a}var Pr=Lr,zr=Function.prototype,Dr=zr.toString;function Ar(a){if(a!=null){try{return Dr.call(a)}catch{}try{return a+""}catch{}}return""}var ro=Ar,jr=no,Er=Pr,Or=ot,Rr=ro,Wr=/[\\^$.*+?()[\]{}|]/g,Yr=/^\[object .+?Constructor\]$/,Ur=Function.prototype,Br=Object.prototype,Fr=Ur.toString,Vr=Br.hasOwnProperty,$r=RegExp("^"+Fr.call(Vr).replace(Wr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Hr(a){if(!Or(a)||Er(a))return!1;var s=jr(a)?$r:Yr;return s.test(Rr(a))}var Qr=Hr;function Gr(a,s){return a==null?void 0:a[s]}var Zr=Gr,qr=Qr,Xr=Zr;function Jr(a,s){var e=Xr(a,s);return qr(e)?e:void 0}var ft=Jr,Kr=ft,_r=Ze,ea=Kr(_r,"Map"),Fs=ea,ta=ft,sa=ta(Object,"create"),hs=sa,di=hs;function ia(){this.__data__=di?di(null):{},this.size=0}var oa=ia;function na(a){var s=this.has(a)&&delete this.__data__[a];return this.size-=s?1:0,s}var ra=na,aa=hs,ca="__lodash_hash_undefined__",la=Object.prototype,ha=la.hasOwnProperty;function ua(a){var s=this.__data__;if(aa){var e=s[a];return e===ca?void 0:e}return ha.call(s,a)?s[a]:void 0}var da=ua,pa=hs,fa=Object.prototype,ga=fa.hasOwnProperty;function ya(a){var s=this.__data__;return pa?s[a]!==void 0:ga.call(s,a)}var Ma=ya,ma=hs,wa="__lodash_hash_undefined__";function va(a,s){var e=this.__data__;return this.size+=this.has(a)?0:1,e[a]=ma&&s===void 0?wa:s,this}var Ia=va,Sa=oa,Na=ra,Ta=da,ka=Ma,Ca=Ia;function xt(a){var s=-1,e=a==null?0:a.length;for(this.clear();++s<e;){var t=a[s];this.set(t[0],t[1])}}xt.prototype.clear=Sa;xt.prototype.delete=Na;xt.prototype.get=Ta;xt.prototype.has=ka;xt.prototype.set=Ca;var ba=xt,pi=ba,xa=ls,La=Fs;function Pa(){this.size=0,this.__data__={hash:new pi,map:new(La||xa),string:new pi}}var za=Pa;function Da(a){var s=typeof a;return s=="string"||s=="number"||s=="symbol"||s=="boolean"?a!=="__proto__":a===null}var Aa=Da,ja=Aa;function Ea(a,s){var e=a.__data__;return ja(s)?e[typeof s=="string"?"string":"hash"]:e.map}var us=Ea,Oa=us;function Ra(a){var s=Oa(this,a).delete(a);return this.size-=s?1:0,s}var Wa=Ra,Ya=us;function Ua(a){return Ya(this,a).get(a)}var Ba=Ua,Fa=us;function Va(a){return Fa(this,a).has(a)}var $a=Va,Ha=us;function Qa(a,s){var e=Ha(this,a),t=e.size;return e.set(a,s),this.size+=e.size==t?0:1,this}var Ga=Qa,Za=za,qa=Wa,Xa=Ba,Ja=$a,Ka=Ga;function Lt(a){var s=-1,e=a==null?0:a.length;for(this.clear();++s<e;){var t=a[s];this.set(t[0],t[1])}}Lt.prototype.clear=Za;Lt.prototype.delete=qa;Lt.prototype.get=Xa;Lt.prototype.has=Ja;Lt.prototype.set=Ka;var ao=Lt,_a=ls,ec=Fs,tc=ao,sc=200;function ic(a,s){var e=this.__data__;if(e instanceof _a){var t=e.__data__;if(!ec||t.length<sc-1)return t.push([a,s]),this.size=++e.size,this;e=this.__data__=new tc(t)}return e.set(a,s),this.size=e.size,this}var oc=ic,nc=ls,rc=ur,ac=pr,cc=gr,lc=Mr,hc=oc;function Pt(a){var s=this.__data__=new nc(a);this.size=s.size}Pt.prototype.clear=rc;Pt.prototype.delete=ac;Pt.prototype.get=cc;Pt.prototype.has=lc;Pt.prototype.set=hc;var co=Pt;function uc(a,s){for(var e=-1,t=a==null?0:a.length;++e<t&&s(a[e],e,a)!==!1;);return a}var dc=uc,pc=ft,fc=function(){try{var a=pc(Object,"defineProperty");return a({},"",{}),a}catch{}}(),lo=fc,fi=lo;function gc(a,s,e){s=="__proto__"&&fi?fi(a,s,{configurable:!0,enumerable:!0,value:e,writable:!0}):a[s]=e}var ho=gc,yc=ho,Mc=Bs,mc=Object.prototype,wc=mc.hasOwnProperty;function vc(a,s,e){var t=a[s];(!(wc.call(a,s)&&Mc(t,e))||e===void 0&&!(s in a))&&yc(a,s,e)}var uo=vc,Ic=uo,Sc=ho;function Nc(a,s,e,t){var i=!e;e||(e={});for(var o=-1,n=s.length;++o<n;){var r=s[o],c=t?t(e[r],a[r],r,e,a):void 0;c===void 0&&(c=a[r]),i?Sc(e,r,c):Ic(e,r,c)}return e}var ds=Nc;function Tc(a,s){for(var e=-1,t=Array(a);++e<a;)t[e]=s(e);return t}var kc=Tc,Cc=pt,bc=Je,xc="[object Arguments]";function Lc(a){return bc(a)&&Cc(a)==xc}var Pc=Lc,gi=Pc,zc=Je,po=Object.prototype,Dc=po.hasOwnProperty,Ac=po.propertyIsEnumerable,jc=gi(function(){return arguments}())?gi:function(a){return zc(a)&&Dc.call(a,"callee")&&!Ac.call(a,"callee")},fo=jc,Ec=Array.isArray,Bt=Ec,qt={exports:{}};function Oc(){return!1}var Rc=Oc;qt.exports;(function(a,s){var e=Ze,t=Rc,i=s&&!s.nodeType&&s,o=i&&!0&&a&&!a.nodeType&&a,n=o&&o.exports===i,r=n?e.Buffer:void 0,c=r?r.isBuffer:void 0,l=c||t;a.exports=l})(qt,qt.exports);var Vs=qt.exports,Wc=9007199254740991,Yc=/^(?:0|[1-9]\d*)$/;function Uc(a,s){var e=typeof a;return s=s??Wc,!!s&&(e=="number"||e!="symbol"&&Yc.test(a))&&a>-1&&a%1==0&&a<s}var Bc=Uc,Fc=9007199254740991;function Vc(a){return typeof a=="number"&&a>-1&&a%1==0&&a<=Fc}var go=Vc,$c=pt,Hc=go,Qc=Je,Gc="[object Arguments]",Zc="[object Array]",qc="[object Boolean]",Xc="[object Date]",Jc="[object Error]",Kc="[object Function]",_c="[object Map]",el="[object Number]",tl="[object Object]",sl="[object RegExp]",il="[object Set]",ol="[object String]",nl="[object WeakMap]",rl="[object ArrayBuffer]",al="[object DataView]",cl="[object Float32Array]",ll="[object Float64Array]",hl="[object Int8Array]",ul="[object Int16Array]",dl="[object Int32Array]",pl="[object Uint8Array]",fl="[object Uint8ClampedArray]",gl="[object Uint16Array]",yl="[object Uint32Array]",me={};me[cl]=me[ll]=me[hl]=me[ul]=me[dl]=me[pl]=me[fl]=me[gl]=me[yl]=!0;me[Gc]=me[Zc]=me[rl]=me[qc]=me[al]=me[Xc]=me[Jc]=me[Kc]=me[_c]=me[el]=me[tl]=me[sl]=me[il]=me[ol]=me[nl]=!1;function Ml(a){return Qc(a)&&Hc(a.length)&&!!me[$c(a)]}var ml=Ml;function wl(a){return function(s){return a(s)}}var ps=wl,Xt={exports:{}};Xt.exports;(function(a,s){var e=io,t=s&&!s.nodeType&&s,i=t&&!0&&a&&!a.nodeType&&a,o=i&&i.exports===t,n=o&&e.process,r=function(){try{var c=i&&i.require&&i.require("util").types;return c||n&&n.binding&&n.binding("util")}catch{}}();a.exports=r})(Xt,Xt.exports);var $s=Xt.exports,vl=ml,Il=ps,yi=$s,Mi=yi&&yi.isTypedArray,Sl=Mi?Il(Mi):vl,yo=Sl,Nl=kc,Tl=fo,kl=Bt,Cl=Vs,bl=Bc,xl=yo,Ll=Object.prototype,Pl=Ll.hasOwnProperty;function zl(a,s){var e=kl(a),t=!e&&Tl(a),i=!e&&!t&&Cl(a),o=!e&&!t&&!i&&xl(a),n=e||t||i||o,r=n?Nl(a.length,String):[],c=r.length;for(var l in a)(s||Pl.call(a,l))&&!(n&&(l=="length"||i&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||bl(l,c)))&&r.push(l);return r}var Mo=zl,Dl=Object.prototype;function Al(a){var s=a&&a.constructor,e=typeof s=="function"&&s.prototype||Dl;return a===e}var Hs=Al;function jl(a,s){return function(e){return a(s(e))}}var mo=jl,El=mo,Ol=El(Object.keys,Object),Rl=Ol,Wl=Hs,Yl=Rl,Ul=Object.prototype,Bl=Ul.hasOwnProperty;function Fl(a){if(!Wl(a))return Yl(a);var s=[];for(var e in Object(a))Bl.call(a,e)&&e!="constructor"&&s.push(e);return s}var Vl=Fl,$l=no,Hl=go;function Ql(a){return a!=null&&Hl(a.length)&&!$l(a)}var Qs=Ql,Gl=Mo,Zl=Vl,ql=Qs;function Xl(a){return ql(a)?Gl(a):Zl(a)}var Gs=Xl,Jl=ds,Kl=Gs;function _l(a,s){return a&&Jl(s,Kl(s),a)}var eh=_l;function th(a){var s=[];if(a!=null)for(var e in Object(a))s.push(e);return s}var sh=th,ih=ot,oh=Hs,nh=sh,rh=Object.prototype,ah=rh.hasOwnProperty;function ch(a){if(!ih(a))return nh(a);var s=oh(a),e=[];for(var t in a)t=="constructor"&&(s||!ah.call(a,t))||e.push(t);return e}var lh=ch,hh=Mo,uh=lh,dh=Qs;function ph(a){return dh(a)?hh(a,!0):uh(a)}var Zs=ph,fh=ds,gh=Zs;function yh(a,s){return a&&fh(s,gh(s),a)}var Mh=yh,Jt={exports:{}};Jt.exports;(function(a,s){var e=Ze,t=s&&!s.nodeType&&s,i=t&&!0&&a&&!a.nodeType&&a,o=i&&i.exports===t,n=o?e.Buffer:void 0,r=n?n.allocUnsafe:void 0;function c(l,u){if(u)return l.slice();var h=l.length,d=r?r(h):new l.constructor(h);return l.copy(d),d}a.exports=c})(Jt,Jt.exports);var mh=Jt.exports;function wh(a,s){var e=-1,t=a.length;for(s||(s=Array(t));++e<t;)s[e]=a[e];return s}var vh=wh;function Ih(a,s){for(var e=-1,t=a==null?0:a.length,i=0,o=[];++e<t;){var n=a[e];s(n,e,a)&&(o[i++]=n)}return o}var wo=Ih;function Sh(){return[]}var vo=Sh,Nh=wo,Th=vo,kh=Object.prototype,Ch=kh.propertyIsEnumerable,mi=Object.getOwnPropertySymbols,bh=mi?function(a){return a==null?[]:(a=Object(a),Nh(mi(a),function(s){return Ch.call(a,s)}))}:Th,qs=bh,xh=ds,Lh=qs;function Ph(a,s){return xh(a,Lh(a),s)}var zh=Ph;function Dh(a,s){for(var e=-1,t=s.length,i=a.length;++e<t;)a[i+e]=s[e];return a}var Xs=Dh,Ah=mo,jh=Ah(Object.getPrototypeOf,Object),Io=jh,Eh=Xs,Oh=Io,Rh=qs,Wh=vo,Yh=Object.getOwnPropertySymbols,Uh=Yh?function(a){for(var s=[];a;)Eh(s,Rh(a)),a=Oh(a);return s}:Wh,So=Uh,Bh=ds,Fh=So;function Vh(a,s){return Bh(a,Fh(a),s)}var $h=Vh,Hh=Xs,Qh=Bt;function Gh(a,s,e){var t=s(a);return Qh(a)?t:Hh(t,e(a))}var No=Gh,Zh=No,qh=qs,Xh=Gs;function Jh(a){return Zh(a,Xh,qh)}var To=Jh,Kh=No,_h=So,eu=Zs;function tu(a){return Kh(a,eu,_h)}var su=tu,iu=ft,ou=Ze,nu=iu(ou,"DataView"),ru=nu,au=ft,cu=Ze,lu=au(cu,"Promise"),hu=lu,uu=ft,du=Ze,pu=uu(du,"Set"),ko=pu,fu=ft,gu=Ze,yu=fu(gu,"WeakMap"),Mu=yu,xs=ru,Ls=Fs,Ps=hu,zs=ko,Ds=Mu,Co=pt,zt=ro,wi="[object Map]",mu="[object Object]",vi="[object Promise]",Ii="[object Set]",Si="[object WeakMap]",Ni="[object DataView]",wu=zt(xs),vu=zt(Ls),Iu=zt(Ps),Su=zt(zs),Nu=zt(Ds),at=Co;(xs&&at(new xs(new ArrayBuffer(1)))!=Ni||Ls&&at(new Ls)!=wi||Ps&&at(Ps.resolve())!=vi||zs&&at(new zs)!=Ii||Ds&&at(new Ds)!=Si)&&(at=function(a){var s=Co(a),e=s==mu?a.constructor:void 0,t=e?zt(e):"";if(t)switch(t){case wu:return Ni;case vu:return wi;case Iu:return vi;case Su:return Ii;case Nu:return Si}return s});var fs=at,Tu=Object.prototype,ku=Tu.hasOwnProperty;function Cu(a){var s=a.length,e=new a.constructor(s);return s&&typeof a[0]=="string"&&ku.call(a,"index")&&(e.index=a.index,e.input=a.input),e}var bu=Cu,xu=Ze,Lu=xu.Uint8Array,bo=Lu,Ti=bo;function Pu(a){var s=new a.constructor(a.byteLength);return new Ti(s).set(new Ti(a)),s}var Js=Pu,zu=Js;function Du(a,s){var e=s?zu(a.buffer):a.buffer;return new a.constructor(e,a.byteOffset,a.byteLength)}var Au=Du,ju=/\w*$/;function Eu(a){var s=new a.constructor(a.source,ju.exec(a));return s.lastIndex=a.lastIndex,s}var Ou=Eu,ki=Ut,Ci=ki?ki.prototype:void 0,bi=Ci?Ci.valueOf:void 0;function Ru(a){return bi?Object(bi.call(a)):{}}var Wu=Ru,Yu=Js;function Uu(a,s){var e=s?Yu(a.buffer):a.buffer;return new a.constructor(e,a.byteOffset,a.length)}var Bu=Uu,Fu=Js,Vu=Au,$u=Ou,Hu=Wu,Qu=Bu,Gu="[object Boolean]",Zu="[object Date]",qu="[object Map]",Xu="[object Number]",Ju="[object RegExp]",Ku="[object Set]",_u="[object String]",ed="[object Symbol]",td="[object ArrayBuffer]",sd="[object DataView]",id="[object Float32Array]",od="[object Float64Array]",nd="[object Int8Array]",rd="[object Int16Array]",ad="[object Int32Array]",cd="[object Uint8Array]",ld="[object Uint8ClampedArray]",hd="[object Uint16Array]",ud="[object Uint32Array]";function dd(a,s,e){var t=a.constructor;switch(s){case td:return Fu(a);case Gu:case Zu:return new t(+a);case sd:return Vu(a,e);case id:case od:case nd:case rd:case ad:case cd:case ld:case hd:case ud:return Qu(a,e);case qu:return new t;case Xu:case _u:return new t(a);case Ju:return $u(a);case Ku:return new t;case ed:return Hu(a)}}var pd=dd,fd=ot,xi=Object.create,gd=function(){function a(){}return function(s){if(!fd(s))return{};if(xi)return xi(s);a.prototype=s;var e=new a;return a.prototype=void 0,e}}(),yd=gd,Md=yd,md=Io,wd=Hs;function vd(a){return typeof a.constructor=="function"&&!wd(a)?Md(md(a)):{}}var Id=vd,Sd=fs,Nd=Je,Td="[object Map]";function kd(a){return Nd(a)&&Sd(a)==Td}var Cd=kd,bd=Cd,xd=ps,Li=$s,Pi=Li&&Li.isMap,Ld=Pi?xd(Pi):bd,Pd=Ld,zd=fs,Dd=Je,Ad="[object Set]";function jd(a){return Dd(a)&&zd(a)==Ad}var Ed=jd,Od=Ed,Rd=ps,zi=$s,Di=zi&&zi.isSet,Wd=Di?Rd(Di):Od,xo=Wd;const Yd=Ct(xo);var Ud=co,Bd=dc,Fd=uo,Vd=eh,$d=Mh,Hd=mh,Qd=vh,Gd=zh,Zd=$h,qd=To,Xd=su,Jd=fs,Kd=bu,_d=pd,ep=Id,tp=Bt,sp=Vs,ip=Pd,op=ot,np=xo,rp=Gs,ap=Zs,cp=1,lp=2,hp=4,Lo="[object Arguments]",up="[object Array]",dp="[object Boolean]",pp="[object Date]",fp="[object Error]",Po="[object Function]",gp="[object GeneratorFunction]",yp="[object Map]",Mp="[object Number]",zo="[object Object]",mp="[object RegExp]",wp="[object Set]",vp="[object String]",Ip="[object Symbol]",Sp="[object WeakMap]",Np="[object ArrayBuffer]",Tp="[object DataView]",kp="[object Float32Array]",Cp="[object Float64Array]",bp="[object Int8Array]",xp="[object Int16Array]",Lp="[object Int32Array]",Pp="[object Uint8Array]",zp="[object Uint8ClampedArray]",Dp="[object Uint16Array]",Ap="[object Uint32Array]",ye={};ye[Lo]=ye[up]=ye[Np]=ye[Tp]=ye[dp]=ye[pp]=ye[kp]=ye[Cp]=ye[bp]=ye[xp]=ye[Lp]=ye[yp]=ye[Mp]=ye[zo]=ye[mp]=ye[wp]=ye[vp]=ye[Ip]=ye[Pp]=ye[zp]=ye[Dp]=ye[Ap]=!0;ye[fp]=ye[Po]=ye[Sp]=!1;function Gt(a,s,e,t,i,o){var n,r=s&cp,c=s&lp,l=s&hp;if(e&&(n=i?e(a,t,i,o):e(a)),n!==void 0)return n;if(!op(a))return a;var u=tp(a);if(u){if(n=Kd(a),!r)return Qd(a,n)}else{var h=Jd(a),d=h==Po||h==gp;if(sp(a))return Hd(a,r);if(h==zo||h==Lo||d&&!i){if(n=c||d?{}:ep(a),!r)return c?Zd(a,$d(n,a)):Gd(a,Vd(n,a))}else{if(!ye[h])return i?a:{};n=_d(a,h,r)}}o||(o=new Ud);var f=o.get(a);if(f)return f;o.set(a,n),np(a)?a.forEach(function(m){n.add(Gt(m,s,e,m,a,o))}):ip(a)&&a.forEach(function(m,N){n.set(N,Gt(m,s,e,N,a,o))});var g=l?c?Xd:qd:c?ap:rp,p=u?void 0:g(a);return Bd(p||a,function(m,N){p&&(N=m,m=a[N]),Fd(n,N,Gt(m,s,e,N,a,o))}),n}var jp=Gt,Ep=jp,Op=1,Rp=4;function Wp(a){return Ep(a,Op|Rp)}var Yp=Wp;const ke=Ct(Yp),Do="1.1.16",Up="@netless/appliance-plugin",Ks=typeof OffscreenCanvas=="function"?"worker":"mainThread";if(typeof window<"u"){let a=window.__netlessUA||"";a+=` ${Up}@${Do}`,window.__netlessUA=a}const Se={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10}};function _e(a,s=!0){const e=a.length;if(e<2)return"";let t=a[0],i=a[1];if(e===2)return`M${gt(t)}L${gt(i)}`;let o="";for(let n=2,r=e-1;n<r;n++)t=a[n],i=a[n+1],o+=yt(t,i);return s?`M${yt(a[0],a[1])}Q${gt(a[1])}${yt(a[1],a[2])}T${o}${yt(a[e-1],a[0])}${yt(a[0],a[1])}Z`:`M${gt(a[0])}Q${gt(a[1])}${yt(a[1],a[2])}${a.length>3?"T":""}${o}L${gt(a[e-1])}`}const We=class We{constructor(s){y(this,"maxImageWidth",Se.pencilEraser.maxImageWidth);y(this,"maxImageHeight",Se.pencilEraser.maxImageHeight);y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"vNodes");y(this,"drawLayer");y(this,"fullLayer");y(this,"workId");y(this,"isDelete",!1);const{vNodes:e,fullLayer:t,drawLayer:i,workId:o,toolsOpt:n}=s;this.vNodes=e,this.fullLayer=t,this.drawLayer=i,this.workId=o,this.syncUnitTime=n.syncUnitTime||this.syncUnitTime}get baseConsumeResult(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions}}filterSamePoints(s,e=.01){return s.reduce((t,i)=>{const o=t[t.length-1];return(i&&!o||i&&o&&!i.isNear(o,e))&&t.push(i),t},[])}setWorkId(s){this.workId=s}getWorkId(){return this.workId}getWorkOptions(){return this.workOptions}setWorkOptions(s){var i,o,n;this.workOptions=s,this.syncUnitTime=s.syncUnitTime||this.syncUnitTime;const e=(i=this.workId)==null?void 0:i.toString(),t=e&&((o=this.vNodes)==null?void 0:o.get(e))||void 0;e&&t&&(t.opt=s,(n=this.vNodes)==null||n.setInfo(e,t))}updataOptService(s){var i,o;let e;const t=(i=this.workId)==null?void 0:i.toString();if(t&&s){const n=this.fullLayer.getElementsByName(t)||this.drawLayer&&this.drawLayer.getElementsByName(t)||[];if(n.length!==1)return;const r=n[0],{pos:c,zIndex:l,scale:u,angle:h,translate:d}=s,f={};De(l)&&(f.zIndex=l),c&&(f.pos=[c[0],c[1]]),u&&(f.scale=u),h&&(f.rotate=h),d&&(f.translate=d),r.attr(f);const g=r==null?void 0:r.getBoundingClientRect();return g&&(e=le(e,{x:Math.floor(g.x-We.SafeBorderPadding),y:Math.floor(g.y-We.SafeBorderPadding),w:Math.floor(g.width+We.SafeBorderPadding*2),h:Math.floor(g.height+We.SafeBorderPadding*2)})),(o=this.vNodes)==null||o.setInfo(t,{rect:e,centerPos:c}),e}}drawEraserlines(s,e){const{group:t,eraserlines:i,pos:o,layer:n}=s,r=n.parent;if(!e)return;const l=(n.renderer.glRenderer||n.renderer.canvasRenderer).options.displayRatio,u=t.getBoundingClientRect(),h=u.width*l*n.worldScaling[0],d=u.height*l*n.worldScaling[1];let f=1;(h>this.maxImageWidth||d>this.maxImageHeight)&&(f=Math.min(this.maxImageWidth/h,this.maxImageHeight/d));let g=n.getAttribute("scale");g=[g[0]*f,g[1]*f];const p=n.parent.parent,m=n.getAttribute("translate"),N=this.createVmRenderNode(`${this.workId}_bitMapLayer`,p,{offscreen:r.offscreen,width:r.width,height:r.height,contextType:"2d",autoRender:!1,bufferSize:500},g,m),v=t.cloneNode(!0);this.addEraserlines(v,i,o,!1),N.appendChild(v);const I=N.parent;I.render();const k=N.renderer.canvasRenderer,w=k.context;if(!w)return;const S=k.options.displayRatio,b=v.getBoundingClientRect(),x={x:b.x,y:b.y,w:b.width,h:b.height},P={x:0,y:0,w:p.width,h:p.height};if(ri(x,P)===ut.outside){Oe(v,I),p.removeChild(I),this.isDelete=!0;return}const R=ke(x);R.x=Math.floor(Math.max(x.x,0)),R.y=Math.floor(Math.max(x.y,0)),R.w=Math.min(x.x+x.w,p.width)-R.x,R.h=Math.min(x.y+x.h,p.height)-R.y;const O=this.getGroupRect(R,S),D=O.x,A=O.y,G=O.w,ne=O.h;let q=w.getImageData(D,A,G,ne);if(this.isTransparentRectByCanvas(q)){Oe(v,I),p.removeChild(I),this.isDelete=!0,q=null;return}Oe(t,r);const H=this.createSpriteNode({imageData:q,safariRect:R,originRect:x,worldScaling:N.worldScaling});t.append(H),Oe(v,I),p.removeChild(I),r.deleteTexture(q),q=null}createVmRenderNode(s,e,t,i,o){const{width:n,height:r}=t,c=`bitMap-${s}`,l=e.layer(c,t),u=new he.Group({anchor:[.5,.5],pos:[n*.5,r*.5],size:[n,r],name:"viewport",id:s});return u.setAttribute("scale",i),u.setAttribute("translate",o),l.append(u),u}getGroupRect(s,e){const t=Math.floor(s.x*e),i=Math.floor(s.y*e),o=Math.floor(s.w*e),n=Math.floor(s.h*e);return{x:t,y:i,w:o,h:n}}addEraserlines(s,e,t,i=!0){for(const o of e){const{thickness:n,op:r}=o;for(const c of r){const l=c.map((g,p)=>p%2?g-t[1]:g-t[0]),u=this.computEraserPoints(l,n),h=_e(u,!0),d={pos:[0,0],d:h,fillColor:"rgba(0,0,0,1)"},f=new he.Path(d);f.addEventListener("beforerender",({detail:g})=>{const p=g.context;i?p.blendFuncSeparate(p.ZERO,p.ZERO,p.ZERO,p.ZERO):p.globalCompositeOperation="destination-out"}),f.addEventListener("afterrender",({detail:g})=>{const p=g.context;i?p.blendFuncSeparate(p.SRC_ALPHA,p.ONE_MINUS_SRC_ALPHA,p.ONE,p.ONE_MINUS_SRC_ALPHA):p.globalCompositeOperation="source-over"}),s.append(f)}}}isTransparentRectByCanvas(s){let e=!0;for(let t=0;t<s.data.length;t+=4)if(s.data[t+3]!==0){e=!1;break}return e}createSpriteNode(s){const{imageData:e,worldScaling:t,safariRect:i,originRect:o}=s,n=new OffscreenCanvas(e.width,e.height),r=n.getContext("2d");r&&r.putImageData(e,0,0);const c=[Math.floor(o.w/t[0]),Math.floor(o.h/t[1])],l=[Math.floor((i.x-o.x)/t[0]),Math.floor((i.y-o.y)/t[1]),Math.floor(i.w/t[0]),Math.floor(i.h/t[1])],u={name:"eraserTexture",anchor:[.5,.5],pos:[0,0],size:c,texture:n,textureRect:l};return new he.Sprite(u)}computEraserPoints(s,e){const t=Math.ceil(e/2);return s.length===2?this.computDot(s,t):this.computLine(s,t)}computDot(s,e){const t=new V(s[0],s[1]);return V.GetDotStroke(t,e,8)}computLine(s,e){const t=[],i=[];let o,n;for(let r=0;r<s.length;r+=2){const c=new V(s[r],s[r+1]);let l;if(r==s.length-2){const u=new V(s[r-2],s[r-1]);l=C.Sub(c,u).uni(),o=c}else{r===0&&(n=c);const u=new V(s[r+2],s[r+3]);l=C.Sub(u,c).uni()}if(l){const u=C.Per(l).mul(e);t.push(V.Sub(c,u)),i.push(V.Add(c,u))}}if(o&&n){const r=V.GetSemicircleStroke(o,t[t.length-1],-1,8),c=V.GetSemicircleStroke(n,i[0],-1,8);return t.concat(r,i.reverse(),c)}return[]}replace(s,e,t){var n;if(!e){t&&s.append(t);return}const i=s.getElementsByName(e);if(i.length)for(const r of i)t?NM(t,r,s):(r.remove(),Ee(r,s.parent));else t&&s.append(t);this.fullLayer===s?(n=this.drawLayer)==null||n.getElementsByName(e).forEach(r=>{var c;r.remove(),Ee(r,(c=this.drawLayer)==null?void 0:c.parent)}):this.fullLayer.getElementsByName(e).forEach(r=>{r.remove(),Ee(r,this.fullLayer.parent)})}removeDrawCountNodes(s,e){const t=[];s.getElementsByName(this.workId).forEach(i=>{i.id&&e&&Number(i.id)<e&&t.push(i)});for(const i of t)i.remove(),Ee(i,s.parent)}static updateNodeOpt(s){var v;const{node:e,opt:t,vNodes:i,willSerializeData:o,targetNode:n}=s,{zIndex:r,translate:c,angle:l,originPoint:u,scenePoint:h,scale:d,pointMap:f,thickness:g}=t;let p;const m=n&&ke(n)||i.get(e.name);if(!m)return;De(r)&&(e.setAttribute("zIndex",r),m.opt.zIndex=r);const N=e.parent;if(N){if(u&&d&&n){const I=[m.op[0],m.op[1]];oi(m.op,h,d,c);const k=[m.op[0],m.op[1]],w=[k[0]-I[0],k[1]-I[1]];if(m.centerPos=[m.centerPos[0]+w[0],m.centerPos[1]+w[1]],m.opt.translate=void 0,m.opt.scale=void 0,m.opt.eraserlines)for(const S of Object.values(m.opt.eraserlines)){const{op:b,thickness:x}=S;S.thickness=x*Math.max(d[0],d[1]);for(let P=0;P<b.length;P++)ni(b[P],h,d,c)}}else if(c)if(e.setAttribute("translate",c),m.opt.translate=c,n){const I=[c[0]*N.worldScaling[0],c[1]*N.worldScaling[1]];p=js(m.rect,I),m.rect=p}else{const I=We.getRectFromLayer(N,e.name);m.rect=I||m.rect}else if(De(l))if(e.setAttribute("rotate",l),m.opt.rotate=l,n)p=Jo(m.rect,l),m.rect=p;else{const I=We.getRectFromLayer(N,e.name);m.rect=I||m.rect}if(f){const I=f.get(e.name);if(I)for(let k=0,w=0;k<m.op.length;k+=3,w++)m.op[k]=I[w][0],m.op[k+1]=I[w][1]}if(g&&((v=m==null?void 0:m.opt)!=null&&v.thickness)&&(m.opt.thickness=g),o&&!(u&&d&&n)){if(c){const I=m.op.map((k,w)=>{const S=w%3;return S===0?k+c[0]:S===1?k+c[1]:k});if(m.op=I,m.centerPos=[m.centerPos[0]+c[0],m.centerPos[1]+c[1]],m!=null&&m.opt&&(m.opt.translate=void 0),m.opt.eraserlines)for(const k of Object.values(m.opt.eraserlines)){const{op:w}=k;for(let S=0;S<w.length;S++){const b=w[S].map((x,P)=>P%2?x+c[1]:x+c[0]);k.op[S]=b}}}else if(De(l)){const I=m.op;if(yM(I,m.centerPos,l),m.op=I,m!=null&&m.opt&&(m.opt.rotate=void 0),m.opt.eraserlines)for(const k of Object.values(m.opt.eraserlines)){const{op:w}=k;for(let S=0;S<w.length;S++)MM(w[S],m.centerPos,l)}}}m&&i.setInfo(e.name,m)}}static getCenterPos(s,e){const{worldPosition:t,worldScaling:i}=e;return[(s.x+s.w/2-t[0])/i[0],(s.y+s.h/2-t[1])/i[1]]}static getRectFromLayer(s,e){const t=s.getElementsByName(e)[0];if(t){const i=t.getBoundingClientRect();return{x:Math.floor(i.x-We.SafeBorderPadding),y:Math.floor(i.y-We.SafeBorderPadding),w:Math.floor(i.width+We.SafeBorderPadding*2),h:Math.floor(i.height+We.SafeBorderPadding*2)}}}static isWillRefresh(s){const{toolsType:e,opt:t,node:i,updateOpt:o,willSerializeData:n}=s;return!!(n&&(o.angle||o.translate)||o.thickness&&t.thickness&&t.thickness!==o.thickness||o.strokeType&&t.strokeType&&t.strokeType!==o.strokeType||o.originPoint&&o.scenePoint&&o.scale||o.pointMap&&o.pointMap.has(i.name)||e===T.Text&&(o.fontSize||o.translate||o.textInfos&&o.textInfos.get(i.name))||e===T.Image&&(o.angle||o.translate||o.scale||o.strokeColor&&o.type===dt.Iconify)||e===o.toolsType&&o.willRefresh||t.eraserlines&&t.eraserlines.length&&(o.strokeColor||o.fillColor))}};y(We,"SafeBorderPadding",10);let Y=We;const _s=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);function nt(a){return JSON.parse(eo.decompress(a))}function Ye(a){return eo.compress(JSON.stringify(a))}const Le=Object.keys;class Ao extends Y{constructor(e){super(e);y(this,"canRotate",!0);y(this,"scaleType",ae.all);y(this,"toolsType",T.Pencil);y(this,"syncTimestamp");y(this,"syncIndex",0);y(this,"tmpPoints",[]);y(this,"MAX_REPEAR",10);y(this,"uniThickness");y(this,"workOptions");y(this,"centerPos",[0,0]);this.workOptions=e.toolsOpt,this.uniThickness=this.MAX_REPEAR/this.workOptions.thickness/10,this.syncTimestamp=0}combineConsume(){var r;const e=(r=this.workId)==null?void 0:r.toString();if(this.tmpPoints.length<2)return{type:L.None};const t=this.transformDataAll(!0),i={name:e};let o;const n=this.drawLayer||this.fullLayer;return t.length&&(o=this.draw({attrs:i,tasks:t,replaceId:e,layer:n})),{rect:o,type:L.DrawWork,dataType:B.Local}}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n,drawCount:r,removeDrawCount:c}=e,{workId:l}=t,{tasks:u,effects:h,consumeIndex:d}=this.transformData(t,!1);this.syncIndex=Math.min(this.syncIndex,d,Math.max(0,this.tmpPoints.length-2));const f={name:l,id:De(r)&&r.toString()||void 0};let g,p=!1;const m=this.syncIndex;if(this.syncTimestamp===0&&(this.syncTimestamp=Date.now()),u.length&&(u[0].taskId-this.syncTimestamp>this.syncUnitTime&&(p=!0,this.syncTimestamp=u[0].taskId,this.syncIndex=this.tmpPoints.length),o||n)){const v=i?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({attrs:f,tasks:u,effects:h,layer:v,removeDrawCount:c})}if(o)return d>10&&this.tmpPoints.splice(0,d-10),{rect:g,type:L.DrawWork,dataType:B.Local};const N=[];return this.tmpPoints.slice(m).forEach(v=>{N.push(v.x,v.y,this.computRadius(v.z,this.workOptions.thickness))}),{...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local,rect:g,op:p?N:void 0,index:p?m*3:void 0,updateNodeOpt:{useAnimation:!0}}}consumeAll(e){var u;const t=this.workId;if(e.data){const{op:h,workState:d}=e.data;h!=null&&h.length&&d===z.Done&&this.workOptions.strokeType===te.Stroke&&this.updateTempPointsWithPressureWhenDone(h)}const i=this.transformDataAll(!0),o={name:t};let n;const r=this.fullLayer;if(i.length&&(n=this.draw({attrs:o,tasks:i,replaceId:t,layer:r})),this.tmpPoints.length<2)return this.replace(r,t),{type:L.RemoveNode,removeIds:[t],rect:n};const c=[];this.tmpPoints.map(h=>{c.push(h.x,h.y,h.z)}),this.syncTimestamp=0,delete this.workOptions.syncUnitTime;const l=Ye(c);return(u=this.vNodes)==null||u.setInfo(t,{rect:n,op:c,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&Y.getCenterPos(n,r)}),{...this.baseConsumeResult,rect:n,type:L.FullWork,dataType:B.Local,ops:l,updateNodeOpt:{pos:this.centerPos,useAnimation:!0}}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var h,d;const{op:t,isFullWork:i,replaceId:o,workState:n=z.Done}=e;this.tmpPoints.length=0;for(let f=0;f<t.length;f+=3){const g=new V(t[f],t[f+1],t[f+2]);if(this.tmpPoints.length>0){const p=this.tmpPoints[this.tmpPoints.length-1],m=C.Sub(g,p).uni();g.setv(m)}this.tmpPoints.push(g)}if(this.tmpPoints.length<2)return;const r=this.transformDataAll(!0),c=(h=this.workId)==null?void 0:h.toString(),l={name:c};let u;if(c&&r.length){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;u=this.draw({attrs:l,tasks:r,replaceId:o,layer:f,isDrawEraserlines:n===z.Done}),(d=this.vNodes)==null||d.setInfo(c,{rect:u,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Y.getCenterPos(u,f)})}return u}transformDataAll(e=!0){const t=this.filterSamePoints(this.tmpPoints,this.workOptions.thickness);return this.getTaskPoints(t,e&&this.workOptions.thickness||void 0)}draw(e){const{attrs:t,tasks:i,replaceId:o,effects:n,layer:r,removeDrawCount:c,isDrawEraserlines:l=!0}=e,{strokeColor:u,strokeType:h,thickness:d,zIndex:f,scale:g,rotate:p,translate:m,eraserlines:N}=this.workOptions;n!=null&&n.size&&(n.forEach(b=>{var x;(x=r.getElementById(b+""))==null||x.remove()}),n.clear()),c&&this.removeDrawCountNodes(r,c);let v;const I=[],k=r.worldPosition,w=r.worldScaling;for(let b=0;b<i.length;b++){const{pos:x,points:P}=i[b],{ps:E,rect:R}=this.computDrawPoints(P);let O;const D=P.length===1;h===te.Stroke||D?O=_e(E,!0):O=_e(E,!1);const A={pos:x,d:O,fillColor:h===te.Stroke||D?u:void 0,lineDash:h===te.Dotted&&!D?[1,d*2]:h===te.LongDotted&&!D?[d,d*2]:void 0,strokeColor:u,lineCap:h===te.Stroke||D?void 0:"round",lineWidth:h===te.Stroke||D?0:d};v=le(v,{x:Math.floor((R.x+x[0])*w[0]+k[0]-Y.SafeBorderPadding),y:Math.floor((R.y+x[1])*w[1]+k[1]-Y.SafeBorderPadding),w:Math.floor(R.w*w[0]+2*Y.SafeBorderPadding),h:Math.floor(R.h*w[1]+2*Y.SafeBorderPadding)}),I.push(A)}g&&(t.scale=g),p&&(t.rotate=p),m&&(t.translate=m);const S=new he.Group;if(v){this.centerPos=Y.getCenterPos(v,r);const b=h===te.Stroke&&!N;S.attr({...t,normalize:!0,anchor:[.5,.5],bgcolor:b?u:void 0,pos:this.centerPos,size:[(v.w-2*Y.SafeBorderPadding)/w[0],(v.h-2*Y.SafeBorderPadding)/w[1]],zIndex:f});const x=I.map(P=>(P.pos=[P.pos[0]-this.centerPos[0],P.pos[1]-this.centerPos[1]],new he.Path(P)));S.append(...x),b&&S.seal(),N&&(this.scaleType=ae.proportional,this.drawEraserlines({group:S,eraserlines:N,pos:this.centerPos,layer:r},l)),this.replace(r,o,S)}if(g||p||m){const b=S==null?void 0:S.getBoundingClientRect();b&&(v={x:Math.floor(b.x-Y.SafeBorderPadding),y:Math.floor(b.y-Y.SafeBorderPadding),w:Math.floor(b.width+Y.SafeBorderPadding*2),h:Math.floor(b.height+Y.SafeBorderPadding*2)})}return this.isDelete&&S.setAttribute("opacity",0),v}computDrawPoints(e){return this.workOptions.strokeType===te.Stroke||e.length===1?this.computStroke(e):this.computNomal(e)}computNomal(e){let t=this.workOptions.thickness;const i=e.map(o=>(t=Math.max(t,o.radius),o.point));return{ps:i,rect:fe(i,t)}}computStroke(e){return e.length===1?this.computDotStroke(e[0]):this.computLineStroke(e)}computLineStroke(e){const t=[],i=[];for(let l=0;l<e.length;l++){const{point:u,radius:h}=e[l];let d=u.v;l===0&&e.length>1&&(d=e[l+1].point.v);const f=C.Per(d).mul(h);t.push(V.Sub(u,f)),i.push(V.Add(u,f))}const o=e[e.length-1],n=V.GetSemicircleStroke(o.point,t[t.length-1],-1,8),r=V.GetSemicircleStroke(e[0].point,i[0],-1,8),c=t.concat(n,i.reverse(),r);return{ps:c,rect:fe(c)}}computDotStroke(e){const{point:t,radius:i}=e,o={x:t.x-i,y:t.y-i,w:i*2,h:i*2};return{ps:V.GetDotStroke(t,i,8),rect:o}}transformData(e,t){const{op:i,workState:o}=e;let n=this.tmpPoints.length-1,r=[];if(i!=null&&i.length&&o){const{strokeType:c,thickness:l}=this.workOptions,u=new Set;n=c===te.Stroke?this.updateTempPointsWithPressure(i,l,u):this.updateTempPoints(i,l,u);const h=t?this.tmpPoints:this.tmpPoints.slice(n);return r=this.getTaskPoints(h,l),{tasks:r,effects:u,consumeIndex:n}}return{tasks:r,consumeIndex:n}}computRadius(e,t){return e*.03*t+t*.5}getMinZ(e,t){return((t||Math.max(1,Math.floor(e*.3)))-e*.5)*100/e/3}getTaskPoints(e,t){var h;const i=[];if(e.length===0)return[];let o=0,n=e[0].x,r=e[0].y,c=[n,r],l=[],u=e[0].t;for(;o<e.length;){const d=e[o],f=d.x-n,g=d.y-r,p=d.z,m=t?this.computRadius(p,t):p;if(l.push({point:new V(f,g,p,e[o].v),radius:m}),o>0&&o<e.length-1){const N=e[o].getAngleByPoints(e[o-1],e[o+1]);if(N<60||N>300){const v=(h=l.pop())==null?void 0:h.point.clone();v&&i.push({taskId:u,pos:c,points:[...l,{point:v,radius:m}]}),n=e[o].x,r=e[o].y,c=[n,r];const I=d.x-n,k=d.y-r;l=[{point:new V(I,k,p),radius:m}],u=Date.now()}}o++}return i.push({taskId:u,pos:c,points:l}),i}updateTempPointsWithPressure(e,t,i){const o=Date.now(),n=this.tmpPoints.length;let r=n;for(let l=0;l<e.length;l+=2){r=Math.min(r,n);const u=this.tmpPoints.length,h=new V(e[l],e[l+1]);if(u===0){this.tmpPoints.push(h);continue}const d=u-1,f=this.tmpPoints[d],g=C.Sub(h,f).uni();if(h.isNear(f,t)){if(f.z<this.MAX_REPEAR){if(f.setz(Math.min(f.z+1,this.MAX_REPEAR)),r=Math.min(r,d),u>1){let N=u-1;for(;N>0;){const v=this.tmpPoints[N].distance(this.tmpPoints[N-1]),I=Math.max(this.tmpPoints[N].z-this.uniThickness*v,0);if(this.tmpPoints[N-1].z>=I)break;this.tmpPoints[N-1].setz(I),r=Math.min(r,N-1),N--}}}else r=1/0;continue}h.setv(g);const p=h.distance(f),m=Math.max(f.z-this.uniThickness*p,0);u>1&&C.Equals(g,f.v,.02)&&(m>0||f.z<=0)&&(i&&f.t&&i.add(f.t),this.tmpPoints.pop(),r=Math.min(d,r)),h.setz(m),this.tmpPoints.push(h)}if(r===1/0)return this.tmpPoints.length;let c=n;if(r===n){c=Math.max(c-1,0);const l=this.tmpPoints[c].t;l&&(i==null||i.add(l))}else{let l=n-1;for(c=r;l>=0;){const u=this.tmpPoints[l].t;if(u&&(i==null||i.add(u),l<=r)){c=l,l=-1;break}l--}}return this.tmpPoints[c].setT(o),c}updateTempPoints(e,t,i){var l;const o=Date.now(),n=this.tmpPoints.length;let r=n;for(let u=0;u<e.length;u+=2){const h=this.tmpPoints.length,d=new V(e[u],e[u+1]);if(h===0){this.tmpPoints.push(d);continue}const f=h-1,g=this.tmpPoints[f],p=C.Sub(d,g).uni();if(d.isNear(g,t/2)){r=Math.min(f,r);continue}C.Equals(p,g.v,.02)&&(i&&g.t&&i.add(g.t),this.tmpPoints.pop(),r=Math.min(f,r)),d.setv(p),this.tmpPoints.push(d)}let c=n;if(r===n){c=Math.max(c-1,0);const u=this.tmpPoints[c].t;u&&(i==null||i.add(u))}else{let u=Math.min(n-1,r);for(c=r;u>=0;){const h=(l=this.tmpPoints[u])==null?void 0:l.t;if(h&&(i==null||i.add(h),u<=r)){c=u,u=-1;break}u--}}return this.tmpPoints[c].setT(o),c}updateTempPointsWithPressureWhenDone(e){const{thickness:t}=this.workOptions,i=e.length,o=this.getMinZ(t);for(let n=0;n<i;n+=2){const r=this.tmpPoints.length,c=new V(e[n],e[n+1]);if(r===0){this.tmpPoints.push(c);continue}const l=r-1,u=this.tmpPoints[l],h=C.Sub(c,u).uni(),d=c.distance(u);if(r>1&&u.z===o)break;if(c.isNear(u,t/2)){if(i<3&&u.z<this.MAX_REPEAR&&(u.setz(Math.min(u.z+1,this.MAX_REPEAR)),r>1)){let g=r-1;for(;g>0;){const p=this.tmpPoints[g].distance(this.tmpPoints[g-1]),m=Math.max(this.tmpPoints[g].z-this.uniThickness*p,-t/4);if(this.tmpPoints[g-1].z>=m)break;this.tmpPoints[g-1].setz(m),g--}}continue}c.setv(h);const f=Math.max(u.z-this.uniThickness*d,o);r>1&&C.Equals(h,u.v,.02)&&u.z<=0&&this.tmpPoints.pop(),c.setz(f),this.tmpPoints.push(c)}}static updateNodeOpt(e){var l,u;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,strokeType:r}=i,c=o.get(t.name);return n&&(t.tagName==="GROUP"?SM(t)?t.setAttribute("bgcolor",n):t.children.forEach(h=>{h.setAttribute("strokeColor",n),h.getAttribute("fillColor")&&h.setAttribute("fillColor",n)}):(t.setAttribute("strokeColor",n),t.setAttribute("fillColor",n)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=n)),r&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=r),c&&o.setInfo(t.name,c),Y.updateNodeOpt(e)}}class jo extends Y{constructor(e){super(e);y(this,"toolsType",T.LaserPen);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"syncTimestamp");y(this,"syncIndex",0);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"consumeIndex",0);this.workOptions=e.toolsOpt,this.syncTimestamp=0}combineConsume(){}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:t,isSubWorker:i}=e,{workId:o,op:n}=t;if((n==null?void 0:n.length)===0)return{type:L.None};if(this.updateTempPoints(n||[]),this.consumeIndex>this.tmpPoints.length-4)return{type:L.None};const{strokeColor:r,thickness:c,strokeType:l}=this.workOptions,u=fe(this.tmpPoints,c);let h=!1;const d=this.syncIndex,f=this.tmpPoints.slice(this.consumeIndex);this.consumeIndex=this.tmpPoints.length-1,this.syncTimestamp===0&&(this.syncTimestamp=Date.now());const g={name:o==null?void 0:o.toString(),opacity:1,lineDash:l===te.Dotted?[1,c*2]:l===te.LongDotted?[c,c*2]:void 0,strokeColor:r,lineCap:"round",lineWidth:c,anchor:[.5,.5]},p=this.getTaskPoints(f);if(p.length){const N=Date.now();N-this.syncTimestamp>this.syncUnitTime&&(h=!0,this.syncTimestamp=N,this.syncIndex=this.tmpPoints.length),i&&this.draw({attrs:g,tasks:p,isDot:!1,layer:this.drawLayer||this.fullLayer})}const m=[];return this.tmpPoints.slice(d).forEach(N=>{m.push(N.x,N.y)}),{rect:{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]},type:L.DrawWork,dataType:B.Local,op:h?m:void 0,index:h?d*2:void 0,...this.baseConsumeResult}}consumeAll(){var n;const e=(n=this.workId)==null?void 0:n.toString();let t;if(this.tmpPoints.length-1>this.consumeIndex){let r=this.tmpPoints.slice(this.consumeIndex);const c=r.length===1,{strokeColor:l,thickness:u,strokeType:h}=this.workOptions;if(c){const g=this.computDotStroke({point:r[0],radius:u/2});r=g.ps,t=g.rect}else t=fe(this.tmpPoints,u);const d={name:e==null?void 0:e.toString(),fillColor:c?l:void 0,opacity:1,lineDash:h===te.Dotted&&!c?[1,u*2]:h===te.LongDotted&&!c?[u,u*2]:void 0,strokeColor:l,lineCap:c?void 0:"round",lineWidth:c?0:u,anchor:[.5,.5]},f=this.getTaskPoints(r);f.length&&this.draw({attrs:d,tasks:f,isDot:c,layer:this.drawLayer||this.fullLayer})}const i=[];this.tmpPoints.forEach(r=>{i.push(r.x,r.y)});const o=Ye(i);return{rect:t&&{x:t.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:t.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:t.w*this.fullLayer.worldScaling[0],h:t.h*this.fullLayer.worldScaling[1]},type:L.FullWork,dataType:B.Local,ops:o,index:this.syncIndex*2,...this.baseConsumeResult}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var p;const{op:t,replaceId:i,isFullWork:o}=e,{strokeColor:n,thickness:r,strokeType:c}=this.workOptions;if(!t.length){const m=fe(this.tmpPoints,r);return{x:m.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:m.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:m.w*this.fullLayer.worldScaling[0],h:m.h*this.fullLayer.worldScaling[1]}}const l=Math.max(0,this.tmpPoints.length-1);this.updateTempPoints(t||[]);let u,h=this.tmpPoints.slice(l);const d=h.length===1;if(d){const m=this.computDotStroke({point:h[0],radius:r/2});h=m.ps,u=m.rect}else u=fe(this.tmpPoints,r);const f={name:(p=this.workId)==null?void 0:p.toString(),fillColor:d?n:void 0,opacity:1,lineDash:c===te.Dotted&&!d?[1,r*2]:c===te.LongDotted&&!d?[r,r*2]:void 0,strokeColor:n,lineCap:d?void 0:"round",lineWidth:d?0:r,anchor:[.5,.5]},g=this.getTaskPoints(h);if(g.length){const m=o?this.fullLayer:this.drawLayer||this.fullLayer;this.draw({attrs:f,tasks:g,isDot:d,replaceId:i,layer:m})}return{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]}}computDotStroke(e){const{point:t,radius:i}=e,o={x:t.x-i,y:t.y-i,w:i*2,h:i*2};return{ps:V.GetDotStroke(t,i,8),rect:o}}updateTempPoints(e){const t=this.tmpPoints.length;for(let i=0;i<e.length;i+=2){if(t){const o=this.tmpPoints.slice(-1)[0];o&&o.x===e[i]&&o.y===e[i+1]&&this.tmpPoints.pop()}this.tmpPoints.push(new V(e[i],e[i+1]))}}async draw(e){const{attrs:t,tasks:i,isDot:o,layer:n}=e,{duration:r}=this.workOptions;for(const c of i){const l=new he.Path,{pos:u,points:h}=c;let d;o?d=_e(h,!0):d=_e(h,!1),l.attr({...t,pos:u,d});const{vertex:f,fragment:g}=this.workOptions;if(f&&g){const p=n.renderer.createProgram({vertex:f,fragment:g}),{width:m,height:N}=n.getResolution();l.setUniforms({u_time:0,u_resolution:[m,N]}),l.setProgram(p)}n.appendChild(l),l.transition(r).attr({scale:o?[.1,.1]:[1,1],lineWidth:o?0:1}).then(()=>{l.remove()})}}getTaskPoints(e){var l;const t=[];if(e.length===0)return[];let i=0,o=e[0].x,n=e[0].y,r=[o,n],c=[];for(;i<e.length;){const u=e[i],h=u.x-o,d=u.y-n;if(c.push(new V(h,d)),i>0&&i<e.length-1){const f=e[i].getAngleByPoints(e[i-1],e[i+1]);if(f<60||f>300){const g=(l=c.pop())==null?void 0:l.clone();g&&t.push({pos:r,points:[...c,g]}),o=e[i].x,n=e[i].y,r=[o,n];const p=u.x-o,m=u.y-n;c=[new V(p,m)]}}i++}return t.push({pos:r,points:c}),t}removeLocal(){}removeService(e){let t;const i=[];return this.fullLayer.getElementsByName(e).forEach(o=>{if(o.name===e){const n=o.getBoundingClientRect();t=le(t,{x:n.x,y:n.y,w:n.width,h:n.height}),i.push(o)}}),i.length&&i.forEach(o=>o.remove()),t}}const wt=class wt extends Y{constructor(e,t){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"toolsType",T.Eraser);y(this,"serviceWork");y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"worldPosition");y(this,"worldScaling");y(this,"eraserRect");y(this,"eraserPolyline");this.serviceWork=t,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(){}consumeService(){}setWorkOptions(e){super.setWorkOptions(e)}createEraserRect(e){const t=e[0]*this.worldScaling[0]+this.worldPosition[0],i=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:o,height:n}=wt.eraserSizes[this.workOptions.thickness];this.eraserRect={x:t-o*.5,y:i-n*.5,w:o,h:n},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const t=new C(this.tmpPoints[0],this.tmpPoints[1]),i=new C(this.tmpPoints[2],this.tmpPoints[3]),o=C.Sub(i,t).uni(),n=C.Dist(t,i),{width:r,height:c}=wt.eraserSizes[this.workOptions.thickness],l=Math.min(r,c),u=Math.round(n/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=C.Mul(o,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,t){const i=new C(e[0],e[1]),o=new C(t[0],t[1]),{width:n,height:r}=wt.eraserSizes[this.workOptions.thickness];return C.Dist(i,o)<Math.hypot(n,r)*.5}remove(e){const{curNodeMap:t,removeIds:i}=e;let o;for(const n of t.values())if(n.rect&&this.eraserRect&&this.eraserPolyline&&Yt(this.eraserRect,n.rect)){const{op:r}=n,c=[],l=[];for(let h=0;h<r.length;h+=3){const d=new C(r[h]*this.worldScaling[0]+this.worldPosition[0],r[h+1]*this.worldScaling[1]+this.worldPosition[1],r[h+2]);l.push(d),c.push(new V(d.x,d.y))}const u=c.length&&fe(c)||n.rect;Yt(u,this.eraserRect)&&(l.length>1?Us.polyline(l.map(d=>d.XY),this.eraserPolyline).length&&i.add(n.name):i.add(n.name),o=le(o,n.rect||u))}return i.forEach(n=>{var c;const r=this.fullLayer.getElementsByName(n);r[0]&&(r[0].remove(),Ee(r[0],this.fullLayer.parent),(c=this.vNodes)==null||c.delete(n))}),o&&(o.x-=Y.SafeBorderPadding,o.y-=Y.SafeBorderPadding,o.w+=Y.SafeBorderPadding*2,o.h+=Y.SafeBorderPadding*2),o}consume(e){const{op:t,disableEraseImage:i,disableEraseText:o}=e.data;if(!t||t.length===0)return{type:L.None,...this.baseConsumeResult};const n=this.tmpPoints.length;if(n>1&&this.isNear([t[0],t[1]],[this.tmpPoints[n-2],this.tmpPoints[n-1]]))return{type:L.None,...this.baseConsumeResult};n<3?this.tmpPoints.push(t[0],t[1]):this.tmpPoints.splice(2,2,t[0],t[1]);const r=this.computRectCenterPoints();let c;const l=new Set;if(!this.vNodes)return{type:L.None,...this.baseConsumeResult};const u=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap,{disableEraseImage:i,disableEraseText:o}));for(let h=0;h<r.length-1;h+=2){this.createEraserRect(r.slice(h,h+2));const d=this.remove({curNodeMap:u,removeIds:l});c=le(c,d)}return c&&l.size?{type:L.RemoveNode,rect:c,removeIds:[...l]}:{type:L.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var t;if(this.serviceWork){const i=new Map(e),o=this.serviceWork.selectorWorkShapes,n=this.serviceWork.workShapes;for(const r of o.values())if((t=r.selectIds)!=null&&t.length)for(const c of r.selectIds)i.delete(c);for(const r of n.keys())i.delete(r);return i}return e}};y(wt,"eraserSizes",_s);let Kt=wt;const je="++",Q="selector",Zt="all";var Bp="__lodash_hash_undefined__";function Fp(a){return this.__data__.set(a,Bp),this}var Vp=Fp;function $p(a){return this.__data__.has(a)}var Hp=$p,Qp=ao,Gp=Vp,Zp=Hp;function _t(a){var s=-1,e=a==null?0:a.length;for(this.__data__=new Qp;++s<e;)this.add(a[s])}_t.prototype.add=_t.prototype.push=Gp;_t.prototype.has=Zp;var ei=_t;function qp(a,s){for(var e=-1,t=a==null?0:a.length;++e<t;)if(s(a[e],e,a))return!0;return!1}var Xp=qp;function Jp(a,s){return a.has(s)}var ti=Jp,Kp=ei,_p=Xp,ef=ti,tf=1,sf=2;function of(a,s,e,t,i,o){var n=e&tf,r=a.length,c=s.length;if(r!=c&&!(n&&c>r))return!1;var l=o.get(a),u=o.get(s);if(l&&u)return l==s&&u==a;var h=-1,d=!0,f=e&sf?new Kp:void 0;for(o.set(a,s),o.set(s,a);++h<r;){var g=a[h],p=s[h];if(t)var m=n?t(p,g,h,s,a,o):t(g,p,h,a,s,o);if(m!==void 0){if(m)continue;d=!1;break}if(f){if(!_p(s,function(N,v){if(!ef(f,v)&&(g===N||i(g,N,e,t,o)))return f.push(v)})){d=!1;break}}else if(!(g===p||i(g,p,e,t,o))){d=!1;break}}return o.delete(a),o.delete(s),d}var Eo=of;function nf(a){var s=-1,e=Array(a.size);return a.forEach(function(t,i){e[++s]=[i,t]}),e}var rf=nf;function af(a){var s=-1,e=Array(a.size);return a.forEach(function(t){e[++s]=t}),e}var si=af,Ai=Ut,ji=bo,cf=Bs,lf=Eo,hf=rf,uf=si,df=1,pf=2,ff="[object Boolean]",gf="[object Date]",yf="[object Error]",Mf="[object Map]",mf="[object Number]",wf="[object RegExp]",vf="[object Set]",If="[object String]",Sf="[object Symbol]",Nf="[object ArrayBuffer]",Tf="[object DataView]",Ei=Ai?Ai.prototype:void 0,Ss=Ei?Ei.valueOf:void 0;function kf(a,s,e,t,i,o,n){switch(e){case Tf:if(a.byteLength!=s.byteLength||a.byteOffset!=s.byteOffset)return!1;a=a.buffer,s=s.buffer;case Nf:return!(a.byteLength!=s.byteLength||!o(new ji(a),new ji(s)));case ff:case gf:case mf:return cf(+a,+s);case yf:return a.name==s.name&&a.message==s.message;case wf:case If:return a==s+"";case Mf:var r=hf;case vf:var c=t&df;if(r||(r=uf),a.size!=s.size&&!c)return!1;var l=n.get(a);if(l)return l==s;t|=pf,n.set(a,s);var u=lf(r(a),r(s),t,i,o,n);return n.delete(a),u;case Sf:if(Ss)return Ss.call(a)==Ss.call(s)}return!1}var Cf=kf,Oi=To,bf=1,xf=Object.prototype,Lf=xf.hasOwnProperty;function Pf(a,s,e,t,i,o){var n=e&bf,r=Oi(a),c=r.length,l=Oi(s),u=l.length;if(c!=u&&!n)return!1;for(var h=c;h--;){var d=r[h];if(!(n?d in s:Lf.call(s,d)))return!1}var f=o.get(a),g=o.get(s);if(f&&g)return f==s&&g==a;var p=!0;o.set(a,s),o.set(s,a);for(var m=n;++h<c;){d=r[h];var N=a[d],v=s[d];if(t)var I=n?t(v,N,d,s,a,o):t(N,v,d,a,s,o);if(!(I===void 0?N===v||i(N,v,e,t,o):I)){p=!1;break}m||(m=d=="constructor")}if(p&&!m){var k=a.constructor,w=s.constructor;k!=w&&"constructor"in a&&"constructor"in s&&!(typeof k=="function"&&k instanceof k&&typeof w=="function"&&w instanceof w)&&(p=!1)}return o.delete(a),o.delete(s),p}var zf=Pf,Ns=co,Df=Eo,Af=Cf,jf=zf,Ri=fs,Wi=Bt,Yi=Vs,Ef=yo,Of=1,Ui="[object Arguments]",Bi="[object Array]",$t="[object Object]",Rf=Object.prototype,Fi=Rf.hasOwnProperty;function Wf(a,s,e,t,i,o){var n=Wi(a),r=Wi(s),c=n?Bi:Ri(a),l=r?Bi:Ri(s);c=c==Ui?$t:c,l=l==Ui?$t:l;var u=c==$t,h=l==$t,d=c==l;if(d&&Yi(a)){if(!Yi(s))return!1;n=!0,u=!1}if(d&&!u)return o||(o=new Ns),n||Ef(a)?Df(a,s,e,t,i,o):Af(a,s,c,e,t,i,o);if(!(e&Of)){var f=u&&Fi.call(a,"__wrapped__"),g=h&&Fi.call(s,"__wrapped__");if(f||g){var p=f?a.value():a,m=g?s.value():s;return o||(o=new Ns),i(p,m,e,t,o)}}return d?(o||(o=new Ns),jf(a,s,e,t,i,o)):!1}var Yf=Wf,Uf=Yf,Vi=Je;function Oo(a,s,e,t,i){return a===s?!0:a==null||s==null||!Vi(a)&&!Vi(s)?a!==a&&s!==s:Uf(a,s,e,t,Oo,i)}var Bf=Oo,Ff=Bf;function Vf(a,s){return Ff(a,s)}var $f=Vf;const it=Ct($f),rs=class rs extends Y{constructor(e){super(e);y(this,"toolsType",T.Selector);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"vNodes");y(this,"selectIds");y(this,"selectorColor");y(this,"strokeColor");y(this,"fillColor");y(this,"oldSelectRect");y(this,"canRotate",!1);y(this,"canTextEdit",!1);y(this,"canLock",!1);y(this,"scaleType",ae.all);y(this,"toolsTypes");y(this,"shapeOpt");y(this,"textOpt");y(this,"isLocked");y(this,"thickness");y(this,"strokeType");y(this,"useStroke");this.workOptions=e.toolsOpt,this.vNodes=e.vNodes}computSelector(e=!0){const t=fe(this.tmpPoints);if(t.w===0||t.h===0)return{selectIds:[],intersectRect:void 0,subNodeMap:new Map};const{rectRange:i,nodeRange:o}=this.vNodes.getRectIntersectRange(t,e);return{selectIds:[...o.keys()],intersectRect:i,subNodeMap:o}}updateTempPoints(e){const t=this.tmpPoints.length,i=e.length;if(i>1){const o=new V(e[i-2]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[i-1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]);t===2?this.tmpPoints.splice(1,1,o):this.tmpPoints.push(o)}}drawSelector(e){const{drawRect:t,subNodeMap:i,selectorId:o,layer:n,isService:r}=e,c=new he.Group({pos:[t.x,t.y],anchor:[0,0],size:[t.w,t.h],id:o,name:o,zIndex:9999}),l=[];if(r){const u=new he.Rect({normalize:!0,pos:[t.w/2,t.h/2],lineWidth:1,strokeColor:this.selectorColor||this.workOptions.strokeColor,width:t.w,height:t.h,name:rs.selectorBorderId});l.push(u)}i.forEach((u,h)=>{const d=[u.rect.x+u.rect.w/2-t.x,u.rect.y+u.rect.h/2-t.y],f=new he.Rect({normalize:!0,pos:d,lineWidth:1,strokeColor:i.size>1?this.selectorColor||this.workOptions.strokeColor:void 0,width:u.rect.w,height:u.rect.h,id:`selector-${h}`,name:`selector-${h}`});l.push(f)}),l&&c.append(...l),(n==null?void 0:n.parent).appendChild(c)}draw(e,t,i,o=!1){var c,l;const{intersectRect:n,subNodeMap:r}=i;(l=(c=t.parent)==null?void 0:c.getElementById(e))==null||l.remove(),n&&this.drawSelector({drawRect:n,subNodeMap:r,selectorId:e,layer:t,isService:o})}getSelecteorInfo(e){this.scaleType=ae.all,this.canRotate=!1,this.textOpt=void 0,this.strokeColor=void 0,this.fillColor=void 0,this.canTextEdit=!1,this.canLock=!1,this.isLocked=!1,this.toolsTypes=void 0,this.shapeOpt=void 0,this.thickness=void 0,this.strokeType=void 0,this.useStroke=!1;const t=new Set;let i,o=!0;for(const n of e.values()){const{opt:r,canRotate:c,scaleType:l,toolsType:u}=n;this.selectorColor=this.workOptions.strokeColor,r.strokeColor&&(this.strokeColor=r.strokeColor),r.fillColor&&(this.fillColor=r.fillColor),r.textOpt&&(this.textOpt=r.textOpt),r.thickness&&(this.thickness=r.thickness),u!==T.Pencil&&(o=!1),r.strokeType&&(this.strokeType=r.strokeType),u===T.SpeechBalloon&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.placement=r.placement),u===T.Polygon&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=r.vertices),u===T.Star&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=r.vertices,this.shapeOpt.innerRatio=r.innerRatio,this.shapeOpt.innerVerticeStep=r.innerVerticeStep),u===T.Text&&(this.textOpt=r),e.size===1&&(this.textOpt&&(this.canTextEdit=!0),this.canRotate=c,this.scaleType=l),u===T.Image&&(i=n),(l===ae.proportional&&this.scaleType!==ae.none||l===ae.none)&&(this.scaleType=l)}o&&(this.useStroke=!0),t.size&&(this.toolsTypes=[...t]),i&&(e.size===1?(this.canLock=!0,i.opt.locked&&(this.isLocked=!0,this.scaleType=ae.none,this.canRotate=!1,this.textOpt=void 0,this.fillColor=void 0,this.selectorColor="rgb(177,177,177)",this.strokeColor=void 0,this.canTextEdit=!1,this.thickness=void 0,this.strokeType=void 0,this.useStroke=void 0)):e.size>1&&!i.opt.locked&&(this.canLock=!1,this.canRotate=!1))}getChildrenPoints(){var e,t;if(this.scaleType===ae.both&&((e=this.selectIds)==null?void 0:e.length)===1){const i=this.selectIds[0],o=(t=this.vNodes.get(i))==null?void 0:t.op;if(o){const n=[];for(let r=0;r<o.length;r+=3)n.push([o[r],o[r+1]]);return n}}}consume(e){const{op:t,workState:i}=e.data;let o=this.oldSelectRect;if(i===z.Start&&(o=this.unSelectedAllIds()),!(t!=null&&t.length)||!this.vNodes.curNodeMap.size)return{type:L.None};this.updateTempPoints(t);const n=this.computSelector();if(this.selectIds&&it(this.selectIds,n.selectIds))return{type:L.None};this.selectIds=n.selectIds;const r=n.intersectRect;this.getSelecteorInfo(n.subNodeMap),this.draw(Q,this.fullLayer,n),this.oldSelectRect=r;const c=this.getChildrenPoints();return{type:L.Select,dataType:B.Local,rect:le(r,o),selectIds:n.selectIds,selectRect:r,selectorColor:this.selectorColor,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:c,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}consumeAll(){var t,i;let e=this.oldSelectRect;if(!((t=this.selectIds)!=null&&t.length)&&this.tmpPoints[0]&&this.selectSingleTool(this.tmpPoints[0].XY,Q,!1),(i=this.selectIds)!=null&&i.length&&(e=this.selectedByIds(this.selectIds)),e){const o=this.getChildrenPoints();return{type:L.Select,dataType:B.Local,rect:this.oldSelectRect,selectIds:this.selectIds,selectorColor:this.selectorColor,selectRect:this.oldSelectRect,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:o,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}return{type:L.None}}consumeService(){}clearTmpPoints(){this.tmpPoints.length=0}clearSelectData(){this.selectIds=void 0,this.oldSelectRect=void 0}selectSingleTool(e,t=Q,i=!1){if(e.length===2){const o=e[0],n=e[1];let r;const{nodeRange:c}=this.vNodes.getRectIntersectRange({x:o,y:n,w:0,h:0},!1),l=[...c.values()].sort((u,h)=>(h.opt.zIndex||0)-(u.opt.zIndex||0));for(const u of l){const h=this.fullLayer.getElementsByName(u.name);if(Ho(h).find(f=>f.isPointCollision(o,n))){r=u;break}}if(r){const u=r.name;if(!it(this.oldSelectRect,r.rect)){const h=new Map([[u,r]]);this.getSelecteorInfo(h),this.draw(t,this.fullLayer,{intersectRect:r.rect,subNodeMap:h,selectIds:this.selectIds||[]},i)}this.selectIds=[u],this.oldSelectRect=r.rect}}}unSelectedAllIds(){let e;for(const[t,i]of this.vNodes.curNodeMap.entries())i.isSelected&&(e=le(e,i.rect),this.vNodes.unSelected(t));return e}unSelectedByIds(e){let t;for(const i of e){const o=this.vNodes.get(i);o&&o.isSelected&&(t=le(t,o.rect),this.vNodes.unSelected(i))}return t}selectedByIds(e){let t;for(const i of e){const o=this.vNodes.get(i);o&&(t=le(t,o.rect),this.vNodes.selected(i))}return t}getSelectorRect(e,t){var r;let i;const o=(r=e.parent)==null?void 0:r.getElementById(t),n=o==null?void 0:o.getBoundingClientRect();return n&&(i=le(i,{x:Math.floor(n.x),y:Math.floor(n.y),w:Math.floor(n.width+1),h:Math.floor(n.height+1)})),i}isCanFillColor(e){return e===T.Ellipse||e===T.Triangle||e===T.Rectangle||e===T.Polygon||e===T.Star||e===T.SpeechBalloon}async updateSelector(e){const{updateSelectorOpt:t,selectIds:i,vNodes:o,willSerializeData:n,worker:r,offset:c}=e,l=this.fullLayer;if(!l)return;let u;const h=new Map,{originPoint:d,workState:f,angle:g,translate:p,dir:m,scale:N}=t;c&&(p?t.translate=[p[0]+c[0],p[1]+c[1]]:t.translate=c);let v;if(d||p||De(g)){if(f===z.Start&&i)return o.setTargetAssignKeys(i),{type:L.Select,dataType:B.Local,selectRect:this.oldSelectRect,rect:this.oldSelectRect};if(v=o.getLastTarget(),!v)return}if(i)for(const w of i){const S=o.get(w);if(S){const{toolsType:b,opt:x}=S,P=(l==null?void 0:l.getElementsByName(w))[0];if(P){const E={...t};let R;const O=Y.isWillRefresh({toolsType:b,opt:x,updateOpt:E,vNodes:o,node:P,willSerializeData:n});if(b){R=v==null?void 0:v.get(w);const D=$o(b);if(D==null||D.updateNodeOpt({node:P,opt:E,vNodes:o,willSerializeData:n,targetNode:R}),S&&r&&O){const A=r.createWorkShapeNode({workId:w,toolsType:b,toolsOpt:S.opt});A==null||A.setWorkId(w);let G;if(b===T.Image)G=await A.consumeServiceAsync({isFullWork:!0,replaceId:w,worker:r});else if(b===T.Text)G=await A.consumeServiceAsync({isFullWork:!0,replaceId:w});else try{G=A==null?void 0:A.consumeService({op:S.op,isFullWork:!0,replaceId:w,workState:f})}catch{continue}G&&(S.rect=G)}S&&(h.set(w,S),u=le(u,S.rect))}}}}v&&f===z.Done&&(o.deleteLastTarget(),v=void 0);const I=u;if(d&&p&&N&&m&&I&&!c){const w=[[I.x,I.y],[I.x+I.w,I.y],[I.x+I.w,I.y+I.h],[I.x,I.y+I.h]];let S;switch(m){case"top":case"topLeft":case"left":p[0]>0&&p[1]>0?S=w[0]:p[0]>0?S=w[3]:p[1]>0?S=w[1]:S=w[2];break;case"topRight":p[0]<0&&p[1]>0?S=w[1]:p[0]<0?S=w[2]:p[1]>0?S=w[0]:S=w[3];break;case"right":case"bottomRight":case"bottom":p[0]<0&&p[1]<0?S=w[2]:p[0]<0?S=w[1]:p[1]<0?S=w[3]:S=w[0];break;case"bottomLeft":p[0]>0&&p[1]<0?S=w[3]:p[0]>0?S=w[0]:p[1]<0?S=w[2]:S=w[1];break}const b=S&&[d[0]-S[0],d[1]-S[1]]||[0,0];if(!it(b,[0,0]))return await this.updateSelector({...e,updateSelectorOpt:{workState:f},offset:b})}this.getSelecteorInfo(h),this.draw(Q,l,{selectIds:i||[],subNodeMap:h,intersectRect:I});const k=le(this.oldSelectRect,I);return this.oldSelectRect=I,{type:L.Select,dataType:B.Local,selectRect:I,renderRect:u,rect:le(k,I),selectIds:i}}blurSelector(){const e=this.unSelectedAllIds();return{type:L.Select,dataType:B.Local,rect:e,selectIds:[],willSyncService:!0}}getRightServiceId(e){return e.replace(je,"-")}selectServiceNode(e,t,i){const{selectIds:o}=t,n=this.getRightServiceId(e),r=this.getSelectorRect(this.fullLayer,n);let c;const l=new Map;return o==null||o.forEach(u=>{const h=this.vNodes.get(u);h&&(c=le(c,h.rect),l.set(u,h))}),this.getSelecteorInfo(l),this.draw(n,this.fullLayer,{intersectRect:c,selectIds:o||[],subNodeMap:l},i),le(c,r)}reRenderSelector(){var i;let e;const t=new Map;return(i=this.selectIds)==null||i.forEach(o=>{const n=this.vNodes.get(o);n&&(e=le(e,n.rect),t.set(o,n))},this),this.getSelecteorInfo(t),this.draw(Q,this.fullLayer,{intersectRect:e,subNodeMap:t,selectIds:this.selectIds||[]}),this.oldSelectRect=e,e}updateSelectIds(e){var n;let t;const i=(n=this.selectIds)==null?void 0:n.filter(r=>!e.includes(r));if(i!=null&&i.length&&(t=this.unSelectedByIds(i)),e.length){const r=this.selectedByIds(e);t=le(t,r)}this.selectIds=e;const o=this.reRenderSelector();return{bgRect:t,selectRect:o}}cursorHover(e){var n,r;const t=this.oldSelectRect;this.selectIds=[];const i=(n=this.workId)==null?void 0:n.toString(),o=[e[0]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]];if(this.selectSingleTool(o,i,!0),this.oldSelectRect&&!it(t,this.oldSelectRect))return{type:L.CursorHover,dataType:B.Local,rect:le(t,this.oldSelectRect),selectorColor:this.selectorColor,willSyncService:!1};if((r=this.selectIds)!=null&&r.length||(this.oldSelectRect=void 0),t&&!this.oldSelectRect)return this.cursorBlur(),{type:L.CursorHover,dataType:B.Local,rect:t,selectorColor:this.selectorColor,willSyncService:!1}}cursorBlur(){var t,i;this.selectIds=[];const e=(t=this.workId)==null?void 0:t.toString();((i=this.fullLayer)==null?void 0:i.parent).children.forEach(o=>{o.name===e&&o.remove()})}};y(rs,"selectorBorderId","selector-border");let es=rs;class Ro extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.both);y(this,"toolsType",T.Arrow);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"arrowTipWidth");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.arrowTipWidth=this.workOptions.thickness*4,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:f})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Y.getCenterPos(i,t)}),{rect:i,...this.baseConsumeResult,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0}}draw(e){const{workId:t,layer:i,isDrawEraserlines:o}=e,{strokeColor:n,thickness:r,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f}=this.workOptions,g=i.worldPosition,p=i.worldScaling,{points:m,pos:N,rect:v,isTriangle:I,trianglePoints:k,trianglePos:w}=this.computDrawPoints(r),S=[v.x+v.w/2,v.y+v.h/2],b={pos:S,name:t,id:t,zIndex:c,anchor:[.5,.5],size:[v.w,v.h]};l&&(b.scale=l),u&&(b.rotate=u),h&&(b.translate=h);const x=new he.Group(b),P={points:k,pos:[w[0]-S[0],w[1]-S[1]],fillColor:n,strokeColor:n,lineWidth:0,normalize:!1},E=new he.Polyline(P);if(x.append(E),!I&&m&&N){const O={points:m,pos:[N[0]-S[0],N[1]-S[1]],fillColor:n,strokeColor:n,lineDash:d===te.Dotted&&!I?[1,r*2]:d===te.LongDotted&&!I?[r,r*2]:void 0,lineCap:d===te.Normal?void 0:"round",lineWidth:r,normalize:!1},D=new he.Polyline(O);x.append(D)}f&&(this.scaleType=ae.proportional,this.drawEraserlines({group:x,eraserlines:f,pos:S,layer:i},o)),this.replace(i,t,x);let R={x:Math.floor(v.x*p[0]+g[0]-Y.SafeBorderPadding),y:Math.floor(v.y*p[1]+g[1]-Y.SafeBorderPadding),w:Math.floor(v.w*p[0]+2*Y.SafeBorderPadding),h:Math.floor(v.h*p[1]+2*Y.SafeBorderPadding)};if(l||u||h){const O=x.getBoundingClientRect();R={x:Math.floor(O.x-Y.SafeBorderPadding),y:Math.floor(O.y-Y.SafeBorderPadding),w:Math.floor(O.width+Y.SafeBorderPadding*2),h:Math.floor(O.height+Y.SafeBorderPadding*2)}}return this.isDelete&&x.setAttribute("opacity",0),R}computDrawPoints(e){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.arrowTipWidth?this.computFullArrowPoints(e):this.computTrianglePoints()}computFullArrowPoints(e){const t=C.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),i=C.Per(t).mul(e/2),o=V.Sub(this.tmpPoints[0],i),n=V.Add(this.tmpPoints[0],i),r=C.Mul(t,this.arrowTipWidth),c=C.Sub(this.tmpPoints[1],r),l=V.Sub(c,i),u=V.Add(c,i),h=C.Per(t).mul(e*1.5),d=V.Sub(c,h),f=V.Add(c,h),g=[this.tmpPoints[0],c],p=[d,this.tmpPoints[1],f],m=[o,n,...p,l,u];return{trianglePoints:p.map(N=>V.Sub(N,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,points:g.map(N=>V.Sub(N,this.tmpPoints[0]).XY).flat(1),rect:fe(m),isTriangle:!1,pos:this.tmpPoints[0].XY}}computTrianglePoints(){const e=C.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),t=this.tmpPoints[1].distance(this.tmpPoints[0]),i=C.Per(e).mul(Math.floor(t*3/8)),o=V.Sub(this.tmpPoints[0],i),n=V.Add(this.tmpPoints[0],i),r=[o,this.tmpPoints[1],n];return{trianglePoints:r.map(c=>V.Sub(c,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,rect:fe(r),isTriangle:!0}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,strokeType:r}=i,c=o.get(t.name);return n&&(t.tagName==="GROUP"?t.children.forEach(h=>{h.setAttribute("strokeColor",n),h.getAttribute("fillColor")&&h.setAttribute("fillColor",n)}):(t.setAttribute("strokeColor",n),t.setAttribute("fillColor",n)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=n)),r&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=r),c&&o.setInfo(t.name,c),Y.updateNodeOpt(e)}}class Wo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.Ellipse);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};if(!o){const d=Date.now();return d-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=d,{type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult,op:this.tmpPoints.map(f=>[...f.XY,0]).flat(1),isSync:!0,index:0}):{type:L.None}}let h;if(o||n){const d=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:d,isDrawing:!0});const f=d.parent.parent,g={x:0,y:0,w:Math.floor(f.width),h:Math.floor(f.height)};if(ri(h,g)!==ut.outside){const m=le(h,this.oldRect);return this.oldRect=h,{rect:m,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}return{type:L.None}}return{type:L.None}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,...this.baseConsumeResult,ops:n,isSync:!0}}draw(e){const{workId:t,layer:i,isDrawing:o,isDrawEraserlines:n}=e,{strokeColor:r,fillColor:c,thickness:l,zIndex:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:p}=this.workOptions,m=i.worldScaling,{radius:N,rect:v,pos:I}=this.computDrawPoints(l),k={closeType:"normal",radius:N,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:r,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:g===te.Dotted?[1,l*2]:g===te.LongDotted?[l,l*2]:void 0},w={name:t,id:t,zIndex:u,pos:I,anchor:[.5,.5],size:[v.w,v.h]};h&&(w.scale=h),d&&(w.rotate=d),f&&(w.translate=f);const S=new he.Group(w);if(o){const P=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:r,lineWidth:1,scale:[1/m[0],1/m[1]]});S.append(P)}const b=new he.Ellipse({...k,pos:[0,0]});S.append(b),p&&(this.scaleType=ae.proportional,this.drawEraserlines({group:S,eraserlines:p,pos:I,layer:i},n)),this.replace(i,t,S);const x=S.getBoundingClientRect();return this.isDelete&&S.setAttribute("opacity",0),{x:Math.floor(x.x-Y.SafeBorderPadding),y:Math.floor(x.y-Y.SafeBorderPadding),w:Math.floor(x.width+Y.SafeBorderPadding*2),h:Math.floor(x.height+Y.SafeBorderPadding*2)}}computDrawPoints(e){const t=fe(this.tmpPoints),i=fe(this.tmpPoints,e),o=[Math.floor(t.x+t.w/2),Math.floor(t.y+t.h/2)];return{rect:i,pos:o,radius:[Math.floor(t.w/2),Math.floor(t.h/2)]}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,strokeType:c}=i,l=o.get(t.name);let u=t;return t.tagName==="GROUP"&&(u=t.children[0]),n&&(u.setAttribute("strokeColor",n),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=n)),r&&(r==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",r),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=r)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&o.setInfo(t.name,l),Y.updateNodeOpt(e)}}class Yo extends Y{constructor(e){super(e);y(this,"canRotate",!0);y(this,"scaleType",ae.all);y(this,"toolsType",T.Rectangle);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}transformData(){const e=fe(this.tmpPoints);return[[e.x,e.y,0],[e.x+e.w,e.y,0],[e.x+e.w,e.y+e.h,0],[e.x,e.y+e.h,0]]}computDrawPoints(e){const{thickness:t}=this.workOptions,i=[];for(const r of e)i.push(new C(...r));const o=fe(i,t),n=[o.x+o.w/2,o.y+o.h/2];return{rect:o,pos:n,points:i.map(r=>r.XY).flat(1)}}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};const h=this.transformData();let d;if(o||n){const g=i?this.fullLayer:this.drawLayer||this.fullLayer;d=this.draw({ps:h,workId:r,layer:g,isDrawing:!0})}if(!o){const g=Date.now();return g-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=g,{type:L.DrawWork,dataType:B.Local,op:h.flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const f=le(d,this.oldRect);return this.oldRect=d,{rect:f,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var c;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.transformData(),i=this.fullLayer,o=this.draw({ps:t,workId:e,layer:i,isDrawing:!1});this.oldRect=o;const n=t.flat(1),r=Ye(n);return(c=this.vNodes)==null||c.setInfo(e,{rect:o,op:n,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:o&&Y.getCenterPos(o,i)}),{rect:o,type:L.FullWork,dataType:B.Local,ops:r,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawing:o,ps:n,replaceId:r,isDrawEraserlines:c=!0}=e,{strokeColor:l,fillColor:u,thickness:h,zIndex:d,scale:f,rotate:g,translate:p,strokeType:m,eraserlines:N}=this.workOptions,v=i.worldPosition,I=i.worldScaling,{points:k,rect:w,pos:S}=this.computDrawPoints(n),b={close:!0,normalize:!0,points:k,lineWidth:h,fillColor:u!=="transparent"&&u||void 0,strokeColor:l,lineJoin:"round",lineCap:"round",lineDash:m===te.Dotted?[1,h*2]:m===te.LongDotted?[h,h*2]:void 0};let x={x:Math.floor(w.x*I[0]+v[0]-Y.SafeBorderPadding),y:Math.floor(w.y*I[1]+v[1]-Y.SafeBorderPadding),w:Math.floor(w.w*I[0]+2*Y.SafeBorderPadding),h:Math.floor(w.h*I[0]+2*Y.SafeBorderPadding)};const P=new he.Group({name:t,id:t,zIndex:d,pos:S,anchor:[.5,.5],size:[w.w,w.h],scale:f,rotate:g,translate:p}),E=new he.Polyline({...b,pos:[0,0]});if(P.appendChild(E),o){const R=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:l,lineWidth:1,scale:[1/I[0],1/I[1]]});P.appendChild(R)}if(N&&(this.scaleType=ae.proportional,this.drawEraserlines({group:P,eraserlines:N,pos:S,layer:i},c)),this.replace(i,r||t,P),f||g||p){const R=P.getBoundingClientRect();x={x:Math.floor(R.x-Y.SafeBorderPadding),y:Math.floor(R.y-Y.SafeBorderPadding),w:Math.floor(R.width+2*Y.SafeBorderPadding),h:Math.floor(R.height+2*Y.SafeBorderPadding)}}return this.isDelete&&P.setAttribute("opacity",0),x}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var h,d;const{op:t,isFullWork:i,replaceId:o,workState:n=z.Done}=e,r=(h=this.workId)==null?void 0:h.toString();if(!r)return;const c=[];for(let f=0;f<t.length;f+=3)c.push([t[f],t[f+1],t[f+2]]);const l=i?this.fullLayer:this.drawLayer||this.fullLayer,u=this.draw({ps:c,workId:r,layer:l,isDrawing:!1,replaceId:o,isDrawEraserlines:n===z.Done});return this.oldRect=u,(d=this.vNodes)==null||d.setInfo(r,{rect:u,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Y.getCenterPos(u,l)}),u}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,strokeType:c}=i,l=o.get(t.name);let u=t;return t.tagName==="GROUP"&&(u=t.children[0]),n&&(u.setAttribute("strokeColor",n),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=n)),r&&(r==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",r),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=r)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&o.setInfo(t.name,l),Y.updateNodeOpt(e)}}class Uo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.Star);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:f,isDrawing:!0})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawing:o,isDrawEraserlines:n=!0}=e,{strokeColor:r,fillColor:c,thickness:l,zIndex:u,vertices:h,innerVerticeStep:d,innerRatio:f,scale:g,rotate:p,translate:m,strokeType:N,eraserlines:v}=this.workOptions,I=i.worldScaling,{rect:k,pos:w,points:S}=this.computDrawPoints(l,h,d,f),b={close:!0,points:S,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:r,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:N===te.Dotted?[1,l*2]:N===te.LongDotted?[l,l*2]:void 0},x={name:t,id:t,zIndex:u,pos:w,anchor:[.5,.5],size:[k.w,k.h]};g&&(x.scale=g),p&&(x.rotate=p),m&&(x.translate=m);const P=new he.Group(x);if(o){const O=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:r,lineWidth:1,scale:[1/I[0],1/I[1]]});P.append(O)}const E=new he.Polyline({...b,pos:[0,0]});P.append(E),v&&(this.scaleType=ae.proportional,this.drawEraserlines({group:P,eraserlines:v,pos:w,layer:i},n)),this.replace(i,t,P);const R=P.getBoundingClientRect();return this.isDelete&&P.setAttribute("opacity",0),{x:Math.floor(R.x-Y.SafeBorderPadding),y:Math.floor(R.y-Y.SafeBorderPadding),w:Math.floor(R.width+Y.SafeBorderPadding*2),h:Math.floor(R.height+Y.SafeBorderPadding*2)}}computDrawPoints(e,t,i,o){const n=fe(this.tmpPoints),r=[Math.floor(n.x+n.w/2),Math.floor(n.y+n.h/2)],c=_o(n.w,n.h),l=Math.floor(Math.min(n.w,n.h)/2),u=o*l,h=[],d=2*Math.PI/t;for(let g=0;g<t;g++){const p=g*d-.5*Math.PI;let m,N;g%i===1?(m=u*c[0]*Math.cos(p),N=u*c[1]*Math.sin(p)):(m=l*c[0]*Math.cos(p),N=l*c[1]*Math.sin(p),h.push(m,N)),h.push(m,N)}return{rect:fe(this.tmpPoints,e),pos:r,points:h}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n)||V.Sub(o,i).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var m;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,toolsType:c,vertices:l,innerVerticeStep:u,innerRatio:h,strokeType:d}=i,f=o.get(t.name),g=f==null?void 0:f.opt;let p=t;return t.tagName==="GROUP"&&(p=t.children[0]),n&&(p.setAttribute("strokeColor",n),g!=null&&g.strokeColor&&(g.strokeColor=n)),r&&(r==="transparent"?p.setAttribute("fillColor","rgba(0,0,0,0)"):p.setAttribute("fillColor",r),g!=null&&g.fillColor&&(g.fillColor=r)),c===T.Star&&(l&&(g.vertices=l),u&&(g.innerVerticeStep=u),h&&(g.innerRatio=h)),d&&(f!=null&&f.opt)&&((m=f.opt)!=null&&m.strokeType)&&(f.opt.strokeType=d),f&&o.setInfo(t.name,{...f,opt:g}),Y.updateNodeOpt(e)}}class Bo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.Polygon);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,{op:r}=t,c=this.workId,l=r==null?void 0:r.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(r[0],r[1])],u=!1):u=this.updateTempPoints(r),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:c,layer:f,isDrawing:!0})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawing:o,isDrawEraserlines:n=!0}=e,{strokeColor:r,fillColor:c,thickness:l,zIndex:u,vertices:h,scale:d,rotate:f,translate:g,strokeType:p,eraserlines:m}=this.workOptions,N=i.worldScaling,{rect:v,pos:I,points:k}=this.computDrawPoints(l,h),w={close:!0,points:k,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:r,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:p===te.Dotted?[1,l*2]:p===te.LongDotted?[l,l*2]:void 0},S={name:t,id:t,zIndex:u,pos:I,anchor:[.5,.5],size:[v.w,v.h]};d&&(S.scale=d),f&&(S.rotate=f),g&&(S.translate=g);const b=new he.Group(S);if(o){const E=new he.Path({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:r,lineWidth:1,scale:[1/N[0],1/N[1]]});b.append(E)}const x=new he.Polyline({...w,pos:[0,0]});b.append(x),m&&(this.scaleType=ae.proportional,this.drawEraserlines({group:b,eraserlines:m,pos:I,layer:i},n)),this.replace(i,t,b);const P=b.getBoundingClientRect();return this.isDelete&&b.setAttribute("opacity",0),{x:Math.floor(P.x-Y.SafeBorderPadding),y:Math.floor(P.y-Y.SafeBorderPadding),w:Math.floor(P.width+Y.SafeBorderPadding*2),h:Math.floor(P.height+Y.SafeBorderPadding*2)}}computDrawPoints(e,t){const i=fe(this.tmpPoints),o=[Math.floor(i.x+i.w/2),Math.floor(i.y+i.h/2)],n=_o(i.w,i.h),r=Math.floor(Math.min(i.w,i.h)/2),c=[],l=2*Math.PI/t;for(let h=0;h<t;h++){const d=h*l-.5*Math.PI,f=r*n[0]*Math.cos(d),g=r*n[1]*Math.sin(d);c.push(f,g)}return{rect:fe(this.tmpPoints,e),pos:o,points:c}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n)||V.Sub(o,i).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,toolsType:c,vertices:l,strokeType:u}=i,h=o.get(t.name),d=h==null?void 0:h.opt;let f=t;return t.tagName==="GROUP"&&(f=t.children[0]),n&&(f.setAttribute("strokeColor",n),d!=null&&d.strokeColor&&(d.strokeColor=n)),r&&(r==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",r),d!=null&&d.fillColor&&(d.fillColor=r)),c===T.Polygon&&l&&(d.vertices=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&o.setInfo(t.name,{...h,opt:d}),Y.updateNodeOpt(e)}}class Qe{static bezier(s,e){const t=[];for(let i=0;i<e.length;i+=4){const o=e[i],n=e[i+1],r=e[i+2],c=e[i+3];o&&n&&r&&c?t.push(...Qe.getBezierPoints(s,o,n,r,c)):o&&n&&r?t.push(...Qe.getBezierPoints(s,o,n,r)):o&&n?t.push(...Qe.getBezierPoints(s,o,n)):o&&t.push(o)}return t}static getBezierPoints(s=10,e,t,i,o){let n=null;const r=[];!i&&!o?n=Qe.oneBezier:i&&!o?n=Qe.twoBezier:i&&o&&(n=Qe.threeBezier);for(let c=0;c<s;c++)n&&r.push(n(c/s,e,t,i,o));return o?r.push(o):i&&r.push(i),r}static oneBezier(s,e,t){const i=e.x+(t.x-e.x)*s,o=e.y+(t.y-e.y)*s;return new C(i,o)}static twoBezier(s,e,t,i){const o=(1-s)*(1-s)*e.x+2*s*(1-s)*t.x+s*s*i.x,n=(1-s)*(1-s)*e.y+2*s*(1-s)*t.y+s*s*i.y;return new C(o,n)}static threeBezier(s,e,t,i,o){const n=e.x*(1-s)*(1-s)*(1-s)+3*t.x*s*(1-s)*(1-s)+3*i.x*s*s*(1-s)+o.x*s*s*s,r=e.y*(1-s)*(1-s)*(1-s)+3*t.y*s*(1-s)*(1-s)+3*i.y*s*s*(1-s)+o.y*s*s*s;return new C(n,r)}}class Fo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.all);y(this,"toolsType",T.SpeechBalloon);y(this,"ratio",.8);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){var f;const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=(f=t==null?void 0:t.workId)==null?void 0:f.toString();if(!r)return{type:L.None};const{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const g=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:g,isDrawing:!0})}if(!o){const g=Date.now();return g-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=g,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(p=>[...p.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawEraserlines:o=!0}=e,{strokeColor:n,fillColor:r,thickness:c,zIndex:l,placement:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:p}=this.workOptions,{rect:m,pos:N,points:v}=this.computDrawPoints(c,u),I={points:v.map(x=>x.XY),lineWidth:c,fillColor:r!=="transparent"&&r||void 0,strokeColor:n,normalize:!0,className:`${N[0]},${N[1]}`,close:!0,lineJoin:"round",lineCap:"round",lineDash:g===te.Dotted?[1,c*2]:g===te.LongDotted?[c,c*2]:void 0},k={name:t,id:t,zIndex:l,pos:N,anchor:[.5,.5],size:[m.w,m.h]};h&&(k.scale=h),d&&(k.rotate=d),f&&(k.translate=f);const w=new he.Group(k),S=new he.Polyline({...I,pos:[0,0]});w.append(S),p&&(this.scaleType=ae.proportional,this.drawEraserlines({group:w,eraserlines:p,pos:N,layer:i},o)),this.replace(i,t,w);const b=w.getBoundingClientRect();return this.isDelete&&w.setAttribute("opacity",0),{x:Math.floor(b.x-Y.SafeBorderPadding),y:Math.floor(b.y-Y.SafeBorderPadding),w:Math.floor(b.width+Y.SafeBorderPadding*2),h:Math.floor(b.height+Y.SafeBorderPadding*2)}}transformControlPoints(e){const t=fe(this.tmpPoints);switch(e){case"bottom":case"bottomLeft":case"bottomRight":{const i=t.y+t.h*this.ratio;return[new C(t.x,t.y,0),new C(t.x+t.w,t.y,0),new C(t.x+t.w,i,0),new C(t.x,i,0)]}case"top":case"topLeft":case"topRight":{const i=t.y+t.h*(1-this.ratio);return[new C(t.x,i,0),new C(t.x+t.w,i,0),new C(t.x+t.w,t.y+t.h,0),new C(t.x,t.y+t.h,0)]}case"left":case"leftBottom":case"leftTop":{const i=t.x+t.w*(1-this.ratio);return[new C(i,t.y,0),new C(t.x+t.w,t.y,0),new C(t.x+t.w,t.y+t.h,0),new C(i,t.y+t.h,0)]}case"right":case"rightBottom":case"rightTop":{const i=t.x+t.w*this.ratio;return[new C(t.x,t.y,0),new C(i,t.y,0),new C(i,t.y+t.h,0),new C(t.x,t.y+t.h,0)]}}}computDrawPoints(e,t){const i=fe(this.tmpPoints),o=this.transformControlPoints(t),n=Math.floor(i.w*.1),r=Math.floor(i.h*.1),c=[],l=C.Add(o[0],new C(0,r,0)),u=C.Add(o[0],new C(n,0,0)),h=Qe.getBezierPoints(10,l,o[0],u),d=C.Sub(o[1],new C(n,0,0)),f=C.Add(o[1],new C(0,r,0)),g=Qe.getBezierPoints(10,d,o[1],f),p=C.Sub(o[2],new C(0,r,0)),m=C.Sub(o[2],new C(n,0,0)),N=Qe.getBezierPoints(10,p,o[2],m),v=C.Add(o[3],new C(n,0,0)),I=C.Sub(o[3],new C(0,r,0)),k=Qe.getBezierPoints(10,v,o[3],I),w=n*(1-this.ratio)*10,S=r*(1-this.ratio)*10;switch(t){case"bottom":{const P=C.Sub(o[2],new C(n*5-w/2,0,0)),E=C.Sub(o[2],new C(n*5,-S,0)),R=C.Sub(o[2],new C(n*5+w/2,0,0));c.push(E,R,...k,...h,...g,...N,P);break}case"bottomRight":{const P=C.Sub(o[2],new C(n*1.1,0,0)),E=C.Sub(o[2],new C(n*1.1+w/2,-S,0)),R=C.Sub(o[2],new C(n*1.1+w,0,0));c.push(E,R,...k,...h,...g,...N,P);break}case"bottomLeft":{const P=C.Add(o[3],new C(n*1.1+w,0,0)),E=C.Add(o[3],new C(n*1.1+w/2,S,0)),R=C.Add(o[3],new C(n*1.1,0,0));c.push(E,R,...k,...h,...g,...N,P);break}case"top":{const P=C.Sub(o[1],new C(n*5-w/2,0,0)),E=C.Sub(o[1],new C(n*5,S,0)),R=C.Sub(o[1],new C(n*5+w/2,0,0));c.push(E,P,...g,...N,...k,...h,R);break}case"topRight":{const P=C.Sub(o[1],new C(n*1.1,0,0)),E=C.Sub(o[1],new C(n*1.1+w/2,S,0)),R=C.Sub(o[1],new C(n*1.1+w,0,0));c.push(E,P,...g,...N,...k,...h,R);break}case"topLeft":{const P=C.Add(o[0],new C(n*1.1+w,0,0)),E=C.Add(o[0],new C(n*1.1+w/2,-S,0)),R=C.Add(o[0],new C(n*1.1,0,0));c.push(E,P,...g,...N,...k,...h,R);break}case"left":{const P=C.Add(o[0],new C(0,r*5-S/2,0)),E=C.Add(o[0],new C(-w,r*5,0)),R=C.Add(o[0],new C(0,r*5+S/2,0));c.push(E,P,...h,...g,...N,...k,R);break}case"leftTop":{const P=C.Add(o[0],new C(0,r*1.1,0)),E=C.Add(o[0],new C(-w,r*1.1+S/2,0)),R=C.Add(o[0],new C(0,r*1.1+S,0));c.push(E,P,...h,...g,...N,...k,R);break}case"leftBottom":{const P=C.Sub(o[3],new C(0,r*1.1+S,0)),E=C.Sub(o[3],new C(w,r*1.1+S/2,0)),R=C.Sub(o[3],new C(0,r*1.1,0));c.push(E,P,...h,...g,...N,...k,R);break}case"right":{const P=C.Add(o[1],new C(0,r*5-S/2,0)),E=C.Add(o[1],new C(w,r*5,0)),R=C.Add(o[1],new C(0,r*5+S/2,0));c.push(E,R,...N,...k,...h,...g,P);break}case"rightTop":{const P=C.Add(o[1],new C(0,r*1.1,0)),E=C.Add(o[1],new C(w,r*1.1+S/2,0)),R=C.Add(o[1],new C(0,r*1.1+S,0));c.push(E,R,...N,...k,...h,...g,P);break}case"rightBottom":{const P=C.Sub(o[2],new C(0,r*1.1+S,0)),E=C.Sub(o[2],new C(-w,r*1.1+S/2,0)),R=C.Sub(o[2],new C(0,r*1.1,0));c.push(E,R,...N,...k,...h,...g,P);break}}const b=fe(this.tmpPoints,e),x=[Math.floor(b.x+b.w/2),Math.floor(b.y+b.h/2)];return{rect:b,pos:x,points:c}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n)||V.Sub(o,i).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawing:!1,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,fillColor:r,toolsType:c,placement:l,strokeType:u}=i,h=o.get(t.name),d=h==null?void 0:h.opt;let f=t;return t.tagName==="GROUP"&&(f=t.children[0]),n&&(f.setAttribute("strokeColor",n),d!=null&&d.strokeColor&&(d.strokeColor=n)),r&&(r==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",r),d!=null&&d.fillColor&&(d.fillColor=r)),c===T.SpeechBalloon&&l&&(d.placement=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&o.setInfo(t.name,{...h,opt:d}),Y.updateNodeOpt(e)}}var Hf=pt,Qf=Je,Gf="[object Boolean]";function Zf(a){return a===!0||a===!1||Qf(a)&&Hf(a)==Gf}var qf=Zf;const mt=Ct(qf);class Vo extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.both);y(this,"toolsType",T.Straight);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");y(this,"straightTipWidth");y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.straightTipWidth=this.workOptions.thickness/2,this.syncTimestamp=0,this.syncUnitTime=50}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n}=e,r=this.workId,{op:c}=t,l=c==null?void 0:c.length;if(!l||l<2)return{type:L.None};let u;if(this.tmpPoints.length===0?(this.tmpPoints=[new V(c[0],c[1])],u=!1):u=this.updateTempPoints(c),!u)return{type:L.None};let h;if(o||n){const f=i?this.fullLayer:this.drawLayer||this.fullLayer;h=this.draw({workId:r,layer:f})}if(!o){const f=Date.now();return f-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=f,{type:L.DrawWork,dataType:B.Local,op:this.tmpPoints.map(g=>[...g.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:L.None}}const d=le(h,this.oldRect);return this.oldRect=h,{rect:d,type:L.DrawWork,dataType:B.Local,...this.baseConsumeResult}}consumeAll(){var r;const e=this.workId;if(this.tmpPoints.length<2)return{type:L.RemoveNode,removeIds:[e]};const t=this.fullLayer,i=this.draw({workId:e,layer:t});this.oldRect=i;const o=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),n=Ye(o);return(r=this.vNodes)==null||r.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Y.getCenterPos(i,t)}),{rect:i,type:L.FullWork,dataType:B.Local,ops:n,isSync:!0,...this.baseConsumeResult}}draw(e){const{workId:t,layer:i,isDrawEraserlines:o=!0}=e,{strokeColor:n,thickness:r,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f}=this.workOptions,g=i.worldPosition,p=i.worldScaling,{d:m,rect:N,isDot:v}=this.computDrawPoints(r,d),I=[N.x+N.w/2,N.y+N.h/2],k=new he.Group({pos:I,anchor:[.5,.5],size:[N.w,N.h],name:t,id:t,normalize:!0,zIndex:c}),w={pos:[0,0],normalize:!0,d:m,fillColor:n,strokeColor:n,lineDash:d===te.Dotted&&!v?[1,r*2]:d===te.LongDotted&&!v?[r,r*2]:void 0,lineCap:d===te.Normal||v?void 0:"round",lineWidth:d===te.Normal||v?0:r};l&&(w.scale=l),u&&(w.rotate=u),h&&(w.translate=h);const S=new he.Path(w);k.append(S),f&&(this.scaleType=ae.proportional,this.drawEraserlines({group:k,eraserlines:f,pos:I,layer:i},o)),this.replace(i,t,k);let b={x:Math.floor(N.x*p[0]+g[0]-Y.SafeBorderPadding),y:Math.floor(N.y*p[1]+g[1]-Y.SafeBorderPadding),w:Math.floor(N.w*p[0]+2*Y.SafeBorderPadding),h:Math.floor(N.h*p[1]+2*Y.SafeBorderPadding)};if(u||l||h){const x=S.getBoundingClientRect();b={x:Math.floor(x.x-Y.SafeBorderPadding),y:Math.floor(x.y-Y.SafeBorderPadding),w:Math.floor(x.width+Y.SafeBorderPadding*2),h:Math.floor(x.height+Y.SafeBorderPadding*2)}}return this.isDelete&&k.setAttribute("opacity",0),b}computDrawPoints(e,t){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.straightTipWidth?this.computFullPoints(e,t):this.computDotPoints(e)}computFullPoints(e,t){const i=C.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),o=C.Per(i).mul(e/2),n=V.Sub(this.tmpPoints[0],o),r=V.Add(this.tmpPoints[0],o),c=V.Sub(this.tmpPoints[1],o),l=V.Add(this.tmpPoints[1],o),u=V.GetSemicircleStroke(this.tmpPoints[1],c,-1,8),h=V.GetSemicircleStroke(this.tmpPoints[0],r,-1,8),d=[n,c,...u,l,r,...h];let f;return t!==te.Normal?f=_e(this.tmpPoints,!1):f=_e(d,!0),{d:f,rect:fe(d),isDot:!1,pos:this.tmpPoints[0].XY}}computDotPoints(e){const t=V.GetDotStroke(this.tmpPoints[0],e/2,8);return{d:_e(t,!0),rect:fe(t),isDot:!0,pos:this.tmpPoints[0].XY}}updateTempPoints(e){const t=e.slice(-2),i=new V(t[0],t[1]),o=this.tmpPoints[0],{thickness:n}=this.workOptions;if(o.isNear(i,n))return!1;if(this.tmpPoints.length===2){if(i.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=i}else this.tmpPoints.push(i);return!0}consumeService(e){var l,u;const{op:t,isFullWork:i,workState:o=z.Done}=e,n=(l=this.workId)==null?void 0:l.toString();if(!n)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new V(t[h],t[h+1],t[h+2]));const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:n,layer:r,isDrawEraserlines:o===z.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(n,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:t,opt:i,vNodes:o}=e,{strokeColor:n,strokeType:r}=i,c=o.get(t.name);return n&&(t.tagName==="GROUP"?t.children.forEach(h=>{h.setAttribute("strokeColor",n),h.getAttribute("fillColor")&&h.setAttribute("fillColor",n)}):(t.setAttribute("strokeColor",n),t.setAttribute("fillColor",n)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=n)),r&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=r),c&&o.setInfo(t.name,c),Y.updateNodeOpt(e)}}const st=class st extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.proportional);y(this,"toolsType",T.Text);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");this.workOptions=e.toolsOpt}consume(){return{type:L.None}}consumeAll(){return{type:L.None}}consumeService(){}async draw(e){const{workId:t,layer:i,isDrawLabel:o}=e,{boxSize:n,boxPoint:r,zIndex:c}=this.workOptions,l=i.worldPosition,u=i.worldScaling;if(!r||!n)return;const h={name:t,id:t,pos:[r[0],r[1]],anchor:[0,0],size:n,zIndex:c},d=new he.Group(h),f={x:r[0],y:r[1],w:n[0],h:n[1]},g={x:Math.floor(f.x*u[0]+l[0]),y:Math.floor(f.y*u[1]+l[1]),w:Math.floor(f.w*u[0])+2,h:Math.floor(f.h*u[1])+2};if(this.replace(i,t,d),o&&i&&this.workOptions.text){const p=await st.createLabels(this.workOptions,i,g),{labels:m,maxWidth:N}=p;d.append(...m),g.w=Math.ceil(Math.max(N*i.worldScaling[0],g.w))}return g}async consumeServiceAsync(e){var l,u,h,d;const t=(l=this.workId)==null?void 0:l.toString();if(!t)return;const{isFullWork:i,replaceId:o,isDrawLabel:n}=e;this.oldRect=o&&((h=(u=this.vNodes)==null?void 0:u.get(o))==null?void 0:h.rect)||void 0;const r=i?this.fullLayer:this.drawLayer||this.fullLayer,c=await this.draw({workId:t,layer:r,isDrawLabel:typeof n>"u"&&this.workOptions.workState===z.Done||n});return(d=this.vNodes)==null||d.setInfo(t,{rect:c,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Y.getCenterPos(c,r)}),c}updataOptService(){}async updataOptServiceAsync(e,t){var g,p;if(!this.workId)return;const i=this.workId.toString(),{fontColor:o,fontBgColor:n,bold:r,italic:c,lineThrough:l,underline:u,zIndex:h}=e,d=(g=this.vNodes)==null?void 0:g.get(i);if(!d)return;o&&(d.opt.fontColor=o),n&&(d.opt.fontBgColor=n),r&&(d.opt.bold=r),c&&(d.opt.italic=c),mt(l)&&(d.opt.lineThrough=l),mt(u)&&(d.opt.underline=u),De(h)&&(d.opt.zIndex=h),this.oldRect=d.rect;const f=await this.draw({workId:i,layer:this.fullLayer,isDrawLabel:typeof t>"u"&&this.workOptions.workState===z.Done||t});return(p=this.vNodes)==null||p.setInfo(i,{rect:f,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:f&&Y.getCenterPos(f,this.fullLayer)}),f}clearTmpPoints(){this.tmpPoints.length=0}static getSafetySnippetRatio(e){const t=(e==null?void 0:e.parent).displayRatio||1,i=Math.ceil(e.worldScaling[0]*10)/10;let o=i;return i>=.2&&i<1?o=i*t:i<=2&&i>=1?o=i*t*1.6:i>2&&i<=3?o=i*t*1.4:i>3&&i<=4?o=i*t*.8:i>4&&(o=i*t*.6),Math.floor(o*1e3)/1e3}static getSafetySnippetFontLength(e){return Math.floor(st.textImageSnippetSize*3/4/e)||1}static async createLabels(e,t,i){var R;const o=[],{x:n,y:r}=i,{width:c,height:l}=(R=t.parent)==null?void 0:R.parent,u=nt(e.text),h=u.length,{fontSize:d,lineHeight:f,bold:g,textAlign:p,italic:m,fontFamily:N,verticalAlign:v,fontColor:I,fontBgColor:k,underline:w,lineThrough:S}=e,b=st.getSafetySnippetRatio(t)||1,x=Math.floor(d*b),P=st.getSafetySnippetFontLength(x);let E=0;for(let O=0;O<h;O++){const D=u[O],A=f||x*1.5;if(D){const G=kM(D),ne=[0,0],q=[0,d*1.2];v==="middle"&&(ne[1]=O*d*1.2+5);const Z=[0,-d*.15];ne[0]=5;const H=Math.sin(Math.PI/180*20);let _=0;const ie=[];let K=0;for(;K<G;){p==="left"&&(Z[0]=_),K===0&&m==="italic"&&(Z[0]=Z[0]-H/2*d);const ee=D.slice(K,K+P),ce={anchor:[0,0],pos:Z,text:ee,fontFamily:N,fontSize:x,lineHeight:A,strokeColor:I,fontWeight:g,fillColor:I,textAlign:p,fontStyle:m,scale:[1/b,1/b]},J=new he.Label(ce),$=await J.textImageReady;let de=!0;if($){const ge=$.rect&&$.rect[2],Re=$.rect&&$.rect[3];if(ge&&Re){const ve=ge/b,we=Re/b;_=ve+_,m==="italic"&&(g==="bold"?_=_-H*d*1.2:_=_-H*d),((Z[0]+ne[0]+ve)*t.worldScaling[0]+n<=0||(Z[0]+ne[0])*t.worldScaling[0]+n>=c||(Z[1]+ne[1]+we)*t.worldScaling[1]+r<=0||(Z[1]+ne[1])*t.worldScaling[1]+r>=l)&&(J.disconnect(),de=!1),de&&ie.push(J)}}K+=P}q[0]=_,m==="italic"&&(q[0]=q[0]+H*d),E=Math.max(E,q[0]);let ue=!0;if(((ne[0]+q[0])*t.worldScaling[0]+n<=0||ne[0]*t.worldScaling[0]+n>=c||(ne[1]+q[1])*t.worldScaling[0]+r<=0||ne[1]*t.worldScaling[1]+r>=l)&&(ue=!1),ue){if(w){const J=Math.floor(d/10),$={normalize:!1,pos:[0,d*1.1+J/2],lineWidth:J,points:[0,0,Math.ceil(q[0]),0],strokeColor:I,className:"underline"},de=new he.Polyline($);ie.push(de)}if(S){const J={normalize:!1,pos:[0,d*1.2/2],lineWidth:Math.floor(d/10),points:[0,0,Math.ceil(q[0]),0],strokeColor:I,className:"lineThrough"},$=new he.Polyline(J);ie.push($)}const ee={pos:ne,anchor:[0,0],size:q,bgcolor:k},ce=new he.Group(ee);ce.append(...ie),o.push(ce)}}}return{labels:o,maxWidth:E}}static updateNodeOpt(e){const{node:t,opt:i,vNodes:o,targetNode:n}=e,{fontBgColor:r,fontColor:c,translate:l,originPoint:u,scenePoint:h,scale:d,bold:f,italic:g,lineThrough:p,underline:m,fontSize:N,textInfos:v,zIndex:I}=i,k=n&&ke(n)||o.get(t.name);if(!k||!t.parent)return;const S=k.opt;if(De(I)&&(t.setAttribute("zIndex",I),k.opt.zIndex=I),c&&S.fontColor&&(S.fontColor=c,t.children.forEach(b=>{b.tagName==="GROUP"&&b.children.forEach(x=>{x.tagName==="LABEL"?(x.setAttribute("fillColor",c),x.setAttribute("strokeColor",c)):x.tagName==="POLYLINE"&&x.setAttribute("strokeColor",c)})})),r&&S.fontBgColor&&(S.fontBgColor=r,t.children.forEach(b=>{b.tagName==="GROUP"&&b.setAttribute("bgcolor",r)})),f&&(S.bold=f),g&&(S.italic=g),mt(p)&&(S.lineThrough=p),mt(m)&&(S.underline=m),N&&(S.fontSize=N),u&&h&&d&&n&&S.boxPoint){const b=v==null?void 0:v.get(t.name);if(b){const{fontSize:R,boxSize:O}=b;S.boxSize=O||S.boxSize,S.fontSize=R||S.fontSize}const x=[S.boxPoint[0],S.boxPoint[1]];oi(S.boxPoint,h,d,l);const P=[k.op[0],k.op[1]],E=[P[0]-x[0],P[1]-x[1]];if(k.centerPos=[k.centerPos[0]+E[0],k.centerPos[1]+E[1]],k.opt.eraserlines)for(const R of Object.values(k.opt.eraserlines)){const{op:O,thickness:D}=R;R.thickness=D*Math.max(d[0],d[1]);for(let A=0;A<O.length;A++)ni(O[A],h,d,l)}}else if(l&&S.boxPoint&&(S.boxPoint=[S.boxPoint[0]+l[0],S.boxPoint[1]+l[1]],k.centerPos=[k.centerPos[0]+l[0],k.centerPos[1]+l[1]],k.opt.eraserlines))for(const b of Object.values(k.opt.eraserlines)){const{op:x}=b;for(let P=0;P<x.length;P++){const E=x[P].map((R,O)=>O%2?R+l[1]:R+l[0]);b.op[P]=E}}return k&&o.setInfo(t.name,k),k==null?void 0:k.rect}static getRectFromLayer(e,t){const i=e.getElementsByName(t)[0];if(i){const o=i.getBoundingClientRect();let n={x:Math.floor(o.x),y:Math.floor(o.y),w:Math.floor(o.width+2),h:Math.floor(o.height+2)};return i.children.forEach(r=>{if(r.tagName==="GROUP"){const c=i.getBoundingClientRect();n=le(n,{x:Math.floor(c.x),y:Math.floor(c.y),w:Math.floor(c.width+2),h:Math.floor(c.height+2)})}}),n}}};y(st,"textImageSnippetSize",1024*4),y(st,"SafeBorderPadding",30);let ts=st;const vt=class vt extends Y{constructor(e,t){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"toolsType",T.PencilEraser);y(this,"serviceWork");y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"worldPosition");y(this,"worldScaling");y(this,"eraserRect");y(this,"eraserPolyline");this.serviceWork=t,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}consumeService(){}createEraserRect(e){const t=e[0]*this.worldScaling[0]+this.worldPosition[0],i=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:o,height:n}=vt.eraserSizes[this.workOptions.thickness];this.eraserRect={x:t-o*.5,y:i-n*.5,w:o,h:n},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const t=new C(this.tmpPoints[0],this.tmpPoints[1]),i=new C(this.tmpPoints[2],this.tmpPoints[3]),o=C.Sub(i,t).uni(),n=C.Dist(t,i),{width:r,height:c}=vt.eraserSizes[this.workOptions.thickness],l=Math.min(r,c),u=Math.round(n/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=C.Mul(o,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,t){const i=new C(e[0],e[1]),o=new C(t[0],t[1]),{width:n,height:r}=vt.eraserSizes[this.workOptions.thickness];return C.Dist(i,o)<Math.hypot(n,r)*.5}cutPolyline(e,t){let i=[t],o=0;for(;o<e.length;){const c=e[o];if(c.length<2)break;i=n(i,c),o++}return i;function n(c,l){const u=c;for(let h=0;h<c.length;h++){const d=c[h],f=d.findIndex((g,p)=>p<d.length-1?r([g,d[p+1]],[l[0],l[1]]):!1);if(f!==-1&&f>-1){const g=[],p=d.slice(0,f+1);if(C.Equals(d[f],l[0])||p.push(l[0].clone().setz(d[f].z)),p.length>1&&g.push(p),f+l.length-1<d.length-1){const m=f+l.length-1,N=d.slice(m),v=l[l.length-1];C.Equals(d[m],v)||N.unshift(v.clone().setz(d[m].z)),N.length>1&&g.push(N)}return u.splice(h,1,...g),u}}return u}function r(c,l){const u=C.Sub(c[1],c[0]),h=C.Sub(l[1],l[0]),d=C.Sub(l[0],c[0]);return Math.abs(C.Cpr(u,h))<.1&&Math.abs(C.Cpr(u,d))<.1}}isSamePoint(e,t){return e[0]===t[0]&&e[1]===t[1]}translateIntersect(e){const t=[];for(let i=0;i<e.length;i++){const o=e[i].filter((c,l,u)=>!(l>0&&this.isSamePoint(c,u[l-1]))),n=[];let r=0;for(;r<o.length;){const c=o[r],l=new C(c[0],c[1]);n.push(l),r++}t.push(n)}return t}isLineEraser(e,t){return!(e===T.Pencil&&!t)}remove(e){const{curNodeMap:t,removeIds:i,newWorkDatas:o}=e;let n;for(const[r,c]of t.entries())if(c.rect&&this.eraserRect&&this.eraserPolyline&&Yt(this.eraserRect,c.rect)){const{op:l,toolsType:u}=c,h=this.isLineEraser(u,!1),d=[],f=[];for(let p=0;p<l.length;p+=3){const m=new C(l[p]*this.worldScaling[0]+this.worldPosition[0],l[p+1]*this.worldScaling[1]+this.worldPosition[1],l[p+2]);f.push(m),d.push(new V(m.x,m.y))}const g=d.length&&fe(d)||c.rect;if(Yt(g,this.eraserRect)){if(f.length>1){const p=Us.polyline(f.map(m=>m.XY),this.eraserPolyline);if(p.length&&(i.add(c.name),!h)){const m=this.translateIntersect(p),N=this.cutPolyline(m,f);for(let v=0;v<N.length;v++){const I=`${r}_s_${v}`,k=[];N[v].forEach(w=>{k.push((w.x-this.worldPosition[0])/this.worldScaling[0],(w.y-this.worldPosition[1])/this.worldScaling[1],w.z)}),c.opt&&c.toolsType&&this.vNodes&&(this.vNodes.setInfo(I,{rect:g,op:k,opt:c.opt,canRotate:c.canRotate,scaleType:c.scaleType,toolsType:c.toolsType}),o.set(I,{workId:I,op:k,opt:c.opt,toolsType:c.toolsType}))}}}else i.add(c.name);n=le(n,g)}}return i.forEach(r=>{var c;return(c=this.vNodes)==null?void 0:c.delete(r)}),n&&(n.x-=Y.SafeBorderPadding,n.y-=Y.SafeBorderPadding,n.w+=Y.SafeBorderPadding*2,n.h+=Y.SafeBorderPadding*2),n}consume(e){const{op:t,disableEraseImage:i,disableEraseText:o}=e.data;if(!t||t.length===0)return{type:L.None,...this.baseConsumeResult};const n=this.tmpPoints.length;if(n>1&&this.isNear([t[0],t[1]],[this.tmpPoints[n-2],this.tmpPoints[n-1]]))return{type:L.None,...this.baseConsumeResult};n<3?this.tmpPoints.push(t[0],t[1]):this.tmpPoints.splice(2,2,t[0],t[1]);const r=this.computRectCenterPoints();let c;const l=new Set,u=new Map;if(!this.vNodes)return{type:L.None,...this.baseConsumeResult};this.vNodes.setTarget();const h=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.getLastTarget(),{disableEraseImage:i,disableEraseText:o}));for(let d=0;d<r.length-1;d+=2){this.createEraserRect(r.slice(d,d+2));const f=this.remove({curNodeMap:h,removeIds:l,newWorkDatas:u});c=le(c,f)}if(this.vNodes.deleteLastTarget(),c&&l.size){for(const d of u.keys())l.has(d)&&u.delete(d);return{type:L.RemoveNode,rect:c,removeIds:[...l],newWorkDatas:u}}return{type:L.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var t;if(this.serviceWork){const i=ke(e),o=this.serviceWork.selectorWorkShapes,n=this.serviceWork.workShapes;for(const r of o.values())if((t=r.selectIds)!=null&&t.length)for(const c of r.selectIds)i.delete(c);for(const r of n.keys())i.delete(r);return i}return e}};y(vt,"eraserSizes",_s);let ss=vt;const It=class It extends Y{constructor(e){super(e);y(this,"canRotate",!1);y(this,"scaleType",ae.none);y(this,"toolsType",T.BitMapEraser);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"worldPosition");y(this,"worldScaling");y(this,"eraserRect");y(this,"eraserPolyline");y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"syncIndex",0);y(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling,this.syncTimestamp=0}combineConsume(){if(this.tmpPoints.length<2)return{type:L.None};const{thickness:e}=this.workOptions,{width:t,height:i}=It.eraserSizes[e],o=Math.max(t,i)/this.worldScaling[0],n=this.drawLayer||this.fullLayer,r=this.workId,c={name:r};return{rect:this.draw({attrs:c,consumePoints:this.tmpPoints,replaceId:r,layer:n,thickness:o}),type:L.DrawWork,dataType:B.Local}}consumeService(e){const{op:t,isFullWork:i,replaceId:o}=e;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3){const d=new V(t[h],t[h+1],t[h+2]);if(this.tmpPoints.length>0){const f=this.tmpPoints[this.tmpPoints.length-1],g=C.Sub(d,f).uni();d.setv(g)}this.tmpPoints.push(d)}if(this.tmpPoints.length<2)return;const n=this.tmpPoints[0].z*2,r=i?this.fullLayer:this.drawLayer||this.fullLayer,l={name:this.workId};return this.draw({attrs:l,consumePoints:this.tmpPoints,layer:r,thickness:n,replaceId:o})}updateTempPoints(e,t){let i=this.tmpPoints.length-1;const o=Date.now();for(let n=0;n<e.length;n+=2){const r=this.tmpPoints.length,c=new V(e[n],e[n+1]);if(r===0){this.tmpPoints.push(c);continue}const l=r-1,u=this.tmpPoints[l],h=C.Sub(c,u).uni();c.isNear(u,t/2)||(C.Equals(h,u.v,.02)&&(this.tmpPoints.pop(),i--),c.setv(h),c.setT(o),this.tmpPoints.push(c))}return Math.max(i,0)}getChangeNodes(e,t){const i=new Map,o=new Set;let n;if(!this.vNodes)return{willDeleteNodes:o,willUpdateNodes:i,rect:n};const r=this.worldPosition;let c=fe(this.tmpPoints,e);c=js(c,r),c=gM(c,this.worldScaling,r);const{nodeRange:l}=this.vNodes.getRectIntersectRange(c);if(!l.size)return{willDeleteNodes:o,willUpdateNodes:i,rect:n};const u=this.computEraserPointLines(this.tmpPoints);for(const[h,d]of l.entries()){if(d.toolsType===T.Text||d.toolsType===T.Image)continue;let f=js(d.rect,[-r[0],-r[1]]);f={x:f.x/this.worldScaling[0],y:f.y/this.worldScaling[1],w:f.w/this.worldScaling[0],h:f.h/this.worldScaling[1]};const g=[f.x,f.y,f.x+f.w,f.y+f.h],p=[],m=[];for(const v of u)Us.polyline(v,g,p);if(p.length&&d.opt)for(const v of p){const I=[];for(let k=0;k<v.length;k++)k!==0&&it(v[k],v[k-1])||I.push(...v[k]);m.push(I)}if(d.opt.eraserlines||(d.opt.eraserlines=[]),d.opt.eraserlines){if(d.opt.eraserlines.push({op:m,thickness:e}),t){const{toolsType:v}=d,I=t.createWorkShapeNode({workId:h,toolsType:v,toolsOpt:d.opt});I==null||I.setWorkId(h);const k=I==null?void 0:I.consumeService({op:d.op,isFullWork:!0,replaceId:h});if(n=le(n,k),I!=null&&I.isDelete){t.removeNode(h),o.add(h);continue}}i.set(h,d)}}return{willUpdateNodes:i,willDeleteNodes:o,rect:n}}consume(e){const{data:t,isFullWork:i,isSubWorker:o,isMainThread:n,removeDrawCount:r,drawCount:c}=e,{op:l}=t;if(!l||l.length===0)return{type:L.None,...this.baseConsumeResult};const{thickness:u}=this.workOptions,{width:h,height:d}=It.eraserSizes[u],f=Math.max(h,d)/this.worldScaling[0],g=this.tmpPoints.length,p=this.tmpPoints[this.tmpPoints.length-1],m=this.updateTempPoints(l,f),N=this.tmpPoints[this.tmpPoints.length-1];if(g===this.tmpPoints.length&&N.equalsXY(p.x,p.y))return{type:L.None,...this.baseConsumeResult};this.syncIndex=Math.min(this.syncIndex,m,Math.max(0,this.tmpPoints.length-2));const v={name:this.workId,id:De(c)&&c.toString()||void 0},I=this.syncIndex;this.syncTimestamp===0&&(this.syncTimestamp=Date.now());let k=!1,w;const S=this.tmpPoints.slice(m);if(o||n){const x=i?this.fullLayer:this.drawLayer||this.fullLayer;w=this.draw({attrs:v,consumePoints:S,layer:x,removeDrawCount:r,thickness:f})}if(o)return m>10&&this.tmpPoints.splice(0,m-10),{rect:w,type:L.DrawWork,dataType:B.Local};S[0].t-this.syncTimestamp>this.syncUnitTime&&(k=!0,this.syncTimestamp=S[0].t,this.syncIndex=this.tmpPoints.length);const b=[];return this.tmpPoints.slice(I).forEach(x=>{b.push(x.x,x.y,f/2)}),{...this.baseConsumeResult,type:L.DrawWork,dataType:B.Local,rect:w,op:k?b:void 0,index:k?I*3:void 0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{attrs:t,consumePoints:i,layer:o,thickness:n,replaceId:r,removeDrawCount:c}=e;c&&this.removeDrawCountNodes(o,c);let l=fe(i,n);l={x:Math.floor(l.x*this.worldScaling[0]+this.worldPosition[0]-Y.SafeBorderPadding),y:Math.floor(l.y*this.worldScaling[1]+this.worldPosition[1]-Y.SafeBorderPadding),w:Math.floor(l.w*this.worldScaling[0]+2*Y.SafeBorderPadding),h:Math.floor(l.h*this.worldScaling[1]+2*Y.SafeBorderPadding)};const u=new he.Group({...t,normalize:!0,pos:[0,0],anchor:[.5,.5],zIndex:9999,bgcolor:"rgba(136,136,136,0.3)"}),h=this.computEraserPointLines(i),d=[];for(const f of h)d.push({op:f,thickness:n});for(const f of d){const{thickness:g,op:p}=f,m=p.reduce((w,S,b,x)=>b>0&&x[b-1][0]===S[0]&&x[b-1][1]===S[1]?w:w.concat(S[0],S[1]),[]),N=this.computEraserPoints(m,g),v=_e(N,!0),I={pos:[0,0],d:v,fillColor:"rgba(136,136,136,0.3)"},k=new he.Path(I);u.append(k),u.seal()}return this.replace(o,r,u),l}computEraserPointLines(e,t=60){const i=[];let o=0;const n=360-t;for(let r=1;r<e.length;r++){const c=e[r-1],l=e[r];if(r===1&&o===0&&(i[o]=[c.XY]),i[o].push(l.XY),r<e.length-1){const u=l.getAngleByPoints(c,e[r+1]);(u<t||u>n)&&(o++,i[o]=[l.XY])}}return e.length===1&&i.length===0&&i.push([e[0].XY,e[0].XY]),i}consumeAll(e){const{workerEngine:t}=e;if(this.replace(this.fullLayer,this.workId),!this.tmpPoints.length)return{type:L.None,...this.baseConsumeResult};const{thickness:i}=this.workOptions,{width:o,height:n}=It.eraserSizes[i],r=Math.max(o,n)/this.worldScaling[0],{willDeleteNodes:c,willUpdateNodes:l,rect:u}=this.getChangeNodes(r,t);if(c.size===0&&l.size===0)return{type:L.FullWork,...this.baseConsumeResult,rect:u};const h=[];this.tmpPoints.map(f=>{h.push(f.x,f.y,r/2)});const d=Ye(h);return{...this.baseConsumeResult,type:L.FullWork,dataType:B.Local,rect:u,ops:d,willUpdateNodes:l,willDeleteNodes:c}}clearTmpPoints(){this.tmpPoints.length=0}};y(It,"eraserSizes",_s);let is=It;function $o(a){switch(a){case T.Arrow:return Ro;case T.Pencil:return Ao;case T.Straight:return Vo;case T.Ellipse:return Wo;case T.Polygon:case T.Triangle:return Bo;case T.Star:case T.Rhombus:return Uo;case T.Rectangle:return Yo;case T.SpeechBalloon:return Fo;case T.Text:return ts;case T.LaserPen:return jo;case T.Eraser:return Kt;case T.PencilEraser:return ss;case T.BitMapEraser:return is;case T.Selector:return es;case T.Image:return Wt}}function gs(a,s){const{toolsType:e,...t}=a;switch(e){case T.Arrow:return new Ro(t);case T.Pencil:return new Ao(t);case T.Straight:return new Vo(t);case T.Ellipse:return new Wo(t);case T.Polygon:case T.Triangle:return new Bo(t);case T.Star:case T.Rhombus:return new Uo(t);case T.Rectangle:return new Yo(t);case T.SpeechBalloon:return new Fo(t);case T.Text:return new ts(t);case T.LaserPen:return new jo(t);case T.Eraser:return new Kt(t,s);case T.BitMapEraser:return new is(t);case T.PencilEraser:return new ss(t,s);case T.Selector:return t.vNodes?new es({...t,vNodes:t.vNodes,drawLayer:t.fullLayer}):void 0;case T.Image:return new Wt(t);default:return}}function Ho(a){const s=[],e=["PATH","SPRITE","POLYLINE","RECT","ELLIPSE","LABEL"];for(const t of a){if(t.tagName==="GROUP"&&t.children.length)return Ho(t.children);t.tagName&&e.includes(t.tagName)&&s.push(t)}return s}const Xf="cursorhover",ys=20,pe="mainView";class Qo{constructor(s,e){y(this,"viewId");y(this,"scene");y(this,"fullLayer");y(this,"curNodeMap",new Map);y(this,"targetNodeMap",[]);y(this,"highLevelIds");y(this,"canClearUids");y(this,"localUid");this.viewId=s,this.scene=e}init(s){this.fullLayer=s}get(s){return this.curNodeMap.get(s)}setLocalUid(s){this.localUid=s}getLocalUid(){return this.localUid}setCanClearUids(s){this.canClearUids=s}getCanClearUids(){return this.canClearUids}getCanEraserNodes(s,e){const t=new Map;for(const[i,o]of s.entries())o.toolsType===T.Image&&(o.opt.locked||e&&e.disableEraseImage)||o.toolsType===T.Text&&(o.opt.workState===z.Doing||o.opt.workState===z.Start||e&&e.disableEraseText)||this.isCanClearWorkId(i)&&t.set(i,o);return t}getNodesByType(s){const e=new Map;return this.curNodeMap.forEach((t,i)=>{t.toolsType===s&&e.set(i,t)}),e}gethasEraserNodes(){const s=new Map;return this.curNodeMap.forEach((e,t)=>{var i;(i=e.opt.eraserlines)!=null&&i.length&&s.set(t,e)}),s}hasRenderNodes(){return!0}has(s){return this.curNodeMap.has(s)}setInfo(s,e){const t=this.curNodeMap.get(s)||{name:s,rect:e.rect};e.rect&&(t.rect=ke(e.rect)),e.op&&mM(e.op)&&(t.op=ke(e.op)),e.canRotate&&(t.canRotate=e.canRotate),e.scaleType&&(t.scaleType=e.scaleType),e.opt&&(t.opt=ke(e.opt)),e.toolsType&&(t.toolsType=e.toolsType),e.centerPos&&(t.centerPos=ke(e.centerPos)),mt(e.isSelected)&&(t.isSelected=e.isSelected),t.rect?this.curNodeMap.set(s,t):this.curNodeMap.delete(s)}selected(s){this.setInfo(s,{isSelected:!0})}unSelected(s){this.setInfo(s,{isSelected:!1})}delete(s){this.curNodeMap.delete(s)}clear(){this.curNodeMap.clear(),this.targetNodeMap.length=0}getRectIntersectRange(s,e=!0,t=!0){let i;const o=new Map;for(const[n,r]of this.curNodeMap.entries())if(Yt(s,r.rect)){if(e&&r.toolsType===T.Image&&r.opt.locked||t&&r.toolsType===T.Text&&(r.opt.workState===z.Doing||r.opt.workState===z.Start))continue;i=le(i,r.rect),o.set(n,r)}return{rectRange:i,nodeRange:o}}getNodeRectFormShape(s,e){const t=$o(e.toolsType);return this.fullLayer&&(t==null?void 0:t.getRectFromLayer(this.fullLayer,s))}updateNodeRect(s){const e=this.curNodeMap.get(s);if(e){const t=this.getNodeRectFormShape(s,e);if(!t){this.curNodeMap.delete(s);return}e.rect=t,this.curNodeMap.set(s,e)}}updateHighLevelNodesRect(s){this.highLevelIds=s;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var s;for(const e of this.curNodeMap.keys())(s=this.highLevelIds)!=null&&s.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}setTargetAssignKeys(s){const e=new Map;for(const t of s){const i=this.curNodeMap.get(t);i&&e.set(t,ke(i))}return this.targetNodeMap.push(ke(e)),this.targetNodeMap.length-1}setTarget(){return this.targetNodeMap.push(ke(this.curNodeMap)),this.targetNodeMap.length-1}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(s){return this.targetNodeMap[s]}deleteTarget(s){this.targetNodeMap.length=s}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(s){return s.split(je).length===1}isCanClearWorkId(s){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(Yd(this.canClearUids)){const e=s.split(je);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}class Jf{constructor(s,e,t){y(this,"viewId");y(this,"scene");y(this,"fullLayer");y(this,"vNodes");y(this,"dpr");y(this,"contextType");y(this,"opt");y(this,"cameraOpt");y(this,"isSafari",!1);y(this,"combinePostMsg",new Set);y(this,"workerTaskId");y(this,"protectedTask");y(this,"hasPriorityDraw",!0);y(this,"delayPostDoneResolve");y(this,"cacheImages",new Map);y(this,"imageResolveMap",new Map);y(this,"taskUpdateCameraId");y(this,"debounceUpdateCameraId");var i,o;if(this.viewId=s,this.opt=e,this.dpr=e.dpr,this.contextType=this.getSupportContextType(t,(i=e==null?void 0:e.offscreenCanvasOpt)==null?void 0:i.contextType),!this.contextType)throw new Error("Sorry, your browser doesn't support canvas context type 2d or webgl");try{this.createRenderLayer(e)}catch{if(this.contextType!=="2d")this.contextType="2d",(o=this.scene)==null||o.disconnect(),this.createRenderLayer(e);else throw new Error(`Sorry, your browser doesn't support canvas context type ${this.contextType}`)}this.vNodes=new Qo(s,this.scene)}createRenderLayer(s){this.scene=this.createScene(s.offscreenCanvasOpt);const e=Se.bufferSize.full,t=Se.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...s.layerOpt,bufferSize:this.viewId===pe?e:t*2})}async updateDpr(s){this.dpr=s,this.scene.displayRatio=s}getCachedImages(s){var e;return(e=this.cacheImages.get(s))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(s){for(const[e,t]of this.cacheImages.entries())if(e===s&&t.imageBitmap)return t.imageBitmap}deleteCachedImagesByWorkId(s,e){for(const[t,i]of this.cacheImages.entries())e&&t===e||i.workId===s&&(i.imageBitmap.close(),this.cacheImages.delete(t))}clearCacheImages(){this.cacheImages.forEach(s=>s.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:s})=>{s&&clearTimeout(s)}),this.imageResolveMap.clear()}setHasPriorityDraw(s){this.hasPriorityDraw=s}getPriorityDraw(){return this.hasPriorityDraw}setIsSafari(s){this.isSafari=s}async on(s){const{msgType:e,toolsType:t,opt:i,imageSrc:o,imageBitmap:n,workId:r,dpr:c}=s;switch(e){case L.UpdateDpr:De(c)&&await this.updateDpr(c);break;case L.UpdateCamera:await this.updateCamera(s);break;case L.Destroy:this.destroy();break;case L.Clear:await this.clearAll();break;case L.UpdateTools:if(t&&i){const l={toolsType:t,toolsOpt:i};this.localWork.setToolsOpt(l)}break;case L.GetImageBitMap:if(o&&n&&r){const l=r.toString();this.cacheImages.set(o,{imageBitmap:n,workId:l});const u=this.imageResolveMap.get(o);if(u){const{resolve:h,timer:d}=u;d&&clearTimeout(d),h&&h(o)}this.deleteCachedImagesByWorkId(l,o)}break}}getIconSize(s,e,t){const i=s*t,o=e*t;return i<=50||o<=50?[50,50]:i<=100||o<=100?[100,100]:i<=200||o<=200?[200,200]:i<=400||o<=400?[400,400]:i<=800||o<=800?[800,800]:[1600,1600]}async loadImageBitMap(s){const{toolsType:e,opt:t,workId:i,isSubWorker:o}=s;if(e===T.Image&&t&&i){const n=i.toString(),{src:r,type:c,width:l,height:u,strokeColor:h}=t;if(!r||!c||!l||!u)return;let d=r;if(c===dt.Iconify){const[m,N]=this.getIconSize(l,u,this.dpr);d=`${r}?width=${m}&height=${N}&color=${h}`}if(this.cacheImages.has(d)){const m=this.getCachedImages(d);if(m)return m}if(this.imageResolveMap.has(d)){const m=this.getCachedImagesByWorkId(n);if(m)return m}const p=await new Promise(m=>{const N=this.imageResolveMap.get(d)||{resolve:void 0,timer:void 0};N.timer&&clearTimeout(N.timer),N.resolve=m,N.timer=setTimeout(()=>{const v=this.imageResolveMap.get(d);v!=null&&v.resolve&&v.resolve(d)},5e3),this.imageResolveMap.set(d,N),this._post({sp:[{imageSrc:d,workId:n,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:o,type:L.GetImageBitMap}]})});return this.imageResolveMap.delete(p),this.getCachedImages(d)}}createLocalWork(s){const{workId:e,opt:t,toolsType:i}=s;e&&t&&(!this.localWork.getToolsOpt()&&i&&this.setToolsOpt({toolsType:i,toolsOpt:t}),this.setWorkOpt({workId:e,toolsOpt:t}))}updateScene(s){this.scene.attr({...s});const{width:e,height:t}=s;this.scene.container.width=e,this.scene.container.height=t,this.scene.width=e,this.scene.height=t,this.updateLayer({width:e,height:t})}updateLayer(s){const{width:e,height:t}=s;this.fullLayer&&(this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",t),this.fullLayer.setAttribute("size",[e,t]),this.fullLayer.setAttribute("pos",[e*.5,t*.5]))}getSupportContextType(s,e){const t=new OffscreenCanvas(100,100);let i=["2d"];s===As.Full&&this.viewId===pe&&(i=["webgl2","webgl","2d"],e&&i.unshift(e));for(const o of i)try{if(t.getContext(o))return o}catch{continue}}createScene(s){const{width:e,height:t}=s,i=new OffscreenCanvas(e,t);s.contextType&&delete s.contextType;const o=new he.Scene({container:i,displayRatio:this.dpr,depth:!1,desynchronized:!0,failIfMajorPerformanceCaveat:!0,...s,contextType:this.contextType,id:this.viewId});return o.setAttribute("id",this.viewId),o}createLayer(s,e,t){const{width:i,height:o}=t,n=`offscreen-${s}`,r=e.layer(n,t),c=new he.Group({anchor:[.5,.5],pos:[i*.5,o*.5],size:[i,o],name:"viewport",id:s});return r.append(c),c}async clearAll(){var s;this.fullLayer&&(this.fullLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),Oe(this.fullLayer,this.fullLayer.parent)),this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),this.debounceUpdateCameraId&&(clearTimeout(this.debounceUpdateCameraId),this.debounceUpdateCameraId=void 0),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.destroy(),(s=this.serviceWork)==null||s.destroy()}setToolsOpt(s){this.localWork.setToolsOpt(s)}setWorkOpt(s){const{workId:e,toolsOpt:t}=s;e&&t&&this.localWork.setWorkOptions(e.toString(),t)}destroy(){var s;this.vNodes.clear(),this.fullLayer.remove(),Ee(this.fullLayer,this.fullLayer.parent),this.clearCacheImages(),this.clearImageResolveMap(),this.scene.remove(),this.localWork.destroy(),(s=this.serviceWork)==null||s.destroy()}async post(s){this.combinePostMsg.add(s),await this.runBatchPostData()}async runBatchPostData(){this.workerTaskId||(this.workerTaskId=setTimeout(()=>{this.workerTaskId=void 0,this.combinePost()},16)),this.type===As.Full&&!this.delayPostDoneResolve&&await new Promise(e=>{this.delayPostDoneResolve=e})&&(this.delayPostDoneResolve=void 0)}combinePostData(){var r,c;this.workerTaskId=void 0;const s=[],e=[];let t,i,o;const n=new Set;for(const l of this.combinePostMsg.values()){if((r=l.render)!=null&&r.length)for(const u of l.render){let h=!1;if(u.workId&&n.add(u.workId),u.isClearAll&&(u.rect=this.getSceneRect(),u.isClear=!0,delete u.isClearAll),u.drawCanvas){const d=this.getLayer(u.drawCanvas);if(!d||!(d.parent instanceof he.Layer))continue;if(d.parent.render(),u.isDrawAll){const f=this.getSceneRect();u.rect=f,delete u.isDrawAll}}for(const d of s)if(u.viewId===d.viewId){u.isClear&&d.clearCanvas&&d.isClear&&d.clearCanvas===u.clearCanvas&&(d.rect=le(d.rect,u.rect),h=!0),d.drawCanvas&&d.drawCanvas===u.drawCanvas&&(d.rect=le(d.rect,u.rect),h=!0);continue}h||(u.isClear&&!u.drawCanvas?s.unshift(u):s.push(u))}if((c=l.sp)!=null&&c.length)for(const u of l.sp){let h=!1;for(const d of e)if(it(u,d)){h=!0;break}h||e.push(u)}De(l.fullWorkerDrawCount)&&(t=l.fullWorkerDrawCount),De(l.subWorkerDrawCount)&&(i=l.subWorkerDrawCount),De(l.consumeCount)&&(o=l.consumeCount)}return this.combinePostMsg.clear(),{render:s,sp:e,fullWorkerDrawCount:t,subWorkerDrawCount:i,consumeCount:o,workIds:n,viewId:this.viewId}}getSceneRect(){const{width:s,height:e}=this.scene;return{x:0,y:0,w:Math.floor(s),h:Math.floor(e)}}}class Kf{constructor(s){y(this,"viewId");y(this,"vNodes");y(this,"thread");y(this,"fullLayer");y(this,"drawLayer");y(this,"_post");y(this,"tmpOpt");y(this,"workShapes",new Map);y(this,"drawCount",0);y(this,"consumeCount",0);y(this,"syncUnitTime",Se.syncOpt.interval);this.thread=s.thread,this.viewId=s.viewId,this.vNodes=s.vNodes,this.fullLayer=s.fullLayer,this.drawLayer=s.drawLayer,this._post=this.thread.post.bind(s.thread)}destroy(){this.workShapes.clear()}getWorkShapes(){return this.workShapes}getWorkShape(s){return this.workShapes.get(s)}createWorkShape(s,e){if(s&&this.tmpOpt){const t={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},i=this.createWorkShapeNode({...t,workId:s});i&&this.workShapes.set(s,i)}}setWorkOptions(s,e){const t=this.getWorkShape(s);t||this.createWorkShape(s,e),t==null||t.setWorkOptions(e)}createWorkShapeNode(s){var e;return gs({...s,vNodes:this.vNodes,fullLayer:this.fullLayer,drawLayer:this.drawLayer},(e=this.thread)==null?void 0:e.serviceWork)}setToolsOpt(s){var e,t,i;((e=this.tmpOpt)==null?void 0:e.toolsType)!==s.toolsType&&(t=this.tmpOpt)!=null&&t.toolsType&&this.clearAllWorkShapesCache(),this.tmpOpt=s,(i=s.toolsOpt)!=null&&i.syncUnitTime&&(this.syncUnitTime=s.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}clearWorkShapeNodeCache(s){var e;(e=this.getWorkShape(s))==null||e.clearTmpPoints(),this.workShapes.delete(s)}clearAllWorkShapesCache(){this.workShapes.forEach(s=>s.clearTmpPoints()),this.workShapes.clear()}setFullWork(s){const{workId:e,opt:t,toolsType:i}=s;if(e&&t&&i){const o=e.toString();let n;return e&&this.workShapes.has(o)?(n=this.workShapes.get(o),n==null||n.setWorkOptions(t)):n=this.createWorkShapeNode({toolsOpt:t,toolsType:i,workId:o}),n?(this.workShapes.set(o,n),n):void 0}}}var _f=Ze,eg=function(){return _f.Date.now()},tg=eg,sg=/\s/;function ig(a){for(var s=a.length;s--&&sg.test(a.charAt(s)););return s}var og=ig,ng=og,rg=/^\s+/;function ag(a){return a&&a.slice(0,ng(a)+1).replace(rg,"")}var cg=ag,lg=pt,hg=Je,ug="[object Symbol]";function dg(a){return typeof a=="symbol"||hg(a)&&lg(a)==ug}var pg=dg,fg=cg,$i=ot,gg=pg,Hi=NaN,yg=/^[-+]0x[0-9a-f]+$/i,Mg=/^0b[01]+$/i,mg=/^0o[0-7]+$/i,wg=parseInt;function vg(a){if(typeof a=="number")return a;if(gg(a))return Hi;if($i(a)){var s=typeof a.valueOf=="function"?a.valueOf():a;a=$i(s)?s+"":s}if(typeof a!="string")return a===0?a:+a;a=fg(a);var e=Mg.test(a);return e||mg.test(a)?wg(a.slice(2),e?2:8):yg.test(a)?Hi:+a}var Ig=vg,Sg=ot,Ts=tg,Qi=Ig,Ng="Expected a function",Tg=Math.max,kg=Math.min;function Cg(a,s,e){var t,i,o,n,r,c,l=0,u=!1,h=!1,d=!0;if(typeof a!="function")throw new TypeError(Ng);s=Qi(s)||0,Sg(e)&&(u=!!e.leading,h="maxWait"in e,o=h?Tg(Qi(e.maxWait)||0,s):o,d="trailing"in e?!!e.trailing:d);function f(S){var b=t,x=i;return t=i=void 0,l=S,n=a.apply(x,b),n}function g(S){return l=S,r=setTimeout(N,s),u?f(S):n}function p(S){var b=S-c,x=S-l,P=s-b;return h?kg(P,o-x):P}function m(S){var b=S-c,x=S-l;return c===void 0||b>=s||b<0||h&&x>=o}function N(){var S=Ts();if(m(S))return v(S);r=setTimeout(N,p(S))}function v(S){return r=void 0,d&&t?f(S):(t=i=void 0,n)}function I(){r!==void 0&&clearTimeout(r),l=0,t=c=i=r=void 0}function k(){return r===void 0?n:v(Ts())}function w(){var S=Ts(),b=m(S);if(t=arguments,i=this,c=S,b){if(r===void 0)return g(c);if(h)return clearTimeout(r),r=setTimeout(N,s),f(c)}return r===void 0&&(r=setTimeout(N,s)),n}return w.cancel=I,w.flush=k,w}var bg=Cg,xg=bg,Lg=ot,Pg="Expected a function";function zg(a,s,e){var t=!0,i=!0;if(typeof a!="function")throw new TypeError(Pg);return Lg(e)&&(t="leading"in e?!!e.leading:t,i="trailing"in e?!!e.trailing:i),xg(a,s,{leading:t,maxWait:s,trailing:i})}var Dg=zg;const Ms=Ct(Dg);function Ag(a){return a}var Go=Ag;function jg(a,s,e){switch(e.length){case 0:return a.call(s);case 1:return a.call(s,e[0]);case 2:return a.call(s,e[0],e[1]);case 3:return a.call(s,e[0],e[1],e[2])}return a.apply(s,e)}var Eg=jg,Og=Eg,Gi=Math.max;function Rg(a,s,e){return s=Gi(s===void 0?a.length-1:s,0),function(){for(var t=arguments,i=-1,o=Gi(t.length-s,0),n=Array(o);++i<o;)n[i]=t[s+i];i=-1;for(var r=Array(s+1);++i<s;)r[i]=t[i];return r[s]=e(n),Og(a,this,r)}}var Wg=Rg;function Yg(a){return function(){return a}}var Ug=Yg,Bg=Ug,Zi=lo,Fg=Go,Vg=Zi?function(a,s){return Zi(a,"toString",{configurable:!0,enumerable:!1,value:Bg(s),writable:!0})}:Fg,$g=Vg,Hg=800,Qg=16,Gg=Date.now;function Zg(a){var s=0,e=0;return function(){var t=Gg(),i=Qg-(t-e);if(e=t,i>0){if(++s>=Hg)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}var qg=Zg,Xg=$g,Jg=qg,Kg=Jg(Xg),_g=Kg,ey=Go,ty=Wg,sy=_g;function iy(a,s){return sy(ty(a,s,ey),a+"")}var oy=iy;function ny(a,s,e,t){for(var i=a.length,o=e+(t?1:-1);t?o--:++o<i;)if(s(a[o],o,a))return o;return-1}var ry=ny;function ay(a){return a!==a}var cy=ay;function ly(a,s,e){for(var t=e-1,i=a.length;++t<i;)if(a[t]===s)return t;return-1}var hy=ly,uy=ry,dy=cy,py=hy;function fy(a,s,e){return s===s?py(a,s,e):uy(a,dy,e)}var gy=fy,yy=gy;function My(a,s){var e=a==null?0:a.length;return!!e&&yy(a,s,0)>-1}var Zo=My;function my(a,s,e){for(var t=-1,i=a==null?0:a.length;++t<i;)if(e(s,a[t]))return!0;return!1}var qo=my;function wy(a,s){for(var e=-1,t=a==null?0:a.length,i=Array(t);++e<t;)i[e]=s(a[e],e,a);return i}var vy=wy,Iy=ei,Sy=Zo,Ny=qo,Ty=vy,ky=ps,Cy=ti,by=200;function xy(a,s,e,t){var i=-1,o=Sy,n=!0,r=a.length,c=[],l=s.length;if(!r)return c;e&&(s=Ty(s,ky(e))),t?(o=Ny,n=!1):s.length>=by&&(o=Cy,n=!1,s=new Iy(s));e:for(;++i<r;){var u=a[i],h=e==null?u:e(u);if(u=t||u!==0?u:0,n&&h===h){for(var d=l;d--;)if(s[d]===h)continue e;c.push(u)}else o(s,h,t)||c.push(u)}return c}var Ly=xy,qi=Ut,Py=fo,zy=Bt,Xi=qi?qi.isConcatSpreadable:void 0;function Dy(a){return zy(a)||Py(a)||!!(Xi&&a&&a[Xi])}var Ay=Dy,jy=Xs,Ey=Ay;function Xo(a,s,e,t,i){var o=-1,n=a.length;for(e||(e=Ey),i||(i=[]);++o<n;){var r=a[o];s>0&&e(r)?s>1?Xo(r,s-1,e,t,i):jy(i,r):t||(i[i.length]=r)}return i}var Oy=Xo;function Ry(){}var Wy=Ry,ks=ko,Yy=Wy,Uy=si,By=1/0,Fy=ks&&1/Uy(new ks([,-0]))[1]==By?function(a){return new ks(a)}:Yy,Vy=Fy,$y=ei,Hy=Zo,Qy=qo,Gy=ti,Zy=Vy,qy=si,Xy=200;function Jy(a,s,e){var t=-1,i=Hy,o=a.length,n=!0,r=[],c=r;if(e)n=!1,i=Qy;else if(o>=Xy){var l=s?null:Zy(a);if(l)return qy(l);n=!1,i=Gy,c=new $y}else c=s?[]:r;e:for(;++t<o;){var u=a[t],h=s?s(u):u;if(u=e||u!==0?u:0,n&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue e;s&&c.push(h),r.push(u)}else i(c,h,e)||(c!==r&&c.push(h),r.push(u))}return r}var Ky=Jy,_y=Ly,eM=Oy,Ji=Ky;function tM(a,s,e){var t=a.length;if(t<2)return t?Ji(a[0]):[];for(var i=-1,o=Array(t);++i<t;)for(var n=a[i],r=-1;++r<t;)r!=i&&(o[i]=_y(o[i]||n,a[r],s,e));return Ji(eM(o,1),s,e)}var sM=tM,iM=Qs,oM=Je;function nM(a){return oM(a)&&iM(a)}var rM=nM,aM=wo,cM=oy,lM=sM,hM=rM;cM(function(a){return lM(aM(a,hM))});class uM extends Kf{constructor(e){super(e);y(this,"drawWorkActiveId")}async runFullWork(e){var o;const t=this.setFullWork(e),i=e.ops&&nt(e.ops);if(t){let n,r;const c=(o=t.getWorkId())==null?void 0:o.toString();return t.toolsType===T.Image?n=await t.consumeServiceAsync({isFullWork:!0,worker:this.thread}):t.toolsType===T.Text?n=await t.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(n=t.consumeService({op:i,isFullWork:!0,replaceId:c}),r=(e==null?void 0:e.updateNodeOpt)&&t.updataOptService(e.updateNodeOpt)),e.workId&&this.workShapes.delete(e.workId.toString()),le(n,r)}}runSelectWork(e){var i;const t=this.setFullWork(e);t&&((i=e.selectIds)!=null&&i.length)&&e.workId&&t.selectServiceNode(e.workId.toString(),{selectIds:e.selectIds},!1)}workShapesDone(){for(const e of this.workShapes.keys())this.clearWorkShapeNodeCache(e);Oe(this.fullLayer,this.fullLayer.parent)}canUseSubWorker(e){const t=this.thread.getPriorityDraw();return t||!t&&e!==T.Pencil}async consumeDraw(e){const{workId:t,fullWorkerDrawCount:i,postCount:o}=e,n=t==null?void 0:t.toString(),r=n&&this.workShapes.get(n);if(!r)return;this.drawWorkActiveId&&this.drawWorkActiveId!==n&&(await this.consumeDrawAll({workId:this.drawWorkActiveId,viewId:this.viewId,msgType:L.DrawWork,dataType:B.Local}),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&n!==Q&&(this.drawWorkActiveId=n);const c=r.toolsType;De(o)&&(this.consumeCount=o);const l=r.consume({data:e,drawCount:this.drawCount,isFullWork:!0,isSubWorker:!0,removeDrawCount:i});switch(c){case T.Ellipse:case T.Arrow:case T.Straight:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:{l&&(this.drawCount++,await this.drawShape(l));break}case T.Pencil:case T.BitMapEraser:{l&&(this.drawCount++,await this.drawPencil(l,t==null?void 0:t.toString()));break}}}async consumeDrawAll(e){const{workId:t}=e;if(t){const i=t.toString();this.drawWorkActiveId===i&&(this.drawWorkActiveId=void 0);const o=this.workShapes.get(i);if(!o)return;switch(o.toolsType){case T.Arrow:case T.Straight:case T.Ellipse:case T.Pencil:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.BitMapEraser:this.drawCount=0,Oe(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(i);break}}}async removeWork(e){const{workId:t}=e,i=t==null?void 0:t.toString();if(i){const o=this.removeNode(i);if(o){const n=[];n.push({rect:Et(o),clearCanvas:Me.Float,isClear:!0,viewId:this.viewId},{rect:Et(o),drawCanvas:Me.Float,viewId:this.viewId}),await this._post({render:n})}}}removeNode(e){const t=this.workShapes.has(e);let i;return t&&(this.fullLayer.getElementsByName(e).forEach(o=>{const n=o.getBoundingClientRect();i=le(i,{x:n.x-Y.SafeBorderPadding,y:n.y-Y.SafeBorderPadding,w:n.width+Y.SafeBorderPadding*2,h:n.height+Y.SafeBorderPadding*2}),o.remove(),Ee(o,this.fullLayer.parent)}),i&&this.clearWorkShapeNodeCache(e)),i}async drawPencil(e,t){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:e==null?void 0:e.rect,workId:t,drawCanvas:Me.Float,viewId:this.viewId}],sp:(e==null?void 0:e.op)&&[e]})}async drawShape(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&Et(e.rect),isClear:!0,clearCanvas:Me.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&Et(e.rect),drawCanvas:Me.Float,viewId:this.viewId}]})}}class dM{constructor(s){y(this,"viewId");y(this,"vNodes");y(this,"topLayer");y(this,"thread");y(this,"post");y(this,"serviceWorkShapes",new Map);y(this,"localWorkShapes",new Map);y(this,"tmpOpt");y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"animationId");this.viewId=s.viewId,this.vNodes=s.vNodes,this.topLayer=s.topLayer,this.thread=s.thread,this.post=s.thread.post.bind(s.thread)}canUseTopLayer(s){return s===T.LaserPen}getWorkShape(s){return this.localWorkShapes.get(s)}createWorkShape(s,e){if(s&&this.tmpOpt){const t={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},i=this.createWorkShapeNode({...t,workId:s});return i&&this.localWorkShapes.set(s,{node:i,toolsType:i.toolsType,workState:z.Start}),i}}setWorkOptions(s,e){var i;const t=(i=this.localWorkShapes.get(s))==null?void 0:i.node;t||this.createWorkShape(s,e),t==null||t.setWorkOptions(e)}createWorkShapeNode(s){const{toolsType:e}=s;if(e===T.LaserPen)return gs({...s,vNodes:this.vNodes,fullLayer:this.topLayer,drawLayer:this.topLayer})}clearAllWorkShapesCache(){this.localWorkShapes.forEach(s=>{var e;return(e=s.node)==null?void 0:e.clearTmpPoints()}),this.localWorkShapes.clear()}setToolsOpt(s){var e;this.tmpOpt=s,(e=s.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=s.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}consumeDraw(s){const{workId:e,dataType:t}=s;if(t===B.Service)this.activeServiceWorkShape(s);else{const i=e==null?void 0:e.toString(),o=i&&this.localWorkShapes.get(i);if(!o)return;const n=o.node.consume({data:s,isFullWork:!1,isSubWorker:!0});n.rect&&(o.totalRect=le(n.rect,o.totalRect),o.result=n,o.workState=z.Doing,i&&this.localWorkShapes.set(i,o))}this.runAnimation()}consumeDrawAll(s){const{workId:e,dataType:t}=s;if(t===B.Service)this.activeServiceWorkShape(s);else{const i=e==null?void 0:e.toString(),o=i&&this.localWorkShapes.get(i);if(!o)return;const n=o.node.consumeAll({data:s});o.totalRect=le(n.rect,o.totalRect),o.result=n,o.workState=z.Done,i&&this.localWorkShapes.set(i,o)}this.runAnimation()}destroy(){this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}setNodeKey(s,e,t,i){return e.toolsType=t,e.node=this.createWorkShapeNode({workId:s,toolsType:t,toolsOpt:i}),e}activeServiceWorkShape(s){var d,f;const{workId:e,opt:t,toolsType:i,type:o,updateNodeOpt:n,ops:r,op:c}=s;if(!e)return;const l=e.toString(),u=(d=this.vNodes.get(l))==null?void 0:d.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(l))){let g={toolsType:i,animationWorkData:c||[],animationIndex:0,type:o,updateNodeOpt:n,ops:r,oldRect:u};i&&t&&(g=this.setNodeKey(l,g,i,t)),this.serviceWorkShapes.set(l,g)}const h=this.serviceWorkShapes.get(l);o&&(h.type=o),r&&(h.animationWorkData=nt(r),h.ops=r),n&&(h.updateNodeOpt=n),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==l&&h.node.setWorkId(l),u&&(h.oldRect=u),i&&t&&(h.toolsType!==i&&i&&t&&this.setNodeKey(l,h,i,t),h.node&&h.node.setWorkOptions(t))}computNextAnimationIndex(s,e){const t=Math.floor((s.animationWorkData||[]).slice(s.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((s.animationIndex||0)+(t||e),(s.animationWorkData||[]).length)}async animationDraw(){var n,r,c,l;this.animationId=void 0;let s=!1;const e=new Map,t=[],i=[],o=[];for(const[u,h]of this.serviceWorkShapes.entries())switch(h.toolsType){case T.LaserPen:{const f=this.computNextAnimationIndex(h,8),g=Math.max(0,h.animationIndex||0),p=(h.animationWorkData||[]).slice(g,f);if((h.animationIndex||0)<f){const m=(n=h.node)==null?void 0:n.consumeService({op:p,isFullWork:!1});h.totalRect=le(h.totalRect,m),h.animationIndex=f,p.length&&e.set(u,{workState:g===0?z.Start:f===((r=h.animationWorkData)==null?void 0:r.length)?z.Done:z.Doing,op:p.slice(-2)})}if(i.push({isClear:!0,rect:h.totalRect,clearCanvas:Me.TopFloat,viewId:this.viewId}),t.push({rect:h.totalRect,drawCanvas:Me.TopFloat,viewId:this.viewId}),h.isDel){(c=h.node)==null||c.clearTmpPoints(),this.serviceWorkShapes.delete(u);break}h.ops&&h.animationIndex===((l=h.animationWorkData)==null?void 0:l.length)&&!h.isDel&&(this.topLayer.getElementsByName(u.toString())[0]||(h.isDel=!0,this.serviceWorkShapes.set(u,h))),s=!0;break}}for(const[u,h]of this.localWorkShapes.entries()){const{result:d,toolsType:f,totalRect:g,isDel:p,workState:m}=h;switch(f){case T.LaserPen:{if(g&&(i.push({isClear:!0,rect:g,clearCanvas:Me.TopFloat,viewId:this.viewId}),t.push({rect:g,drawCanvas:Me.TopFloat,viewId:this.viewId})),p){h.node.clearTmpPoints(),this.localWorkShapes.delete(u),o.push({removeIds:[u.toString()],viewId:this.viewId,type:L.RemoveNode});break}d&&((d.op||d.ops)&&o.push(d),h.result=void 0),!this.topLayer.getElementsByName(u.toString())[0]&&m===z.Done&&(h.isDel=!0,this.localWorkShapes.set(u,h)),s=!0;break}}}s&&this.runAnimation(),e.size&&e.forEach((u,h)=>{o.push({type:L.Cursor,uid:h.split(je)[0],op:u.op,workState:u.workState,viewId:this.viewId})}),(t.length||i.length||o.length)&&this.post({render:[...i,...t],sp:o})}runAnimation(){this.animationId||(this.animationId=setTimeout(()=>{this.animationId=void 0,this.animationDraw()},16))}}var As=(a=>(a.Full="full",a.Sub="sub",a))(As||{});class pM extends Jf{constructor(e,t,i){super(e,t,"sub");y(this,"type","sub");y(this,"_post");y(this,"topLayer");y(this,"snapshotFullLayer");y(this,"serviceWork");y(this,"localWork");y(this,"topLayerWork");this._post=i;const o=Se.bufferSize.sub;this.topLayer=this.createLayer("topLayer",this.scene,{...t.layerOpt,bufferSize:o,contextType:"2d"});const n={thread:this,viewId:this.viewId,vNodes:this.vNodes,fullLayer:this.fullLayer,topLayer:this.topLayer};this.localWork=new uM(n),this.topLayerWork=new dM(n),this.vNodes.init(this.fullLayer)}async combinePost(){var n,r;const{render:e,...t}=this.combinePostData();let i;if(e!=null&&e.length){const c=[];for(const l of e)if(l.rect){if(l.rect=TM(ke(l.rect),this.scene,this.dpr),!l.rect)continue;if(l.drawCanvas&&l.rect&&l.rect.w>0&&l.rect.h>0){const u=await this.getRectImageBitmap(l);l.imageBitmap=u,i||(i=[]),i.push(u)}c.push(l)}t.render=c}const o=(n=t.sp)==null?void 0:n.filter(c=>c.type!==L.None);o!=null&&o.length?t.sp=o.map(c=>({...c,viewId:this.viewId})):delete t.sp,t.consumeCount===void 0&&delete t.consumeCount,t.subWorkerDrawCount===void 0&&delete t.subWorkerDrawCount,(o!=null&&o.length||t.consumeCount||t.subWorkerDrawCount||(r=t==null?void 0:t.render)!=null&&r.length)&&this._post(t,i),this.delayPostDoneResolve&&this.delayPostDoneResolve(!0)}getLayer(e,t){if(t&&this.snapshotFullLayer)return this.snapshotFullLayer;switch(e){case Me.TopFloat:return this.topLayer;default:return this.fullLayer}}async on(e){const{msgType:t,toolsType:i,opt:o,dataType:n,workState:r}=e;switch(t){case L.UpdateTools:if(i&&this.topLayerWork.canUseTopLayer(i)&&o){const c={toolsType:i,toolsOpt:o};this.topLayerWork.setToolsOpt(c);return}break;case L.CreateWork:this.createLocalWork(e);return;case L.DrawWork:r===z.Done&&n===B.Local?await this.consumeDrawAll(n,e):this.consumeDraw(n,e);return;case L.RemoveNode:await this.removeNode(e);return;case L.FullWork:i&&this.topLayerWork.canUseTopLayer(i)&&await this.consumeDrawAll(n,e);return;case L.Snapshot:this.snapshotFullLayer=this.createLayer("snapshotFullLayer",this.scene,{...this.opt.layerOpt,bufferSize:this.viewId===pe?6e3:3e3,contextType:"2d"}),this.snapshotFullLayer&&(await this.getSnapshot(e),this.snapshotFullLayer=void 0);return;case L.BoundingBox:this.snapshotFullLayer=this.createLayer("snapshotFullLayer",this.scene,{...this.opt.layerOpt,bufferSize:this.viewId===pe?6e3:3e3,contextType:"2d"}),this.snapshotFullLayer&&(await this.getBoundingRect(e),this.snapshotFullLayer=void 0);return}await super.on(e)}createLocalWork(e){const{workId:t,toolsType:i,opt:o}=e;if(i&&this.topLayerWork.canUseTopLayer(i)&&t&&o){this.topLayerWork.getToolsOpt()||this.topLayerWork.setToolsOpt({toolsType:i,toolsOpt:o}),this.topLayerWork.setWorkOptions(t.toString(),o);return}i&&this.localWork.canUseSubWorker(i)&&super.createLocalWork(e)}async removeNode(e){const{dataType:t}=e;t===B.Local&&await this.localWork.removeWork(e)}getOffscreen(e,t){return this.getLayer(e,t).parent.canvas}async consumeDraw(e,t){const{workId:i,toolsType:o}=t;if(i){if(o&&this.topLayerWork.canUseTopLayer(o)){e===B.Local&&(this.topLayerWork.getWorkShape(i.toString())||this.createLocalWork(t)),this.topLayerWork.consumeDraw(t);return}o&&this.localWork.canUseSubWorker(o)&&(this.localWork.getWorkShape(i.toString())||this.createLocalWork(t),await this.localWork.consumeDraw(t));return}}async consumeDrawAll(e,t){const{workId:i,toolsType:o,dataType:n}=t;if(i){const r=i.toString();if(o&&this.topLayerWork.canUseTopLayer(o)){n===B.Local&&(this.topLayerWork.getWorkShape(r)||this.createLocalWork(t)),this.topLayerWork.consumeDrawAll(t);return}o&&this.localWork.canUseSubWorker(o)&&(this.localWork.getWorkShape(r)||super.createLocalWork(t),this.localWork.consumeDrawAll(t));return}}async clearAll(){this.vNodes.clear(),super.clearAll(),this.topLayer&&(this.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),Oe(this.topLayer,this.topLayer.parent)),await this.post({render:[{isClearAll:!0,clearCanvas:Me.TopFloat,viewId:this.viewId}],sp:[{type:L.Clear}]})}getRectImageBitmap(e,t=!1,i){const{rect:o,drawCanvas:n}=e,r=Math.floor(o.x*this.dpr),c=Math.floor(o.y*this.dpr),l=Math.floor(o.w*this.dpr||1),u=Math.floor(o.h*this.dpr||1);return createImageBitmap(this.getOffscreen(n,t),r,c,l,u,i)}updateLayer(e){const{width:t,height:i}=e;super.updateLayer(e),this.topLayer&&(this.topLayer.parent.setAttribute("width",t),this.topLayer.parent.setAttribute("height",i),this.topLayer.setAttribute("size",[t,i]),this.topLayer.setAttribute("pos",[t*.5,i*.5])),this.snapshotFullLayer&&(this.snapshotFullLayer.parent.setAttribute("width",t),this.snapshotFullLayer.parent.setAttribute("height",i),this.snapshotFullLayer.setAttribute("size",[t,i]),this.snapshotFullLayer.setAttribute("pos",[t*.5,i*.5]))}async updateDpr(e){super.updateDpr(e);const t=!!this.topLayerWork.localWorkShapes.size,i=!!this.localWork.getWorkShapes().size,o=[];i&&o.push({isClearAll:!0,clearCanvas:Me.Float,viewId:this.viewId}),t&&o.push({isClearAll:!0,clearCanvas:Me.TopFloat,viewId:this.viewId}),o.length&&await this.post({render:o})}async updateCamera(e){const t=[],{cameraOpt:i}=e;if(i&&!it(this.cameraOpt,i)){const o=!!this.topLayerWork.localWorkShapes.size,n=!!this.localWork.getWorkShapes().size;if(n&&this.localWork.workShapesDone(),this.setCameraOpt(i),n&&t.push({isClearAll:!0,clearCanvas:Me.Float,viewId:this.viewId}),o){t.push({isClearAll:!0,clearCanvas:Me.TopFloat,viewId:this.viewId});for(const[r,c]of this.topLayerWork.localWorkShapes.entries())if(c.totalRect){let l;this.topLayer.getElementsByName(r.toString()).forEach(u=>{const h=u.getBoundingClientRect(),d=Et({x:h.x,y:h.y,w:h.width,h:h.height});l=le(l,d)}),c.totalRect=l,this.topLayerWork.localWorkShapes.set(r,c)}}t.length&&await this.post({render:t})}}setCameraOpt(e,t){this.cameraOpt=e;const{scale:i,centerX:o,centerY:n,width:r,height:c}=e;(r!==this.scene.width||c!==this.scene.height)&&this.updateScene({width:r,height:c}),t?(t.setAttribute("scale",[i,i]),t.setAttribute("translate",[-o,-n])):(this.fullLayer.setAttribute("scale",[i,i]),this.fullLayer.setAttribute("translate",[-o,-n]),this.topLayer.setAttribute("scale",[i,i]),this.topLayer.setAttribute("translate",[-o,-n]))}async getSnapshot(e){const{scenePath:t,scenes:i,cameraOpt:o,w:n,h:r}=e;if(t&&i&&o&&this.snapshotFullLayer){const c=ke(this.cameraOpt);this.setCameraOpt(o,this.snapshotFullLayer),this.localWork.fullLayer=this.snapshotFullLayer,this.localWork.drawLayer=void 0;let l;for(const[h,d]of Object.entries(i))if(d!=null&&d.type)switch(d==null?void 0:d.type){case L.UpdateNode:case L.FullWork:{const{opt:f}=d,g={...d,opt:f,workId:h,msgType:L.FullWork,dataType:B.Service,viewId:this.viewId},p=await this.localWork.runFullWork(g);l=le(l,p);break}}let u;n&&r&&(u={resizeWidth:n,resizeHeight:r}),await this.getSnapshotRender({scenePath:t,curCameraOpt:c,options:u}),this.localWork.fullLayer=this.fullLayer,this.localWork.drawLayer=void 0}}async getSnapshotRender(e){var r;const{scenePath:t,curCameraOpt:i,options:o}=e;((r=this.snapshotFullLayer)==null?void 0:r.parent).render();const n=await this.getRectImageBitmap({rect:this.getSceneRect(),drawCanvas:Me.None},!0,o);n&&(this._post({sp:[{type:L.Snapshot,scenePath:t,imageBitmap:n,viewId:this.viewId}]},[n]),n.close(),this.snapshotFullLayer&&Oe(this.snapshotFullLayer,this.snapshotFullLayer.parent),this.setCameraOpt(i,this.fullLayer))}async getBoundingRect(e){const{scenePath:t,scenes:i,cameraOpt:o}=e;if(t&&i&&o&&this.snapshotFullLayer){const n=ke(this.cameraOpt);this.setCameraOpt(o,this.snapshotFullLayer),this.localWork.fullLayer=this.snapshotFullLayer,this.localWork.drawLayer=void 0;let r;for(const[c,l]of Object.entries(i))if(l!=null&&l.type)switch(l==null?void 0:l.type){case L.UpdateNode:case L.FullWork:{const u=await this.localWork.runFullWork({...l,workId:c,msgType:L.FullWork,dataType:B.Service,viewId:this.viewId});r=le(r,u);break}}r&&await this.post({sp:[{type:L.BoundingBox,scenePath:t,rect:r}]}),this.localWork.fullLayer=this.fullLayer,this.localWork.drawLayer=void 0,Oe(this.snapshotFullLayer,this.snapshotFullLayer.parent),this.setCameraOpt(n,this.fullLayer)}}}class Wt extends Y{constructor(e){super(e);y(this,"canRotate",!0);y(this,"scaleType",ae.all);y(this,"toolsType",T.Image);y(this,"tmpPoints",[]);y(this,"workOptions");y(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Wt.getScaleType(this.workOptions)}consume(){return{type:L.None}}consumeAll(){return{type:L.None}}draw(e){const{layer:t,workId:i,replaceId:o,imageBitmap:n}=e,{centerX:r,centerY:c,width:l,height:u,rotate:h,zIndex:d,eraserlines:f}=this.workOptions,g=new he.Group({anchor:[.5,.5],pos:[r,c],name:i,size:[l,u],zIndex:d,rotate:h}),p={anchor:[.5,.5],pos:[0,0],size:[l,u],texture:n};n||(p.bgcolor="rgba(0,0,0,0.3)");const m=new he.Sprite(p);g.append(m),f&&this.drawEraserlines({group:g,eraserlines:f,pos:[r,c],layer:t}),this.replace(t,o||i,g);const N=g.getBoundingClientRect();if(N)return{x:Math.floor(N.x-Y.SafeBorderPadding),y:Math.floor(N.y-Y.SafeBorderPadding),w:Math.floor(N.width+Y.SafeBorderPadding*2),h:Math.floor(N.height+Y.SafeBorderPadding*2)}}consumeService(){}async consumeServiceAsync(e){var u,h,d,f;const{isFullWork:t,replaceId:i,worker:o}=e,{src:n,uuid:r}=this.workOptions,c=((u=this.workId)==null?void 0:u.toString())||r,l=t?this.fullLayer:this.drawLayer||this.fullLayer;if(n){const g=await o.loadImageBitMap({toolsType:this.toolsType,opt:this.workOptions,workId:c,isSubWorker:o instanceof pM});if(g){const p=this.draw({workId:c,layer:l,replaceId:i,imageBitmap:g});return this.oldRect=c&&((d=(h=this.vNodes)==null?void 0:h.get(c))==null?void 0:d.rect)||void 0,(f=this.vNodes)==null||f.setInfo(c,{rect:p,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:p&&Y.getCenterPos(p,l)}),p}}}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:t,rotate:i}=e;return t!==!1||i&&Math.abs(i)%90>0?ae.proportional:ae.all}static updateNodeOpt(e){const{node:t,opt:i,vNodes:o,targetNode:n}=e,{translate:r,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndex:f,strokeColor:g}=i,p=n&&ke(n)||o.get(t.name);if(!p)return;const m=t.parent;if(m){if(g&&(p.opt.strokeColor=g),De(f)&&(t.setAttribute("zIndex",f),p.opt.zIndex=f),mt(d)&&(p.opt.locked=d),c&&l&&u&&r){const{centerX:N,centerY:v,width:I,height:k,uniformScale:w}=p.opt,S=w!==!1?[u[0],u[0]]:u,b=[N,v],x=[N,v];oi(x,l,S,r);const P=[x[0]-b[0],x[1]-b[1]];if(p.centerPos=[p.centerPos[0]+P[0],p.centerPos[1]+P[1]],p.opt.width=Math.round(I*S[0]),p.opt.height=Math.round(k*S[1]),p.opt.centerX=x[0],p.opt.centerY=x[1],p.opt.eraserlines)for(const E of Object.values(p.opt.eraserlines)){const{op:R,thickness:O}=E;E.thickness=O*Math.max(u[0],u[1]);for(let D=0;D<R.length;D++)ni(R[D],l,u,r)}}else if(r){if(p.opt.centerX=p.opt.centerX+r[0],p.opt.centerY=p.opt.centerY+r[1],p.centerPos=[p.centerPos[0]+r[0],p.centerPos[1]+r[1]],p.opt.eraserlines)for(const N of Object.values(p.opt.eraserlines)){const{op:v}=N;for(let I=0;I<v.length;I++){const k=v[I].map((w,S)=>S%2?w+r[1]:w+r[0]);N.op[I]=k}}}else if(De(h))if(p.opt.rotate=h,p.scaleType=Wt.getScaleType(p.opt),n){const N=Jo(p.rect,h);p.rect=N}else{const N=Y.getRectFromLayer(m,t.name);p.rect=N||p.rect}return p&&o.setInfo(t.name,p),p==null?void 0:p.rect}}}function le(a,s){if(a&&s){const e=Math.min(a.x,s.x),t=Math.min(a.y,s.y),i=Math.max(a.x+a.w,s.x+s.w),o=Math.max(a.y+a.h,s.y+s.h),n=i-e,r=o-t;return{x:e,y:t,w:n,h:r}}return s||a}function ii(a,s){if(a&&s){const e=Math.min(a.originX,s.originX),t=Math.min(a.originY,s.originY),i=Math.max(a.originX+a.width,s.originX+s.width),o=Math.max(a.originY+a.height,s.originY+s.height),n=i-e,r=o-t;return{originX:e,originY:t,width:n,height:r}}return s||a}function fe(a,s=0){const e={x:0,y:0,w:0,h:0};let t=1/0,i=1/0,o=-1/0,n=-1/0;return a.forEach(r=>{const[c,l]=r.XY;t=Math.min(t,c-s),i=Math.min(i,l-s),o=Math.max(o,c+s),n=Math.max(n,l+s)}),e.x=t,e.y=i,e.w=o-t,e.h=n-i,e}function Yt(a,s){return!(a.x+a.w<s.x||a.x>s.x+s.w||a.y+a.h<s.y||a.y>s.y+s.h)}function Et(a,s=10){return{x:Math.floor(a.x-s),y:Math.floor(a.y-s),w:Math.ceil(a.w+s*2),h:Math.ceil(a.h+s*2)}}function js(a,s){return{x:a.x+s[0],y:a.y+s[1],w:a.w,h:a.h}}function fM(a,s){const e=new C(a.x,a.y),t=new C(a.x+a.w,a.y),i=new C(a.x+a.w,a.y+a.h),o=new C(a.x,a.y+a.h),n=new C(a.x+a.w/2,a.y+a.h/2),r=Math.PI*s/180,c=C.RotWith(e,n,r),l=C.RotWith(t,n,r),u=C.RotWith(i,n,r),h=C.RotWith(o,n,r);return[c,l,u,h]}function Jo(a,s){const e=fM(a,s);return fe(e)}function gM(a,s,e){const t=new C(a.x,a.y),i=new C(a.x+a.w,a.y),o=new C(a.x+a.w,a.y+a.h),n=new C(a.x,a.y+a.h),r=new C(e[0],e[1]),c=new C(s[0],s[1]),l=C.ScaleWOrigin(t,c,r),u=C.ScaleWOrigin(i,c,r),h=C.ScaleWOrigin(o,c,r),d=C.ScaleWOrigin(n,c,r);return fe([l,u,h,d])}function yM(a,s,e){const t=new C(s[0],s[1]);for(let i=0;i<a.length;i+=3){const o=new C(a[i],a[i+1]),n=Math.PI*e/180,r=C.RotWith(o,t,n);a[i]=r.x,a[i+1]=r.y}}function MM(a,s,e){const t=new C(s[0],s[1]);for(let i=0;i<a.length;i+=2){const o=new C(a[i],a[i+1]),n=Math.PI*e/180,r=C.RotWith(o,t,n);a[i]=r.x,a[i+1]=r.y}}function oi(a,s,e,t=[0,0]){const i=new C(s[0],s[1]);for(let o=0;o<a.length;o+=3){const n=new C(a[o],a[o+1]),r=new C(e[0],e[1]),c=C.ScaleWOrigin(n,r,i);a[o]=c.x+t[0],a[o+1]=c.y+t[1]}}function ni(a,s,e,t=[0,0]){const i=new C(s[0],s[1]);for(let o=0;o<a.length;o+=2){const n=new C(a[o],a[o+1]),r=new C(e[0],e[1]),c=C.ScaleWOrigin(n,r,i);a[o]=c.x+t[0],a[o+1]=c.y+t[1]}}function Ko(a,s){return a[0]>=s.x&&a[0]<=s.x+s.w&&a[1]>=s.y&&a[1]<=s.y+s.h}function _o(a,s){const e=a<=s?1:a/s,t=s<=a?1:s/a;return[e,t]}function mM(a){for(const s of a)if(isNaN(s)||s===1/0||s===-1/0)return!1;return!0}function wM(a){return a!==Math.floor(a)}function vM(a){const s=a.toString();return s.indexOf(".")!==-1?s.split(".")[1].length:0}function IM(a,s){for(;s!==0;)[a,s]=[s,a%s];return a}const SM=a=>{if(a.tagName==="GROUP"){const s=Object.getOwnPropertySymbols(a).find(e=>e.toString()==="Symbol(sealed)");if(s&&a[s])return!0}return!1},Ee=(a,s)=>{if(a.mesh&&a.mesh.texture&&a.name==="eraserTexture"){const e=a.mesh.texture.image;s.deleteTexture(e)}else if(a.tagName==="GROUP"&&a&&a.children)for(const e of a.children)Ee(e,s)},Oe=(a,s)=>{Ee(a,s),a.removeAllChildren()},NM=(a,s,e)=>{const t=e.parent;if(s){const i=s.children;if(i){for(const o of i)if(Ee(o,t),o.tagName==="GROUP")for(const n of o.children)Ee(n,t)}}s.parent.replaceChild(a,s)},TM=(a,s,e)=>{if(a.w+a.x<=0||a.h+a.y<=0||a.w<=0||a.h<=0)return;const t=s.width,i=s.height,o={x:Math.floor(Math.max(0,a.x)),y:Math.floor(Math.max(0,a.y)),w:Math.floor(Math.min(t,a.w)),h:Math.floor(Math.min(i,a.h))};if(o.x+o.w>t&&(o.w=Math.floor(t-o.x)),o.y+o.h>i&&(o.h=Math.floor(i-o.y)),wM(e)){const n=vM(e),r=Math.pow(10,n),c=IM(r,e*r),l=o.x%c,u=o.x-l;u>=0?(o.x=u,o.w=o.w+l):(o.x=0,o.w=o.w+l-u);const h=o.y%c,d=o.y-h;d>=0?(o.y=d,o.h=o.h+h):(o.y=0,o.h=o.h+h-d)}return o};function gt(a){return`${os(a.x)},${os(a.y)} `}function yt(a,s){return`${os((a.x+s.x)/2)},${os((a.y+s.y)/2)} `}function os(a){return+a.toFixed(4)}const Fe=(a,s)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:s}):setTimeout(()=>{e(2)},s)}).then(function(){a()},()=>{a()}),et=a=>{const s=(a==null?void 0:a.webkitBackingStorePixelRatio)||(a==null?void 0:a.mozBackingStorePixelRatio)||(a==null?void 0:a.msBackingStorePixelRatio)||(a==null?void 0:a.oBackingStorePixelRatio)||(a==null?void 0:a.backingStorePixelRatio)||1;return Math.max(1,(window.devicePixelRatio||1)/s)},ri=(a,s)=>a.x+a.w<s.x||a.x>s.x+s.w||a.y+a.h<s.y||a.y>s.y+s.h?ut.outside:a.x>=s.x&&a.y>=s.y&&a.x+a.w<=s.x+s.w&&a.y+a.h<=s.y+s.h?ut.inside:ut.intersect;function kM(a){let s=0;for(let e=0;e<a.length;e++){const t=a.charCodeAt(e);t>=1&&t<=126||65376<=t&&t<=65439?s++:s+=2}return s}class CM{constructor(s,e){y(this,"plugin");y(this,"uid");y(this,"control");this.control=s,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var s;return X.toJS((s=this.plugin)==null?void 0:s.attributes[this.namespace])||{}}getAuthSpaceData(){var s;return X.toJS((s=this.plugin)==null?void 0:s.attributes[this.authSpace])||{}}getUidFromKey(s){return s.split(je).length===2&&s.split(je)[0]||this.uid}isLocalId(s){return s.split(je).length===1}getLocalId(s){return s.split(je)[1]}isSelector(s){return this.getLocalId(s)===Q}}const Ie=class Ie extends CM{constructor(e,t,i){super(e,t);y(this,"authSpace");y(this,"namespace");y(this,"serviceStorage",{});y(this,"storage",{});y(this,"authStorage",{});y(this,"stateDisposer");y(this,"authDisposer");y(this,"asyncClockState",!1);y(this,"limitNums",new Map);y(this,"limitComponents",j.debounce((e,t)=>{var n,r,c,l,u,h,d,f;const i=((r=(n=this.storage)==null?void 0:n[e])==null?void 0:r[t])&&Object.keys(this.storage[e][t]).length||0;if(i===0)return;let o=this.limitNums.get(`${e}/${t}`);if(!o){const g=this.getLimitNum(i);this.limitNums.set(`${e}/${t}`,g),o=g}if(o>0&&i>=o){const g=Ie.componentsLimits.indexOf(o),p=g>=0&&g<Ie.componentsLimits.length-1;if((u=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&u.map.onObjectsLimit&&((d=(h=this.control.room)==null?void 0:h.callbacks)==null||d.dispatch("onObjectsLimit",N=>N(o,p))),!p){this.control.room.logger.error(`exceeds the limit of ${o} components, current: ${i}`),(f=this.control.room)==null||f.disconnect().then(()=>{var N,v,I,k,w;(I=(v=(N=this.control.room)==null?void 0:N.callbacks)==null?void 0:v.listeners)!=null&&I.map.onKickedWithReason&&((w=(k=this.control.room)==null?void 0:k.callbacks)==null||w.dispatch("onKickedWithReason",S=>S("kickByAdmin")))});return}console.warn(`exceeds the limit of ${o} components, current: ${i}`);const m=p?Ie.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${t}`,m)}},2e3,{maxWait:5e3}));y(this,"clearLimitComponents",(e,t)=>{if(t)this.limitNums.delete(`${e}/${t}`);else for(const i of this.limitNums.keys())`${e}/`.indexOf(i)===0&&this.limitNums.delete(i)});Ie.syncInterval=(i||Ie.syncInterval)*.5,this.namespace=Ie.namespace,this.authSpace=Ie.authSpace,this.serviceStorage=this.getNamespaceData(),this.storage=j.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.getLimitNums()}getLimitNum(e){return e>=Ie.componentsLimits[0]?Ie.componentsLimits[1]:Ie.componentsLimits[0]}getLimitNums(){for(const[e,t]of Object.entries(this.storage))if(e&&t){for(const[i,o]of Object.entries(t))if(i&&o){const n=this.getLimitNum(Object.keys(o).length);this.limitNums.set(`${e}/${i}`,n)}}}getViewIdBySecenPath(e){const t=this.getNamespaceData();for(const[i,o]of Object.entries(t))if(o){for(const n of Object.keys(o))if(n===e)return i}}getScenePathData(e){const t=this.getNamespaceData();for(const i of Object.values(t))if(i){for(const o of Object.keys(i))if(o===e)return j.cloneDeep(i[o])}}getStorageData(e,t){const i=this.getNamespaceData();return i&&i[e]&&j.cloneDeep(i[e][t])||void 0}hasSelector(e,t){const i=this.storage&&this.storage[e]&&this.storage[e][t];return!!(i&&Object.keys(i).find(o=>this.isOwn(o)&&this.getLocalId(o)===Q))}addStorageStateListener(e){this.stateDisposer=X.autorun(async()=>{var c,l,u,h,d,f;const t=this.getNamespaceData(),{diffView:i,diffScenePath:o,diffData:n}=this.diffFunByView(this.serviceStorage,t);this.serviceStorage=t;const r={};if(Object.keys(i).length>0)for(const[g,p]of Object.entries(i))p&&!j.isEqual((c=this.storage)==null?void 0:c[g],p.newValue)&&(r.diffView||(r.diffView={}),r.diffView[g]=p,this.storage||(this.storage={}),p.newValue===void 0?delete this.storage[g]:this.storage[g]=p.newValue);if(Object.keys(o).length>0){for(const[g,p]of Object.entries(o))if(p){const{viewId:m,newValue:N}=p;p&&!j.isEqual((u=(l=this.storage)==null?void 0:l[m])==null?void 0:u[g],N)&&(r.diffScenePath||(r.diffScenePath={}),r.diffScenePath[g]=p,this.storage||(this.storage={}),this.storage[m]||(this.storage[m]={}),p.newValue===void 0?delete this.storage[m][g]:this.storage[m][g]=p.newValue)}}if(Object.keys(n).length>0){for(const[g,p]of Object.entries(n))if(p){const{viewId:m,scenePath:N,newValue:v}=p;p&&!j.isEqual((f=(d=(h=this.storage)==null?void 0:h[m])==null?void 0:d[N])==null?void 0:f[g],v)&&(r.diffData||(r.diffData={}),r.diffData[g]=p,this.storage||(this.storage={}),this.storage[m]||(this.storage[m]={}),this.storage[m][N]||(this.storage[m][N]={}),p.newValue===void 0?delete this.storage[m][N][g]:this.storage[m][N][g]=p.newValue)}}Object.keys(r).length>0&&e(r)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,t){const i=Le(e),o=Le(t),n={},r={},c={};for(const l of o)if(!i.includes(l)||e[l]===void 0){n[l]={newValue:t[l],oldValue:void 0};continue}for(const l of i){if(j.isEqual(e[l],t[l]))continue;if(!o.includes(l)||t[l]===void 0){n[l]={newValue:void 0,oldValue:e[l]};continue}const u=this.diffFunByScenePath(e[l],t[l],l);Object.assign(r,u.diffScenePath),Object.assign(c,u.diffData)}return{diffData:c,diffScenePath:r,diffView:n}}diffFunByScenePath(e,t,i){const o=Le(e),n=Le(t),r={},c={};for(const l of n)if(!o.includes(l)||e[l]===void 0){r[l]={newValue:t[l],oldValue:void 0,viewId:i};continue}for(const l of o){if(j.isEqual(e[l],t[l]))continue;if(!n.includes(l)||t[l]===void 0){r[l]={newValue:void 0,oldValue:e[l],viewId:i};continue}const u=this.diffFunByKeys(e[l],t[l],l,i);Object.assign(c,u)}return{diffScenePath:r,diffData:c}}diffFunByKeys(e,t,i,o){const n=Le(e),r=Le(t),c={};for(const l of r)(!n.includes(l)||e[l]===void 0)&&(c[l]={oldValue:void 0,newValue:t[l],viewId:o,scenePath:i});for(const l of n)if(!j.isEqual(e[l],t[l])){if(!r.includes(l)||t[l]===void 0){c[l]={newValue:void 0,oldValue:e[l],viewId:o,scenePath:i};continue}r.includes(l)&&(c[l]={oldValue:e[l],newValue:t[l],viewId:o,scenePath:i})}return c}transformKey(e){return this.uid+je+e}isOwn(e){return e.split(je)[0]===this.uid}dispatch(e){const{type:t,workId:i,ops:o,index:n,opt:r,toolsType:c,removeIds:l,updateNodeOpt:u,op:h,selectIds:d,isSync:f,scenePath:g,viewId:p}=e;if(p)switch(t){case L.Clear:const m={};g&&this.storage[p]&&this.storage[p][g]?(delete this.storage[p][g],this.setState(m,{isSync:f,viewId:p,scenePath:g})):this.storage[p]&&(delete this.storage[p],this.setState(m,{isSync:f,viewId:p,scenePath:""})),Fe(()=>{var w;this.control.pluginManager.dispatchPluginEvent("syncStorage",p,g),(w=this.control.miniMapManager)==null||w.updateMiniMapCamera(p),this.clearLimitComponents(p,g)},Ie.syncInterval);break;case L.CreateWork:if(g&&i&&c&&r){const w=this.isLocalId(i.toString())?this.transformKey(i):i;this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.addRenderPageElementId({viewId:p,scenePath:g,elementId:w.toString()}),this.updateValue(w.toString(),{type:L.CreateWork,workId:i,toolsType:c,opt:r},{isSync:f,viewId:p,scenePath:g})}break;case L.DrawWork:if(g&&i&&typeof n=="number"&&(h!=null&&h.length)){const w=this.isLocalId(i.toString())?this.transformKey(i):i,S=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][w]||void 0;if(S!=null&&S.ops||(S==null?void 0:S.type)===L.FullWork)return;const b=n?((S==null?void 0:S.op)||[]).slice(0,n).concat(h):h||(S==null?void 0:S.op),x=c||(S==null?void 0:S.toolsType),P=r||(S==null?void 0:S.opt),E=u||(S==null?void 0:S.updateNodeOpt);i&&x&&P&&b&&(this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.addRenderPageElementId({viewId:p,scenePath:g,elementId:w.toString()}),this.updateValue(w.toString(),{...S,type:L.DrawWork,workId:i,updateNodeOpt:E,toolsType:x,opt:P,op:b,index:n},{isSync:f,viewId:p,scenePath:g}))}break;case L.FullWork:if(g&&i){const w=this.isLocalId(i.toString())?this.transformKey(i):i,S=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][w]||void 0,b=u||(S==null?void 0:S.updateNodeOpt),x=c||(S==null?void 0:S.toolsType),P=r||(S==null?void 0:S.opt),E=o||(S==null?void 0:S.ops);x&&P&&(this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.addRenderPageElementId({viewId:p,scenePath:g,elementId:w.toString()}),this.updateValue(w.toString(),{type:L.FullWork,updateNodeOpt:b,workId:w,toolsType:x,opt:P,ops:E},{isSync:f,viewId:p,scenePath:g}),Fe(()=>{var R;this.control.pluginManager.dispatchPluginEvent("syncStorage",p,g),(R=this.control.miniMapManager)==null||R.updateMiniMapCamera(p),this.limitComponents(p,g)},Ie.syncInterval))}break;case L.RemoveNode:if(g&&(l!=null&&l.length)){const w=l.map(S=>this.isLocalId(S+"")?this.transformKey(S):S);this.storage[p]&&this.storage[p][g]&&(Object.keys(this.storage[p][g]).map(S=>{w!=null&&w.includes(S)&&(this.control.renderControl.isUsePageAuth(p)&&this.control.renderControl.delRenderPageElementId({viewId:p,scenePath:g,elementId:S}),this.updateValue(S,void 0,{isSync:f,viewId:p,scenePath:g}))}),Fe(()=>{var S;this.control.pluginManager.dispatchPluginEvent("syncStorage",p,g),(S=this.control.miniMapManager)==null||S.updateMiniMapCamera(p)},Ie.syncInterval))}break;case L.UpdateNode:if(g&&i&&(u||o||r)){const w=this.isLocalId(i.toString())?this.transformKey(i):i,S=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][w]||void 0;S&&(S.updateNodeOpt=u,(o||h)&&(S.ops=o,S.op=h),r&&(S.opt=r),S.type=L.FullWork,this.updateValue(w.toString(),S,{isSync:f,viewId:p,scenePath:g}),Fe(()=>{var b;(b=this.control.miniMapManager)==null||b.updateMiniMapCamera(p)},Ie.syncInterval))}break;case L.Select:if(!g)return;let N;d!=null&&d.length&&(N=d.map(w=>this.isLocalId(w+"")?this.transformKey(w):w));const v=this.transformKey(Q),I=this.storage[p]&&this.storage[p][g]&&this.storage[p][g][v]||void 0,k=r||(I==null?void 0:I.opt);N&&this.checkOtherSelector(v,N,{isSync:f,viewId:p,scenePath:g}),this.updateValue(v,N&&{type:L.Select,toolsType:T.Selector,opt:k,selectIds:N},{isSync:f,viewId:p,scenePath:g});break}}checkOtherSelector(e,t,i){const{viewId:o,scenePath:n}=i;for(const r of Object.keys(this.storage[o][n]))if(r!==e&&this.getLocalId(r)===Q){const c=this.storage[o][n][r];if(c&&c.selectIds){const l=c.selectIds.filter(u=>!t.includes(u));l.length>0&&(c.selectIds=l),this.updateValue(r,l.length&&c||void 0,i)}}}setState(e,t){const{viewId:i,scenePath:o}=t,n=Le(e);for(let r=0;r<n.length;r++){const c=n[r],l=e[c];typeof l<"u"?(this.storage[i]||(this.storage[i]={}),this.storage[i][o]||(this.storage[i][o]={}),this.storage[i][o][c]=l):delete this.storage[i][o][c]}this.runSyncService(t)}updateValue(e,t,i){const{viewId:o,scenePath:n,storage:r}=i,c=r||this.storage;t===void 0?delete c[o][n][e]:(c[o]||(c[o]={}),c[o][n]||(c[o][n]={}),c[o][n][e]=t),this.runSyncService(i)}runSyncService(e){this.asyncClockState||(this.asyncClockState=!0,setTimeout(()=>{e.isSync?(this.asyncClockState=!1,this.syncSerivice(e)):Fe(()=>{this.asyncClockState=!1,this.syncSerivice(e)},Ie.syncInterval)},e!=null&&e.isSync?0:Ie.syncInterval))}syncSerivice(e={storage:this.storage}){const{storage:t}=e,i=t||this.storage,o=Le(this.serviceStorage),n=Le(i),r=new Map;for(const c of o){if(!n.includes(c)){r.set(c,void 0);continue}j.isEqual(this.serviceStorage[c],i[c])||this.syncViewData(i,c)}for(const c of n)o.includes(c)||r.set(c,i[c]);if(r.size>5)this.syncStorageView(i);else for(const[c,l]of r.entries())this.syncUpdataView(i,c,l)}syncViewData(e,t){const i=Le(this.serviceStorage[t]),o=Le(e[t]),n=new Map;for(const r of i){if(!o.includes(r)){n.set(r,void 0);continue}j.isEqual(this.serviceStorage[t][r],e[t][r])||this.syncScenePathData(e,t,r)}for(const r of o)i.includes(r)||n.set(r,e[t][r]);if(n.size>5)this.syncStorageScenePath(t,e[t]);else for(const[r,c]of n.entries())this.syncUpdataScenePath(e,t,r,c)}syncScenePathData(e,t,i){const o=Le(this.serviceStorage[t][i]),n=Le(e[t][i]),r=new Map;for(const c of o){if(!n.includes(c)){r.set(c,void 0);continue}j.isEqual(this.serviceStorage[t][i][c],e[t][i][c])||r.set(c,e[t][i][c])}for(const c of n)o.includes(c)||r.set(c,e[t][i][c]);if(r.size>5)this.syncStorageKey(t,i,e[t][i]);else for(const[c,l]of r.entries())this.syncUpdataKey(e,t,i,c,l)}syncUpdataView(e,t,i){var n;Object.keys(this.serviceStorage).length?(n=this.plugin)==null||n.updateAttributes([this.namespace,t],i):this.syncStorageView(e)}syncStorageView(e){var t;(t=this.plugin)==null||t.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,t,i,o){var r;Object.keys(this.serviceStorage[t]).length?(r=this.plugin)==null||r.updateAttributes([this.namespace,t,i],o):this.syncStorageScenePath(t,e[t])}syncStorageScenePath(e,t){var i;(i=this.plugin)==null||i.updateAttributes([this.namespace,e],t)}syncUpdataKey(e,t,i,o,n){var c;Object.keys(this.serviceStorage[t][i]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,t,i,o],n):this.syncStorageKey(t,i,e[t][i])}syncStorageKey(e,t,i){var o;(o=this.plugin)==null||o.updateAttributes([this.namespace,e,t],i)}keyTransformWorkId(e){const t=e.split(je);return t.length===2?t[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.removeAuthStateListener(),this.authStorage={}}dispatchPageAuth(e,t=!0){var l,u,h,d,f,g,p,m,N,v,I,k,w,S,b,x,P,E,R,O,D,A,G,ne,q,Z,H,_,ie,K,ue,ee,ce,J,$,de,ge,Re;const{operation:i,viewId:o,scenePath:n,pageId:r,pageData:c}=e;switch(i){case ze.addPage:{if(!o||!n||!r)return;const ve=[this.authSpace];Object.keys(this.authStorage).length&&ve.push("pageAuth");const we=this.authStorage.pageAuth||{};this.authStorage.pageAuth=we,Object.keys(we).length&&ve.push(o),we[o]=we[o]||{},Object.keys(we[o]).length&&ve.push(n),we[o][n]=we[o][n]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(we[o][n].pages).length&&ve.push("pages",r);const rt={};if(c!=null&&c.elementIds)for(const be of c.elementIds.keys())rt[be]=!0;we[o][n].pages[r]=rt,t&&(ve.length===1?(l=this.plugin)==null||l.updateAttributes(ve,j.cloneDeep(this.authStorage)):ve.length===2?(u=this.plugin)==null||u.updateAttributes(ve,j.cloneDeep(we)):ve.length===3?(h=this.plugin)==null||h.updateAttributes(ve,j.cloneDeep(we[o])):ve.length===4?(d=this.plugin)==null||d.updateAttributes(ve,j.cloneDeep(we[o][n])):(f=this.plugin)==null||f.updateAttributes(ve,j.cloneDeep(rt)));return}case ze.renderPage:{if(!o||!n||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[o]&&this.authStorage.pageAuth[o][n]&&c.render!==this.authStorage.pageAuth[o][n].render&&(this.authStorage.pageAuth[o][n].render=c.render,t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",o,n,"render"],c.render)));return}case ze.deletePage:{if(!o||!n||!r)return;(I=(v=(N=(m=(p=this.authStorage)==null?void 0:p.pageAuth)==null?void 0:m[o])==null?void 0:N[n])==null?void 0:v.pages)!=null&&I[r]&&(delete this.authStorage.pageAuth[o][n].pages[r],t&&((k=this.plugin)==null||k.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r],void 0)));return}case ze.clearPage:{if(!o||!n||!r)return;(P=(x=(b=(S=(w=this.authStorage)==null?void 0:w.pageAuth)==null?void 0:S[o])==null?void 0:b[n])==null?void 0:x.pages)!=null&&P[r]&&(delete this.authStorage.pageAuth[o][n].pages[r],t&&((E=this.plugin)==null||E.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r],{})));return}case ze.addElement:{if(!o||!n||!r||!(c!=null&&c.elementId))return;(G=(A=(D=(O=(R=this.authStorage)==null?void 0:R.pageAuth)==null?void 0:O[o])==null?void 0:D[n])==null?void 0:A.pages)!=null&&G[r]&&(this.authStorage.pageAuth[o][n].pages[r][c.elementId]=!0,t&&((ne=this.plugin)==null||ne.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r,c.elementId],!0)));return}case ze.deleteElement:{if(!o||!n||!r||!(c!=null&&c.elementId))return;(K=(ie=(_=(H=(Z=(q=this.authStorage)==null?void 0:q.pageAuth)==null?void 0:Z[o])==null?void 0:H[n])==null?void 0:_.pages)==null?void 0:ie[r])!=null&&K[c.elementId]&&(delete this.authStorage.pageAuth[o][n].pages[r][c.elementId],t&&((ue=this.plugin)==null||ue.updateAttributes([this.authSpace,"pageAuth",o,n,"pages",r,c.elementId],void 0)));return}case ze.clearViewScenePath:{if(!o||!n)return;(J=(ce=(ee=this.authStorage)==null?void 0:ee.pageAuth)==null?void 0:ce[o])!=null&&J[n]&&(delete this.authStorage.pageAuth[o][n],t&&(($=this.plugin)==null||$.updateAttributes([this.authSpace,"pageAuth",o,n],void 0)));return}case ze.clearView:{if(!o)return;(ge=(de=this.authStorage)==null?void 0:de.pageAuth)!=null&&ge[o]&&(delete this.authStorage.pageAuth[o],t&&((Re=this.plugin)==null||Re.updateAttributes([this.authSpace,"pageAuth",o],void 0)));return}}}dispatchRenderAuth(e,t=!0){var l,u,h,d,f,g,p,m,N,v,I,k,w,S,b,x,P,E,R,O;const{operation:i,viewId:o,uid:n,renderData:r,isClear:c}=e;if(o)switch(i){case Ge.setAuth:{if(!r||r.render===void 0&&r.hide===void 0&&r.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[o]&&(delete this.authStorage.renderAuth[o],t&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",o],void 0)));return}const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]={},this.authStorage.renderAuth=A;const{render:G,hide:ne,clear:q}=r;if(G===!0)A[o].render=!0;else if(j.isSet(G)){A[o].render={};for(const Z of G.keys())A[o].render[Z]=!0}if(ne===!0)A[o].hide=!0;else if(j.isSet(ne)){A[o].hide={};for(const Z of ne.keys())A[o].hide[Z]=!0}if(q===!0)A[o].clear=!0;else if(j.isSet(q)){A[o].clear={};for(const Z of q.keys())A[o].clear[Z]=!0}t&&(D.length===1?(u=this.plugin)==null||u.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(h=this.plugin)==null||h.updateAttributes(D,j.cloneDeep(A)):(d=this.plugin)==null||d.updateAttributes(D,j.cloneDeep(A[o])));return}case Ge.setShow:{if(!n)return;const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]=A[o]||{},this.authStorage.renderAuth=A,Object.keys(A[o]).length&&D.push("render"),A[o].render=A[o].render||{},A[o].render!==!0&&(Object.keys(A[o].render).length&&D.push(n),A[o].render[n]=!0),A[o].hide!==!0&&((f=A[o].hide)!=null&&f[n])&&(delete A[o].hide[n],t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",o,"hide",n],void 0))),t&&(D.length===1?(p=this.plugin)==null||p.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(m=this.plugin)==null||m.updateAttributes(D,j.cloneDeep(A)):D.length===3?(N=this.plugin)==null||N.updateAttributes(D,j.cloneDeep(A[o])):(v=this.plugin)==null||v.updateAttributes(D,!0));return}case Ge.setHide:{if(!n)return;const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]=A[o]||{},this.authStorage.renderAuth=A,Object.keys(A[o]).length&&D.push("hide"),A[o].hide=A[o].hide||{},A[o].hide!==!0&&(Object.keys(A[o].hide).length&&D.push(n),A[o].hide[n]=!0),A[o].render!==!0&&((I=A[o].render)!=null&&I[n])&&(delete A[o].render[n],t&&((k=this.plugin)==null||k.updateAttributes([this.authSpace,"renderAuth",o,"render",n],void 0))),t&&(D.length===1?(w=this.plugin)==null||w.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(S=this.plugin)==null||S.updateAttributes(D,j.cloneDeep(A)):D.length===3?(b=this.plugin)==null||b.updateAttributes(D,j.cloneDeep(A[o])):(x=this.plugin)==null||x.updateAttributes(D,!0));return}case Ge.setClear:{if(!n)return;const D=[this.authSpace];Object.keys(this.authStorage).length&&D.push("renderAuth");const A=this.authStorage.renderAuth||{};Object.keys(A).length&&D.push(o),A[o]=A[o]||{},this.authStorage.renderAuth=A,Object.keys(A[o]).length&&D.push("clear"),A[o].clear=A[o].clear||{},A[o].clear!==!0&&(Object.keys(A[o].clear).length&&D.push(n),c?A[o].clear[n]=!0:delete A[o].clear[n]),t&&(D.length===1?(P=this.plugin)==null||P.updateAttributes(D,j.cloneDeep(this.authStorage)):D.length===2?(E=this.plugin)==null||E.updateAttributes(D,j.cloneDeep(A)):D.length===3?(R=this.plugin)==null||R.updateAttributes(D,j.cloneDeep(A[o])):(O=this.plugin)==null||O.updateAttributes(D,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=X.autorun(async()=>{const t=this.getAuthSpaceData(),{renderAuth:i,pageAuth:o}=t;let n,r;j.isEqual(i,this.authStorage.renderAuth)||(n=this.diffAuthFun(this.authStorage.renderAuth||{},i||{}),this.authStorage.renderAuth=i),j.isEqual(o,this.authStorage.pageAuth)||(r=this.diffAuthPageFun(this.authStorage.pageAuth||{},o||{}),this.authStorage.pageAuth=o),(n||r)&&e(n,r)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,t){const i=Le(e),o=Le(t),n={};for(const r of o)if(!i.includes(r)||e[r]===void 0){n[r]={newValue:t[r],oldValue:void 0};continue}for(const r of i)if(!j.isEqual(e[r],t[r])){if(!o.includes(r)||t[r]===void 0){n[r]={newValue:void 0,oldValue:e[r]};continue}n[r]={newValue:t[r],oldValue:e[r]}}return n}diffAuthPageFun(e,t){const i=Le(e),o=Le(t),n={};for(const r of o)if(!i.includes(r)||e[r]===void 0){n[r]={newValue:t[r],oldValue:void 0};continue}for(const r of i)if(!j.isEqual(e[r],t[r])){if(!o.includes(r)||t[r]===void 0){n[r]={newValue:void 0,oldValue:e[r]};continue}n[r]={newValue:t[r],oldValue:e[r]}}return n}};y(Ie,"namespace","PluginState"),y(Ie,"authSpace","PluginAuth"),y(Ie,"syncInterval",500),y(Ie,"componentsLimits",[500,1e3]);let Es=Ie;class bM{constructor(){y(this,"roomMembers",[]);y(this,"onChangeHooks",new Set)}setRoomMembers(s){this.executChangeUidHook(this.roomMembers,s),this.roomMembers=s}executChangeUidHook(s,e){const t={online:e.map(i=>{var o;return((o=i.payload)==null?void 0:o.uid)||i.session}),offline:s.map(i=>{var o;return((o=i.payload)==null?void 0:o.uid)||i.session})};this.onChangeHooks.forEach(i=>i(t))}getAllRoomMembers(){return this.roomMembers}getRoomMember(s){return this.roomMembers.find(e=>{var t;return((t=e.payload)==null?void 0:t.uid)===s})}isOnLine(s){return!!this.getRoomMember(s)}onUidChangeHook(s){this.onChangeHooks.add(s)}destroy(){this.onChangeHooks.clear()}}var Xe=(a=>(a[a.Text=1]="Text",a[a.Shape=2]="Shape",a))(Xe||{});const Ae=class Ae{createProxy(s){const e=new Proxy(s,{get(t,i,o){const n=Ae.interceptors.hasOwnProperty(i)?Ae.interceptors:t;return Reflect.get(n,i,o)}});return Ae.proxyToRaw.set(e,s),e}};y(Ae,"proxyToRaw",new WeakMap),y(Ae,"interceptors",{entries(...s){return Ae.proxyToRaw.get(this).entries(...s)},forEach(...s){return Ae.proxyToRaw.get(this).forEach(...s)},size(){return Ae.proxyToRaw.get(this).size},get(s){return Ae.proxyToRaw.get(this).get(s)},set(s,e){return Ae.proxyToRaw.get(this).set(s,e)},delete(s,e){return Ae.proxyToRaw.get(this).delete(s)},clear(){return Ae.proxyToRaw.get(this).clear()}});let ct=Ae;class xM{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"editors");y(this,"activeId");y(this,"proxyMap");y(this,"taskqueue",new Map);const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t;const i=new Map;this.proxyMap=new ct;const o=this,n=ct.interceptors.set;ct.interceptors.set=function(c,l){return o.interceptors.set(c,l),n.call(this,c,l)};const r=ct.interceptors.delete;ct.interceptors.delete=function(c,l){return o.interceptors.delete(c,l),r.call(this,c)},this.editors=this.proxyMap.createProxy(i)}get collector(){return this.control.collector}filterEditor(s){const e=new Map;return this.editors.forEach((t,i)=>{t.viewId===s&&e.set(i,t)}),e}get interceptors(){return{set:(s,e)=>{var f,g,p,m,N,v,I,k;if(!this.collector)return!0;const{viewId:t,scenePath:i,canSync:o,canWorker:n,type:r,opt:c,dataType:l}=e;if(!n&&!o)return!0;const h=((f=this.collector)==null?void 0:f.isLocalId(s))?(g=this.collector)==null?void 0:g.transformKey(s):s,d=((p=this.collector)==null?void 0:p.storage[t])&&this.collector.storage[t][i]&&this.collector.storage[t][i][h]||void 0;d?d.toolsType===T.Text&&(n&&(this.control.worker.queryTaskBatchData({workId:s,msgType:L.UpdateNode}).forEach(w=>{var S;(S=this.control.worker)==null||S.taskBatchData.delete(w)}),(I=this.control.worker)==null||I.taskBatchData.add({workId:s,msgType:L.UpdateNode,dataType:l||B.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:i,willRefresh:!0}),(k=this.control.worker)==null||k.runAnimation()),o&&Fe(()=>{var w;(w=this.collector)==null||w.dispatch({type:L.UpdateNode,workId:s,toolsType:T.Text,opt:c,viewId:t,scenePath:i})},this.control.worker.maxLastSyncTime)):r===Xe.Text&&(o&&((m=this.collector)==null||m.dispatch({type:c.text&&L.FullWork||L.CreateWork,workId:s,toolsType:T.Text,opt:c,isSync:!0,viewId:t,scenePath:i})),n&&((N=this.control.worker)==null||N.taskBatchData.add({workId:s,msgType:c.text&&L.FullWork||L.CreateWork,dataType:l||B.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:i,willRefresh:!0}),(v=this.control.worker)==null||v.runAnimation()))},delete:s=>{var r,c;if(!this.collector)return!0;const e=this.editors.get(s);if(!e)return!0;const{viewId:t,scenePath:i,canSync:o,canWorker:n}=e;if(!n&&!o)return!0;n&&((r=this.control.worker)==null||r.taskBatchData.add({workId:s,toolsType:T.Text,msgType:L.RemoveNode,dataType:B.Local,viewId:t,scenePath:i,willRefresh:!0}),(c=this.control.worker)==null||c.runAnimation()),o&&Fe(()=>{var l;(l=this.collector)==null||l.dispatch({type:L.RemoveNode,removeIds:[s],toolsType:T.Text,viewId:t,scenePath:i})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(s,e){var o,n,r,c;const t=(o=this.control.viewContainerManager)==null?void 0:o.transformToScenePoint(s,e),i=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);e&&i&&((r=this.control.worker)==null||r.taskBatchData.add({msgType:L.GetTextActive,dataType:B.Local,op:t,viewId:e,scenePath:i}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let s=this.activeId;for(const[t,i]of this.editors.entries())if(i.opt.uid&&i.opt.uid===((e=this.collector)==null?void 0:e.uid)){s=t;break}if(s){const t=this.editors.get(s);(t==null?void 0:t.opt.text)&&(t==null?void 0:t.opt.text.replace(/\s*,/g,""))?this.unActive(s):this.delete(s,!0,!0)}}onCameraChange(s,e){var t,i;for(const[o,n]of this.editors.entries())if(n.viewId===e){const{boxPoint:r,boxSize:c}=n.opt,l=r&&((t=this.control.viewContainerManager)==null?void 0:t.transformToOriginPoint(r,n.viewId)),u=(i=this.control.viewContainerManager)==null?void 0:i.getCurScenePath(e);if(u&&e){const h={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:n.opt,scale:s.scale,type:Xe.Text,viewId:e,scenePath:u,canWorker:!1,canSync:!1};this.editors.set(o,h),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(s){var g,p;const{workId:e,opt:t,msgType:i,viewId:o,scenePath:n,dataType:r}=s;if(!e||!o||!n)return;const c=e.toString();if(i===L.RemoveNode){this.delete(c,!0,!0);return}const{boxPoint:l,boxSize:u}=t,h=l&&((g=this.control.viewContainerManager)==null?void 0:g.transformToOriginPoint(l,o)),d=this.control.viewContainerManager.getView(o),f={x:h&&h[0]||0,y:h&&h[1]||0,w:u&&u[0]||0,h:u&&u[1]||0,opt:t,type:Xe.Text,canWorker:!0,canSync:!1,dataType:r,scale:((p=d==null?void 0:d.cameraOpt)==null?void 0:p.scale)||1,viewId:o,scenePath:n};this.editors.set(c,f),r===B.Service&&t.workState===z.Done&&this.activeId===c&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(o,this.activeId)}updateForViewEdited(s,e){var i;this.editors.set(s,e);const t=(i=this.taskqueue.get(s))==null?void 0:i.resolve;t&&t(e)}active(s){var t;const e=this.editors.get(s);e&&e.viewId&&(e.opt.workState=z.Start,e.opt.uid=(t=this.collector)==null?void 0:t.uid,this.activeId=s,e.canWorker=!0,e.canSync=!0,this.editors.set(s,e),this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}unActive(s){const e=this.editors.get(s);e&&e.viewId&&(e.opt.workState=z.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(s,e),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}createTextForMasterController(s,e){var n;const{workId:t,isActive:i,...o}=s;e&&this.internalMsgEmitter.emit("addUndoTicker",e,o.viewId),o.opt.uid=(n=this.collector)==null?void 0:n.uid,i&&(this.activeId=t),o.dataType=B.Local,o.canWorker=!0,o.canSync=!0,this.editors.set(t,o),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId)}updateTextForMasterController(s,e){var n;const{workId:t,...i}=s;e&&this.internalMsgEmitter.emit("addUndoTicker",e,i.viewId);const o=this.editors.get(t)||{};i.opt&&(i.opt.uid=(n=this.collector)==null?void 0:n.uid),i.dataType=B.Local,this.editors.set(t,{...o,...i}),this.control.viewContainerManager.setActiveTextEditor(i.viewId,this.activeId)}async updateTextControllerWithEffectAsync(s,e){var u;const{workId:t,...i}=s;e&&this.internalMsgEmitter.emit("addUndoTicker",e,i.viewId);const o=this.editors.get(t)||{};i.opt&&(i.opt.uid=(u=this.collector)==null?void 0:u.uid),i.dataType=B.Local;const n={...o,...i};if(this.editors.set(t,n),this.control.viewContainerManager.setActiveTextEditor(i.viewId,this.activeId),this.taskqueue.has(t)){const h=this.taskqueue.get(t);return h&&(h.clocker&&clearTimeout(h.clocker),this.taskqueue.delete(t)),await this.updateTextControllerWithEffectAsync(s)}const r=setTimeout(()=>{var d;const h=(d=this.taskqueue.get(t))==null?void 0:d.resolve;h&&h(n)},50),c=await new Promise(h=>{this.taskqueue.set(t,{resolve:h,clocker:r})}),l=this.taskqueue.get(t);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(t)),c}updateTextForWorker(s,e){const{workId:t,isActive:i,...o}=s,r={...this.editors.get(t)||{},...o};if(i){r.canWorker=!1,r.canSync=!1,this.editors.set(t,r),this.active(t);return}this.editors.set(t,r),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId),e&&this.internalMsgEmitter.emit("addUndoTicker",e,o.viewId)}get(s){return this.editors.get(s)}delete(s,e,t){const i=this.editors.get(s);if(i){const o=i.viewId;i.canSync=e,i.canWorker=t,this.editors.delete(s),this.activeId===s&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(o,this.activeId)}}deleteBatch(s,e,t){const i=new Set;for(const o of s){const n=this.editors.get(o);if(n){const r=n.viewId;n.canSync=e,n.canWorker=t,this.editors.delete(o),this.activeId===o&&(this.activeId=void 0),i.add(r)}}for(const o of i)this.control.viewContainerManager.setActiveTextEditor(o,this.activeId)}clear(s,e){this.editors.forEach((t,i)=>{t.viewId===s&&(e&&(t.canSync=!1),t.canWorker=!1,this.editors.delete(i))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(s,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}}class LM{constructor(s){y(this,"expirationTime",Se.cursor.expirationTime);y(this,"internalMsgEmitter");y(this,"control");y(this,"eventName","applianc-cursor");y(this,"displayer");y(this,"roomMember");y(this,"animationId");y(this,"maxLastSyncTime",Se.syncOpt.interval);y(this,"willSendEventWorkers",[]);y(this,"willConsumeEventWorkers",new Map);y(this,"sendEventTimerId");y(this,"animationDrawWorkers",new Map);y(this,"animationEventWorkers",new Map);y(this,"cursorInfoMap",new Map);y(this,"doneRenderCursorInfoMap",new Map);y(this,"eventCollector");var i,o;const{control:e,internalMsgEmitter:t}=s;this.internalMsgEmitter=t,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=((o=(i=this.control.pluginOptions)==null?void 0:i.syncOpt)==null?void 0:o.interval)||this.maxLastSyncTime}activeCollector(){this.control.plugin&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(s){var r;const{event:e,payload:t}=s;if(e!==this.eventName)return;const{uid:i,op:o,type:n}=t;if(((r=this.control.collector)==null?void 0:r.uid)!==i&&n===Ot.Cursor&&(o!=null&&o.length)){const c=this.willConsumeEventWorkers.get(i)||[];for(const l of o){const{viewId:u}=l;j.isNumber(l.consumPoint[0])&&j.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,u)),this.control.renderControl.isFilterCursor(u)&&c.unshift({...l,timestamp:Date.now()})}this.willConsumeEventWorkers.set(i,c),this.runAnimation()}}onFocusViewChange(){this.checkDrawWorks(),this.runAnimation()}updateRoomMembers(s){const{offline:e}=s;for(const t of this.cursorInfoMap.keys())t&&e.includes(t)&&this.cursorInfoMap.delete(t)}getKey(s,e){return`${s}${je}${e}`}getUidAndviewId(s){const[e,t]=s.split(je);return{uid:e,viewId:t}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const s=this.control.viewContainerManager.focuedViewId;for(const[t,i]of this.animationDrawWorkers.entries()){const{viewId:o,uid:n}=this.getUidAndviewId(t);n!==((e=this.control.collector)==null?void 0:e.uid)&&o!==s&&i.workState===z.Done&&(i.consumPoint=[void 0,void 0])}}animationCursor(){this.animationId=void 0;const s=Date.now();for(const[t,i]of this.animationDrawWorkers.entries()){const{uid:o,viewId:n}=this.getUidAndviewId(t),r=this.roomMember.getRoomMember(o);if(!r){this.animationDrawWorkers.delete(t);continue}const{consumPoint:c,timestamp:l,workState:u}=i,h=this.cursorInfoMap.get(n)||new Map;c&&j.isNumber(c[0])&&j.isNumber(c[1])&&l+this.expirationTime>s?h.set(r.memberId,{x:c[0],y:c[1],roomMember:r,timestamp:l,type:1,workState:u}):h.delete(r.memberId),h.size?this.cursorInfoMap.set(n,h):this.cursorInfoMap.delete(n),this.animationDrawWorkers.delete(t)}const e=new Set;for(const[t,i]of this.cursorInfoMap.entries())if(i)for(const[o,n]of i.entries())n.type===1&&n.workState!==z.Done&&e.add(o);else this.cursorInfoMap.delete(t);for(const[t,i]of this.willConsumeEventWorkers.entries()){const o=this.roomMember.getRoomMember(t);if(j.isNumber(o==null?void 0:o.memberId)&&!e.has(o.memberId)){const n=i.pop();n?this.animationEventWorkers.set(t,n):this.willConsumeEventWorkers.delete(t)}}for(const[t,i]of this.animationEventWorkers.entries()){const o=this.roomMember.getRoomMember(t);if(!o){this.animationEventWorkers.delete(t);continue}const{viewId:n,consumPoint:r,timestamp:c}=i,l=this.cursorInfoMap.get(n)||new Map;r&&j.isNumber(r[0])&&j.isNumber(r[1])&&c+this.expirationTime>s?l.set(o.memberId,{x:r[0],y:r[1],roomMember:o,timestamp:c,type:0}):l.delete(o.memberId),l.size?this.cursorInfoMap.set(n,l):this.cursorInfoMap.delete(n),this.animationEventWorkers.delete(t)}for(const t of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(t)||(this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([se.Cursor,t],[]));for(const[t,i]of this.cursorInfoMap.entries())if(i!=null&&i.size){const o=[];for(const[r,c]of i.entries()){const{timestamp:l,...u}=c;l+this.expirationTime>s?o.push(u):(i.delete(r),i.size===0&&(this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([se.Cursor,t],[])))}const n=this.doneRenderCursorInfoMap.get(t);j.isEqual(n,o)||(this.doneRenderCursorInfoMap.set(t,o),this.internalMsgEmitter.emit([se.Cursor,t],o))}else this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([se.Cursor,t],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(s,e){if(this.displayer&&X.isRoom(this.displayer)){const t=j.isNumber(s[0])&&j.isNumber(s[1])&&this.control.viewContainerManager.transformToScenePoint(s,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:t,viewId:e}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var s;this.displayer.dispatchMagixEvent(this.eventName,{type:Ot.Cursor,op:j.cloneDeep(this.willSendEventWorkers),uid:(s=this.control.collector)==null?void 0:s.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(s){var n;const{op:e,uid:t,workState:i,viewId:o}=s;if(t&&e&&i&&o){const r=this.roomMember.getRoomMember(t);if(!r||t===((n=this.control.collector)==null?void 0:n.uid))return;const c=this.getKey(t,o);let l=[void 0,void 0];if(j.isNumber(e[0])&&j.isNumber(e[1])){const[h,d]=this.control.viewContainerManager.transformToOriginPoint(e,o);l=[h,d]}if(i===z.Start){for(const h of this.cursorInfoMap.values())if(h!=null&&h.size)for(const d of h.keys())d===r.memberId&&h.delete(d)}const u={consumPoint:l,workState:i,viewId:o,timestamp:Date.now()};if(i===z.Start||i===z.Done){const h=this.willConsumeEventWorkers.get(t);i===z.Start&&h&&this.willConsumeEventWorkers.delete(t),h&&i===z.Done&&(u.timestamp=u.timestamp-this.expirationTime)}this.animationDrawWorkers.set(c,u),this.runAnimation()}}unabled(){var s;this.displayer&&X.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:Ot.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(s=this.control.collector)==null?void 0:s.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0))}clearViewCursor(s){var e,t,i;for(const[o]of this.animationDrawWorkers.entries()){const{uid:n}=this.getUidAndviewId(o);n===((e=this.control.collector)==null?void 0:e.uid)&&s===s&&this.animationDrawWorkers.delete(o)}for(const[o]of this.willConsumeEventWorkers.entries())o===((t=this.control.collector)==null?void 0:t.uid)&&this.willConsumeEventWorkers.delete(o);for(const[o]of this.animationEventWorkers.entries())o===((i=this.control.collector)==null?void 0:i.uid)&&this.animationEventWorkers.delete(o);for(const[o]of this.cursorInfoMap.entries())o===o&&(this.cursorInfoMap.delete(o),this.doneRenderCursorInfoMap.delete(o),this.internalMsgEmitter.emit([se.Cursor,o],[]))}stopAnimation(){this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.cursorInfoMap.clear()}destroy(){var s;(s=this.displayer)==null||s.removeMagixEventListener(this.eventName),this.stopAnimation()}}class Ve{constructor(){y(this,"useEmtMsg");y(this,"emtType");y(this,"control");y(this,"mainEngine")}static dispatch(s,e,t){var i;(i=Te.InternalMsgEmitter)==null||i.emit([s,e],t)}get serviceColloctor(){return this.control.collector}registerForMainEngine(s,e){return this.emtType=s,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collect.bind(this)),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collect.bind(this))}collectForLocalWorker(s,e){var t,i,o;for(const[n,r]of s)(t=this.mainEngine)==null||t.queryTaskBatchData(r).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(i=this.mainEngine)==null||i.taskBatchData.add(n);if(e){this.mainEngine.consume();return}(o=this.mainEngine)==null||o.runAnimation()}collectForServiceWorker(s){Fe(()=>{s.forEach(e=>{var t;(t=this.serviceColloctor)==null||t.dispatch(e)})},this.mainEngine.maxLastSyncTime)}pause(){var s;if(this.lastEmtData){this.useEmtMsg=!0;const e={...this.lastEmtData,workState:z.Done};this.collect(e,!0),(s=Te.InternalMsgEmitter)==null||s.emit(F.ActiveMethod,!1)}}recover(){var s;this.useEmtMsg&&Te.InternalMsgEmitter.hasListeners(F.ActiveMethod)&&((s=Te.InternalMsgEmitter)==null||s.emit(F.ActiveMethod,!0))}}class PM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.CopyNode)}collect(e){var c;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:i}=e,o=this.control.viewContainerManager.getView(i);if(!(o!=null&&o.displayer))return;const n=o.focusScenePath,r=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",r,i);for(const l of t){const u=l.toString(),d=this.serviceColloctor.isLocalId(u)?this.serviceColloctor.transformKey(l):u,f=(c=this.serviceColloctor.getStorageData(i,n))==null?void 0:c[d];if(f){if(l===Q){const g=f&&this.copySelector({viewId:i,store:f});g&&this.pasteSelector({...g,viewId:i,scenePath:n,undoTickerId:r});break}if(f.toolsType===T.Text&&f.opt&&f.opt.workState&&f.opt.workState!==z.Done){const g=f&&this.copyText({viewId:i,store:f});g&&this.pasteText({...g,viewId:i,scenePath:n,key:d,store:f,undoTickerId:r});break}}}}copyText(e){const{viewId:t,store:i}=e,o=this.control.viewContainerManager.getView(t);if(!this.serviceColloctor||!o)return;const n=o==null?void 0:o.cameraOpt,r=n&&[n.centerX,n.centerY],c=i.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:r,textCenter:l}}pasteText(e){var m,N;const{bgCenter:t,textCenter:i,store:o,key:n,viewId:r,scenePath:c,undoTickerId:l}=e,u=this.control.viewContainerManager.getView(r);if(!this.serviceColloctor||!u)return;const h=Math.floor(Math.random()*30+1),d=((m=u.cameraOpt)==null?void 0:m.scale)||1,f=t&&i&&[t[0]-i[0]+h,t[1]-i[1]+h]||[h/d,h/d],p=(this.serviceColloctor.isLocalId(n)?n:this.serviceColloctor.getLocalId(n.toString()))+"-"+l;if(o.toolsType===T.Text&&o.opt){const v=o.opt;if(v&&v.boxPoint&&v.text){v.workState=z.Done;const I=v.boxPoint;v.boxPoint=[I[0]+f[0],I[1]+f[1]],v.workState=z.Done;const k=this.control.viewContainerManager.transformToOriginPoint(v.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:p,x:k[0],y:k[1],opt:v,scale:((N=u.cameraOpt)==null?void 0:N.scale)||1,type:Xe.Text,isActive:!1,viewId:r,scenePath:c}),this.collectForServiceWorker([{...o,opt:v,type:L.FullWork,workId:p,viewId:r,scenePath:c}])}}}copySelector(e){var p,m,N,v,I,k,w,S,b;const{viewId:t,store:i}=e,o=this.control.viewContainerManager.getView(t),n=i.selectIds;if(!this.serviceColloctor||!(n!=null&&n.length)||!o)return;const r=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((p=o.cameraOpt)==null?void 0:p.centerX)||0,centerY:((m=o.cameraOpt)==null?void 0:m.centerY)||0,scale:((N=o.cameraOpt)==null?void 0:N.scale)||1}},l=this.control.hasOffscreenCanvas()&&((v=o.displayer.canvasBgRef.current)==null?void 0:v.getBoundingClientRect())||((I=o.displayer.canvasContainerRef.current)==null?void 0:I.getBoundingClientRect()),u=(w=(k=o.displayer)==null?void 0:k.floatBarRef.current)==null?void 0:w.getBoundingClientRect(),h=l&&[l.x+l.width/2,l.y+l.height/2],d=u&&[u.x+u.width/2,u.y+u.height/2],f=h&&o.viewData&&o.viewData.convertToPointInWorld({x:h[0],y:h[1]}),g=d&&o.viewData&&o.viewData.convertToPointInWorld({x:d[0],y:d[1]});f&&g&&(c.offset={x:f.x-g.x,y:f.y-g.y});for(const x of n){const P=(b=(S=this.serviceColloctor)==null?void 0:S.getStorageData(o.id,o.focusScenePath))==null?void 0:b[x];P&&r.set(x,P)}return{copyStores:r,copyCoordInfo:c}}pasteSelector(e){var m,N;const{copyStores:t,copyCoordInfo:i,viewId:o,scenePath:n,undoTickerId:r}=e,c=this.control.viewContainerManager.getView(o);if(!t.size||!this.serviceColloctor||!c)return;const{offset:l,cameraOpt:u}=i,{scale:h}=u,d=Math.floor(Math.random()*30+1),f=l&&[l.x+d,l.y+d]||[d/h,d/h],g=[],p=[];for(const[v,I]of t.entries()){const w=(this.serviceColloctor.isLocalId(v)?v:this.serviceColloctor.getLocalId(v.toString()))+"-"+r,S={useAnimation:!1};if(I.toolsType===T.Text&&I.opt){const x=I.opt;if(x&&x.boxPoint&&x.text){x.workState=z.Done;const P=x.boxPoint;x.boxPoint=[P[0]+f[0],P[1]+f[1]],x.workState=z.Done;const E=this.control.viewContainerManager.transformToOriginPoint(x.boxPoint,o);this.control.textEditorManager.createTextForMasterController({workId:w,x:E[0],y:E[1],opt:x,scale:((m=c.cameraOpt)==null?void 0:m.scale)||1,type:Xe.Text,isActive:!1,viewId:o,scenePath:n})}p.push({...I,opt:x,type:L.FullWork,workId:w,viewId:o,scenePath:n});continue}if(I.toolsType===T.Image&&(I.opt.uuid=w,I.opt.centerX=I.opt.centerX+f[0],I.opt.centerY=I.opt.centerY+f[1]),I.ops){const x=nt(I.ops).map((E,R)=>{const O=R%3;return O===0?E+f[0]:O===1?E+f[1]:E}),P=Ye(x);I.ops=P}const b=((N=I==null?void 0:I.opt)==null?void 0:N.eraserlines)??[];if(b.length)for(const x of Object.values(b)){const{op:P}=x;for(let E=0;E<P.length;E++){const R=P[E].map((O,D)=>D%2?O+f[1]:O+f[0]);x.op[E]=R}}p.push({...I,updateNodeOpt:S,type:L.FullWork,workId:w,viewId:o,scenePath:n}),g.push([{...I,updateNodeOpt:S,workId:w,msgType:L.FullWork,dataType:B.Local,emitEventType:F.CopyNode,willSyncService:!1,willRefresh:!0,viewId:o},{workId:w,msgType:L.FullWork,emitEventType:F.CopyNode}])}g.length&&this.collectForLocalWorker(g),p.length&&this.collectForServiceWorker(p)}}function Ft(a,s,e){return"#"+((a<<16)+(s<<8)+e).toString(16).padStart(6,"0")}function Ce(a,s=1){return"rgba("+parseInt("0x"+a.slice(1,3))+","+parseInt("0x"+a.slice(3,5))+","+parseInt("0x"+a.slice(5,7))+","+s+")"}function jt(a,s,e,t=1){return`rgba(${a},${s},${e},${t})`}function ms(a){const s=a.split(","),e=parseInt(s[0].split("(")[1]),t=parseInt(s[1]),i=parseInt(s[2]),o=Number(s[3].split(")")[0]);return[Ft(e,t,i),o]}function Ht(a){const s=a.split(","),e=parseInt(s[0].split("(")[1]),t=parseInt(s[1]),i=parseInt(s[2]),o=Number(s[3].split(")")[0]);return[e,t,i,o]}function Qt(a){return a==="transparent"}class zM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetColorNode);y(this,"undoTickerId")}setTextColor(e,t,i,o){const{fontColor:n,fontBgColor:r}=i;t.opt&&(n&&(t.opt.fontColor=n),r&&(t.opt.fontBgColor=r),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:t.opt,viewId:o,canSync:!0,canWorker:!0}))}collect(e){var v,I;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,strokeColor:i,fillColor:o,fontColor:n,fontBgColor:r,viewId:c,workState:l,thickness:u,strokeType:h}=e,d=this.control.viewContainerManager.getView(c);if(!(d!=null&&d.displayer))return;const f=d.focusScenePath,g=[...t],p=this.serviceColloctor.storage,m=[],N={};for((l===z.Start||!this.undoTickerId&&l===z.Done)&&(this.undoTickerId=Date.now(),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,c));g.length;){const k=g.pop();if(!k)continue;const w=k.toString(),S=this.serviceColloctor.isLocalId(w),b=S?this.serviceColloctor.transformKey(k):w;let x=w;!S&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const P=(I=(v=p==null?void 0:p[c])==null?void 0:v[f])==null?void 0:I[b];if(P){const E=P.updateNodeOpt||{};if(n||r){if(n){E.fontColor=n;const[O,D,A,G]=Ht(n);N.textColor=[O,D,A],N.textOpacity=G}if(r)if(E.fontBgColor=Qt(r)?"transparent":r,Qt(r))N.textBgColor=void 0,N.textBgOpacity=void 0;else{const[O,D,A,G]=Ht(r);N.textBgColor=[O,D,A],N.textBgOpacity=G}if(P.toolsType===T.Text&&P.opt&&l!==z.Start){this.setTextColor(x,ke(P),E,c),l===z.Done&&(this.undoTickerId=void 0);continue}}if(i){E.strokeColor=i;const[O,D,A,G]=Ht(i);N.strokeColor=[O,D,A],N.strokeOpacity=G}if(o)if(E.fillColor=Qt(o)?"transparent":o,Qt(o))N.fillColor=void 0,N.fillOpacity=void 0;else{const[O,D,A,G]=Ht(o);N.fillColor=[O,D,A],N.fillOpacity=G}u&&(E.thickness=u,N.strokeWidth=u),h&&(E.strokeType=h,N.strokeType=h);const R={workId:x,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:E,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c};m.push([R,{workId:x,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}m.length&&(l===z.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(m)),Object.keys(N).length&&setTimeout(()=>{var k;(k=this.control.room)==null||k.setMemberState(N)},0)}}class DM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.ZIndexNode);y(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.min)||0}getMaxZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.max)||0}setMaxZIndex(e,t){const i=this.getMinZIndex(t);this.zIndexMap.set(t,{min:i,max:e})}setMinZIndex(e,t){const i=this.getMaxZIndex(t);this.zIndexMap.set(t,{min:e,max:i})}addMaxLayer(e){const t=this.getMaxZIndex(e)+1;this.setMaxZIndex(t,e)}addMinLayer(e){const t=this.getMinZIndex(e)-1;this.setMinZIndex(t,e)}correct(e){const t=e.sort((i,o)=>i[1]-o[1]);for(let i=1;i<t.length;i++){const o=t[i][1],n=t[i-1][1];o<=n&&(t[i][1]=n+1)}return t}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,layer:i,viewId:o}=e,n=this.control.viewContainerManager.getView(o);if(!(n!=null&&n.displayer))return;const r=n.focusScenePath,c=[...t],l=this.serviceColloctor.storage,u=[],h=[];for(;c.length;){const f=c.pop();if(!f)continue;const g=f.toString(),p=this.serviceColloctor.isLocalId(g),m=p?this.serviceColloctor.transformKey(f):g;let N=g;!p&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N));const v=ke(l[o][r][m]);let I;if(v&&N===Q){if(v.selectIds){h.push(...v.selectIds),h.sort((b,x)=>{var R,O,D,A;const P=((O=(R=l[d(b,this.serviceColloctor)])==null?void 0:R.opt)==null?void 0:O.zIndex)||0,E=((A=(D=l[d(b,this.serviceColloctor)])==null?void 0:D.opt)==null?void 0:A.zIndex)||0;return P>E?1:b<x?-1:0});const k=v.updateNodeOpt||{};k.zIndexLayer=i;const w={workId:f,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:o},S=new Map;i===Rt.Top?(this.addMaxLayer(o),I=this.getMaxZIndex(o)):(this.addMinLayer(o),I=this.getMinZIndex(o)),h.forEach(b=>{var R,O,D,A,G;const x=(R=this.serviceColloctor)==null?void 0:R.isLocalId(b);let P=x&&((O=this.serviceColloctor)==null?void 0:O.transformKey(b))||b;const E=(A=(D=l==null?void 0:l[o])==null?void 0:D[r])==null?void 0:A[P];E&&(!x&&((G=this.serviceColloctor)!=null&&G.isOwn(P))&&(P=this.serviceColloctor.getLocalId(P)),k.zIndex=I,E!=null&&E.opt&&(E.opt.zIndex=I),E!=null&&E.opt&&S.set(P,{updateNodeOpt:E.updateNodeOpt,opt:E.opt}))}),w.selectStore=S,w.willSerializeData=!0,u.push([w,{workId:f,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}continue}}u.length&&this.collectForLocalWorker(u);function d(f,g){return g.isLocalId(f)&&g.transformKey(f)||f}}}class AM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.TranslateNode);y(this,"cachePosition")}collect(e,t){var g,p,m;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,position:o,workState:n,viewId:r}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(r);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,u=[...i],h=(g=this.serviceColloctor)==null?void 0:g.storage,d=[],f=n===z.Start&&Date.now()||void 0;for(f&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",f,r);u.length;){const N=u.pop();if(!N)continue;const v=N.toString(),I=this.serviceColloctor.isLocalId(v),k=I&&this.serviceColloctor.transformKey(N)||v;let w=v;!I&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const S=(m=(p=h==null?void 0:h[r])==null?void 0:p[l])==null?void 0:m[k];if(S&&w===Q){if(S.selectIds){const b=this.control.viewContainerManager.transformToScenePoint([o.x,o.y],r);if(n===z.Start&&(this.cachePosition=b),this.cachePosition){const x=S.updateNodeOpt||{};x.translate=[b[0]-this.cachePosition[0],b[1]-this.cachePosition[1]],x.workState=n;const P={workId:N,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:x,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:r};n===z.Done&&(P.textUpdateForWoker=!0,P.willSerializeData=!0,this.cachePosition=void 0),d.push([P,{workId:N,msgType:L.UpdateNode,emitEventType:this.emitEventType,workState:n}])}}continue}}n===z.Start?this.mainEngine.unWritable():n===z.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length&&this.collectForLocalWorker(d,t)}}class jM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.DeleteNode)}collect(e){var d,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:i}=e,o=this.control.viewContainerManager.getView(i);if(!(o!=null&&o.displayer))return;const n=o.focusScenePath,r=this.serviceColloctor.storage,c=[...t],l=[],u=[],h=Date.now();for(;c.length;){const g=c.pop();if(!g)continue;const p=g.toString(),m=this.serviceColloctor.isLocalId(p),N=m?this.serviceColloctor.transformKey(g):p,v=(f=(d=r==null?void 0:r[i])==null?void 0:d[n])==null?void 0:f[N];if(v){let I=p;if(!m&&this.serviceColloctor.isOwn(I)&&(I=this.serviceColloctor.getLocalId(I)),v.toolsType===T.Text){this.control.textEditorManager.delete(I,!0,!0);continue}u.push(I)}}u.length&&(l.push([{msgType:L.RemoveNode,emitEventType:F.DeleteNode,removeIds:u,dataType:B.Local,willSyncService:!0,willRefresh:!0,viewId:i},void 0]),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,i),this.collectForLocalWorker(l))}}class EM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.ScaleNode);y(this,"targetText",new Map);y(this,"cacheTextInfo",new Map)}async setTextStyle(e,t,i){const o=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t,viewId:i,canSync:!1,canWorker:!1});return{key:e,textInfo:o}}async collect(e,t){var v,I,k,w,S,b,x;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,workState:o,viewId:n,originPoint:r,scenePoint:c,dir:l,scale:u,translate:h}=e;this.lastEmtData=e;const d=this.control.viewContainerManager.getView(n);if(!(d!=null&&d.displayer))return;const f=d.focusScenePath,g=[...i],p=(v=this.serviceColloctor)==null?void 0:v.storage,m=[],N=o===z.Start&&Date.now()||void 0;for(N&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",N,n);g.length;){const P=g.pop();if(!P)continue;const E=P.toString(),R=this.serviceColloctor.isLocalId(E),O=R&&this.serviceColloctor.transformKey(P)||E;let D=E;!R&&this.serviceColloctor.isOwn(D)&&(D=this.serviceColloctor.getLocalId(D));const A=(k=(I=p==null?void 0:p[n])==null?void 0:I[f])==null?void 0:k[O];if(A&&D===Q&&A.selectIds){const G=A.updateNodeOpt||{};if(G.dir=l,G.originPoint=r,G.scenePoint=c,G.workState=o,G.scale=u,G.translate=h,o===z.Start){this.cacheTextInfo.clear();for(const q of A.selectIds){const Z=(w=this.serviceColloctor)==null?void 0:w.isLocalId(q),H=Z&&((S=this.serviceColloctor)==null?void 0:S.transformKey(q))||q;let _=H;!Z&&((b=this.serviceColloctor)!=null&&b.isOwn(H))&&(_=this.serviceColloctor.getLocalId(H));const ie=this.control.textEditorManager.get(_);ie&&o===z.Start&&this.targetText.set(_,ke(ie))}}if(this.targetText.size&&o!==z.Start&&u){const q=[];for(const[H,_]of this.targetText.entries()){const{opt:ie}=_,K=Math.floor(ie.fontSize*u[0]),ue=this.cacheTextInfo.get(H),ee=!ue&&ie.fontSize!==K||ue&&ue.fontSize!==K||!1,ce=(x=this.control.textEditorManager.get(H))==null?void 0:x.opt;if(ee&&ce&&ie.boxSize&&ie.boxPoint){const J=this.setTextStyle(H,{...ce,fontSize:K},n);q.push(J)}}const Z=await Promise.all(q);for(const H of Z)if(H){const{key:_,textInfo:ie}=H;this.cacheTextInfo.set(_,{fontSize:ie.opt.fontSize,boxSize:ie.opt.boxSize,boxPoint:ie.opt.boxPoint})}G.textInfos=this.cacheTextInfo}const ne={workId:P,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:G,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:n};o===z.Done&&(ne.willSerializeData=!0,this.targetText.clear()),m.push([ne,{workId:P,msgType:L.UpdateNode,emitEventType:this.emitEventType,workState:o}]);continue}}o===z.Start?this.mainEngine.unWritable():o===z.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),m.length&&this.collectForLocalWorker(m,t)}}class OM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.RotateNode);y(this,"cacheOriginRotate",0)}collect(e,t){var g,p,m,N,v,I,k;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,angle:o,workState:n,viewId:r}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(r);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,u=[...i],h=(g=this.serviceColloctor)==null?void 0:g.storage,d=[],f=n===z.Start&&Date.now()||void 0;for(f&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",f,r);u.length;){const w=u.pop();if(!w)continue;const S=w.toString(),b=this.serviceColloctor.isLocalId(S),x=b&&this.serviceColloctor.transformKey(w)||S;let P=S;!b&&this.serviceColloctor.isOwn(P)&&(P=this.serviceColloctor.getLocalId(P));const E=(m=(p=h==null?void 0:h[r])==null?void 0:p[l])==null?void 0:m[x];if(E&&P===Q){if(((N=E.selectIds)==null?void 0:N.length)===1){const R=E.selectIds[0];if(n===z.Start){const G=((v=this.serviceColloctor)==null?void 0:v.isLocalId(R))&&((I=this.serviceColloctor)==null?void 0:I.transformKey(R))||R,ne=h[r][l][G];this.cacheOriginRotate=((k=ne==null?void 0:ne.opt)==null?void 0:k.rotate)||0}const O=E.updateNodeOpt||{};O.angle=(o+this.cacheOriginRotate)%360,O.workState=n;const D={workId:w,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:O,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:r};n===z.Done&&(D.willRefreshSelector=!0,D.willSerializeData=!0,this.cacheOriginRotate=0),d.push([D,{workId:w,msgType:L.UpdateNode,emitEventType:this.emitEventType,workState:n}])}continue}}n===z.Start?this.mainEngine.unWritable():n===z.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length&&this.collectForLocalWorker(d,t)}}function RM(a){switch(a){case T.Text:return Xe.Text;case T.SpeechBalloon:case T.Star:case T.Ellipse:case T.Rectangle:case T.Triangle:case T.Rhombus:case T.Polygon:return Xe.Shape}}class WM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetFontStyle);y(this,"timerId")}async setTextStyle(e,t,i,o){const{bold:n,underline:r,lineThrough:c,italic:l,fontSize:u}=i;if(t.toolsType&&RM(t.toolsType)===Xe.Text){t.opt&&(n&&(t.opt.bold=n),j.isBoolean(r)&&(t.opt.underline=r),j.isBoolean(c)&&(t.opt.lineThrough=c),l&&(t.opt.italic=l),u&&(t.opt.fontSize=u));const d=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t.opt,viewId:o,canSync:!1,canWorker:!1});return{key:e,textInfo:d}}}async collect(e){var v,I,k,w,S,b;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,bold:i,italic:o,lineThrough:n,underline:r,viewId:c,fontSize:l}=e,u=this.control.viewContainerManager.getView(c);if(!(u!=null&&u.displayer))return;const h=u.focusScenePath,d=[...t],f=this.serviceColloctor.storage,g={},p=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",p,c);const m=[];for(;d.length;){const x=d.pop();if(!x)continue;const P=x.toString(),E=this.serviceColloctor.isLocalId(P),R=E?this.serviceColloctor.transformKey(x):P;let O=P;!E&&this.serviceColloctor.isOwn(O)&&(O=this.serviceColloctor.getLocalId(O));const D=(I=(v=f==null?void 0:f[c])==null?void 0:v[h])==null?void 0:I[R];if(D){const A=D.updateNodeOpt||{};if(i&&(A.bold=i,g.bold=i==="bold"),o&&(A.italic=o,g.italic=o==="italic"),j.isBoolean(n)&&(A.lineThrough=n,g.lineThrough=n),j.isBoolean(r)&&(A.underline=r,g.underline=r),l&&(A.fontSize=l,g.textSize=l),D.toolsType===T.Text&&D.opt){const G=this.setTextStyle(O,j.cloneDeep(D),A,c);m.push(G);continue}if(D&&O===Q&&((k=D.selectIds)!=null&&k.length))for(const G of D.selectIds){const ne=(w=this.serviceColloctor)==null?void 0:w.isLocalId(G);let q=ne&&((S=this.serviceColloctor)==null?void 0:S.transformKey(G))||G;const Z=f[c][h][q]||void 0;if(!ne&&((b=this.serviceColloctor)!=null&&b.isOwn(q))&&(q=this.serviceColloctor.getLocalId(q)),Z&&Z.toolsType===T.Text&&D.opt){const H=this.setTextStyle(q,j.cloneDeep(Z),A,c);m.push(H);continue}}}}const N=await Promise.all(m);for(const x of N)if(x){const{key:P,textInfo:E}=x;E&&(E.canSync=!0,E.canWorker=!0,this.control.textEditorManager.updateForViewEdited(P,E))}Object.keys(g).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var x;this.timerId=void 0,(x=this.control.room)==null||x.setMemberState(g)},0))}}class YM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetPoint);y(this,"undoTickerId")}collect(e){var v,I,k;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:t,pointMap:i,workState:o,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const c=r.focusScenePath,l=(v=this.serviceColloctor)==null?void 0:v.storage,u=[],h=o===z.Start&&Date.now()||void 0;h&&(this.undoTickerId=h,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,n));const d=t;if(!d)return;const f=d.toString(),g=this.serviceColloctor.isLocalId(f),p=g&&this.serviceColloctor.transformKey(d)||f;let m=f;!g&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const N=(k=(I=l==null?void 0:l[n])==null?void 0:I[c])==null?void 0:k[p];if(N&&m===Q&&N.selectIds){const w=N.updateNodeOpt||{};w.pointMap=i,w.workState=o;const S={workId:d,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:w,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:n};o===z.Done&&(S.undoTickerId=this.undoTickerId),u.push([S,{workId:d,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}o===z.Start?this.mainEngine.unWritable():o===z.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}class UM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetLock)}collect(e){var d,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,isLocked:i,viewId:o}=e,n=this.control.viewContainerManager.getView(o);if(!(n!=null&&n.displayer))return;const r=n.focusScenePath,c=[...t],l=this.serviceColloctor.storage,u=[],h=Date.now();for(;c.length;){const g=c.pop();if(!g)continue;const p=g.toString(),m=this.serviceColloctor.isLocalId(p),N=m?this.serviceColloctor.transformKey(g):p;let v=p;!m&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const I=(f=(d=l==null?void 0:l[o])==null?void 0:d[r])==null?void 0:f[N];if(I){const k=I.updateNodeOpt||{};k.isLocked=i;const w={workId:v,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:o};u.push([w,{workId:v,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,o),u.length&&this.collectForLocalWorker(u)}}class BM extends Ve{constructor(){super(...arguments);y(this,"lastEmtData");y(this,"emitEventType",F.SetShapeOpt)}collect(e){var d,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:i,...o}=e,n=this.control.viewContainerManager.getView(i);if(!(n!=null&&n.displayer))return;const r=n.focusScenePath,c=[...t],l=this.serviceColloctor.storage,u=[],h=Date.now();for(;c.length;){const g=c.pop();if(!g)continue;const p=g.toString(),m=this.serviceColloctor.isLocalId(p),N=m?this.serviceColloctor.transformKey(g):p;let v=p;!m&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const I=(f=(d=l==null?void 0:l[i])==null?void 0:d[r])==null?void 0:f[N];if(I){const k={...I.updateNodeOpt,...o,willRefresh:!0};if(I&&v===Q){const w={workId:v,msgType:L.UpdateNode,dataType:B.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:i};u.push([w,{workId:v,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}}u.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,i),this.collectForLocalWorker(u))}}class oe{constructor(s){y(this,"builders",new Map);this.builders=new Map(s.map(e=>[e,this.build(e)]))}build(s){switch(s){case F.TranslateNode:return new AM;case F.ZIndexNode:return new DM;case F.CopyNode:return new PM;case F.SetColorNode:return new zM;case F.DeleteNode:return new jM;case F.ScaleNode:return new EM;case F.RotateNode:return new OM;case F.SetFontStyle:return new WM;case F.SetPoint:return new YM;case F.SetLock:return new UM;case F.SetShapeOpt:return new BM}}getBuilder(s){return this.builders.get(s)}registerForMainEngine(s,e){return this.builders.forEach(t=>{t&&t.registerForMainEngine(s,e)}),this}destroy(){this.builders.forEach(s=>{s&&s.destroy()}),this.builders.clear()}pause(){return this.builders.forEach(s=>{s&&s.pause()}),this}recover(){return this.builders.forEach(s=>{s&&s.recover()}),this}static emitMethod(s,e,t){Ve.dispatch(s,e,t)}static activeListener(s){Te.InternalMsgEmitter.on(F.ActiveMethod,s)}static unmountActiveListener(s){Te.InternalMsgEmitter.off(F.ActiveMethod,s)}}class FM{constructor(s){y(this,"master");y(this,"mainThreadWorkerMap",new Map);this.master=s}updateCamera(){for(const[s,e]of this.mainThreadWorkerMap.entries()){const t=this.master.control.viewContainerManager.getView(s);if(t){const{cameraOpt:i}=t;e.updateCamera({cameraOpt:i,viewId:t.viewId,msgType:L.UpdateCamera,dataType:B.Local})}}}notifyDrawCount(s){const e=this.master.getFullWorkDrawCount(),t=this.mainThreadWorkerMap.get(s);t&&t.clearDrawLayer(e)}clearDrawCount(s){const e=this.mainThreadWorkerMap.get(s);e&&e.clearDrawLayer(1/0)}createMainThreadWorker(s,e){return new VM(s,e,this)}consume(s){var e;for(const t of s.values()){const{msgType:i,viewId:o,layerOpt:n,offscreenCanvasOpt:r,cameraOpt:c}=t;if(i===L.Console){console.log(this);continue}if(i===L.Init){const u=(e=this.master.control.viewContainerManager.getView(o))==null?void 0:e.displayer,h=u==null?void 0:u.subLocalCanvasContainerRef.current;if(u&&h&&n&&r){const d=this.createMainThreadWorker(o,{displayer:u,container:h,layerOpt:n,master:this.master,canvasOpt:r,post:this.post.bind(this)});this.mainThreadWorkerMap.set(o,d),d&&c&&d.setCameraOpt(c)}continue}if(i===L.TasksQueue)continue;const l=this.mainThreadWorkerMap.get(o);l&&(l.on(t),i===L.Destroy&&(l.destroy(),this.mainThreadWorkerMap.delete(o)))}}post(s){const{sp:e}=s;e&&this.master.collectorSyncData(e)}destroy(){for(const s of this.mainThreadWorkerMap.values())s.destroy();this.mainThreadWorkerMap.clear()}active(){}}class VM{constructor(s,e,t){y(this,"viewId");y(this,"opt");y(this,"manager");y(this,"subLocalLayer");y(this,"subLocalWork");y(this,"scene");y(this,"cameraOpt");this.viewId=s,this.opt=e,this.manager=t,this.scene=this.createScene({...e.canvasOpt,container:e.container});const i=Se.bufferSize.full,o=Se.bufferSize.sub;this.subLocalLayer=this.createLayer("subLocalLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===pe?i:o,contextType:"2d"});const n={thread:this};this.subLocalWork=new $M(n)}createScene(s){return new he.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...s,contextType:"2d",autoRender:!0,id:this.viewId})}createLayer(s,e,t){const{width:i,height:o}=t,n=`canvas-${s}`,r=e.layer(n,{...t,offscreen:!1}),c=new he.Group({anchor:[.5,.5],pos:[i*.5,o*.5],size:[i,o],name:"viewport",id:s});return r.append(c),c}updateScene(s){this.scene.attr({...s});const{width:e,height:t}=s;this.scene.width=e,this.scene.height=t,this.updateLayer({width:e,height:t})}updateLayer(s){const{width:e,height:t}=s;this.subLocalLayer.parent.setAttribute("width",e),this.subLocalLayer.parent.setAttribute("height",t),this.subLocalLayer.setAttribute("size",[e,t]),this.subLocalLayer.setAttribute("pos",[e*.5,t*.5])}updateDpr(s){this.scene.displayRatio=s}on(s){const{msgType:e,toolsType:t,opt:i,dataType:o,workId:n,workState:r}=s,c=n==null?void 0:n.toString();switch(e){case L.Destroy:this.destroy();break;case L.Clear:this.clearAll();break;case L.UpdateDpr:j.isNumber(s.dpr)&&this.updateDpr(s.dpr);break;case L.UpdateCamera:this.updateCamera(s);break;case L.UpdateTools:if(t&&this.subLocalWork.canUseSubWorkerLayer(t)&&i){const l={toolsType:t,toolsOpt:i};this.subLocalWork.setToolsOpt(l)}break;case L.CreateWork:c&&i&&t&&this.subLocalWork.canUseSubWorkerLayer(t)&&(this.subLocalWork.getToolsOpt()||this.subLocalWork.setToolsOpt({toolsType:t,toolsOpt:i}),this.subLocalWork.setWorkOptions(c,i));break;case L.DrawWork:t&&this.subLocalWork.canUseSubWorkerLayer(t)&&(r===z.Done&&o===B.Local?this.subLocalWork.consumeDrawAll(s):this.subLocalWork.consumeDraw(s));break;case L.RemoveNode:this.subLocalWork.removeNode(s);return}}setCameraOpt(s){this.cameraOpt=s;const{scale:e,centerX:t,centerY:i,width:o,height:n}=s;(o!==this.scene.width||n!==this.scene.height)&&this.updateScene({width:o,height:n}),this.subLocalLayer&&(this.subLocalLayer.setAttribute("scale",[e,e]),this.subLocalLayer.setAttribute("translate",[-t,-i]))}updateCamera(s){const{cameraOpt:e}=s;e&&!j.isEqual(this.cameraOpt,e)&&(this.subLocalWork.workShapes.size&&this.clearAll(),this.setCameraOpt(e))}clearAll(){this.subLocalLayer.children.length&&(this.subLocalLayer.parent.children.forEach(s=>{s.name!=="viewport"&&s.remove()}),Oe(this.subLocalLayer,this.subLocalLayer.parent)),this.subLocalWork.clearAll()}destroy(){this.subLocalLayer.remove(),Ee(this.subLocalLayer,this.subLocalLayer.parent),this.scene.remove(),this.subLocalWork.destroy()}clearDrawLayer(s){if(s===1/0){this.clearAll();return}const e=this.subLocalLayer.children.filter(t=>t.id&&j.isNumber(parseInt(t.id))&&parseInt(t.id)<s);for(const t of e)t.remove(),Ee(t,this.subLocalLayer.parent)}}class $M{constructor(s){y(this,"thread");y(this,"workShapes",new Map);y(this,"tmpOpt");y(this,"syncUnitTime",Se.syncOpt.interval);y(this,"subWorkerDrawCount",0);this.thread=s.thread}getToolsOpt(){return this.tmpOpt}consumeDrawAll(s){const{workId:e}=s,t=e==null?void 0:e.toString();t&&this.workShapes.get(t)&&(this.subWorkerDrawCount=0,Oe(this.thread.subLocalLayer,this.thread.subLocalLayer.parent),this.clearWorkShapeNodeCache(t))}consumeDraw(s){const{workId:e,toolsType:t,postCount:i}=s;e&&t&&this.canUseSubWorkerLayer(t)&&(this.getWorkShape(e.toString())||this.createLocalWork(s));const o=e==null?void 0:e.toString(),n=o&&this.workShapes.get(o);if(!n)return;n.consume({data:s,drawCount:this.subWorkerDrawCount,isFullWork:!1,isSubWorker:!0}),this.subWorkerDrawCount++;const r=this.thread.manager.master;r.setSubWorkerDrawCount(this.subWorkerDrawCount);const c=Math.max(r.getMaxDrawCount(),this.subWorkerDrawCount);r.setMaxDrawCount(c),j.isNumber(i)&&r.setConsumeCount(i)}removeNode(s){const{workId:e}=s,t=e==null?void 0:e.toString();t&&this.workShapes.has(t)&&(this.thread.subLocalLayer.getElementsByName(t).forEach(o=>{o.remove()}),this.clearWorkShapeNodeCache(t))}createLocalWork(s){const{workId:e,toolsType:t,opt:i}=s,o=e==null?void 0:e.toString();t&&this.canUseSubWorkerLayer(t)&&o&&i&&(this.getToolsOpt()||this.setToolsOpt({toolsType:t,toolsOpt:i}),this.setWorkOptions(o,i))}setWorkOptions(s,e){let t=this.workShapes.get(s);if(!t&&this.tmpOpt){const{toolsType:i}=this.tmpOpt;this.tmpOpt.toolsOpt=e,t=this.createWorkShapeNode({workId:s,toolsType:i,toolsOpt:e}),t&&this.workShapes.set(s,t),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),t&&t.setWorkOptions(e)}destroy(){this.clearAll()}clearAll(){Oe(this.thread.subLocalLayer,this.thread.subLocalLayer.parent),this.workShapes.clear()}canUseSubWorkerLayer(s){return s===T.Pencil}setToolsOpt(s){var e;this.tmpOpt=s,(e=s.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=s.toolsOpt.syncUnitTime)}createWorkShapeNode(s){return gs({...s,fullLayer:this.thread.subLocalLayer,drawLayer:this.thread.subLocalLayer})}clearWorkShapeNodeCache(s){this.workShapes.delete(s)}getWorkShape(s){return this.workShapes.get(s)}}const HM=async(a,s)=>{const{src:e,isgl:t,isCache:i}=a;if(typeof Image=="function"){const o=new Image;return typeof e=="string"&&(o.crossOrigin="anonymous"),new Promise(n=>{o.onload=function(){createImageBitmap(o,{imageOrientation:t?"flipY":"none"}).then(r=>{n(r)})},o.onerror=function(){n(void 0)},o.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(o=>o.blob()).then(o=>createImageBitmap(o,{imageOrientation:t?"flipY":"none"}).then(n=>n))};class QM{constructor(){y(this,"maxLastSyncTime",Se.syncOpt.interval)}setCurrentToolsData(s){this.currentToolsData=s}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(s){this.currentLocalWorkData=s}getWorkId(){return this.currentLocalWorkData.workId}getWorkState(){return this.currentLocalWorkData.workState}}class GM extends QM{constructor(e){var o,n;super();y(this,"isActive",!1);y(this,"currentToolsData");y(this,"currentLocalWorkData");y(this,"control");y(this,"internalMsgEmitter");y(this,"taskBatchData",new Set);y(this,"fullWorker");y(this,"subWorker");y(this,"fullWorkerUrl");y(this,"subWorkerUrl");y(this,"methodBuilder");y(this,"zIndexNodeMethod");y(this,"subWorkerDrawCount",0);y(this,"fullWorkerDrawCount",0);y(this,"maxDrawCount",0);y(this,"_consumeCount",0);y(this,"_postCount",0);y(this,"reRenders",new Map);y(this,"localWorkViewId");y(this,"localPointsBatchData",new Map);y(this,"tasksqueue",new Map);y(this,"useTasksqueue",!1);y(this,"useTasksClockId");y(this,"mainTasksqueueCount");y(this,"workerTasksqueueCount");y(this,"snapshotMap",new Map);y(this,"boundingRectMap",new Map);y(this,"clearAllResolveMap",new Map);y(this,"delayWorkStateToDoneResolve");y(this,"animationId");y(this,"tmpImageConfigMap",new Map);y(this,"mainThread");y(this,"willSelectorWorkId");y(this,"isLockSentEventCursor",!1);y(this,"subMainThreadWorker");y(this,"getVNodeInfoResolveMap",new Map);const{control:t,internalMsgEmitter:i}=e;this.control=t,this.maxLastSyncTime=((n=(o=this.control.pluginOptions)==null?void 0:o.syncOpt)==null?void 0:n.interval)||this.maxLastSyncTime,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl,this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl,this.internalMsgEmitter=i,this.currentLocalWorkData={workState:z.Pending}}destroy(){var e,t,i;(e=this.methodBuilder)==null||e.destroy(),this.unWritable(),this.taskBatchData.clear(),this.tasksqueue.clear(),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.isActive=!1,this.clearAllResolveMap.clear(),this.snapshotMap.clear(),this.boundingRectMap.clear(),(t=this.fullWorker)==null||t.terminate(),(i=this.subWorker)==null||i.terminate()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}get postCount(){return this._postCount}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.BitMapEraser||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon}get isCanDrawWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.BitMapEraser}get isUseZIndex(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanRecordUndoRedo(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Eraser||e===T.BitMapEraser||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanSentCursor(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Text||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}get isPostCountType(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}get isCanPostDraw(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.BitMapEraser}get isCanStartEventConsum(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Selector||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}async init(){this.destroy(),await this.on(),this.internalMsgEmitterListener(),this.isActive=!0}async useMainThread(){console.info("no OffscreenCanvas");const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-DFjstPTR.js"));this.mainThread=new e(this)}async on(){if(!this.control.hasOffscreenCanvas()){await this.useMainThread();return}if(!this.fullWorkerUrl||!this.subWorkerUrl){console.error("no worker url config");return}this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"}),this.subMainThreadWorker=new FM(this),this.fullWorker.onmessage=e=>{var t,i;if(e.data){const{render:o,sp:n,fullWorkerDrawCount:r,workerTasksqueueCount:c,viewId:l,consumeCount:u}=e.data;u&&(this.consumeCount=u),this.isBusy&&c&&this.setWorkerTasksqueueCount(c),n!=null&&n.length&&this.collectorSyncData(n);const h=(o==null?void 0:o.length)&&o||[];if(r&&l){if(this.fullWorkerDrawCount=r,this.fullWorkerDrawCount<1/0){const d=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(d),this.control.priority==="ui"?(t=this.subMainThreadWorker)==null||t.notifyDrawCount(l):this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.control.priority==="ui"?(i=this.subMainThreadWorker)==null||i.clearDrawCount(l):this.clearReRenders(1/0);if(this.reRenders.size)for(const d of this.reRenders.values())h.push(...d)}h.length&&this.viewContainerManager.render(h)}},this.subWorker.onmessage=e=>{if(e.data){const{render:t,sp:i,subWorkerDrawCount:o,consumeCount:n}=e.data;n&&(this.consumeCount=n),i!=null&&i.length&&this.collectorSyncData(i);const r=(t==null?void 0:t.length)&&t||[];if(this.control.priority==="cpu"&&j.isNumber(o)){if(this.subWorkerDrawCount=o,this.fullWorkerDrawCount<1/0){const c=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(c)}if(t!=null&&t.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const c=[];for(const l of t)l.imageBitmap&&(l.isUnClose=!0,c.push(l));this.reRenders.set(this.subWorkerDrawCount,c)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}r.length&&this.viewContainerManager.render(r)}}}clearReRenders(e=1/0){for(const t of this.reRenders.keys())if(j.isNumber(Number(t))&&Number(t)<=e){const i=this.reRenders.get(Number(t));i==null||i.forEach(o=>{var n;(n=o.imageBitmap)==null||n.close()}),this.reRenders.delete(t)}}get isBusy(){return this.getTasksqueueState()===z.Doing}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.useTasksqueue&&z.Doing||z.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e){this.consumeCount=e}setWorkerTasksqueueCount(e){const t=Math.max(this.workerTasksqueueCount||0,e);this.workerTasksqueueCount=t}collectorSyncData(e){var i,o,n,r;let t=!1;for(const c of e){const{type:l,selectIds:u,opt:h,selectRect:d,strokeColor:f,fillColor:g,willSyncService:p,isSync:m,imageBitmap:N,canvasHeight:v,canvasWidth:I,rect:k,op:w,canTextEdit:S,points:b,selectorColor:x,canRotate:P,scaleType:E,textOpt:R,toolsType:O,workId:D,viewId:A,dataType:G,canLock:ne,isLocked:q,shapeOpt:Z,toolsTypes:H,thickness:_,strokeType:ie,useStroke:K,isgl:ue,imageSrc:ee,isSubWorker:ce}=c;if(!A)return;const J=c.scenePath||this.viewContainerManager.getCurScenePath(A);switch(l){case L.Select:{const $=u!=null&&u.length?{...d,selectIds:u,canvasHeight:v,canvasWidth:I,points:b}:void 0;$&&(h!=null&&h.strokeColor)&&($.selectorColor=h.strokeColor),$&&x&&($.selectorColor=x),$&&f&&($.strokeColor=f),$&&(h!=null&&h.fillColor)&&($.fillColor=h.fillColor),$&&g&&($.fillColor=g),$&&j.isBoolean(P)&&($.canRotate=P),$&&E&&($.scaleType=E),$&&S&&($.canTextEdit=S),$&&R&&($.textOpt=R),$&&j.isBoolean(ne)&&($.canLock=ne),$&&j.isBoolean(q)&&($.isLocked=q),$&&Z&&($.shapeOpt=Z),$&&H&&($.toolsTypes=H),$&&_&&($.thickness=_),$&&ie&&($.strokeType=ie),$&&j.isBoolean(K)&&($.useStroke=K),A&&this.viewContainerManager.showFloatBar(A,!!$,$),p&&((i=this.collector)==null||i.dispatch({type:l,selectIds:u,opt:h,isSync:m,viewId:A,scenePath:J}));break}case L.Snapshot:if(N&&J){const $=this.snapshotMap.get(J);$&&$(N)}break;case L.BoundingBox:if(k&&J){const $=this.boundingRectMap.get(J);$&&$(k)}break;case L.Cursor:w&&this.control.cursor.collectServiceCursor({...c});break;case L.Clear:if(A){this.viewContainerManager.showFloatBar(A,!1);const $=(o=this.clearAllResolveMap.get(A))==null?void 0:o.resolve;$&&$(A)}break;case L.TextUpdate:if(O===T.Text&&D&&A){const $=this.viewContainerManager.transformToOriginPoint((h==null?void 0:h.boxPoint)||[0,0],A),de=(h==null?void 0:h.boxSize)||[0,0],ge=(n=this.viewContainerManager.getView(A))==null?void 0:n.cameraOpt;h?this.control.textEditorManager.updateTextForWorker({x:$[0],y:$[1],w:de[0],h:de[1],scale:(ge==null?void 0:ge.scale)||1,workId:D,opt:h,dataType:G,viewId:A,canSync:p||!1,canWorker:!1}):this.control.textEditorManager.delete(D,p||!1,!1)}break;case L.GetTextActive:O===T.Text&&D&&A&&this.control.textEditorManager.updateTextForWorker({workId:D,isActive:!0,viewId:A,dataType:B.Local,canWorker:!1,canSync:!0},Date.now());break;case L.GetImageBitMap:ee&&A&&D&&HM({src:ee,isgl:ue}).then($=>{var ge;const de=new Set;if(de.add({msgType:L.GetImageBitMap,dataType:B.Local,workId:D,viewId:A,imageSrc:ee,isSubWorker:ce,imageBitmap:$}),!this.control.hasOffscreenCanvas())(ge=this.mainThread)==null||ge.consume(de);else{const Re=ce?this.subWorker:this.fullWorker;$?Re.postMessage(de,[$]):Re.postMessage(de)}});break;case L.GetVNodeInfo:if(D){const $=D.toString(),de=(r=this.getVNodeInfoResolveMap.get($))==null?void 0:r.resolve,ge={...c,uuid:$};de&&de(ge)}break;default:t=!0;break}}t&&Fe(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var t,i,o,n;for(const r of e){const{type:c,op:l,workId:u,index:h,removeIds:d,ops:f,opt:g,updateNodeOpt:p,toolsType:m,isSync:N,viewId:v,isLockSentEventCursor:I,nextTasks:k}=r;if(!v){console.error("collectorAsyncData",r);return}const w=r.scenePath||this.viewContainerManager.getCurScenePath(v);switch(c){case L.None:{I&&Fe(()=>{this.setLockSentEventCursor(!1)},this.maxLastSyncTime);break}case L.DrawWork:{(t=this.collector)==null||t.dispatch({type:c,op:l,opt:g,toolsType:m,workId:u,index:h,isSync:N,viewId:v,scenePath:w,updateNodeOpt:p});break}case L.FullWork:{(i=this.collector)==null||i.dispatch({type:c,ops:f,workId:u,updateNodeOpt:p,opt:g,toolsType:m,isSync:N,viewId:v,scenePath:w}),this.willSelectorWorkId&&u&&u.toString()===this.willSelectorWorkId&&this.control.runEffectWork(()=>{this.setShapeSelectorByWorkId(this.willSelectorWorkId,v),this.willSelectorWorkId=void 0});break}case L.UpdateNode:{(o=this.collector)==null||o.dispatch({type:c,updateNodeOpt:p,workId:u,opt:g,ops:f,op:l,isSync:N,viewId:v,scenePath:w});break}case L.RemoveNode:{d&&this.control.textEditorManager.deleteBatch(d,!1,!1),(n=this.collector)==null||n.dispatch({type:c,removeIds:d,isSync:N,viewId:v,scenePath:w}),this.willSelectorWorkId&&(d!=null&&d.includes(this.willSelectorWorkId))&&(this.willSelectorWorkId=void 0);break}}k&&Fe(()=>{this.collectorAsyncData(k)},this.maxLastSyncTime)}}async onLocalEventEnd(e,t){var l;const i=this.viewContainerManager.getView(t);if(!i)return;const{focusScenePath:o,cameraOpt:n}=i,r=this.viewContainerManager.transformToScenePoint(e,t),c=[];for(const u of this.localPointsBatchData.keys())if(((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Text){const h=this.getLocalPointInfo(u),d=h==null?void 0:h.state;if(d&&d===z.Start){const f=this.currentLocalWorkData.toolsOpt;f.workState=z.Doing,f.boxPoint=r,f.boxSize=[f.fontSize,f.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:Date.now().toString(),x:e[0],y:e[1],scale:(n==null?void 0:n.scale)||1,opt:f,type:Xe.Text,isActive:!0,viewId:t,scenePath:o},Date.now())}this.deleteLocalPoint(u);continue}else this.pushLocalPoint(u,r,z.Done,t),c.push(u);if(c.length){try{if(await new Promise(h=>{setTimeout(async()=>{c.forEach(d=>{this.setLocalPointIsFullWork(d)}),this.delayWorkStateToDoneResolve=h,this.consume()},0)})&&c[0]){const h=c[0];c.forEach(d=>{this.deleteLocalPoint(d)}),this.willSelectorWorkId=h.toString()}}catch(u){console.log("error",u)}this.delayWorkStateToDoneResolve=void 0,c.length=0}}onLocalEventDoing(e,t){var o;if(((o=this.currentToolsData)==null?void 0:o.toolsType)===T.Text)return;this.currentLocalWorkData.workState===z.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:z.Doing});let i=!1;for(const[n,{state:r}]of this.localPointsBatchData.entries())if(this.isAbled()&&r!==z.Pending){const c=this.viewContainerManager.transformToScenePoint(e,t);this.pushLocalPoint(n,c,r===z.Start?z.Doing:r,t),i=!0}if(i){this.runAnimation();return}this.useTasksqueue||this.hoverCursor(e,t)}onLocalEventStart(e,t){var c,l,u;this.viewContainerManager.focuedViewId!==t&&this.viewContainerManager.setFocuedViewId(t),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const i=(c=this.currentToolsData)==null?void 0:c.toolsType,o=i===T.Selector?Q:Date.now(),n=this.setZIndex(t);this.setCurrentLocalWorkData({workState:z.Start,toolsOpt:n,viewId:t});const r=this.viewContainerManager.transformToScenePoint(e,t);if(this.pushLocalPoint(o,r,z.Start,t,n),i!==T.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",o,t),o&&n&&i&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:o,toolsOpt:n,viewId:t},i),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),(l=this.subMainThreadWorker)==null||l.clearDrawCount(t),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(t);h&&((u=this.collector)!=null&&u.hasSelector(t,h))&&this.blurSelector(t,h)}this.consume()}}setLocalPointIsFullWork(e){const t=this.getLocalPointInfo(e);t&&(t.isFullWork=!0,this.localPointsBatchData.set(e,t))}pushLocalPoint(e,t,i,o,n){let r=this.getLocalPointInfo(e);i===z.Start?r={state:z.Start,points:t,opt:n||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:o}:r&&(r.state=i,r.points.push(t[0],t[1])),r&&this.localPointsBatchData.set(e,r)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}correctStorage(e,t,i){var c;const o=new Map,n=[];Object.keys(e).forEach(l=>{var h,d;const u=(d=(h=e[l])==null?void 0:h.opt)==null?void 0:d.zIndex;j.isNumber(u)&&n.push([l,u])});const r=n.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(n))||[];this.zIndexNodeMethod&&r.length&&(this.zIndexNodeMethod.setMinZIndex(r[0][1]||0,t),this.zIndexNodeMethod.setMaxZIndex(r[r.length-1][1]||0,t));for(const[l,u]of r){if(!e[l])continue;const h=e[l];h.opt&&j.isNumber(h.opt.zIndex)&&h.opt.zIndex!==u&&(h.opt.zIndex=u,o.set(l,h))}return o.size&&o.forEach((l,u)=>{var h;(h=this.collector)==null||h.updateValue(u,l,{viewId:t,scenePath:i,isSync:!0}),e[u]=l}),e}async originalEventLintener(e,t,i){var r,c;if(!this.isAbled())return;const o=(r=this.collector)==null?void 0:r.uid,n=this.viewContainerManager.getCurScenePath(i);if(!(o&&!this.control.renderControl.isWritable)){switch((c=this.currentToolsData)==null?void 0:c.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(o&&!this.control.renderControl.isClearAble({uid:o,viewId:i,scenePath:n}))return;break}default:{if(o&&!this.control.renderControl.isRenderAble({uid:o,viewId:i,scenePath:n}))return;break}}switch(Fe(()=>{this.control.pluginManager.dispatchPluginEvent("localEvent",i,e,t)},ys),e){case z.Start:this.setLocalWorkViewId(i),i&&this.onLocalEventStart(t,i);break;case z.Doing:i&&i===this.getLocalWorkViewId()&&this.onLocalEventDoing(t,i);break;case z.Done:i&&i===this.getLocalWorkViewId()&&await this.onLocalEventEnd(t,i);break}}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var o,n,r;const t=e.toolsType,i=((o=this.currentToolsData)==null?void 0:o.toolsType)!==e.toolsType;if(super.setCurrentToolsData(e),i){const c=(n=this.viewContainerManager)==null?void 0:n.getAllViews();for(const l of c)if(l){const{id:u,focusScenePath:h}=l;i&&u&&h&&((r=this.collector)!=null&&r.hasSelector(u,h)&&this.blurSelector(u,h),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:L.UpdateTools,dataType:B.Local,toolsType:t,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:Zt}),this.runAnimation()}}prepareOnceWork(e,t){const{workId:i,toolsOpt:o,viewId:n}=e,r={msgType:L.CreateWork,dataType:B.Local,viewId:n,toolsType:t};this.queryTaskBatchData(r).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...r,workId:i,opt:{...o,syncUnitTime:this.maxLastSyncTime},dataType:B.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,t){const{offscreenCanvasOpt:i,layerOpt:o,dpr:n,cameraOpt:r}=t;this.taskBatchData.add({msgType:L.Init,dataType:B.Local,viewId:e,offscreenCanvasOpt:i,layerOpt:o,dpr:n,cameraOpt:r,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}),this.isBusy&&this.destroyTaskQueue(),this.consume()}destroyViewWorker(e,t=!1){var i;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:L.Destroy,dataType:B.Local,viewId:e,isRunSubWork:!0}),this.consume(),t||(i=this.collector)==null||i.dispatch({type:L.Clear,viewId:e}),this.control.renderControl.destoryByViewId(e,t)}onServiceDerive(e,t){var f,g,p,m,N,v,I;const{newValue:i,oldValue:o,viewId:n,scenePath:r}=t,c=j.cloneDeep(i)||{},l=e;let u=c.type;if(!i&&o){if(l&&((f=this.collector)==null?void 0:f.getLocalId(l))===Q){this.collector.isOwn(l)?this.blurSelector(n,r):this.blurSelector(n,r,l);return}if(u=L.RemoveNode,o.toolsType===T.LaserPen)return}const h=(g=this.viewContainerManager.getView(n))==null?void 0:g.focusScenePath;if(h&&h!==r)return;if((p=this.collector)!=null&&p.isSelector(e)){const k=(m=this.collector)==null?void 0:m.getUidFromKey(e);if(k&&!this.control.roomMember.isOnLine(k))return}if(u&&l){if(!this.control.renderControl.isFilterAble({viewId:n,elementId:e,scenePath:r},u))return;const k=c;if(k.workId=(N=this.collector)!=null&&N.isOwn(l)?(v=this.collector)==null?void 0:v.getLocalId(l):l,k.msgType=u,k.toolsType===T.LaserPen&&(k.isRunSubWork=!0),k.dataType=B.Service,k.viewId=n,k.scenePath=r,k.selectIds&&(k.selectIds=k.selectIds.map(w=>{var S,b;return(S=this.collector)!=null&&S.isOwn(w)?(b=this.collector)==null?void 0:b.getLocalId(w):w})),k&&k.toolsType===T.Text||(o==null?void 0:o.toolsType)===T.Text){this.control.textEditorManager.onServiceDerive(k);return}this.taskBatchData.add(k)}this.runAnimation();const d=t.newValue&&((I=t.newValue.opt)==null?void 0:I.zIndex);if(this.zIndexNodeMethod&&j.isNumber(d)){const k=this.zIndexNodeMethod.getMinZIndex(n);this.zIndexNodeMethod.getMaxZIndex(n)<d&&this.zIndexNodeMethod.setMaxZIndex(d,n),k>d&&this.zIndexNodeMethod.setMinZIndex(d,n)}}pullServiceData(e,t,i={isAsync:!1,useAnimation:!1}){var c,l,u,h,d,f;let o=(c=this.collector)==null?void 0:c.getStorageData(e,t);const{isAsync:n,useAnimation:r}=i;if(o){this.control.renderControl.isWritable&&(o=this.correctStorage(o,e,t));const g=Object.keys(o);for(const p of g){if((l=this.collector)!=null&&l.isSelector(p)){const N=(u=this.collector)==null?void 0:u.getUidFromKey(p);if(N&&!this.control.roomMember.isOnLine(N))continue}const m=(h=o[p])==null?void 0:h.type;if(m&&p){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:p,scenePath:t},m))continue;const N=o[p];if(N.workId=(d=this.collector)!=null&&d.isOwn(p)?(f=this.collector)==null?void 0:f.getLocalId(p):p,N.msgType=m,N.dataType=B.Service,N.viewId=e,N.scenePath=t,N.useAnimation=!!r,N.selectIds&&(N.selectIds=N.selectIds.map(v=>{var I,k;return(I=this.collector)!=null&&I.isOwn(v)?(k=this.collector)==null?void 0:k.getLocalId(v):v})),N.toolsType===T.Text){this.control.textEditorManager.onServiceDerive(N);continue}this.taskBatchData.add(N)}this.internalMsgEmitter.emit("excludeIds",g,e)}n?this.consume():this.runAnimation()}}runAnimation(){!this.animationId&&!this.isBusy&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var t;this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const i=this.consumeQueue(),o=!!i.size;if(this.taskBatchData.size)for(const n of this.taskBatchData.values())n.dataType===B.Service&&(i.add(n),this.taskBatchData.delete(n));i.size?(this.post(i),o&&this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[i,{state:o,isFullWork:n,points:r,opt:c}]of this.localPointsBatchData.entries()){if(o===z.Done&&!n||o===z.Start&&!this.isCanStartEventConsum)continue;const l=r.map(u=>u);if(l.length){if(this.isPostCountType&&o===z.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}this.delayWorkStateToDoneResolve&&o===z.Done&&(this.delayWorkStateToDoneResolve(!0),this.setLockSentEventCursor(!0)),this.taskBatchData.add({op:l,workState:o,workId:i,dataType:B.Local,msgType:L.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(t=this.currentToolsData)==null?void 0:t.toolsType,viewId:e,scenePath:e&&this.viewContainerManager.getCurScenePath(e),opt:c,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0}),r.length=0}}this.taskBatchData.size&&(this.post(this.taskBatchData),this.taskBatchData.clear()),this.taskBatchData.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}unWritable(){this.setCurrentLocalWorkData({workState:z.Unwritable,workId:void 0})}abled(){this.setCurrentLocalWorkData({workState:z.Pending,workId:void 0})}isAbled(){return this.currentLocalWorkData.workState!==z.Unwritable}post(e){var i;if(!this.control.hasOffscreenCanvas()){if(!this.mainThread){let o=[];o=j.cloneDeep([...e]),setTimeout(()=>{for(const n of o)this.taskBatchData.add(n)},0);return}this.mainThread.consume(e);return}this.fullWorker.postMessage(e);const t=new Set;for(const o of e.values()){const n=o.msgType;(n===L.Init||n===L.Clear||n===L.Destroy||n===L.UpdateCamera||o.isRunSubWork)&&t.add(o)}t.size&&(this.subWorker.postMessage(t),this.control.priority==="ui"&&((i=this.subMainThreadWorker)==null||i.consume(t)))}updateNode(e,t,i,o){this.taskBatchData.add({msgType:L.UpdateNode,workId:e,updateNodeOpt:t,viewId:i,scenePath:o,dataType:B.Local}),this.runAnimation()}destroyTaskQueue(){this.useTasksqueue=!1,this.useTasksClockId&&(clearTimeout(this.useTasksClockId),this.useTasksClockId=void 0),this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0}updateDpr(e,t){this.queryTaskBatchData({msgType:L.UpdateDpr,dataType:B.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add({dataType:B.Local,msgType:L.UpdateDpr,viewId:e,dpr:t,isRunSubWork:!0}),this.runAnimation()}updateCamera(e,t){var i;this.useTasksqueue||((i=this.methodBuilder)==null||i.pause(),this.blurCursor(e),this.checkDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:L.UpdateCamera,dataType:B.Local,cameraOpt:{...t,width:t.width,height:t.height},scenePath:this.viewContainerManager.getCurScenePath(e),isRunSubWork:!0,viewId:e}),this.consume(),this.useTasksClockId&&clearTimeout(this.useTasksClockId),this.updateCameraDone())}updateCameraDone(){this.useTasksClockId=setTimeout(()=>{var e,t;this.useTasksClockId=void 0,this.mainTasksqueueCount===this.workerTasksqueueCount?(this.tasksqueue.size&&this.consume(),this.useTasksqueue=!1,this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0,this.control.priority==="ui"&&((e=this.subMainThreadWorker)==null||e.updateCamera()),(t=this.methodBuilder)==null||t.recover(),this.runAnimation()):this.updateCameraDone()},this.maxLastSyncTime)}consumeQueue(){const e=new Set;let t=!this.isBusy;if(this.isBusy&&this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount<=this.workerTasksqueueCount&&(t=!0),t){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:L.TasksQueue,dataType:B.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[i,o]of this.tasksqueue.entries())o.cameraOpt&&this.control.textEditorManager.onCameraChange(o.cameraOpt,i)}return e}async clearViewScenePath(e,t,i){var n,r;const o=this.viewContainerManager.getCurScenePath(e);if(i){const c=(n=this.collector)==null?void 0:n.uid;if(c&&!this.control.renderControl.isClearAble({uid:c,viewId:e,scenePath:o}))return}this.control.textEditorManager.clear(e,t),this.queryTaskBatchData({msgType:L.Clear,dataType:B.Local,viewId:e}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({dataType:B.Local,msgType:L.Clear,viewId:e}),this.runAnimation(),t||(this.control.renderControl.isUsePageAuth(e)&&o?this.control.renderControl.clearRenderPage(e,o):(r=this.collector)==null||r.dispatch({type:L.Clear,viewId:e,scenePath:o})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.localPointsBatchData.clear(),await new Promise(c=>{const l=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};l.timer&&clearTimeout(l.timer),l.resolve=c,l.timer=setTimeout(()=>{const u=this.clearAllResolveMap.get(e);u!=null&&u.resolve&&u.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,l)}).then(c=>{this.clearAllResolveMap.delete(c)})}internalMsgEmitterListener(){var e;this.methodBuilder=new oe([F.CopyNode,F.SetColorNode,F.DeleteNode,F.RotateNode,F.ScaleNode,F.TranslateNode,F.ZIndexNode,F.SetFontStyle,F.SetPoint,F.SetLock,F.SetShapeOpt]).registerForMainEngine(se.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(F.ZIndexNode)}setZIndex(e){const t=this.currentToolsData&&j.cloneDeep(this.currentToolsData.toolsOpt);return t&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),t.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),t}checkDrawingWork(e){var o,n,r;let t=!1;const i=[];for(const[c,{state:l,viewId:u,points:h,opt:d}]of this.localPointsBatchData.entries())if(e===u&&l===z.Start||l===z.Doing){if(l===z.Doing&&this.isCanDrawWork){Number(c)&&Number(c)+60>Date.now()&&(i.push(c.toString()),this.taskBatchData.add({msgType:L.RemoveNode,workId:c,viewId:u,dataType:B.Local,isRunSubWork:!0}));const f=h.map(g=>g);this.taskBatchData.add({op:f,workState:z.Done,workId:c,dataType:B.Local,msgType:L.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(o=this.currentToolsData)==null?void 0:o.toolsType,viewId:u,opt:d,scenePath:u&&this.viewContainerManager.getCurScenePath(u)}),t=!0}this.deleteLocalPoint(c)}if((t||i.length)&&(this.consume(),i.length)){const c=(n=this.viewContainerManager.getView(e))==null?void 0:n.focusScenePath;(r=this.collector)==null||r.dispatch({type:L.RemoveNode,removeIds:i,viewId:e,scenePath:c})}}removeDrawingWork(e){var i,o;const t=[];for(const[n,{state:r,viewId:c}]of this.localPointsBatchData.entries())(e===c&&r===z.Start||r===z.Doing)&&(this.deleteLocalPoint(n),r===z.Doing&&this.isCanDrawWork&&(t.push(n.toString()),this.taskBatchData.add({msgType:L.RemoveNode,workId:n,viewId:c,dataType:B.Local,isRunSubWork:!0})));if(t.length){this.consume();const n=(i=this.viewContainerManager.getView(e))==null?void 0:i.focusScenePath;(o=this.collector)==null||o.dispatch({type:L.RemoveNode,removeIds:t,viewId:e,scenePath:n})}}removeNodes(e,t){var o,n;const i=(o=this.viewContainerManager.getView(e))==null?void 0:o.focusScenePath;if(i&&t.length){for(const r of t)this.taskBatchData.add({msgType:L.RemoveNode,workId:r,viewId:e,dataType:B.Local,isRunSubWork:!1});this.consume(),(n=this.collector)==null||n.dispatch({type:L.RemoveNode,removeIds:t,viewId:e,scenePath:i})}}hoverCursor(e,t){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)===T.Selector){const o=this.viewContainerManager.getView(t);if(o&&o.displayer&&o.displayer.vDom){const c=o.displayer.vDom.state.floatBarData;if(c){const{x:l,y:u,w:h,h:d}=c;if(Ko(e,{x:l,y:u,w:h,h:d}))return}}const n=this.viewContainerManager.transformToScenePoint(e,t),r={msgType:L.CursorHover,dataType:B.Local,point:n,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:t};this.queryTaskBatchData({msgType:L.CursorHover,dataType:B.Local,toolsType:this.currentToolsData.toolsType,viewId:t}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(r),this.runAnimation()}}blurCursor(e){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)!==T.Selector)return;const t={msgType:L.CursorBlur,dataType:B.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:L.CursorHover,dataType:B.Local,viewId:e}).forEach(o=>{this.taskBatchData.delete(o)}),this.taskBatchData.add(t),this.consume()}sendCursorEvent(e,t){var r,c;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===z.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;const i=(r=this.collector)==null?void 0:r.uid,o=this.viewContainerManager.getCurScenePath(t);switch((c=this.currentToolsData)==null?void 0:c.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(i&&!this.control.renderControl.isClearAble({uid:i,viewId:t,filterLocalSelf:!1,scenePath:o}))return;break}default:if(i&&!this.control.renderControl.isWritable||i&&!this.control.renderControl.isRenderAble({uid:i,viewId:t,filterLocalSelf:!1,scenePath:o}))return;break}let n=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(n=e,this.control.cursor.sendEvent(n,t))}getBoundingRect(e){var i,o;if(!((i=this.boundingRectMap)==null?void 0:i.get(e))){const n=(o=this.collector)==null?void 0:o.getScenePathData(e);if(!n)return;if(Object.keys(n).forEach(r=>{var c;((c=this.collector)==null?void 0:c.getLocalId(r))===Q&&delete n[r]}),Object.keys(n).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const r={msgType:L.BoundingBox,dataType:B.Local,scenePath:e,scenes:n,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:this.viewContainerManager.mainView.id};return this.taskBatchData.add(r),this.runAnimation(),new Promise(c=>{this.boundingRectMap.set(e,c)}).then(c=>(this.boundingRectMap.delete(e),c))}}}getSnapshot(e,t,i,o){var r,c,l,u,h;if(!((r=this.snapshotMap)==null?void 0:r.get(e))){const d=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!d)return;const f=(l=this.collector)==null?void 0:l.getStorageData(d,e);if(!f)return;if(Object.keys(f).forEach(g=>{var p;((p=this.collector)==null?void 0:p.getLocalId(g))===Q&&delete f[g]}),Object.keys(f).length){const g=this.viewContainerManager.mainView;if(!g)return;const p=t||((u=g.cameraOpt)==null?void 0:u.width),m=i||((h=g.cameraOpt)==null?void 0:h.height),N={msgType:L.Snapshot,dataType:B.Local,scenePath:e,scenes:f,w:p,h:m,cameraOpt:o&&{...o,width:p,height:m}||g.cameraOpt,isRunSubWork:!0,viewId:g.id};return this.taskBatchData.add(N),this.runAnimation(),new Promise(v=>{this.snapshotMap.set(e,v)}).then(v=>(this.snapshotMap.delete(e),v))}}}queryTaskBatchData(e){const t=[];if(e)for(const i of this.taskBatchData.values()){let o=!0;for(const[n,r]of Object.entries(e))if(i[n]!==r){o=!1;break}o&&t.push(i)}return t}insertIconify(e,t){var r;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertIconify viewId is not exist");if(!t.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(t.src))throw new Error("iconify src must be http or https");t.strokeColor||(t.strokeColor=(r=this.currentLocalWorkData.toolsOpt)==null?void 0:r.strokeColor);const n=i==null?void 0:i.focusScenePath;if(e&&n){const c=Date.now();Te.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:dt.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:L.FullWork,dataType:B.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}insertImage(e,t){const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");if(t.src&&!/^(http|https):\/\//.test(t.src))throw new Error("Image src must be http or https");const o=i==null?void 0:i.focusScenePath;if(e&&o){const{src:n,uuid:r}=t;if(r&&!n){this.tmpImageConfigMap.set(r,t);return}const c=Date.now();Te.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:dt.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:L.FullWork,dataType:B.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,t,i){var r,c;const o=this.viewContainerManager.getView(e);if(!o)throw new Error("insertImage viewId is not exist");const n=o==null?void 0:o.focusScenePath;if(e&&n&&this.collector){const l=this.collector.getStorageData(e,n);if(!l)return;for(const[u,h]of Object.entries(l))if(h&&h.toolsType===T.Image&&h.opt.uuid===t){const d=Date.now();Te.InternalMsgEmitter.emit("addUndoTicker",d,e);const f=(r=this.collector)!=null&&r.isOwn(u)?(c=this.collector)==null?void 0:c.getLocalId(u):u,g={...h.opt,locked:i,type:dt.Image};this.taskBatchData.add({msgType:L.FullWork,dataType:B.Local,toolsType:T.Image,workId:f,opt:g,viewId:e,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,t,i){const o=this.viewContainerManager.getView(e);if(!o)throw new Error("insertImage viewId is not exist");const n=o==null?void 0:o.focusScenePath;if(e&&n){const r=this.tmpImageConfigMap.get(t);r&&(r.src=i,this.insertImage(e,r),this.tmpImageConfigMap.delete(t));return}}getImagesInformation(e){const t=[];if(this.collector){const i=this.collector.getScenePathData(e);if(!i)return t;for(const o of Object.values(i))if(o&&o.toolsType===T.Image){const n=o.opt;t.push({uuid:n.uuid,centerX:n.centerX,centerY:n.centerY,width:n.width,height:n.height,locked:n.locked,uniformScale:n.uniformScale,crossOrigin:n.crossOrigin})}}return t}setShapeSelectorByWorkId(e,t){this.taskBatchData.add({workId:Q,selectIds:[e],msgType:L.Select,dataType:B.Local,viewId:t,willSyncService:!0}),this.runAnimation()}blurSelector(e,t,i){this.taskBatchData.add({workId:i||Q,selectIds:[],msgType:L.Select,dataType:B.Service,viewId:e,scenePath:t}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:L.Console,dataType:B.Local,isRunSubWork:!0,viewId:""}),this.consume()}setPriority(e){var o,n;const t=new Set,i=new Set;if(e==="cpu"&&((o=this.subMainThreadWorker)==null||o.destroy(),t.add({msgType:L.PriorityWorker,viewId:Zt,dataType:B.Local,isRunSubWork:!0})),e==="ui"){t.add({msgType:L.PriorityMainThreadWorker,viewId:Zt,dataType:B.Local,isRunSubWork:!0});const r=this.viewContainerManager.mainView;if(r){const l=this.viewContainerManager.getViewInitData(r.id);if(l){const{offscreenCanvasOpt:u,layerOpt:h,dpr:d,cameraOpt:f}=l;i.add({msgType:L.Init,dataType:B.Local,viewId:r.id,offscreenCanvasOpt:u,layerOpt:h,dpr:d,cameraOpt:f,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1})}}const c=this.viewContainerManager.appViews;for(const l of c.keys()){const u=this.viewContainerManager.getViewInitData(l);if(u){const{offscreenCanvasOpt:h,layerOpt:d,dpr:f,cameraOpt:g}=u;i.add({msgType:L.Init,dataType:B.Local,viewId:l,offscreenCanvasOpt:h,layerOpt:d,dpr:f,cameraOpt:g,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1})}}}t.size&&this.subWorker.postMessage(t),i.size&&((n=this.subMainThreadWorker)==null||n.consume(i))}sendClearUids(e,t){var o,n;const i=new Set;i.add({msgType:L.AuthClear,dataType:B.Local,viewId:e,clearUids:t,localUid:(o=this.collector)==null?void 0:o.uid}),this.control.hasOffscreenCanvas()?this.fullWorker.postMessage(i):(n=this.mainThread)==null||n.consume(i)}async getVNodeInfo(e,t,i){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:L.GetVNodeInfo,dataType:B.Local,isRunSubWork:!0,viewId:t,workIds:i,workId:e}),this.consume(),await new Promise(o=>{const n=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};n.timer&&clearTimeout(n.timer),n.resolve=o,n.timer=setTimeout(()=>{const r=this.getVNodeInfoResolveMap.get(e);r!=null&&r.resolve&&r.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,n)}).then(o=>{const{uuid:n}=o;return this.getVNodeInfoResolveMap.delete(n),o})}}class ZM{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"roomHotkeyCheckers");y(this,"tmpCopyStore",new Map);y(this,"tmpCopyCoordInfo");var i;const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t,this.roomHotkeyCheckers=((i=this.control.room)==null?void 0:i.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var s;return((s=this.control.room)==null?void 0:s.disableDeviceInputs)||!1}get isSelector(){var s;return((s=this.control.worker.currentToolsData)==null?void 0:s.toolsType)===T.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(s){switch(s.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(s){var i,o,n;const e=this.control.viewContainerManager.focuedViewId,t=(i=this.control.viewContainerManager.focuedView)==null?void 0:i.focusScenePath;if(e&&t)switch(s){case"delete":this.isSelector&&((o=this.collector)!=null&&o.hasSelector(e,t))&&oe.emitMethod(se.MainEngine,F.DeleteNode,{workIds:[Q],viewId:e});break;case"copy":this.isSelector&&((n=this.collector)!=null&&n.hasSelector(e,t))&&this.copySelectorToTemp(e,t);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,t);break}(s==="changeToPencil"||s==="redo"||s==="undo")&&this.onSelfActiveHotkey(s)}colloctHotkey(s){if(this.isUseSelf){const e=this.checkHotkey(s);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(s){switch(s){case"changeToPencil":this.setMemberState({currentApplianceName:re.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:re.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:re.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:re.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:re.eraser,isLine:!0});break;case"changeToHand":this.setMemberState({currentApplianceName:re.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:re.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:re.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:re.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:re.straight});break;case"redo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.redo();break;case"undo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.undo();break;case"changeToText":this.setMemberState({currentApplianceName:re.text});break}}checkHotkey(s){for(const e of this.roomHotkeyCheckers){const{kind:t,checker:i}=e;if(i({nativeEvent:s,kind:this.getEventKey(s),key:s.key,altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey},this.keyboardKind))return t}}copySelectorToTemp(s,e){var l,u;const t=this.control.viewContainerManager.getView(s),i=(u=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:u.getBuilder(F.CopyNode);if(!t||!this.collector||!i)return;const o=this.collector.transformKey(Q),n=this.collector.getStorageData(s,e);if(!n)return;const r=n[o],c=r&&i.copySelector({viewId:s,store:r});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(s,e){var o,n;const t=this.control.viewContainerManager.getView(s),i=(n=(o=this.mainEngine)==null?void 0:o.methodBuilder)==null?void 0:n.getBuilder(F.CopyNode);if(!(!t||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!i)&&t.viewData&&this.tmpCopyCoordInfo){const r=j.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=t.viewData.camera;r.x=r.x+l.centerX-c.centerX,r.y=r.y+l.centerY-c.centerY;const u=Date.now();this.control.worker.internalMsgEmitter.emit("addUndoTicker",u,s),i.pasteSelector({viewId:s,scenePath:e,copyStores:j.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:r,cameraOpt:l},undoTickerId:u})}}setMemberState(s){var e;(e=this.control.room)==null||e.setMemberState(s)}}class qM{constructor(s){y(this,"control");y(this,"roomMemberManager");y(this,"worker");y(this,"publicMsgEmitter");y(this,"renderUids",new Map);y(this,"pageAuth",new Map);y(this,"isLocalRender",!1);y(this,"isCurWritable",!1);var i;const{control:e,publicMsgEmitter:t}=s;this.control=e,this.publicMsgEmitter=t,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((i=this.control.room)==null?void 0:i.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(s){this.isCurWritable=s}addPage(s,e=!0){var l,u;const{viewId:t,render:i="localSelf",elementIds:o,pageId:n=(l=this.control.collector)==null?void 0:l.uid}=s,r=this.pageAuth.get(t)||new Map,c=this.control.viewContainerManager.getCurScenePath(t);if(c&&n){const h=r.get(c)||{render:"localSelf",pages:new Map};e&&(h.render=i);const d=o&&this.cloneElementIds(t,c,o,n)||new Set;h.pages.set(n,d),r.set(c,h),this.pageAuth.set(t,r),e&&this.pageAuthEffect(t),this.isLocalRender=!1,(u=this.control.collector)==null||u.dispatchPageAuth({operation:ze.addPage,viewId:t,scenePath:c,pageId:n,pageData:{render:i,elementIds:d}},!0)}}delPage(s,e){var n,r;const t=this.pageAuth.get(e);if(!t)return;const i=[...t.keys()].find(c=>{const l=t.get(c);return!!(l&&l.pages.has(s))});if(!i)return;const o=t.get(i);if(o){const{render:c,pages:l}=o,u=c==="localSelf"?(n=this.control.collector)==null?void 0:n.uid:c,h=l.get(s);h!=null&&h.size&&this.delElementIds(e,i,h),l.delete(s),u===s&&this.pageAuthEffect(e)}(r=this.control.collector)==null||r.dispatchPageAuth({operation:ze.deletePage,viewId:e,scenePath:i,pageId:s},!0)}delViewPage(s,e=!0){var i;this.pageAuth.get(s)&&(this.pageAuth.delete(s),e&&((i=this.control.collector)==null||i.dispatchPageAuth({operation:ze.clearView,viewId:s},e)))}clearRenderPage(s,e,t=!0){var r,c;const i=this.pageAuth.get(s);if(!i)return;const o=i.get(e);let n;if(o){const{render:l,pages:u}=o,h=l==="localSelf"?(r=this.control.collector)==null?void 0:r.uid:l;if(h){if(t){const d=u.get(h);d&&this.delElementIds(s,e,d)}u.set(h,new Set),n=h}}t&&n&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:ze.clearPage,viewId:s,scenePath:e,pageId:n},t))}hasPage(s,e,t){const i=this.pageAuth.get(e);if(!i)return!1;const o=i.get(t);return o?o.pages.has(s):!1}getPageInfo(s,e,t){const i=this.pageAuth.get(e);if(!i)return;const o=i.get(t);if(o)return o.pages.get(s)}addRenderPageElementId(s,e=!0,t=!1){var u,h;const{viewId:i,elementId:o,scenePath:n}=s,r=this.pageAuth.get(i);if(!r)throw new Error(`no view info in viewId: ${i}`);const c=r.get(n);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const p=f.get(g)||new Set;p.add(o),f.set(g,p),l=g}}t&&this.pageAuthEffect(i),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:ze.addElement,viewId:i,scenePath:n,pageId:l,pageData:{elementId:o}},e))}delRenderPageElementId(s,e=!0,t=!1){var u,h;const{viewId:i,elementId:o,scenePath:n}=s,r=this.pageAuth.get(i);if(!r)throw new Error(`no view info in viewId: ${i}`);const c=r.get(n);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const p=f.get(g);p&&(p.delete(o),f.set(g,p),l=g)}}t&&this.pageAuthEffect(i),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:ze.deleteElement,viewId:i,scenePath:n,pageId:l,pageData:{elementId:o}},e))}setPageRender(s,e,t,i=!0){var r;const o=this.pageAuth.get(s);if(!o)throw new Error(`no view info in viewId: ${s}`);const n=o.get(e);n&&(n.render=t),e===this.control.viewContainerManager.getCurScenePath(s)&&this.pageAuthEffect(s),i||(this.isLocalRender=!0),i&&(this.isLocalRender=!1,(r=this.control.collector)==null||r.dispatchPageAuth({operation:ze.renderPage,viewId:s,scenePath:e,pageData:{render:t}},i))}isRenderAble(s){var c,l;const{uid:e,viewId:t,filterLocalSelf:i=!0,scenePath:o}=s,n=this.renderUids.get(t);if(n){const{render:u,hide:h}=n;if(u===void 0&&h===void 0)return!0;if(j.isSet(u)){if(u.has(e)||i&&((c=this.control.collector)==null?void 0:c.uid)===e&&u.has("localSelf"))return!0}else if(u===!0&&(!h||j.isSet(h)&&!h.has(e)&&!(i&&h.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const r=this.pageAuth.get(t);if(r&&o){const u=r.get(o);if(u){const{render:h}=u;if(h)return!(h==="localSelf"&&!i)}}return!0}isClearAble(s){var c;const{uid:e,viewId:t,filterLocalSelf:i=!0,scenePath:o}=s,n=this.renderUids.get(t);if(n){const{clear:l}=n;return!!(l===void 0||l===!0||j.isSet(l)&&(l.has(e)||i&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const r=this.pageAuth.get(t);if(r&&o){const l=r.get(o);if(l){const{render:u}=l;if(u)return!(u==="localSelf"&&!i)}}return!0}isFilterAble(s,e){var c,l,u,h;const{viewId:t,scenePath:i,elementId:o}=s,n=this.renderUids.get(t);if(n&&o){const{render:d,hide:f}=n;if(d===void 0&&f===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(o);return g?!!(j.isSet(d)&&(d.has(g)||d.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||d===!0&&(!f||j.isSet(f)&&!f.has(g)&&!(f.has("localSelf")&&((u=this.control.collector)==null?void 0:u.uid)===g))):!1}const r=this.pageAuth.get(t);if(r&&i&&o){const d=r.get(i);if(d){const{render:f,pages:g}=d;if(!f)return!0;const p=(h=this.control.collector)==null?void 0:h.uid,m=f==="localSelf"?p:f,N=m&&g.get(m)||void 0;if(N)switch(e){case L.RemoveNode:return!0;default:return N.has(o)}return!1}}return!0}isFilterCursor(s){if(this.isUsePageAuth(s)){const e=this.control.viewContainerManager.getCurScenePath(s),t=this.pageAuth.get(s);if(e&&t){const i=t.get(e);if(i){const{render:o}=i;return o!=="localSelf"}}}return!0}isUsePageAuth(s){var i;if(!this.pageAuth.has(s))return!1;const t=this.control.viewContainerManager.getCurScenePath(s);return t&&((i=this.pageAuth.get(s))==null?void 0:i.has(t))||!1}publishRender(s){var n;const{viewId:e,option:t,isSync:i=!0}=s,o={};if(t){const{render:r,hide:c,clear:l}=t;r&&(o.render=r===!0&&!0||new Set(r)),c&&(o.hide=c===!0&&!0||new Set(c)),l&&(o.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,o)}else this.renderUids.delete(e);i&&((n=this.control.collector)==null||n.dispatchRenderAuth({operation:Ge.setAuth,viewId:e,renderData:o},i)),this.renderEffect(e)}publishOneRender(s,e,t,i=!0){var r;const o=this.renderUids.get(s);let n;switch(t){case"show":o?(o.render||(o.render=new Set),j.isSet(o.render)&&o.render.add(e),j.isSet(o.hide)&&o.hide.delete(e)):this.renderUids.set(s,{render:new Set([e])}),n=Ge.setShow;break;case"hide":o?(o.hide||(o.hide=new Set),j.isSet(o.hide)&&o.hide.add(e),j.isSet(o.render)&&o.render.delete(e)):this.renderUids.set(s,{hide:new Set([e])}),n=Ge.setHide;break}o?this.renderUids.set(s,o):this.renderUids.delete(s),i&&n&&((r=this.control.collector)==null||r.dispatchRenderAuth({operation:n,viewId:s,uid:e},i)),this.renderEffect(s)}publishOneClear(s,e,t,i=!0){var n;const o=this.renderUids.get(s);t?o?(o.clear||(o.clear=new Set),j.isSet(o.clear)&&o.clear.add(e)):this.renderUids.set(s,{clear:new Set([e])}):o&&j.isSet(o.clear)&&o.clear.has(e)&&o.clear.delete(e),o?this.renderUids.set(s,o):this.renderUids.delete(s),i&&((n=this.control.collector)==null||n.dispatchRenderAuth({operation:Ge.setClear,viewId:s,uid:e,isClear:t},i)),this.renderEffect(s)}syncRenderUids(s,e,t,i){const o=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,n=t===!0?!0:t&&Object.keys(t)?new Set(Object.keys(t)):void 0,r=i===!0?!0:i&&Object.keys(i)?new Set(Object.keys(i)):void 0;o||n||r?this.renderUids.set(s,{render:o,hide:n,clear:r}):this.renderUids.delete(s),this.renderEffect(s),this.publicMsgEmitter.emit("syncRenderUids",s,{render:o,hide:n,clear:r})}syncPageAuth(s,e,t=!1){let i=!1;if(!e)this.pageAuth.delete(s);else{const o=this.pageAuth.get(s)||new Map;for(const[n,r]of Object.entries(e)){const{render:c,pages:l}=r,u=o.get(n),h=this.isLocalRender?u==null?void 0:u.render:c;if(h){h!==(u==null?void 0:u.render)&&(i=!0);const d=new Map;for(const[g,p]of Object.entries(l))d.set(g,new Set(Object.keys(p)));const f={render:h,pages:d};d.size&&o.set(n,f)}}o.size&&(this.pageAuth.set(s,o),this.publicMsgEmitter.emit("syncPageAuth",s,o))}(t||i)&&this.pageAuthEffect(s)}destoryByViewId(s,e=!1){var t;this.renderUids.has(s)&&(this.renderUids.delete(s),e||(t=this.control.collector)==null||t.dispatchRenderAuth({operation:Ge.setAuth,viewId:s})),this.pageAuth.has(s)&&this.control.renderControl.delViewPage(s,!e)}renderEffect(s){var t;const e=(t=this.control.viewContainerManager.getView(s))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(s,!0).then(()=>{var i;this.worker.pullServiceData(s,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(s,(i=this.renderUids.get(s))==null?void 0:i.clear)})}pageAuthEffect(s){var t;const e=(t=this.control.viewContainerManager.getView(s))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(s,!0).then(()=>{this.worker.pullServiceData(s,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(s,!0)})}cloneElementIds(s,e,t,i){var r,c;const o=(r=this.control.collector)==null?void 0:r.getStorageData(s,e),n=new Set;if(o){for(const l of Object.keys(o))if(t.has(l)){const u=`${l}_${i}`;if(n.add(u),!Object.keys(o).includes(u)){const h=j.cloneDeep(o[l]);(c=this.control.collector)==null||c.updateValue(u,{type:L.FullWork,...h,workId:u},{isSync:!0,viewId:s,scenePath:e})}}}return n}delElementIds(s,e,t){var o,n;const i=(o=this.control.collector)==null?void 0:o.getStorageData(s,e);if(i)for(const r of Object.keys(i))t.has(r)&&Object.keys(i).includes(r)&&((n=this.control.collector)==null||n.updateValue(r,void 0,{isSync:!0,viewId:s,scenePath:e}))}}class XM{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"maps",new Map);y(this,"showId");y(this,"color");y(this,"timer");y(this,"updateMiniMapCamera",j.debounce(async s=>{const e=this.maps.get(s);if(e){const t=await this.getMiniMapCamera(s);if(t){const i=t.width/t.scale,o=t.height/t.scale,n=e.miniMapCamera.width/e.miniMapCamera.scale,r=e.miniMapCamera.height/e.miniMapCamera.scale;(i>=n||o>=r)&&(e.miniMapCamera=t);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const u=this.control.viewContainerManager.getView(s);if(!(u!=null&&u.focusScenePath))return;const{miniMapCamera:h,contianer:d}=e,{width:f,height:g}=d.getBoundingClientRect(),p=Math.min(f/h.width,g/h.height);l.clearRect(0,0,c.width,c.height),c.width=h.width,c.height=h.height,c.style.width=`${h.width*p}px`,c.style.height=`${h.height*p}px`,await this.control.screenshotToCanvas(l,u.focusScenePath,h.width,h.height,h),this.listener.emitAsync([s,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var i;const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t,this.color=((i=this.control.worker.currentToolsData)==null?void 0:i.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(s){this.color=s}async createMiniMap(s,e,t){const i=this.control.viewContainerManager.getView(s);if(!i)throw new Error("view not found");const o=i.cameraOpt;if(!o)throw new Error("view camera not found");const{width:n,height:r}=e.getBoundingClientRect();if(!n||!r)throw new Error("contianer width or height is 0");const c=M.createRef();this.maps.set(s,{contianer:e,miniMapCanvas:c,miniMapCamera:t,viewCamera:o}),this.showId=s,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(n/t.width,r/t.height),u=await new Promise(h=>{this.listener.once([s,"miniMapCreate"],()=>{const d=c.current;d&&(d.width=t.width,d.height=t.height,d.style.width=`${t.width*l}px`,d.style.height=`${t.height*l}px`),h(!0)}),this.timer=setTimeout(()=>{h(!1)},2e3)});return this.timer&&clearTimeout(this.timer),u}async getMiniMapCamera(s){const e=this.control.viewContainerManager.getView(s);if(!e)return;const{cameraOpt:t,focusScenePath:i}=e;if(!t||!i)return;const o={originX:t.centerX-t.width/t.scale/2,originY:t.centerY-t.height/t.scale/2,width:t.width/t.scale,height:t.height/t.scale};let n=await this.control.getBoundingRect(i)||o;n=ii(n,o)||o;let r=n.width,c=n.height,l=1;const u=r>t.width&&Math.min(t.width/r,l)||l,h=c>t.height&&Math.min(t.height/c,l)||l;return u<=h?(r=u<1&&t.width||r,c=Math.floor(c*u)+1,l=u):u>h&&(c=h<1&&t.height||c,r=Math.floor(r*h)+1,l=h),{scale:l,centerX:n.originX+n.width/2,centerY:n.originY+n.height/2,width:r,height:c}}getMiniMapCanvas(s){const e=this.maps.get(s);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(s,e){const t=this.maps.get(s);t&&(t.viewCamera=e,this.listener.emitAsync([s,"viewCameraUpate"],1))}destroyMiniMap(s){const e=s||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}class en{constructor(){y(this,"control");y(this,"_listeners",{})}_inject(s){this.control=s}_onEvent(s,e){this._listeners[s]&&this._listeners[s](...e)}callbacks(s,e){this._listeners[s]=e}removeCallback(s){delete this._listeners[s]}}class JM{constructor(s){y(this,"control");y(this,"worker");y(this,"publicMsgEmitter");y(this,"plugins",new Map);const{control:e,publicMsgEmitter:t}=s;this.control=e,this.publicMsgEmitter=t,this.worker=e.worker}use(s){this.plugins.set(s.kind,s),s._inject(this.control),s.onCreate()}destroy(){this.plugins.forEach(s=>{this.plugins.delete(s.kind),s.onDestroy()})}dispatchPluginEvent(s,...e){this.plugins.forEach(t=>{t._onEvent(s,e)})}}const lt=class lt{constructor(s){y(this,"version",Do);y(this,"plugin");y(this,"room");y(this,"play");y(this,"collector");y(this,"hasSwitchToSelectorEffect");y(this,"snapshootStateMap");y(this,"_disableDeviceInputs");y(this,"_disableEraseImage");y(this,"_disableEraseText");y(this,"priority","cpu");y(this,"effectResolve");y(this,"hotkeyManager");y(this,"pluginOptions");y(this,"roomMember");y(this,"cursor");y(this,"textEditorManager");y(this,"worker");y(this,"renderControl");y(this,"miniMapManager");y(this,"pluginManager");y(this,"onSceneChange",async(s,e)=>{var n;const t=this.viewContainerManager.getView(e);t!=null&&t.focusScenePath&&(n=this.collector)!=null&&n.hasSelector(e,t.focusScenePath)&&this.worker.blurSelector(e,t.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const i=t==null?void 0:t.displayer;i&&(i.setActive(!1),await i.stopEventHandler());const o=s;o&&this.viewContainerManager.setViewScenePath(e,o),i==null||i.setActive(!0)});y(this,"onRoomMembersChange",s=>{this.roomMember.setRoomMembers(X.toJS(s))});y(this,"onMemberChange",Ms(s=>{var n;if(!this.room||!this.worker||!s||!this.room.isWritable)return;const e=this.getToolsKey(s),t=(n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType,i=this.viewContainerManager.focuedViewId;i&&t===T.Selector&&e!==T.Selector&&this.worker.blurCursor(i);const o=this.getToolsOpt(e,s);this.worker.setCurrentToolsData(o),this.pluginManager.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));y(this,"internalSceneChange",(s,e)=>{var i;this.miniMapManager.activeViewId===s&&this.miniMapManager.destroyMiniMap(s),this.pluginManager.dispatchPluginEvent("sceneChange",s,e),(i=this.worker)==null||i.clearViewScenePath(s,!0).then(()=>{var o;(o=this.worker)==null||o.pullServiceData(s,e,{isAsync:!0,useAnimation:!1})})});y(this,"internalCameraChange",(s,e)=>{var t;(t=this.worker)==null||t.updateCamera(s,e),this.miniMapManager.updateViewCamera(s,e)});const{displayer:e,plugin:t,options:i}=s;this.plugin=t,this.room=X.isRoom(e)?e:void 0,this.play=X.isPlayer(e)?e:void 0,this.room&&(this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1),this.pluginOptions=i,this.roomMember=new bM;const o={control:this,internalMsgEmitter:lt.InternalMsgEmitter,publicMsgEmitter:lt.PublicMsgEmitter};this.cursor=new LM(o),this.textEditorManager=new xM(o),this.worker=new GM(o),this.hotkeyManager=new ZM(o),this.renderControl=new qM(o),this.miniMapManager=new XM(o),this.pluginManager=new JM(o)}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(s){this._disableEraseText=s}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(s){this._disableEraseImage=s}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(s){var t;this._disableDeviceInputs=s;const e=(t=this.worker.getCurrentToolsData())==null?void 0:t.toolsType;e&&this.effectViewContainer(e)}setPriority(s){var e;this.priority=s,this.hasOffscreenCanvas()&&((e=this.worker)==null||e.setPriority(s))}hasOffscreenCanvas(){return Ks==="worker"}bindPlugin(s){var e,t;this.plugin=s,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new Es(this,s,(t=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:t.interval),this.activePlugin()}destroy(){var s,e,t,i,o,n;this.roomMember.destroy(),(s=this.collector)==null||s.destroy(),(e=this.worker)==null||e.destroy(),(t=this.viewContainerManager)==null||t.destroy(),(i=this.cursor)==null||i.destroy(),(o=this.textEditorManager)==null||o.destory(),(n=this.pluginManager)==null||n.destroy()}cleanCurrentScene(){const s=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(lt.InternalMsgEmitter.emit("addUndoTicker",s,e),this.worker.clearViewScenePath(e,!1,!0))}async setWritable(s){var e;if(!s){this.textEditorManager.checkEmptyTextBlur();const t=this.viewContainerManager.getAllViews();for(const i of t){i!=null&&i.focusScenePath&&(e=this.collector)!=null&&e.hasSelector(i.id,i.focusScenePath)&&this.worker.blurSelector(i.id,i.focusScenePath);const o=i==null?void 0:i.displayer;o&&o.getActive()&&(o.setActive(!1),await o.stopEventHandler())}}await new Promise(t=>{setTimeout(()=>{t()},500)})}onWritableChange(s){var t,i;s?(i=this.worker)==null||i.abled():(t=this.worker)==null||t.unWritable(),this.renderControl.onWritableChange(s),this.viewContainerManager.getAllViews().forEach(o=>{const n=o==null?void 0:o.displayer;n&&(n.bindToolsClass(),s?n.setActive(!0):n.setActive(!1))})}getToolsKey(s){var t;const e=s.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case re.text:return s.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Text;case re.pencil:return s.useLaserPen?T.LaserPen:T.Pencil;case re.eraser:return T.Eraser;case re.pencilEraser:return((t=this.pluginOptions.pencilEraser)==null?void 0:t.useBitMap)===!1?T.PencilEraser:T.BitMapEraser;case re.selector:return T.Selector;case re.arrow:return s.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Arrow;case re.straight:return s.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Straight;case re.ellipse:return s.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Ellipse;case re.rectangle:return s.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Rectangle;case re.shape:if(s.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),s.shapeType===He.Pentagram||s.shapeType===He.Star)return T.Star;if(s.shapeType===He.Polygon||s.shapeType===He.Triangle||s.shapeType===He.Rhombus)return T.Polygon;if(s.shapeType===He.SpeechBalloon)return T.SpeechBalloon;break}return T.Clicker}getToolsOpt(s,e){if(s===T.Clicker)return{toolsType:s,toolsOpt:{}};const t={strokeColor:jt(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(s){case T.Text:t.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),t.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),t.textAlign=(e==null?void 0:e.textAlign)||"left",t.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",t.fontColor=(e==null?void 0:e.textColor)&&jt(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||t.strokeColor||"rgba(0,0,0,1)",t.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&jt(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",t.bold=(e==null?void 0:e.bold)&&"bold"||void 0,t.italic=(e==null?void 0:e.italic)&&"italic"||void 0,t.underline=(e==null?void 0:e.underline)||void 0,t.lineThrough=(e==null?void 0:e.lineThrough)||void 0,t.text="",t.strokeColor=void 0;break;case T.Pencil:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal;break;case T.PencilEraser:case T.BitMapEraser:case T.Eraser:t.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1;break;case T.LaserPen:t.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===te.Stroke?t.strokeType=te.Normal:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal;break;case T.Arrow:case T.Straight:e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===te.Stroke?t.strokeType=te.Normal:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal;break;case T.Ellipse:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===te.Stroke?t.strokeType=te.Normal:t.strokeType=(e==null?void 0:e.strokeType)||te.Normal,s===T.Star&&(e.shapeType===He.Pentagram?(t.vertices=10,t.innerVerticeStep=2,t.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(t.vertices=e.vertices,t.innerVerticeStep=e.innerVerticeStep,t.innerRatio=e.innerRatio)),s===T.Polygon&&(e.shapeType===He.Triangle?t.vertices=3:e.shapeType===He.Rhombus?t.vertices=4:e.vertices&&(t.vertices=e.vertices)),t.fillColor=(e==null?void 0:e.fillColor)&&jt(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",s===T.SpeechBalloon&&(t.placement=e.placement||"bottomLeft");break}return{toolsType:s,toolsOpt:t}}effectViewContainer(s){var e,t,i,o,n,r,c;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.unWritable(),(t=this.cursor)==null||t.unabled();else switch(s){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Triangle:case T.Rhombus:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:this.room.disableDeviceInputs=!0,(i=this.worker)==null||i.abled();break;case T.Selector:this.room.disableDeviceInputs=!1,(o=this.cursor)==null||o.unabled(),(n=this.worker)==null||n.abled();break;default:this.room.disableDeviceInputs=!1,(r=this.worker)==null||r.unWritable(),(c=this.cursor)==null||c.unabled();break}setTimeout(()=>{this.viewContainerManager.getAllViews().forEach(u=>{u!=null&&u.displayer&&u.displayer.bindToolsClass()})},0)}async getBoundingRect(s){var t,i,o,n,r;const e=await((t=this.worker)==null?void 0:t.getBoundingRect(s));if(e){const c=((o=(i=this.viewContainerManager.mainView)==null?void 0:i.viewData)==null?void 0:o.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((r=(n=this.viewContainerManager.mainView)==null?void 0:n.viewData)==null?void 0:r.camera.scale)||1;return{width:Math.floor(e.w/l)+1,height:Math.floor(e.h/l)+1,originX:c.x,originY:c.y}}}async screenshotToCanvas(s,e,t,i,o,n,r){const c=await this.worker.getSnapshot(e,t,i,o);c&&(s.drawImage(c,n||0,r||0),c.close())}async scenePreview(s,e){var n,r,c,l;const t=(n=this.collector)==null?void 0:n.getViewIdBySecenPath(s);if(!t)return;const i=this.viewContainerManager.getView(t);if(!i||!((r=i.cameraOpt)!=null&&r.width)||!((c=i.cameraOpt)!=null&&c.height))return;const o=await((l=this.worker)==null?void 0:l.getSnapshot(s));if(o&&this.worker){const u=document.createElement("canvas"),h=u.getContext("2d"),{width:d,height:f}=i.cameraOpt;u.width=d,u.height=f,h&&(h.drawImage(o,0,0),e.crossOrigin="anonymous",e.src=u.toDataURL(),e.onload=()=>{u.remove()},e.onerror=()=>{u.remove(),e.remove()}),o.close()}}switchToText(){var s;(s=this.room)==null||s.setMemberState({currentApplianceName:re.text})}switchToSelector(){var s;(s=this.room)==null||s.setMemberState({currentApplianceName:re.selector})}async runEffectWork(s){if(this.hasSwitchToSelectorEffect){const e=await new Promise(t=>{this.switchToSelector(),this.effectResolve=t});this.effectResolve=void 0,e&&s&&s()}}setSnapshootData(){var s;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(s=this.room)==null?void 0:s.state.memberState))}getSnapshootData(s){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(s)}clearSnapshootData(){var s;(s=this.snapshootStateMap)==null||s.clear(),this.snapshootStateMap=void 0}useBitMapEraser(s){var e;if(((e=this.pluginOptions.pencilEraser)==null?void 0:e.useBitMap)===void 0){this.pluginOptions.pencilEraser={useBitMap:s,maxImageWidth:Se.pencilEraser.maxImageWidth,maxImageHeight:Se.pencilEraser.maxImageHeight};return}this.pluginOptions.pencilEraser.useBitMap=s}consoleWorkerInfo(){var s;(s=this.worker)==null||s.consoleWorkerInfo()}filterRenderByUid(s,e,t=!0){var o;this.viewContainerManager.getView(s)&&((o=this.renderControl)==null||o.publishRender({viewId:s,option:e,isSync:t}))}cancelFilterRender(s,e=!0){var t;(t=this.renderControl)==null||t.publishRender({viewId:s,isSync:e})}async createMiniMap(s,e){const t=await this.miniMapManager.getMiniMapCamera(s);if(t&&await this.miniMapManager.createMiniMap(s,e,t)){const o=this.miniMapManager.getMiniMapCanvas(s);if(o){const n=o.getContext("2d");if(n){const r=this.viewContainerManager.getView(s);r!=null&&r.focusScenePath&&this.screenshotToCanvas(n,r.focusScenePath,t.width,t.height,t)}}}}async destroyMiniMap(s){this.miniMapManager.destroyMiniMap(s)}insertIconify(s,e){var i;if(this.viewContainerManager.getView(s)&&this.room){const o=this.room.state.memberState,n=jt(o.strokeColor[0],o.strokeColor[1],o.strokeColor[2],o.strokeOpacity||1);(i=this.worker)==null||i.insertIconify(s,{...e,strokeColor:n})}}usePlugin(s){return this.pluginManager.use(s)}};y(lt,"InternalMsgEmitter",new bs),y(lt,"PublicMsgEmitter",new bs);let Te=lt;const ht=class ht{constructor(s){y(this,"emitter",new bs);y(this,"undoStack");y(this,"redoStack");y(this,"worker");y(this,"control");y(this,"room");y(this,"isTicking");y(this,"undoTickerId");y(this,"viewId");y(this,"scenePath");y(this,"tickStartStorerCache");y(this,"excludeIds",new Set);y(this,"onChangeScene",j.debounce(()=>{const s=this.control.viewContainerManager.getCurScenePath(this.viewId);if(s){let e=this.undoStack.filter(i=>i.scenePath===s).length;const t=this.redoStack.filter(i=>i.scenePath===s).length;e===0&&t===0&&this.tickStartStorerCache&&this.scenePath===s&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",t)}},ht.waitTime));const{control:e,internalMsgEmitter:t,viewId:i}=s;this.control=e,this.emitter=t,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=i}get collector(){return this.control.collector}addExcludeIds(s){if(this.isTicking)for(const e of s)this.excludeIds.add(e)}undoTickerStart(s,e){var t,i;if(this.collector&&(this.undoTickerId!==s||this.scenePath!==e)){!this.undoTickerId&&!this.tickStartStorerCache&&!this.scenePath&&this.emitter.emit("onCanUndoStepsUpdate",1),this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const o=this.collector.transformKey(Q);this.excludeIds.add(o),this.undoTickerId=s,this.scenePath=e;const n=((t=this.collector)==null?void 0:t.storage[this.viewId])&&((i=this.collector)==null?void 0:i.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(j.cloneDeep(n)))}}undoTickerEndSync(s,e,t){var i,o;if(s===this.undoTickerId&&t===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const n=((i=this.collector)==null?void 0:i.storage[e])&&((o=this.collector)==null?void 0:o.storage[e][t])||{},r=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(n)));r.size&&(this.undoStack.push({id:s,type:2,data:j.cloneDeep(r),scenePath:t}),this.undoStack.length>ht.MaxStackLength&&this.undoStack.shift(),this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)),this.redoStack.length&&(this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.undoTickerId=void 0,this.excludeIds.clear()}}undo(s){this.undoTickerId&&this.tickStartStorerCache&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath);let e=this.undoStack.length-1;for(;e>=0;){if(this.undoStack[e].scenePath===s){const n=this.undoStack[e];n&&(this.redoStack.push(n),n.type===2&&n.data&&this.refreshPlugin(n)),this.undoStack.splice(e,1);break}e--}const t=this.undoStack.filter(o=>o.scenePath===s).length,i=this.redoStack.filter(o=>o.scenePath===s).length;return this.emitter.emit("onCanUndoStepsUpdate",t),this.emitter.emit("onCanRedoStepsUpdate",i),t}redo(s){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===s){const n=this.redoStack[e];n&&(!this.undoTickerId&&n.tickStartStorerCache?(this.undoTickerId=n.id,this.tickStartStorerCache=n.tickStartStorerCache,this.scenePath=n.scenePath):this.undoStack.push(n),n.type===2&&n.data&&this.refreshPlugin(n,!0)),this.redoStack.splice(e,1);break}e--}const t=this.undoStack.filter(o=>o.scenePath===s).length,i=this.redoStack.filter(o=>o.scenePath===s).length;return this.emitter.emit("onCanUndoStepsUpdate",t),this.emitter.emit("onCanRedoStepsUpdate",i),i}clear(){this.clearUndo(),this.clearRedo()}clearUndo(){this.undoStack.length=0,this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){const s=this.control.viewContainerManager.getCurScenePath(this.viewId);if(s){let e=this.undoStack.filter(i=>i.scenePath===s).length;const t=this.redoStack.filter(i=>i.scenePath===s).length;e===0&&t===0&&this.tickStartStorerCache&&this.scenePath===s&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",t)}}diffFun(s,e){const t=new Set,i=s.keys(),o=e.keys();for(const n of i){if(this.excludeIds.has(n))continue;const r=s.get(n),c=e.get(n);if(r&&c){if(j.isEqual(c,r))continue;t.add({dataType:3,key:n,data:[r,c]});continue}r&&t.add({dataType:2,key:n,data:r})}for(const n of o){if(this.excludeIds.has(n))continue;const r=e.get(n);r&&!s.has(n)&&t.add({dataType:1,key:n,data:r})}return t}isDrawEffectiveScene(s,e){const{key:t}=s;return!e.includes(t)}isDeleteEffectiveScene(s,e,t){var n;const{key:i}=s;if(!e.includes(i))return!1;const o=e.filter(r=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(r))===Q&&!((l=this.collector)!=null&&l.isOwn(r))}).map(r=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][t][r]});for(const r of o)if((n=r==null?void 0:r.selectIds)!=null&&n.includes(i))return!1;return!0}isOldEffectiveScene(s,e,t){var n;const{key:i}=s;if(!e.includes(i))return!1;const o=e.filter(r=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(r))===Q&&!((l=this.collector)!=null&&l.isOwn(r))}).map(r=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][t][r]});for(const r of o)if((n=r==null?void 0:r.selectIds)!=null&&n.includes(i))return!1;return!0}isNewEffectiveScene(s,e){const{key:t}=s;return!!e.includes(t)}refreshPlugin(s,e=!1){var r,c,l,u,h,d,f,g,p,m,N,v,I,k,w,S,b,x,P,E,R;let t;const{scenePath:i}=s,o=s.data;if(!o||!this.collector)return;const n=j.cloneDeep(this.collector.storage);for(const O of o.values()){const{dataType:D,data:A,key:G}=O,ne=this.collector.getStorageData(this.viewId,i),q=ne&&Object.keys(ne)||[];switch(D){case 1:if(t=e?this.isDrawEffectiveScene(O,q):this.isDeleteEffectiveScene(O,q,i),t)if(e&&!Array.isArray(A)){if((r=A.updateNodeOpt)!=null&&r.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((c=this.collector)==null?void 0:c.getLocalId(G))===Q&&((l=this.collector)!=null&&l.isOwn(O.key))){const Z=A.selectIds;if(Z){const H=q.filter(ie=>{var K,ue;return((K=this.collector)==null?void 0:K.getLocalId(ie))===Q&&!((ue=this.collector)!=null&&ue.isOwn(ie))}).map(ie=>{var K;return(K=this.collector)==null?void 0:K.storage[this.viewId][i][ie]});let _=!1;for(const ie of H)for(let K=0;K<Z.length;K++)(u=ie==null?void 0:ie.selectIds)!=null&&u.includes(Z[K])&&(delete Z[K],_=!0);_&&(A.selectIds=Z.filter(ie=>!!ie))}}(h=this.collector)==null||h.updateValue(O.key,A,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}else!e&&!Array.isArray(O.data)&&((d=this.collector)==null||d.updateValue(O.key,void 0,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n}));break;case 2:if(t=e?this.isDeleteEffectiveScene(O,q,i):this.isDrawEffectiveScene(O,q),t){if(e&&!Array.isArray(A))(f=this.collector)==null||f.updateValue(G,void 0,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n});else if(!e&&!Array.isArray(A)){if((g=A.updateNodeOpt)!=null&&g.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((p=this.collector)==null?void 0:p.getLocalId(O.key))===Q&&((m=this.collector)!=null&&m.isOwn(O.key))){const Z=A.selectIds;if(Z){const H=q.filter(ie=>{var K,ue;return((K=this.collector)==null?void 0:K.getLocalId(ie))===Q&&!((ue=this.collector)!=null&&ue.isOwn(ie))}).map(ie=>{var K;return(K=this.collector)==null?void 0:K.storage[this.viewId][i][ie]});let _=!1;for(const ie of H)for(let K=0;K<Z.length;K++)(N=ie==null?void 0:ie.selectIds)!=null&&N.includes(Z[K])&&(delete Z[K],_=!0);_&&(A.selectIds=Z.filter(ie=>!!ie))}}(v=this.collector)==null||v.updateValue(O.key,O.data,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}}break;case 3:if(t=e?this.isNewEffectiveScene(O,q):this.isOldEffectiveScene(O,q,i),t){if(e&&Array.isArray(A)&&A.length===2){const Z=A[1];if((I=Z.updateNodeOpt)!=null&&I.useAnimation&&(Z.updateNodeOpt.useAnimation=!1),((k=this.collector)==null?void 0:k.getLocalId(O.key))===Q&&((w=this.collector)!=null&&w.isOwn(O.key))){const H=Z.selectIds;if(H){const _=q.filter(K=>{var ue,ee;return((ue=this.collector)==null?void 0:ue.getLocalId(K))===Q&&!((ee=this.collector)!=null&&ee.isOwn(K))}).map(K=>{var ue;return(ue=this.collector)==null?void 0:ue.storage[this.viewId][i][K]});let ie=!1;for(const K of _)for(let ue=0;ue<H.length;ue++)K!=null&&K.selectIds&&((S=K.selectIds)!=null&&S.includes(H[ue]))&&(delete H[ue],ie=!0);ie&&(Z.selectIds=H.filter(K=>!!K))}}(b=this.collector)==null||b.updateValue(G,Z,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}else if(!e&&Array.isArray(A)&&A.length===2){const Z=A[0];if((x=Z.updateNodeOpt)!=null&&x.useAnimation&&(Z.updateNodeOpt.useAnimation=!1),((P=this.collector)==null?void 0:P.getLocalId(O.key))===Q&&((E=this.collector)!=null&&E.isOwn(O.key))){const H=Z.selectIds;if(H){const _=q.filter(K=>{var ue,ee;return((ue=this.collector)==null?void 0:ue.getLocalId(K))===Q&&!((ee=this.collector)!=null&&ee.isOwn(K))}).map(K=>{var ue;return(ue=this.collector)==null?void 0:ue.storage[this.viewId][i][K]});let ie=!1;for(const K of _)for(let ue=0;ue<H.length;ue++)K!=null&&K.selectIds&&K.selectIds.includes(H[ue])&&(delete H[ue],ie=!0);ie&&(Z.selectIds=H.filter(K=>!!K))}}(R=this.collector)==null||R.updateValue(O.key,Z,{viewId:this.viewId,scenePath:i,isSync:!0,storage:n})}}break}}}};y(ht,"sdkCallBack"),y(ht,"MaxStackLength",20),y(ht,"waitTime",100);let ns=ht;function KM(a){return a instanceof TouchEvent||a instanceof window.TouchEvent||(a==null?void 0:a.touches)&&(a==null?void 0:a.touches.length)||(a==null?void 0:a.changedTouches)&&(a==null?void 0:a.changedTouches.length)}function Nt(a){return KM(a)&&(a.touches&&a.touches.length===1||a.changedTouches&&a.changedTouches.length===1)}function tn(a){return a.touches&&a.touches.length?{x:a.touches[0].pageX,y:a.touches[0].pageY}:a.changedTouches&&a.changedTouches.length?{x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY}:{x:a.pageX,y:a.pageY}}class Tt{constructor(s){y(this,"internalMsgEmitter");y(this,"control");y(this,"mainView");y(this,"appViews",new Map);const{control:e,internalMsgEmitter:t}=s;this.control=e,this.internalMsgEmitter=t,this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart.bind(this)),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds.bind(this))}undoTickerStart(s,e){const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.undoTickerStart(s,t.focusScenePath)}addExcludeIds(s,e){const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.addExcludeIds(s)}undo(){const s=this.focuedView;let e=0;if(s){const t=s.focusScenePath;e=s.displayer.commiter.undo(t)||0}return e}redo(){const s=this.focuedView;let e=0;if(s){const t=s.focusScenePath;e=s.displayer.commiter.redo(t)||0}return e}validator(s,e,t){var n;const i=j.clone(s[e]),o=j.clone(t);e==="focusScenePath"&&t&&!j.isEqual(i,o)&&(this.control.internalSceneChange(s.id,o),(n=this.focuedView)==null||n.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!j.isEqual(i,o)&&this.control.internalCameraChange(s.id,o)}destroyAppView(s,e=!1){const t=this.appViews.get(s);t&&(this.control.textEditorManager.clear(s,e),t.displayer.destroy(),this.appViews.delete(s))}createMianView(s){this.mainView=new Proxy(s,{set:(e,t,i)=>(this.control.worker.isActive&&this.validator(e,t,i),e[t]=i,!0)})}createAppView(s){const e=s.id,t=new Proxy(s,{set:(i,o,n)=>(this.control.worker.isActive&&this.validator(i,o,n),i[o]=n,!0)});this.appViews.set(e,t)}isAppView(s){return s!==pe&&this.appViews.has(s)}getView(s){var e;return s===pe?this.mainView:(e=this.appViews)==null?void 0:e.get(s)}getCurScenePath(s){const e=this.getView(s);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(s,e){var t;if(s===pe&&this.mainView)this.mainView.focusScenePath=e;else{const i=s&&((t=this.appViews)==null?void 0:t.get(s))||void 0;i&&(i.focusScenePath=e)}}setViewData(s,e){var t;if(s===pe&&this.mainView)this.mainView.viewData=e;else{const i=s&&((t=this.appViews)==null?void 0:t.get(s))||void 0;i&&(i.viewData=e)}}setFocuedViewId(s){var e;this.focuedViewId=s,s===pe?this.focuedView=this.mainView:this.focuedView=s&&((e=this.appViews)==null?void 0:e.get(s))||void 0,this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(s,e){var i;let t;s===pe?t=this.mainView:t=(i=this.appViews)==null?void 0:i.get(s),t&&(t.focusScenePath=e)}destroy(){var s;this.internalMsgEmitter.removeAllListeners("addUndoTicker"),this.internalMsgEmitter.removeAllListeners("excludeIds"),(s=this.mainView)==null||s.displayer.destroy(),this.control.destroyMiniMap(pe),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.control.worker.destroyViewWorker(e.id),this.control.destroyMiniMap(e.id)})}setFocuedViewCameraOpt(s){if(this.focuedView){const e=this.focuedView.cameraOpt;j.isEqual(e,s)||(this.focuedView.cameraOpt=s)}}transformToOriginPoint(s,e){const t=this.getView(e);if(t!=null&&t.viewData){const i=t.viewData.convertToPointOnScreen(s[0],s[1]);return[i.x,i.y]}return s}transformToScenePoint(s,e){const t=this.getView(e);if(t!=null&&t.viewData){const i=t.viewData.convertToPointInWorld({x:s[0],y:s[1]});return[i.x,i.y]}return s}render(s){var e,t,i,o,n,r,c,l,u,h,d,f,g,p,m,N,v;for(const I of s){const{rect:k,imageBitmap:w,isClear:S,isUnClose:b,drawCanvas:x,clearCanvas:P,viewId:E}=I,R=(e=this.getView(E))==null?void 0:e.displayer;if(R&&k){const{dpr:O,canvasBgRef:D,canvasFloatRef:A,canvasServiceFloatRef:G,canvasTopRef:ne}=R,q=Math.floor(k.w*O),Z=Math.floor(k.h*O),H=k.x*O,_=k.y*O;if(S){switch(P){case Me.TopFloat:(i=(t=ne.current)==null?void 0:t.getContext("2d"))==null||i.clearRect(H,_,q,Z);break;case Me.Float:(n=(o=A.current)==null?void 0:o.getContext("2d"))==null||n.clearRect(H,_,q,Z);break;case Me.ServiceFloat:(c=(r=G.current)==null?void 0:r.getContext("2d"))==null||c.clearRect(H,_,q,Z);break;case Me.Bg:(u=(l=D.current)==null?void 0:l.getContext("2d"))==null||u.clearRect(H,_,q,Z);break}continue}if(x&&w)switch(x){case Me.TopFloat:(d=(h=ne.current)==null?void 0:h.getContext("2d"))==null||d.drawImage(w,0,0,q,Z,H,_,q,Z);break;case Me.Float:{(g=(f=A.current)==null?void 0:f.getContext("2d"))==null||g.drawImage(w,0,0,q,Z,H,_,q,Z);break}case Me.ServiceFloat:{(m=(p=G.current)==null?void 0:p.getContext("2d"))==null||m.drawImage(w,0,0,q,Z,H,_,q,Z);break}case Me.Bg:{(v=(N=D.current)==null?void 0:N.getContext("2d"))==null||v.drawImage(w,0,0,q,Z,H,_,q,Z);break}}if(b)continue;w==null||w.close()}}}showFloatBar(s,e,t){const i=this.getView(s),o=i==null?void 0:i.displayer.vDom;o&&o.showFloatBar(e,t)}setActiveTextEditor(s,e){const t=this.getView(s),i=t==null?void 0:t.displayer.vDom;i&&i.setActiveTextEditor(e)}setActiveMiniMap(s,e){const t=this.getView(s),i=t==null?void 0:t.displayer.vDom;i&&i.setActiveMiniMap(e&&s||void 0)}}y(Tt,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),y(Tt,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"webgl2"}),y(Tt,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class _M{constructor(s,e,t){y(this,"viewId");y(this,"control");y(this,"internalMsgEmitter");y(this,"commiter");y(this,"cachePoint");y(this,"cacheCursorPoint");y(this,"active",!0);y(this,"mousedown",s=>{if(this.active&&s.button===0&&this.viewId){this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Start,e,this.viewId)}});y(this,"mousemove",s=>{if(this.active&&this.viewId){const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)}});y(this,"mouseup",s=>{if(this.active&&s.button===0&&this.viewId){const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0}});y(this,"touchstart",s=>{var e;if(this.active){if(!Nt(s)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){if(!this.control.worker.isAbled()){const i=(e=this.control.worker.getCurrentToolsData())==null?void 0:e.toolsType;i&&this.control.effectViewContainer(i)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(s);this.cachePoint=t,t&&this.control.worker.originalEventLintener(z.Start,t,this.viewId)}}});y(this,"touchmove",s=>{if(this.active){if(!Nt(s)){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)}}});y(this,"touchend",s=>{if(this.active){if(!Nt(s)||!this.control.worker.isAbled()){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0}}});y(this,"cursorMouseMove",j.throttle(s=>{const e=this.getPoint(s);this.cacheCursorPoint&&j.isEqual(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));y(this,"cursorMouseLeave",j.throttle(()=>{this.viewId&&(this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId))},30,{leading:!1}));y(this,"keydown",s=>{this.control.hotkeyManager.colloctHotkey(s)});this.viewId=s,this.control=e,this.internalMsgEmitter=t;const i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new ns(i)}bindToolsClass(){var e,t;const s=(t=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:t.toolsType;switch(s){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${s===T.Text?"cursor-text":s===T.Eraser||s===T.PencilEraser||s===T.BitMapEraser?"cursor-eraser":s===T.Pencil||s===T.LaserPen?"cursor-pencil":"cursor-arrow"}`);break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}setViewId(s){this.viewId=s}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([se.Cursor,this.viewId])}getPoint(s){const e=tn(s);if(e&&j.isNumber(e.x)&&j.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}getActive(){this.active=!0}setActive(s){this.active=s}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(z.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(s){const t=(s.style.WebkitTransform||getComputedStyle(s,"").getPropertyValue("-webkit-transform")||s.style.transform||getComputedStyle(s,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),i=t&&parseInt(t[0])||0,o=t&&parseInt(t[1])||0;return[i,o]}getContainerOffset(s,e){var o;const t=this.getTranslate(s);let i={x:e.x+s.offsetLeft-s.scrollLeft+t[0],y:e.y+s.offsetTop-s.scrollTop+t[1]};return(o=s.offsetParent)!=null&&o.nodeName&&s.offsetParent.nodeName!=="BODY"&&(i=this.getContainerOffset(s.offsetParent,i)),i}bindDisplayerEvent(s){s.addEventListener("mousedown",this.mousedown,!1),s.addEventListener("touchstart",this.touchstart,!1),document.addEventListener("mouseleave",this.mouseup,!1),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1),document.addEventListener("touchmove",this.touchmove,!1),document.addEventListener("touchend",this.touchend,!1),s.addEventListener("mousemove",this.cursorMouseMove,!1),s.addEventListener("mouseleave",this.cursorMouseLeave,!1),s.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(s){s.removeEventListener("mousedown",this.mousedown,!1),s.removeEventListener("touchstart",this.touchstart,!1),document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),s.removeEventListener("mousemove",this.cursorMouseMove,!1),s.removeEventListener("mouseleave",this.cursorMouseLeave,!1),s.removeEventListener("keydown",this.keydown,!0)}}class sn{constructor(s,e){y(this,"viewId",pe);y(this,"control");y(this,"internalMsgEmitter");y(this,"commiter");y(this,"cachePoint");y(this,"cacheCursorPoint");y(this,"active",!0);y(this,"mousedown",s=>{if(this.active&&s.button===0){this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Start,e,this.viewId)}});y(this,"mousemove",s=>{if(!this.active)return;const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)});y(this,"mouseup",s=>{if(this.active&&s.button===0){const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0}});y(this,"touchstart",s=>{var t;if(!this.active)return;if(!Nt(s)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}if(!this.control.worker.isAbled()){const i=(t=this.control.worker.getCurrentToolsData())==null?void 0:t.toolsType;i&&this.control.effectViewContainer(i)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Start,e,this.viewId)});y(this,"touchmove",s=>{if(!this.active)return;if(!Nt(s)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(s);this.cachePoint=e,e&&this.control.worker.originalEventLintener(z.Doing,e,this.viewId)});y(this,"touchend",s=>{if(!this.active)return;if(!Nt(s)||!this.control.worker.isAbled()){this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(s)||this.cachePoint;e&&this.control.worker.originalEventLintener(z.Done,e,this.viewId),this.cachePoint=void 0});y(this,"cursorMouseMove",j.throttle(s=>{const e=this.getPoint(s);this.cacheCursorPoint&&j.isEqual(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));y(this,"cursorMouseLeave",j.throttle(()=>{this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)},30,{leading:!1}));y(this,"keydown",s=>{this.control.hotkeyManager.colloctHotkey(s)});this.control=s,this.internalMsgEmitter=e;const t={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new ns(t)}bindToolsClass(){var i,o;const s=(o=(i=this.control.worker)==null?void 0:i.currentToolsData)==null?void 0:o.toolsType,e=this.control.renderControl.isWritable,t=this.control.worker.isAbled();switch(s){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:this.eventTragetElement&&(this.eventTragetElement.className=e&&t?`netless-whiteboard ${s===T.Text?"cursor-text":s===T.Eraser||s===T.PencilEraser||s===T.BitMapEraser?"cursor-eraser":s===T.Pencil||s===T.LaserPen?"cursor-pencil":"cursor-arrow"}`:"netless-whiteboard");break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}updateSize(){this.setCanvassStyle()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.destroy(),this.internalMsgEmitter.removeAllListeners([se.Cursor,this.viewId])}getPoint(s){const e=tn(s);if(e&&j.isNumber(e.x)&&j.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}getActive(){return this.active}setActive(s){this.active=s}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(z.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(s){const t=(s.style.WebkitTransform||getComputedStyle(s,"").getPropertyValue("-webkit-transform")||s.style.transform||getComputedStyle(s,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),i=t&&parseInt(t[0])||0,o=t&&parseInt(t[1])||0;return[i,o]}getContainerOffset(s,e){var o;const t=this.getTranslate(s);let i={x:e.x+s.offsetLeft-s.scrollLeft+t[0],y:e.y+s.offsetTop-s.scrollTop+t[1]};return(o=s.offsetParent)!=null&&o.nodeName&&s.offsetParent.nodeName!=="BODY"&&(i=this.getContainerOffset(s.offsetParent,i)),i}bindDisplayerEvent(s){s.addEventListener("mousedown",this.mousedown,!1),document.addEventListener("mouseleave",this.mouseup,!1),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1),s.addEventListener("touchstart",this.touchstart,!1),document.addEventListener("touchmove",this.touchmove,!1),document.addEventListener("touchend",this.touchend,!1),s.addEventListener("mousemove",this.cursorMouseMove,!1),s.addEventListener("mouseleave",this.cursorMouseLeave,!1),s.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(s){s.removeEventListener("mousedown",this.mousedown,!1),document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),s.removeEventListener("touchstart",this.touchstart,!1),document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),s.removeEventListener("mousemove",this.cursorMouseMove,!1),s.removeEventListener("mouseleave",this.cursorMouseLeave,!1),s.removeEventListener("keydown",this.keydown,!0)}}const em="index-module__Container__nLsM3",tm="index-module__CanvasBox__j2Xe-",sm="index-module__FloatCanvas__d1YR7",im="index-module__TopFloatCanvas__7IaCw",om="index-module__CanvasBoxSub__hcMeK",nm="index-module__SnapshotBox__--eeE",rm="index-module__FloatBar__cm-EL",am="index-module__RotateBtn__HSSkf",cm="index-module__ResizeBtn__yjvda",lm="index-module__CursorBox__2UHvI",hm="index-module__TextEditorContainer__Qm8KC",um="index-module__ResizeTowBox__HOllX",dm="index-module__FloatBarBtn__FJrOG",Pe={Container:em,CanvasBox:tm,FloatCanvas:sm,TopFloatCanvas:im,CanvasBoxSub:om,SnapshotBox:nm,FloatBar:rm,RotateBtn:am,ResizeBtn:cm,CursorBox:lm,TextEditorContainer:hm,ResizeTowBox:um,FloatBarBtn:dm},pm={delete:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDZ2NmEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2aDBtMS0yYTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAyaDBNMyA0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",duplicate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMSAySDZhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRoMGwtMi0yeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTExIDJ2MWExIDEgMCAwIDAgMSAxaDFsLTItMnoiLz48cGF0aCBkPSJNOSAxNEg0YTEgMSAwIDAgMS0xLTFWNWgwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L2c+PC9zdmc+","layer-pressed":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzMzODFGRiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",layer:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",rotate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEzIDZhNiA2IDAgMSAxLTMuNzA5IDEuMjgzIi8+PHBhdGggZD0ibTEzIDYgMS40MTQgMi40NUwxMyA2bDIuNDUtMS40MTQiLz48L2c+PC9zdmc+","rotation-button":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+",rotation:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZGIiBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+","font-colors-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","font-colors":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","to-bottom":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDEwdjhtMCAwLTItMm0yIDIgMi0ybS00IDZoMTJtLTYtNGg2bS02LTRoNm0tNi00aDYiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+","to-top":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIydi04bTAgMC0yIDJtMi0yIDIgMm0tNC02aDEybS02IDRoNm0tNiA0aDZtLTYgNGg2IiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","bold-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",bold:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","underline-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",underline:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","italic-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",italic:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","unlock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiMzMzgxRkYiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0xYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDN2MyIgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+","lock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiM0NDRFNjAiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0zYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDV2MyIgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+",shapes:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","shapes-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","font-style-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","font-style":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",polygon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==","polygon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","polygon-vertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTA3NyAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU0My40NzQ1MjYgNDIuMzA3MzY4YTExOS4zNzY4NDIgMTE5LjM3Njg0MiAwIDAgMSAxMTAuODA3NTc5IDE2My44NGwxOTAuNTcxNzkgMTM4LjYxNzI2NGExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEgODMuMzc1MTU4IDIxOC43MDQ4NDJsLTc0LjMyMDg0MiAyMjguODM3MDUyYTExOS4zMjI5NDcgMTE5LjMyMjk0NyAwIDAgMS02MS4yNzgzMTYgMjIxLjg4NDYzMmMtNDYuNzgwNjMyIDAtODcuMzA5NDc0LTI2Ljk0NzM2OC0xMDYuODczMjYzLTY2LjEyODg0MmgtMjg5LjQxNDczN2ExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEtMTc5LjczODk0OC0xNDcuODMzMjYzbC03Mi4yNzI4NDItMjIyLjY5MzA1My0zLjM5NTM2OCAwLjEwNzc4OUExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAwIDEgMjEuODI3MzY4IDQ2Ni43Mjg0MjFMMjEuNTU3ODk1IDQ1OC4yMTMwNTNhMTE5LjM3Njg0MiAxMTkuMzc2ODQyIDAgMCAxIDE4My44MzQ5NDctMTAwLjUxMzY4NWwyMjMuNTAxNDc0LTE2Mi4zODQ4NDJhMTE5LjQzMDczNyAxMTkuNDMwNzM3IDAgMCAxIDExNC41ODAyMS0xNTMuMDYxMDUyek0yODkuNDE0NzM3IDg0MC4wNTcyNjNhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6IG01MDMuMTYxMjYzIDBhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6TTQ2Mi42ODYzMTYgMjQ5LjU4NjUyNkwyNDguMTMxMzY4IDQwNS41NTc4OTVhMTE5LjMyMjk0NyAxMTkuMzIyOTQ3IDAgMCAxLTQyLjg0NjMxNSAxNTMuMjIyNzM3bDcwLjcwOTg5NCAyMTcuMzU3NDczYTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMSAxMzIuNDE5MzY5IDEwOC4yMjA2MzJINjczLjY4NDIxMWExMTkuNDMwNzM3IDExOS40MzA3MzcgMCAwIDEgMTE5LjE2MTI2My0xMDguOTc1MTU4bDcxLjE0MTA1Mi0yMTguOTc0MzE2YTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMS02Mi4wODY3MzctMTY0LjIxNzI2M2wtMTg2LjM2OC0xMzUuMjc1Nzg5Yy0xOS45OTQ5NDcgMTUuMDkwNTI2LTQ1LjAwMjEwNSAyNC4xNDQ4NDItNzIuMDU3MjYzIDI0LjE0NDg0MmExMTguOTQ1Njg0IDExOC45NDU2ODQgMCAwIDEtODAuNzg4MjEtMzEuNDc0NTI3eiBtLTMyMS43NTE1NzkgMTUzLjkyMzM2OWE1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQwNjMxNiA1NC43MDMxNTggNTQuNzAzMTU4IDAgMCAwIDAtMTA5LjQwNjMxNnogbTc2Ny43MzA1MjYtMTIuNTU3NDc0YTU0LjcwMzE1OCA1NC43MDMxNTggMCAxIDAgMCAxMDkuNDA2MzE2IDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE2eiBtLTM2NS4xOTA3MzctMjg0LjAyNTI2M2E1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQ2MDIxIDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE1eiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",star:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","star-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","star-innerVertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTg1LjMzMzMzMyAwYTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODEuNDA4IDU5LjczMzMzM2g0OC4yMTMzMzR2ODUuMzMzMzM0TDE3MC42NjY2NjcgMTQ0Ljk4MTMzM1Y4NTMuMzMzMzMzaDY5My4zMzMzMzNsLTI2LjQ1MzMzMy02My40ODggNzguNzYyNjY2LTMyLjc2OCAzMi44NTMzMzQgNzguNzYyNjY3LTQyLjI0IDE3LjQ5MzMzM0g5MzguNjY2NjY3YTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODQuNzM2IDc1LjM0OTMzNEwxMDI0IDkzOC42NjY2NjdhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS0xNzAuNjY2NjY3IDBIMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxLTg1LjMzMzMzNC04NS4zMzMzMzRWMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxIDAtMTcwLjY2NjY2N3ogbTc2NS4zNTQ2NjcgNTk5LjQ2NjY2N2wzMi44NTMzMzMgNzguNzYyNjY2LTc4Ljg0OCAzMi44NTMzMzQtMzIuNzY4LTc4Ljc2MjY2NyA3OC43NjI2NjctMzIuODUzMzMzeiBtLTY1LjcwNjY2Ny0xNTcuNTI1MzM0bDMyLjg1MzMzNCA3OC43NjI2NjctNzguNzYyNjY3IDMyLjg1MzMzMy0zMi43NjgtNzguNzYyNjY2IDc4Ljc2MjY2Ny0zMi44NTMzMzR6TTcxOS4zNiAyODQuNDE2bDMyLjg1MzMzMyA3OC43NjI2NjctNzguNzYyNjY2IDMyLjg1MzMzMy0zMi44NTMzMzQtNzguNzYyNjY3IDc4Ljc2MjY2Ny0zMi44NTMzMzN6IG0tNjUuNjIxMzMzLTE1Ny41MjUzMzNsMzIuODUzMzMzIDc4Ljc2MjY2Ni03OC43NjI2NjcgMzIuODUzMzM0LTMyLjg1MzMzMy03OC43NjI2NjcgNzguNzYyNjY3LTMyLjg1MzMzM3pNMzg1LjcwNjY2NyA1OS43MzMzMzN2ODUuMzMzMzM0aC04NS4zMzMzMzR2LTg1LjMzMzMzNGg4NS4zMzMzMzR6IG0xNzAuNjY2NjY2IDB2ODUuMzMzMzM0aC04NS4zMzMzMzN2LTg1LjMzMzMzNGg4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIiA+PC9wYXRoPjwvc3ZnPg==","star-innerRatio":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU2OS4zNDQgNDQ5LjUzNmwxNDYuOTQ0IDI4LjY3MiAxLjAyNC00LjYwOHY0LjYwOGgxLjAyNGM5LjcyOCAwIDE2Ljg5Ni03LjY4IDIwLjQ4LTE0Ljg0OGwxLjAyNC0yLjA0OHYtMi41NmMwLTUuNjMyIDAtMTEuMjY0LTUuMTItMTYuMzg0LTMuMDcyLTMuMDcyLTcuMTY4LTcuMTY4LTEyLjgtNy42OGwtMTI0LjkyOC0yNC4wNjRMNTQxLjY5NiAyODYuNzJjLTIuMDQ4LTQuNjA4LTYuNjU2LTguMTkyLTExLjc3Ni05LjcyOC01LjEyLTEuNTM2LTEwLjc1Mi0xLjUzNi0xNS4zNiAxLjAyNGwtMS41MzYgMC41MTItMS4wMjQgMS4wMjRjLTguMTkyIDguMTkyLTEwLjc1MiAxOS40NTYtNi42NTYgMjcuMTM2bDY0IDE0Mi44NDh6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PHBhdGggZD0iTTkzMS4zMjggNDAzLjQ1NmMtMTAuMjQtMzUuMzI4LTM4LjQtNjEuNDQtNzEuNjgtNjYuNTZsLTE4NC44MzItMzUuODQtODIuNDMyLTE4Mi43ODRjLTEyLjgtMzMuMjgtNDYuMDgtNTYuMzItODAuMzg0LTU2LjMyLTMzLjc5MiAwLTY0LjUxMiAyMC40OC03OS44NzIgNTMuNzZMMzQ5LjE4NCAyOTkuMDA4bC0xODQuMzIgMzUuMzI4Yy0zMy43OTIgNS4xMi02MS45NTIgMzEuMjMyLTcyLjE5MiA2Ni41Ni05LjcyOCAzNC4zMDQtMS4wMjQgNzIuMTkyIDIzLjA0IDk4LjgxNmwxMzEuNTg0IDEzMy42MzItMzUuODQgMTk2LjYwOGMtNS42MzIgMzQuODE2IDguNzA0IDcxLjY4IDM1Ljg0IDk0LjIwOCAxMy44MjQgMTEuMjY0IDM0LjMwNCAxOC40MzIgNTIuMjI0IDE4LjQzMiAxNi44OTYgMCAyOS42OTYtMy4wNzIgNDEuNDcyLTEwLjI0bDE2OC45Ni05MS4xMzYgMTY2LjkxMiA5MS4xMzYgMS4wMjQgMC41MTJjMTYuODk2IDYuNjU2IDI5LjY5NiA5LjcyOCA0MC40NDggOS43MjggMTQuMzM2IDAgMjcuNjQ4LTQuMDk2IDQwLjQ0OC03LjY4IDQuNjA4LTEuNTM2IDkuNzI4LTMuMDcyIDE0Ljg0OC00LjA5NmwyLjU2LTAuNTEyIDIuMDQ4LTEuNTM2YzI1LjA4OC0yMy4wNCAzNy44ODgtNTguODggMzIuNzY4LTkzLjY5NmwtMzMuMjgtMTk2LjYwOCAxMzEuNTg0LTEzNi4xOTJjMjQuMDY0LTI3LjY0OCAzMi4yNTYtNjIuOTc2IDIyLjAxNi05OC44MTZ6TTI3Ni45OTIgODM2LjA5Nmw0MS45ODQtMjMxLjkzNi0xNTcuMTg0LTE1OS4yMzJjLTUuNjMyLTUuNjMyLTguMTkyLTE3LjQwOC02LjY1Ni0yOS4xODQgMy41ODQtMTAuMjQgMTAuMjQtMTYuMzg0IDE5LjQ1Ni0xNy45MmwyMTguMTEyLTQxLjk4NCA5Ni4yNTYtMjE1LjU1MmMzLjA3Mi03LjE2OCAxMi44LTE0LjMzNiAyMC40OC0xNC4zMzZzMTcuNDA4IDcuMTY4IDIwLjQ4IDE0Ljg0OGw5OC4zMDQgMjE1LjA0IDIxOC4xMTIgNDEuOTg0YzcuMTY4IDEuNTM2IDE1LjM2IDcuMTY4IDE2Ljg5NiAxNi4zODR2My4wNzJjMi4wNDggMTEuNzc2LTAuNTEyIDIyLjUyOC02LjY1NiAzMC43Mkw2OTkuOTA0IDYwOS4yOGwzOS45MzYgMjMxLjQyNGMxLjUzNiAxMC43NTItMi4wNDggMjAuNDgtMTAuMjQgMjcuMTM2bC0xLjAyNCAwLjUxMmMtMi41NiAyLjU2LTYuNjU2IDQuMDk2LTExLjI2NCA0LjA5Ni0yLjA0OCAwLTcuMTY4LTEuNTM2LTExLjI2NC0zLjU4NGwtMTk3LjEyLTEwOC4wMzItMTk5LjE2OCAxMDIuOTEyYy00LjA5NiAyLjA0OC05LjIxNiAzLjU4NC0xMS43NzYgMy41ODQtNC42MDggMC04LjcwNC0xLjUzNi0xMS4yNjQtNC4wOTZsLTEuMDI0LTAuNTEyYy02LjY1Ni02LjE0NC0xMC43NTItMTYuMzg0LTguNzA0LTI2LjYyNHoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=",speechBallon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=","speechBallon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48L3N2Zz4=","speechBallon-placement":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU3NiAyMTMuMzMzMzMzbDIyLjYxMzMzMyAyMi42MTMzMzRhMzIgMzIgMCAwIDAgMC00NS4yMjY2NjdMNTc2IDIxMy4zMzMzMzN6IG0tNjIuNzItMTA3Ljk0NjY2NmEzMiAzMiAwIDEgMC00NS4yMjY2NjcgNDUuMjI2NjY2bDQ1LjIyNjY2Ny00NS4yMjY2NjZ6IG0tNDUuMjI2NjY3IDE3MC42NjY2NjZhMzIgMzIgMCAwIDAgNDUuMjI2NjY3IDQ1LjIyNjY2N2wtNDUuMjI2NjY3LTQ1LjIyNjY2N3pNNDQ4IDgxMC42NjY2NjdsLTIyLjYxMzMzMy0yMi42MTMzMzRhMzIgMzIgMCAwIDAgMCA0NS4yMjY2NjdsMjIuNjEzMzMzLTIyLjYxMzMzM3ogbTEwNy45NDY2NjctNjIuNzJhMzIgMzIgMCAxIDAtNDUuMjI2NjY3LTQ1LjIyNjY2N2w0NS4yMjY2NjcgNDUuMjI2NjY3eiBtLTQ1LjIyNjY2NyAxNzAuNjY2NjY2YTMyIDMyIDAgMSAwIDQ1LjIyNjY2Ny00NS4yMjY2NjZsLTQ1LjIyNjY2NyA0NS4yMjY2NjZ6TTgxMC42NjY2NjcgNTc2bC0yMi42MTMzMzQgMjIuNjEzMzMzYTMyIDMyIDAgMCAwIDQ1LjIyNjY2NyAwTDgxMC42NjY2NjcgNTc2eiBtMTA3Ljk0NjY2Ni02Mi43MmEzMiAzMiAwIDEgMC00NS4yMjY2NjYtNDUuMjI2NjY3bDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAtNDUuMjI2NjY3IDQ1LjIyNjY2N2w0NS4yMjY2NjctNDUuMjI2NjY3ek0yMTMuMzMzMzMzIDQ0OGwyMi42MTMzMzQtMjIuNjEzMzMzYTMyIDMyIDAgMCAwLTQ1LjIyNjY2NyAwbDIyLjYxMzMzMyAyMi42MTMzMzN6IG02Mi43MiAxMDcuOTQ2NjY3YTMyIDMyIDAgMCAwIDQ1LjIyNjY2Ny00NS4yMjY2NjdsLTQ1LjIyNjY2NyA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAgNDUuMjI2NjY2IDQ1LjIyNjY2N2wtNDUuMjI2NjY2LTQ1LjIyNjY2N3pNMzA5LjMzMzMzMyAyMTMuMzMzMzMzQTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMjM0LjY2NjY2NyAyODh2NjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDM3My4zMzMzMzMgMjEzLjMzMzMzM2gtNjR6TTIzNC42NjY2NjcgMjg4QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMTYwIDIxMy4zMzMzMzNoLTY0QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAyMzQuNjY2NjY3IDM1MnYtNjR6TTE2MCAyMTMuMzMzMzMzYzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2NnYtNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDk2IDIxMy4zMzMzMzNoNjR6TTIzNC42NjY2NjcgMTM4LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NiA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIzNC42NjY2NjcgNzQuNjY2NjY3djY0ek0zNDEuMzMzMzMzIDI0NS4zMzMzMzNoMjM0LjY2NjY2N3YtNjRIMzQxLjMzMzMzM3Y2NHogbTI1Ny4yOC01NC42MTMzMzNsLTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NiA4NS4zMzMzMzQgODUuMzMzMzM0IDQ1LjIyNjY2Ni00NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsLTg1LjMzMzMzNCA4NS4zMzMzMzMgNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2Njd6TTY1MC42NjY2NjcgODEwLjY2NjY2N2ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2NiAxMzguNjY2NjY2di02NEE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxIDcxNC42NjY2NjcgODEwLjY2NjY2N2gtNjR6IG0xMzguNjY2NjY2IDEzOC42NjY2NjZBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDkyOCA4MTAuNjY2NjY3aC02NGE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxLTc0LjY2NjY2NyA3NC42NjY2NjZ2NjR6TTkyOCA4MTAuNjY2NjY3YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY3LTEzOC42NjY2Njd2NjRjNDEuMjE2IDAgNzQuNjY2NjY3IDMzLjQ1MDY2NyA3NC42NjY2NjcgNzQuNjY2NjY3aDY0eiBtLTEzOC42NjY2NjctMTM4LjY2NjY2N0ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgNjUwLjY2NjY2NyA4MTAuNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY2LTc0LjY2NjY2N3YtNjR6IG0tMTA2LjY2NjY2NiAxMDYuNjY2NjY3aC0yMzQuNjY2NjY3djY0SDY4Mi42NjY2Njd2LTY0eiBtLTIxMi4wNTMzMzQgNTQuNjEzMzMzbDg1LjMzMzMzNC04NS4zMzMzMzMtNDUuMjI2NjY3LTQ1LjIyNjY2Ny04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsODUuMzMzMzMzIDg1LjMzMzMzMyA0NS4yMjY2NjctNDUuMjI2NjY2LTg1LjMzMzMzNC04NS4zMzMzMzQtNDUuMjI2NjY2IDQ1LjIyNjY2N3pNNjcyIDIzNC42NjY2NjdBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDgxMC42NjY2NjcgMzczLjMzMzMzM3YtNjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjctNzQuNjY2NjY2aC02NHpNODEwLjY2NjY2NyAzNzMuMzMzMzMzYTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAxMzguNjY2NjY2LTEzOC42NjY2NjZoLTY0QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgODEwLjY2NjY2NyAzMDkuMzMzMzMzdjY0eiBtMTM4LjY2NjY2Ni0xMzguNjY2NjY2QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCA4MTAuNjY2NjY3IDk2djY0YzQxLjIxNiAwIDc0LjY2NjY2NyAzMy40NTA2NjcgNzQuNjY2NjY2IDc0LjY2NjY2N2g2NHpNODEwLjY2NjY2NyA5NmExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAtMTM4LjY2NjY2NyAxMzguNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2N3YtNjR6TTc3OC42NjY2NjcgMzQxLjMzMzMzM3YyMzQuNjY2NjY3aDY0VjM0MS4zMzMzMzNoLTY0eiBtNTQuNjEzMzMzIDI1Ny4yOGw4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2NjctODUuMzMzMzM0IDg1LjMzMzMzNCA0NS4yMjY2NjcgNDUuMjI2NjY2eiBtMC00NS4yMjY2NjZsLTg1LjMzMzMzMy04NS4zMzMzMzQtNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2Ny00NS4yMjY2NjZ6TTEzOC42NjY2NjcgNzg5LjMzMzMzM2MwLTQxLjIxNiAzMy40NTA2NjctNzQuNjY2NjY3IDc0LjY2NjY2Ni03NC42NjY2NjZ2LTY0YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY2IDEzOC42NjY2NjZoNjR6TTIxMy4zMzMzMzMgNzE0LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NyA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIxMy4zMzMzMzMgNjUwLjY2NjY2N3Y2NHogbTc0LjY2NjY2NyA3NC42NjY2NjZBNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMSAyMTMuMzMzMzMzIDg2NHY2NGExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2Ny0xMzguNjY2NjY3aC02NHpNMjEzLjMzMzMzMyA4NjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjYtNzQuNjY2NjY3aC02NEExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMjEzLjMzMzMzMyA5Mjh2LTY0ek0yNDUuMzMzMzMzIDY4Mi42NjY2Njd2LTIzNC42NjY2NjdoLTY0VjY4Mi42NjY2NjdoNjR6IG0tNTQuNjEzMzMzLTIxMi4wNTMzMzRsODUuMzMzMzMzIDg1LjMzMzMzNCA0NS4yMjY2NjctNDUuMjI2NjY3LTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NnogbTAtNDUuMjI2NjY2bC04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2NjcgODUuMzMzMzM0LTg1LjMzMzMzNC00NS4yMjY2NjctNDUuMjI2NjY2eiIgIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4="};function xe(a){return pm[a]}const fm=a=>{const{workIds:s,mananger:e}=a;return M.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:t=>{t.cancelable&&t.preventDefault(),t.stopPropagation(),oe.emitMethod(se.MainEngine,F.DeleteNode,{workIds:s||[Q],viewId:e.viewId})}},M.createElement("img",{alt:"icon",src:xe("delete")}))},gm=a=>{const{workIds:s,viewId:e}=a;return M.createElement("div",{className:"button normal-button",onPointerUp:t=>{t.stopPropagation(),oe.emitMethod(se.MainEngine,F.CopyNode,{workIds:s||[Q],viewId:e})}},M.createElement("img",{alt:"icon",src:xe("duplicate")}))},Ki=a=>{const{icon:s,onPointerUpHandler:e}=a;return M.createElement("div",{className:"button normal-button",onPointerUp:e},M.createElement("img",{src:xe(s)}))},ym=a=>{const{open:s,setOpen:e,floatBarRef:t}=a,{floatBarData:i,mananger:o}=M.useContext(Ne),[n,r]=M.useState([]),c=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(i==null?void 0:i.y)&&(o!=null&&o.height)){if(t.current.offsetTop&&t.current.offsetTop+i.y>180){const h={};return h.top="inherit",h.bottom=50,h}else if(!t.current.offsetTop&&(o==null?void 0:o.height)-t.current.offsetTop-i.y<120){const h={};return h.top="inherit",h.bottom=50,h}}},[t==null?void 0:t.current,i,o]),l=M.useMemo(()=>s?M.createElement("div",{className:"image-layer-menu",style:c},M.createElement(Ki,{icon:"to-top",onPointerUpHandler:h=>{h.stopPropagation(),oe.emitMethod(se.MainEngine,F.ZIndexNode,{workIds:[Q],layer:Rt.Top,viewId:o==null?void 0:o.viewId})}}),M.createElement(Ki,{icon:"to-bottom",onPointerUpHandler:h=>{h.stopPropagation(),oe.emitMethod(se.MainEngine,F.ZIndexNode,{workIds:[Q],layer:Rt.Bottom,viewId:o==null?void 0:o.viewId})}})):null,[s,c]),u=h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),e(!s)};return M.useEffect(()=>{j.isEqual(i==null?void 0:i.selectIds,n)||i!=null&&i.selectIds&&!j.isEqual(i==null?void 0:i.selectIds,n)&&(r(i==null?void 0:i.selectIds),e(!1))},[s,i,n,e]),M.createElement("div",{className:`button normal-button ${s&&"active"}`,onPointerUp:u},l,M.createElement("img",{alt:"icon",src:xe(s?"layer-pressed":"layer")}))},Mm=()=>M.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},M.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),on=a=>{const{activeColor:s,onPointerUpHandler:e}=a;return M.createElement("div",{className:`font-color-button ${s==="transparent"?"active":""}`,onPointerUp:e},M.createElement("div",{className:"circle none"}))},ws=a=>{const{color:s,activeColor:e,onPointerUpHandler:t}=a;return M.createElement("div",{className:`font-color-button ${s===e?"active":""}`,onPointerUp:t},M.createElement("div",{className:"circle",style:{backgroundColor:Ce(s,1)}}))},vs=a=>{const{opacity:s,activeColor:e,setCurOpacity:t}=a,[i,o]=M.useState({x:108,y:0});if(M.useEffect(()=>{o({x:s*100+8,y:0})},[]),!e)return null;const n=j.throttle((l,u)=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),u.x!==(i==null?void 0:i.x)&&o({x:u.x,y:0});const h=Math.min(Math.max(u.x-8,0),100)/100;s!==h&&t(h,e,z.Doing)},100,{trailing:!0}),r=l=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),t(s,e,z.Start)},c=(l,u)=>{n.cancel(),l.cancelable&&l.preventDefault(),l.stopPropagation(),u.x!==(i==null?void 0:i.x)&&o({x:u.x,y:0});const h=Math.min(Math.max(u.x-8,0),100)/100;t(h,e,z.Done)};return M.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:l=>{const u=l.nativeEvent.offsetX,h=Math.min(Math.max(u-12,0),100)/100;o({x:h*100+8,y:0}),t(h,e,z.Done)}},M.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Ce(e,0)}, ${Ce(e,1)})`}}),M.createElement("div",{className:"range-opacity"},M.createElement(kt,{bounds:"parent",axis:"x",position:i,onDrag:n,onStart:r,onStop:c},M.createElement("div",{className:"circle",style:{backgroundColor:Ce(e,s)},onClick:l=>{l.cancelable&&l.preventDefault(),l.stopPropagation()}}))))},mm=a=>{const{min:s,max:e,activeNumber:t,setActiveNumber:i,color:o}=a,[n,r]=M.useState({x:108,y:0});if(M.useEffect(()=>{const h=Math.ceil((t-s)/(e-s)*100)+8;r({x:h,y:0})},[]),!t)return null;const c=j.throttle((h,d)=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),d.x!==(n==null?void 0:n.x)&&r({x:d.x,y:0});const f=Math.ceil(Math.max(d.x-8,0)/100*(e-s)+s);t!==f&&i(f,z.Doing)},100,{trailing:!0}),l=h=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),i(t,z.Start)},u=(h,d)=>{c.cancel(),h.cancelable&&h.preventDefault(),h.stopPropagation(),d.x!==(n==null?void 0:n.x)&&r({x:d.x,y:0});const f=Math.ceil(Math.max(d.x-8,0)/100*(e-s)+s);i(f,z.Done)};return M.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:h=>{const d=h.nativeEvent.offsetX,f=Math.ceil(Math.max(d-12,0)/100*(e-s)+s),g=Math.ceil((f-s)/(e-s)*100)+8;r({x:g,y:0}),i(f,z.Done)}},M.createElement("div",{className:"range-color",style:{backgroundColor:o}}),M.createElement("div",{className:"range-opacity"},M.createElement(kt,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:u},M.createElement("div",{className:"circle",style:{backgroundColor:o},onClick:h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()}},M.createElement("div",{className:"range-opacity-data-icon"},t)))))},wm=a=>{const{useStroke:s,color:e,activeStrokeType:t,setStrokeType:i}=a;return M.createElement("div",{className:"stroke-type-box"},!!s&&M.createElement("div",{className:`stroke-type-box-item Stroke ${t===te.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{i(te.Stroke)}}),M.createElement("div",{className:`stroke-type-box-item Normal ${t===te.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{i(te.Normal)}}),M.createElement("div",{className:`stroke-type-box-item Dotted ${t===te.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{i(te.Dotted)}}),M.createElement("div",{className:`stroke-type-box-item LongDotted ${t===te.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{i(te.LongDotted)}}))},vm=a=>{const{open:s,setOpen:e,floatBarRef:t}=a,{floatBarData:i,floatBarColors:o,mananger:n,setFloatBarData:r}=M.useContext(Ne),[c,l]=M.useState(),[u,h]=M.useState(1);M.useEffect(()=>{if(i!=null&&i.strokeColor){const[v,I]=ms(i.strokeColor);l(v),h(I)}},[i]);const d=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(i==null?void 0:i.y)&&(n!=null&&n.height)){if(t.current.offsetTop&&t.current.offsetTop+i.y>180){const v={};return v.top="inherit",v.bottom=50,v}else if(!t.current.offsetTop&&(n==null?void 0:n.height)-t.current.offsetTop-i.y<120){const v={};return v.top="inherit",v.bottom=50,v}}},[(t==null?void 0:t.current)&&i,n==null?void 0:n.height]),f=M.useMemo(()=>M.createElement(vs,{key:"strokeColors",opacity:u,activeColor:c,setCurOpacity:(v,I,k)=>{k===z.Start&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!0),k===z.Done&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!1),h(v);const w=Ce(I,v);i!=null&&i.strokeColor&&r({strokeColor:w}),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],strokeColor:w,workState:k,viewId:n==null?void 0:n.viewId})}}),[u,c,n==null?void 0:n.control.room,n==null?void 0:n.viewId,i]),g=M.useMemo(()=>{var v,I;return c&&(i!=null&&i.thickness)?M.createElement(mm,{key:"strokeThickness",min:Math.min(i.thickness,((v=n==null?void 0:n.control.pluginOptions.strokeWidth)==null?void 0:v.min)||1),max:Math.max(i.thickness,((I=n==null?void 0:n.control.pluginOptions.strokeWidth)==null?void 0:I.max)||10),activeNumber:i.thickness,setActiveNumber:(k,w)=>{w===z.Start&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!0),w===z.Done&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!1),i!=null&&i.thickness&&r({thickness:k}),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],thickness:k,workState:w,viewId:n==null?void 0:n.viewId})},color:c}):null},[c,i==null?void 0:i.thickness,n==null?void 0:n.control.room,n==null?void 0:n.viewId]),p=M.useMemo(()=>c&&(i!=null&&i.strokeType)?M.createElement(wm,{key:"strokeType",useStroke:i==null?void 0:i.useStroke,activeStrokeType:i.strokeType,setStrokeType:v=>{i.strokeType&&r({strokeType:v}),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],strokeType:v,workState:z.Done,viewId:n==null?void 0:n.viewId})},color:c}):null,[c,i==null?void 0:i.strokeType,n==null?void 0:n.control.room,n==null?void 0:n.viewId,i==null?void 0:i.useStroke]),m=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},p,g,M.createElement("div",{className:"font-colors-line"}),o.concat().map((v,I)=>{const k=Ft(...v);return M.createElement(ws,{key:I,color:k,activeColor:c,onPointerUpHandler:w=>{w.stopPropagation(),l(k);const S=Ce(k,u);i!=null&&i.strokeColor&&(i.strokeColor=S,r({strokeColor:S})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],workState:z.Done,strokeColor:S,viewId:n==null?void 0:n.viewId})}})}),f):null,[s,o,f,c,u,i,n==null?void 0:n.viewId,d]),N=M.useMemo(()=>c?M.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Ce(c,u)}},M.createElement("div",{className:"circle"})):null,[c,u]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!s)}},N,m)},Im=a=>{const{open:s,setOpen:e,floatBarRef:t}=a,{floatBarData:i,floatBarColors:o,mananger:n,setFloatBarData:r}=M.useContext(Ne),[c,l]=M.useState(),[u,h]=M.useState(1);M.useEffect(()=>{if(i!=null&&i.fillColor){const[m,N]=(i==null?void 0:i.fillColor)==="transparent"&&["transparent",1]||ms(i.fillColor);l(m),h(N)}},[i]);const d=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(i==null?void 0:i.y)&&(n!=null&&n.height)){if(t.current.offsetTop&&t.current.offsetTop+i.y>200){const m={};return m.top="inherit",m.bottom=50,m}else if(!t.current.offsetTop&&(n==null?void 0:n.height)-t.current.offsetTop-i.y<140){const m={};return m.top="inherit",m.bottom=50,m}}},[t==null?void 0:t.current,i,n==null?void 0:n.height]),f=M.useMemo(()=>c&&c!=="transparent"?M.createElement(vs,{key:"fillColors",opacity:u||0,activeColor:c,setCurOpacity:(m,N,v)=>{v===z.Start&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!0),v===z.Done&&(n!=null&&n.control.room)&&(n.control.room.disableDeviceInputs=!1),h(m);const I=Ce(N,m);i!=null&&i.fillColor&&(i.fillColor=I,r({fillColor:I})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],fillColor:c&&Ce(N,m),workState:v,viewId:n==null?void 0:n.viewId})}}):null,[c,u,n==null?void 0:n.control.room,n==null?void 0:n.viewId,i]),g=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:m=>{m.stopPropagation(),m.nativeEvent.stopImmediatePropagation()}},M.createElement(on,{activeColor:c,onPointerUpHandler:m=>{m.stopPropagation(),l("transparent");const N="transparent";i!=null&&i.fillColor&&(i.fillColor=N,r({fillColor:N})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],workState:z.Done,fillColor:N,viewId:n==null?void 0:n.viewId})}}),o.map((m,N)=>{const v=Ft(...m);return M.createElement(ws,{key:N,color:v,activeColor:c,onPointerUpHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),l(v);const k=Ce(v,u);i!=null&&i.fillColor&&(i.fillColor=k,r({fillColor:k})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:[Q],workState:z.Done,fillColor:k,viewId:n==null?void 0:n.viewId})}})}),f):null,[s,c,o,f,i,n==null?void 0:n.viewId,u,d]),p=M.useMemo(()=>{const m=c&&c!=="transparent"&&Ce(c,u)||"transparent";return M.createElement("div",{className:"color-bar-fill"},M.createElement("div",{className:"circle",style:{backgroundColor:m}}))},[c,u]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:m=>{m.stopPropagation(),m.nativeEvent.stopImmediatePropagation(),e(!s)}},p,g)},Sm=a=>{const{open:s,setOpen:e,textOpt:t,workIds:i,floatBarRef:o}=a,{floatBarColors:n,mananger:r,setFloatBarData:c,floatBarData:l}=M.useContext(Ne),[u,h]=M.useState(),[d,f]=M.useState(1);M.useEffect(()=>{if(t!=null&&t.fontColor){const[v,I]=(t==null?void 0:t.fontColor)==="transparent"&&["transparent",0]||ms(t.fontColor);h(v),f(I)}},[t==null?void 0:t.fontColor]);const g=M.useMemo(()=>{if(o!=null&&o.current&&j.isNumber(l==null?void 0:l.y)&&(r!=null&&r.height)){if(o.current.offsetTop&&o.current.offsetTop+l.y>180){const v={};return v.top="inherit",v.bottom=50,v}else if(!o.current.offsetTop&&(r==null?void 0:r.height)-o.current.offsetTop-l.y<120){const v={};return v.top="inherit",v.bottom=50,v}}},[o==null?void 0:o.current,l,r]),p=M.useMemo(()=>u&&u!=="transparent"?M.createElement(vs,{key:"fontColors",opacity:d,activeColor:u,setCurOpacity:(v,I,k)=>{k===z.Start&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!0),k===z.Done&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!1),f(v);const w=Ce(I,v);l!=null&&l.textOpt&&(l.textOpt.fontColor=w,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],fontColor:u&&w,workState:k,viewId:r==null?void 0:r.viewId})}}):null,[u,d,r==null?void 0:r.control.room,r==null?void 0:r.viewId,l==null?void 0:l.textOpt,i]),m=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},n.map((v,I)=>{const k=Ft(...v);return M.createElement(ws,{key:I,color:k,activeColor:u,onPointerUpHandler:w=>{w.stopPropagation(),h(k);const S=Ce(k,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=S,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],workState:z.Done,fontColor:S,viewId:r==null?void 0:r.viewId})}})}),p):null,[s,n,p,u,d,l==null?void 0:l.textOpt,i,r==null?void 0:r.viewId,g]),N=M.useMemo(()=>{const v=u&&u!=="transparent"&&Ce(u,d)||"transparent";return M.createElement("div",{className:"color-bar"},M.createElement("div",{className:"color-bar-color",style:{backgroundColor:v}}))},[u,d]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!s)}},M.createElement("img",{alt:"icon",src:xe("font-colors")}),N,m)},Nm=a=>{const{open:s,setOpen:e,textOpt:t,workIds:i,floatBarRef:o}=a,{floatBarColors:n,mananger:r,setFloatBarData:c,floatBarData:l}=M.useContext(Ne),[u,h]=M.useState(),[d,f]=M.useState(1);M.useEffect(()=>{if(t!=null&&t.fontBgColor){const[v,I]=(t==null?void 0:t.fontBgColor)==="transparent"&&["transparent",1]||ms(t.fontBgColor);h(v),f(I)}},[t==null?void 0:t.fontBgColor]);const g=M.useMemo(()=>{if(o!=null&&o.current&&j.isNumber(l==null?void 0:l.y)&&(r!=null&&r.height)){if(o.current.offsetTop&&o.current.offsetTop+l.y>180){const v={};return v.top="inherit",v.bottom=50,v}else if(!o.current.offsetTop&&(r==null?void 0:r.height)-o.current.offsetTop-l.y<120){const v={};return v.top="inherit",v.bottom=50,v}}},[o==null?void 0:o.current,l,r]),p=M.useMemo(()=>u&&u!=="transparent"?M.createElement(vs,{key:"fontBgColor",opacity:d||0,activeColor:u,setCurOpacity:(v,I,k)=>{k===z.Start&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!0),k===z.Done&&(r!=null&&r.control.room)&&(r.control.room.disableDeviceInputs=!1),f(v);const w=Ce(I,v);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=w,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],fontBgColor:u&&Ce(I,v),workState:k,viewId:r==null?void 0:r.viewId})}}):null,[u,d,r==null?void 0:r.control.room,r==null?void 0:r.viewId,l==null?void 0:l.textOpt,i]),m=M.useMemo(()=>s?M.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},M.createElement(on,{activeColor:u,onPointerUpHandler:v=>{v.stopPropagation();const I="transparent";h(I),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=I,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],workState:z.Done,fontBgColor:I,viewId:r==null?void 0:r.viewId})}}),n.map((v,I)=>{const k=Ft(...v);return M.createElement(ws,{key:I,color:k,activeColor:u,onPointerUpHandler:w=>{w.stopPropagation(),h(k);const S=Ce(k,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=S,c({textOpt:l.textOpt})),oe.emitMethod(se.MainEngine,F.SetColorNode,{workIds:i||[Q],workState:z.Done,fontBgColor:Ce(k,d),viewId:r==null?void 0:r.viewId})}})}),p):null,[s,n,p,d,u,l==null?void 0:l.textOpt,i,r==null?void 0:r.viewId,g]),N=M.useMemo(()=>{const v=u&&u!=="transparent"&&Ce(u,d)||"transparent";return M.createElement("div",{className:"color-bar",style:{marginTop:0}},M.createElement("div",{className:"color-bar-color",style:{backgroundColor:v}}))},[u,d]);return M.createElement("div",{className:`button normal-button font-colors-icon ${s&&"active"}`,onPointerUp:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!s)}},M.createElement(Mm,null),N,m)},Tm=a=>{const{bold:s,setBold:e,workIds:t,viewId:i}=a,o=n=>{const r=s==="bold"?"normal":"bold";n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,bold:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s==="bold"?"bold-active":"bold")}))},km=a=>{const{underline:s,setUnderline:e,workIds:t,viewId:i}=a,o=n=>{const r=!s;n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,underline:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s?"underline-active":"underline")}))},Cm=a=>{const{lineThrough:s,setLineThrough:e,workIds:t,viewId:i}=a,o=n=>{const r=!s;n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,lineThrough:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s?"line-through-active":"line-through")}))},bm=a=>{const{italic:s,setItalic:e,workIds:t,viewId:i}=a,o=n=>{const r=s==="italic"?"normal":"italic";n==null||n.stopPropagation(),e(r),oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:t,viewId:i,italic:r})};return M.createElement("div",{className:"font-style-button",onPointerUp:o},M.createElement("img",{alt:"icon",src:xe(s==="italic"?"italic-active":"italic")}))},xm=a=>{const{open:s,setOpen:e,textOpt:t,workIds:i,style:o,floatBarRef:n}=a,{mananger:r,floatBarData:c}=M.useContext(Ne),[l,u]=M.useState("normal"),[h,d]=M.useState("normal"),[f,g]=M.useState(!1),[p,m]=M.useState(!1);M.useEffect(()=>{t!=null&&t.bold&&u(t.bold),j.isBoolean(t==null?void 0:t.underline)&&g(t.underline||!1),j.isBoolean(t==null?void 0:t.lineThrough)&&m(t.lineThrough||!1),t!=null&&t.italic&&d(t.italic)},[t]);const N=M.useMemo(()=>{if(o&&(n!=null&&n.current)&&j.isNumber(c==null?void 0:c.y)&&(r!=null&&r.height)){if(n.current.offsetTop&&n.current.offsetTop+c.y>180){const I={};return I.top="inherit",I.bottom=50,I}else if(!n.current.offsetTop&&(r==null?void 0:r.height)-n.current.offsetTop-c.y<120){const I={};return I.top="inherit",I.bottom=50,I}}},[o,n==null?void 0:n.current,c,r]),v=M.useMemo(()=>s?M.createElement("div",{className:"font-style-menu",style:N,onPointerUp:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},M.createElement(Tm,{workIds:i||[Q],bold:l,setBold:u,viewId:r==null?void 0:r.viewId}),M.createElement(km,{workIds:i||[Q],underline:f,setUnderline:g,viewId:r==null?void 0:r.viewId}),M.createElement(Cm,{workIds:i||[Q],lineThrough:p,setLineThrough:m,viewId:r==null?void 0:r.viewId}),M.createElement(bm,{workIds:i||[Q],italic:h,setItalic:d,viewId:r==null?void 0:r.viewId})):null,[s,i,l,r==null?void 0:r.viewId,f,p,h,N]);return M.createElement("div",{className:`button normal-button ${s&&"active"}`,onPointerUp:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),e(!s)}},M.createElement("img",{alt:"icon",src:xe(s?"font-style-active":"font-style")}),v)},qe=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Mt=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Lm=a=>{const{style:s,onClickHandler:e}=a;return M.createElement("div",{className:"font-size-menu",style:s,onPointerUp:t=>{t.stopPropagation(),t.nativeEvent.stopImmediatePropagation()}},qe.map(t=>M.createElement("div",{className:"font-size-btn",key:t,onPointerUp:()=>{e(t)}},t)))},Pm=a=>{const s=M.useRef(null),{open:e,setOpen:t,textOpt:i,workIds:o,floatBarRef:n}=a,{mananger:r,floatBarData:c}=M.useContext(Ne),[l,u]=M.useState(0),[h,d]=M.useState(),f=qe.length-1;M.useEffect(()=>{i!=null&&i.fontSize&&(u(i.fontSize),s.current&&(s.current.value=i.fontSize.toString()))},[i==null?void 0:i.fontSize]);const g=M.useMemo(()=>{if(n!=null&&n.current&&j.isNumber(c==null?void 0:c.y)&&(r!=null&&r.height)){if(n.current.offsetTop&&n.current.offsetTop+c.y>180){const I={};return I.top="inherit",I.bottom=35,I}else if(!n.current.offsetTop&&(r==null?void 0:r.height)-n.current.offsetTop-c.y<120){const I={};return I.top="inherit",I.bottom=35,I}}},[n==null?void 0:n.current,c,r]);function p(I){u(I),I&&I>=qe[0]&&I<=qe[f]&&oe.emitMethod(se.MainEngine,F.SetFontStyle,{workIds:o||[Q],fontSize:I,viewId:r==null?void 0:r.viewId})}const m=I=>{var k;(k=s.current)==null||k.blur(),t(!1),v(I)},N=M.useMemo(()=>e?M.createElement(Lm,{onClickHandler:m,style:g}):null,[e,m,g]),v=I=>{I>qe[f]&&(I=qe[f]),I<qe[0]&&(I=qe[0]),p(I)};return M.useEffect(()=>()=>{r!=null&&r.control.room&&j.isBoolean(h)&&(r.control.room.disableDeviceInputs=h)},[r,h]),M.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},M.createElement("input",{className:"font-size-input",ref:s,onTouchEnd:()=>{s.current&&s.current.focus()},onClick:()=>{t(!e),s.current&&s.current.focus()},onKeyDown:I=>{if(I.key==="Backspace"){const k=window.getSelection(),w=k==null?void 0:k.getRangeAt(0);if(w!=null&&w.collapsed)return I.cancelable&&I.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:I=>{var k;if(s.current){const w=s.current.value,S=parseInt(w);isNaN(S)?s.current.value="0":s.current.value=S.toString(),S&&I.key==="Enter"&&(v(S),(k=s.current)==null||k.blur(),t(!1))}},onFocus:()=>{r!=null&&r.control.room&&!r.control.room.disableDeviceInputs&&(d(r.control.room.disableDeviceInputs),r.control.room.disableDeviceInputs=!0)},onBlur:()=>{r!=null&&r.control.room&&j.isBoolean(h)&&(r.control.room.disableDeviceInputs=h)}}),M.createElement("div",{className:"font-size-btns"},M.createElement("div",{className:"font-size-add",onPointerUp:()=>{v(l+qe[0])}}),M.createElement("div",{className:"font-size-cut",onPointerUp:()=>{v(l-qe[0])}})),N)},zm=a=>{const{workIds:s,mananger:e,islocked:t}=a;return M.createElement("div",{className:"button normal-button",onPointerUp:i=>{i.stopPropagation(),oe.emitMethod(se.MainEngine,F.SetLock,{workIds:s||[Q],isLocked:!t,viewId:e==null?void 0:e.viewId})}},M.createElement("img",{alt:"icon",src:xe(t?"unlock-new":"lock-new")}))},Os=a=>{const{icon:s,min:e,max:t,step:i,value:o,onInputHandler:n}=a,[r,c]=M.useState(0),l=M.useRef(null),u=h=>{h>t&&(h=t),h<e&&(h=e),c(h),n(h),l.current&&(l.current.value=h.toString())};return M.useEffect(()=>{o&&(c(o),l.current&&(l.current.value=o.toString()))},[o]),M.createElement("div",{className:"button input-button",onPointerUp:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation()}},M.createElement("img",{src:xe(s)}),M.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:h=>{if(h.key==="Backspace"){const d=window.getSelection(),f=d==null?void 0:d.getRangeAt(0);if(f!=null&&f.collapsed)return h.cancelable&&h.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(l.current){const h=l.current.value,d=parseInt(h);isNaN(d)?l.current.value="0":l.current.value=d.toString()}},onChange:h=>{const d=h.target.value,f=parseInt(d);f&&f&&f>=e&&f<=t&&u(f)}}),M.createElement("div",{className:"input-number-btns"},M.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(r+i)}}),M.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(r-i)}})))},Dm=a=>{const{icon:s,min:e,max:t,step:i,value:o,onInputHandler:n}=a;return M.createElement("div",{className:"button input-button"},M.createElement("img",{src:xe(s)}),M.createElement(Am,{min:e,max:t,step:i,value:o,onInputHandler:n}))},Am=a=>{const{value:s,min:e,max:t,onInputHandler:i}=a,[o,n]=M.useState({x:0,y:0});M.useEffect(()=>{n({x:s*100,y:0})},[]);const r=j.throttle((u,h)=>{u.cancelable&&u.preventDefault(),u.stopPropagation();let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,t*100)),h.x!==(o==null?void 0:o.x)&&n({x:d,y:0});const f=d/100;s!==f&&i(f)},100,{trailing:!0}),c=u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},l=(u,h)=>{r.cancel(),u.cancelable&&u.preventDefault(),u.stopPropagation();let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,t*100)),h.x!==(o==null?void 0:o.x)&&n({x:d,y:0});const f=d/100;s!==f&&i(f)};return M.createElement("div",{className:"range-number-container",onClick:u=>{const h=u.nativeEvent.offsetX-6;let d=Math.floor(Math.max(h,e*100));d=Math.floor(Math.min(d,t*100)),n({x:d,y:0});const f=d/100;s!==f&&i(f)}},M.createElement("div",{className:"range-number-color"}),M.createElement("div",{className:"range-number"},M.createElement(kt,{bounds:"parent",axis:"x",position:o,onDrag:r,onStart:c,onStop:l},M.createElement("div",{className:"circle",onClick:c}))))},jm=a=>{const{icon:s,value:e,onChangeHandler:t,style:i}=a,[o,n]=M.useState(0),[r,c]=M.useState(),l=M.useRef(null),u=M.useCallback(f=>{f>=Mt.length&&(f=0),f<0&&(f=Mt.length-1),n(f),t(Mt[f]),c(!1),l.current&&(l.current.value=Mt[f])},[t]),h=M.useMemo(()=>{if(i&&i.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[i]);M.useEffect(()=>{e&&(n(Mt.indexOf(e)),l.current&&(l.current.value=e))},[e]);const d=M.useMemo(()=>r?M.createElement(Em,{options:Mt,onClickHandler:u,style:h}):null,[r,u,h]);return M.createElement("div",{className:"button input-button"},M.createElement("img",{src:xe(s)}),M.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onTouchEnd:f=>{f.stopPropagation(),l.current&&l.current.focus()},onClick:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),l.current&&(l.current.focus(),c(!r))}}),M.createElement("div",{className:"input-number-btns"},M.createElement("div",{className:"input-number-add",onPointerUp:f=>{f.stopPropagation(),u(o+1)}}),M.createElement("div",{className:"input-number-cut",onPointerUp:f=>{f.stopPropagation(),u(o-1)}})),d)},Em=a=>{const{options:s,style:e,onClickHandler:t}=a;return M.createElement("div",{className:"select-option-menu",style:e,onPointerUp:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}},s.map((i,o)=>M.createElement("div",{className:"select-option-btn",key:i,onPointerUp:n=>{n.stopPropagation(),t(o)}},i)))},Om=a=>{const{mananger:s,innerRatio:e,innerVerticeStep:t,vertices:i}=a,o=c=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Star,viewId:s.viewId,vertices:c})},n=c=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Star,viewId:s.viewId,innerVerticeStep:c})},r=c=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Star,viewId:s.viewId,innerRatio:c})};return M.createElement(M.Fragment,null,M.createElement(Os,{value:i,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:o}),M.createElement(Os,{value:t,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:n}),M.createElement(Dm,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:r}))},Rm=a=>{const{mananger:s,vertices:e}=a,t=i=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.Polygon,viewId:s.viewId,vertices:i})};return M.createElement(Os,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:t})},Wm=a=>{const{mananger:s,placement:e}=a,t=i=>{oe.emitMethod(se.MainEngine,F.SetShapeOpt,{workIds:[Q],toolsType:T.SpeechBalloon,viewId:s.viewId,placement:i})};return M.createElement(jm,{value:e,icon:"speechBallon-placement",onChangeHandler:t})},Cs=a=>{const{icon:s,isActive:e,onPointerUpHandler:t}=a;return M.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:t},M.createElement("img",{src:xe(s)}))},Ym=a=>{const{toolsTypes:s,style:e,mananger:t,shapeOpt:i}=a,[o,n]=M.useState();M.useEffect(()=>{s.includes(T.Polygon)?n(T.Polygon):s.includes(T.Star)?n(T.Star):n(T.SpeechBalloon)},[s]);const r=(h,d)=>{d==null||d.stopPropagation(),n(h)},c=M.useMemo(()=>o===T.Polygon&&t&&i.vertices?M.createElement(Rm,{vertices:i.vertices,mananger:t}):null,[t,o,i]),l=M.useMemo(()=>o===T.Star&&t&&i.vertices&&i.innerVerticeStep&&i.innerRatio?M.createElement(Om,{mananger:t,vertices:i.vertices,innerVerticeStep:i.innerVerticeStep,innerRatio:i.innerRatio}):null,[t,o,i]),u=M.useMemo(()=>o===T.SpeechBalloon&&t&&i.placement?M.createElement(Wm,{mananger:t,placement:i.placement}):null,[t,o,i]);return M.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.cancelable&&h.preventDefault()}},M.createElement("div",{className:"shapeOpt-sub-menu-tabs"},s.includes(T.Polygon)&&M.createElement(Cs,{isActive:o===T.Polygon,icon:o===T.Polygon?"polygon-active":"polygon",onPointerUpHandler:r.bind(void 0,T.Polygon)})||null,s.includes(T.Star)&&M.createElement(Cs,{isActive:o===T.Star,icon:o===T.Star?"star-active":"star",onPointerUpHandler:r.bind(void 0,T.Star)})||null,s.includes(T.SpeechBalloon)&&M.createElement(Cs,{isActive:o===T.SpeechBalloon,icon:o===T.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:r.bind(void 0,T.SpeechBalloon)})||null),M.createElement("div",{className:"shapeOpt-sub-menu-content"},c,l,u))},Um=a=>{const{open:s,setOpen:e,floatBarRef:t,toolsTypes:i,shapeOpt:o}=a,{floatBarData:n,mananger:r}=M.useContext(Ne),[c,l]=M.useState([]),[u,h]=M.useState(),d=M.useMemo(()=>{if(t!=null&&t.current&&j.isNumber(n==null?void 0:n.x)&&j.isNumber(n==null?void 0:n.y)&&(r!=null&&r.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>200){const p={};return p.top="inherit",p.bottom=50,p}else if(!t.current.offsetTop&&(r==null?void 0:r.height)-t.current.offsetTop-(n==null?void 0:n.y)<140){const p={};return p.top="inherit",p.bottom=50,p}}},[t,n==null?void 0:n.x,n==null?void 0:n.y,r==null?void 0:r.height]),f=M.useMemo(()=>s&&i&&r&&o?(r.control.room&&!r.control.room.disableDeviceInputs&&(h(r.control.room.disableDeviceInputs),r.control.room.disableDeviceInputs=!0),M.createElement(Ym,{shapeOpt:o,style:d,toolsTypes:i,mananger:r})):(r!=null&&r.control.room&&j.isBoolean(u)&&(r.control.room.disableDeviceInputs=u),null),[s,d,i,r,o]),g=p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!s)};return M.useEffect(()=>{j.isEqual(n==null?void 0:n.selectIds,c)||n!=null&&n.selectIds&&!j.isEqual(n==null?void 0:n.selectIds,c)&&(l(n==null?void 0:n.selectIds),e(!1))},[s,n,c,e]),M.useEffect(()=>()=>{s&&r!=null&&r.control.room&&j.isBoolean(u)&&(r.control.room.disableDeviceInputs=u)},[s,r,u]),M.createElement("div",{className:`button normal-button ${s&&"active"}`,onPointerUp:g},f,M.createElement("img",{alt:"icon",src:xe(s?"shapes-active":"shapes")}))},nn=M.memo(a=>{const{textOpt:s,workIds:e,noLayer:t,position:i}=a,{floatBarData:o,mananger:n}=M.useContext(Ne),[r,c]=M.useState(0),[l,u]=M.useState(),h=M.useRef(null);M.useEffect(()=>{var x,P,E,R;const w={},S=(o==null?void 0:o.w)||((x=s==null?void 0:s.boxSize)==null?void 0:x[0])||0,b=(o==null?void 0:o.h)||((P=s==null?void 0:s.boxSize)==null?void 0:P[1])||0;if(i&&S&&b&&(n!=null&&n.width)&&(n!=null&&n.height)){if(i.y<60?i.y+b<n.height-60?w.bottom=-120:i.y+b<n.height?w.bottom=-58:i.y>0?w.top=62:w.top=-i.y+62:w.top=0,i.x<0)w.left=-i.x+3;else if(i.x+(((E=h.current)==null?void 0:E.offsetWidth)||S)>n.width){const O=n.width-(((R=h.current)==null?void 0:R.offsetWidth)||S)-i.x;w.left=O}u(w);return}u(void 0)},[h,i,o==null?void 0:o.w,o==null?void 0:o.h,n==null?void 0:n.width,n==null?void 0:n.height,s==null?void 0:s.boxSize]);const d=M.useMemo(()=>o!=null&&o.fillColor?M.createElement(Im,{floatBarRef:h,open:r===3,setOpen:w=>{c(w===!0?3:0)}}):null,[o==null?void 0:o.fillColor,r,h]),f=M.useMemo(()=>o!=null&&o.strokeColor?M.createElement(vm,{floatBarRef:h,open:r===2,setOpen:w=>{c(w===!0?2:0)}}):null,[o==null?void 0:o.strokeColor,r,h]),g=M.useMemo(()=>s!=null&&s.fontColor&&(n!=null&&n.viewId)?M.createElement(Sm,{floatBarRef:h,open:r===4,setOpen:w=>{c(w===!0?4:0)},textOpt:s,workIds:e}):null,[s,r,e,n,h]),p=M.useMemo(()=>s!=null&&s.fontBgColor&&(n!=null&&n.viewId)?M.createElement(Nm,{floatBarRef:h,open:r===5,setOpen:w=>{c(w===!0?5:0)},textOpt:s,workIds:e}):null,[s,r,e,n,h]),m=M.useMemo(()=>s&&(n!=null&&n.viewId)?M.createElement(xm,{floatBarRef:h,open:r===6,setOpen:w=>{c(w===!0?6:0)},textOpt:s,workIds:e,style:l}):null,[s,r,e,n,l,h]),N=M.useMemo(()=>s&&(n!=null&&n.viewId)?M.createElement(Pm,{open:r===7,setOpen:w=>{c(w===!0?7:0)},textOpt:s,workIds:e,floatBarRef:h}):null,[s,r,e,n,h]),v=M.useMemo(()=>t?null:M.createElement(ym,{open:r===1,setOpen:w=>{c(w===!0?1:0)},floatBarRef:h}),[t,r,h]),I=M.useMemo(()=>o!=null&&o.canLock&&n?M.createElement(zm,{workIds:e,mananger:n,islocked:o.isLocked}):null,[o,n,e]),k=M.useMemo(()=>n&&(n!=null&&n.viewId)&&l&&(o!=null&&o.shapeOpt)&&(o!=null&&o.toolsTypes)?M.createElement(Um,{open:r===8,setOpen:w=>{c(w===!0?8:0)},floatBarRef:h,workIds:e,toolsTypes:o.toolsTypes,shapeOpt:o.shapeOpt}):null,[o,n,r,l,e,h]);return M.createElement("div",{className:"appliance-plugin-floatbtns",style:l,ref:h,onPointerOver:w=>(w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),n==null||n.control.worker.blurCursor(n.viewId),!1),onMouseMove:w=>(w.stopPropagation(),w.cancelable&&w.preventDefault(),w.nativeEvent.stopImmediatePropagation(),!1)},n&&M.createElement(fm,{workIds:e,mananger:n}),v,I,!!(n!=null&&n.viewId)&&M.createElement(gm,{workIds:e,viewId:n.viewId}),k,N,m,g,p,f,d)}),Bm=a=>{const{data:s,isActive:e,manager:t,workId:i}=a,{opt:o,scale:n,translate:r,x:c,y:l}=s,u=`scale(${n||1}) ${r&&"translate("+r[0]+"px,"+r[1]+"px)"||""}`,{fontSize:h,fontFamily:d,underline:f,fontColor:g,lineThrough:p,textAlign:m,strokeColor:N,lineHeight:v,bold:I,italic:k,uid:w,workState:S}=o,b=h,x=v||b*1.2,P={fontSize:`${b}px`,lineHeight:`${x}px`,color:g,borderColor:N,minHeight:`${x}px`,paddingRight:`${k==="italic"?Math.round(b*.3):5}px`};d&&(P.fontFamily=`${d}`),(p||f)&&(P.textDecoration=`${p&&"line-through"||""}${f&&" underline"||""}`),I&&(P.fontWeight=`${I}`),k&&(P.fontStyle=`${k}`),m&&(P.textAlign=`${m}`);function E(){var O;e&&(w&&w===((O=t.control.collector)==null?void 0:O.uid)||!w)&&t.control.textEditorManager.active(i)}const R=M.useMemo(()=>{const O=[];if(o.text){const D=nt(o.text);for(let A=0;A<D.length;A++){const G=D[A];G===""?O.push(M.createElement("div",{style:{backgroundColor:o.fontBgColor},key:A},M.createElement("br",null))):O.push(M.createElement("div",{style:{backgroundColor:o.fontBgColor},key:A},G))}}return O.length?O:null},[o.fontBgColor,o.text]);return M.createElement("div",{className:"editor-box",style:{left:`${c}px`,top:`${l}px`,transform:u,transformOrigin:"left top",pointerEvents:"none",opacity:S===z.Done?0:1}},M.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:P,onClick:E},R))},Fm=M.memo(a=>{const{data:s,left:e,top:t,workId:i,updateOptInfo:o}=a,{opt:n,scale:r,translate:c}=s,l=M.useRef(null);M.useEffect(()=>{var P,E;if((P=l.current)!=null&&P.offsetWidth&&((E=l.current)!=null&&E.offsetHeight)){const R=n.boxSize;if((R==null?void 0:R[0])!==l.current.offsetWidth||R[1]!==l.current.offsetHeight||!R){const O=[l.current.offsetWidth,l.current.offsetHeight];o({activeTextId:i,update:{boxSize:O,workState:z.Done}})}}},[n.fontSize,n.italic,n.bold,n.boxSize,i]);const u=`scale(${r||1}) ${c&&"translate("+c[0]+"px,"+c[1]+"px)"||""}`,{fontSize:h,fontFamily:d,underline:f,fontColor:g,lineThrough:p,textAlign:m,strokeColor:N,lineHeight:v,bold:I,italic:k}=n,w=h,S=v||w*1.2,b={fontSize:`${w}px`,lineHeight:`${S}px`,color:g,borderColor:N,minHeight:`${S}px`,pointerEvents:"none",paddingRight:`${k==="italic"?Math.round(w*.3):5}px`};d&&(b.fontFamily=`${d}`),(p||f)&&(b.textDecoration=`${p&&"line-through"||""}${f&&" underline"||""}`),m&&(b.textAlign=`${m}`),I&&(b.fontWeight=`${I}`),k&&(b.fontStyle=`${k}`);const x=M.useMemo(()=>{const P=[];if(n.text){const E=nt(n.text);for(let R=0;R<E.length;R++){const O=E[R];O===""?P.push(M.createElement("div",{key:R},M.createElement("br",null))):P.push(M.createElement("div",{key:R},O))}}return P.length?P:null},[n.text]);return M.createElement("div",{className:"editor-box",style:{left:`${e}`,top:`${t}`,transform:u,transformOrigin:"left top",zIndex:1,pointerEvents:"none",opacity:0}},M.createElement("div",{className:"editor readOnly",ref:l,style:b},x))},(a,s)=>!(a.workId!==s.workId||a.left!==s.left||a.top!==s.top||!j.isEqual(a.data,s.data))),Vm=a=>{const{data:s,workId:e,isSelect:t,showFloatBtns:i,handleKeyUp:o,handleFocus:n,updateOptInfo:r,manager:c,runAnimation:l}=a,[u,h]=M.useState(),{opt:d,scale:f,translate:g,x:p,y:m}=s,{fontSize:N,fontFamily:v,underline:I,fontColor:k,lineThrough:w,textAlign:S,strokeColor:b,lineHeight:x,bold:P,italic:E,boxSize:R}=d,O=M.useRef(null),D=M.useMemo(()=>{const ee=N,ce=x||ee*1.2,J={fontSize:`${ee}px`,lineHeight:`${ce}px`,color:k,borderColor:b,minHeight:`${ce}px`,paddingRight:`${E==="italic"?Math.round(ee*.3):5}px`,borderWidth:`${Math.max(Math.round(1/(f||1)),1)}px`};return v&&(J.fontFamily=`${v}`),(w||I)&&(J.textDecoration=`${w&&"line-through"||""} ${I&&" underline"||""}`),S&&(J.textAlign=`${S}`),P&&(J.fontWeight=`${P}`),E&&(J.fontStyle=`${E}`),J},[P,k,v,N,E,x,w,f,b,S,I]),A=M.useMemo(()=>{const ee=`scale(${f||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`;return{left:`${p}px`,top:`${m}px`,zIndex:2,pointerEvents:"none",transform:ee,transformOrigin:"left top"}},[f,g,p,m]),G=M.useMemo(()=>{var ee,ce;return!t&&f&&i&&j.isNumber(p)&&j.isNumber(m)&&d.boxSize&&j.isNumber((ee=d.boxSize)==null?void 0:ee[0])&&j.isNumber((ce=d.boxSize)==null?void 0:ce[1])?M.createElement("div",{className:Pe.FloatBarBtn,style:{left:p,top:m,width:d.boxSize[0]*f,height:d.boxSize[1]*f}},M.createElement(nn,{position:{x:p,y:m},textOpt:d,workIds:[e],noLayer:!0})):null},[t,d,i,e,p,m,f]),ne=M.useMemo(()=>{let ee="";if(d.text){const ce=nt(d.text);for(let J=0;J<ce.length;J++){const $=ce[J];$===""?ee=ee+"<div><br/></div>":ee=ee+`<div style="background-color:${d.fontBgColor}">${$}</div>`}}else ee=`<div style="background-color:${d.fontBgColor}"></div>`;return ee},[d.fontBgColor,d.text]),q=M.useMemo(()=>typeof ne=="string"?M.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:O,style:D,onKeyDown:H,onKeyUp:o,onPointerUp:Z,onFocus:n,onPaste:K,onInput:ue,dangerouslySetInnerHTML:{__html:ne}}):null,[ne,D,e]);M.useEffect(()=>{q&&O.current&&(O.current.click(),setTimeout(()=>{var ee;if(O.current){const ce=window==null?void 0:window.getSelection(),J=O.current.lastChild;if(ce&&J){const $=document.createRange(),de=((ee=J.textContent)==null?void 0:ee.length)||0;(J==null?void 0:J.nodeName)==="#text"?$.setStart(J,de):$.setStart(J,de&&1||0),$.collapse(!0),ce.removeAllRanges(),ce.addRange($)}}},ys))},[q,O.current]),M.useEffect(()=>{var ee,ce,J,$;if(q&&((ee=O.current)!=null&&ee.offsetWidth||(ce=O.current)!=null&&ce.offsetHeight||(J=O.current)!=null&&J.offsetLeft||($=O.current)!=null&&$.offsetTop)){const de=[O.current.offsetWidth,O.current.offsetHeight];(R&&R[0]!==de[0]&&R[1]!==de[1]||!R)&&r({activeTextId:e,update:{boxSize:de,workState:z.Doing}})}},[R,q,D,e]);function Z(){O.current&&O.current.focus(),l()}function H(ee){if(ee.key==="Backspace"){const ce=window.getSelection(),J=ce==null?void 0:ce.getRangeAt(0);if(J!=null&&J.collapsed)return ee.cancelable&&ee.preventDefault(),document.execCommand("delete",!1),!1}return l(),!1}function _(ee,ce){const J=window==null?void 0:window.getSelection();if(J!=null&&J.rangeCount&&ee&&J&&J.anchorNode){const $=J.anchorOffset,de=J.anchorNode.textContent||"",ge=de.slice(0,$)||"",Re=de.slice($)||"",ve=ge.concat(ee)||"";ie(ve,Re,ce)}}function ie(ee,ce,J){const $=window==null?void 0:window.getSelection();if(!($!=null&&$.rangeCount)||!$.anchorNode)return;const de=ee.split(/\n/);let ge=$.anchorNode.parentNode;ge===J&&(ge=$.anchorNode);const Re=[...J.childNodes],ve=[];let we,rt=$.anchorOffset;for(;Re.length;){const be=Re.pop();if(be){if(be===ge){let $e=de[0];de.length===1&&(rt=de[0].length,$e=de[0].concat(ce)),ge.nodeName==="#text"?(ge.textContent=$e,we=ge):ge.nodeName==="DIV"&&(ge.innerText=$e,we=ge.childNodes[0]);break}ve.push(be),J.removeChild(be)}}if(de.length>1)for(let be=1;be<de.length;be++){let $e=de[be];const Dt=document.createElement("div");d.fontBgColor&&(Dt.style.backgroundColor=d.fontBgColor),be===de.length-1&&(rt=$e.length,$e=$e.concat(ce)),$e===""?Dt.innerHTML="<br/>":Dt.innerText=$e,J.appendChild(Dt),be===de.length-1&&(we=Dt.childNodes[0])}if(ve.length){ve.reverse();for(const be of ve)J.appendChild(be)}if(we&&we.nodeName==="#text"){$.deleteFromDocument();const be=document.createRange(),$e=Math.min(rt,(we==null?void 0:we.length)||0);be.setStart(we,$e),be.collapse(!0),$.removeAllRanges(),$.addRange(be)}}function K(ee){if(ee.cancelable&&ee.preventDefault(),ee.stopPropagation(),O.current){const ce=(ee.clipboardData||window.clipboardData).getData("text"),J=window==null?void 0:window.getSelection();if(!(J!=null&&J.rangeCount))return;ce&&J&&J.anchorNode&&_(ce,O.current),l()}}function ue(ee){o(ee),l()}return M.createElement(M.Fragment,null,G,M.createElement("div",{className:"editor-box",style:A,onFocus:()=>{c.control.room&&!c.control.room.disableDeviceInputs&&(h(c.control.room.disableDeviceInputs),c.control.room.disableDeviceInputs=!0)},onBlur:()=>{c!=null&&c.control.room&&j.isBoolean(u)&&(c.control.room.disableDeviceInputs=u)}},q))};class rn extends M.Component{constructor(s){super(s)}getInnerText(s){const e=[];for(let t=0;t<s.childNodes.length;t++){const i=s.childNodes[t];if(i.nodeName==="#text"&&t===0){const o=i.textContent.split(/\n/),n=o.pop();e.push(...o),n&&e.push(n)}else if(i.nodeName==="DIV"){const o=i.innerText.split(/\n/);if(o.length===2&&o[0]===""&&o[1]==="")e.push("");else{const n=o.shift();n&&e.push(n);const r=o.pop();e.push(...o),r&&e.push(r)}}}return e}updateOptInfo(s){var n,r;const{activeTextId:e,update:t,syncData:i}=s,o=e&&j.cloneDeep(((n=this.props.manager.control.textEditorManager)==null?void 0:n.get(e))||((r=this.props.editors)==null?void 0:r.get(e)));o&&o.opt&&(o.opt={...o.opt,...t},i&&(o.canSync=Object.keys(i).includes("canSync")&&i.canSync||o.canSync,o.canWorker=Object.keys(i).includes("canWorker")&&i.canWorker||o.canWorker),this.props.manager.control.textEditorManager.updateForViewEdited(e,o))}get editorUI(){var s;if((s=this.props.editors)!=null&&s.size){const e=[];return this.props.editors.forEach((t,i)=>{if(this.props.selectIds.includes(i)&&!(this.props.activeTextId==i)&&this.props.box){const{x:n,y:r}=this.props.box,{x:c,y:l}=t,u=`${c-n}px`,h=`${l-r}px`,d=M.createElement(Fm,{left:u,top:h,key:i,data:t,workId:i,isSelect:!0,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(d)}}),e}return null}render(){return M.createElement(M.Fragment,null,this.editorUI)}}class $m extends rn{constructor(e){super(e);y(this,"ref");y(this,"isRunAnimation");this.ref=M.createRef(),this.isRunAnimation=void 0}runAnimation(){this.isRunAnimation||(this.isRunAnimation=requestAnimationFrame(()=>{var e,t;(e=this.ref)!=null&&e.current&&((t=this.ref)==null||t.current.scrollTo({left:0,behavior:"instant"})),this.isRunAnimation=void 0}))}handleKeyUp(e){const t=this.getInnerText(e.nativeEvent.target),i=this.props.activeTextId;if(i){const o=this.props.manager.control.textEditorManager.get(i),n=Ye(t),r=z.Doing,c=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!o||o&&(o.opt.text!==n||!j.isEqual(o.opt.boxSize,c)||!j.isEqual(o.opt.workState,r)))&&this.updateOptInfo({activeTextId:i,update:{text:n,boxSize:c,workState:r},syncData:{canSync:!0,canWorker:!0}})}}handleFocus(e){const t=this.props.activeTextId;if(t){const i=this.props.manager.control.textEditorManager.get(t),o=z.Doing,n=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!i||i&&(!j.isEqual(i.opt.boxSize,n)||!j.isEqual(i.opt.workState,o)))&&this.updateOptInfo({activeTextId:t,update:{boxSize:n,workState:o},syncData:{canSync:!0,canWorker:!0}})}}get editorUI(){var e;if((e=this.props.editors)!=null&&e.size){const t=[];return this.props.editors.forEach((i,o)=>{if(!(this.props.selectIds.includes(o)&&this.props.activeTextId!==o)){const c=this.props.activeTextId==o?M.createElement(Vm,{key:o,data:i,workId:o,showFloatBtns:this.props.showFloatBtns||!1,handleFocus:this.handleFocus.bind(this),handleKeyUp:this.handleKeyUp.bind(this),updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager,runAnimation:this.runAnimation.bind(this)}):M.createElement(Bm,{manager:this.props.manager,isActive:i.opt.workState===z.Doing||i.opt.workState===z.Start||!1,key:o,data:i,workId:o});t.push(c)}}),t}return null}render(){return M.createElement("div",{className:`${this.props.className}`,ref:this.ref},this.editorUI)}}const Hm=()=>{const{floatBarData:a}=M.useContext(Ne);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},M.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}))},Qm=()=>{const{floatBarData:a,mananger:s}=M.useContext(Ne),[e,t]=M.useState(),[i,o]=M.useState();M.useEffect(()=>{const c=[];if(s&&j.isNumber(a==null?void 0:a.x)&&j.isNumber(a==null?void 0:a.y)&&(a!=null&&a.points)){const l=s.viewId;if(s.control.viewContainerManager.getView(l))for(const h of a.points){const d=s.control.viewContainerManager.transformToOriginPoint(h,l);c.push(d)}c[0]&&t({x:c[0][0]-((a==null?void 0:a.x)||0),y:c[0][1]-((a==null?void 0:a.y)||0)}),c[1]&&o({x:c[1][0]-((a==null?void 0:a.x)||0),y:c[1][1]-((a==null?void 0:a.y)||0)})}},[s,a==null?void 0:a.points,a==null?void 0:a.x,a==null?void 0:a.y]);const n=M.useMemo(()=>e?M.createElement("div",{className:"point point-dot",style:{borderColor:a==null?void 0:a.selectorColor,left:e.x,top:e.y}}):null,[a==null?void 0:a.selectorColor,e]),r=M.useMemo(()=>i?M.createElement("div",{className:"point point-dot",style:{borderColor:a==null?void 0:a.selectorColor,left:i.x,top:i.y}}):null,[i,a==null?void 0:a.selectorColor]);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},n,r)},Gm=()=>{const{floatBarData:a}=M.useContext(Ne);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},M.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}),M.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:a==null?void 0:a.selectorColor}}))},Zm=()=>{const{floatBarData:a}=M.useContext(Ne);return M.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:a==null?void 0:a.selectorColor}},M.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},qm=a=>{const{className:s}=a,{floatBarData:e,angle:t,setAngle:i,setOperationType:o,mananger:n}=M.useContext(Ne),[r,c]=M.useState(),[l,u]=M.useState(!1),[h,d]=M.useState(new V),[f,g]=M.useState(new V),[p,m]=M.useState(!1);M.useEffect(()=>(oe.activeListener(N),()=>{oe.unmountActiveListener(N)}),[]),M.useEffect(()=>{if(e){const w={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},S={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};g(new V(S.x,S.y)),d(new V(w.x,w.y)),c({x:w.x,y:w.y})}},[e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.h]);const N=w=>{var S;if(!w){m(!0),u(!1),o(F.None);return}m(!1),(S=n==null?void 0:n.control.room)!=null&&S.disableDeviceInputs&&(n.control.room.disableDeviceInputs=!1)},v=(w,S)=>{if(w.cancelable&&w.preventDefault(),w.stopPropagation(),n!=null&&n.control.worker.isBusy){m(!0);return}u(!0);const b=Math.round(V.GetAngleByPoints(h,f,new V(S.x,S.y)))||0;i(b),o(F.RotateNode),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.RotateNode,{workIds:[Q],angle:0,workState:z.Start,viewId:n==null?void 0:n.viewId})},I=(w,S)=>{if(k.cancel(),w.cancelable&&w.preventDefault(),w.stopPropagation(),n!=null&&n.control.worker.isBusy){m(!0);return}u(!1);const b=Math.round(V.GetAngleByPoints(h,f,new V(S.x,S.y)))||0;i(b),o(F.None),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!1),oe.emitMethod(se.MainEngine,F.RotateNode,{workIds:[Q],angle:b,workState:z.Done,viewId:n==null?void 0:n.viewId})},k=Ms((w,S)=>{if(w.cancelable&&w.preventDefault(),w.stopPropagation(),n!=null&&n.control.worker.isBusy){m(!0);return}u(!0);const b=Math.round(V.GetAngleByPoints(h,f,new V(S.x,S.y)))||0;i(b),c({x:S.x,y:S.y}),o(F.RotateNode),oe.emitMethod(se.MainEngine,F.RotateNode,{workIds:[Q],angle:b,workState:z.Doing,viewId:n==null?void 0:n.viewId})},100,{trailing:!0});return M.createElement(kt,{disabled:p,position:r,handle:".appliance-plugin-rotate-mouse-pointer",onStart:v,onDrag:k,onStop:I},M.createElement("div",{className:`${s}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!l&&M.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},M.createElement("img",{alt:"icon",src:xe("rotation-button")})),M.createElement("div",{className:`appliance-plugin-rotate-mouse-pointer ${l?"active":""}`},M.createElement("img",{alt:"icon",src:xe("rotation")}),M.createElement("div",{className:"angle-icon"},t,"°"))))},Xm=a=>{const{floatBarData:s,setOperationType:e,mananger:t}=M.useContext(Ne),{onClickHandle:i}=a,[o,n]=M.useState(z.Pending),[r,c]=M.useState(),[l,u]=M.useState(),[h,d]=M.useState(!1);M.useEffect(()=>(oe.activeListener(f),()=>{oe.unmountActiveListener(f)}),[]);const f=I=>{var k;if(!I||s!=null&&s.isLocked){d(!0),n(z.Pending),e(F.None);return}d(!1),(k=t==null?void 0:t.control.room)!=null&&k.disableDeviceInputs&&(t.control.room.disableDeviceInputs=!1)};M.useEffect(()=>{if(s!=null&&s.isLocked||t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}d(!1)},[s==null?void 0:s.isLocked]),M.useEffect(()=>{j.isNumber(s==null?void 0:s.x)&&j.isNumber(s==null?void 0:s.y)&&(o===z.Pending||o===z.Done)&&u({x:s==null?void 0:s.x,y:s==null?void 0:s.y})},[o,s==null?void 0:s.x,s==null?void 0:s.y]);const g=I=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}j.isNumber(s==null?void 0:s.x)&&j.isNumber(s==null?void 0:s.y)&&(e(F.TranslateNode),n(z.Start),c({x:s==null?void 0:s.x,y:s==null?void 0:s.y}),t!=null&&t.control.room&&(t.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.TranslateNode,{workIds:[Q],position:{x:s==null?void 0:s.x,y:s==null?void 0:s.y},workState:z.Start,viewId:t==null?void 0:t.viewId}))},p=(I,k)=>{if(m.cancel(),I.cancelable&&I.preventDefault(),t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}I.stopPropagation();const w={x:k.x,y:k.y};e(F.None),n(z.Done),t!=null&&t.control.room&&(t.control.room.disableDeviceInputs=!1),oe.emitMethod(se.MainEngine,F.TranslateNode,{workIds:[Q],position:w,workState:z.Done,viewId:t==null?void 0:t.viewId})},m=j.throttle((I,k)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),t!=null&&t.control.worker.isBusy){d(!0),n(z.Pending);return}const w={x:k.x,y:k.y};(k.x!==(s==null?void 0:s.x)||k.y!==(s==null?void 0:s.y))&&(n(z.Doing),oe.emitMethod(se.MainEngine,F.TranslateNode,{workIds:[Q],position:w,workState:z.Doing,viewId:t==null?void 0:t.viewId}))},100,{trailing:!1}),N=M.useMemo(()=>!!((s==null?void 0:s.scaleType)===ae.none&&(s!=null&&s.canLock)),[s]),v=j.debounce(I=>(m.cancel(),I.stopPropagation(),I.cancelable&&I.preventDefault(),(r==null?void 0:r.x)===(s==null?void 0:s.x)&&(r==null?void 0:r.y)===(s==null?void 0:s.y)&&i(I),!1),150,{trailing:!0});return M.createElement(kt,{disabled:h,position:l,onStart:g,onDrag:m,onStop:p},M.createElement("div",{style:s?{position:"absolute",left:0,top:0,width:s.w,height:s.h,zIndex:2,pointerEvents:N?"none":"auto",touchAction:"none"}:void 0,onPointerUp:I=>{I.persist(),v(I)}}))},Jm=a=>{const{className:s}=a,[e,t]=M.useState({x:0,y:0,h:0,w:0}),[i,o]=M.useState(),[n,r]=M.useState(),[c,l]=M.useState(),{floatBarData:u,mananger:h}=M.useContext(Ne),[d,f]=M.useState(),[g,p]=M.useState(!1);M.useEffect(()=>{if(u&&h){const b={x:u.x,y:u.y,w:u.w,h:u.h};t(b)}return oe.activeListener(m),()=>{oe.unmountActiveListener(m)}},[]);const m=b=>{var x;if(!b){p(!0);return}p(!1),(x=h==null?void 0:h.control.room)!=null&&x.disableDeviceInputs&&(h.control.room.disableDeviceInputs=!1)},N=b=>[[b.x,b.y],[b.x+b.w,b.y],[b.x+b.w,b.y+b.h],[b.x,b.y+b.h]],v=(b,x)=>{switch(x){case"top":case"topLeft":case"left":return b[2];case"topRight":return b[3];case"right":case"bottomRight":case"bottom":return b[0];case"bottomLeft":return b[1]}},I=(b,x,P,E)=>{let R=!1,O=!1;const D={x:e.x,y:e.y,w:e.w,h:e.h},A=[1,1],G=[0,0];switch(b){case"top":{const H=x.height+e.h;H<0?(O=!0,D.y=e.y+e.h,D.h=Math.abs(H)):(D.y=e.y-x.height,D.h=e.h+x.height);break}case"topLeft":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+e.w,D.w=Math.abs(H)):(D.x=e.x-x.width,D.w=e.w+x.width);const _=x.height+e.h;_<0?(O=!0,D.y=e.y+e.h,D.h=Math.abs(_)):(D.y=e.y-x.height,D.h=e.h+x.height);break}case"topRight":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+H,D.w=Math.abs(H)):D.w=e.w+x.width;const _=x.height+e.h;_<0?(O=!0,D.y=e.y+e.h,D.h=Math.abs(_)):(D.y=e.y-x.height,D.h=e.h+x.height);break}case"bottom":{const H=x.height+e.h;H<0?(O=!0,D.y=e.y+H,D.h=Math.abs(H)):D.h=e.h+x.height;break}case"bottomLeft":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+e.w,D.w=Math.abs(H)):(D.x=e.x-x.width,D.w=e.w+x.width);const _=x.height+e.h;_<0?(O=!0,D.y=e.y+_,D.h=Math.abs(_)):D.h=e.h+x.height;break}case"left":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+e.w,D.w=Math.abs(H)):(D.x=e.x-x.width,D.w=e.w+x.width);break}case"bottomRight":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+H,D.w=Math.abs(H)):D.w=e.w+x.width;const _=x.height+e.h;_<0?(O=!0,D.y=e.y+_,D.h=Math.abs(_)):D.h=e.h+x.height;break}case"right":{const H=x.width+e.w;H<0?(R=!0,D.x=e.x+H,D.w=Math.abs(H)):D.w=e.w+x.width;break}}A[0]=D.w/e.w,A[1]=D.h/e.h;const q=N(D).map(H=>P.control.viewContainerManager.transformToScenePoint(H,P.viewId)),Z=v(q,b);return O&&(G[1]=Z[1]-E[1]),R&&(G[0]=Z[0]-E[0]),{scale:A,translate:G}},k=(b,x)=>{if(b.cancelable&&b.preventDefault(),b.stopPropagation(),h!=null&&h.control.worker.isBusy){p(!0);return}if(u!=null&&u.w&&(u!=null&&u.h)&&h){const P={x:u.x,y:u.y,w:u.w,h:u.h},E=N(P),R=E.map(A=>h.control.viewContainerManager.transformToScenePoint(A,h.viewId)),O=v(E,x),D=v(R,x);t(P),o(O),r(D),l(x),h!=null&&h.control.room&&(h.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.ScaleNode,{workIds:[Q],originPoint:O,scenePoint:D,workState:z.Start,viewId:h.viewId})}},w=j.throttle((b,x,P,E)=>{if(b.cancelable&&b.preventDefault(),b.stopPropagation(),!h||!i||!n)return;if(h!=null&&h.control.worker.isBusy){p(!0);return}const{scale:R,translate:O}=I(x,E,h,n);(!j.isEqual(R,d==null?void 0:d.scale)||!j.isEqual(O,d==null?void 0:d.translate))&&(f({scale:R,translate:O}),oe.emitMethod(se.MainEngine,F.ScaleNode,{workIds:[Q],scale:R,dir:x,translate:O,originPoint:i,scenePoint:n,workState:z.Doing,viewId:h.viewId}))},100,{trailing:!0}),S=b=>{if(w.cancel(),b.cancelable&&b.preventDefault(),b.stopPropagation(),!(!h||!i||!n)){if(h!=null&&h.control.worker.isBusy){p(!0);return}if(h!=null&&h.control.room&&(h.control.room.disableDeviceInputs=!1),d){const{scale:x,translate:P}=d;oe.emitMethod(se.MainEngine,F.ScaleNode,{workIds:[Q],scale:x,dir:c,translate:P,originPoint:i,scenePoint:n,workState:z.Done,viewId:h.viewId})}}};return M.createElement(ln.Resizable,{className:`${s}`,boundsByDirection:!0,minWidth:-(((u==null?void 0:u.x)||0)+((u==null?void 0:u.w)||0)),minHeight:-(((u==null?void 0:u.y)||0)+((u==null?void 0:u.h)||0)),size:{width:(u==null?void 0:u.w)||0,height:(u==null?void 0:u.h)||0},style:{position:"absolute",pointerEvents:"auto",left:u==null?void 0:u.x,top:u==null?void 0:u.y},enable:g?!1:{top:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,right:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,bottom:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,left:(u==null?void 0:u.scaleType)===ae.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(u==null?void 0:u.scaleType)===ae.proportional,onResizeStart:k,onResize:w,onResizeStop:S})},_i=a=>{const{id:s,pos:e,pointMap:t,type:i}=a,{setOperationType:o,mananger:n,floatBarData:r}=M.useContext(Ne),[c,l]=M.useState({x:0,y:0}),[u,h]=M.useState(z.Pending),[d,f]=M.useState(!1);M.useEffect(()=>(oe.activeListener(g),()=>{oe.unmountActiveListener(g)}),[]);const g=v=>{var I;if(!v||r!=null&&r.isLocked){f(!0),h(z.Pending),o(F.None);return}f(!1),(I=n==null?void 0:n.control.room)!=null&&I.disableDeviceInputs&&(n.control.room.disableDeviceInputs=!1)};M.useEffect(()=>{j.isNumber(e.x)&&j.isNumber(e.y)&&(u===z.Pending||u===z.Done)&&l({x:e.x,y:e.y})},[e,u]);const p=v=>{if(v.cancelable&&v.preventDefault(),v.stopPropagation(),n!=null&&n.control.worker.isBusy){f(!0),h(z.Pending);return}j.isNumber(e.x)&&j.isNumber(e.y)&&(o(F.SetPoint),h(z.Start),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!0),oe.emitMethod(se.MainEngine,F.SetPoint,{workId:Q,pointMap:t,workState:z.Start,viewId:n==null?void 0:n.viewId}))},m=j.throttle((v,I)=>{if(v.cancelable&&v.preventDefault(),v.stopPropagation(),n!=null&&n.control.worker.isBusy){f(!0),h(z.Pending);return}const k={x:I.x,y:I.y};if((k.x!==(e==null?void 0:e.x)||k.y!==(e==null?void 0:e.y))&&(n!=null&&n.control.viewContainerManager)){const w=n.control.viewContainerManager.transformToScenePoint([k.x,k.y],n.viewId),S=t.get(s);S&&i==="start"?S[0]=w:S&&i==="end"&&(S[1]=w),h(z.Doing),oe.emitMethod(se.MainEngine,F.SetPoint,{workId:Q,pointMap:t,workState:z.Doing,viewId:n==null?void 0:n.viewId})}},100,{trailing:!0}),N=(v,I)=>{if(m.cancel(),v.cancelable&&v.preventDefault(),n!=null&&n.control.worker.isBusy){f(!0),h(z.Pending);return}v.stopPropagation(),o(F.None),h(z.Done);const k={x:I.x,y:I.y};if(n!=null&&n.control.viewContainerManager){const w=n.control.viewContainerManager.transformToScenePoint([k.x,k.y],n.viewId),S=t.get(s);S&&i==="start"?S[0]=w:S&&i==="end"&&(S[1]=w),n!=null&&n.control.room&&(n.control.room.disableDeviceInputs=!1),oe.emitMethod(se.MainEngine,F.SetPoint,{workId:Q,pointMap:t,workState:z.Done,viewId:n==null?void 0:n.viewId})}};return M.createElement(kt,{disabled:d,position:c,onStart:p,onDrag:m,onStop:N},M.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:r?{left:0,top:0}:void 0}))},Km=a=>{const{className:s}=a,{floatBarData:e,mananger:t}=M.useContext(Ne),[i,o]=M.useState(),[n,r]=M.useState(),[c,l]=M.useState(new Map);M.useEffect(()=>{const d=[];if(t&&(e!=null&&e.points)){const f=t.viewId;if(t.control.viewContainerManager.getView(f))for(const p of e.points){const m=t.control.viewContainerManager.transformToOriginPoint(p,f);d.push(m)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}d[0]&&o({x:d[0][0],y:d[0][1]}),d[1]&&r({x:d[1][0],y:d[1][1]})},[t,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const u=M.useMemo(()=>i&&(e!=null&&e.selectIds)?M.createElement(_i,{pos:i,type:"start",id:e.selectIds[0],pointMap:c}):null,[i,e==null?void 0:e.selectIds,c]),h=M.useMemo(()=>n&&(e!=null&&e.selectIds)?M.createElement(_i,{pos:n,type:"end",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]);return M.createElement("div",{className:`${s}`},u,h)},_m=M.forwardRef((a,s)=>{const{floatBarData:e,operationType:t}=M.useContext(Ne),i=M.useMemo(()=>(e==null?void 0:e.scaleType)!==ae.all||t===F.RotateNode?null:M.createElement(Hm,null),[e,t]),o=M.useMemo(()=>(e==null?void 0:e.scaleType)!==ae.both||t===F.RotateNode?null:M.createElement(Qm,null),[e,t]),n=M.useMemo(()=>(e==null?void 0:e.scaleType)!==ae.proportional||t===F.RotateNode?null:M.createElement(Gm,null),[e,t]),r=M.useMemo(()=>(e==null?void 0:e.scaleType)===ae.none&&(e!=null&&e.canLock)?M.createElement(Zm,null):null,[e]);return M.createElement("div",{ref:s,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},r,i,o,n,a.children)}),ew=M.forwardRef((a,s)=>{var f;const{floatBarData:e,operationType:t,mananger:i}=M.useContext(Ne),{editors:o,activeTextId:n,isHide:r}=a,c=M.useMemo(()=>{var g;return e!=null&&e.canRotate&&((g=e==null?void 0:e.selectIds)==null?void 0:g.length)===1&&(t===F.None||t===F.RotateNode)?M.createElement(qm,{className:Pe.RotateBtn}):null},[e==null?void 0:e.canRotate,(f=e==null?void 0:e.selectIds)==null?void 0:f.length,t]),l=M.useMemo(()=>((e==null?void 0:e.scaleType)===ae.all||(e==null?void 0:e.scaleType)===ae.proportional)&&(t===F.None||t===F.ScaleNode)&&j.isNumber(e==null?void 0:e.x)&&j.isNumber(e==null?void 0:e.y)?M.createElement(Jm,{className:Pe.ResizeBtn}):null,[e==null?void 0:e.scaleType,t,e==null?void 0:e.x,e==null?void 0:e.y]),u=M.useMemo(()=>(e==null?void 0:e.scaleType)===ae.both&&(t===F.None||t===F.SetPoint)?M.createElement(Km,{className:Pe.ResizeTowBox}):null,[e==null?void 0:e.scaleType,t]),h=M.useMemo(()=>{const g=(e==null?void 0:e.selectIds)||[];return o&&i&&g&&j.isNumber(e==null?void 0:e.x)&&j.isNumber(e==null?void 0:e.y)&&j.isNumber(e==null?void 0:e.w)&&j.isNumber(e==null?void 0:e.h)?M.createElement(rn,{box:{x:e==null?void 0:e.x,y:e==null?void 0:e.y,w:e==null?void 0:e.w,h:e==null?void 0:e.h},manager:i,selectIds:g,activeTextId:n,editors:o}):null},[e==null?void 0:e.selectIds,e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.w,e==null?void 0:e.h,o,i,n]),d=M.useMemo(()=>r&&t===F.None&&j.isNumber(e==null?void 0:e.x)&&j.isNumber(e==null?void 0:e.y)&&j.isNumber(e==null?void 0:e.w)&&j.isNumber(e==null?void 0:e.h)?M.createElement("div",{className:Pe.FloatBarBtn,style:{left:e==null?void 0:e.x,top:e==null?void 0:e.y,width:e.w,height:e.h}},M.createElement(nn,{position:{x:e.x,y:e.y},textOpt:e==null?void 0:e.textOpt,noLayer:e==null?void 0:e.isLocked})):null,[e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.w,e==null?void 0:e.h,e==null?void 0:e.textOpt,e==null?void 0:e.isLocked,t,r]);return M.createElement("div",{className:Pe.FloatBar,onPointerOver:g=>(g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),i==null||i.control.worker.blurCursor(i.viewId),!1)},M.createElement(_m,{ref:s},M.createElement(M.Fragment,null,h)),M.createElement(Xm,{onClickHandle:g=>{if(i&&(o!=null&&o.size)){const p=i.getPoint(g.nativeEvent);p&&i.control.textEditorManager.computeTextActive(p,i.viewId)}}}),c,l,u,d)}),tw=M.memo(ew,(a,s)=>!!j.isEqual(a,s)),sw="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",iw="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='40px'%20height='40px'%20viewBox='0%200%2040%2040'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3eshape-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-64.6%25'%20y='-59.5%25'%20width='229.3%25'%20height='246.1%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-344.000000,%20-751.000000)'%3e%3cg%20id='shape-cursor'%20transform='translate(344.000000,%20751.000000)'%3e%3crect%20id='矩形备份-44'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M20,21%20C20.4854103,21%2020.898085,21.3479993%2020.9899479,21.8654877%20L21,22%20L21,27%20C21,27.5522847%2020.5522847,28%2020,28%20C19.5145897,28%2019.101915,27.6520007%2019.0100521,27.1345123%20L19,27%20L19,22%20C19,21.4477153%2019.4477153,21%2020,21%20Z%20M27,19%20C27.5522847,19%2028,19.4477153%2028,20%20C28,20.4854103%2027.6520007,20.898085%2027.1345123,20.9899479%20L27,21%20L22,21%20C21.4477153,21%2021,20.5522847%2021,20%20C21,19.5145897%2021.3479993,19.101915%2021.8654877,19.0100521%20L22,19%20L27,19%20Z%20M18,19%20C18.5522847,19%2019,19.4477153%2019,20%20C19,20.4854103%2018.6520007,20.898085%2018.1345123,20.9899479%20L18,21%20L13,21%20C12.4477153,21%2012,20.5522847%2012,20%20C12,19.5145897%2012.3479993,19.101915%2012.8654877,19.0100521%20L13,19%20L18,19%20Z%20M20,12%20C20.4854103,12%2020.898085,12.3479993%2020.9899479,12.8654877%20L21,13%20L21,18%20C21,18.5522847%2020.5522847,19%2020,19%20C19.5145897,19%2019.101915,18.6520007%2019.0100521,18.1345123%20L19,18%20L19,13%20C19,12.4477153%2019.4477153,12%2020,12%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='18.5'%20y='17'%20width='3'%20height='6'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='17'%20y='18.5'%20width='6'%20height='3'%3e%3c/rect%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='形状结合'%20fill='%23212324'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",ow="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='47px'%20height='40px'%20viewBox='0%200%2047%2040'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3etext-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M16,26.5%20C15.7238576,26.5%2015.5,26.2761424%2015.5,26%20C15.5,25.7545401%2015.6768752,25.5503916%2015.9101244,25.5080557%20L16,25.5%20L19.5,25.5%20L19.5,14.5%20L16,14.5%20C15.7238576,14.5%2015.5,14.2761424%2015.5,14%20C15.5,13.7545401%2015.6768752,13.5503916%2015.9101244,13.5080557%20L16,13.5%20L24,13.5%20C24.2761424,13.5%2024.5,13.7238576%2024.5,14%20C24.5,14.2454599%2024.3231248,14.4496084%2024.0898756,14.4919443%20L24,14.5%20L20.5,14.5%20L20.5,25.5%20L24,25.5%20C24.2761424,25.5%2024.5,25.7238576%2024.5,26%20C24.5,26.2454599%2024.3231248,26.4496084%2024.0898756,26.4919443%20L24,26.5%20L16,26.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-284.0%25'%20y='-81.5%25'%20width='668.1%25'%20height='293.9%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-388.000000,%20-672.000000)'%3e%3cg%20id='text-cursor'%20transform='translate(392.000000,%20672.000000)'%3e%3crect%20id='矩形备份-40'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M19,25%20L19,15%20L16,15%20C15.4477153,15%2015,14.5522847%2015,14%20C15,13.5145897%2015.3479993,13.101915%2015.8654877,13.0100521%20L16,13%20L24,13%20C24.5522847,13%2025,13.4477153%2025,14%20C25,14.4854103%2024.6520007,14.898085%2024.1345123,14.9899479%20L24,15%20L21,15%20L21,25%20L24,25%20C24.5522847,25%2025,25.4477153%2025,26%20C25,26.4854103%2024.6520007,26.898085%2024.1345123,26.9899479%20L24,27%20L16,27%20C15.4477153,27%2015,26.5522847%2015,26%20C15,25.5145897%2015.3479993,25.101915%2015.8654877,25.0100521%20L16,25%20L19,25%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",nw="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgrSURBVHgB7ZprTBRXFIDP7gIt8lQppTwE5V0KaAn6o1pqNGkDDTEmTUhsgKRp+gNJw68CFkLbVC2QkDS+gD8KJdWmARvbFBNNWpuIRGPFWBXQRMPDqIki+KLATs+ZnTvcvXtnX8w2beJJToaduTP3fHPOPffcOwC8kP+2WCDwIvahGFxTuN8KmNSZmULPNjLeqF9F8rdPkIEGEn+r+vjx46LQ0NA8/Dsader58+e/h4WFDWntFO7ot6fMFAt3JLWi2lCDpqamCux2+2+KROj82NhYGrXT2lu5Z/DP/deFByElA4Pv3LlTiHY/nJ6eVnbv3q1s2bJFyc7OVrZu3arU1dUp4+PjxPUQoT+g9tp9PkMFgpo9kxljHRoaWp2Xl3duYmIiurKyEvDoclNCQgIcPnxYPc7MzHwcGRnZhaft4Ag7O9fUbRhaITCie4lgcnNzT7qDIaHz27dvh+vXr0NEREQneqoCHKFnAR+8ZCaQGGq2CxcurCGYycnJZHcwTNAzUFFRoUJFRUV1IFQ5OKBsXB9uxSwgl0TQ3d29Yt26dccwoyVXV1d7hGEiQmGi2AzOUHx/hob4K2yuYS9G987s7OwPISEh7xPM6dOnwVfBsIMjR45AZmbmo5s3b76Xnp7+J55egMVxBSAZT0v1ED+76yn66dOnLQSzd+9ev2BIyFP0MjBco1JTU/sxfFeDazp3cYgZHmKqdoaGNISHh9fv378fSJcqlPV6e3sBJ+I/goOD34VFL0k95Y+HxPHCYGxmw5DQ2NuzZw8EBQVtunXr1jvgwUP+hhz/QDXMMCNVE8zx48dNg2FCz6QQjI2N/RA8VBFmANnu3btXihnpG8pM9fX1EAi5du0aeWkVOAMBCF7yN+R0z4yOjq6NiYlpp9CgdBtIwXpPH6vgDKWLt0CygtM6MDCwBuUYZSKaOCksAiVY9wFOBePgDOOytPAGSKzNVCCC2bBhw69YdK7ypgpYimzbtk2dl7CM+hFcveOUHDylbTFO1YdhFbByx44dA1QFUP0VSJj4+Hjo6+sDq9U6iEmHKvFZTedQ50GYbN15SITVlwNlZWUnLRZL8s6dOwMOQ9UCTtKTra2ttdppt9V2kMF5cbmsjxuM43bMNrmUzc6fP6+GQiDGDoOJi4ubwb4qm5ubafyIE6nLxGqTPEsGo1cBOGNX0TyDYafC0CyOaxcVziyh53Z2dkJycvLMvn37PmpoaBgFR4jxYSbWdVIgI89Iq4CjR48CZjlYv369+tssqI6ODsjPz4f+/v668vLycxrEHHfkYdwC8SB6mGEV8Cl64cuuri5oa2tTG+EyGjZu3AiXLl1qefDgwV8lJSUFZkDV1tZCcXExXLx4sbWoqKgPFj0zx8GI9ZwO5W4M6ekZYeqpaqbqmaSqqkpNpcPDw4dwzfM9nrLduHEjEs+X0XV/Sx96LnqE1kLtBQUF3eDwCO8dGQyzV5rl+JyuegfXI29jRotiRlKnpFghHMzKyjqotVXS0tLacKPjF3bdHxjSq1evduAkepAD+ZsDYlC8V5w8ZBVg+PPq2MGMlkInqE4joTf45MmT4YyMjAPcA+ltLSQlJX2BafxnX6HI29QeK44TOTk57mCYZ0QoJ8OBM4yB6dkNkwGlSygsLFQvYtYB3BTMxFL+M+0eFgZqp4mJiU2+QKGX1fGIk/QIrn0aYXGsyDxjmAyMhO2jhaCGoUbX1NSkLSwsPMJqV8Fspu6lIZS6OYhjiOLwdU7fQM1HfRPD7wS1obZ0j0xpb4726Z49ezaJf2/S7s9ATUGNR41BjdJseRnke3WGwhrRTS9pD1mOGoeG15BxOOfoxuCkp0Ih6NeaEaSZGlieJyiCoc1FgsGldokGk8nBvAKOrWIGQ5uPsm0tt0BWDiicAaGuGhkZ+YqMw9StGzU4OKhCnT179hNsswY1FTXdE5QEJhc1S3tGogazXLOBwQSBl3tzIhQPtAL1VQJCTcNx8y1vHIUghSKFZE9PT7H2dlM1b+Wgrr1y5Uq77J75+fnplpaWMg2ch4nlYEI5z7hdensDpI4hrYNErcMMXJ32koG4ztf3pultz83NjWG99Ra2WQ0OL2VjZjwgeufUqVOqV8+cOdPIwdBLSNJeHg8TAh5WqJ6EfSmgt7IMNRJ1JThiOlnrOAMHshprmMKdoGSCpb9s3B3SYLIFGIqICJB7xisYi+RvfiypXw40DWGdlJaWRmMd141hk8V2OWm7ieYTXhBc3+BgaZyqAISjOYxSMVvXsBTNlzdiNQDgRao2AtK3pjggpmrqbGpqSsLPIN/dv38/gaBwUjTshMHcvn27JyUlpRmc5xpPMD599LIYnLNyUKKndKjGxsakXbt2deMCLIE8IVvs0YRM1fjdu3d/wrXN5+BcnzEgvor2uN3rjzAYMp5lPEoQlE5fA0fWo8GfhlCbKVFQ1pKNIfzcOHH58mWqaimVUwJI0+6n59D4pIlzmdZPMPiZzXjDjX47Le5g0Uu8x2zgPqWyKpjVe7x3+AUbq9NYjQbgp2dsBud5o8TP7d5kHAWcQchQfoEmLgn8HjOiBIF7o5hI1x6CEbLNP3bdqYAF44JzyWLzcN1i8DcT/o3awbm8Fz3DAy2A62INwPV/E3wWdx5inmBHuwChCBD6R2JwHge80TIQRQLjt7e8DTkGZgfX8cUMZTDAteFDkveaIlzjX9ySQs8X18r2t2VHUURPKoICmDR+eCO9aSdmOIub3/w9RgpgUpiJhvraXpa6jZKHGEqyusw0GLFzX+5RhN/8kYnMSNMMfyH/V/kHST6OYVElTPAAAAAASUVORK5CYII=";class rw extends M.Component{constructor(e){super(e);y(this,"renderAvatar",e=>{var i;const t=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const o=this.getCursorName(e);return M.createElement("img",{className:"cursor-selector-avatar",style:{width:o?19:28,height:o?19:28,position:o?"initial":"absolute",borderColor:o?"white":t,marginRight:o?4:0},src:(i=e.payload)==null?void 0:i.avatar,alt:"avatar"})}else return null});y(this,"getOpacity",e=>{const t=this.getCursorName(e),i=this.detectAvatar(e);return t===void 0&&i===void 0?0:1});y(this,"getCursorName",e=>{if(e.payload)return e.payload.nickName||e.payload.cursorName||e.payload.uid});y(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");y(this,"getCursorBackgroundColor",e=>{const t=this.getCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:t?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});y(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");y(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));y(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));y(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return M.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)})}render(){const{roomMember:e}=this.props,t=this.getCursorName(e);switch(e.memberState.currentApplianceName){case re.pencil:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"10px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-pencil-image",src:sw,alt:"pencilCursor"}))));case re.eraser:case re.pencilEraser:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"0px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-pencil-image",src:nw,alt:"pencilEraser"}))));case re.text:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-arrow-image",src:ow,alt:"textCursor"}))));case re.rectangle:case re.arrow:case re.straight:case re.shape:case re.ellipse:return M.createElement("div",{className:"cursor-box"},M.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},M.createElement("div",{className:"cursor-name"},M.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),t,this.renderTag(e))),M.createElement("div",null,M.createElement("img",{className:"cursor-arrow-image",src:iw,alt:"shapeCursor"}))));default:return null}}}const aw=a=>{const{className:s,info:e}=a,{roomMember:t,...i}=e||{};return M.createElement("div",{className:`${s}`,style:i?{transform:`translate(${i.x}px, ${i.y}px)`}:{display:"none"}},t&&M.createElement(rw,{roomMember:t}))},cw=a=>{const{className:s,manager:e}=a,[t,i]=M.useState();M.useEffect(()=>(e.internalMsgEmitter.on([se.Cursor,e.viewId],o),()=>{e.internalMsgEmitter.off([se.Cursor,e.viewId],o)}),[e]);function o(r){i(r)}return M.useMemo(()=>{if(t!=null&&t.length){const r=t.map(c=>{var l;return c.roomMember?M.createElement(aw,{key:(l=c.roomMember)==null?void 0:l.memberId,className:s,info:c}):null});return M.createElement(M.Fragment,null,r)}return null},[t])},lw=a=>{const{viewId:s,miniMapCanvas:e,highlightColor:t,miniMapManager:i,contianer:o}=a,[n,r]=M.useState();M.useEffect(()=>(c(),i.listener.addListener([s,"viewCameraUpate"],c),i.listener.emitAsync([s,"miniMapCreate"],!0),()=>{i.listener.removeListener([s,"viewCameraUpate"],c)}),[]);const c=()=>{const h=i.maps.get(s);h&&l(h.miniMapCamera,h.viewCamera)},l=(h,d)=>{const{width:f,height:g}=o.getBoundingClientRect(),p=Math.min(f/h.width,g/h.height),m=d.width/d.scale,N=d.height/d.scale,v=[d.centerX,d.centerY],I=[h.centerX,h.centerY],k=[v[0]-I[0],v[1]-I[1]],w=Math.min(h.scale*p,h.scale*p),S=[k[0]*w,k[1]*w,m,N,w];r(S)},u=h=>{var d;if(i.control.renderControl.isWritable){const f=h.nativeEvent.target||h.nativeEvent.srcElement;if(f&&h.nativeEvent&&n){const{width:g,height:p}=f.getBoundingClientRect(),[m,N]=[g/2,p/2],[v,I]=[(h.nativeEvent.offsetX-m)/n[4],(h.nativeEvent.offsetY-N)/n[4]],k=i.maps.get(s);if(k!=null&&k.viewCamera){const[w,S]=[k.miniMapCamera.centerX+v,k.miniMapCamera.centerY+I];(d=i.control.room)==null||d.moveCamera({centerX:w,centerY:S,animationMode:"immediately"})}}}};return M.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:u},M.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),n&&M.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:n[2]*n[4],height:n[3]*n[4],boxSizing:"content-box",border:`2px solid ${t}`,transform:`translate(calc(-50% + ${n[0]}px), calc(-50% + ${n[1]}px))`,pointerEvents:"none"}}))},hw=a=>{const{miniMapManager:s,active:e,className:t}=a,i=M.useMemo(()=>{const o=s.maps;if(e){const n=o.get(e);if(n){const{miniMapCamera:r,viewCamera:c,...l}=n;if(l.contianer&&r&&c){const u=s.highlightColor;return as.createPortal(M.createElement(lw,{viewId:e,...l,highlightColor:u,miniMapManager:s}),l.contianer)}}}return null},[e,s]);return M.createElement("div",{className:t},i)},Ne=M.createContext({mananger:void 0,floatBarColors:[],floatBarData:void 0,dpr:1,angle:0,operationType:F.None,scale:[1,1],setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class ai extends M.Component{constructor(e){var t,i;super(e);y(this,"setAngle",e=>{this.setState({angle:e})});y(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,dpr:1,angle:0,operationType:F.None,scale:[1,1],editors:this.editors,activeTextId:(t=this.props.mananger.control.textEditorManager)==null?void 0:t.activeId,activeMiniMapViewId:(i=this.props.mananger.control.miniMapManager)==null?void 0:i.activeViewId}}get editors(){return ke(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBar(e,t){const i=e&&t&&{...this.state.floatBarData,...t}||void 0;this.setState({showFloatBar:e,floatBarData:i,angle:0})}setActiveTextEditor(e){this.setState({activeTextId:e,editors:this.editors})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var t,i,o,n,r,c,l;const e=!!((i=(t=this.props.mananger.control)==null?void 0:t.room)!=null&&i.floatBarOptions);return M.createElement("div",{className:Pe.Container},!this.props.mananger.control.hasOffscreenCanvas()&&M.createElement("div",{className:Pe.CanvasBox,ref:this.props.refs.canvasContainerRef})||M.createElement("div",{className:Pe.CanvasBox,onMouseDown:u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},onMouseUp:u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},onPointerDown:u=>{u.stopPropagation()},onPointerUp:u=>{u.stopPropagation()},onTouchStart:u=>{u.stopPropagation()},onTouchEnd:u=>{u.stopPropagation()},onMouseMove:u=>{this.props.mananger.cursorMouseMove(u)}},M.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),M.createElement("canvas",{id:"serviceCanvas",className:Pe.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),M.createElement("canvas",{id:"localCanvas",className:Pe.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),M.createElement("div",{id:"subLocalCanvas",className:Pe.CanvasBoxSub,ref:this.props.refs.subLocalCanvasContainerRef}),M.createElement("canvas",{id:"topCanvas",className:Pe.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.mananger.control.hasOffscreenCanvas()&&this.props.refs.snapshotContainerRef&&M.createElement("div",{className:Pe.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,M.createElement(Ne.Provider,{value:{mananger:this.props.mananger,floatBarColors:e&&((r=(n=(o=this.props.mananger.control)==null?void 0:o.room)==null?void 0:n.floatBarOptions)==null?void 0:r.colors)||[],floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&M.createElement(tw,{ref:this.props.refs.floatBarRef,editors:this.state.editors,activeTextId:this.state.activeTextId,isHide:e})||null,((c=this.state.editors)==null?void 0:c.size)&&M.createElement($m,{className:Pe.TextEditorContainer,showFloatBtns:e,manager:this.props.mananger,selectIds:((l=this.state.floatBarData)==null?void 0:l.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null),M.createElement(cw,{className:Pe.CursorBox,manager:this.props.mananger}),M.createElement(hw,{className:Pe.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class uw extends sn{constructor(e,t){super(e,t);y(this,"width",1e3);y(this,"height",1e3);y(this,"dpr",et());y(this,"vDom");y(this,"eventTragetElement");y(this,"snapshotContainerRef");y(this,"canvasContainerRef",M.createRef());y(this,"subLocalCanvasContainerRef",M.createRef());y(this,"canvasTopRef",M.createRef());y(this,"canvasServiceFloatRef",M.createRef());y(this,"canvasFloatRef",M.createRef());y(this,"canvasBgRef",M.createRef());y(this,"floatBarRef",M.createRef());y(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=M.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth||this.width,t=this.eventTragetElement.offsetHeight||this.height;let i=et();this.canvasBgRef.current&&(i=et(this.canvasBgRef.current.getContext("2d"))),i!==this.dpr&&(this.dpr=i,this.control.worker.updateDpr(this.viewId,this.dpr)),e&&t&&this.canvasContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${t}px`),e&&t&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t),e&&t&&this.canvasBgRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=t*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=t*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=t*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=t*this.dpr))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const t=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const i of t)i.remove()}}}createMainViewDisplayer(e){const t=document.createElement("div");return t.className="appliance-plugin-main-view-displayer",e.appendChild(t),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),as.render(M.createElement(ai,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),t),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class dw extends _M{constructor(e,t,i){super(e,t,i);y(this,"dpr",et());y(this,"width",1e3);y(this,"height",1e3);y(this,"vDom");y(this,"eventTragetElement");y(this,"canvasContainerRef",M.createRef());y(this,"subLocalCanvasContainerRef",M.createRef());y(this,"canvasTopRef",M.createRef());y(this,"canvasServiceFloatRef",M.createRef());y(this,"canvasFloatRef",M.createRef());y(this,"canvasBgRef",M.createRef());y(this,"floatBarRef",M.createRef());y(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){let e=et();if(this.canvasBgRef.current&&(e=et(this.canvasBgRef.current.getContext("2d"))),e!==this.dpr&&(this.dpr=e,this.control.worker.updateDpr(this.viewId,this.dpr)),this.canvasContainerRef.current){const t=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;t&&i&&(t!==this.width||i!==this.height)&&(this.width=t,this.height=i,this.canvasContainerRef.current.style.width=`${t}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){const t=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;t&&i&&(t!==this.width||i!==this.height)&&(this.width=t,this.height=i,this.canvasBgRef.current.width=t*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=t*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=t*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=t*this.dpr,this.canvasTopRef.current.height=i*this.dpr))}}}createAppViewDisplayer(e,t){const i=document.createElement("div");return i.className="appliance-plugin-app-view-displayer",t.appendChild(i),this.eventTragetElement=t.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),as.render(M.createElement(ai,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),i),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Ue extends Tt{constructor(e){super(e);y(this,"focuedViewId");y(this,"focuedView");y(this,"control");y(this,"tmpFocusedViewId");y(this,"checkScaleTimer");y(this,"onMainViewRelease",async e=>{this.control.textEditorManager.clear(pe,!0),this.mainViewDestroy(e),await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),this.onMainViewMounted(e);const t=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(t),this.control.clearSnapshootData()});y(this,"mainViewDestroy",e=>{var t;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const i=e.divElement;if(i){const o=i.getElementsByClassName("appliance-plugin-main-view-displayer");for(const n of o)n.remove()}if(this.mainView.container&&i!==this.mainView.container){const o=this.mainView.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const n of o)n.remove()}(t=this.control.worker)==null||t.destroyViewWorker(this.mainView.id,!0),this.mainView.displayer.destroy(),this.mainView=void 0}});y(this,"onMainViewMounted",e=>{const t=e.divElement;if(!t||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const o=new uw(this.control,Te.InternalMsgEmitter),n=e.size.width||o.width,r=e.size.height||o.height,l={dpr:o.dpr,originalPoint:[n/2,r/2],offscreenCanvasOpt:{...Ue.defaultScreenCanvasOpt,width:n,height:r},layerOpt:{...Ue.defaultLayerOpt,width:n,height:r},cameraOpt:{...Ue.defaultCameraOpt,width:n,height:r}},{scale:u,...h}=e.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u},this.focuedViewId=pe,this.createMianView({id:pe,container:t,displayer:o,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.focuedView=this.mainView,o.createMainViewDisplayer(t),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});y(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData&&this.updateMainViewCamera()});y(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.updateMainViewCamera()});y(this,"updateMainViewCamera",()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera,t=this.mainView.cameraOpt;if(t){const i=t.width,o=t.height,{width:n,height:r}=this.mainView.viewData.size;(n!==i||r!==o)&&this.mainView.displayer.updateSize();const c=e.scale===1/0?1:e.scale,l=e.centerX||0,u=e.centerY||0,h={...t,scale:c,centerX:l,centerY:u,width:n,height:r};j.isEqual(t,h)||(this.mainView.cameraOpt=h),this.checkScaleTimer&&e.scale==1/0&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),!this.checkScaleTimer&&e.scale===1/0&&this.mainView.viewData&&this.mainView.viewData.camera.scale===1/0&&(this.checkScaleTimer=setTimeout(()=>{var d,f;(f=(d=this.mainView)==null?void 0:d.viewData)==null||f.moveCamera({scale:c,centerX:l,centerY:u,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});y(this,"onAppViewMounted",async e=>{var d;const{appId:t,view:i}=e,o=i.divElement;if(!o||!i.focusScenePath)return;const n=this.appViews.get(t);if(n&&n.displayer){let f=o.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of f)g.remove();if(n.container&&n.container!==o){f=n.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of f)g.remove()}this.destroyAppView(e.appId,!0),(d=this.control.worker)==null||d.destroyViewWorker(t,!0),await new Promise(g=>{setTimeout(()=>{g(!0)},0)})}const r=new dw(t,this.control,Te.InternalMsgEmitter),c=i.size.width||r.width,l=i.size.height||r.height,h={dpr:r.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...Ue.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...Ue.defaultLayerOpt,width:c,height:l},cameraOpt:{...Ue.defaultCameraOpt,...i.camera,width:c,height:l}};if(this.createAppView({id:t,container:o,displayer:r,cameraOpt:h.cameraOpt,focusScenePath:i.focusScenePath,viewData:i}),r.createAppViewDisplayer(t,o),i.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,t)),i.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,t)),i.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===t){const f=this.control.worker.getLocalWorkViewId();f&&f!==t?this.setFocuedViewId(f):this.setFocuedViewId(t),this.tmpFocusedViewId=void 0}setTimeout(()=>{this.onAppViewCameraUpdated(t)},0)});y(this,"onAppViewSizeUpdated",async e=>{await new Promise(i=>{setTimeout(()=>{i(!0)},0)});const t=this.appViews.get(e);t&&t.viewData&&this.updateAppCamera(e)});y(this,"onAppViewCameraUpdated",async e=>{await new Promise(t=>{setTimeout(()=>{t(!0)},0)}),this.updateAppCamera(e)});y(this,"updateAppCamera",e=>{const t=this.appViews.get(e);if(t&&t.viewData){const i=t.viewData.camera,o=t.cameraOpt;if(o){const{width:n,height:r}=t.viewData.size,c=o.width,l=o.height;(n!==c||r!==l)&&t.displayer.updateSize();const u=i.scale===1/0?1:i.scale,h=i.centerX||0,d=i.centerY||0,f={...o,scale:u,centerX:h,centerY:d,width:n,height:r};j.isEqual(f,o)||(t.cameraOpt=f)}}});this.control=e.control}getViewInitData(e){var i;const t=this.getView(e);if(t){const{width:o,height:n,dpr:r}=t.displayer;(i=this.control.pluginOptions.canvasOpt)!=null&&i.contextType&&(Ue.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.canvasOpt.contextType);const c={dpr:r,originalPoint:[o/2,n/2],offscreenCanvasOpt:{...Ue.defaultScreenCanvasOpt,width:o,height:n},layerOpt:{...Ue.defaultLayerOpt,width:o,height:n},cameraOpt:{...Ue.defaultCameraOpt,width:o,height:n}};if(t.viewData){const{scale:l,...u}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...u,scale:l===1/0?1:l}}return c}}async mountView(e){var i,o;const t=this.getView(e);if(t){e===((i=this.mainView)==null?void 0:i.id)&&(this.control.cursor.activeCollector(),await this.control.activeWorker());const n=this.getViewInitData(e);if(n&&((o=this.control.worker)==null||o.createViewWorker(e,n)),t.focusScenePath&&this.control.collector){if(this.control.collector.authStorage){const{renderAuth:r,pageAuth:c}=this.control.collector.authStorage;if(r){const l=r[e];if(l){const{render:u,hide:h,clear:d}=l;this.control.renderControl.syncRenderUids(e,u,h,d);return}}if(c){const l=c[e];if(l){this.control.renderControl.syncPageAuth(e,l,!0);return}}}this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1})}}}listenerWindowManager(e){e.emitter.on("focusedChange",t=>{const i=t||pe;if(this.focuedViewId!==i)if(this.getView(i)){const n=this.control.worker.getLocalWorkViewId();n&&n!==i?this.setFocuedViewId(n):this.setFocuedViewId(i)}else this.tmpFocusedViewId=i}),e.emitter.on("mainViewScenePathChange",t=>{this.control.onSceneChange(t,pe)}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",t=>{this.appViews.get(t.appId)&&(this.destroyAppView(t.appId),this.control.worker.destroyViewWorker(t.appId))}),e.emitter.on("onAppScenePathChange",t=>{const{appId:i,view:o}=t;this.control.onSceneChange(o.focusScenePath,i)}),e.emitter.on("appsChange",t=>{for(const i of this.appViews.keys())t.includes(i)||(this.destroyAppView(i),this.control.worker.destroyViewWorker(i,!0))})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class tt extends Te{constructor(e){super(e);y(this,"windowManager");y(this,"viewContainerManager");const t={control:this,internalMsgEmitter:Te.InternalMsgEmitter,publicMsgEmitter:Te.PublicMsgEmitter};this.viewContainerManager=new Ue(t)}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,t)=>{e&&Object.keys(e).forEach(i=>{var n;const o=(n=e[i])==null?void 0:n.newValue;this.renderControl.syncRenderUids(i,o==null?void 0:o.render,o==null?void 0:o.hide,o==null?void 0:o.clear)}),t&&Object.keys(t).forEach(i=>{var n;const o=(n=t[i])==null?void 0:n.newValue;this.renderControl.syncPageAuth(i,o)})}),this.collector.addStorageStateListener(e=>{var r,c;if((r=this.collector)!=null&&r.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(pe,!0);return}const{diffView:t,diffScenePath:i,diffData:o}=e,n=new Map;if(t){let l;Object.keys(t).forEach(u=>{var d;const h=t[u];if(h&&!h.newValue)(d=this.worker)==null||d.clearViewScenePath(u,!0),h.oldValue&&(l=h.oldValue);else if(h&&h.newValue){for(const f of Object.keys(h.newValue))this.worker.pullServiceData(u,f,{isAsync:!1,useAnimation:!1});l=h.newValue}if(l)for(const f of Object.values(l)){const g=new Set;for(const p of Object.keys(f))p&&g.add(p);n.set(u,g)}})}if(i){let l;Object.keys(i).forEach(u=>{var d;const h=i[u];if(h&&h.viewId&&!h.newValue?((d=this.worker)==null||d.clearViewScenePath(h.viewId,!0),h.oldValue&&(l=h.oldValue)):h&&h.viewId&&h.newValue&&(this.worker.pullServiceData(h.viewId,u,{isAsync:!1,useAnimation:!1}),l=h.newValue),h!=null&&h.viewId&&l){const f=new Set;for(const g of Object.keys(l))g&&f.add(g),n.set(h.viewId,f)}})}o&&Object.keys(o).forEach(l=>{var h,d;const u=o[l];if(u){const{viewId:f}=u,g=n.get(f)||new Set;g.add(l),n.set(f,g),(h=this.worker)==null||h.onServiceDerive(l,u),(d=this.miniMapManager)==null||d.updateMiniMapCamera(f)}});for(const[l,u]of n.entries())Te.InternalMsgEmitter.emit("excludeIds",[...u],l)}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var t,i;if((t=this.collector)!=null&&t.serviceStorage){const o=[];this.viewContainerManager.getAllViews().forEach(n=>{var r;if(n&&n.focusScenePath&&((r=this.collector)!=null&&r.serviceStorage[n.id])&&this.collector.serviceStorage[n.id][n.focusScenePath]){const c=Object.keys(this.collector.serviceStorage[n.id][n.focusScenePath]).filter(l=>{var u;return(u=this.collector)==null?void 0:u.isSelector(l)}).map(l=>({viewId:n.id,scenePath:n.focusScenePath,key:l}));c.length&&o.push(...c)}}),o.forEach(({key:n,viewId:r,scenePath:c})=>{var u,h;const l=(u=this.collector)==null?void 0:u.getUidFromKey(n);l&&!e.online.includes(l)&&(this.renderControl.isWritable&&((h=this.collector)==null||h.updateValue(n,void 0,{viewId:r,scenePath:c,isSync:!0})),this.worker.blurSelector(r,c,n))})}(i=this.cursor)==null||i.updateRoomMembers(e)}))}async activeWorker(){await this.worker.init()}setWindowManager(e){var t,i,o,n,r;this.windowManager=e,(i=(t=this.windowManager)==null?void 0:t.mainView)!=null&&i.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(r=(n=(o=this.windowManager.appManager)==null?void 0:o.viewManager)==null?void 0:n.views)!=null&&r.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const U=class U extends X.InvisiblePlugin{constructor(){super(...arguments);y(this,"onPhaseChanged",e=>{var t;e===X.RoomPhase.Reconnecting&&((t=U.currentManager)==null||t.setSnapshootData())});y(this,"updateRoomWritable",()=>{var e;(e=U.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});y(this,"roomStateChangeListener",async e=>{var t,i;e!=null&&e.roomMembers&&((t=U.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(X.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((i=U.currentManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,t){!t.options.cdn.fullWorkerUrl&&!t.options.cdn.subWorkerUrl&&U.logger.error("[ApplianceMultiPlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl");const i=e.displayer,o=i.callbacks.on,n=i.callbacks.off,r=i.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState;let u;X.isRoom(i)&&(u=i.setWritable),t!=null&&t.logger&&(U.logger=t.logger),t.options&&(U.options={...Se,...t.options});let h=i.getInvisiblePlugin(U.kind);h||(h=await U.createApplianceMultiPlugin(i,U.kind)),i&&h&&U.createCurrentManager(e,U.options,h),h&&U.currentManager&&(U.currentManager.bindPlugin(h),h.init(i));const d={displayer:i,windowManager:e,currentManager:U.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(p){var v;U.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const m=(e.mainView||i).getBoundingRect(p),N=await((v=U.currentManager)==null?void 0:v.getBoundingRect(p));return!m.width||!m.height?N:ii(m,N)},screenshotToCanvasAsync:async function(p,m,N,v,I,k){var E;U.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let w=N,S=v,b=I.scale;w>this.maxScreenshotWidth&&(b=this.maxScreenshotWidth/w*b,w=this.maxScreenshotWidth),S>this.maxScreenshotHeight&&(b=Math.min(this.maxScreenshotHeight/S*b,b),S=this.maxScreenshotHeight),I.scale=b;const x=document.createElement("canvas"),P=x.getContext("2d");x.width=w*(k||1),x.height=S*(k||1),P&&((e.mainView||i).screenshotToCanvas(P,m,w,S,I,k),p.drawImage(x,Math.floor((N-w)/2),Math.floor((v-S)/2),w*(k||1),S*(k||1),0,0,w,S),x.remove()),U.currentManager&&await((E=U.currentManager)==null?void 0:E.screenshotToCanvas(p,m,w,S,I,Math.floor((N-w)/2),Math.floor((v-S)/2)))},scenePreviewAsync:async function(p,m,N,v,I){U.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||i).scenePreview(p,m,N,v,I);const k=document.createElement("img");k.className="appliance-plugin-fill-scene-snapshot-img",m.append(k),getComputedStyle(m).position||(m.style.position="relative"),U.currentManager&&await U.currentManager.scenePreview(p,k)},fillSceneSnapshotAsync:async function(p,m,N,v,I){U.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),m.innerHTML="",(e.mainView||i).fillSceneSnapshot(p,m,N,v,I);const k=N||e.mainView.size.width,w=v||e.mainView.size.height;let S=await this.getBoundingRectAsync(p);S||(S={originX:0,originY:0,width:k,height:w});let b=Math.max(S==null?void 0:S.width,k),x=Math.max(S==null?void 0:S.height,w),P=1;const E=b>k&&Math.min(k/b,P)||P,R=x>w&&Math.min(w/x,P)||P;E<=R?(b=E<1&&k||b,x=Math.floor(x*E)+1,P=E):E>R&&(x=R<1&&w||x,b=Math.floor(b*R)+1,P=R);const O={scale:P,centerX:S.originX+S.width/2,centerY:S.originY+S.height/2},D=document.createElement("canvas"),A=D.getContext("2d");D.width=b,D.height=x,A&&await this.screenshotToCanvasAsync(A,p,b,x,O,devicePixelRatio);const G=document.createElement("img");G.className="appliance-plugin-fill-scene-snapshot-img",G.src=D.toDataURL(),G.onload=()=>{D.remove()},G.onerror=()=>{D.remove(),G.remove()},m.append(G),getComputedStyle(m).position||(m.style.position="relative")},_callbacksOn:function(p,m){U.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?tt.InternalMsgEmitter.on(p,m):o.call(i.callbacks,p,m)},_callbacksOnce:function(p,m){U.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?tt.InternalMsgEmitter.on(p,m):r.call(i.callbacks,p,m)},_callbacksOff:function(p,m){U.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?tt.InternalMsgEmitter.off(p,m):n.call(i.callbacks,p,m)},canRedoSteps(){if(U.logger.info("[ApplianceMultiPlugin] canRedoSteps"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization){const p=U.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.redoStack.filter(N=>N.scenePath===m).length}return 0},canUndoSteps(){if(U.logger.info("[ApplianceMultiPlugin] canUndoSteps"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization){const p=U.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.undoStack.filter(N=>N.scenePath===m).length}return 0},undo:function(){return U.logger.info("[ApplianceMultiPlugin] undo"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization?U.currentManager.viewContainerManager.undo():0},redo:function(){return U.logger.info("[ApplianceMultiPlugin] redo"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization?U.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){U.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),U.currentManager&&X.isRoom(i)&&i.isWritable&&(U.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(p){U.logger.info("[ApplianceMultiPlugin] insertImage"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.insertImage(pe,p)},lockImage:function(p,m){U.logger.info("[ApplianceMultiPlugin] lockImage"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.lockImage(pe,p,m)},completeImageUpload:function(p,m){U.logger.info("[ApplianceMultiPlugin] completeImageUpload"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.completeImageUpload(pe,p,m)},getImagesInformation:function(p){return U.logger.info("[ApplianceMultiPlugin] completeImageUpload"),U.currentManager&&X.isRoom(i)&&i.isWritable?U.currentManager.worker.getImagesInformation(p):[]},callbacks:()=>(U.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...i.callbacks,on:d._callbacksOn.bind(d),once:d._callbacksOnce.bind(d),off:d._callbacksOff.bind(d)}),destroy(){U.currentManager&&(U.logger.info("[ApplianceMultiPlugin] destroy"),U.currentManager.destroy(),U.currentManager=void 0)},setMemberState(p){U.logger.info(`[ApplianceMultiPlugin] setMemberState ${JSON.stringify(p)}`);const m=Object.keys(p);if(X.isRoom(i)&&i.isWritable){m.includes("currentApplianceName")&&(p.currentApplianceName&&p.currentApplianceName===re.laserPen?(p.currentApplianceName=re.pencil,p.useLaserPen=!0):p.currentApplianceName&&p.currentApplianceName===re.pencil&&(p.useLaserPen=!1)),l.call(e.mainView,p);return}throw new Error("[ApplianceMultiPlugin] setMemberState must be called in writable room")},setPerformancePriority(p){U.logger.info("[ApplianceMultiPlugin] setPriority"),U.currentManager&&U.currentManager.setPriority(p)},createMiniMap:async function(p,m){if(U.logger.info("[ApplianceMultiPlugin] createMiniMap"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.createMiniMap(p,m)},destroyMiniMap:async function(p){if(U.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.destroyMiniMap(p)},filterRenderByUid(p,m,N){if(U.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.filterRenderByUid(p,m,N)},cancelFilterRender(p,m){if(U.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),U.currentManager&&X.isRoom(i)&&i.isWritable)return U.currentManager.cancelFilterRender(p,m)},addListener:(p,m)=>{U.logger.info(`[ApplianceMultiPlugin] addListener ${p}`),tt.PublicMsgEmitter.on(p,m)},removeListener:(p,m)=>{U.logger.info(`[ApplianceMultiPlugin] removeListener ${p}`),tt.PublicMsgEmitter.off(p,m)},usePlugin:p=>{var m;U.logger.info("[ApplianceMultiPlugin] usePlugin"),(m=U.currentManager)==null||m.usePlugin(p)},getDisableDeviceInputs(){if(U.logger.info("[ApplianceMultiPlugin] getDisableDeviceInputs"),U.currentManager&&X.isRoom(i))return U.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){U.logger.info("[ApplianceMultiPlugin] setDisableDeviceInputs"),U.currentManager&&X.isRoom(i)&&(U.currentManager.disableDeviceInputs=p)},getDisableEraseImage(){if(U.logger.info("[ApplianceMultiPlugin] getDisableEraseImage"),U.currentManager&&X.isRoom(i))return U.currentManager.disableEraseImage},setDisableEraseImage(p){U.logger.info("[ApplianceMultiPlugin] setDisableEraseImage"),U.currentManager&&X.isRoom(i)&&(U.currentManager.disableEraseImage=p)},setWritable:async function(p){var m;U.logger.info(`[ApplianceMultiPlugin] setWritable ${p}`),X.isRoom(i)&&u&&(await((m=U.currentManager)==null?void 0:m.setWritable(p)),await u.call(i,p))}},f=(p,m)=>{if(U.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${m}`),typeof p[m]=="function"||typeof p[m]>"u"){p[m]=d[m];return}m==="callbacks"&&(p.callbacks.on=d._callbacksOn.bind(d),p.callbacks.off=d._callbacksOff.bind(d),p.callbacks.once=d._callbacksOnce.bind(d))};f(e,"undo"),f(e,"redo"),f(e,"cleanCurrentScene"),f(e,"insertImage"),f(e,"completeImageUpload"),f(e,"lockImage"),f(i,"getImagesInformation"),f(i,"callbacks"),f(i,"screenshotToCanvasAsync"),f(i,"getBoundingRectAsync"),f(i,"scenePreviewAsync"),f(i,"fillSceneSnapshotAsync"),f(e.mainView,"setMemberState"),X.isRoom(i)&&f(i,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return d.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return d.canRedoSteps()}}),tt.InternalMsgEmitter.on("onCanUndoStepsUpdate",p=>{e.emitter.emit("canUndoStepsChange",p)}),tt.InternalMsgEmitter.on("onCanRedoStepsUpdate",p=>{e.emitter.emit("canRedoStepsChange",p)});const g={...d,callbacks:d.callbacks()};return Object.defineProperty(g,"disableDeviceInputs",{set(p){d.setDisableDeviceInputs(p)},get(){return d.getDisableDeviceInputs()}}),Object.defineProperty(g,"disableEraseImage",{set(p){d.setDisableEraseImage(p)},get(){return d.getDisableEraseImage()}}),e._appliancePlugin=g,e._appliancePlugin}static onCreate(e){e&&U.currentManager&&(U.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,t){try{await e.createInvisiblePlugin(U,{})}catch{if(!e.isWritable){await e.setWritable(!0);const n=await this.createApplianceMultiPlugin(e,t);return await e.setWritable(!1),n}}let i=e.getInvisiblePlugin(t);return i||(i=await U.createApplianceMultiPlugin(e,t)),i}get isReplay(){return X.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;const t=e.state;(i=U.currentManager)==null||i.onRoomMembersChange(t.roomMembers),X.isRoom(e)&&((o=U.currentManager)==null||o.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;U.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=U.currentManager)==null||e.destroy(),U.currentManager=void 0}};y(U,"kind","appliance-multi-plugin"),y(U,"currentManager"),y(U,"logger",{info:console.log,warn:console.warn,error:console.error}),y(U,"options",Se),y(U,"createCurrentManager",(e,t,i)=>{U.currentManager&&U.currentManager.destroy();const o={plugin:i,displayer:e.displayer,options:t},n=new tt(o);U.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),n.setWindowManager(e),U.currentManager=n,e.room&&e.room.logger.info(`[ApplianceMultiPlugin] use ${Ks}`)});let Rs=U;class pw extends sn{constructor(e,t){super(e,t);y(this,"width",1e3);y(this,"height",1e3);y(this,"dpr",et());y(this,"vDom");y(this,"viewId",pe);y(this,"eventTragetElement");y(this,"snapshotContainerRef");y(this,"canvasContainerRef",M.createRef());y(this,"subLocalCanvasContainerRef",M.createRef());y(this,"canvasTopRef",M.createRef());y(this,"canvasServiceFloatRef",M.createRef());y(this,"canvasFloatRef",M.createRef());y(this,"canvasBgRef",M.createRef());y(this,"floatBarRef",M.createRef());y(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=M.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,t=this.eventTragetElement.offsetHeight;let i=et();this.canvasBgRef.current&&(i=et(this.canvasBgRef.current.getContext("2d"))),i!==this.dpr&&(this.dpr=i,this.control.worker.updateDpr(this.viewId,this.dpr)),e&&t&&this.canvasContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t),e&&t&&this.canvasBgRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=t*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=t*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=t*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=t*this.dpr))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",as.render(M.createElement(ai,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Ke extends Tt{constructor(e){super(e);y(this,"focuedViewId");y(this,"control");y(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new pw(this.control,Te.InternalMsgEmitter);this.focuedViewId=pe;const{width:t,height:i,dpr:o}=e,n={dpr:o,originalPoint:[t/2,i/2],offscreenCanvasOpt:{...Ke.defaultScreenCanvasOpt,width:t,height:i},layerOpt:{...Ke.defaultLayerOpt,width:t,height:i},cameraOpt:{...Ke.defaultCameraOpt,width:t,height:i}},r=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(r){const{scale:c,...l}=r.camera;n.cameraOpt={...n.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:pe,displayer:e,focusScenePath:r.focusScenePath||r.scenePath,cameraOpt:n.cameraOpt,viewData:r}),this.focuedView=this.mainView,e.createMainViewDisplayer(this.control.divMainView)}}getViewInitData(e){var i;const t=this.getView(e);if(t){const{width:o,height:n,dpr:r}=t.displayer;(i=this.control.pluginOptions.canvasOpt)!=null&&i.contextType&&(Ke.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.canvasOpt.contextType);const c={dpr:r,originalPoint:[o/2,n/2],offscreenCanvasOpt:{...Ke.defaultScreenCanvasOpt,width:o,height:n},layerOpt:{...Ke.defaultLayerOpt,width:o,height:n},cameraOpt:{...Ke.defaultCameraOpt,width:o,height:n}};if(t.viewData){const{scale:l,...u}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...u,scale:l===1/0?1:l}}return c}}async mountView(e){var i;const t=this.getView(e);if(t){this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.activeWorker());const o=this.getViewInitData(e);o&&((i=this.control.worker)==null||i.createViewWorker(e,o)),t.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1})}}}class Be extends Te{constructor(e){super(e);y(this,"viewContainerManager");y(this,"divMainView");y(this,"onCameraChange",Ms(e=>{var i;const t=this.viewContainerManager.mainView;t&&t.cameraOpt&&(t.cameraOpt.width!==e.width||t.cameraOpt.height!==e.height)&&((i=this.viewContainerManager.mainView)==null||i.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},ys,{leading:!1}));const t={control:this,internalMsgEmitter:Be.InternalMsgEmitter,publicMsgEmitter:Be.PublicMsgEmitter};this.viewContainerManager=new Ke(t)}init(){Be.InternalMsgEmitter.on(se.BindMainView,e=>{this.divMainView=e,this.plugin&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView()})}activePlugin(){this.plugin&&this.divMainView&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView(),this.collector&&(this.collector.addStorageStateListener(e=>{var r,c;if((r=this.collector)!=null&&r.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(pe,!0);return}const{diffView:t,diffScenePath:i,diffData:o}=e,n=new Map;if(t){let l;Object.keys(t).forEach(u=>{var d;const h=t[u];if(h&&!h.newValue)(d=this.worker)==null||d.clearViewScenePath(u,!0),h.oldValue&&(l=h.oldValue);else if(h&&h.newValue){for(const f of Object.keys(h.newValue))this.worker.pullServiceData(u,f,{isAsync:!1,useAnimation:!0});l=h.newValue}if(l)for(const f of Object.values(l)){const g=new Set;for(const p of Object.keys(f))p&&g.add(p);n.set(u,g)}})}if(i){let l;Object.keys(i).forEach(u=>{var d;const h=i[u];if(h&&h.viewId&&!h.newValue?((d=this.worker)==null||d.clearViewScenePath(h.viewId,!0),h.oldValue&&(l=h.oldValue)):h&&h.viewId&&h.newValue&&(this.worker.pullServiceData(h.viewId,u,{isAsync:!1,useAnimation:!0}),l=h.newValue),h!=null&&h.viewId&&l){const f=new Set;for(const g of Object.keys(l))g&&f.add(g),n.set(h.viewId,f)}})}o&&Object.keys(o).forEach(l=>{var h,d;const u=o[l];if(u){const{viewId:f}=u,g=n.get(f)||new Set;g.add(l),n.set(f,g),(h=this.worker)==null||h.onServiceDerive(l,u),(d=this.miniMapManager)==null||d.updateMiniMapCamera(f)}});for(const[l,u]of n.entries())Te.InternalMsgEmitter.emit("excludeIds",[...u],l)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var t,i,o,n;if((t=this.collector)!=null&&t.serviceStorage){const r=[];this.viewContainerManager.getAllViews().forEach(c=>{var l,u,h;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&((u=this.collector)!=null&&u.serviceStorage[c.id][c.focusScenePath])){const d=Object.keys((h=this.collector)==null?void 0:h.serviceStorage[c.id][c.focusScenePath]).filter(f=>{var g;return(g=this.collector)==null?void 0:g.isSelector(f)}).map(f=>({viewId:c.id,scenePath:c.focusScenePath,key:f}));d.length&&r.push(...d)}}),r.forEach(({key:c,viewId:l,scenePath:u})=>{var d,f;const h=(d=this.collector)==null?void 0:d.getUidFromKey(c);h&&!e.online.includes(h)&&(this.renderControl.isWritable&&((f=this.collector)==null||f.updateValue(c,void 0,{viewId:l,scenePath:u,isSync:!0})),this.worker.blurSelector(l,u,c))})}(o=(i=this.cursor)==null?void 0:i.eventCollector)!=null&&o.serviceStorage&&Object.keys((n=this.cursor)==null?void 0:n.eventCollector.serviceStorage).forEach(c=>{var l,u;e.online.includes(c)||(u=(l=this.cursor)==null?void 0:l.eventCollector)==null||u.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.worker.init()}}const W=class W extends X.InvisiblePlugin{constructor(){super(...arguments);y(this,"onPhaseChanged",e=>{var t;e===X.RoomPhase.Reconnecting&&((t=W.currentManager)==null||t.setSnapshootData())});y(this,"updateRoomWritable",()=>{var e;(e=W.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});y(this,"roomStateChangeListener",async e=>{var t,i;W.currentManager instanceof Be&&(e.cameraState&&W.currentManager.onCameraChange(e.cameraState),e.sceneState&&W.currentManager.onSceneChange(e.sceneState.scenePath,pe)),e!=null&&e.roomMembers&&((t=W.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(X.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((i=W.currentManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,t){const i=e.callbacks.on,o=e.callbacks.off,n=e.callbacks.once,r=e.cleanCurrentScene.bind(e),c=e.setMemberState.bind(e);let l;X.isRoom(e)&&(l=e.setWritable),t!=null&&t.logger&&(W.logger=t.logger),t.options&&(W.options={...Se,...t.options});let u=e.getInvisiblePlugin(W.kind);u||(u=await W.createAppliancePlugin(e,W.kind)),e&&u&&W.createCurrentManager(e,W.options,u),u&&W.currentManager&&(W.currentManager.bindPlugin(u),u.init(e)),t!=null&&t.cursorAdapter&&(W.cursorAdapter=t.cursorAdapter),W.effectInstance();const h={displayer:e,currentManager:W.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var N;W.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const p=e.getBoundingRect(g),m=await((N=W.currentManager)==null?void 0:N.getBoundingRect(g));return!p.width||!p.height?m:ii(p,m)},screenshotToCanvasAsync:async function(g,p,m,N,v,I){var P;W.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let k=m,w=N,S=v.scale;k>this.maxScreenshotWidth&&(S=this.maxScreenshotWidth/k*S,k=this.maxScreenshotWidth),w>this.maxScreenshotHeight&&(S=Math.min(this.maxScreenshotHeight/w*S,S),w=this.maxScreenshotHeight),v.scale=S;const b=document.createElement("canvas"),x=b.getContext("2d");b.width=k*(I||1),b.height=w*(I||1),x&&(e.screenshotToCanvas(x,p,k,w,v,I),g.drawImage(b,Math.floor((m-k)/2),Math.floor((N-w)/2),k*(I||1),w*(I||1),0,0,k,w),b.remove()),W.currentManager&&await((P=W.currentManager)==null?void 0:P.screenshotToCanvas(g,p,k,w,v,Math.floor((m-k)/2),Math.floor((N-w)/2)))},scenePreviewAsync:async function(g,p,m,N,v){W.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(g,p,m,N,v);const I=document.createElement("img");I.className="appliance-plugin-fill-scene-snapshot-img",p.append(I),getComputedStyle(p).position||(p.style.position="relative"),W.currentManager&&await W.currentManager.scenePreview(g,I)},fillSceneSnapshotAsync:async function(g,p,m,N,v){var G,ne;W.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),p.innerHTML="",e.fillSceneSnapshot(g,p,m,N,v);const I=m||((G=e.state.cameraState)==null?void 0:G.width)||0,k=N||((ne=e.state.cameraState)==null?void 0:ne.height)||0;let w=await this.getBoundingRectAsync(g);w||(w={originX:0,originY:0,width:I,height:k});let S=Math.max(w==null?void 0:w.width,I),b=Math.max(w==null?void 0:w.height,k),x=1;const P=S>I&&Math.min(I/S,x)||x,E=b>k&&Math.min(k/b,x)||x;P<=E?(S=P<1&&I||S,b=Math.floor(b*P)+1,x=P):P>E&&(b=E<1&&k||b,S=Math.floor(S*E)+1,x=E);const R={scale:x,centerX:w.originX+w.width/2,centerY:w.originY+w.height/2},O=document.createElement("canvas"),D=O.getContext("2d");O.width=S,O.height=b,D&&await this.screenshotToCanvasAsync(D,g,S,b,R,devicePixelRatio);const A=document.createElement("img");A.className="appliance-plugin-fill-scene-snapshot-img",A.src=O.toDataURL(),A.onload=()=>{O.remove()},A.onerror=()=>{O.remove(),A.remove()},p.append(A),getComputedStyle(p).position||(p.style.position="relative")},_callbacksOn:function(g,p){W.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Be.InternalMsgEmitter.on(g,p):i.call(e.callbacks,g,p)},_callbacksOnce:function(g,p){W.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Be.InternalMsgEmitter.on(g,p):n.call(e.callbacks,g,p)},_callbacksOff:function(g,p){W.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Be.InternalMsgEmitter.off(g,p):o.call(e.callbacks,g,p)},canRedoSteps(){if(W.logger.info("[ApplianceSinglePlugin] canRedoSteps"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization){const g=W.currentManager.viewContainerManager.focuedView,p=g==null?void 0:g.focusScenePath;if(g&&p)return g.displayer.commiter.redoStack.filter(m=>m.scenePath===p).length}return 0},canUndoSteps(){if(W.logger.info("[ApplianceSinglePlugin] canUndoSteps"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization){const g=W.currentManager.viewContainerManager.focuedView,p=g==null?void 0:g.focusScenePath;if(g&&p)return g.displayer.commiter.undoStack.filter(m=>m.scenePath===p).length}return 0},undo:function(){return W.logger.info("[ApplianceSinglePlugin] undo"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization?W.currentManager.viewContainerManager.undo():0},redo:function(){return W.logger.info("[ApplianceSinglePlugin] redo"),W.currentManager&&X.isRoom(e)&&!e.disableSerialization?W.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(g){W.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),W.currentManager&&X.isRoom(e)&&e.isWritable&&(W.currentManager.cleanCurrentScene(),r.call(e,g))},insertImage:function(g){W.logger.info("[ApplianceSinglePlugin] insertImage"),W.currentManager&&X.isRoom(e)&&e.isWritable&&W.currentManager.worker.insertImage(pe,g)},lockImage:function(g,p){W.logger.info("[ApplianceSinglePlugin] lockImage"),W.currentManager&&X.isRoom(e)&&e.isWritable&&W.currentManager.worker.lockImage(pe,g,p)},completeImageUpload:function(g,p){W.logger.info("[ApplianceSinglePlugin] completeImageUpload"),W.currentManager&&X.isRoom(e)&&e.isWritable&&W.currentManager.worker.completeImageUpload(pe,g,p)},getImagesInformation:function(g){return W.logger.info("[ApplianceSinglePlugin] completeImageUpload"),W.currentManager&&X.isRoom(e)&&e.isWritable?W.currentManager.worker.getImagesInformation(g):[]},callbacks:()=>({...e.callbacks,on:h._callbacksOn.bind(h),once:h._callbacksOnce.bind(h),off:h._callbacksOff.bind(h)}),destroy(){W.currentManager&&(W.logger.info("[ApplianceSinglePlugin] destroy"),W.currentManager.destroy(),W.currentManager=void 0,W.cursorAdapter=void 0)},setMemberState(g){W.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(g)}`);const p=Object.keys(g);if(X.isRoom(e)&&e.isWritable){p.includes("currentApplianceName")&&(g.currentApplianceName&&g.currentApplianceName===re.laserPen?(g.currentApplianceName=re.pencil,g.useLaserPen=!0):g.currentApplianceName&&g.currentApplianceName===re.pencil&&(g.useLaserPen=!1)),c(g);return}throw new Error("setMemberState must be called in writable room")},setPerformancePriority(g){W.logger.info("[ApplianceSinglePlugin] setPriority"),W.currentManager&&W.currentManager.setPriority(g)},createMiniMap:async function(g,p){if(W.logger.info("[ApplianceSinglePlugin] createMiniMap"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.createMiniMap(g,p)},destroyMiniMap:async function(g){if(W.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.destroyMiniMap(g)},filterRenderByUid(g,p,m){if(W.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.filterRenderByUid(g,p,m)},cancelFilterRender(g,p){if(W.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),W.currentManager&&X.isRoom(e)&&e.isWritable)return W.currentManager.cancelFilterRender(g,p)},addListener:(g,p)=>{W.logger.info(`[ApplianceSinglePlugin] addListener ${g}`),Be.PublicMsgEmitter.on(g,p)},removeListener:(g,p)=>{W.logger.info(`[ApplianceSinglePlugin] removeListener ${g}`),Be.PublicMsgEmitter.off(g,p)},usePlugin:g=>{var p;W.logger.info("[ApplianceSinglePlugin] usePlugin"),(p=W.currentManager)==null||p.usePlugin(g)},getDisableDeviceInputs(){if(W.logger.info("[ApplianceSinglePlugin] getDisableDeviceInputs"),W.currentManager&&X.isRoom(e))return W.currentManager.disableDeviceInputs},setDisableDeviceInputs(g){W.logger.info("[ApplianceSinglePlugin] setDisableDeviceInputs"),W.currentManager&&X.isRoom(e)&&(W.currentManager.disableDeviceInputs=g)},getDisableEraseImage(){if(W.logger.info("[ApplianceSinglePlugin] getDisableEraseImage"),W.currentManager&&X.isRoom(e))return W.currentManager.disableEraseImage},setDisableEraseImage(g){W.logger.info("[ApplianceSinglePlugin] setDisableEraseImage"),W.currentManager&&X.isRoom(e)&&(W.currentManager.disableEraseImage=g)},setWritable:async function(g){var p;W.logger.info(`[ApplianceSinglePlugin] setWritable ${g}`),X.isRoom(e)&&l&&(await((p=W.currentManager)==null?void 0:p.setWritable(g)),await l.call(e,g))}},d=(g,p)=>{if(W.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${p}`),typeof g[p]=="function"||typeof g[p]>"u"){g[p]=h[p];return}p==="callbacks"&&(g.callbacks.on=h._callbacksOn.bind(h),g.callbacks.off=h._callbacksOff.bind(h),g.callbacks.once=h._callbacksOnce.bind(h))};d(e,"undo"),d(e,"redo"),d(e,"cleanCurrentScene"),d(e,"insertImage"),d(e,"completeImageUpload"),d(e,"lockImage"),d(e,"getImagesInformation"),d(e,"callbacks"),d(e,"screenshotToCanvasAsync"),d(e,"getBoundingRectAsync"),d(e,"scenePreviewAsync"),d(e,"fillSceneSnapshotAsync"),d(e,"setMemberState"),X.isRoom(e)&&d(e,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return h.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return h.canRedoSteps()}});const f={...h,callbacks:h.callbacks()};return Object.defineProperty(f,"disableDeviceInputs",{set(g){h.setDisableDeviceInputs(g)},get(){return h.getDisableDeviceInputs()}}),Object.defineProperty(f,"disableEraseImage",{set(g){h.setDisableEraseImage(g)},get(){return h.getDisableEraseImage()}}),e._appliancePlugin=f,e._appliancePlugin}static onCreate(e){e&&W.currentManager&&(W.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,t){try{await e.createInvisiblePlugin(W,{})}catch{if(!e.isWritable){await e.setWritable(!0);const n=await this.createAppliancePlugin(e,t);return await e.setWritable(!1),n}}let i=e.getInvisiblePlugin(t);return i||(i=await W.createAppliancePlugin(e,t)),i}static effectInstance(){if(W.cursorAdapter){const e=W.cursorAdapter.onAddedCursor;W.cursorAdapter.onAddedCursor=function(t){t.onCursorMemberChanged=i=>{try{i.appliance===re.pencil||i.appliance===re.shape||i.appliance===re.text||i.appliance===re.arrow||i.appliance===re.straight||i.appliance===re.rectangle||i.appliance===re.ellipse||i.appliance===re.eraser?t!=null&&t.divElement&&(t.divElement.style.display="none"):t!=null&&t.divElement&&(t.divElement.style.display="block")}catch{}},e.call(W.cursorAdapter,t)}}}get isReplay(){return X.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;const t=e.state;(i=W.currentManager)==null||i.onRoomMembersChange(t.roomMembers),X.isRoom(e)&&t!=null&&t.memberState&&((o=W.currentManager)==null||o.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;W.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=W.currentManager)==null||e.destroy(),W.currentManager=void 0,W.cursorAdapter=void 0}};y(W,"kind","appliance-aids-single-plugin"),y(W,"cursorAdapter"),y(W,"currentManager"),y(W,"logger",{info:console.log,warn:console.warn,error:console.error}),y(W,"options",Se),y(W,"createCurrentManager",(e,t,i)=>{W.currentManager&&W.currentManager.destroy();const o={plugin:i,displayer:e,options:t},n=new Be(o);n.init(),W.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),W.currentManager=n,X.isRoom(e)&&e.logger.info(`[ApplianceSinglePlugin] use ${Ks}`)});let Ws=W;const St=class St extends M.Component{constructor(){super(...arguments);y(this,"mainViewRef",null)}componentDidMount(){St.emiter||(St.emiter=Be.InternalMsgEmitter),St.emiter.emit(se.BindMainView,this.mainViewRef)}render(){return M.createElement(M.Fragment,null,this.props.children,M.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};y(St,"emiter");let Ys=St;class fw extends en{constructor(e){super();y(this,"kind","autoDraw");y(this,"localStorage",[]);y(this,"excludeStorage",[]);y(this,"timer");y(this,"hostServer");y(this,"iconsContainer");y(this,"icons",[]);y(this,"iconRect");y(this,"isActive",!1);y(this,"viewId",pe);y(this,"scenePath");y(this,"delay",2e3);const{container:t,hostServer:i,delay:o}=e;this.hostServer=i,this.iconsContainer=t,this.delay=o||2e3}get collector(){return this.control.collector}onDestroy(){this.unMount()}onCreate(){}onSetToolkey(e){e===T.Pencil?this.isActive=!0:(this.isActive&&(this.localStorage.length=0,this.timer&&clearTimeout(this.timer),this.timer=void 0,this.iconRect&&(this.iconRect=void 0),this.icons.length=0),this.isActive=!1)}syncStorage(e,t){if(!this.isActive||e!==this.viewId)return;if(!t){this.localStorage.length=0;return}const i=this.getOwnStorage(this.viewId,t);this.localStorage=i.map(o=>{var n;return((n=this.collector)==null?void 0:n.getLocalId(o))||o})}getOwnStorage(e,t){var n,r;if(!e||!t)return[];const i=(r=(n=this.collector)==null?void 0:n.storage[e])==null?void 0:r[t];return i?Object.keys(i).filter(c=>{var l,u;return((l=this.collector)==null?void 0:l.isOwn(c))&&((u=i[c])==null?void 0:u.toolsType)===T.Pencil&&!this.excludeStorage.includes(c)}):[]}async batchLocalDraw(){var r;if(this.localStorage.length===0||!this.scenePath||!((r=this.collector)==null?void 0:r.getStorageData(this.viewId,this.scenePath)))return;const t=this.localStorage.toString(),i=await this.control.worker.getVNodeInfo(this.localStorage.toString(),this.viewId,this.localStorage);if(!i)return;const{vInfo:o,uuid:n}=i;if(n===t&&o){const c={rect:{centerX:0,centerY:0,width:0,height:0},ink:[]};let l;const u=[];for(const{rect:h,op:d}of o){l=le(l,h);const f=[],g=[];for(let p=0;p<d.length;p+=3){f.push(d[p]),g.push(d[p+1]);const m=u.length&&u[u.length-1]||0;p===0?u.length===0?u.push(0):u.push(m+100):u.push(m+15)}c.ink.push([f,g,u])}return l&&(c.rect.centerX=Math.floor(l.x+l.w/2),c.rect.centerY=Math.floor(l.y+l.h/2),c.rect.width=Math.floor(l.w),c.rect.height=Math.floor(l.h)),c}}async computAutoDraw(e){const{rect:t,ink:i}=e;this.iconRect=t;const o=await fetch(this.hostServer,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({width:t.width,height:t.height,ink:i})}).then(n=>n.json()).then(n=>n.data);this.icons=o||[]}buildHTML(){var i;this.iconsContainer.innerHTML="";const e=document.createElement("div");e.style.display="flex",e.style.overflow="auto",e.style.padding="10px 0";const t=((i=this.control.worker.currentToolsData)==null?void 0:i.toolsOpt.strokeColor)||"#7f7f7f";this.icons.forEach(o=>{const n=document.createElement("img");n.src=`https://api.iconify.design/${o}.svg?color=${t}`,n.onclick=()=>{this.onClickIcon(o)},n.onload=()=>{e.appendChild(n)}}),this.iconsContainer.appendChild(e)}onClickIcon(e){var t,i;if(this.iconRect){const o=this.control.viewContainerManager.transformToScenePoint([this.iconRect.centerX,this.iconRect.centerY],this.viewId),n=((i=(t=this.control.viewContainerManager.getView(this.viewId))==null?void 0:t.cameraOpt)==null?void 0:i.scale)||1;this.icons.length=0,this.iconsContainer.innerHTML="";const r=Date.now().toString();this.control.worker.removeNodes(this.viewId,this.localStorage),this.localStorage.length=0,this.control.insertIconify(this.viewId,{uuid:r,centerX:o[0],centerY:o[1],width:Math.floor(this.iconRect.width/n),height:Math.floor(this.iconRect.height/n),src:`https://api.iconify.design/${e}.svg`,uniformScale:!1,locked:!1}),this.iconRect=void 0}}sceneChange(e,t){e===this.viewId&&(this.scenePath=t,this.excludeStorage=this.getOwnStorage(e,t)),this.localStorage.length=0}localEvent(e,t){var i;if(e===this.viewId&&((i=this.control.worker.currentToolsData)==null?void 0:i.toolsType)===T.Pencil)switch(t){case z.Start:this.timer&&(clearTimeout(this.timer),this.timer=void 0);break;case z.Done:this.timer&&clearTimeout(this.timer),this.timer=setTimeout(async()=>{this.timer=void 0;const o=await this.batchLocalDraw();o&&(await this.computAutoDraw(o),this.buildHTML())},this.delay);break}}mount(){var t,i;this.scenePath=(t=this.control.viewContainerManager.getView(this.viewId))==null?void 0:t.focusScenePath,this.excludeStorage=this.getOwnStorage(this.viewId,this.scenePath);const e=(i=this.control.worker.currentToolsData)==null?void 0:i.toolsType;e&&this.onSetToolkey(e),this.callbacks("setToolkey",this.onSetToolkey.bind(this)),this.callbacks("syncStorage",this.syncStorage.bind(this)),this.callbacks("sceneChange",this.sceneChange.bind(this)),this.callbacks("localEvent",this.localEvent.bind(this))}unMount(){this.timer&&clearTimeout(this.timer),this.timer=void 0,this.iconRect&&(this.iconRect=void 0),this.icons.length=0,this.excludeStorage.length=0,this.localStorage.length=0,this.iconsContainer.innerHTML="",this.removeCallback("setToolkey"),this.removeCallback("syncStorage"),this.removeCallback("sceneChange"),this.removeCallback("localEvent")}}exports.ActiveContainerType=to;exports.ApplianceMultiPlugin=Rs;exports.ApplianceNames=re;exports.ApplianceSigleWrapper=Ys;exports.ApplianceSinglePlugin=Ws;exports.AutoDrawPlugin=fw;exports.Cursor_Hover_Id=Xf;exports.DefaultAppliancePluginOptions=Se;exports.ECanvasShowType=Me;exports.EDataType=B;exports.EImageType=dt;exports.EMatrixrRelationType=ut;exports.EOperationType=ze;exports.EPostMessageType=L;exports.ERenderFilterType=Ge;exports.EScaleType=ae;exports.EStrokeType=te;exports.EToolsKey=T;exports.ElayerType=Rt;exports.EmitEventType=F;exports.EventMessageType=Ot;exports.EvevtWorkState=z;exports.EvevtWorkType=so;exports.InternalMsgEmitterType=se;exports.Main_View_Id=pe;exports.Plugin=en;exports.ShapeType=He;exports.Storage_Selector_key=Q;exports.Storage_Splitter=je;exports.Storage_ViewId_ALL=Zt;exports.Task_Time_Interval=ys;exports.VNodeManager=Qo;exports.ViewContainerManager=Tt;exports.computRect=le;exports.fullWorker=hn;exports.getRectMatrixrRelation=ri;exports.getShapeInstance=gs;exports.isEqual=it;exports.isIntersectForPoint=Ko;exports.isNumber=De;exports.removeAllChildren=Oe;exports.removeTexture=Ee;exports.subWorker=un;exports.throttle=Ms;exports.transformToNormalData=nt;exports.transformToSerializableData=Ye;