@netless/appliance-plugin 1.0.0-beta.2 → 1.0.0-beta.3

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 Po=Object.defineProperty;var Ro=(n,t,e)=>t in n?Po(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var p=(n,t,e)=>(Ro(n,typeof t!="symbol"?t+"":t,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("white-web-sdk");require("spritejs");const Xi=require("lz-string");require("lineclip");const eo=require("eventemitter2"),ci=require("lodash"),Qt=require("react-dom"),h=require("react"),ot=require("react-draggable"),Bo=require("re-resizable");var H=(n=>(n.selector="selector",n.clicker="clicker",n.laserPointer="laserPointer",n.pencil="pencil",n.rectangle="rectangle",n.ellipse="ellipse",n.shape="shape",n.eraser="eraser",n.pencilEraser="pencilEraser",n.text="text",n.straight="straight",n.arrow="arrow",n.hand="hand",n.laserPen="laserPen",n))(H||{}),Ht=(n=>(n[n.pedding=0]="pedding",n[n.mounted=1]="mounted",n[n.update=2]="update",n[n.unmounted=3]="unmounted",n))(Ht||{}),gt=(n=>(n.Normal="Normal",n.Stroke="Stroke",n.Dotted="Dotted",n.LongDotted="LongDotted",n))(gt||{}),Te=(n=>(n.Triangle="triangle",n.Rhombus="rhombus",n.Pentagram="pentagram",n.SpeechBalloon="speechBalloon",n.Star="star",n.Polygon="polygon",n))(Te||{}),S=(n=>(n.None="None",n.ShowFloatBar="ShowFloatBar",n.ZIndexFloatBar="ZIndexFloatBar",n.DeleteNode="DeleteNode",n.CopyNode="CopyNode",n.ZIndexActive="ZIndexActive",n.ZIndexNode="ZIndexNode",n.RotateNode="RotateNode",n.SetColorNode="SetColorNode",n.TranslateNode="TranslateNode",n.ScaleNode="ScaleNode",n.OriginalEvent="OriginalEvent",n.CreateScene="CreateScene",n.ActiveCursor="ActiveCursor",n.MoveCursor="MoveCursor",n.CommandEditor="CommandEditor",n.SetEditorData="SetEditorData",n.SetFontStyle="SetFontStyle",n.SetPoint="SetPoint",n.SetLock="SetLock",n.SetShapeOpt="SetShapeOpt",n))(S||{}),U=(n=>(n.DisplayState="DisplayState",n.FloatBar="FloatBar",n.CanvasSelector="CanvasSelector",n.MainEngine="MainEngine",n.DisplayContainer="DisplayContainer",n.Cursor="Cursor",n.TextEditor="TextEditor",n.BindMainView="BindMainView",n.MountMainView="MountMainView",n.MountAppView="MountAppView",n))(U||{}),to=(n=>(n[n.MainView=0]="MainView",n[n.Plugin=1]="Plugin",n[n.Both=2]="Both",n))(to||{}),v=(n=>(n[n.Pencil=1]="Pencil",n[n.Eraser=2]="Eraser",n[n.Selector=3]="Selector",n[n.Clicker=4]="Clicker",n[n.Arrow=5]="Arrow",n[n.Hand=6]="Hand",n[n.LaserPen=7]="LaserPen",n[n.Text=8]="Text",n[n.Straight=9]="Straight",n[n.Rectangle=10]="Rectangle",n[n.Ellipse=11]="Ellipse",n[n.Star=12]="Star",n[n.Triangle=13]="Triangle",n[n.Rhombus=14]="Rhombus",n[n.Polygon=15]="Polygon",n[n.SpeechBalloon=16]="SpeechBalloon",n[n.Image=17]="Image",n))(v||{}),Z=(n=>(n[n.Local=1]="Local",n[n.Service=2]="Service",n[n.Worker=3]="Worker",n))(Z||{}),C=(n=>(n[n.Pending=0]="Pending",n[n.Start=1]="Start",n[n.Doing=2]="Doing",n[n.Done=3]="Done",n[n.Freeze=4]="Freeze",n[n.Unwritable=5]="Unwritable",n))(C||{}),k=(n=>(n[n.None=0]="None",n[n.Init=1]="Init",n[n.UpdateCamera=2]="UpdateCamera",n[n.UpdateTools=3]="UpdateTools",n[n.CreateWork=4]="CreateWork",n[n.DrawWork=5]="DrawWork",n[n.FullWork=6]="FullWork",n[n.UpdateNode=7]="UpdateNode",n[n.RemoveNode=8]="RemoveNode",n[n.Clear=9]="Clear",n[n.Select=10]="Select",n[n.Destroy=11]="Destroy",n[n.Snapshot=12]="Snapshot",n[n.BoundingBox=13]="BoundingBox",n[n.Cursor=14]="Cursor",n[n.TextUpdate=15]="TextUpdate",n[n.GetTextActive=16]="GetTextActive",n[n.TasksQueue=17]="TasksQueue",n[n.CursorHover=18]="CursorHover",n))(k||{}),nt=(n=>(n.Webgl2="webgl2",n.Webgl="webgl",n.Canvas2d="2d",n))(nt||{}),Se=(n=>(n[n.Float=1]="Float",n[n.Bg=2]="Bg",n[n.Selector=3]="Selector",n[n.ServiceFloat=4]="ServiceFloat",n[n.None=5]="None",n))(Se||{}),$e=(n=>(n[n.Cursor=1]="Cursor",n[n.TextCreate=2]="TextCreate",n))($e||{}),Ue=(n=>(n[n.Top=1]="Top",n[n.Bottom=2]="Bottom",n))(Ue||{}),fe=(n=>(n[n.none=1]="none",n[n.all=2]="all",n[n.both=3]="both",n[n.proportional=4]="proportional",n))(fe||{});const Wo={linear:n=>n,easeInQuad:n=>n*n,easeOutQuad:n=>n*(2-n),easeInOutQuad:n=>n<.5?2*n*n:-1+(4-2*n)*n,easeInCubic:n=>n*n*n,easeOutCubic:n=>--n*n*n+1,easeInOutCubic:n=>n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1,easeInQuart:n=>n*n*n*n,easeOutQuart:n=>1- --n*n*n*n,easeInOutQuart:n=>n<.5?8*n*n*n*n:1-8*--n*n*n*n,easeInQuint:n=>n*n*n*n*n,easeOutQuint:n=>1+--n*n*n*n*n,easeInOutQuint:n=>n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n,easeInSine:n=>1-Math.cos(n*Math.PI/2),easeOutSine:n=>Math.sin(n*Math.PI/2),easeInOutSine:n=>-(Math.cos(Math.PI*n)-1)/2,easeInExpo:n=>n<=0?0:Math.pow(2,10*n-10),easeOutExpo:n=>n>=1?1:1-Math.pow(2,-10*n),easeInOutExpo:n=>n<=0?0:n>=1?1:n<.5?Math.pow(2,20*n-10)/2:(2-Math.pow(2,-20*n+10))/2};class L{constructor(t=0,e=0,i=1){this.x=t,this.y=e,this.z=i}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,i=this.z){return this.x=t,this.y=e,this.z=i,this}setTo({x:t=0,y:e=0,z:i=1}){return this.x=t,this.y=e,this.z=i,this}rot(t){if(t===0)return this;const{x:e,y:i}=this,o=Math.sin(t),r=Math.cos(t);return this.x=e*r-i*o,this.y=e*o+i*r,this}rotWith(t,e){if(e===0)return this;const i=this.x-t.x,o=this.y-t.y,r=Math.sin(e),s=Math.cos(e);return this.x=t.x+(i*s-o*r),this.y=t.y+(i*r+o*s),this}clone(){const{x:t,y:e,z:i}=this;return new L(t,e,i)}sub(t){return this.x-=t.x,this.y-=t.y,this}subXY(t,e){return this.x-=t,this.y-=e,this}subScalar(t){return this.x-=t,this.y-=t,this}add(t){return this.x+=t.x,this.y+=t.y,this}addXY(t,e){return this.x+=t,this.y+=e,this}addScalar(t){return this.x+=t,this.y+=t,this}clamp(t,e){return this.x=Math.max(this.x,t),this.y=Math.max(this.y,t),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(t){return this.x/=t,this.y/=t,this}divV(t){return this.x/=t.x,this.y/=t.y,this}mul(t){return this.x*=t,this.y*=t,this}mulV(t){return this.x*=t.x,this.y*=t.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(t,e){const i=L.Tan(t,this);return this.add(i.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(t){return this.x=this.y*t.z-this.z*t.y,this.y=this.z*t.x-this.x*t.z,this}dpr(t){return L.Dpr(this,t)}cpr(t){return L.Cpr(this,t)}len2(){return L.Len2(this)}len(){return L.Len(this)}pry(t){return L.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return L.Uni(this)}tan(t){return L.Tan(this,t)}dist(t){return L.Dist(this,t)}distanceToLineSegment(t,e){return L.DistanceToLineSegment(t,e,this)}slope(t){return L.Slope(this,t)}snapToGrid(t){return this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this}angle(t){return L.Angle(this,t)}toAngle(){return L.ToAngle(this)}lrp(t,e){return this.x=this.x+(t.x-this.x)*e,this.y=this.y+(t.y-this.y)*e,this}equals(t,e){return L.Equals(this,t,e)}equalsXY(t,e){return L.EqualsXY(this,t,e)}norm(){const t=this.len();return this.x=t===0?0:this.x/t,this.y=t===0?0:this.y/t,this}toFixed(){return L.ToFixed(this)}toString(){return L.ToString(L.ToFixed(this))}toJson(){return L.ToJson(this)}toArray(){return L.ToArray(this)}static Add(t,e){return new L(t.x+e.x,t.y+e.y)}static AddXY(t,e,i){return new L(t.x+e,t.y+i)}static Sub(t,e){return new L(t.x-e.x,t.y-e.y)}static SubXY(t,e,i){return new L(t.x-e,t.y-i)}static AddScalar(t,e){return new L(t.x+e,t.y+e)}static SubScalar(t,e){return new L(t.x-e,t.y-e)}static Div(t,e){return new L(t.x/e,t.y/e)}static Mul(t,e){return new L(t.x*e,t.y*e)}static DivV(t,e){return new L(t.x/e.x,t.y/e.y)}static MulV(t,e){return new L(t.x*e.x,t.y*e.y)}static Neg(t){return new L(-t.x,-t.y)}static Per(t){return new L(t.y,-t.x)}static Dist2(t,e){return L.Sub(t,e).len2()}static Abs(t){return new L(Math.abs(t.x),Math.abs(t.y))}static Dist(t,e){return Math.hypot(t.y-e.y,t.x-e.x)}static Dpr(t,e){return t.x*e.x+t.y*e.y}static Cross(t,e){return new L(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z)}static Cpr(t,e){return t.x*e.y-e.x*t.y}static Len2(t){return t.x*t.x+t.y*t.y}static Len(t){return Math.hypot(t.x,t.y)}static Pry(t,e){return L.Dpr(t,e)/L.Len(e)}static Uni(t){return L.Div(t,L.Len(t))}static Tan(t,e){return L.Uni(L.Sub(t,e))}static Min(t,e){return new L(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new L(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new L().add(t)}static FromArray(t){return new L(t[0],t[1])}static Rot(t,e=0){const i=Math.sin(e),o=Math.cos(e);return new L(t.x*o-t.y*i,t.x*i+t.y*o)}static RotWith(t,e,i){const o=t.x-e.x,r=t.y-e.y,s=Math.sin(i),a=Math.cos(i);return new L(e.x+(o*a-r*s),e.y+(o*s+r*a))}static NearestPointOnLineThroughPoint(t,e,i){return L.Mul(e,L.Sub(i,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,i,o=!0){const r=L.Tan(e,t),s=L.Add(t,L.Mul(r,L.Sub(i,t).pry(r)));if(o){if(s.x<Math.min(t.x,e.x))return L.Cast(t.x<e.x?t:e);if(s.x>Math.max(t.x,e.x))return L.Cast(t.x>e.x?t:e);if(s.y<Math.min(t.y,e.y))return L.Cast(t.y<e.y?t:e);if(s.y>Math.max(t.y,e.y))return L.Cast(t.y>e.y?t:e)}return s}static DistanceToLineThroughPoint(t,e,i){return L.Dist(i,L.NearestPointOnLineThroughPoint(t,e,i))}static DistanceToLineSegment(t,e,i,o=!0){return L.Dist(i,L.NearestPointOnLineSegment(t,e,i,o))}static Snap(t,e=1){return new L(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof L?t:L.From(t)}static Slope(t,e){return t.x===e.y?NaN:(t.y-e.y)/(t.x-e.x)}static Angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static Lrp(t,e,i){return L.Sub(e,t).mul(i).add(t)}static Med(t,e){return new L((t.x+e.x)/2,(t.y+e.y)/2)}static Equals(t,e,i=1e-4){return Math.abs(t.x-e.x)<i&&Math.abs(t.y-e.y)<i}static EqualsXY(t,e,i){return t.x===e&&t.y===i}static EqualsXYZ(t,e,i=1e-4){return L.Equals(t,e,i)&&Math.abs((t.z||0)-(e.z||0))<i}static Clockwise(t,e,i){return(i.x-t.x)*(e.y-t.y)-(e.x-t.x)*(i.y-t.y)<0}static Rescale(t,e){const i=L.Len(t);return new L(e*t.x/i,e*t.y/i)}static ScaleWithOrigin(t,e,i){return L.Sub(t,i).mul(e).add(i)}static ScaleWOrigin(t,e,i){return L.Sub(t,i).mulV(e).add(i)}static ToFixed(t,e=2){return new L(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,i){return L.Add(t,L.Tan(e,t).mul(i))}static ToString(t){return`${t.x}, ${t.y}`}static ToAngle(t){let e=Math.atan2(t.y,t.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(t,e=1){return new L(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:i,z:o}=t;return{x:e,y:i,z:o}}static Average(t){const e=t.length,i=new L(0,0);for(let o=0;o<e;o++)i.add(t[o]);return i.div(e)}static Clamp(t,e,i){return i===void 0?new L(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new L(Math.min(Math.max(t.x,e),i),Math.min(Math.max(t.y,e),i))}static PointsBetween(t,e,i=6){const o=[];for(let r=0;r<i;r++){const s=Wo.easeInQuad(r/(i-1)),a=L.Lrp(t,e,s);a.z=Math.min(1,.5+Math.abs(.5-Uo(s))*.65),o.push(a)}return o}static SnapToGrid(t,e=8){return new L(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const Uo=n=>n<.5?2*n*n:-1+(4-2*n)*n;class ie extends L{constructor(t=0,e=0,i=0,o={x:0,y:0},r=0,s=0){super(t,e,i),this.x=t,this.y=e,this.z=i,this.v=o,this.t=r,this.a=s}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,i=this.z,o=this.v,r=this.t,s=this.a){return this.x=t,this.y=e,this.z=i,this.v=o,this.t=r,this.a=s,this}clone(){const{x:t,y:e,z:i,v:o,t:r,a:s}=this,a={x:o.x,y:o.y};return new ie(t,e,i,a,r,s)}distance(t){return ie.GetDistance(this,t)}isNear(t,e){return ie.IsNear(this,t,e)}getAngleByPoints(t,e){return ie.GetAngleByPoints(t,this,e)}static Sub(t,e){return new ie(t.x-e.x,t.y-e.y)}static Add(t,e){return new ie(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return ie.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,i){const o=e.x-t.x,r=i.x-e.x,s=e.y-t.y,a=i.y-e.y;let c=0;const l=Math.sqrt(o*o+s*s),d=Math.sqrt(r*r+a*a);if(l&&d){const u=o*r+s*a;c=Math.acos(u/(l*d)),c=c/Math.PI*180;let M=o*a-s*r;M=M>0?1:-1,c=180+M*c}return c}static IsNear(t,e,i){return ie.Len(t.clone().sub(e))<i}static RotWith(t,e,i,o=2){const r=t.x-e.x,s=t.y-e.y,a=Math.sin(i),c=Math.cos(i),l=Math.pow(10,o),d=Math.floor((e.x+(r*c-s*a))*l)/l,u=Math.floor((e.y+(r*a+s*c))*l)/l;return new ie(d,u)}static GetDotStroke(t,e,i=16){const o=new L(1,1),r=Math.PI+.001,s=ie.Add(t,ie.Sub(t,o).uni().per().mul(-e)),a=[];for(let c=1/i,l=c;l<=1;l+=c)a.push(ie.RotWith(s,t,r*2*l));return a}static GetSemicircleStroke(t,e,i=-1,o=8){const r=i*(Math.PI+.001),s=[];for(let a=1/o,c=a;c<=1;c+=a)s.push(ie.RotWith(e,t,r*c));return s}}var st=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Fe(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var $o=typeof st=="object"&&st&&st.Object===Object&&st,io=$o,Fo=io,Qo=typeof self=="object"&&self&&self.Object===Object&&self,Ho=Fo||Qo||Function("return this")(),Ce=Ho,Zo=Ce,Go=Zo.Symbol,vt=Go,li=vt,oo=Object.prototype,Vo=oo.hasOwnProperty,Jo=oo.toString,tt=li?li.toStringTag:void 0;function Ko(n){var t=Vo.call(n,tt),e=n[tt];try{n[tt]=void 0;var i=!0}catch{}var o=Jo.call(n);return i&&(t?n[tt]=e:delete n[tt]),o}var qo=Ko,_o=Object.prototype,Xo=_o.toString;function en(n){return Xo.call(n)}var tn=en,ui=vt,on=qo,nn=tn,rn="[object Null]",sn="[object Undefined]",hi=ui?ui.toStringTag:void 0;function an(n){return n==null?n===void 0?sn:rn:hi&&hi in Object(n)?on(n):nn(n)}var Qe=an;function cn(n){return n!=null&&typeof n=="object"}var Oe=cn,ln=Qe,un=Oe,hn="[object Number]";function dn(n){return typeof n=="number"||un(n)&&ln(n)==hn}var gn=dn;const se=Fe(gn);function Mn(){this.__data__=[],this.size=0}var fn=Mn;function pn(n,t){return n===t||n!==n&&t!==t}var Zt=pn,yn=Zt;function In(n,t){for(var e=n.length;e--;)if(yn(n[e][0],t))return e;return-1}var Nt=In,vn=Nt,Nn=Array.prototype,wn=Nn.splice;function mn(n){var t=this.__data__,e=vn(t,n);if(e<0)return!1;var i=t.length-1;return e==i?t.pop():wn.call(t,e,1),--this.size,!0}var Tn=mn,zn=Nt;function jn(n){var t=this.__data__,e=zn(t,n);return e<0?void 0:t[e][1]}var Cn=jn,Sn=Nt;function Dn(n){return Sn(this.__data__,n)>-1}var xn=Dn,kn=Nt;function Ln(n,t){var e=this.__data__,i=kn(e,n);return i<0?(++this.size,e.push([n,t])):e[i][1]=t,this}var An=Ln,En=fn,bn=Tn,On=Cn,Yn=xn,Pn=An;function Ke(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}Ke.prototype.clear=En;Ke.prototype.delete=bn;Ke.prototype.get=On;Ke.prototype.has=Yn;Ke.prototype.set=Pn;var wt=Ke,Rn=wt;function Bn(){this.__data__=new Rn,this.size=0}var Wn=Bn;function Un(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var $n=Un;function Fn(n){return this.__data__.get(n)}var Qn=Fn;function Hn(n){return this.__data__.has(n)}var Zn=Hn;function Gn(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Pe=Gn,Vn=Qe,Jn=Pe,Kn="[object AsyncFunction]",qn="[object Function]",_n="[object GeneratorFunction]",Xn="[object Proxy]";function er(n){if(!Jn(n))return!1;var t=Vn(n);return t==qn||t==_n||t==Kn||t==Xn}var no=er,tr=Ce,ir=tr["__core-js_shared__"],or=ir,Dt=or,di=function(){var n=/[^.]+$/.exec(Dt&&Dt.keys&&Dt.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function nr(n){return!!di&&di in n}var rr=nr,sr=Function.prototype,ar=sr.toString;function cr(n){if(n!=null){try{return ar.call(n)}catch{}try{return n+""}catch{}}return""}var ro=cr,lr=no,ur=rr,hr=Pe,dr=ro,gr=/[\\^$.*+?()[\]{}|]/g,Mr=/^\[object .+?Constructor\]$/,fr=Function.prototype,pr=Object.prototype,yr=fr.toString,Ir=pr.hasOwnProperty,vr=RegExp("^"+yr.call(Ir).replace(gr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Nr(n){if(!hr(n)||ur(n))return!1;var t=lr(n)?vr:Mr;return t.test(dr(n))}var wr=Nr;function mr(n,t){return n==null?void 0:n[t]}var Tr=mr,zr=wr,jr=Tr;function Cr(n,t){var e=jr(n,t);return zr(e)?e:void 0}var He=Cr,Sr=He,Dr=Ce,xr=Sr(Dr,"Map"),Gt=xr,kr=He,Lr=kr(Object,"create"),mt=Lr,gi=mt;function Ar(){this.__data__=gi?gi(null):{},this.size=0}var Er=Ar;function br(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Or=br,Yr=mt,Pr="__lodash_hash_undefined__",Rr=Object.prototype,Br=Rr.hasOwnProperty;function Wr(n){var t=this.__data__;if(Yr){var e=t[n];return e===Pr?void 0:e}return Br.call(t,n)?t[n]:void 0}var Ur=Wr,$r=mt,Fr=Object.prototype,Qr=Fr.hasOwnProperty;function Hr(n){var t=this.__data__;return $r?t[n]!==void 0:Qr.call(t,n)}var Zr=Hr,Gr=mt,Vr="__lodash_hash_undefined__";function Jr(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Gr&&t===void 0?Vr:t,this}var Kr=Jr,qr=Er,_r=Or,Xr=Ur,es=Zr,ts=Kr;function qe(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}qe.prototype.clear=qr;qe.prototype.delete=_r;qe.prototype.get=Xr;qe.prototype.has=es;qe.prototype.set=ts;var is=qe,Mi=is,os=wt,ns=Gt;function rs(){this.size=0,this.__data__={hash:new Mi,map:new(ns||os),string:new Mi}}var ss=rs;function as(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var cs=as,ls=cs;function us(n,t){var e=n.__data__;return ls(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Tt=us,hs=Tt;function ds(n){var t=hs(this,n).delete(n);return this.size-=t?1:0,t}var gs=ds,Ms=Tt;function fs(n){return Ms(this,n).get(n)}var ps=fs,ys=Tt;function Is(n){return ys(this,n).has(n)}var vs=Is,Ns=Tt;function ws(n,t){var e=Ns(this,n),i=e.size;return e.set(n,t),this.size+=e.size==i?0:1,this}var ms=ws,Ts=ss,zs=gs,js=ps,Cs=vs,Ss=ms;function _e(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}_e.prototype.clear=Ts;_e.prototype.delete=zs;_e.prototype.get=js;_e.prototype.has=Cs;_e.prototype.set=Ss;var so=_e,Ds=wt,xs=Gt,ks=so,Ls=200;function As(n,t){var e=this.__data__;if(e instanceof Ds){var i=e.__data__;if(!xs||i.length<Ls-1)return i.push([n,t]),this.size=++e.size,this;e=this.__data__=new ks(i)}return e.set(n,t),this.size=e.size,this}var Es=As,bs=wt,Os=Wn,Ys=$n,Ps=Qn,Rs=Zn,Bs=Es;function Xe(n){var t=this.__data__=new bs(n);this.size=t.size}Xe.prototype.clear=Os;Xe.prototype.delete=Ys;Xe.prototype.get=Ps;Xe.prototype.has=Rs;Xe.prototype.set=Bs;var ao=Xe;function Ws(n,t){for(var e=-1,i=n==null?0:n.length;++e<i&&t(n[e],e,n)!==!1;);return n}var Us=Ws,$s=He,Fs=function(){try{var n=$s(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Qs=Fs,fi=Qs;function Hs(n,t,e){t=="__proto__"&&fi?fi(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var co=Hs,Zs=co,Gs=Zt,Vs=Object.prototype,Js=Vs.hasOwnProperty;function Ks(n,t,e){var i=n[t];(!(Js.call(n,t)&&Gs(i,e))||e===void 0&&!(t in n))&&Zs(n,t,e)}var lo=Ks,qs=lo,_s=co;function Xs(n,t,e,i){var o=!e;e||(e={});for(var r=-1,s=t.length;++r<s;){var a=t[r],c=i?i(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?_s(e,a,c):qs(e,a,c)}return e}var zt=Xs;function ea(n,t){for(var e=-1,i=Array(n);++e<n;)i[e]=t(e);return i}var ta=ea,ia=Qe,oa=Oe,na="[object Arguments]";function ra(n){return oa(n)&&ia(n)==na}var sa=ra,pi=sa,aa=Oe,uo=Object.prototype,ca=uo.hasOwnProperty,la=uo.propertyIsEnumerable,ua=pi(function(){return arguments}())?pi:function(n){return aa(n)&&ca.call(n,"callee")&&!la.call(n,"callee")},ha=ua,da=Array.isArray,jt=da,Mt={exports:{}};function ga(){return!1}var Ma=ga;Mt.exports;(function(n,t){var e=Ce,i=Ma,o=t&&!t.nodeType&&t,r=o&&!0&&n&&!n.nodeType&&n,s=r&&r.exports===o,a=s?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||i;n.exports=l})(Mt,Mt.exports);var Vt=Mt.exports,fa=9007199254740991,pa=/^(?:0|[1-9]\d*)$/;function ya(n,t){var e=typeof n;return t=t??fa,!!t&&(e=="number"||e!="symbol"&&pa.test(n))&&n>-1&&n%1==0&&n<t}var Ia=ya,va=9007199254740991;function Na(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=va}var ho=Na,wa=Qe,ma=ho,Ta=Oe,za="[object Arguments]",ja="[object Array]",Ca="[object Boolean]",Sa="[object Date]",Da="[object Error]",xa="[object Function]",ka="[object Map]",La="[object Number]",Aa="[object Object]",Ea="[object RegExp]",ba="[object Set]",Oa="[object String]",Ya="[object WeakMap]",Pa="[object ArrayBuffer]",Ra="[object DataView]",Ba="[object Float32Array]",Wa="[object Float64Array]",Ua="[object Int8Array]",$a="[object Int16Array]",Fa="[object Int32Array]",Qa="[object Uint8Array]",Ha="[object Uint8ClampedArray]",Za="[object Uint16Array]",Ga="[object Uint32Array]",te={};te[Ba]=te[Wa]=te[Ua]=te[$a]=te[Fa]=te[Qa]=te[Ha]=te[Za]=te[Ga]=!0;te[za]=te[ja]=te[Pa]=te[Ca]=te[Ra]=te[Sa]=te[Da]=te[xa]=te[ka]=te[La]=te[Aa]=te[Ea]=te[ba]=te[Oa]=te[Ya]=!1;function Va(n){return Ta(n)&&ma(n.length)&&!!te[wa(n)]}var Ja=Va;function Ka(n){return function(t){return n(t)}}var Jt=Ka,ft={exports:{}};ft.exports;(function(n,t){var e=io,i=t&&!t.nodeType&&t,o=i&&!0&&n&&!n.nodeType&&n,r=o&&o.exports===i,s=r&&e.process,a=function(){try{var c=o&&o.require&&o.require("util").types;return c||s&&s.binding&&s.binding("util")}catch{}}();n.exports=a})(ft,ft.exports);var Kt=ft.exports,qa=Ja,_a=Jt,yi=Kt,Ii=yi&&yi.isTypedArray,Xa=Ii?_a(Ii):qa,go=Xa,ec=ta,tc=ha,ic=jt,oc=Vt,nc=Ia,rc=go,sc=Object.prototype,ac=sc.hasOwnProperty;function cc(n,t){var e=ic(n),i=!e&&tc(n),o=!e&&!i&&oc(n),r=!e&&!i&&!o&&rc(n),s=e||i||o||r,a=s?ec(n.length,String):[],c=a.length;for(var l in n)(t||ac.call(n,l))&&!(s&&(l=="length"||o&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||nc(l,c)))&&a.push(l);return a}var Mo=cc,lc=Object.prototype;function uc(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||lc;return n===e}var qt=uc;function hc(n,t){return function(e){return n(t(e))}}var fo=hc,dc=fo,gc=dc(Object.keys,Object),Mc=gc,fc=qt,pc=Mc,yc=Object.prototype,Ic=yc.hasOwnProperty;function vc(n){if(!fc(n))return pc(n);var t=[];for(var e in Object(n))Ic.call(n,e)&&e!="constructor"&&t.push(e);return t}var Nc=vc,wc=no,mc=ho;function Tc(n){return n!=null&&mc(n.length)&&!wc(n)}var po=Tc,zc=Mo,jc=Nc,Cc=po;function Sc(n){return Cc(n)?zc(n):jc(n)}var _t=Sc,Dc=zt,xc=_t;function kc(n,t){return n&&Dc(t,xc(t),n)}var Lc=kc;function Ac(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Ec=Ac,bc=Pe,Oc=qt,Yc=Ec,Pc=Object.prototype,Rc=Pc.hasOwnProperty;function Bc(n){if(!bc(n))return Yc(n);var t=Oc(n),e=[];for(var i in n)i=="constructor"&&(t||!Rc.call(n,i))||e.push(i);return e}var Wc=Bc,Uc=Mo,$c=Wc,Fc=po;function Qc(n){return Fc(n)?Uc(n,!0):$c(n)}var Xt=Qc,Hc=zt,Zc=Xt;function Gc(n,t){return n&&Hc(t,Zc(t),n)}var Vc=Gc,pt={exports:{}};pt.exports;(function(n,t){var e=Ce,i=t&&!t.nodeType&&t,o=i&&!0&&n&&!n.nodeType&&n,r=o&&o.exports===i,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function c(l,d){if(d)return l.slice();var u=l.length,M=a?a(u):new l.constructor(u);return l.copy(M),M}n.exports=c})(pt,pt.exports);var Jc=pt.exports;function Kc(n,t){var e=-1,i=n.length;for(t||(t=Array(i));++e<i;)t[e]=n[e];return t}var qc=Kc;function _c(n,t){for(var e=-1,i=n==null?0:n.length,o=0,r=[];++e<i;){var s=n[e];t(s,e,n)&&(r[o++]=s)}return r}var Xc=_c;function el(){return[]}var yo=el,tl=Xc,il=yo,ol=Object.prototype,nl=ol.propertyIsEnumerable,vi=Object.getOwnPropertySymbols,rl=vi?function(n){return n==null?[]:(n=Object(n),tl(vi(n),function(t){return nl.call(n,t)}))}:il,ei=rl,sl=zt,al=ei;function cl(n,t){return sl(n,al(n),t)}var ll=cl;function ul(n,t){for(var e=-1,i=t.length,o=n.length;++e<i;)n[o+e]=t[e];return n}var Io=ul,hl=fo,dl=hl(Object.getPrototypeOf,Object),vo=dl,gl=Io,Ml=vo,fl=ei,pl=yo,yl=Object.getOwnPropertySymbols,Il=yl?function(n){for(var t=[];n;)gl(t,fl(n)),n=Ml(n);return t}:pl,No=Il,vl=zt,Nl=No;function wl(n,t){return vl(n,Nl(n),t)}var ml=wl,Tl=Io,zl=jt;function jl(n,t,e){var i=t(n);return zl(n)?i:Tl(i,e(n))}var wo=jl,Cl=wo,Sl=ei,Dl=_t;function xl(n){return Cl(n,Dl,Sl)}var mo=xl,kl=wo,Ll=No,Al=Xt;function El(n){return kl(n,Al,Ll)}var bl=El,Ol=He,Yl=Ce,Pl=Ol(Yl,"DataView"),Rl=Pl,Bl=He,Wl=Ce,Ul=Bl(Wl,"Promise"),$l=Ul,Fl=He,Ql=Ce,Hl=Fl(Ql,"Set"),Zl=Hl,Gl=He,Vl=Ce,Jl=Gl(Vl,"WeakMap"),Kl=Jl,Et=Rl,bt=Gt,Ot=$l,Yt=Zl,Pt=Kl,To=Qe,et=ro,Ni="[object Map]",ql="[object Object]",wi="[object Promise]",mi="[object Set]",Ti="[object WeakMap]",zi="[object DataView]",_l=et(Et),Xl=et(bt),eu=et(Ot),tu=et(Yt),iu=et(Pt),Re=To;(Et&&Re(new Et(new ArrayBuffer(1)))!=zi||bt&&Re(new bt)!=Ni||Ot&&Re(Ot.resolve())!=wi||Yt&&Re(new Yt)!=mi||Pt&&Re(new Pt)!=Ti)&&(Re=function(n){var t=To(n),e=t==ql?n.constructor:void 0,i=e?et(e):"";if(i)switch(i){case _l:return zi;case Xl:return Ni;case eu:return wi;case tu:return mi;case iu:return Ti}return t});var Ct=Re,ou=Object.prototype,nu=ou.hasOwnProperty;function ru(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&nu.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var su=ru,au=Ce,cu=au.Uint8Array,zo=cu,ji=zo;function lu(n){var t=new n.constructor(n.byteLength);return new ji(t).set(new ji(n)),t}var ti=lu,uu=ti;function hu(n,t){var e=t?uu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var du=hu,gu=/\w*$/;function Mu(n){var t=new n.constructor(n.source,gu.exec(n));return t.lastIndex=n.lastIndex,t}var fu=Mu,Ci=vt,Si=Ci?Ci.prototype:void 0,Di=Si?Si.valueOf:void 0;function pu(n){return Di?Object(Di.call(n)):{}}var yu=pu,Iu=ti;function vu(n,t){var e=t?Iu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Nu=vu,wu=ti,mu=du,Tu=fu,zu=yu,ju=Nu,Cu="[object Boolean]",Su="[object Date]",Du="[object Map]",xu="[object Number]",ku="[object RegExp]",Lu="[object Set]",Au="[object String]",Eu="[object Symbol]",bu="[object ArrayBuffer]",Ou="[object DataView]",Yu="[object Float32Array]",Pu="[object Float64Array]",Ru="[object Int8Array]",Bu="[object Int16Array]",Wu="[object Int32Array]",Uu="[object Uint8Array]",$u="[object Uint8ClampedArray]",Fu="[object Uint16Array]",Qu="[object Uint32Array]";function Hu(n,t,e){var i=n.constructor;switch(t){case bu:return wu(n);case Cu:case Su:return new i(+n);case Ou:return mu(n,e);case Yu:case Pu:case Ru:case Bu:case Wu:case Uu:case $u:case Fu:case Qu:return ju(n,e);case Du:return new i;case xu:case Au:return new i(n);case ku:return Tu(n);case Lu:return new i;case Eu:return zu(n)}}var Zu=Hu,Gu=Pe,xi=Object.create,Vu=function(){function n(){}return function(t){if(!Gu(t))return{};if(xi)return xi(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Ju=Vu,Ku=Ju,qu=vo,_u=qt;function Xu(n){return typeof n.constructor=="function"&&!_u(n)?Ku(qu(n)):{}}var eh=Xu,th=Ct,ih=Oe,oh="[object Map]";function nh(n){return ih(n)&&th(n)==oh}var rh=nh,sh=rh,ah=Jt,ki=Kt,Li=ki&&ki.isMap,ch=Li?ah(Li):sh,lh=ch,uh=Ct,hh=Oe,dh="[object Set]";function gh(n){return hh(n)&&uh(n)==dh}var Mh=gh,fh=Mh,ph=Jt,Ai=Kt,Ei=Ai&&Ai.isSet,yh=Ei?ph(Ei):fh,Ih=yh,vh=ao,Nh=Us,wh=lo,mh=Lc,Th=Vc,zh=Jc,jh=qc,Ch=ll,Sh=ml,Dh=mo,xh=bl,kh=Ct,Lh=su,Ah=Zu,Eh=eh,bh=jt,Oh=Vt,Yh=lh,Ph=Pe,Rh=Ih,Bh=_t,Wh=Xt,Uh=1,$h=2,Fh=4,jo="[object Arguments]",Qh="[object Array]",Hh="[object Boolean]",Zh="[object Date]",Gh="[object Error]",Co="[object Function]",Vh="[object GeneratorFunction]",Jh="[object Map]",Kh="[object Number]",So="[object Object]",qh="[object RegExp]",_h="[object Set]",Xh="[object String]",ed="[object Symbol]",td="[object WeakMap]",id="[object ArrayBuffer]",od="[object DataView]",nd="[object Float32Array]",rd="[object Float64Array]",sd="[object Int8Array]",ad="[object Int16Array]",cd="[object Int32Array]",ld="[object Uint8Array]",ud="[object Uint8ClampedArray]",hd="[object Uint16Array]",dd="[object Uint32Array]",ee={};ee[jo]=ee[Qh]=ee[id]=ee[od]=ee[Hh]=ee[Zh]=ee[nd]=ee[rd]=ee[sd]=ee[ad]=ee[cd]=ee[Jh]=ee[Kh]=ee[So]=ee[qh]=ee[_h]=ee[Xh]=ee[ed]=ee[ld]=ee[ud]=ee[hd]=ee[dd]=!0;ee[Gh]=ee[Co]=ee[td]=!1;function dt(n,t,e,i,o,r){var s,a=t&Uh,c=t&$h,l=t&Fh;if(e&&(s=o?e(n,i,o,r):e(n)),s!==void 0)return s;if(!Ph(n))return n;var d=bh(n);if(d){if(s=Lh(n),!a)return jh(n,s)}else{var u=kh(n),M=u==Co||u==Vh;if(Oh(n))return zh(n,a);if(u==So||u==jo||M&&!o){if(s=c||M?{}:Eh(n),!a)return c?Sh(n,Th(s,n)):Ch(n,mh(s,n))}else{if(!ee[u])return o?n:{};s=Ah(n,u,a)}}r||(r=new vh);var g=r.get(n);if(g)return g;r.set(n,s),Rh(n)?n.forEach(function(m){s.add(dt(m,t,e,m,n,r))}):Yh(n)&&n.forEach(function(m,f){s.set(f,dt(m,t,e,f,n,r))});var y=l?c?xh:Dh:c?Wh:Bh,N=d?void 0:y(n);return Nh(N||n,function(m,f){N&&(f=m,m=n[f]),wh(s,f,dt(m,t,e,f,n,r))}),s}var Do=dt,gd=Do,Md=1,fd=4;function pd(n){return gd(n,Md|fd)}var yd=pd;const oe=Fe(yd);function Id(n){return JSON.parse(Xi.decompress(n))}function vd(n){return Xi.compress(JSON.stringify(n))}const ye=Object.keys,xe="++",O="selector",Nd="all";var wd="__lodash_hash_undefined__";function md(n){return this.__data__.set(n,wd),this}var Td=md;function zd(n){return this.__data__.has(n)}var jd=zd,Cd=so,Sd=Td,Dd=jd;function yt(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Cd;++t<e;)this.add(n[t])}yt.prototype.add=yt.prototype.push=Sd;yt.prototype.has=Dd;var xd=yt;function kd(n,t){for(var e=-1,i=n==null?0:n.length;++e<i;)if(t(n[e],e,n))return!0;return!1}var Ld=kd;function Ad(n,t){return n.has(t)}var Ed=Ad,bd=xd,Od=Ld,Yd=Ed,Pd=1,Rd=2;function Bd(n,t,e,i,o,r){var s=e&Pd,a=n.length,c=t.length;if(a!=c&&!(s&&c>a))return!1;var l=r.get(n),d=r.get(t);if(l&&d)return l==t&&d==n;var u=-1,M=!0,g=e&Rd?new bd:void 0;for(r.set(n,t),r.set(t,n);++u<a;){var y=n[u],N=t[u];if(i)var m=s?i(N,y,u,t,n,r):i(y,N,u,n,t,r);if(m!==void 0){if(m)continue;M=!1;break}if(g){if(!Od(t,function(f,w){if(!Yd(g,w)&&(y===f||o(y,f,e,i,r)))return g.push(w)})){M=!1;break}}else if(!(y===N||o(y,N,e,i,r))){M=!1;break}}return r.delete(n),r.delete(t),M}var xo=Bd;function Wd(n){var t=-1,e=Array(n.size);return n.forEach(function(i,o){e[++t]=[o,i]}),e}var Ud=Wd;function $d(n){var t=-1,e=Array(n.size);return n.forEach(function(i){e[++t]=i}),e}var Fd=$d,bi=vt,Oi=zo,Qd=Zt,Hd=xo,Zd=Ud,Gd=Fd,Vd=1,Jd=2,Kd="[object Boolean]",qd="[object Date]",_d="[object Error]",Xd="[object Map]",eg="[object Number]",tg="[object RegExp]",ig="[object Set]",og="[object String]",ng="[object Symbol]",rg="[object ArrayBuffer]",sg="[object DataView]",Yi=bi?bi.prototype:void 0,xt=Yi?Yi.valueOf:void 0;function ag(n,t,e,i,o,r,s){switch(e){case sg:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case rg:return!(n.byteLength!=t.byteLength||!r(new Oi(n),new Oi(t)));case Kd:case qd:case eg:return Qd(+n,+t);case _d:return n.name==t.name&&n.message==t.message;case tg:case og:return n==t+"";case Xd:var a=Zd;case ig:var c=i&Vd;if(a||(a=Gd),n.size!=t.size&&!c)return!1;var l=s.get(n);if(l)return l==t;i|=Jd,s.set(n,t);var d=Hd(a(n),a(t),i,o,r,s);return s.delete(n),d;case ng:if(xt)return xt.call(n)==xt.call(t)}return!1}var cg=ag,Pi=mo,lg=1,ug=Object.prototype,hg=ug.hasOwnProperty;function dg(n,t,e,i,o,r){var s=e&lg,a=Pi(n),c=a.length,l=Pi(t),d=l.length;if(c!=d&&!s)return!1;for(var u=c;u--;){var M=a[u];if(!(s?M in t:hg.call(t,M)))return!1}var g=r.get(n),y=r.get(t);if(g&&y)return g==t&&y==n;var N=!0;r.set(n,t),r.set(t,n);for(var m=s;++u<c;){M=a[u];var f=n[M],w=t[M];if(i)var I=s?i(w,f,M,t,n,r):i(f,w,M,n,t,r);if(!(I===void 0?f===w||o(f,w,e,i,r):I)){N=!1;break}m||(m=M=="constructor")}if(N&&!m){var z=n.constructor,T=t.constructor;z!=T&&"constructor"in n&&"constructor"in t&&!(typeof z=="function"&&z instanceof z&&typeof T=="function"&&T instanceof T)&&(N=!1)}return r.delete(n),r.delete(t),N}var gg=dg,kt=ao,Mg=xo,fg=cg,pg=gg,Ri=Ct,Bi=jt,Wi=Vt,yg=go,Ig=1,Ui="[object Arguments]",$i="[object Array]",at="[object Object]",vg=Object.prototype,Fi=vg.hasOwnProperty;function Ng(n,t,e,i,o,r){var s=Bi(n),a=Bi(t),c=s?$i:Ri(n),l=a?$i:Ri(t);c=c==Ui?at:c,l=l==Ui?at:l;var d=c==at,u=l==at,M=c==l;if(M&&Wi(n)){if(!Wi(t))return!1;s=!0,d=!1}if(M&&!d)return r||(r=new kt),s||yg(n)?Mg(n,t,e,i,o,r):fg(n,t,c,e,i,o,r);if(!(e&Ig)){var g=d&&Fi.call(n,"__wrapped__"),y=u&&Fi.call(t,"__wrapped__");if(g||y){var N=g?n.value():n,m=y?t.value():t;return r||(r=new kt),o(N,m,e,i,r)}}return M?(r||(r=new kt),pg(n,t,e,i,o,r)):!1}var wg=Ng,mg=wg,Qi=Oe;function ko(n,t,e,i,o){return n===t?!0:n==null||t==null||!Qi(n)&&!Qi(t)?n!==n&&t!==t:mg(n,t,e,i,ko,o)}var Tg=ko,zg=Tg;function jg(n,t){return zg(n,t)}var Cg=jg;const ce=Fe(Cg);var Sg=Qe,Dg=Oe,xg="[object Boolean]";function kg(n){return n===!0||n===!1||Dg(n)&&Sg(n)==xg}var Lg=kg;const pe=Fe(Lg);function Lo(n,t){if(n&&t){const e=Math.min(n.originX,t.originX),i=Math.min(n.originY,t.originY),o=Math.max(n.originX+n.width,t.originX+t.width),r=Math.max(n.originY+n.height,t.originY+t.height),s=o-e,a=r-i;return{originX:e,originY:i,width:s,height:a}}return t||n}const Je=(n,t)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:t}):setTimeout(()=>{e(2)},t)}).then(function(){n()},()=>{n()}),ii=n=>{const t=n.webkitBackingStorePixelRatio||n.mozBackingStorePixelRatio||n.msBackingStorePixelRatio||n.oBackingStorePixelRatio||n.backingStorePixelRatio||1;return Math.max(1,(window.devicePixelRatio||1)/t)};class Ao{constructor(t){p(this,"plugin");p(this,"uid");this.plugin=t,this.uid=t.displayer.uid}getNamespaceData(){var t;return V.toJS((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getUidFromKey(t){return t.split(xe).length===2&&t.split(xe)[0]||this.uid}isLocalId(t){return t.split(xe).length===1}getLocalId(t){return t.split(xe)[1]}isSelector(t){return this.getLocalId(t)===O}}const Ae=class Ae extends Ao{constructor(e,i){super(e);p(this,"namespace");p(this,"serviceStorage",{});p(this,"storage",{});p(this,"stateDisposer");p(this,"asyncClockState",!1);Ae.syncInterval=(i||Ae.syncInterval)*.5,this.namespace=Ae.namespace,this.serviceStorage=this.getNamespaceData(),this.storage=oe(this.serviceStorage)}getViewIdBySecenPath(e){const i=this.getNamespaceData();for(const[o,r]of Object.entries(i))for(const s of Object.keys(r))if(s===e)return o}getScenePathData(e){const i=this.getNamespaceData();for(const o of Object.values(i))for(const r of Object.keys(o))if(r===e)return oe(o[r])}getStorageData(e,i){const o=this.getNamespaceData();return o[e]&&oe(o[e][i])||void 0}hasSelector(e,i){const o=this.storage&&this.storage[e]&&this.storage[e][i];return!!(o&&Object.keys(o).find(r=>this.isOwn(r)&&this.getLocalId(r)===O))}addStorageStateListener(e){this.stateDisposer=V.autorun(async()=>{const i=this.getNamespaceData(),o=this.diffFun(this.serviceStorage,i);this.serviceStorage=i;for(const[r,s]of Object.entries(o))if(s&&s.newValue===void 0){const{viewId:a,scenePath:c}=s;a&&c&&this.storage[a]&&delete this.storage[a][c][r]}else if(s&&s.newValue){const{viewId:a,scenePath:c}=s;this.storage[a]||(this.storage[a]={}),this.storage[a][c]||(this.storage[a][c]={}),this.storage[a][c][r]=oe(s.newValue)}Object.keys(o).length>0&&e(o)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFun(e,i){const o=ye(e),r=ye(i),s={};for(const a of o){if(ce(e[a],i[a]))continue;const c=this.diffFunByscenePath(e[a]||{},i[a]||{},a);Object.assign(s,c)}for(const a of r)if(!o.includes(a)){const c=this.diffFunByscenePath(e[a]||{},i[a]||{},a);Object.assign(s,c)}return s}diffFunByscenePath(e,i,o){const r=ye(e),s=ye(i),a={};for(const c of r){if(ce(e[c],i[c]))continue;const l=this.diffFunByKeys(e[c]||{},i[c]||{},c,o);Object.assign(a,l)}for(const c of s)if(!r.includes(c)){const l=this.diffFunByKeys(e[c]||{},i[c]||{},c,o);Object.assign(a,l)}return a}diffFunByKeys(e,i,o,r){const s=ye(e),a=ye(i),c={};for(const l of s){if(a.includes(l)){if(ce(e[l],i[l]))continue;c[l]={oldValue:e[l],newValue:i[l],viewId:r,scenePath:o};continue}c[l]={oldValue:e[l],newValue:void 0,viewId:r,scenePath:o}}for(const l of a)s.includes(l)||(c[l]={oldValue:void 0,newValue:i[l],viewId:r,scenePath:o});return c}transformKey(e){return this.uid+xe+e}isOwn(e){return e.split(xe)[0]===this.uid}dispatch(e){const{type:i,workId:o,ops:r,index:s,opt:a,toolsType:c,removeIds:l,updateNodeOpt:d,op:u,selectIds:M,isSync:g,scenePath:y,viewId:N}=e;if(N)switch(i){case k.Clear:const m={};y&&this.storage[N]&&this.storage[N][y]?(delete this.storage[N][y],this.setState(m,{isSync:g,viewId:N,scenePath:y})):this.storage[N]&&(delete this.storage[N],this.setState(m,{isSync:g,viewId:N,scenePath:""}));break;case k.CreateWork:if(y&&o&&c&&a){const T=this.isLocalId(o.toString())?this.transformKey(o):o;this.updateValue(T.toString(),{type:k.CreateWork,workId:o,toolsType:c,opt:a},{isSync:g,viewId:N,scenePath:y})}break;case k.DrawWork:if(y&&o&&typeof s=="number"&&(u!=null&&u.length)){const T=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[N]&&this.storage[N][y]&&this.storage[N][y][T]||void 0,x=s?((j==null?void 0:j.op)||[]).slice(0,s).concat(u):u||(j==null?void 0:j.op);j&&x&&this.updateValue(T.toString(),{...j,type:k.DrawWork,op:x,index:s},{isSync:g,viewId:N,scenePath:y})}break;case k.FullWork:if(y&&o){const T=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[N]&&this.storage[N][y]&&this.storage[N][y][T]||void 0,x=d||(j==null?void 0:j.updateNodeOpt),A=c||(j==null?void 0:j.toolsType),W=a||(j==null?void 0:j.opt),b=r||(j==null?void 0:j.ops);A&&W&&this.updateValue(T.toString(),{type:k.FullWork,updateNodeOpt:x,workId:T,toolsType:A,opt:W,ops:b},{isSync:g,viewId:N,scenePath:y})}break;case k.RemoveNode:if(y&&(l!=null&&l.length)){const T=l.map(j=>this.isLocalId(j+"")?this.transformKey(j):j);this.storage[N]&&this.storage[N][y]&&Object.keys(this.storage[N][y]).map(j=>{T!=null&&T.includes(j)&&this.updateValue(j,void 0,{isSync:g,viewId:N,scenePath:y})})}break;case k.UpdateNode:if(y&&o&&(d||r||a)){const T=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[N]&&this.storage[N][y]&&this.storage[N][y][T]||void 0;j&&(j.updateNodeOpt=d,(r||u)&&(j.ops=r,j.op=u),a&&(j.opt=a),j.type=k.FullWork,this.updateValue(T.toString(),j,{isSync:g,viewId:N,scenePath:y}))}break;case k.Select:if(!y)return;let f;M!=null&&M.length&&(f=M.map(T=>this.isLocalId(T+"")?this.transformKey(T):T));const w=this.transformKey(O),I=this.storage[N]&&this.storage[N][y]&&this.storage[N][y][w]||void 0,z=a||(I==null?void 0:I.opt);f&&this.checkOtherSelector(w,f,{isSync:g,viewId:N,scenePath:y}),this.updateValue(w,f&&{type:k.Select,toolsType:v.Selector,opt:z,selectIds:f},{isSync:g,viewId:N,scenePath:y});break}}checkOtherSelector(e,i,o){const{viewId:r,scenePath:s}=o;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===O){const c=this.storage[r][s][a];if(c&&c.selectIds){const l=c.selectIds.filter(d=>!i.includes(d));l.length>0&&(c.selectIds=l),this.updateValue(a,l.length&&c||void 0,o)}}}setState(e,i){const{viewId:o,scenePath:r}=i,s=ye(e);for(let a=0;a<s.length;a++){const c=s[a],l=e[c];typeof l<"u"?(this.storage[o]||(this.storage[o]={}),this.storage[o][r]||(this.storage[o][r]={}),this.storage[o][r][c]=l):delete this.storage[o][r][c]}this.runSyncService(i)}updateValue(e,i,o){const{viewId:r,scenePath:s}=o;i===void 0?delete this.storage[r][s][e]:(this.storage[r]||(this.storage[r]={}),this.storage[r][s]||(this.storage[r][s]={}),this.storage[r][s][e]=i),this.runSyncService(o)}runSyncService(e){this.asyncClockState||(this.asyncClockState=!0,setTimeout(()=>{e.isSync?(this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)):Je(()=>{this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)},Ae.syncInterval)},e!=null&&e.isSync?0:Ae.syncInterval))}syncSerivice(e=!1){const i=ye(this.serviceStorage),o=ye(this.storage),r=new Map;for(const s of i){if(!o.includes(s)){r.set(s,void 0);continue}ce(this.serviceStorage[s],this.storage[s])||this.syncViewData(s,e)}for(const s of o)i.includes(s)||r.set(s,this.storage[s]);if(r.size>5)this.syncStorageView(this.storage,e);else for(const[s,a]of r.entries())this.syncUpdataView(s,a,e)}syncViewData(e,i=!1){const o=ye(this.serviceStorage[e]),r=ye(this.storage[e]),s=new Map;for(const a of o){if(!r.includes(a)){s.set(a,void 0);continue}ce(this.serviceStorage[e][a],this.storage[e][a])||this.syncScenePathData(e,a,i)}for(const a of r)o.includes(a)||s.set(a,this.storage[e][a]);if(s.size>5)this.syncStorageScenePath(e,this.storage[e],i);else for(const[a,c]of s.entries())this.syncUpdataScenePath(e,a,c,i)}syncScenePathData(e,i,o=!1){const r=ye(this.serviceStorage[e][i]),s=ye(this.storage[e][i]),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}ce(this.serviceStorage[e][i][c],this.storage[e][i][c])||a.set(c,this.storage[e][i][c])}for(const c of s)r.includes(c)||a.set(c,this.storage[e][i][c]);if(a.size>5)this.syncStorageKey(e,i,this.storage[e][i],o);else for(const[c,l]of a.entries())this.syncUpdataKey(e,i,c,l,o)}syncUpdataView(e,i,o=!1){var s;Object.keys(this.serviceStorage).length?(o||(i===void 0?delete this.serviceStorage[e]:this.serviceStorage[e]=oe(i)),(s=this.plugin)==null||s.updateAttributes([this.namespace,e],i)):this.syncStorageView(this.storage,o)}syncStorageView(e,i=!1){var o;i||e&&(this.serviceStorage=oe(e)),(o=this.plugin)==null||o.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,i,o,r=!1){var a;Object.keys(this.serviceStorage[e]).length?(r||(o===void 0?delete this.serviceStorage[e][i]:this.serviceStorage[e][i]=o),(a=this.plugin)==null||a.updateAttributes([this.namespace,e,i],o)):this.syncStorageScenePath(e,this.storage[e],r)}syncStorageScenePath(e,i,o=!1){var r;o||i&&(this.serviceStorage[e]=i),(r=this.plugin)==null||r.updateAttributes([this.namespace,e],i)}syncUpdataKey(e,i,o,r,s=!1){var c;Object.keys(this.serviceStorage[e][i]).length?(s||(r===void 0?delete this.serviceStorage[e][i][o]:this.serviceStorage[e][i][o]=r),(c=this.plugin)==null||c.updateAttributes([this.namespace,e,i,o],r)):this.syncStorageKey(e,i,this.storage[e][i],s)}syncStorageKey(e,i,o,r=!1){var s;r||(this.serviceStorage[e][i]=o),(s=this.plugin)==null||s.updateAttributes([this.namespace,e,i],o)}keyTransformWorkId(e){const i=e.split(xe);return i.length===2?i[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={}}};p(Ae,"namespace","PluginState"),p(Ae,"syncInterval",500);let Rt=Ae;class Ag{constructor(){p(this,"roomMembers",[]);p(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const i={online:e.map(o=>{var r;return((r=o.payload)==null?void 0:r.uid)||o.session}),offline:t.map(o=>{var r;return((r=o.payload)==null?void 0:r.uid)||o.session})};this.onChangeHooks.forEach(o=>o(i))}getRoomMember(t){return this.roomMembers.find(e=>{var i;return((i=e.payload)==null?void 0:i.uid)===t})}isOnLine(t){return!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}var je=(n=>(n[n.Text=1]="Text",n[n.Shape=2]="Shape",n))(je||{});const Me=class Me{createProxy(t){const e=new Proxy(t,{get(i,o,r){const s=Me.interceptors.hasOwnProperty(o)?Me.interceptors:i;return Reflect.get(s,o,r)}});return Me.proxyToRaw.set(e,t),e}};p(Me,"proxyToRaw",new WeakMap),p(Me,"interceptors",{entries(...t){return Me.proxyToRaw.get(this).entries(...t)},forEach(...t){return Me.proxyToRaw.get(this).forEach(...t)},size(){return Me.proxyToRaw.get(this).size},get(t){return Me.proxyToRaw.get(this).get(t)},set(t,e){return Me.proxyToRaw.get(this).set(t,e)},delete(t,e){return Me.proxyToRaw.get(this).delete(t)},clear(){return Me.proxyToRaw.get(this).clear()}});let Be=Me;class Eg{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"editors");p(this,"activeId");p(this,"undoTickerId");p(this,"proxyMap");p(this,"taskqueue",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i;const o=new Map;this.proxyMap=new Be;const r=this,s=Be.interceptors.set;Be.interceptors.set=function(c,l){return r.interceptors.set(c,l),s.call(this,c,l)};const a=Be.interceptors.delete;Be.interceptors.delete=function(c,l){return r.interceptors.delete(c,l),a.call(this,c)},this.editors=this.proxyMap.createProxy(o)}get collector(){return this.control.collector}filterEditor(t){const e=new Map;return this.editors.forEach((i,o)=>{i.viewId===t&&e.set(o,i)}),e}get interceptors(){return{set:(t,e)=>{var g,y,N,m,f,w,I,z;if(!this.collector)return!0;const{viewId:i,scenePath:o,canSync:r,canWorker:s,type:a,opt:c,dataType:l}=e;if(!s&&!r)return!0;const u=((g=this.collector)==null?void 0:g.isLocalId(t))?(y=this.collector)==null?void 0:y.transformKey(t):t,M=((N=this.collector)==null?void 0:N.storage[i])&&this.collector.storage[i][o]&&this.collector.storage[i][o][u]||void 0;M?M.toolsType===v.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:t,msgType:k.UpdateNode}).forEach(T=>{var j;(j=this.control.worker)==null||j.taskBatchData.delete(T)}),(I=this.control.worker)==null||I.taskBatchData.add({workId:t,msgType:k.UpdateNode,dataType:l||Z.Local,toolsType:v.Text,opt:c,viewId:i,scenePath:o}),(z=this.control.worker)==null||z.runAnimation()),r&&Je(()=>{var T;(T=this.collector)==null||T.dispatch({type:k.UpdateNode,workId:t,toolsType:v.Text,opt:c,viewId:i,scenePath:o})},this.control.worker.maxLastSyncTime)):a===je.Text&&(r&&((m=this.collector)==null||m.dispatch({type:c.text&&k.FullWork||k.CreateWork,workId:t,toolsType:v.Text,opt:c,isSync:!0,viewId:i,scenePath:o})),s&&((f=this.control.worker)==null||f.taskBatchData.add({workId:t,msgType:c.text&&k.FullWork||k.CreateWork,dataType:l||Z.Local,toolsType:v.Text,opt:c,viewId:i,scenePath:o}),(w=this.control.worker)==null||w.runAnimation()))},delete:t=>{var a,c;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:i,scenePath:o,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:t,toolsType:v.Text,msgType:k.RemoveNode,dataType:Z.Local,viewId:i,scenePath:o}),(c=this.control.worker)==null||c.runAnimation()),r&&Je(()=>{var l;(l=this.collector)==null||l.dispatch({type:k.RemoveNode,removeIds:[t],toolsType:v.Text,viewId:i,scenePath:o})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(t,e){var r,s,a,c;const i=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(t,e),o=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&o&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:k.GetTextActive,dataType:Z.Local,op:i,viewId:e,scenePath:o}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){if(this.activeId){const t=this.editors.get(this.activeId),e=(t==null?void 0:t.opt.text)&&(t==null?void 0:t.opt.text.replace(/\s*,/g,"")),i=t==null?void 0:t.viewId;e?this.unActive():this.delete(this.activeId,!0,!0),this.undoTickerId&&i&&(this.internalMsgEmitter.emit("undoTickerEnd",this.undoTickerId,i,!0),this.undoTickerId=void 0)}}onCameraChange(t,e){var i,o;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:c}=s.opt,l=a&&((i=this.control.viewContainerManager)==null?void 0:i.transformToOriginPoint(a,s.viewId)),d=(o=this.control.viewContainerManager)==null?void 0:o.getCurScenePath(e);if(d&&e){const u={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:s.opt,scale:t.scale,type:je.Text,viewId:e,scenePath:d,canWorker:!1,canSync:!1};this.editors.set(r,u),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(t){var y,N;const{workId:e,opt:i,msgType:o,viewId:r,scenePath:s,dataType:a}=t;if(!e||!r||!s)return;const c=e.toString();if(o===k.RemoveNode){console.log("onServiceDerive-d",c),this.delete(c,!0,!0);return}const{boxPoint:l,boxSize:d}=i,u=l&&((y=this.control.viewContainerManager)==null?void 0:y.transformToOriginPoint(l,r)),M=this.control.viewContainerManager.getView(r),g={x:u&&u[0]||0,y:u&&u[1]||0,w:d&&d[0]||0,h:d&&d[1]||0,opt:i,type:je.Text,canWorker:!0,canSync:!1,dataType:a,scale:((N=M==null?void 0:M.cameraOpt)==null?void 0:N.scale)||1,viewId:r,scenePath:s};this.editors.set(c,g),a===Z.Service&&i.workState===C.Done&&this.activeId===c&&(this.activeId=void 0),console.log("onServiceDerive---1",c,g.opt.text,g.opt.uid,this.activeId,a),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}updateForViewEdited(t,e){var o;this.editors.set(t,e);const i=(o=this.taskqueue.get(t))==null?void 0:o.resolve;i&&i(e)}active(t){var i;const e=this.editors.get(t);e&&e.viewId&&(e.opt.workState=C.Start,e.opt.uid=(i=this.collector)==null?void 0:i.uid,this.activeId=t,e.canWorker=!0,e.canSync=!0,console.log("onServiceDerive---0",e.opt.uid),this.editors.set(t,e),this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}unActive(){const t=this.activeId&&this.editors.get(this.activeId);t&&t.viewId&&this.activeId&&(t.opt.workState=C.Done,t.opt.uid=void 0,t.canWorker=!0,t.canSync=!0,this.editors.set(this.activeId,t),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t.viewId,this.activeId))}createTextForMasterController(t,e){var s;const{workId:i,isActive:o,...r}=t;r.opt.zIndex=this.getMaxZIndex()+1,r.opt.uid=(s=this.collector)==null?void 0:s.uid,e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,r.viewId)),o&&(this.activeId=i),r.dataType=Z.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(i,r),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}updateTextForMasterController(t,e){var s;const{workId:i,...o}=t;e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,o.viewId));const r=this.editors.get(i)||{};o.opt&&(o.opt.uid=(s=this.collector)==null?void 0:s.uid),o.dataType=Z.Local,this.editors.set(i,{...r,...o}),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var l;const{workId:i,...o}=t;e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,o.viewId));const r=this.editors.get(i)||{};if(o.opt&&(o.opt.uid=(l=this.collector)==null?void 0:l.uid),o.dataType=Z.Local,this.editors.set(i,{...r,...o}),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId),this.taskqueue.has(i))return;const s=setTimeout(()=>{var u;const d=(u=this.taskqueue.get(i))==null?void 0:u.resolve;d&&d(void 0)},20),a=await new Promise(d=>{this.taskqueue.set(i,{resolve:d,clocker:s})}),c=this.taskqueue.get(i);return c&&(c.clocker&&clearTimeout(c.clocker),this.taskqueue.delete(i)),this.taskqueue.delete(i),a}updateTextForWorker(t,e){const{workId:i,isActive:o,...r}=t;e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,r.viewId));const a={...this.editors.get(i)||{},...r};if(o){a.canWorker=!1,a.canSync=!1,this.editors.set(i,a),this.active(i);return}this.editors.set(i,a),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}get(t){return this.editors.get(t)}delete(t,e,i){const o=this.editors.get(t);if(o){const r=o.viewId;o.canSync=e,o.canWorker=i,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}}deleteBatch(t,e,i){const o=new Set;for(const r of t){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=i,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),o.add(a)}}for(const r of o)this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}clear(t,e){this.editors.forEach((i,o)=>{i.viewId===t&&(e&&(i.canSync=!1),i.canWorker=!1,this.editors.delete(o))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}getMaxZIndex(){let t=0;return this.editors.forEach(e=>{e.opt.zIndex&&e.opt.zIndex>t&&(t=e.opt.zIndex)}),t}}const Ee=class Ee extends Ao{constructor(e,i){super(e);p(this,"serviceStorage",{});p(this,"storage",{});p(this,"stateDisposer");p(this,"asyncClockTimer");p(this,"namespace");this.namespace=Ee.namespace,Ee.syncInterval=(i||Ee.syncInterval)*.5,this.serviceStorage=this.getNamespaceData(),this.storage=oe(this.serviceStorage)}addStorageStateListener(e){this.stateDisposer=V.autorun(async()=>{const i=this.getNamespaceData(),o=this.getDiffMap(this.serviceStorage,i);this.serviceStorage=i,o.size&&e(o)})}getDiffMap(e,i){const o=new Map;for(const[r,s]of Object.entries(i))r!==this.uid&&(s&&ce(e[r],s)||s&&o.set(r,s));return o}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}transformKey(e){return this.uid+xe+e}isOwn(e){return e===this.uid}dispatch(e){const{type:i,op:o,isSync:r,viewId:s}=e;switch(i){case $e.Cursor:o&&this.pushValue(this.uid,{type:$e.Cursor,op:o,viewId:s},{isSync:r});break}}pushValue(e,i,o){var r;this.storage[e]||(this.storage[e]=[]),(r=this.storage[e])==null||r.push(i),this.runSyncService(o)}clearValue(e){var o;this.storage[e]=void 0,Object.keys(this.serviceStorage).length&&((o=this.plugin)==null||o.updateAttributes([this.namespace,e],void 0))}runSyncService(e){this.asyncClockTimer||(this.asyncClockTimer=setTimeout(()=>{e!=null&&e.isSync?(this.asyncClockTimer=void 0,this.syncSerivice()):Je(()=>{this.asyncClockTimer=void 0,this.syncSerivice()},Ee.syncInterval)},e!=null&&e.isSync?0:Ee.syncInterval))}syncSerivice(){var i;Object.keys(this.serviceStorage).length?Object.keys(this.storage).forEach(o=>{var r;(r=this.plugin)==null||r.updateAttributes([this.namespace,o],this.storage[o])}):(i=this.plugin)==null||i.updateAttributes(this.namespace,this.storage),this.storage={}}destroy(){this.removeStorageStateListener(),this.storage={},this.serviceStorage={}}};p(Ee,"syncInterval",100),p(Ee,"namespace","PluginEvent");let Bt=Ee;class bg{constructor(t){p(this,"expirationTime",5e3);p(this,"internalMsgEmitter");p(this,"control");p(this,"eventCollector");p(this,"roomMember");p(this,"animationId");p(this,"removeTimerId");p(this,"asyncEndInfo");p(this,"animationPointWorkers",new Map);p(this,"animationDrawWorkers",new Map);p(this,"cursorInfoMap",new Map);const{control:e,internalMsgEmitter:i}=t;this.internalMsgEmitter=i,this.control=e,this.roomMember=e.roomMember}activeCollector(){var t,e;this.control.plugin&&(this.eventCollector=new Bt(this.control.plugin,Math.min(((e=(t=this.control.pluginOptions)==null?void 0:t.syncOpt)==null?void 0:e.interval)||100,100)),this.eventCollector.addStorageStateListener(i=>{i.forEach((o,r)=>{var s;if(((s=this.eventCollector)==null?void 0:s.uid)!==r){const a=new Map;o==null||o.forEach(c=>{if(c&&c.type===$e.Cursor&&c.op&&c.viewId){const l=[];for(let d=0;d<c.op.length;d+=2){const u=c.op[d],M=c.op[d+1];if(se(u)&&se(M)){const g=this.control.viewContainerManager.transformToOriginPoint([u,M],c.viewId);l.push(g[0],g[1])}else l.push(u,M)}a.set(c.viewId,l)}}),a.size&&(this.activePointWorkShape(r,a),this.runAnimation())}})}))}onFocusViewChange(){const t=this.control.viewContainerManager.focuedViewId;for(const i of this.animationDrawWorkers.keys()){const o=this.getUidAndviewId(i).uid,r=this.getUidAndviewId(i).viewId;r!==t&&this.activeDrawWorkShape(o,[void 0,void 0],C.Done,r)}const e=new Map;for(const i of this.animationPointWorkers.keys()){const o=this.getUidAndviewId(i).uid,r=this.getUidAndviewId(i).viewId;if(r!==t){const s=e.get(o)||new Map;s.set(r,[void 0,void 0]),e.set(o,s)}}if(e.size)for(const[i,o]of e.entries())this.activePointWorkShape(i,o);this.runAnimation()}activePointWorkShape(t,e){var o;if(this.roomMember.getRoomMember(t))for(const[r,s]of e.entries()){const a=this.getKey(t,r);let c=!1;const l=this.control.viewContainerManager.getAllViews().map(u=>u==null?void 0:u.id);for(const u of l)if(u&&u!==r){const M=this.getKey(t,u),g=this.animationDrawWorkers.get(M);if((g==null?void 0:g.workState)===C.Start||(g==null?void 0:g.workState)===C.Doing||!1){c=!0;break}else if(this.removeTimerId&&(clearTimeout(this.removeTimerId),this.removeTimerId=void 0),g)this.activeDrawWorkShape(t,[void 0,void 0],C.Done,u),this.runAnimation();else{const N=this.animationPointWorkers.get(M);if(N)N.animationWorkData=[void 0,void 0],N.animationIndex=0,N.freeze=!1;else{const m={animationIndex:0,animationWorkData:[void 0,void 0],freeze:!1};this.animationPointWorkers.set(M,m)}}}const d=this.animationPointWorkers.get(a);if(s){if(!d){const u={animationIndex:0,animationWorkData:s,freeze:c};(o=this.animationPointWorkers)==null||o.set(a,u);return}d.animationWorkData=s,d.animationIndex=0,d.freeze=c}}}getKey(t,e){return`${t}${xe}${e}`}getUidAndviewId(t){const[e,i]=t.split(xe);return{uid:e,viewId:i}}animationCursor(){this.animationId=void 0;const t=Date.now();this.animationPointWorkers.forEach((e,i)=>{const{uid:o,viewId:r}=this.getUidAndviewId(i);if(e.freeze)return;const a=e.animationIndex,c=this.roomMember.getRoomMember(o);if(c){e.animationWorkData.length-1>a&&(e.animationIndex=a+2);const l=e.animationWorkData[a],d=e.animationWorkData[a+1],u=this.cursorInfoMap.get(r)||new Map;se(l)&&se(d)?u.set(c.memberId,{x:l,y:d,roomMember:c,timestamp:t}):u.has(c.memberId)&&u.delete(c.memberId),u.size?this.cursorInfoMap.set(r,u):this.cursorInfoMap.has(r)&&(this.cursorInfoMap.delete(r),this.internalMsgEmitter.emit([U.Cursor,r],[])),e.animationWorkData.length-1<=e.animationIndex&&this.animationPointWorkers.delete(i)}}),this.animationDrawWorkers.forEach((e,i)=>{const{uid:o,viewId:r}=this.getUidAndviewId(i),s=e.animationIndex,a=this.roomMember.getRoomMember(o);if(a){e.animationWorkData.length-1>s&&(e.animationIndex=s+2);const c=e.animationWorkData[s],l=e.animationWorkData[s+1],d=this.cursorInfoMap.get(r)||new Map;se(c)&&se(l)?d.set(a.memberId,{x:c,y:l,roomMember:a,timestamp:t}):d.has(a.memberId)&&d.delete(a.memberId),d.size?this.cursorInfoMap.set(r,d):this.cursorInfoMap.has(r)&&(this.cursorInfoMap.delete(r),this.internalMsgEmitter.emit([U.Cursor,r],[])),e.animationWorkData.length-1<=e.animationIndex&&this.animationDrawWorkers.delete(i)}});for(const[e,i]of this.cursorInfoMap)if(i){const o=[],r=[];for(const[s,a]of i.entries()){const{timestamp:c,...l}=a;c+this.expirationTime<t?r.push(s):o.push(l)}if(r.length)for(const s of r)i.delete(s);i.size?this.cursorInfoMap.set(e,i):this.cursorInfoMap.delete(e),this.internalMsgEmitter.emit([U.Cursor,e],o)}(this.animationPointWorkers.size||this.animationDrawWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}activeDrawWorkShape(t,e,i,o){var c,l;if(!this.roomMember.getRoomMember(t))return;const s=this.getKey(t,o);if(i===C.Start){const d=this.animationPointWorkers.get(s);if(d)d.animationWorkData=[],d.animationIndex=0,d.freeze=!0;else{const u={animationIndex:0,animationWorkData:[],freeze:!0};(c=this.animationDrawWorkers)==null||c.set(s,u)}}else if(i===C.Done){const d=this.animationPointWorkers.get(s);d&&(d.freeze=!1)}const a=this.animationDrawWorkers.get(s);if(e){if(!a){const d={animationIndex:0,animationWorkData:e,workState:i};(l=this.animationDrawWorkers)==null||l.set(s,d);return}a.animationWorkData=e,a.animationIndex=0,a.workState=i}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}sendEvent(t,e){var i;(i=this.eventCollector)==null||i.dispatch({type:$e.Cursor,op:se(t[0])&&se(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0],viewId:e})}collectServiceCursor(t){const{op:e,uid:i,workState:o,viewId:r}=t;if(i&&e&&o&&r){const s=this.control.viewContainerManager.focuedViewId;if(o===C.Done){if(r!==s){this.activeDrawWorkShape(i,[void 0,void 0],o,r),this.runAnimation();return}this.removeTimerId&&(clearTimeout(this.removeTimerId),this.removeTimerId=void 0,this.asyncEndInfo&&this.asyncEndInfo.viewId!==r&&this.asyncEndInfo.uid===i&&this.activeDrawWorkShape(i,[void 0,void 0],C.Done,this.asyncEndInfo.viewId)),this.asyncEndInfo={uid:i,viewId:r},this.removeTimerId=setTimeout(()=>{this.removeTimerId=void 0,this.activeDrawWorkShape(i,[void 0,void 0],C.Done,r),this.runAnimation()},this.expirationTime)}if(se(e[0])&&se(e[1])){const a=this.control.viewContainerManager.transformToOriginPoint(e,r);this.activeDrawWorkShape(i,a,o,r)}this.runAnimation()}}unabled(){var t;(t=this.eventCollector)==null||t.dispatch({type:$e.Cursor,op:[void 0,void 0],viewId:this.control.viewContainerManager.focuedViewId})}destroy(){var t;(t=this.eventCollector)==null||t.destroy()}}class Ie{constructor(){p(this,"emtType");p(this,"control");p(this,"mainEngine")}static dispatch(t,e,i){var o;(o=Ne.InternalMsgEmitter)==null||o.emit([t,e],i)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,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(t){var e,i,o;for(const[r,s]of t)(e=this.mainEngine)==null||e.queryTaskBatchData(s).forEach(a=>{var c;(c=this.mainEngine)==null||c.taskBatchData.delete(a)}),(i=this.mainEngine)==null||i.taskBatchData.add(r);(o=this.mainEngine)==null||o.runAnimation()}collectForServiceWorker(t){Je(()=>{t.forEach(e=>{var r,s,a;(r=this.serviceColloctor)==null||r.dispatch(e);const{viewId:i,undoTickerId:o}=e;o&&i&&((a=(s=this.mainEngine)==null?void 0:s.internalMsgEmitter)==null||a.emit("undoTickerEnd",o,i))})},this.mainEngine.maxLastSyncTime)}}class Og extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.ZIndexActive)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workId:i,isActive:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[],l=[];i===O&&c.push([{workId:i,msgType:k.UpdateNode,dataType:Z.Local,isActiveZIndex:o,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!1,viewId:r,scenePath:a},{workId:i,msgType:k.UpdateNode,emitEventType:this.emitEventType}]),c.length&&this.collectForLocalWorker(c),l.length&&this.collectForServiceWorker(l)}}class Yg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.CopyNode)}collect(e){var a;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o}=e,r=this.control.viewContainerManager.getView(o);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath;for(const c of i){const l=c.toString(),u=this.serviceColloctor.isLocalId(l)?this.serviceColloctor.transformKey(c):l,M=(a=this.serviceColloctor.getStorageData(o,s))==null?void 0:a[u];if(M){if(c===O){const g=M&&this.copySelector({viewId:o,store:M});g&&this.pasteSelector({...g,viewId:o,scenePath:s});break}if(M.toolsType===v.Text&&M.opt&&M.opt.workState&&M.opt.workState!==C.Done){const g=M&&this.copyText({viewId:o,store:M});g&&this.pasteText({...g,viewId:o,scenePath:s,key:u,store:M});break}}}}copyText(e){const{viewId:i,store:o}=e,r=this.control.viewContainerManager.getView(i);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],c=o.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:a,textCenter:l}}pasteText(e){var m,f;const{bgCenter:i,textCenter:o,store:r,key:s,viewId:a,scenePath:c}=e,l=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!l)return;const d=Math.floor(Math.random()*30+1),u=Date.now(),M=((m=l.cameraOpt)==null?void 0:m.scale)||1,g=i&&o&&[i[0]-o[0]+d,i[1]-o[1]+d]||[d/M,d/M],N=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+u;if(this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,a),r.toolsType===v.Text&&r.opt){const w=r.opt;if(w&&w.boxPoint&&w.text){w.workState=C.Done;const I=w.boxPoint;w.boxPoint=[I[0]+g[0],I[1]+g[1]],w.workState=C.Done;const z=this.control.viewContainerManager.transformToOriginPoint(w.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:N,x:z[0],y:z[1],opt:w,scale:((f=l.cameraOpt)==null?void 0:f.scale)||1,type:je.Text,isActive:!1,viewId:a,scenePath:c}),this.collectForServiceWorker([{...r,opt:w,type:k.FullWork,workId:N,viewId:a,scenePath:c,undoTickerId:u}])}}}copySelector(e){var N,m,f,w,I,z,T,j;const{viewId:i,store:o}=e,r=this.control.viewContainerManager.getView(i),s=o.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((N=r.cameraOpt)==null?void 0:N.centerX)||0,centerY:((m=r.cameraOpt)==null?void 0:m.centerY)||0,scale:((f=r.cameraOpt)==null?void 0:f.scale)||1}},l=(w=r.displayer.canvasBgRef.current)==null?void 0:w.getBoundingClientRect(),d=(z=(I=r.displayer)==null?void 0:I.floatBarCanvasRef.current)==null?void 0:z.getBoundingClientRect(),u=l&&[l.x+l.width/2,l.y+l.height/2],M=d&&[d.x+d.width/2,d.y+d.height/2],g=u&&r.viewData&&r.viewData.convertToPointInWorld({x:u[0],y:u[1]}),y=M&&r.viewData&&r.viewData.convertToPointInWorld({x:M[0],y:M[1]});g&&y&&(c.offset={x:g.x-y.x,y:g.y-y.y});for(const x of s){const A=(j=(T=this.serviceColloctor)==null?void 0:T.getStorageData(r.id,r.focusScenePath))==null?void 0:j[x];A&&a.set(x,A)}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var N;const{copyStores:i,copyCoordInfo:o,viewId:r,scenePath:s}=e,a=this.control.viewContainerManager.getView(r);if(!i.size||!this.serviceColloctor||!a)return;const{offset:c,cameraOpt:l}=o,d=Math.floor(Math.random()*30+1),u=[c.x+d,c.y+d],M=Date.now(),g=[],y=[];this.mainEngine.internalMsgEmitter.emit("undoTickerStart",M,r);for(const[m,f]of i.entries()){const I=(this.serviceColloctor.isLocalId(m)?m:this.serviceColloctor.getLocalId(m.toString()))+"-"+M,z={useAnimation:!1};if(f.toolsType===v.Text&&f.opt){const T=f.opt;if(T&&T.boxPoint&&T.text){T.workState=C.Done;const j=T.boxPoint;T.boxPoint=[j[0]+u[0],j[1]+u[1]],T.workState=C.Done;const x=this.control.viewContainerManager.transformToOriginPoint(T.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:I,x:x[0],y:x[1],opt:T,scale:((N=a.cameraOpt)==null?void 0:N.scale)||1,type:je.Text,isActive:!1,viewId:r,scenePath:s})}y.push({...f,opt:T,type:k.FullWork,workId:I,viewId:r,scenePath:s,undoTickerId:M});continue}if(f.toolsType===v.Image&&(f.opt.uuid=I,f.opt.centerX=f.opt.centerX+u[0],f.opt.centerY=f.opt.centerY+u[1]),f.ops){const T=Id(f.ops).map((x,A)=>{const W=A%3;return W===0?x+u[0]:W===1?x+u[1]:x}),j=vd(T);f.ops=j}y.push({...f,updateNodeOpt:z,type:k.FullWork,workId:I,viewId:r,scenePath:s,undoTickerId:M}),g.push([{...f,updateNodeOpt:z,workId:I,msgType:k.FullWork,dataType:Z.Local,emitEventType:S.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r,undoTickerId:M},{workId:I,msgType:k.FullWork,emitEventType:S.CopyNode}])}g.length&&this.collectForLocalWorker(g),y.length&&this.collectForServiceWorker(y)}}function St(n,t,e){return"#"+((n<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function ue(n,t=1){return"rgba("+parseInt("0x"+n.slice(1,3))+","+parseInt("0x"+n.slice(3,5))+","+parseInt("0x"+n.slice(5,7))+","+t+")"}function ct(n,t,e,i=1){return`rgba(${n},${t},${e},${i})`}function oi(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),o=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[St(e,i,o),r]}function lt(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),o=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[e,i,o,r]}function Hi(n){return n==="transparent"}class Pg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetColorNode)}setTextColor(e,i,o,r){const{fontColor:s,fontBgColor:a}=o;i.opt&&(s&&(i.opt.fontColor=s),a&&(i.opt.fontColor=a),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:i.opt,viewId:r,canSync:!0,canWorker:!0}))}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,strokeColor:o,fillColor:r,fontColor:s,fontBgColor:a,viewId:c}=e,l=this.control.viewContainerManager.getView(c);if(!(l!=null&&l.displayer))return;const d=l.focusScenePath,u=[...i],M=this.serviceColloctor.storage,g=[],y={};for(;u.length;){const N=u.pop();if(!N)continue;const m=N.toString(),f=this.serviceColloctor.isLocalId(m),w=f?this.serviceColloctor.transformKey(N):m;let I=m;!f&&this.serviceColloctor.isOwn(I)&&(I=this.serviceColloctor.getLocalId(I));const z=M[c][d][w]||void 0;if(z){const T=z.updateNodeOpt||{};if(s||a){if(s){T.fontColor=s;const[x,A,W,b]=lt(s);y.textColor=[x,A,W],y.textOpacity=b}if(a){T.fontBgColor=a;const[x,A,W,b]=lt(a);y.textBgColor=[x,A,W],y.textBgOpacity=b}if(z.toolsType===v.Text&&z.opt){this.setTextColor(I,oe(z),T,c);continue}}if(o){T.strokeColor=o;const[x,A,W,b]=lt(o);y.strokeColor=[x,A,W],y.strokeOpacity=b}if(r)if(T.fillColor=Hi(r)?"transparent":r,Hi(r))y.fillColor=void 0,y.fillOpacity=void 0;else{const[x,A,W,b]=lt(r);y.fillColor=[x,A,W],y.fillOpacity=b}const j={workId:I,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:T,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c};g.push([j,{workId:I,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}}g.length&&this.collectForLocalWorker(g),Object.keys(y).length&&setTimeout(()=>{var N;(N=this.control.room)==null||N.setMemberState(y)},0)}}class Rg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.ZIndexNode);p(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.min)||0}getMaxZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.max)||0}setMaxZIndex(e,i){const o=this.getMinZIndex(i);this.zIndexMap.set(i,{min:o,max:e})}setMinZIndex(e,i){const o=this.getMaxZIndex(i);this.zIndexMap.set(i,{min:e,max:o})}addMaxLayer(e){const i=this.getMaxZIndex(e)+1;this.setMaxZIndex(i,e)}addMinLayer(e){const i=this.getMinZIndex(e)-1;this.setMinZIndex(i,e)}correct(e){const i=e.sort((o,r)=>o[1]-r[1]);for(let o=1;o<i.length;o++){const r=i[o][1],s=i[o-1][1];r<=s&&(i[o][1]=s+1)}return i}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,layer:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,d=[],u=[];for(;c.length;){const g=c.pop();if(!g)continue;const y=g.toString(),N=this.serviceColloctor.isLocalId(y),m=N?this.serviceColloctor.transformKey(g):y;let f=y;!N&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const w=oe(l[r][a][m]);let I;if(w&&f===O){if(w.selectIds){u.push(...w.selectIds),u.sort((x,A)=>{var Y,Q,P,X;const W=((Q=(Y=l[M(x,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:Q.zIndex)||0,b=((X=(P=l[M(x,this.serviceColloctor)])==null?void 0:P.opt)==null?void 0:X.zIndex)||0;return W>b?1:x<A?-1:0});const z=w.updateNodeOpt||{};z.zIndexLayer=o;const T={workId:g,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:z,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},j=new Map;o===Ue.Top?(this.addMaxLayer(r),I=this.getMaxZIndex(r)):(this.addMinLayer(r),I=this.getMinZIndex(r)),u.forEach(x=>{var Y,Q,P;const A=(Y=this.serviceColloctor)==null?void 0:Y.isLocalId(x);let W=A&&((Q=this.serviceColloctor)==null?void 0:Q.transformKey(x))||x;const b=l[r][a][W];!A&&((P=this.serviceColloctor)!=null&&P.isOwn(W))&&(W=this.serviceColloctor.getLocalId(W)),z.zIndex=I,b!=null&&b.opt&&(b.opt.zIndex=I),b!=null&&b.opt&&j.set(W,{updateNodeOpt:b.updateNodeOpt,opt:b.opt})}),T.selectStore=j,T.willSerializeData=!0,d.push([T,{workId:g,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}continue}}d.length&&this.collectForLocalWorker(d);function M(g,y){return y.isLocalId(g)&&y.transformKey(g)||g}}}class Bg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.TranslateNode);p(this,"undoTickerId");p(this,"oldRect");p(this,"cachePosition")}collect(e){var m,f,w,I;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,position:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...i],d=(m=this.serviceColloctor)==null?void 0:m.storage,u=[],M=(f=a.displayer.canvasBgRef.current)==null?void 0:f.getBoundingClientRect(),g=(I=(w=a.displayer)==null?void 0:w.floatBarCanvasRef.current)==null?void 0:I.getBoundingClientRect();let y=!1;const N=r===C.Start&&Date.now()||void 0;for(N&&(this.undoTickerId=N,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",N,s)),M&&g&&this.oldRect&&(this.oldRect.x<M.x&&g.x>this.oldRect.x||this.oldRect.y<M.y&&g.y>this.oldRect.y||this.oldRect.x+this.oldRect.width>M.x+M.width&&g.x<this.oldRect.x||this.oldRect.y+this.oldRect.height>M.y+M.height&&g.y<this.oldRect.y)&&(y=!0),g&&(this.oldRect=g);l.length;){const z=l.pop();if(!z)continue;const T=z.toString(),j=this.serviceColloctor.isLocalId(T),x=j&&this.serviceColloctor.transformKey(z)||T;let A=T;!j&&this.serviceColloctor.isOwn(A)&&(A=this.serviceColloctor.getLocalId(A));const W=d[s][c][x];if(W&&A===O){if(W.selectIds&&(r===C.Start&&(this.cachePosition=o),this.cachePosition)){const b=W.updateNodeOpt||{};b.translate=[o.x-this.cachePosition.x,o.y-this.cachePosition.y],b.workState=r;const Y={workId:z,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:b,emitEventType:this.emitEventType,willRefreshSelector:y,willSyncService:!0,textUpdateForWoker:!1,viewId:s};r===C.Done&&(Y.willRefreshSelector=!0,Y.textUpdateForWoker=!0,Y.willSerializeData=!0,Y.undoTickerId=this.undoTickerId,this.cachePosition=void 0),u.push([Y,{workId:z,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}continue}}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}class Wg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.DeleteNode)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o}=e,r=this.control.viewContainerManager.getView(o);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,c=[...i],l=[],d=[],u=Date.now();for(;c.length;){const M=c.pop();if(!M)continue;const g=M.toString(),y=this.serviceColloctor.isLocalId(g),N=y?this.serviceColloctor.transformKey(M):g,m=a[o][s][N];if(m){let f=g;if(!y&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f)),m.toolsType===v.Text){this.control.textEditorManager.delete(f,!0,!0);continue}d.push(f)}}d.length&&(l.push([{msgType:k.RemoveNode,emitEventType:S.DeleteNode,removeIds:d,dataType:Z.Local,willSyncService:!0,willRefresh:!0,undoTickerId:u,viewId:o},void 0]),this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,o),this.collectForLocalWorker(l))}}class Ug extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.ScaleNode);p(this,"undoTickerId");p(this,"targetBox",new Map);p(this,"targetText",new Map);p(this,"cacheTextInfo",new Map)}async collect(e){var y,N,m,f,w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,box:o,workState:r,viewId:s,dir:a}=e,c=this.control.viewContainerManager.getView(s);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,d=[...i],u=(y=this.serviceColloctor)==null?void 0:y.storage,M=[],g=r===C.Start&&Date.now()||void 0;for(g&&(this.undoTickerId=g,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",g,s));d.length;){const I=d.pop();if(!I)continue;const z=I.toString(),T=this.serviceColloctor.isLocalId(z),j=T&&this.serviceColloctor.transformKey(I)||z;let x=z;!T&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const A=u[s][l][j];if(A&&x===O&&A.selectIds){const W=A.updateNodeOpt||{};if(W.dir=a,W.box=o,W.workState=r,r===C.Start&&o){for(const Y of A.selectIds){const Q=(N=this.serviceColloctor)==null?void 0:N.isLocalId(Y),P=Q&&((m=this.serviceColloctor)==null?void 0:m.transformKey(Y))||Y;let X=P;!Q&&((f=this.serviceColloctor)!=null&&f.isOwn(P))&&(X=this.serviceColloctor.getLocalId(P));const q=this.control.textEditorManager.get(X);q&&r===C.Start&&this.targetText.set(X,oe(q))}this.targetText.size&&this.targetBox.set(x,o)}if(this.targetText.size&&r!==C.Start){const Y=this.targetBox.get(x);if(Y){const Q=[o.w/Y.w,o.h/Y.h];for(const[P,X]of this.targetText.entries()){const{opt:q}=X,_=Math.floor(q.fontSize*Q[0]),G=this.cacheTextInfo.get(P),J=!G&&q.fontSize!==_||G&&G.fontSize!==_||!1,K=(w=this.control.textEditorManager.get(P))==null?void 0:w.opt;if(J&&K&&q.boxSize&&q.boxPoint){const D=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:P,opt:{...K,fontSize:_},viewId:s,canSync:!1,canWorker:!1});D&&this.cacheTextInfo.set(P,{fontSize:D.opt.fontSize,boxSize:D.opt.boxSize,boxPoint:D.opt.boxPoint})}}W.textInfos=this.cacheTextInfo}}const b={workId:I,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:W,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===C.Done&&(b.willSerializeData=!0,b.undoTickerId=this.undoTickerId,this.targetBox.delete(x),this.targetText.clear()),M.push([b,{workId:I,msgType:k.UpdateNode,emitEventType:this.emitEventType}]);continue}}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),M.length&&this.collectForLocalWorker(M)}}class $g extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.RotateNode);p(this,"undoTickerId");p(this,"cacheOriginRotate",0)}collect(e){var g,y,N,m,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,angle:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...i],d=(g=this.serviceColloctor)==null?void 0:g.storage,u=[],M=r===C.Start&&Date.now()||void 0;for(M&&(this.undoTickerId=M,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",M,s));l.length;){const w=l.pop();if(!w)continue;const I=w.toString(),z=this.serviceColloctor.isLocalId(I),T=z&&this.serviceColloctor.transformKey(w)||I;let j=I;!z&&this.serviceColloctor.isOwn(j)&&(j=this.serviceColloctor.getLocalId(j));const x=d[s][c][T];if(x&&j===O){if(((y=x.selectIds)==null?void 0:y.length)===1){const A=x.selectIds[0];if(r===C.Start){const Q=((N=this.serviceColloctor)==null?void 0:N.isLocalId(A))&&((m=this.serviceColloctor)==null?void 0:m.transformKey(A))||A,P=d[s][c][Q];this.cacheOriginRotate=((f=P==null?void 0:P.opt)==null?void 0:f.rotate)||0}const W=x.updateNodeOpt||{};W.angle=(o+this.cacheOriginRotate)%360,W.workState=r;const b={workId:w,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:W,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:s};r===C.Done&&(b.willRefreshSelector=!0,b.willSerializeData=!0,b.undoTickerId=this.undoTickerId,this.cacheOriginRotate=0),u.push([b,{workId:w,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}continue}}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}function Fg(n){switch(n){case v.Text:return je.Text;case v.SpeechBalloon:case v.Star:case v.Ellipse:case v.Rectangle:case v.Triangle:case v.Rhombus:case v.Polygon:return je.Shape}}class Qg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetFontStyle)}setTextStyle(e,i,o,r,s){const{bold:a,underline:c,lineThrough:l,italic:d,fontSize:u}=o;if(i.toolsType){const M=Fg(i.toolsType);M===je.Text&&(i.opt&&(a&&(i.opt.bold=a),pe(c)&&(i.opt.underline=c),pe(l)&&(i.opt.lineThrough=l),d&&(i.opt.italic=d),u&&(i.opt.fontSize=u)),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:i.opt,viewId:r,canSync:!0,canWorker:!0},s)),je.Shape}}collect(e){var N,m,f,w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,bold:o,italic:r,lineThrough:s,underline:a,viewId:c,fontSize:l}=e,d=this.control.viewContainerManager.getView(c);if(!(d!=null&&d.displayer))return;const u=d.focusScenePath,M=[...i],g=this.serviceColloctor.storage,y={};for(;M.length;){const I=M.pop();if(!I)continue;const z=I.toString(),T=this.serviceColloctor.isLocalId(z),j=T?this.serviceColloctor.transformKey(I):z;let x=z;!T&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const A=g[c][u][j]||void 0;if(A){const W=A.updateNodeOpt||{};if(o&&(W.bold=o,y.bold=o==="bold"),r&&(W.italic=r,y.italic=r==="italic"),pe(s)&&(W.lineThrough=s,y.lineThrough=s),pe(a)&&(W.underline=a,y.underline=a),l&&(W.fontSize=l,y.textSize=l),A.toolsType===v.Text&&A.opt){this.setTextStyle(x,oe(A),W,c);continue}if(A&&x===O&&((N=A.selectIds)!=null&&N.length))for(const b of A.selectIds){const Y=(m=this.serviceColloctor)==null?void 0:m.isLocalId(b);let Q=Y&&((f=this.serviceColloctor)==null?void 0:f.transformKey(b))||b;const P=g[c][u][Q]||void 0;if(!Y&&((w=this.serviceColloctor)!=null&&w.isOwn(Q))&&(Q=this.serviceColloctor.getLocalId(Q)),P&&P.toolsType===v.Text&&A.opt){this.setTextStyle(Q,oe(P),W,c);continue}}}}Object.keys(y).length&&setTimeout(()=>{var I;(I=this.control.room)==null||I.setMemberState(y)},0)}}class Hg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetPoint);p(this,"undoTickerId")}collect(e){var w;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:i,pointMap:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=(w=this.serviceColloctor)==null?void 0:w.storage,d=[],u=r===C.Start&&Date.now()||void 0;u&&(this.undoTickerId=u,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,s));const M=i;if(!M)return;const g=M.toString(),y=this.serviceColloctor.isLocalId(g),N=y&&this.serviceColloctor.transformKey(M)||g;let m=g;!y&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const f=l[s][c][N];if(f&&m===O&&f.selectIds){const I=f.updateNodeOpt||{};I.pointMap=o,I.workState=r;const z={workId:M,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:I,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===C.Done&&(z.undoTickerId=this.undoTickerId),d.push([z,{workId:M,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),d.length&&this.collectForLocalWorker(d)}}class Zg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetLock)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,isLocked:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,d=[],u=Date.now();for(;c.length;){const M=c.pop();if(!M)continue;const g=M.toString(),y=this.serviceColloctor.isLocalId(g),N=y?this.serviceColloctor.transformKey(M):g;let m=g;!y&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const f=l[r][a][N]||void 0;if(f){const w=f.updateNodeOpt||{};w.isLocked=o;const I={workId:m,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:w,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r};d.push([I,{workId:m,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,r),d.length&&this.collectForLocalWorker(d)}}class Gg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetShapeOpt)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o,...r}=e,s=this.control.viewContainerManager.getView(o);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,d=[];for(;c.length;){const u=c.pop();if(!u)continue;const M=u.toString(),g=this.serviceColloctor.isLocalId(M),y=g?this.serviceColloctor.transformKey(u):M;let N=M;!g&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N));const m=l[o][a][y]||void 0;if(m){const f={...m.updateNodeOpt,...r,willRefresh:!0};if(m&&N===O){const w={workId:N,msgType:k.UpdateNode,dataType:Z.Local,updateNodeOpt:f,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:o};d.push([w,{workId:N,msgType:k.UpdateNode,emitEventType:this.emitEventType}])}}}d.length&&this.collectForLocalWorker(d)}}class F{constructor(t){p(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case S.TranslateNode:return new Bg;case S.ZIndexNode:return new Rg;case S.ZIndexActive:return new Og;case S.CopyNode:return new Yg;case S.SetColorNode:return new Pg;case S.DeleteNode:return new Wg;case S.ScaleNode:return new Ug;case S.RotateNode:return new $g;case S.SetFontStyle:return new Qg;case S.SetPoint:return new Hg;case S.SetLock:return new Zg;case S.SetShapeOpt:return new Gg}}getBuilder(t){return this.builders.get(t)}registerForMainEngine(t,e){return this.builders.forEach(i=>{i&&i.registerForMainEngine(t,e)}),this}destroy(){this.builders.forEach(t=>{t&&t.destroy()})}static emitMethod(t,e,i){Ie.dispatch(t,e,i)}}class Vg{constructor(){p(this,"maxLastSyncTime",500)}setCurrentToolsData(t){this.currentToolsData=t}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(t){this.currentLocalWorkData=t}getWorkId(){return this.currentLocalWorkData.workId}getWorkState(){return this.currentLocalWorkData.workState}}class Jg extends Vg{constructor(e){var r,s;super();p(this,"isActive",!1);p(this,"currentToolsData");p(this,"currentLocalWorkData");p(this,"control");p(this,"internalMsgEmitter");p(this,"taskBatchData",new Set);p(this,"fullWorker");p(this,"subWorker");p(this,"fullWorkerUrl");p(this,"subWorkerUrl");p(this,"methodBuilder");p(this,"zIndexNodeMethod");p(this,"subWorkerDrawCount",0);p(this,"wokerDrawCount",0);p(this,"maxDrawCount",0);p(this,"cacheDrawCount",0);p(this,"reRenders",[]);p(this,"localWorkViewId");p(this,"localPointsBatchData",[]);p(this,"tasksqueue",new Map);p(this,"useTasksqueue",!1);p(this,"useTasksClockId");p(this,"mianTasksqueueCount");p(this,"workerTasksqueueCount");p(this,"snapshotMap",new Map);p(this,"boundingRectMap",new Map);p(this,"clearAllResolve");p(this,"delayWorkStateToDone");p(this,"delayWorkStateToDoneResolve");p(this,"undoTickerId");p(this,"animationId");const{control:i,internalMsgEmitter:o}=e;this.control=i,this.maxLastSyncTime=(((s=(r=this.control.pluginOptions)==null?void 0:r.syncOpt)==null?void 0:s.interval)||this.maxLastSyncTime)*.5,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl,this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl,this.internalMsgEmitter=o,this.currentLocalWorkData={workState:C.Pending}}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===v.Pencil||e===v.LaserPen||e===v.Arrow||e===v.Straight||e===v.Ellipse||e===v.Rectangle||e===v.Star||e===v.Polygon||e===v.SpeechBalloon}get isCanDrawWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===v.Pencil||e===v.LaserPen||e===v.Arrow||e===v.Straight||e===v.Ellipse||e===v.Rectangle||e===v.Star||e===v.Polygon||e===v.SpeechBalloon||e===v.Triangle||e===v.Rhombus}get isUseZIndex(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===v.Pencil||e===v.Arrow||e===v.Straight||e===v.Ellipse||e===v.Rectangle||e===v.Star||e===v.Polygon||e===v.SpeechBalloon||e===v.Text||e===v.Image}get isCanRecordUndoRedo(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===v.Pencil||e===v.Eraser||e===v.Arrow||e===v.Straight||e===v.Ellipse||e===v.Rectangle||e===v.Star||e===v.Polygon||e===v.SpeechBalloon||e===v.Text||e===v.Image}get isCanSentCursor(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===v.Pencil||e===v.Text||e===v.LaserPen||e===v.Arrow||e===v.Straight||e===v.Ellipse||e===v.Rectangle||e===v.Star||e===v.Polygon||e===v.SpeechBalloon||e===v.Triangle||e===v.Rhombus}init(){this.on(),this.internalMsgEmitterListener(),this.isActive=!0}on(){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.fullWorker.onmessage=e=>{if(e.data){const{render:i,sp:o,drawCount:r,workerTasksqueueCount:s}=e.data;if(s&&(this.workerTasksqueueCount=s),o!=null&&o.length&&this.collectorSyncData(o),!r&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}r&&(this.wokerDrawCount=r,this.wokerDrawCount<1/0?this.maxDrawCount=Math.max(this.maxDrawCount,this.wokerDrawCount):this.maxDrawCount=0,i!=null&&i.length&&(this.viewContainerManager.render(i),this.wokerDrawCount<this.subWorkerDrawCount&&(this.reRenders.forEach(a=>{a.isUnClose=!1}),this.viewContainerManager.render(this.reRenders),this.reRenders.length=0)))}},this.subWorker.onmessage=e=>{if(e.data){const{render:i,drawCount:o,sp:r}=e.data;if(r!=null&&r.length&&this.collectorSyncData(r),!o&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}o&&(this.subWorkerDrawCount=o,this.wokerDrawCount<1/0&&(this.maxDrawCount=Math.max(this.maxDrawCount,this.subWorkerDrawCount)),i!=null&&i.length&&(this.subWorkerDrawCount>this.wokerDrawCount&&(i.forEach(s=>s.isUnClose=!0),this.reRenders.push(...i)),this.wokerDrawCount<1/0&&this.viewContainerManager.render(i)))}}}collectorSyncData(e){var o,r;let i=!1;for(const s of e){const{type:a,selectIds:c,opt:l,selectRect:d,strokeColor:u,fillColor:M,willSyncService:g,isSync:y,undoTickerId:N,imageBitmap:m,canvasHeight:f,canvasWidth:w,rect:I,op:z,canTextEdit:T,points:j,selectorColor:x,canRotate:A,scaleType:W,textOpt:b,toolsType:Y,workId:Q,viewId:P,dataType:X,canLock:q,isLocked:_,shapeOpt:G,toolsTypes:J}=s;if(!P){console.error("collectorSyncData",s);return}const K=s.scenePath||this.viewContainerManager.getCurScenePath(P);switch(a){case k.Select:{const D=c!=null&&c.length?{...d,selectIds:c,canvasHeight:f,canvasWidth:w,points:j}:void 0;D&&(l!=null&&l.strokeColor)&&(D.selectorColor=l.strokeColor),D&&x&&(D.selectorColor=x),D&&u&&(D.strokeColor=u),D&&(l!=null&&l.fillColor)&&(D.fillColor=l.fillColor),D&&M&&(D.fillColor=M),D&&pe(A)&&(D.canRotate=A),D&&W&&(D.scaleType=W),D&&T&&(D.canTextEdit=T),D&&b&&(D.textOpt=b),D&&pe(q)&&(D.canLock=q),D&&pe(_)&&(D.isLocked=_),D&&G&&(D.shapeOpt=G),D&&J&&(D.toolsTypes=J),P&&this.viewContainerManager.showFloatBar(P,!!D,D),g&&((o=this.collector)==null||o.dispatch({type:a,selectIds:c,opt:l,isSync:y,viewId:P,scenePath:K}));break}case k.Snapshot:if(m&&K){const D=this.snapshotMap.get(K);D&&D(m)}break;case k.BoundingBox:if(I&&K){const D=this.boundingRectMap.get(K);D&&D(I)}break;case k.Cursor:z&&this.control.cursor.collectServiceCursor({...s});break;case k.Clear:P&&this.viewContainerManager.showFloatBar(P,!1),P&&this.clearAllResolve&&this.clearAllResolve(P);break;case k.TextUpdate:if(Y===v.Text&&Q&&P){const D=this.viewContainerManager.transformToOriginPoint((l==null?void 0:l.boxPoint)||[0,0],P),B=(l==null?void 0:l.boxSize)||[0,0],$=(r=this.viewContainerManager.getView(P))==null?void 0:r.cameraOpt;l?this.control.textEditorManager.updateTextForWorker({x:D[0],y:D[1],w:B[0],h:B[1],scale:($==null?void 0:$.scale)||1,workId:Q,opt:l,dataType:X,viewId:P,canSync:g||!1,canWorker:!1}):this.control.textEditorManager.delete(Q,g||!1,!1)}break;case k.GetTextActive:Y===v.Text&&Q&&P&&this.control.textEditorManager.updateTextForWorker({workId:Q,isActive:!0,viewId:P,dataType:Z.Local,canWorker:!1,canSync:!0},Date.now());break;default:i=!0;break}!i&&N&&this.internalMsgEmitter.emit("undoTickerEnd",N,P)}i&&Je(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var i,o,r,s;for(const a of e){const{type:c,op:l,workId:d,index:u,removeIds:M,ops:g,opt:y,updateNodeOpt:N,toolsType:m,isSync:f,undoTickerId:w,viewId:I}=a;if(!I){console.error("collectorAsyncData",a);return}const z=a.scenePath||this.viewContainerManager.getCurScenePath(I);switch(c){case k.DrawWork:{(i=this.collector)==null||i.dispatch({type:c,op:l,workId:d,index:u,isSync:f,viewId:I,scenePath:z});break}case k.FullWork:{(o=this.collector)==null||o.dispatch({type:c,ops:g,workId:d,updateNodeOpt:N,opt:y,toolsType:m,isSync:f,viewId:I,scenePath:z});break}case k.UpdateNode:{(r=this.collector)==null||r.dispatch({type:c,updateNodeOpt:N,workId:d,opt:y,ops:g,op:l,isSync:f,viewId:I,scenePath:z});break}case k.RemoveNode:{M&&this.control.textEditorManager.deleteBatch(M,!1,!1),(s=this.collector)==null||s.dispatch({type:c,removeIds:M,isSync:f,viewId:I,scenePath:z});break}}w&&this.internalMsgEmitter.emit("undoTickerEnd",w,I)}}async onLocalEventEnd(e,i){var c;const o=this.currentLocalWorkData.workState,r=this.viewContainerManager.getView(i);if(!r)return;const{focusScenePath:s,cameraOpt:a}=r;if(o===C.Start||o===C.Doing){const l=this.viewContainerManager.transformToScenePoint(e,i);this.pushPoint(l),this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:C.Done}),await new Promise(d=>{this.delayWorkStateToDone=setTimeout(()=>{var M,g;this.delayWorkStateToDone=void 0,this.runAnimation();const u=(M=this.currentLocalWorkData.workId)==null?void 0:M.toString();u&&s&&this.control.runEffectWork(()=>{var y;this.setShapeSelectorByWorkId(u,i),((y=this.currentToolsData)==null?void 0:y.toolsType)===v.Selector&&this.viewContainerManager.activeFloatBar(i)}),this.delayWorkStateToDoneResolve=d,((g=this.currentToolsData)==null?void 0:g.toolsType)===v.Selector&&this.viewContainerManager.activeFloatBar(i)},0)}).then(()=>{this.delayWorkStateToDoneResolve=void 0})}else if(((c=this.currentToolsData)==null?void 0:c.toolsType)===v.Text){const l=this.viewContainerManager.transformToScenePoint(e,i);if(this.localPointsBatchData[0]===l[0]&&this.localPointsBatchData[1]===l[1]){const d=this.currentToolsData.toolsOpt;d.workState=C.Doing,d.boxPoint=l,d.boxSize=[d.fontSize,d.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:Date.now().toString(),x:e[0],y:e[1],scale:(a==null?void 0:a.scale)||1,opt:d,type:je.Text,isActive:!0,viewId:i,scenePath:s},Date.now())}this.clearLocalPointsBatchData()}}onLocalEventDoing(e,i){const o=this.currentLocalWorkData.workState;if(o===C.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:C.Doing}),this.delayWorkStateToDone,o===C.Doing||this.delayWorkStateToDone){const r=this.viewContainerManager.transformToScenePoint(e,i);this.pushPoint(r),this.delayWorkStateToDone,!this.delayWorkStateToDone&&this.runAnimation();return}this.hoverCursor(e,i)}onLocalEventStart(e,i){var a,c,l,d,u,M,g;this.viewContainerManager.focuedViewId!==i&&this.viewContainerManager.setFocuedViewId(i),this.clearLocalPointsBatchData();const o=this.viewContainerManager.transformToScenePoint(e,i);if(this.pushPoint(o),((a=this.currentToolsData)==null?void 0:a.toolsType)===v.Text)return;this.control.textEditorManager.checkEmptyTextBlur();const r=((c=this.currentToolsData)==null?void 0:c.toolsType)===v.Selector?O:Date.now(),s=this.setZIndex(i);if(this.setCurrentLocalWorkData({workId:r,workState:C.Start,toolsOpt:s,viewId:i,undoTickerId:this.isCanRecordUndoRedo&&r||void 0}),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("undoTickerStart",r,i),this.maxDrawCount=0,this.cacheDrawCount=0,this.wokerDrawCount=0,this.subWorkerDrawCount=0,this.reRenders.length=0,r&&s&&((l=this.currentToolsData)!=null&&l.toolsType)&&this.prepareOnceWork({workId:r,toolsOpt:s,viewId:i},(d=this.currentToolsData)==null?void 0:d.toolsType),this.isCanDrawWork){const y=this.viewContainerManager.getCurScenePath(i);(M=this.collector)==null||M.dispatch({type:k.CreateWork,workId:r,toolsType:(u=this.currentToolsData)==null?void 0:u.toolsType,opt:s,viewId:i,scenePath:y}),y&&this.blurSelector(i,y)}else((g=this.currentToolsData)==null?void 0:g.toolsType)===v.Selector&&this.viewContainerManager.unActiveFloatBar(i);this.consume()}pushPoint(e){this.localPointsBatchData.push(e[0],e[1])}correctStorage(e,i,o){var c;const r=new Map,s=[];Object.keys(e).forEach(l=>{var u,M;const d=(M=(u=e[l])==null?void 0:u.opt)==null?void 0:M.zIndex;se(d)&&s.push([l,d])});const a=s.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,i),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,i));for(const[l,d]of a){if(!e[l])continue;const u=e[l];u.opt&&se(u.opt.zIndex)&&u.opt.zIndex!==d&&(u.opt.zIndex=d,r.set(l,u))}return r.size&&r.forEach((l,d)=>{var u;console.log("key",l),(u=this.collector)==null||u.updateValue(d,l,{viewId:i,scenePath:o,isSync:!0}),e[d]=l}),e}async originalEventLintener(e,i,o){if(this.isAbled())switch(e){case C.Start:this.setLocalWorkViewId(o),o&&this.onLocalEventStart(i,o);break;case C.Doing:o&&o===this.getLocalWorkViewId()&&this.onLocalEventDoing(i,o);break;case C.Done:o&&o===this.getLocalWorkViewId()&&await this.onLocalEventEnd(i,o);break}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var s,a,c;const i=e.toolsType,o=((s=this.currentToolsData)==null?void 0:s.toolsType)!==e.toolsType;super.setCurrentToolsData(e);const r=(a=this.viewContainerManager)==null?void 0:a.getAllViews();if(o){for(const l of r)if(l){const{id:d,focusScenePath:u}=l;o&&d&&u&&((c=this.collector)!=null&&c.hasSelector(d,u)&&this.blurSelector(d,u),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:k.UpdateTools,dataType:Z.Local,toolsType:i,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:Nd}),this.runAnimation()}}setCurrentLocalWorkData(e){super.setCurrentLocalWorkData(e);const{workId:i}=e;(!this.isAbled()||!i)&&this.clearLocalPointsBatchData()}prepareOnceWork(e,i){const{workId:o,toolsOpt:r,viewId:s}=e;this.taskBatchData.add({msgType:k.CreateWork,workId:o,toolsType:i,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:Z.Local,isRunSubWork:this.isRunSubWork,viewId:s}),this.runAnimation()}createViewWorker(e,i){const{offscreenCanvasOpt:o,layerOpt:r,dpr:s,cameraOpt:a}=i;this.taskBatchData.add({msgType:k.Init,dataType:Z.Local,viewId:e,offscreenCanvasOpt:o,layerOpt:r,dpr:s,cameraOpt:a,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}),this.runAnimation()}destroyViewWorker(e,i=!1){var o;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:k.Destroy,dataType:Z.Local,viewId:e,isRunSubWork:!0}),this.runAnimation(),i||(o=this.collector)==null||o.dispatch({type:k.Clear,viewId:e})}onServiceDerive(e,i){var g,y,N,m;const{newValue:o,oldValue:r,viewId:s,scenePath:a}=i,c=oe(o)||{},l=e;let d=c.type;if(!o&&r&&(d=k.RemoveNode,r.toolsType===v.LaserPen))return;const u=(g=this.viewContainerManager.getView(s))==null?void 0:g.focusScenePath;if(u&&u!==a)return;if(d&&l){const f=c;if(f.workId=(y=this.collector)!=null&&y.isOwn(l)?(N=this.collector)==null?void 0:N.getLocalId(l):l,f.msgType=d,f.dataType=Z.Service,f.viewId=s,f.scenePath=a,f.selectIds&&(f.selectIds=f.selectIds.map(w=>{var I,z;return(I=this.collector)!=null&&I.isOwn(w)?(z=this.collector)==null?void 0:z.getLocalId(w):w})),f&&f.toolsType===v.Text||(r==null?void 0:r.toolsType)===v.Text){this.control.textEditorManager.onServiceDerive(f);return}this.taskBatchData.add(f)}this.runAnimation();const M=i.newValue&&((m=i.newValue.opt)==null?void 0:m.zIndex);if(this.zIndexNodeMethod&&se(M)){const f=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<M&&this.zIndexNodeMethod.setMaxZIndex(M,s),f>M&&this.zIndexNodeMethod.setMinZIndex(M,s)}}pullServiceData(e,i){var r,s,a,c;let o=(r=this.collector)==null?void 0:r.getStorageData(e,i);if(o){o=this.correctStorage(o,e,i);const l=Object.keys(o);for(const d of l){const u=(s=o[d])==null?void 0:s.type;if(u&&d){const M=o[d];if(M.workId=(a=this.collector)!=null&&a.isOwn(d)?(c=this.collector)==null?void 0:c.getLocalId(d):d,M.msgType=u,M.dataType=Z.Service,M.viewId=e,M.scenePath=i,M.useAnimation=!1,M.selectIds&&(M.selectIds=M.selectIds.map(g=>{var y,N;return(y=this.collector)!=null&&y.isOwn(g)?(N=this.collector)==null?void 0:N.getLocalId(g):g})),M.toolsType===v.Text){this.control.textEditorManager.onServiceDerive(M);continue}this.taskBatchData.add(M)}this.internalMsgEmitter.emit("excludeIds",l,e)}this.runAnimation()}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){this.animationId=void 0;const{workState:e,viewId:i,workId:o,undoTickerId:r}=this.currentLocalWorkData;if(!this.isAbled()&&this.clearLocalPointsBatchData(),this.tasksqueue.size){const s=this.consumeQueue();s.size&&(this.post(s),this.tasksqueue.clear())}else if(!this.delayWorkStateToDone){if(e!==C.Pending&&this.localPointsBatchData.length&&i){let s=!1;this.wokerDrawCount!==1/0&&this.wokerDrawCount<=this.subWorkerDrawCount&&this.cacheDrawCount<this.maxDrawCount&&(s=!0),this.maxDrawCount||(s=!0),s&&(this.taskBatchData.add({op:this.localPointsBatchData.map(a=>a),workState:e,workId:o,dataType:Z.Local,msgType:k.DrawWork,isRunSubWork:this.isRunSubWork,undoTickerId:e===C.Done&&r||void 0,viewId:i,scenePath:i&&this.viewContainerManager.getCurScenePath(i)}),this.delayWorkStateToDoneResolve&&e===C.Done&&this.delayWorkStateToDoneResolve(!0),this.clearLocalPointsBatchData(),this.cacheDrawCount=this.maxDrawCount)}this.taskBatchData.size&&(this.post(this.taskBatchData),this.taskBatchData.clear(),r&&e===C.Done&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,undoTickerId:void 0}))}(this.tasksqueue.size||this.taskBatchData.size||this.localPointsBatchData.length)&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}unWritable(){this.setCurrentLocalWorkData({workState:C.Unwritable,workId:void 0})}abled(){this.setCurrentLocalWorkData({workState:C.Pending,workId:void 0})}isAbled(){return this.currentLocalWorkData.workState!==C.Unwritable}post(e){this.fullWorker.postMessage(e);const i=new Set;for(const o of e.values()){const r=o.msgType;(r===k.Init||r===k.Clear||r===k.Destroy||r===k.UpdateCamera||o.isRunSubWork)&&i.add(o)}i.size&&this.subWorker.postMessage(i)}destroy(){this.unWritable(),this.taskBatchData.clear(),this.clearLocalPointsBatchData(),this.fullWorker.terminate(),this.subWorker.terminate(),this.isActive=!1}updateNode(e,i,o,r){this.taskBatchData.add({msgType:k.UpdateNode,workId:e,updateNodeOpt:i,viewId:o,scenePath:r,dataType:Z.Local}),this.runAnimation()}updateCamera(e,i){this.useTasksqueue||(this.useTasksqueue=!0,this.mianTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:k.UpdateCamera,dataType:Z.Local,cameraOpt:{...i,width:Math.floor(i.width),height:Math.floor(i.height)},isRunSubWork:!0,viewId:e}),this.control.textEditorManager.onCameraChange(i,e),this.runAnimation(),this.useTasksClockId&&clearTimeout(this.useTasksClockId),this.useTasksClockId=setTimeout(()=>{this.useTasksClockId=void 0,this.tasksqueue.clear(),this.useTasksqueue=!1,this.mianTasksqueueCount=void 0,this.workerTasksqueueCount=void 0},this.maxLastSyncTime))}consumeQueue(){const e=new Set;return this.mianTasksqueueCount&&this.workerTasksqueueCount&&this.mianTasksqueueCount===this.workerTasksqueueCount&&(this.mianTasksqueueCount++,e.add({msgType:k.TasksQueue,dataType:Z.Local,isRunSubWork:!0,mainTasksqueueCount:this.mianTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""})),e}async clearViewScenePath(e,i){var o;if(this.control.textEditorManager.clear(e,i),this.taskBatchData.add({dataType:Z.Local,msgType:k.Clear,viewId:e}),this.runAnimation(),!i){const r=this.viewContainerManager.getCurScenePath(e);(o=this.collector)==null||o.dispatch({type:k.Clear,viewId:e,scenePath:r})}this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.clearLocalPointsBatchData(),await new Promise(r=>{this.clearAllResolve=r}).then(()=>{this.clearAllResolve=void 0})}internalMsgEmitterListener(){var e;this.methodBuilder=new F([S.CopyNode,S.SetColorNode,S.DeleteNode,S.RotateNode,S.ScaleNode,S.TranslateNode,S.ZIndexActive,S.ZIndexNode,S.RotateNode,S.SetFontStyle,S.SetPoint,S.SetLock,S.SetShapeOpt]).registerForMainEngine(U.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(S.ZIndexNode)}setZIndex(e){const i=this.currentToolsData&&oe(this.currentToolsData.toolsOpt);return i&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),i.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),i}clearLocalPointsBatchData(){this.localPointsBatchData.length=0}hoverCursor(e,i){var o;if(((o=this.currentToolsData)==null?void 0:o.toolsType)===v.Selector){const r=this.viewContainerManager.transformToScenePoint(e,i),s={msgType:k.CursorHover,dataType:Z.Local,point:r,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:i};this.queryTaskBatchData({msgType:k.CursorHover,dataType:Z.Local,toolsType:this.currentToolsData.toolsType,viewId:i}).forEach(a=>{this.taskBatchData.delete(a)}),this.taskBatchData.add(s),this.runAnimation()}}sendCursorEvent(e,i){if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===C.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;let o=[void 0,void 0];this.currentToolsData&&(this.isCanDrawWork||this.currentToolsData.toolsType===v.Text)&&this.currentLocalWorkData.workState!==C.Start&&this.currentLocalWorkData.workState!==C.Doing&&(o=e,this.control.cursor.sendEvent(o,i))}getBoundingRect(e){var o,r;if(!((o=this.boundingRectMap)==null?void 0:o.get(e))){const s=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!s)return;if(Object.keys(s).forEach(a=>{var c;((c=this.collector)==null?void 0:c.getLocalId(a))===O&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:k.BoundingBox,dataType:Z.Local,scenePath:e,scenes:s,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:this.viewContainerManager.mainView.id};return this.taskBatchData.add(a),this.runAnimation(),new Promise(c=>{this.boundingRectMap.set(e,c)}).then(c=>(this.boundingRectMap.delete(e),c))}}}getSnapshot(e,i,o,r){var a,c,l,d,u,M;if(!((a=this.snapshotMap)==null?void 0:a.get(e))){const g=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!g)return;const y=(l=this.collector)==null?void 0:l.getStorageData(g,e);if(!y)return;if(Object.keys(y).forEach(N=>{var m;((m=this.collector)==null?void 0:m.getLocalId(N))===O&&delete y[N]}),Object.keys(y).length){const N=this.viewContainerManager.getView(g)||this.viewContainerManager.focuedView;if(!N)return;const m=i||((d=N.cameraOpt)==null?void 0:d.width),f=o||((u=N.cameraOpt)==null?void 0:u.height),w={msgType:k.Snapshot,dataType:Z.Local,scenePath:e,scenes:y,w:m,h:f,cameraOpt:r&&{...r,width:m,height:f}||N.cameraOpt,isRunSubWork:!0,viewId:g,maxZIndex:(M=this.zIndexNodeMethod)==null?void 0:M.getMaxZIndex(g)};return this.taskBatchData.add(w),this.runAnimation(),new Promise(I=>{this.snapshotMap.set(e,I)}).then(I=>(this.snapshotMap.delete(e),I))}}}queryTaskBatchData(e){const i=[];if(e)for(const o of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(o[s]!==a){r=!1;break}r&&i.push(o)}return i}insertImage(e){const i=this.viewContainerManager.mainView,o=i==null?void 0:i.id,r=i==null?void 0:i.focusScenePath;if(o&&r){this.setCurrentLocalWorkData({...this.currentLocalWorkData,undoTickerId:Date.now()}),Ne.InternalMsgEmitter.emit("undoTickerStart",this.undoTickerId,o);const s={...e};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(o),s.zIndex=this.zIndexNodeMethod.getMaxZIndex(o)),this.taskBatchData.add({msgType:k.FullWork,dataType:Z.Local,toolsType:v.Image,workId:e.uuid,opt:s,viewId:o,undoTickerId:e.src&&this.undoTickerId||void 0,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,i){var a,c;const o=this.viewContainerManager.mainView,r=o==null?void 0:o.id,s=o==null?void 0:o.focusScenePath;if(r&&s&&this.collector){const l=this.collector.getStorageData(r,s);if(!l)return;for(const[d,u]of Object.entries(l))if(u&&u.toolsType===v.Image&&u.opt.uuid===e){const M=Date.now();Ne.InternalMsgEmitter.emit("undoTickerStart",M,r);const g=(a=this.collector)!=null&&a.isOwn(d)?(c=this.collector)==null?void 0:c.getLocalId(d):d,y={...u.opt,locked:i};this.taskBatchData.add({msgType:k.FullWork,dataType:Z.Local,toolsType:v.Image,workId:g,opt:y,viewId:r,undoTickerId:M,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,i){var a,c;const o=this.viewContainerManager.mainView,r=o==null?void 0:o.id,s=o==null?void 0:o.focusScenePath;if(r&&s&&this.collector){const l=this.collector.getStorageData(r,s);if(!l)return;for(const[d,u]of Object.entries(l))if(u&&u.toolsType===v.Image&&u.opt.uuid===e){const M=(a=this.collector)!=null&&a.isOwn(d)?(c=this.collector)==null?void 0:c.getLocalId(d):d,g={...u.opt,src:i};this.taskBatchData.add({msgType:k.FullWork,dataType:Z.Local,toolsType:v.Image,workId:M,opt:g,viewId:r,undoTickerId:this.undoTickerId,willRefresh:!0,willSyncService:!0}),this.runAnimation();break}}}getImagesInformation(e){const i=[];if(this.collector){const o=this.collector.getScenePathData(e);if(!o)return i;for(const r of Object.values(o))if(r&&r.toolsType===v.Image){const s=r.opt;i.push({uuid:s.uuid,centerX:s.centerX,centerY:s.centerY,width:s.width,height:s.height,locked:s.locked,uniformScale:s.uniformScale,crossOrigin:s.crossOrigin})}}return i}setShapeSelectorByWorkId(e,i,o){this.taskBatchData.add({workId:O,selectIds:[e],msgType:k.Select,dataType:Z.Service,viewId:i,willSyncService:!0,undoTickerId:o}),this.runAnimation()}blurSelector(e,i,o){this.taskBatchData.add({workId:O,selectIds:[],msgType:k.Select,dataType:Z.Service,viewId:e,scenePath:i,undoTickerId:o}),this.runAnimation()}}var Kg=Ce,qg=function(){return Kg.Date.now()},_g=qg,Xg=/\s/;function eM(n){for(var t=n.length;t--&&Xg.test(n.charAt(t)););return t}var tM=eM,iM=tM,oM=/^\s+/;function nM(n){return n&&n.slice(0,iM(n)+1).replace(oM,"")}var rM=nM,sM=Qe,aM=Oe,cM="[object Symbol]";function lM(n){return typeof n=="symbol"||aM(n)&&sM(n)==cM}var uM=lM,hM=rM,Zi=Pe,dM=uM,Gi=NaN,gM=/^[-+]0x[0-9a-f]+$/i,MM=/^0b[01]+$/i,fM=/^0o[0-7]+$/i,pM=parseInt;function yM(n){if(typeof n=="number")return n;if(dM(n))return Gi;if(Zi(n)){var t=typeof n.valueOf=="function"?n.valueOf():n;n=Zi(t)?t+"":t}if(typeof n!="string")return n===0?n:+n;n=hM(n);var e=MM.test(n);return e||fM.test(n)?pM(n.slice(2),e?2:8):gM.test(n)?Gi:+n}var IM=yM,vM=Pe,Lt=_g,Vi=IM,NM="Expected a function",wM=Math.max,mM=Math.min;function TM(n,t,e){var i,o,r,s,a,c,l=0,d=!1,u=!1,M=!0;if(typeof n!="function")throw new TypeError(NM);t=Vi(t)||0,vM(e)&&(d=!!e.leading,u="maxWait"in e,r=u?wM(Vi(e.maxWait)||0,t):r,M="trailing"in e?!!e.trailing:M);function g(j){var x=i,A=o;return i=o=void 0,l=j,s=n.apply(A,x),s}function y(j){return l=j,a=setTimeout(f,t),d?g(j):s}function N(j){var x=j-c,A=j-l,W=t-x;return u?mM(W,r-A):W}function m(j){var x=j-c,A=j-l;return c===void 0||x>=t||x<0||u&&A>=r}function f(){var j=Lt();if(m(j))return w(j);a=setTimeout(f,N(j))}function w(j){return a=void 0,M&&i?g(j):(i=o=void 0,s)}function I(){a!==void 0&&clearTimeout(a),l=0,i=c=o=a=void 0}function z(){return a===void 0?s:w(Lt())}function T(){var j=Lt(),x=m(j);if(i=arguments,o=this,c=j,x){if(a===void 0)return y(c);if(u)return clearTimeout(a),a=setTimeout(f,t),g(c)}return a===void 0&&(a=setTimeout(f,t)),s}return T.cancel=I,T.flush=z,T}var Eo=TM;const Ji=Fe(Eo);var zM=Eo,jM=Pe,CM="Expected a function";function SM(n,t,e){var i=!0,o=!0;if(typeof n!="function")throw new TypeError(CM);return jM(e)&&(i="leading"in e?!!e.leading:i,o="trailing"in e?!!e.trailing:o),zM(n,t,{leading:i,maxWait:t,trailing:o})}var DM=SM;const ne=Fe(DM);class xM{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"roomHotkeyCheckers");p(this,"tmpCopyStore",new Map);p(this,"tmpCopyCoordInfo");var o;const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.roomHotkeyCheckers=((o=this.control.room)==null?void 0:o.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var t;return((t=this.control.room)==null?void 0:t.disableDeviceInputs)||!1}get isSelector(){var t;return((t=this.control.worker.currentToolsData)==null?void 0:t.toolsType)===v.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(t){switch(t.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(t){var o,r,s;console.log("onActiveHotkey---sdk",t);const e=this.control.viewContainerManager.focuedViewId,i=(o=this.control.viewContainerManager.focuedView)==null?void 0:o.focusScenePath;if(e&&i)switch(t){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,i))&&F.emitMethod(U.MainEngine,S.DeleteNode,{workIds:[O],viewId:e});break;case"copy":this.isSelector&&((s=this.collector)!=null&&s.hasSelector(e,i))&&this.copySelectorToTemp(e,i);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,i);break}(t==="changeToPencil"||t==="redo"||t==="undo")&&this.onSelfActiveHotkey(t)}colloctHotkey(t){if(this.isUseSelf){const e=this.checkHotkey(t);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(t){switch(console.log("onActiveHotkey---self",t),t){case"changeToPencil":this.setMemberState({currentApplianceName:H.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:H.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:H.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:H.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:H.eraser,isLine:!0});break;case"changeToHand":this.setMemberState({currentApplianceName:H.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:H.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:H.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:H.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:H.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:H.text});break}}checkHotkey(t){for(const e of this.roomHotkeyCheckers){const{kind:i,checker:o}=e;if(o({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return i}}copySelectorToTemp(t,e){var l,d;const i=this.control.viewContainerManager.getView(t),o=(d=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:d.getBuilder(S.CopyNode);if(!i||!this.collector||!o)return;const r=this.collector.transformKey(O),s=this.collector.getStorageData(t,e);if(!s)return;const a=s[r],c=a&&o.copySelector({viewId:t,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(t,e){var r,s;const i=this.control.viewContainerManager.getView(t),o=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(S.CopyNode);if(!(!i||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!o)&&i.viewData&&this.tmpCopyCoordInfo){const a=ci.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=i.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY,o.pasteSelector({viewId:t,scenePath:e,copyStores:ci.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l}})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const Ge=class Ge{constructor(t){p(this,"plugin");p(this,"room");p(this,"play");p(this,"collector");p(this,"hasSwitchToSelectorEffect");p(this,"snapshootStateMap");p(this,"effectResolve");p(this,"hotkeyManager");p(this,"pluginOptions");p(this,"roomMember");p(this,"cursor");p(this,"textEditorManager");p(this,"worker");p(this,"onSceneChange",async(t,e)=>{var s;const i=this.viewContainerManager.getView(e);i!=null&&i.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,i.focusScenePath)&&this.worker.blurSelector(e,i.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const o=i==null?void 0:i.displayer;o&&(o.setActive(!1),await o.stopEventHandler());const r=t;r&&this.viewContainerManager.setViewScenePath(e,r),o==null||o.setActive(!0)});p(this,"onRoomMembersChange",t=>{this.roomMember.setRoomMembers(V.toJS(t))});p(this,"onMemberChange",ne(t=>{if(!this.room||!this.worker)return;const e=this.getToolsKey(t),i=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(i),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));p(this,"internalSceneChange",(t,e)=>{var i;(i=this.worker)==null||i.clearViewScenePath(t,!0).then(()=>{var o;(o=this.worker)==null||o.pullServiceData(t,e)})});p(this,"internalCameraChange",(t,e)=>{var i;(i=this.worker)==null||i.updateCamera(t,e)});const{displayer:e,plugin:i,options:o}=t;this.plugin=i,this.room=V.isRoom(e)?e:void 0,this.play=V.isPlayer(e)?e:void 0,this.pluginOptions=o,this.roomMember=new Ag;const r={control:this,internalMsgEmitter:Ge.InternalMsgEmitter};this.cursor=new bg(r),this.textEditorManager=new Eg(r),this.worker=new Jg(r),this.hotkeyManager=new xM(r)}bindPlugin(t){var e,i;this.plugin=t,this.collector&&this.collector.removeStorageStateListener(),this.collector=new Rt(t,(i=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:i.interval),this.cursor.activeCollector(),this.activePlugin()}destroy(){var t,e,i,o,r;this.roomMember.destroy(),(t=this.collector)==null||t.destroy(),(e=this.worker)==null||e.destroy(),(i=this.viewContainerManager)==null||i.destroy(),(o=this.cursor)==null||o.destroy(),(r=this.textEditorManager)==null||r.destory()}cleanCurrentScene(){const t=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(Ge.InternalMsgEmitter.emit("undoTickerStart",t,e),this.worker.clearViewScenePath(e).then(()=>{Ge.InternalMsgEmitter.emit("undoTickerEnd",t,e)}))}onWritableChange(t){var e,i;t?(i=this.worker)==null||i.abled():(e=this.worker)==null||e.unWritable()}getToolsKey(t){const e=t.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case H.text:return t.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),v.Text;case H.pencil:return t.useLaserPen?v.LaserPen:v.Pencil;case H.eraser:case H.pencilEraser:return v.Eraser;case H.selector:return v.Selector;case H.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),v.Arrow;case H.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),v.Straight;case H.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),v.Ellipse;case H.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),v.Rectangle;case H.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===Te.Pentagram||t.shapeType===Te.Star)return v.Star;if(t.shapeType===Te.Polygon||t.shapeType===Te.Triangle||t.shapeType===Te.Rhombus)return v.Polygon;if(t.shapeType===Te.SpeechBalloon)return v.SpeechBalloon;break}return v.Clicker}getToolsOpt(t,e){const i=e.currentApplianceName,o={strokeColor:ct(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(t){case v.Text:o.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),o.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),o.textAlign=(e==null?void 0:e.textAlign)||"left",o.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",o.fontColor=(e==null?void 0:e.textColor)&&ct(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||o.strokeColor||"rgba(0,0,0,1)",o.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&ct(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",o.bold=(e==null?void 0:e.bold)&&"bold"||void 0,o.italic=(e==null?void 0:e.italic)&&"italic"||void 0,o.underline=(e==null?void 0:e.underline)||void 0,o.lineThrough=(e==null?void 0:e.lineThrough)||void 0,o.text="",o.strokeColor=void 0;break;case v.Pencil:o.strokeType=(e==null?void 0:e.strokeType)||gt.Normal;break;case v.Eraser:o.thickness=Math.min(3,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,o.isLine=i===H.eraser&&!0;break;case v.LaserPen:o.duration=(e==null?void 0:e.duration)||1,o.strokeType=(e==null?void 0:e.strokeType)||gt.Normal;break;case v.Ellipse:case v.Rectangle:case v.Star:case v.Polygon:case v.SpeechBalloon:t===v.Star&&(e.shapeType===Te.Pentagram?(o.vertices=10,o.innerVerticeStep=2,o.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(o.vertices=e.vertices,o.innerVerticeStep=e.innerVerticeStep,o.innerRatio=e.innerRatio)),t===v.Polygon&&(e.shapeType===Te.Triangle?o.vertices=3:e.shapeType===Te.Rhombus?o.vertices=4:e.vertices&&(o.vertices=e.vertices)),o.fillColor=(e==null?void 0:e.fillColor)&&ct(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===v.SpeechBalloon&&(o.placement=e.placement||"bottomLeft");break}return{toolsType:t,toolsOpt:o}}effectViewContainer(t){var e,i,o,r,s;switch(t){case v.Text:case v.Pencil:case v.LaserPen:case v.Arrow:case v.Straight:case v.Rectangle:case v.Ellipse:case v.Star:case v.Polygon:case v.SpeechBalloon:case v.Triangle:case v.Rhombus:this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.abled();break;case v.Eraser:case v.Selector:this.room.disableDeviceInputs=!1,(i=this.cursor)==null||i.unabled(),(o=this.worker)==null||o.abled();break;default:this.room.disableDeviceInputs=!1,(r=this.worker)==null||r.unWritable(),(s=this.cursor)==null||s.unabled();break}setTimeout(()=>{this.viewContainerManager.getAllViews().forEach(c=>{c!=null&&c.displayer&&c.displayer.bindToolsClass()})},0)}async getBoundingRect(t){var i,o,r,s,a;const e=await((i=this.worker)==null?void 0:i.getBoundingRect(t));if(e){const c=((r=(o=this.viewContainerManager.mainView)==null?void 0:o.viewData)==null?void 0:r.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((a=(s=this.viewContainerManager.mainView)==null?void 0:s.viewData)==null?void 0:a.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(t,e,i,o,r,s,a){const c=await this.worker.getSnapshot(e,i,o,r);c&&(t.drawImage(c,s||0,a||0),c.close())}async scenePreview(t,e){var s,a,c,l;const i=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(t);if(!i)return;const o=this.viewContainerManager.getView(i);if(!o||!((a=o.cameraOpt)!=null&&a.width)||!((c=o.cameraOpt)!=null&&c.height))return;const r=await((l=this.worker)==null?void 0:l.getSnapshot(t));if(r&&this.worker){const d=document.createElement("canvas"),u=d.getContext("2d"),{width:M,height:g}=o.cameraOpt;d.width=M,d.height=g,u&&(u.drawImage(r,0,0),e.src=d.toDataURL(),e.onload=()=>{d.remove()},e.onerror=()=>{d.remove(),e.remove()}),r.close()}}setOriginMemberState(){}switchToSelector(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:H.selector})}async runEffectWork(t){if(this.hasSwitchToSelectorEffect){const e=await new Promise(i=>{this.switchToSelector(),this.effectResolve=i});this.effectResolve=void 0,e&&t&&t()}}setSnapshootData(){var t;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(t=this.room)==null?void 0:t.state.memberState))}getSnapshootData(t){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(t)}clearSnapshootData(){var t;(t=this.snapshootStateMap)==null||t.clear(),this.snapshootStateMap=void 0}};p(Ge,"InternalMsgEmitter",new eo);let Ne=Ge;var kM=Do,LM=4;function AM(n){return kM(n,LM)}var EM=AM;const Ki=Fe(EM),be=class be{constructor(t){p(this,"emitter",new eo);p(this,"undoStack");p(this,"redoStack");p(this,"worker");p(this,"control");p(this,"room");p(this,"isTicking");p(this,"undoTickerId");p(this,"viewId");p(this,"scenePath");p(this,"tickStartStorerCache");p(this,"excludeIds",new Set);p(this,"undoTickerEnd",Ji((t,e,i)=>{var o,r;if(t===this.undoTickerId&&i===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const s=((o=this.collector)==null?void 0:o.storage[e])&&((r=this.collector)==null?void 0:r.storage[e][i])||{},a=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(s)));a.size&&(this.undoStack.push({id:t,type:2,data:oe(a),scenePath:i}),this.undoStack.length>be.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()}},be.waitTime));p(this,"onChangeScene",Ji(()=>{const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(o=>o.scenePath===t).length,i=this.redoStack.filter(o=>o.scenePath===t).length;this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}},be.waitTime));const{control:e,internalMsgEmitter:i,viewId:o}=t;this.control=e,this.emitter=i,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=o}get collector(){return this.control.collector}addExcludeIds(t){if(this.isTicking)for(const e of t)this.excludeIds.add(e)}undoTickerStart(t,e){if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){this.isTicking=!0,this.excludeIds.clear();const i=this.collector.transformKey(O);this.excludeIds.add(i),this.undoTickerId=t,this.scenePath=e;const o=this.collector.getStorageData(this.viewId,e)||{};this.tickStartStorerCache=new Map(Object.entries(oe(o)))}}undoTickerEndSync(t,e,i,o){var r,s;if(t===this.undoTickerId&&i===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const a=((r=this.collector)==null?void 0:r.storage[e])&&((s=this.collector)==null?void 0:s.storage[e][i])||{},c=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)));c.size&&(this.undoStack.push({id:t,type:2,data:oe(c),scenePath:i,tickStartStorerCache:o&&oe(this.tickStartStorerCache)||void 0}),this.undoStack.length>be.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(t){this.undoTickerId&&this.tickStartStorerCache&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath,!0);let e=this.undoStack.length-1;for(;e>=0;){if(this.undoStack[e].scenePath===t){const s=this.undoStack[e];s&&(this.redoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s)),this.undoStack.splice(e,1);break}e--}const i=this.undoStack.filter(r=>r.scenePath===t).length,o=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",o),i}redo(t){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===t){const s=this.redoStack[e];s&&(!this.undoTickerId&&s.tickStartStorerCache?(this.undoTickerId=s.id,this.tickStartStorerCache=s.tickStartStorerCache,this.scenePath=s.scenePath):this.undoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const i=this.undoStack.filter(r=>r.scenePath===t).length,o=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",o),o}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 t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(o=>o.scenePath===t).length,i=this.redoStack.filter(o=>o.scenePath===t).length;this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}}diffFun(t,e){const i=new Set,o=t.keys(),r=e.keys();for(const s of o){if(this.excludeIds.has(s))continue;const a=t.get(s),c=e.get(s);if(a&&c){if(ce(c,a))continue;i.add({dataType:3,key:s,data:[a,c]});continue}a&&i.add({dataType:2,key:s,data:a})}for(const s of r){if(this.excludeIds.has(s))continue;const a=e.get(s);a&&!t.has(s)&&i.add({dataType:1,key:s,data:a})}return i}isDrawEffectiveScene(t,e){const{key:i}=t;return!e.includes(i)}isDeleteEffectiveScene(t,e,i){var s;const{key:o}=t;if(!e.includes(o))return!1;const r=e.filter(a=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(a))===O&&!((l=this.collector)!=null&&l.isOwn(a))}).map(a=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(o))return!1;return!0}isOldEffectiveScene(t,e,i){var s;const{key:o}=t;if(!e.includes(o))return!1;const r=e.filter(a=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(a))===O&&!((l=this.collector)!=null&&l.isOwn(a))}).map(a=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(o))return!1;return!0}isNewEffectiveScene(t,e){const{key:i}=t;return!!e.includes(i)}refreshPlugin(t,e=!1){var s,a,c,l,d,u,M,g,y,N,m,f,w,I,z,T,j,x,A,W,b;let i;const{scenePath:o}=t,r=t.data;if(!(!r||!this.collector))for(const Y of r.values()){const{dataType:Q,data:P,key:X}=Y,q=this.collector.storage[this.viewId]&&this.collector.storage[this.viewId][o],_=q&&Object.keys(q)||[];switch(Q){case 1:if(i=e?this.isDrawEffectiveScene(Y,_):this.isDeleteEffectiveScene(Y,_,o),i)if(e&&!Array.isArray(P)){if((s=P.updateNodeOpt)!=null&&s.useAnimation&&(P.updateNodeOpt.useAnimation=!1),((a=this.collector)==null?void 0:a.getLocalId(X))===O&&((c=this.collector)!=null&&c.isOwn(Y.key))){const G=P.selectIds;if(G){const J=_.filter(D=>{var B,$;return((B=this.collector)==null?void 0:B.getLocalId(D))===O&&!(($=this.collector)!=null&&$.isOwn(D))}).map(D=>{var B;return(B=this.collector)==null?void 0:B.storage[this.viewId][o][D]});let K=!1;for(const D of J)for(let B=0;B<G.length;B++)(l=D==null?void 0:D.selectIds)!=null&&l.includes(G[B])&&(delete G[B],K=!0);K&&(P.selectIds=G.filter(D=>!!D))}}(d=this.collector)==null||d.updateValue(Y.key,P,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}else!e&&!Array.isArray(Y.data)&&((u=this.collector)==null||u.updateValue(Y.key,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0}));break;case 2:if(i=e?this.isDeleteEffectiveScene(Y,_,o):this.isDrawEffectiveScene(Y,_),i){if(e&&!Array.isArray(P))(M=this.collector)==null||M.updateValue(X,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0});else if(!e&&!Array.isArray(P)){if((g=P.updateNodeOpt)!=null&&g.useAnimation&&(P.updateNodeOpt.useAnimation=!1),((y=this.collector)==null?void 0:y.getLocalId(Y.key))===O&&((N=this.collector)!=null&&N.isOwn(Y.key))){const G=P.selectIds;if(G){const J=_.filter(D=>{var B,$;return((B=this.collector)==null?void 0:B.getLocalId(D))===O&&!(($=this.collector)!=null&&$.isOwn(D))}).map(D=>{var B;return(B=this.collector)==null?void 0:B.storage[this.viewId][o][D]});let K=!1;for(const D of J)for(let B=0;B<G.length;B++)(m=D==null?void 0:D.selectIds)!=null&&m.includes(G[B])&&(delete G[B],K=!0);K&&(P.selectIds=G.filter(D=>!!D))}}(f=this.collector)==null||f.updateValue(Y.key,Y.data,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}}break;case 3:if(i=e?this.isNewEffectiveScene(Y,_):this.isOldEffectiveScene(Y,_,o),i){if(e&&Array.isArray(P)&&P.length===2){const G=P[1];if((w=G.updateNodeOpt)!=null&&w.useAnimation&&(G.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(Y.key))===O&&((z=this.collector)!=null&&z.isOwn(Y.key))){const J=G.selectIds;if(J){const K=_.filter(B=>{var $,re;return(($=this.collector)==null?void 0:$.getLocalId(B))===O&&!((re=this.collector)!=null&&re.isOwn(B))}).map(B=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][o][B]});let D=!1;for(const B of K)for(let $=0;$<J.length;$++)B!=null&&B.selectIds&&((T=B.selectIds)!=null&&T.includes(J[$]))&&(delete J[$],D=!0);D&&(G.selectIds=J.filter(B=>!!B))}}(j=this.collector)==null||j.updateValue(X,G,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}else if(!e&&Array.isArray(P)&&P.length===2){const G=P[0];if((x=G.updateNodeOpt)!=null&&x.useAnimation&&(G.updateNodeOpt.useAnimation=!1),((A=this.collector)==null?void 0:A.getLocalId(Y.key))===O&&((W=this.collector)!=null&&W.isOwn(Y.key))){const J=G.selectIds;if(J){const K=_.filter(B=>{var $,re;return(($=this.collector)==null?void 0:$.getLocalId(B))===O&&!((re=this.collector)!=null&&re.isOwn(B))}).map(B=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][o][B]});let D=!1;for(const B of K)for(let $=0;$<J.length;$++)B!=null&&B.selectIds&&B.selectIds.includes(J[$])&&(delete J[$],D=!0);D&&(G.selectIds=J.filter(B=>!!B))}}(b=this.collector)==null||b.updateValue(Y.key,G,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}}break}}}};p(be,"sdkCallBack"),p(be,"MaxStackLength",20),p(be,"waitTime",100);let It=be;function bM(n){return n instanceof TouchEvent||n instanceof window.TouchEvent||(n==null?void 0:n.touches)&&(n==null?void 0:n.touches.length)||(n==null?void 0:n.changedTouches)&&(n==null?void 0:n.changedTouches.length)}function Ve(n){return bM(n)&&(n.touches&&n.touches.length===1||n.changedTouches&&n.changedTouches.length===1)}function bo(n){return n.touches&&n.touches.length?{x:n.touches[0].pageX,y:n.touches[0].pageY}:n.changedTouches&&n.changedTouches.length?{x:n.changedTouches[0].pageX,y:n.changedTouches[0].pageY}:{x:n.pageX,y:n.pageY}}class it{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"mainView");p(this,"appViews",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.internalMsgEmitter.on("undoTickerStart",this.undoTickerStart.bind(this)),this.internalMsgEmitter.on("undoTickerEnd",this.undoTickerEnd.bind(this)),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds.bind(this))}undoTickerStart(t,e){const i=this.getView(e);i&&i.displayer&&i.focusScenePath&&i.displayer.commiter.undoTickerStart(t,i.focusScenePath)}undoTickerEnd(t,e,i){const o=this.getView(e);if(o&&o.displayer&&o.focusScenePath){if(i){o.displayer.commiter.undoTickerEndSync(t,e,o.focusScenePath);return}o.displayer.commiter.undoTickerEnd(t,e,o.focusScenePath)}}addExcludeIds(t,e){const i=this.getView(e);i&&i.displayer&&i.focusScenePath&&i.displayer.commiter.addExcludeIds(t)}undo(){const t=this.focuedView;let e=0;if(t){const i=t.focusScenePath;e=t.displayer.commiter.undo(i)||0}return e}redo(){const t=this.focuedView;let e=0;if(t){const i=t.focusScenePath;e=t.displayer.commiter.redo(i)||0}return e}validator(t,e,i){var s;const o=Ki(t[e]),r=Ki(i);if(e==="focusScenePath"&&i&&!ce(o,r)&&(this.control.internalSceneChange(t.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!ce(o,r)){if(r.width!==(o==null?void 0:o.width)||r.height!==(o==null?void 0:o.height)){const a=this.getView(e);a==null||a.displayer.updateSize()}this.control.internalCameraChange(t.id,r)}}destroyAppView(t,e=!1){const i=this.appViews.get(t);i&&(this.control.textEditorManager.clear(t,e),i.displayer.destroy(),this.appViews.delete(t))}createMianView(t){this.mainView=new Proxy(t,{set:(e,i,o)=>(this.control.worker.isActive&&this.validator(e,i,o),e[i]=o,!0)})}createAppView(t){const e=t.id,i=new Proxy(t,{set:(o,r,s)=>(this.control.worker.isActive&&this.validator(o,r,s),o[r]=s,!0)});this.appViews.set(e,i)}isAppView(t){return t!==ve.viewId&&this.appViews.has(t)}getView(t){var e;return t===ve.viewId?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var i;if(t===ve.viewId&&this.mainView)this.mainView.focusScenePath=e;else{const o=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;o&&(o.focusScenePath=e)}}setViewData(t,e){var i;if(t===ve.viewId&&this.mainView)this.mainView.viewData=e;else{const o=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;o&&(o.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===ve.viewId?this.focuedView=this.mainView:this.focuedView=t&&((e=this.appViews)==null?void 0:e.get(t))||void 0,this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(t,e){var o;let i;t===ve.viewId?i=this.mainView:i=(o=this.appViews)==null?void 0:o.get(t),i&&(i.focusScenePath=e)}destroy(){var t;this.internalMsgEmitter.removeAllListeners("undoTickerStart"),this.internalMsgEmitter.removeAllListeners("undoTickerEnd"),this.internalMsgEmitter.removeAllListeners("excludeIds"),(t=this.mainView)==null||t.displayer.destroy(),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.control.worker.destroyViewWorker(e.id)})}setFocuedViewCameraOpt(t){this.focuedView&&(this.focuedView.cameraOpt=t)}transformToOriginPoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const o=i.viewData.convertToPointOnScreen(t[0],t[1]);return[o.x,o.y]}return t}transformToScenePoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const o=i.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[o.x,o.y]}return t}render(t){var e,i,o,r,s,a,c,l,d,u,M,g,y,N,m,f,w;for(const I of t){const{rect:z,imageBitmap:T,isClear:j,isUnClose:x,drawCanvas:A,clearCanvas:W,offset:b,viewId:Y}=I,Q=(e=this.getView(Y))==null?void 0:e.displayer;if(Q&&z){const{dpr:P,canvasBgRef:X,canvasFloatRef:q,floatBarCanvasRef:_,canvasServiceFloatRef:G}=Q,J=z.w*P,K=z.h*P,D=z.x*P,B=z.y*P;if(j)switch(W){case Se.Selector:(o=(i=_.current)==null?void 0:i.getContext("2d"))==null||o.clearRect(0,0,J,K);break;case Se.ServiceFloat:(s=(r=G.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(D,B,J,K);break;case Se.Float:(c=(a=q.current)==null?void 0:a.getContext("2d"))==null||c.clearRect(D,B,J,K);break;case Se.Bg:(d=(l=X.current)==null?void 0:l.getContext("2d"))==null||d.clearRect(D,B,J,K);break}if(A&&T)switch(A){case Se.Selector:{const $=((b==null?void 0:b.x)||0)*P,re=((b==null?void 0:b.y)||0)*P;(M=(u=_.current)==null?void 0:u.getContext("2d"))==null||M.drawImage(T,0,0,J,K,$,re,J,K);break}case Se.ServiceFloat:{(y=(g=G.current)==null?void 0:g.getContext("2d"))==null||y.drawImage(T,0,0,J,K,D,B,J,K);break}case Se.Float:{(m=(N=q.current)==null?void 0:N.getContext("2d"))==null||m.drawImage(T,0,0,J,K,D,B,J,K);break}case Se.Bg:{(w=(f=X.current)==null?void 0:f.getContext("2d"))==null||w.drawImage(T,0,0,J,K,D,B,J,K);break}}if(x)return;T==null||T.close()}}}showFloatBar(t,e,i){const o=this.getView(t),r=o==null?void 0:o.displayer.vDom;r&&r.showFloatBar(e,i)}activeFloatBar(t){var i;const e=(i=this.getView(t))==null?void 0:i.displayer;e!=null&&e.vDom&&e.vDom.setFloatZIndex(2)}unActiveFloatBar(t){const e=this.getView(t),i=e==null?void 0:e.displayer.vDom;i&&i.setFloatZIndex(-1)}setActiveTextEditor(t,e){const i=this.getView(t),o=i==null?void 0:i.displayer.vDom;o&&o.setActiveTextEditor(e)}}p(it,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),p(it,"defaultScreenCanvasOpt",{autoRender:!1,contextType:nt.Canvas2d}),p(it,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class OM{constructor(t,e,i){p(this,"viewId");p(this,"control");p(this,"internalMsgEmitter");p(this,"commiter");p(this,"cachePoint");p(this,"cacheCursorPoint");p(this,"active",!0);p(this,"mousedown",t=>{if(this.active&&t.button===0&&this.viewId){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"mousemove",t=>{if(this.active&&this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)}});p(this,"mouseup",t=>{if(this.active&&t.button===0&&this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}});p(this,"touchstart",t=>{if(this.active&&Ve(t)&&this.viewId){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"touchmove",t=>{if(this.active){if(!Ve(t)){this.control.worker.unWritable(),this.control.worker.clearLocalPointsBatchData();return}if(this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)}}});p(this,"touchend",t=>{if(this.active){if(!Ve(t)||!this.control.worker.isAbled()){this.control.worker.clearLocalPointsBatchData();return}if(this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}}});p(this,"cursorMouseMove",ne(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&ce(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));p(this,"cursorMouseLeave",ne(()=>{this.viewId&&(this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId))},30,{leading:!1}));p(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.viewId=t,this.control=e,this.internalMsgEmitter=i;const o={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new It(o)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case v.Text:case v.Pencil:case v.LaserPen:case v.Arrow:case v.Straight:case v.Rectangle:case v.Ellipse:case v.Star:case v.Polygon:case v.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===v.Text?"cursor-text":t===v.Pencil||t===v.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(t){this.viewId=t}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.internalMsgEmitter.removeAllListeners([U.Cursor,this.viewId])}getPoint(t){const e=bo(t);if(e&&se(e.x)&&se(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(C.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),o=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[o,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let o={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(o=this.getContainerOffset(t.offsetParent,o)),o}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,!1),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,!1),window.addEventListener("touchend",this.touchend,!1),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}class ve{constructor(t,e){p(this,"viewId","mainView");p(this,"control");p(this,"internalMsgEmitter");p(this,"commiter");p(this,"cachePoint");p(this,"cacheCursorPoint");p(this,"active",!0);p(this,"mousedown",t=>{if(this.active&&t.button===0){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"mousemove",t=>{if(!this.active)return;const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)});p(this,"mouseup",t=>{if(this.active&&t.button===0){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}});p(this,"touchstart",t=>{if(!this.active||!Ve(t))return;this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)});p(this,"touchmove",t=>{if(!this.active)return;if(!Ve(t)){this.control.worker.clearLocalPointsBatchData(),this.control.worker.unWritable();return}const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)});p(this,"touchend",t=>{if(!this.active)return;if(!Ve(t)||!this.control.worker.isAbled()){this.control.worker.clearLocalPointsBatchData();return}const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0});p(this,"cursorMouseMove",ne(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&ce(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));p(this,"cursorMouseLeave",ne(()=>{this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)},30,{leading:!1}));p(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.control=t,this.internalMsgEmitter=e;const i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new It(i)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case v.Text:case v.Pencil:case v.LaserPen:case v.Arrow:case v.Straight:case v.Rectangle:case v.Ellipse:case v.Star:case v.Polygon:case v.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===v.Text?"cursor-text":t===v.Pencil||t===v.LaserPen?"cursor-pencil":"cursor-arrow"}`);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.internalMsgEmitter.removeAllListeners([U.Cursor,this.viewId])}getPoint(t){const e=bo(t);if(e&&se(e.x)&&se(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(C.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),o=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[o,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let o={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(o=this.getContainerOffset(t.offsetParent,o)),o}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,!1),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,!1),window.addEventListener("touchend",this.touchend,!1),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}p(ve,"viewId","mainView");const YM="index-module__Container__nLsM3",PM="index-module__CanvasBox__j2Xe-",RM="index-module__FloatCanvas__d1YR7",BM="index-module__FloatBar__cm-EL",WM="index-module__RotateBtn__HSSkf",UM="index-module__ResizeBtn__yjvda",$M="index-module__CursorBox__2UHvI",FM="index-module__TextEditorContainer__Qm8KC",QM="index-module__ResizeTowBox__HOllX",HM="index-module__FloatBarBtn__FJrOG",me={Container:YM,CanvasBox:PM,FloatCanvas:RM,FloatBar:BM,RotateBtn:WM,ResizeBtn:UM,CursorBox:$M,TextEditorContainer:FM,ResizeTowBox:QM,FloatBarBtn:HM},ZM={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 le(n){return ZM[n]}const GM=n=>{const{workIds:t,maranger:e}=n;return h.createElement("div",{className:"button normal-button",onClick:i=>{i.preventDefault(),i.stopPropagation(),F.emitMethod(U.MainEngine,S.DeleteNode,{workIds:t||[O],viewId:e.viewId})},onTouchEnd:i=>{i.stopPropagation(),F.emitMethod(U.MainEngine,S.DeleteNode,{workIds:t||[O],viewId:e.viewId})}},h.createElement("img",{alt:"icon",src:le("delete")}))},VM=n=>{const{workIds:t,viewId:e}=n;return h.createElement("div",{className:"button normal-button",onClick:i=>{i.preventDefault(),i.stopPropagation(),F.emitMethod(U.MainEngine,S.CopyNode,{workIds:t||[O],viewId:e})},onTouchEnd:i=>{i.stopPropagation(),F.emitMethod(U.MainEngine,S.CopyNode,{workIds:t||[O],viewId:e})}},h.createElement("img",{alt:"icon",src:le("duplicate")}))},qi=n=>{const{icon:t,onClickHandler:e,onTouchEndHandler:i}=n;return h.createElement("div",{className:"button normal-button",onClick:e,onTouchEnd:i},h.createElement("img",{src:le(t)}))},JM=n=>{const{open:t,setOpen:e,style:i}=n,{floatBarData:o,maranger:r}=h.useContext(ae),[s,a]=h.useState([]),c=h.useMemo(()=>{if(i&&i.bottom){const M={};return M.top="inherit",M.bottom=50,M}},[i]),l=h.useMemo(()=>t?h.createElement("div",{className:"image-layer-menu",style:c},h.createElement(qi,{icon:"to-top",onClickHandler:M=>{M.preventDefault(),M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Top,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:M=>{M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Top,viewId:r==null?void 0:r.viewId})}}),h.createElement(qi,{icon:"to-bottom",onClickHandler:M=>{M.preventDefault(),M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Bottom,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:M=>{M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[t,c]),d=M=>{M.preventDefault(),M.stopPropagation(),M.nativeEvent.stopImmediatePropagation();const g=!t;e(g),g&&F.emitMethod(U.MainEngine,S.ZIndexActive,{workId:O,isActive:g,viewId:r==null?void 0:r.viewId})},u=M=>{M.stopPropagation(),M.nativeEvent.stopImmediatePropagation();const g=!t;e(g),F.emitMethod(U.MainEngine,S.ZIndexActive,{workId:O,isActive:g,viewId:r==null?void 0:r.viewId})};return h.useEffect(()=>{ce(o==null?void 0:o.selectIds,s)||o!=null&&o.selectIds&&!ce(o==null?void 0:o.selectIds,s)&&(a(o==null?void 0:o.selectIds),e(!1))},[t,o,s,e]),h.useEffect(()=>()=>{t&&F.emitMethod(U.MainEngine,S.ZIndexActive,{workId:O,isActive:!1,viewId:r==null?void 0:r.viewId})},[t]),h.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:d,onTouchEnd:u},l,h.createElement("img",{alt:"icon",src:le(t?"layer-pressed":"layer")}))},KM=n=>{const{activeColor:t,onClickHandler:e,onTouchEndHandler:i}=n;return h.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onClick:e,onTouchEnd:i},h.createElement("div",{className:"circle none"}))},ni=n=>{const{color:t,activeColor:e,onClickHandler:i,onTouchEndHandler:o}=n;return h.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onClick:i,onTouchEnd:o},h.createElement("div",{className:"circle",style:{backgroundColor:ue(t,1)}}))},ri=n=>{const{opacity:t,activeColor:e,setCurOpacity:i}=n,[o,r]=h.useState({x:108,y:0});if(h.useEffect(()=>{r({x:t*100+8,y:0})},[]),!e)return null;const s=ne((l,d)=>{l.preventDefault(),l.stopPropagation(),d.x!==(o==null?void 0:o.x)&&r({x:d.x,y:0});const u=Math.min(Math.max(d.x-8,0),100)/100;t!==u&&i(u,e,C.Doing)},100,{leading:!1}),a=l=>{l.preventDefault(),l.stopPropagation(),i(t,e,C.Start)},c=ne((l,d)=>{l.preventDefault(),l.stopPropagation(),d.x!==(o==null?void 0:o.x)&&r({x:d.x,y:0});const u=Math.min(Math.max(d.x-8,0),100)/100;i(u,e,C.Done)},100,{leading:!1});return h.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:l=>{const d=l.nativeEvent.offsetX,u=Math.min(Math.max(d-12,0),100)/100;r({x:u*100+8,y:0}),i(u,e,C.Done)}},h.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${ue(e,0)}, ${ue(e,1)})`}}),h.createElement("div",{className:"range-opacity"},h.createElement(ot,{bounds:"parent",axis:"x",position:o,onDrag:s,onStart:a,onStop:c},h.createElement("div",{className:"circle",style:{backgroundColor:ue(e,t)},onClick:l=>{l==null||l.preventDefault(),l==null||l.stopPropagation()}}))))},qM=n=>{const{open:t,setOpen:e,floatBarRef:i}=n,{floatBarData:o,floatBarColors:r,maranger:s,position:a,setFloatBarData:c}=h.useContext(ae),[l,d]=h.useState(),[u,M]=h.useState(1);h.useEffect(()=>{if(o!=null&&o.strokeColor){const[f,w]=oi(o.strokeColor);d(f),M(w)}},[o]);const g=h.useMemo(()=>{if(i!=null&&i.current&&a&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+a.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-a.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[i,a,s]),y=h.useMemo(()=>h.createElement(ri,{key:"strokeColors",opacity:u,activeColor:l,setCurOpacity:(f,w,I)=>{I===C.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),I===C.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),M(f);const z=ue(w,f);o!=null&&o.strokeColor&&(o.strokeColor=z,c({strokeColor:z})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],strokeColor:z,workState:I,viewId:s==null?void 0:s.viewId})}}),[u,l,s==null?void 0:s.control.room,s==null?void 0:s.viewId,o]),N=h.useMemo(()=>t?h.createElement("div",{className:"font-colors-menu",style:g,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},r.concat().map((f,w)=>{const I=St(...f);return h.createElement(ni,{key:w,color:I,activeColor:l,onTouchEndHandler:z=>{z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.strokeColor&&(o.strokeColor=T,c({strokeColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],strokeColor:T,viewId:s==null?void 0:s.viewId})},onClickHandler:z=>{z.preventDefault(),z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.strokeColor&&(o.strokeColor=T,c({strokeColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],strokeColor:T,viewId:s==null?void 0:s.viewId})}})}),y):null,[t,r,y,l,u,o,s==null?void 0:s.viewId,g]),m=h.useMemo(()=>l?h.createElement("div",{className:"color-bar-ring",style:{backgroundColor:ue(l,u)}},h.createElement("div",{className:"circle"})):null,[l,u]);return h.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},m,N)},_M=n=>{const{open:t,setOpen:e,floatBarRef:i}=n,{floatBarData:o,floatBarColors:r,maranger:s,position:a,setFloatBarData:c}=h.useContext(ae),[l,d]=h.useState(),[u,M]=h.useState(1);h.useEffect(()=>{if(o!=null&&o.fillColor){const[f,w]=(o==null?void 0:o.fillColor)==="transparent"&&["transparent",1]||oi(o.fillColor);d(f),M(w)}},[o]);const g=h.useMemo(()=>{if(i!=null&&i.current&&a&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+a.y>200){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-a.y<140){const f={};return f.top="inherit",f.bottom=50,f}}},[i,a,s]),y=h.useMemo(()=>l&&l!=="transparent"?h.createElement(ri,{key:"fillColors",opacity:u||0,activeColor:l,setCurOpacity:(f,w,I)=>{I===C.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),I===C.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),M(f);const z=ue(w,f);o!=null&&o.fillColor&&(o.fillColor=z,c({fillColor:z})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:l&&ue(w,f),workState:I,viewId:s==null?void 0:s.viewId})}}):null,[l,u,s==null?void 0:s.control.room,s==null?void 0:s.viewId,o]),N=h.useMemo(()=>t?h.createElement("div",{className:"font-colors-menu",style:g,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},h.createElement(KM,{activeColor:l,onTouchEndHandler:f=>{f.stopPropagation(),d("transparent");const w="transparent";o!=null&&o.fillColor&&(o.fillColor=w,c({fillColor:w})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:w,viewId:s==null?void 0:s.viewId})},onClickHandler:f=>{f.preventDefault(),f.stopPropagation(),d("transparent");const w="transparent";o!=null&&o.fillColor&&(o.fillColor=w,c({fillColor:w})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:w,viewId:s==null?void 0:s.viewId})}}),r.map((f,w)=>{const I=St(...f);return h.createElement(ni,{key:w,color:I,activeColor:l,onTouchEndHandler:z=>{z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.fillColor&&(o.fillColor=T,c({fillColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:T,viewId:s==null?void 0:s.viewId})},onClickHandler:z=>{z.preventDefault(),z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.fillColor&&(o.fillColor=T,c({fillColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:T,viewId:s==null?void 0:s.viewId})}})}),y):null,[t,l,r,y,o,s==null?void 0:s.viewId,u,g]),m=h.useMemo(()=>{const f=l&&l!=="transparent"&&ue(l,u)||"transparent";return h.createElement("div",{className:"color-bar-fill"},h.createElement("div",{className:"circle",style:{backgroundColor:f}}))},[l,u]);return h.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},m,N)},XM=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,floatBarRef:r}=n,{floatBarColors:s,maranger:a,position:c,setFloatBarData:l,floatBarData:d}=h.useContext(ae),[u,M]=h.useState(),[g,y]=h.useState(1);h.useEffect(()=>{if(i!=null&&i.fontColor){const[I,z]=(i==null?void 0:i.fontColor)==="transparent"&&["transparent",0]||oi(i.fontColor);M(I),y(z)}},[i==null?void 0:i.fontColor]);const N=h.useMemo(()=>{if(r!=null&&r.current&&c&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+c.y>180){const I={};return I.top="inherit",I.bottom=50,I}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-c.y<120){const I={};return I.top="inherit",I.bottom=50,I}}},[r,c,a]),m=h.useMemo(()=>u&&u!=="transparent"?h.createElement(ri,{key:"fontColors",opacity:g,activeColor:u,setCurOpacity:(I,z,T)=>{T===C.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),T===C.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),y(I);const j=ue(z,I);d!=null&&d.textOpt&&(d.textOpt.fontColor=j,l({textOpt:d.textOpt})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:o||[O],fontColor:u&&j,workState:T,viewId:a==null?void 0:a.viewId})}}):null,[u,g,a==null?void 0:a.control.room,a==null?void 0:a.viewId,d==null?void 0:d.textOpt,o]),f=h.useMemo(()=>t?h.createElement("div",{className:"font-colors-menu",style:N,onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()},onClick:I=>{I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},s.map((I,z)=>{const T=St(...I);return h.createElement(ni,{key:z,color:T,activeColor:u,onTouchEndHandler:j=>{j.stopPropagation(),M(T);const x=ue(T,g);d!=null&&d.textOpt&&(d.textOpt.fontColor=x,l({textOpt:d.textOpt})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:o||[O],fontColor:x,viewId:a==null?void 0:a.viewId})},onClickHandler:j=>{j.preventDefault(),j.stopPropagation(),M(T);const x=ue(T,g);d!=null&&d.textOpt&&(d.textOpt.fontColor=x,l({textOpt:d.textOpt})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:o||[O],fontColor:x,viewId:a==null?void 0:a.viewId})}})}),m):null,[t,s,m,u,g,d==null?void 0:d.textOpt,o,a==null?void 0:a.viewId,N]),w=h.useMemo(()=>{const I=u&&u!=="transparent"&&ue(u,g)||"transparent";return h.createElement("div",{className:"color-bar"},h.createElement("div",{className:"color-bar-color",style:{backgroundColor:I}}))},[u,g]);return h.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:I=>{I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),e(!t)}},h.createElement("img",{alt:"icon",src:le("font-colors")}),w,f)},ef=n=>{const{bold:t,setBold:e,workIds:i,viewId:o}=n,r=s=>{const a=t==="bold"?"normal":"bold";s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,bold:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t==="bold"?"bold-active":"bold")}))},tf=n=>{const{underline:t,setUnderline:e,workIds:i,viewId:o}=n,r=s=>{const a=!t;s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,underline:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t?"underline-active":"underline")}))},of=n=>{const{lineThrough:t,setLineThrough:e,workIds:i,viewId:o}=n,r=s=>{const a=!t;s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,lineThrough:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t?"line-through-active":"line-through")}))},nf=n=>{const{italic:t,setItalic:e,workIds:i,viewId:o}=n,r=s=>{const a=t==="italic"?"normal":"italic";s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,italic:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t==="italic"?"italic-active":"italic")}))},rf=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,style:r}=n,{maranger:s}=h.useContext(ae),[a,c]=h.useState("normal"),[l,d]=h.useState("normal"),[u,M]=h.useState(!1),[g,y]=h.useState(!1);h.useEffect(()=>{i!=null&&i.bold&&c(i.bold),pe(i==null?void 0:i.underline)&&M(i.underline||!1),pe(i==null?void 0:i.lineThrough)&&y(i.lineThrough||!1),i!=null&&i.italic&&d(i.italic)},[i]);const N=h.useMemo(()=>{if(r&&r.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[r]),m=h.useMemo(()=>t?h.createElement("div",{className:"font-style-menu",style:N,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},h.createElement(ef,{workIds:o||[O],bold:a,setBold:c,viewId:s==null?void 0:s.viewId}),h.createElement(tf,{workIds:o||[O],underline:u,setUnderline:M,viewId:s==null?void 0:s.viewId}),h.createElement(of,{workIds:o||[O],lineThrough:g,setLineThrough:y,viewId:s==null?void 0:s.viewId}),h.createElement(nf,{workIds:o||[O],italic:l,setItalic:d,viewId:s==null?void 0:s.viewId})):null,[t,o,a,s==null?void 0:s.viewId,u,g,l,N]);return h.createElement("div",{className:`button normal-button ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},h.createElement("img",{alt:"icon",src:le(t?"font-style-active":"font-style")}),m)},ge=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Ze=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],sf=n=>{const{style:t,onClickHandler:e}=n;return h.createElement("div",{className:"font-size-menu",style:t,onTouchEnd:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()},onClick:i=>{i.preventDefault(),i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}},ge.map(i=>h.createElement("div",{className:"font-size-btn",key:i,onClick:()=>{e(i)},onTouchEnd:()=>{e(i)}},i)))},af=n=>{const t=h.useRef(null),{open:e,setOpen:i,textOpt:o,workIds:r,floatBarRef:s}=n,{maranger:a,position:c}=h.useContext(ae),[l,d]=h.useState(0),[u,M]=h.useState(),g=ge.length-1;h.useEffect(()=>{o!=null&&o.fontSize&&(d(o.fontSize),t.current&&(t.current.value=o.fontSize.toString()))},[o==null?void 0:o.fontSize]);const y=h.useMemo(()=>{if(s!=null&&s.current&&c&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>250){const I={};return I.top="inherit",I.bottom=35,I}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<180){const I={};return I.top="inherit",I.bottom=35,I}}},[s,c,a]);function N(I){d(I),I&&I>=ge[0]&&I<=ge[g]&&F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:r||[O],fontSize:I,viewId:a==null?void 0:a.viewId})}const m=I=>{var z;d(I),i(!1),(z=t.current)==null||z.blur(),I&&I>=ge[0]&&I<=ge[g]&&F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:r||[O],fontSize:I,viewId:a==null?void 0:a.viewId})},f=h.useMemo(()=>e?h.createElement(sf,{onClickHandler:m,style:y}):null,[e,m,y]),w=I=>{I>ge[g]&&(I=ge[g]),I<ge[0]&&(I=ge[0]),N(I)};return h.useEffect(()=>()=>{a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u)},[a,u]),h.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()},onClick:I=>{I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},h.createElement("input",{className:"font-size-input",ref:t,onTouchEnd:()=>{t.current&&t.current.focus()},onClick:()=>{i(!e),t.current&&t.current.focus()},onKeyDown:I=>{if(I.key==="Backspace"){const z=window.getSelection(),T=z==null?void 0:z.getRangeAt(0);if(T!=null&&T.collapsed)return I.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(t.current){const I=t.current.value,z=parseInt(I);isNaN(z)?t.current.value="0":t.current.value=z.toString()}},onChange:I=>{const z=I.target.value,T=parseInt(z);T&&N(T)},onFocus:()=>{a!=null&&a.control.room&&!a.control.room.disableDeviceInputs&&(M(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0)},onBlur:()=>{a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u)}}),h.createElement("div",{className:"font-size-btns"},h.createElement("div",{className:"font-size-add",onClick:()=>{w(l+ge[0])},onTouchEnd:()=>{w(l+ge[0])}}),h.createElement("div",{className:"font-size-cut",onClick:()=>{w(l-ge[0])},onTouchEnd:()=>{w(l-ge[0])}})),f)},cf=n=>{const{workIds:t,maranger:e,islocked:i}=n;return h.createElement("div",{className:"button normal-button",onClick:o=>{o.preventDefault(),o.stopPropagation(),F.emitMethod(U.MainEngine,S.SetLock,{workIds:t||[O],isLocked:!i,viewId:e==null?void 0:e.viewId})},onTouchEnd:o=>{o.stopPropagation(),F.emitMethod(U.MainEngine,S.SetLock,{workIds:t||[O],isLocked:!i,viewId:e==null?void 0:e.viewId})}},h.createElement("img",{alt:"icon",src:le(i?"unlock-new":"lock-new")}))},Wt=n=>{const{icon:t,min:e,max:i,step:o,value:r,onInputHandler:s}=n,[a,c]=h.useState(0),l=h.useRef(null),d=u=>{u>i&&(u=i),u<e&&(u=e),c(u),s(u),l.current&&(l.current.value=u.toString())};return h.useEffect(()=>{r&&(c(r),l.current&&(l.current.value=r.toString()))},[r]),h.createElement("div",{className:"button input-button",onTouchEnd:u=>{u.stopPropagation(),u.nativeEvent.stopImmediatePropagation()},onClick:u=>{u.preventDefault(),u.stopPropagation(),u.nativeEvent.stopImmediatePropagation()}},h.createElement("img",{src:le(t)}),h.createElement("input",{className:"input-number",type:"text",ref:l,onTouchEnd:()=>{l.current&&l.current.focus()},onClick:()=>{l.current&&l.current.focus()},onKeyDown:u=>{if(u.key==="Backspace"){const M=window.getSelection(),g=M==null?void 0:M.getRangeAt(0);if(g!=null&&g.collapsed)return u.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(l.current){const u=l.current.value,M=parseInt(u);isNaN(M)?l.current.value="0":l.current.value=M.toString()}},onChange:u=>{const M=u.target.value,g=parseInt(M);g&&g&&g>=e&&g<=i&&d(g)}}),h.createElement("div",{className:"input-number-btns"},h.createElement("div",{className:"input-number-add",onClick:()=>{d(a+o)},onTouchEnd:()=>{d(a+o)}}),h.createElement("div",{className:"input-number-cut",onClick:()=>{d(a-o)},onTouchEnd:()=>{d(a-o)}})))},lf=n=>{const{icon:t,min:e,max:i,step:o,value:r,onInputHandler:s}=n;return h.createElement("div",{className:"button input-button"},h.createElement("img",{src:le(t)}),h.createElement(uf,{min:e,max:i,step:o,value:r,onInputHandler:s}))},uf=n=>{const{value:t,min:e,max:i,onInputHandler:o}=n,[r,s]=h.useState({x:0,y:0});h.useEffect(()=>{s({x:t*100,y:0})},[]);const a=ne((d,u)=>{d.preventDefault(),d.stopPropagation();let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,i*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const g=M/100;console.log("first1--doing",u,u.x,M,g),t!==g&&o(g)},100,{leading:!1}),c=d=>{d.preventDefault(),d.stopPropagation()},l=ne((d,u)=>{d.preventDefault(),d.stopPropagation();let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,i*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const g=M/100;console.log("first1--end",u,u.x,M,g),t!==g&&o(g)},100,{leading:!1});return console.log("position",r),h.createElement("div",{className:"range-number-container",onClick:d=>{const u=d.nativeEvent.offsetX-6;let M=Math.floor(Math.max(u,e*100));M=Math.floor(Math.min(M,i*100)),s({x:M,y:0});const g=M/100;console.log("first1",d.nativeEvent.offsetX,M,g),t!==g&&o(g)}},h.createElement("div",{className:"range-number-color"}),h.createElement("div",{className:"range-number"},h.createElement(ot,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:c,onStop:l},h.createElement("div",{className:"circle",onClick:c}))))},hf=n=>{const{icon:t,value:e,onChangeHandler:i,style:o}=n,[r,s]=h.useState(0),[a,c]=h.useState(),l=h.useRef(null),d=h.useCallback(g=>{g>=Ze.length&&(g=0),g<0&&(g=Ze.length-1),s(g),i(Ze[g]),c(!1),l.current&&(l.current.value=Ze[g])},[i]),u=h.useMemo(()=>{if(o&&o.bottom){const g={};return g.top="inherit",g.bottom=50,g}},[o]);h.useEffect(()=>{e&&(s(Ze.indexOf(e)),l.current&&(l.current.value=e))},[e]);const M=h.useMemo(()=>a?h.createElement(df,{options:Ze,onClickHandler:d,style:u}):null,[a,d,u]);return h.createElement("div",{className:"button input-button"},h.createElement("img",{src:le(t)}),h.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onTouchEnd:()=>{l.current&&l.current.focus()},onClick:()=>{l.current&&(l.current.focus(),c(!a))}}),h.createElement("div",{className:"input-number-btns"},h.createElement("div",{className:"input-number-add",onClick:()=>{d(r+1)},onTouchEnd:()=>{d(r+1)}}),h.createElement("div",{className:"input-number-cut",onClick:()=>{d(r-1)},onTouchEnd:()=>{d(r-1)}})),M)},df=n=>{const{options:t,style:e,onClickHandler:i}=n;return h.createElement("div",{className:"select-option-menu",style:e,onTouchEnd:o=>{o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()},onClick:o=>{o.preventDefault(),o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()}},t.map((o,r)=>h.createElement("div",{className:"select-option-btn",key:o,onClick:()=>{i(r)},onTouchEnd:()=>{i(r)}},o)))},gf=n=>{const{maranger:t,innerRatio:e,innerVerticeStep:i,vertices:o}=n,r=c=>{console.log("onInputHandler",c),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:v.Star,viewId:t.viewId,vertices:c})},s=c=>{console.log("onInputHandler",c),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:v.Star,viewId:t.viewId,innerVerticeStep:c})},a=c=>{console.log("onInputHandler",c),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:v.Star,viewId:t.viewId,innerRatio:c})};return h.createElement(h.Fragment,null,h.createElement(Wt,{value:o,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:r}),h.createElement(Wt,{value:i,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:s}),h.createElement(lf,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:a}))},Mf=n=>{const{maranger:t,vertices:e}=n,i=o=>{F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:v.Polygon,viewId:t.viewId,vertices:o})};return h.createElement(Wt,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:i})},ff=n=>{const{maranger:t,placement:e}=n,i=o=>{console.log("onChangeHandler-SpeechBalloonFormView",o),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:v.SpeechBalloon,viewId:t.viewId,placement:o})};return h.createElement(hf,{value:e,icon:"speechBallon-placement",onChangeHandler:i})},At=n=>{const{icon:t,isActive:e,onClickHandler:i,onTouchEndHandler:o}=n;return h.createElement("div",{className:`button tab-button ${e?"active":""}`,onClick:i,onTouchEnd:o},h.createElement("img",{src:le(t)}))},pf=n=>{const{toolsTypes:t,style:e,maranger:i,shapeOpt:o}=n,[r,s]=h.useState();h.useEffect(()=>{t.includes(v.Polygon)?s(v.Polygon):t.includes(v.Star)?s(v.Star):s(v.SpeechBalloon)},[t]);const a=(u,M)=>{M==null||M.preventDefault(),M==null||M.stopPropagation(),s(u)},c=h.useMemo(()=>r===v.Polygon&&i&&o.vertices?h.createElement(Mf,{vertices:o.vertices,maranger:i}):null,[i,r,o]),l=h.useMemo(()=>r===v.Star&&i&&o.vertices&&o.innerVerticeStep&&o.innerRatio?h.createElement(gf,{maranger:i,vertices:o.vertices,innerVerticeStep:o.innerVerticeStep,innerRatio:o.innerRatio}):null,[i,r,o]),d=h.useMemo(()=>r===v.SpeechBalloon&&i&&o.placement?h.createElement(ff,{maranger:i,placement:o.placement}):null,[i,r,o]);return h.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:u=>{u.stopPropagation(),u.nativeEvent.stopImmediatePropagation(),u==null||u.preventDefault()}},h.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(v.Polygon)&&h.createElement(At,{isActive:r===v.Polygon,icon:r===v.Polygon?"polygon-active":"polygon",onClickHandler:a.bind(void 0,v.Polygon),onTouchEndHandler:a.bind(void 0,v.Polygon)})||null,t.includes(v.Star)&&h.createElement(At,{isActive:r===v.Star,icon:r===v.Star?"star-active":"star",onClickHandler:a.bind(void 0,v.Star),onTouchEndHandler:a.bind(void 0,v.Star)})||null,t.includes(v.SpeechBalloon)&&h.createElement(At,{isActive:r===v.SpeechBalloon,icon:r===v.SpeechBalloon?"speechBallon-active":"speechBallon",onClickHandler:a.bind(void 0,v.SpeechBalloon),onTouchEndHandler:a.bind(void 0,v.SpeechBalloon)})||null),h.createElement("div",{className:"shapeOpt-sub-menu-content"},c,l,d))},yf=n=>{const{open:t,setOpen:e,floatBarRef:i,toolsTypes:o,shapeOpt:r}=n,{floatBarData:s,maranger:a,position:c}=h.useContext(ae),[l,d]=h.useState([]),[u,M]=h.useState(),g=h.useMemo(()=>{if(i!=null&&i.current&&c&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+c.y>200){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-c.y<140){const f={};return f.top="inherit",f.bottom=50,f}}},[i,c,a]),y=h.useMemo(()=>t&&o&&a&&r?(a.control.room&&!a.control.room.disableDeviceInputs&&(M(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0),h.createElement(pf,{shapeOpt:r,style:g,toolsTypes:o,maranger:a})):(a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u),null),[t,g,o,a,r]),N=f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},m=f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)};return h.useEffect(()=>{ce(s==null?void 0:s.selectIds,l)||s!=null&&s.selectIds&&!ce(s==null?void 0:s.selectIds,l)&&(d(s==null?void 0:s.selectIds),e(!1))},[t,s,l,e]),h.useEffect(()=>()=>{t&&a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u)},[t,a,u]),h.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:N,onTouchEnd:m},y,h.createElement("img",{alt:"icon",src:le(t?"shapes-active":"shapes")}))},Oo=h.memo(n=>{const{textOpt:t,workIds:e,noLayer:i,position:o}=n,{floatBarData:r,maranger:s}=h.useContext(ae),[a,c]=h.useState(0),l=h.useRef(null),d=h.useMemo(()=>{var j,x,A;const I={},z=(r==null?void 0:r.w)||((j=t==null?void 0:t.boxSize)==null?void 0:j[0])||0,T=(r==null?void 0:r.h)||((x=t==null?void 0:t.boxSize)==null?void 0:x[1])||0;if(o&&z&&T&&(s!=null&&s.width)&&(s!=null&&s.height)){if(o.y<60&&(o.y+z<s.height-60?I.bottom=-120:o.y+T<s.height?I.bottom=-58:o.y>0?I.top=62:I.top=-o.y+62),o.x<0)I.left=-o.x+3;else if(o.x+(((A=l.current)==null?void 0:A.offsetWidth)||z)>s.width){const W=z+o.x-s.width;I.left="initial",I.right=W}return I}},[l,o,r==null?void 0:r.w,r==null?void 0:r.h,s==null?void 0:s.width,s==null?void 0:s.height,t==null?void 0:t.boxSize]),u=h.useMemo(()=>r!=null&&r.fillColor?h.createElement(_M,{floatBarRef:l,open:a===3,setOpen:I=>{c(I===!0?3:0)}}):null,[r==null?void 0:r.fillColor,a,l]),M=h.useMemo(()=>r!=null&&r.strokeColor?h.createElement(qM,{floatBarRef:l,open:a===2,setOpen:I=>{c(I===!0?2:0)}}):null,[r==null?void 0:r.strokeColor,a,l]),g=h.useMemo(()=>t!=null&&t.fontColor&&(s!=null&&s.viewId)?h.createElement(XM,{floatBarRef:l,open:a===4,setOpen:I=>{c(I===!0?4:0)},textOpt:t,workIds:e}):null,[t,a,e,s,l]),y=h.useMemo(()=>t&&(s!=null&&s.viewId)?h.createElement(rf,{open:a===6,setOpen:I=>{c(I===!0?6:0)},textOpt:t,workIds:e,style:d}):null,[t,a,e,s,d]),N=h.useMemo(()=>t&&(s!=null&&s.viewId)?h.createElement(af,{open:a===7,setOpen:I=>{c(I===!0?7:0)},textOpt:t,workIds:e,floatBarRef:l}):null,[t,a,e,s,l]),m=h.useMemo(()=>i?null:h.createElement(JM,{open:a===1,setOpen:I=>{c(I===!0?1:0)},floatBarRef:l}),[i,a,l]),f=h.useMemo(()=>r!=null&&r.canLock&&s?h.createElement(cf,{workIds:e,maranger:s,islocked:r.isLocked}):null,[r,s,e]),w=h.useMemo(()=>s&&(s!=null&&s.viewId)&&d&&(r!=null&&r.shapeOpt)&&(r!=null&&r.toolsTypes)?h.createElement(yf,{open:a===8,setOpen:I=>{c(I===!0?8:0)},floatBarRef:l,workIds:e,toolsTypes:r.toolsTypes,shapeOpt:r.shapeOpt}):null,[r,s,a,d,e,l]);return h.createElement("div",{className:"bezier-pencil-plugin-floatbtns",style:d,ref:l},s&&h.createElement(GM,{workIds:e,maranger:s}),m,f,!!(s!=null&&s.viewId)&&h.createElement(VM,{workIds:e,viewId:s.viewId}),w,N,y,g,M,u)}),If=n=>{const{data:t,isActive:e,manager:i,workId:o}=n,{opt:r,scale:s,translate:a,x:c,y:l}=t,d=`scale(${s||1}) ${a&&"translate("+a[0]+"px,"+a[1]+"px)"||""}`,{fontSize:u,fontFamily:M,underline:g,fontColor:y,lineThrough:N,textAlign:m,strokeColor:f,lineHeight:w,bold:I,italic:z,uid:T}=r,j=u,x=w||j*1.2,A={fontSize:`${j}px`,lineHeight:`${x}px`,color:y,borderColor:f,minHeight:`${x}px`};M&&(A.fontFamily=`${M}`),(N||g)&&(A.textDecoration=`${N&&"line-through"||""}${g&&" underline"||""}`),I&&(A.fontWeight=`${I}`),z&&(A.fontStyle=`${z}`),m&&(A.textAlign=`${m}`);let W="";r!=null&&r.text&&(W=r.text.split(",").reduce((Q,P,X)=>{const q=P===""?"<br/>":P;return X===0?q:`${Q}<div>${q}</div>`},""));function b(){var Y,Q;console.log("onServiceDerive---handleClick",e,T,(Y=i.control.collector)==null?void 0:Y.uid),e&&(T&&T===((Q=i.control.collector)==null?void 0:Q.uid)||!T)&&i.control.textEditorManager.active(o)}return h.createElement("div",{className:"editor-box",style:{left:`${c}px`,top:`${l}px`,transform:d,transformOrigin:"left top",pointerEvents:"none"}},h.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:A,dangerouslySetInnerHTML:{__html:W},onClick:b}))},vf=h.memo(n=>{const{data:t,position:e,workId:i,selectIds:o,updateOptInfo:r}=n,[s,a]=h.useState([0,0]),{opt:c,scale:l,translate:d,x:u,y:M}=t,g=h.useRef(null);h.useEffect(()=>{se(u)&&se(M)&&a([u-((e==null?void 0:e.x)||0),M-((e==null?void 0:e.y)||0)])},[u,M,o,i]),h.useEffect(()=>{var P,X;if((P=g.current)!=null&&P.offsetWidth&&((X=g.current)!=null&&X.offsetHeight)){const q=c.boxSize;((q==null?void 0:q[0])!==g.current.offsetWidth||q[1]!==g.current.offsetHeight||!q)&&(console.log("updateForViewEdited---1--0",i,q,[g.current.offsetWidth,g.current.offsetHeight]),r({activeTextId:i,update:{boxSize:[g.current.offsetWidth,g.current.offsetHeight],workState:C.Done},syncData:{canSync:!0,canWorker:!0}}))}},[c.fontSize]);const y=`scale(${l||1}) ${d&&"translate("+d[0]+"px,"+d[1]+"px)"||""}`,{fontSize:N,fontFamily:m,underline:f,fontColor:w,lineThrough:I,textAlign:z,strokeColor:T,lineHeight:j,bold:x,italic:A}=c,W=N,b=j||W*1.2,Y={fontSize:`${W}px`,lineHeight:`${b}px`,color:w,borderColor:T,minHeight:`${b}px`,pointerEvents:"none"};m&&(Y.fontFamily=`${m}`),(I||f)&&(Y.textDecoration=`${I&&"line-through"||""}${f&&" underline"||""}`),z&&(Y.textAlign=`${z}`),x&&(Y.fontWeight=`${x}`),A&&(Y.fontStyle=`${A}`);let Q="";return c!=null&&c.text&&(Q=c.text.split(",").reduce((X,q,_)=>{const G=q===""?"<br/>":q;return _===0?G:`${X}<div>${G}</div>`},"")),h.createElement("div",{className:"editor-box",style:{left:`${s[0]}px`,top:`${s[1]}px`,transform:y,transformOrigin:"left top",zIndex:1,pointerEvents:"none"}},h.createElement("div",{className:"editor readOnly",ref:g,style:Y,dangerouslySetInnerHTML:{__html:Q}}))}),Nf=n=>{const{data:t,workId:e,isSelect:i,handleKeyUp:o,handleFocus:r,updateOptInfo:s,showFloatBtns:a,manager:c}=n,[l,d]=h.useState(),{opt:u,scale:M,translate:g,x:y,y:N}=t,[m,f]=h.useState(""),w=h.useRef(null);h.useEffect(()=>{let D="";u!=null&&u.text&&(D=u.text.split(",").reduce(($,re,he)=>{const we=re===""?"<br/>":re;return he===0?we:`${$}<div>${we}</div>`},"")),f(D),Promise.resolve().then(()=>{w.current&&w.current.click()})},[]),h.useEffect(()=>{var D,B;(D=w.current)!=null&&D.offsetWidth&&((B=w.current)!=null&&B.offsetHeight)&&s({activeTextId:e,update:{boxSize:[w.current.offsetWidth,w.current.offsetHeight],workState:C.Doing}})});const I=`scale(${M||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`,{fontSize:z,fontFamily:T,underline:j,fontColor:x,lineThrough:A,textAlign:W,strokeColor:b,lineHeight:Y,bold:Q,italic:P}=u,X=z,q=Y||X*1.2,_={transform:I,transformOrigin:"left top",fontSize:`${X}px`,lineHeight:`${q}px`,color:x,borderColor:b,minHeight:`${q}px`};T&&(_.fontFamily=`${T}`),(A||j)&&(_.textDecoration=`${A&&"line-through"||""} ${j&&" underline"||""}`),W&&(_.textAlign=`${W}`),Q&&(_.fontWeight=`${Q}`),P&&(_.fontStyle=`${P}`);function G(){var D;if(w.current){w.current.focus();const B=window==null?void 0:window.getSelection(),$=w.current.lastChild;if(B&&$){const re=document.createRange(),he=((D=$.textContent)==null?void 0:D.length)||0;($==null?void 0:$.nodeName)==="#text"?re.setStart($,he):re.setStart($,he&&1||0),re.collapse(!0),B.removeAllRanges(),B.addRange(re)}}}function J(D){if(D.key==="Backspace"){const B=window.getSelection(),$=B==null?void 0:B.getRangeAt(0);if($!=null&&$.collapsed)return D.preventDefault(),document.execCommand("delete",!1),!1}return!1}function K(D){var B,$;if(D.preventDefault(),w.current){let re=(D.clipboardData||window.clipboardData).getData("text");re=re.toUpperCase();const he=window==null?void 0:window.getSelection();if(!(he!=null&&he.rangeCount))return;const we=re.split(/\n/);if(he&&we.length){he.deleteFromDocument();const ke=document.createRange();let de=w.current.lastChild;if(!de){const Le=document.createTextNode(we[0]);if(w.current.appendChild(Le),we.length===1){const rt=((B=Le.textContent)==null?void 0:B.length)||0;ke.setStart(Le,rt),ke.collapse(!0),he.removeAllRanges(),he.addRange(ke);return}}if((de==null?void 0:de.nodeName)==="#text"&&(de.textContent=de.textContent+we[0],we.length===1)){const Le=(($=de.textContent)==null?void 0:$.length)||0;ke.setStart(de,Le),ke.collapse(!0),he.removeAllRanges(),he.addRange(ke);return}(de==null?void 0:de.nodeName)==="DIV"&&(de.innerText=de.innerText+we[0]);for(let Le=1;Le<we.length;Le++){const rt=we[Le];if(rt){const ai=document.createElement("div");ai.innerText=rt,w.current.appendChild(ai)}}de=w.current.lastChild,de&&ke.setStart(de,1),ke.collapse(!0),he.removeAllRanges(),he.addRange(ke)}}}return h.createElement("div",{className:"editor-box",style:{left:`${y}px`,top:`${N}px`,zIndex:2,pointerEvents:"none"},onFocus:()=>{c.control.room&&!c.control.room.disableDeviceInputs&&(d(c.control.room.disableDeviceInputs),c.control.room.disableDeviceInputs=!0)},onBlur:()=>{c!=null&&c.control.room&&pe(l)&&(c.control.room.disableDeviceInputs=l)},onKeyDown:D=>(D.stopPropagation(),!0),onMouseMove:D=>(D.stopPropagation(),D.preventDefault(),!0)},!i&&a&&h.createElement(Oo,{textOpt:u,workIds:[e],noLayer:!0,position:{x:y,y:N}}),h.createElement("div",{id:e,contentEditable:!0,className:"editor",ref:w,style:_,dangerouslySetInnerHTML:{__html:m},onKeyDown:J,onKeyUp:o,onClick:G,onTouchEnd:G,onFocus:r,onPaste:K}))};class Yo extends h.Component{constructor(t){super(t)}getInnerText(t){const e=[];for(let i=0;i<t.childNodes.length;i++){const o=t.childNodes[i];if(o.nodeName==="#text"&&i===0){const r=o.textContent.split(/\n/),s=r.pop();e.push(...r),s&&e.push(s)}else if(o.nodeName==="DIV"){const r=o.innerText.split(/\n/);if(r.length===2&&r[0]===""&&r[1]==="")e.push("");else{const s=r.shift();s&&e.push(s);const a=r.pop();e.push(...r),a&&e.push(a)}}}return e}updateOptInfo(t){var s,a;const{activeTextId:e,update:i,syncData:o}=t,r=e&&oe(((s=this.props.manager.control.textEditorManager)==null?void 0:s.get(e))||((a=this.props.editors)==null?void 0:a.get(e)));r&&r.opt&&(r.opt={...r.opt,...i},o&&(r.canSync=o.canSync,r.canWorker=o.canWorker),this.props.manager.control.textEditorManager.updateForViewEdited(e,r))}get editorUI(){var t;if((t=this.props.editors)!=null&&t.size){const e=[];return this.props.editors.forEach((i,o)=>{if(this.props.selectIds.includes(o)&&!(this.props.activeTextId==o)){const s=h.createElement(vf,{key:o,data:i,workId:o,isSelect:!0,position:this.props.position,selectIds:this.props.selectIds,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(s)}}),e}return null}render(){return h.createElement("div",{ref:this.props.textRef},this.editorUI)}}class wf extends Yo{constructor(t){super(t)}handleKeyUp(t){const e=this.getInnerText(t.nativeEvent.target),i=this.props.activeTextId;i&&this.updateOptInfo({activeTextId:i,update:{text:e.toString(),boxSize:[t.nativeEvent.target.offsetWidth,t.nativeEvent.target.offsetHeight],workState:C.Doing},syncData:{canSync:!0,canWorker:!0}})}handleFocus(t){const e=this.props.activeTextId;e&&this.updateOptInfo({activeTextId:e,update:{boxSize:[t.nativeEvent.target.offsetWidth,t.nativeEvent.target.offsetHeight],workState:C.Doing},syncData:{canSync:!0,canWorker:!0}})}get editorUI(){var t;if((t=this.props.editors)!=null&&t.size){const e=[];return this.props.editors.forEach((i,o)=>{if(!(this.props.selectIds.includes(o)&&this.props.activeTextId!==o)){const a=this.props.activeTextId==o?h.createElement(Nf,{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}):h.createElement(If,{manager:this.props.manager,isActive:i.opt.workState===C.Doing||i.opt.workState===C.Start||!1,key:o,data:i,workId:o});e.push(a)}}),e}return null}render(){return h.createElement("div",{className:`${this.props.className}`},this.editorUI)}}const mf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},h.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},Tf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}})},zf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},h.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},jf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},h.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},Cf=h.forwardRef((n,t)=>{const{floatBarData:e,zIndex:i,position:o,angle:r,operationType:s,setPosition:a,setOperationType:c,maranger:l}=h.useContext(ae),{className:d,editors:u,activeTextId:M}=n,g=h.useRef(null),[y,N]=h.useState(C.Pending),[m,f]=h.useState(),w=b=>{b.preventDefault(),b.stopPropagation(),c(S.TranslateNode),N(C.Start),f(o),l!=null&&l.control.room&&(l.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.TranslateNode,{workIds:[O],position:o,workState:C.Start,viewId:l==null?void 0:l.viewId})},I=ne((b,Y)=>{b.preventDefault(),b.stopPropagation();const Q={x:Y.x,y:Y.y};a(Q),c(S.None),N(C.Done),l!=null&&l.control.room&&(l.control.room.disableDeviceInputs=!1),console.log("onDragEndHandler"),F.emitMethod(U.MainEngine,S.TranslateNode,{workIds:[O],position:Q,workState:C.Done,viewId:l==null?void 0:l.viewId})},100,{leading:!1}),z=ne((b,Y)=>{b.preventDefault(),b.stopPropagation();const Q={x:Y.x,y:Y.y};(Y.x!==(o==null?void 0:o.x)||Y.y!==(o==null?void 0:o.y))&&(a(Q),N(C.Doing),F.emitMethod(U.MainEngine,S.TranslateNode,{workIds:[O],position:Q,workState:C.Doing,viewId:l==null?void 0:l.viewId}))},100,{leading:!1}),T=h.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.all||s===S.RotateNode?null:h.createElement(mf,null),[e,s]),j=h.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.both||s===S.RotateNode?null:h.createElement(Tf,null),[e,s]),x=h.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.proportional||s===S.RotateNode?null:h.createElement(zf,null),[e,s]),A=h.useMemo(()=>(e==null?void 0:e.scaleType)===fe.none&&(e!=null&&e.canLock)?h.createElement(jf,null):null,[e]),W=h.useMemo(()=>{const b=(e==null?void 0:e.selectIds)||[];return u&&l&&b?h.createElement(Yo,{manager:l,textRef:g,selectIds:b,position:o,activeTextId:M,editors:u}):null},[e==null?void 0:e.selectIds,u,l,M]);return h.createElement(ot,{disabled:!!(e!=null&&e.isLocked),position:o,onStart:w,onDrag:z,onStop:I,handle:"canvas"},h.createElement("div",{className:`${d}`,style:e?{width:e.w,height:e.h,zIndex:i,pointerEvents:i<2||A?"none":"auto"}:void 0,onClick:ne(b=>{if(b.stopPropagation(),b.preventDefault(),l&&(u!=null&&u.size)&&g.current&&ce(m,o)){const Y=l.getPoint(b.nativeEvent);Y&&l.control.textEditorManager.computeTextActive(Y,l.viewId)}return!1},100,{leading:!1}),onTouchEndCapture:ne(b=>{if(b.stopPropagation(),b.preventDefault(),l&&(u!=null&&u.size)&&g.current&&y!==C.Doing){const Y=l.getPoint(b.nativeEvent);Y&&l.control.textEditorManager.computeTextActive(Y,l.viewId)}return!1},100,{leading:!1})},h.createElement("div",{className:"bezier-pencil-plugin-floatCanvas-box",style:{width:"100%",height:"100%",transform:`rotate(${r}deg)`}},h.createElement("canvas",{ref:t,className:"bezier-pencil-plugin-floatCanvas"})),A,T,j,x,W))}),Sf=h.memo(Cf,(n,t)=>ce(n,t)?!0:(console.log("FloatBar-----isEqual",!1),!1)),Df=n=>{const{floatBarData:t,position:e,operationType:i}=h.useContext(ae),{className:o}=n;return i===S.None?h.createElement("div",{className:`${o}`,style:t?{left:e==null?void 0:e.x,top:e==null?void 0:e.y,width:t.w,height:t.h}:void 0},h.createElement(Oo,{textOpt:t==null?void 0:t.textOpt,position:e,noLayer:t==null?void 0:t.isLocked})):null},xf=n=>{const{className:t}=n,{floatBarData:e,angle:i,setAngle:o,position:r,setOperationType:s,maranger:a}=h.useContext(ae),[c,l]=h.useState(!1),[d,u]=h.useState(new ie),[M,g]=h.useState(new ie);h.useEffect(()=>{if(e){const f=Math.floor(e.w/2),w=Math.floor(-e.h/2);g(new ie(f,w)),u(new ie)}},[e,r]);const y=(f,w)=>{f.preventDefault(),f.stopPropagation(),l(!0);const I=Math.round(ie.GetAngleByPoints(d,M,new ie(w.x,w.y)))||0;o(I),s(S.RotateNode),a!=null&&a.control.room&&(a.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.RotateNode,{workIds:[O],angle:I,workState:C.Start,viewId:a==null?void 0:a.viewId})},N=ne((f,w)=>{f.preventDefault(),f.stopPropagation(),l(!1);const I=Math.round(ie.GetAngleByPoints(d,M,new ie(w.x,w.y)))||0;o(I),s(S.None),a!=null&&a.control.room&&(a.control.room.disableDeviceInputs=!1),F.emitMethod(U.MainEngine,S.RotateNode,{workIds:[O],angle:I,workState:C.Done,viewId:a==null?void 0:a.viewId})},100,{leading:!1}),m=ne((f,w)=>{f.preventDefault(),f.stopPropagation(),l(!0);const I=Math.round(ie.GetAngleByPoints(d,M,new ie(w.x,w.y)))||0;o(I),s(S.RotateNode),F.emitMethod(U.MainEngine,S.RotateNode,{workIds:[O],angle:I,workState:C.Doing,viewId:a==null?void 0:a.viewId})},100,{leading:!1});return h.createElement(ot,{handle:".bezier-pencil-plugin-rotate-mouse-pointer",onStart:y,onDrag:m,onStop:N},h.createElement("div",{className:`${t}`,style:r&&e?{left:r.x-30,top:r.y+e.h+20}:void 0},!c&&h.createElement("div",{className:"bezier-pencil-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},h.createElement("img",{alt:"icon",src:le("rotation-button")})),h.createElement("div",{className:`bezier-pencil-plugin-rotate-mouse-pointer ${c?"active":""}`},h.createElement("img",{alt:"icon",src:le("rotation")}),h.createElement("div",{className:"angle-icon"},i,"°"))))},kf="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==",Lf="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",Af="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";class Ef extends h.Component{constructor(e){super(e);p(this,"renderAvatar",e=>{var o;const i=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.detectCursorName(e);return h.createElement("img",{className:"cursor-selector-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":i,marginRight:r?4:0},src:(o=e.payload)==null?void 0:o.avatar,alt:"avatar"})}else return null});p(this,"getOpacity",e=>{const i=this.getCursorName(e),o=this.detectAvatar(e);return i===void 0&&o===void 0?0:1});p(this,"getCursorName",e=>{if(e.payload&&e.payload.cursorName)return e.payload.cursorName});p(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");p(this,"getCursorBackgroundColor",e=>{const i=this.detectCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:i?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});p(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");p(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));p(this,"detectCursorName",e=>!!(e.payload&&e.payload.cursorName));p(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));p(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return h.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)})}render(){const{roomMember:e}=this.props,i=this.getCursorName(e);switch(e.memberState.currentApplianceName){case H.pencil:return h.createElement("div",{className:"cursor-box"},h.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"10px"}},h.createElement("div",{className:"cursor-name"},h.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),h.createElement("div",null,h.createElement("img",{className:"cursor-pencil-image",src:kf,alt:"pencilCursor"}))));case H.text:return h.createElement("div",{className:"cursor-box"},h.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},h.createElement("div",{className:"cursor-name"},h.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),h.createElement("div",null,h.createElement("img",{className:"cursor-arrow-image",src:Af,alt:"textCursor"}))));case H.rectangle:case H.arrow:case H.straight:case H.shape:case H.ellipse:return h.createElement("div",{className:"cursor-box"},h.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},h.createElement("div",{className:"cursor-name"},h.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),h.createElement("div",null,h.createElement("img",{className:"cursor-arrow-image",src:Lf,alt:"shapeCursor"}))));default:return null}}}const bf=n=>{const{className:t,info:e}=n,{roomMember:i,...o}=e||{};return h.createElement("div",{className:`${t}`,style:o?{transform:`translate(${o.x}px, ${o.y}px)`}:{display:"none"}},i&&h.createElement(Ef,{roomMember:i}))},Of=n=>{const{className:t,manager:e}=n,[i,o]=h.useState();h.useEffect(()=>(e.internalMsgEmitter.on([U.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([U.Cursor,e.viewId],r)}),[e]);function r(a){o(a)}return h.useMemo(()=>{if(i!=null&&i.length){const a=i.map(c=>{var l;return c.roomMember?h.createElement(bf,{key:(l=c.roomMember)==null?void 0:l.memberId,className:t,info:c}):null});return h.createElement(h.Fragment,null,a)}return null},[i])},Yf=n=>{const{className:t}=n,[e,i]=h.useState({x:0,y:0,h:0,w:0}),{floatBarData:o,position:r,maranger:s}=h.useContext(ae);h.useEffect(()=>{o&&i({x:o.x,y:o.y,w:o.w,h:o.h})},[]);const a=d=>{if(d.preventDefault(),d.stopPropagation(),o!=null&&o.w&&(o!=null&&o.h)){const u={x:(r==null?void 0:r.x)||0,y:(r==null?void 0:r.y)||0,w:o.w,h:o.h};i(u),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.ScaleNode,{workIds:[O],box:u,workState:C.Start,viewId:s==null?void 0:s.viewId})}},c=ne((d,u,M,g)=>{d.preventDefault(),d.stopPropagation();const y={x:e.x,y:e.y,w:e.w,h:e.h};switch(y.w+=g.width,y.h+=g.height,u){case"bottomLeft":case"left":y.x-=g.width;break;case"topLeft":y.x-=g.width,y.y-=g.height;break;case"top":case"topRight":y.y-=g.height;break}(g.width!==0||g.height!==0)&&F.emitMethod(U.MainEngine,S.ScaleNode,{workIds:[O],box:y,dir:u,workState:C.Doing,viewId:s==null?void 0:s.viewId})},100,{leading:!1}),l=ne((d,u,M,g)=>{d.preventDefault(),d.stopPropagation();const y={x:e.x,y:e.y,w:e.w,h:e.h};switch(y.w+=g.width,y.h+=g.height,u){case"bottomLeft":case"left":y.x-=g.width;break;case"topLeft":y.x-=g.width,y.y-=g.height;break;case"top":case"topRight":y.y-=g.height;break}s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),F.emitMethod(U.MainEngine,S.ScaleNode,{workIds:[O],box:y,dir:u,workState:C.Done,viewId:s==null?void 0:s.viewId})},100,{leading:!1});return h.createElement(Bo.Resizable,{className:`${t}`,boundsByDirection:!0,size:{width:(o==null?void 0:o.w)||0,height:(o==null?void 0:o.h)||0},style:{position:"absolute",pointerEvents:"auto",left:r==null?void 0:r.x,top:r==null?void 0:r.y},enable:{top:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,right:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,bottom:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,left:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(o==null?void 0:o.scaleType)===fe.proportional,onResizeStart:a,onResize:c,onResizeStop:l})},_i=n=>{const{id:t,pos:e,pointMap:i,type:o}=n,{setOperationType:r,maranger:s,floatBarData:a}=h.useContext(ae),[c,l]=h.useState({x:0,y:0}),[d,u]=h.useState(C.Pending);h.useEffect(()=>{(d===C.Pending||d===C.Done)&&l(e)},[e,d]);const M=N=>{N.preventDefault(),N.stopPropagation(),r(S.SetPoint),u(C.Start),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.SetPoint,{workId:O,pointMap:i,workState:C.Start,viewId:s==null?void 0:s.viewId})},g=ne((N,m)=>{if(N.preventDefault(),N.stopPropagation(),r(S.SetPoint),u(C.Doing),m.x!==(c==null?void 0:c.x)||m.y!==(c==null?void 0:c.y)){const f=i.get(t);f&&o==="start"&&(s!=null&&s.control.viewContainerManager)?f[0]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId):f&&o==="end"&&(s!=null&&s.control.viewContainerManager)&&(f[1]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId)),F.emitMethod(U.MainEngine,S.SetPoint,{workId:O,pointMap:i,workState:C.Doing,viewId:s==null?void 0:s.viewId})}},50,{leading:!1}),y=ne((N,m)=>{if(N.preventDefault(),N.stopPropagation(),r(S.None),u(C.Done),m.x!==(c==null?void 0:c.x)||m.y!==(c==null?void 0:c.y)){l(m);const f=i.get(t);f&&o==="start"&&(s!=null&&s.control.viewContainerManager)?f[0]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId):f&&o==="end"&&(s!=null&&s.control.viewContainerManager)&&(f[1]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId)),F.emitMethod(U.MainEngine,S.SetPoint,{workId:O,pointMap:i,workState:C.Done,viewId:s==null?void 0:s.viewId})}},100,{leading:!1});return h.createElement(ot,{position:c,onStart:M,onDrag:g,onStop:y},h.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn"},h.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn-inner",style:{borderColor:a==null?void 0:a.selectorColor}})))},Pf=n=>{const{className:t}=n,{floatBarData:e,maranger:i}=h.useContext(ae),[o,r]=h.useState(),[s,a]=h.useState(),[c,l]=h.useState(new Map);h.useEffect(()=>{const M=[];if(i&&(e!=null&&e.points)){const g=i.viewId;if(i.control.viewContainerManager.getView(g))for(const N of e.points){const m=i.control.viewContainerManager.transformToOriginPoint(N,g);M.push(m)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}M[0]&&r({x:M[0][0],y:M[0][1]}),M[1]&&a({x:M[1][0],y:M[1][1]})},[i,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const d=h.useMemo(()=>o&&(e!=null&&e.selectIds)?h.createElement(_i,{pos:o,type:"start",id:e.selectIds[0],pointMap:c}):null,[o,e==null?void 0:e.selectIds,c]),u=h.useMemo(()=>s&&(e!=null&&e.selectIds)?h.createElement(_i,{pos:s,type:"end",id:e.selectIds[0],pointMap:c}):null,[s,e==null?void 0:e.selectIds,c]);return h.createElement("div",{className:`${t}`},d,u)},ae=h.createContext({maranger:void 0,floatBarColors:[],floatBarData:void 0,zIndex:-1,dpr:1,position:void 0,angle:0,operationType:S.None,scale:[1,1],setPosition:()=>{},setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class si extends h.Component{constructor(e){var i;super(e);p(this,"setPosition",e=>{this.setState({position:e})});p(this,"setAngle",e=>{this.setState({angle:e})});p(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,zIndex:-1,dpr:1,position:void 0,angle:0,operationType:S.None,scale:[1,1],editors:this.editors,activeTextId:(i=this.props.maranger.control.textEditorManager)==null?void 0:i.activeId}}get editors(){return oe(this.props.maranger.control.textEditorManager.filterEditor(this.props.maranger.viewId))}componentDidMount(){this.props.maranger.vDom=this,this.props.maranger.mountView(),this.setState({dpr:this.props.maranger.dpr})}componentWillUnmount(){}showFloatBar(e,i){const o=e&&i&&{...this.state.floatBarData,...i}||void 0;this.setState({showFloatBar:e,floatBarData:o,position:o&&{x:o.x,y:o.y},angle:0}),o&&this.props.refs.floatBarCanvasRef.current&&(o.canvasHeight&&o.canvasWidth?(this.props.refs.floatBarCanvasRef.current.width=o.canvasWidth*this.state.dpr,this.props.refs.floatBarCanvasRef.current.height=o.canvasHeight*this.state.dpr,this.props.refs.floatBarCanvasRef.current.style.width=o.canvasWidth+"px",this.props.refs.floatBarCanvasRef.current.style.height=o.canvasHeight+"px"):(this.props.refs.floatBarCanvasRef.current.width=o.w*this.state.dpr,this.props.refs.floatBarCanvasRef.current.height=o.h*this.state.dpr,this.props.refs.floatBarCanvasRef.current.style.width="100%",this.props.refs.floatBarCanvasRef.current.style.height="100%"))}setActiveTextEditor(e){this.setState({activeTextId:e,editors:this.editors})}setFloatZIndex(e){this.setState({zIndex:e})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var i,o,r,s,a,c,l,d,u,M,g,y,N;const e=!!((o=(i=this.props.maranger.control)==null?void 0:i.room)!=null&&o.floatBarOptions);return h.createElement(h.Fragment,null,h.createElement("div",{className:me.Container,onMouseDown:m=>{m.preventDefault(),m.stopPropagation()},onTouchStart:m=>{m.stopPropagation()},onMouseMove:m=>{this.props.maranger.cursorMouseMove(m)}},h.createElement("div",{className:me.CanvasBox},h.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef}),h.createElement("canvas",{id:"serviceCanvas",className:me.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef}),h.createElement("canvas",{id:"localCanvas",className:me.FloatCanvas,ref:this.props.refs.canvasFloatRef})),h.createElement(ae.Provider,{value:{maranger:this.props.maranger,floatBarColors:e&&((a=(s=(r=this.props.maranger.control)==null?void 0:r.room)==null?void 0:s.floatBarOptions)==null?void 0:a.colors)||[],floatBarData:this.state.floatBarData,zIndex:this.state.zIndex,dpr:this.state.dpr,position:this.state.position,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,setPosition:this.setPosition.bind(this),setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&h.createElement(Sf,{className:me.FloatBar,ref:this.props.refs.floatBarCanvasRef,editors:this.state.editors,activeTextId:this.state.activeTextId})||null,((c=this.state.editors)==null?void 0:c.size)&&h.createElement(wf,{className:me.TextEditorContainer,showFloatBtns:e,manager:this.props.maranger,selectIds:((l=this.state.floatBarData)==null?void 0:l.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null,((d=this.state.floatBarData)==null?void 0:d.canRotate)&&((M=(u=this.state.floatBarData)==null?void 0:u.selectIds)==null?void 0:M.length)===1&&(this.state.operationType===S.None||this.state.operationType===S.RotateNode)&&h.createElement(xf,{className:me.RotateBtn})||null,(((g=this.state.floatBarData)==null?void 0:g.scaleType)===fe.all||((y=this.state.floatBarData)==null?void 0:y.scaleType)===fe.proportional)&&this.state.showFloatBar&&(this.state.operationType===S.None||this.state.operationType===S.ScaleNode)&&h.createElement(Yf,{className:me.ResizeBtn})||null,((N=this.state.floatBarData)==null?void 0:N.scaleType)===fe.both&&this.state.showFloatBar&&(this.state.operationType===S.None||this.state.operationType===S.SetPoint)&&h.createElement(Pf,{className:me.ResizeTowBox})||null,this.state.showFloatBar&&e&&h.createElement(Df,{className:me.FloatBarBtn})||null),h.createElement(Of,{className:me.CursorBox,manager:this.props.maranger})))}}class ut extends ve{constructor(e,i){super(e,i);p(this,"width",1e3);p(this,"height",1e3);p(this,"dpr",1);p(this,"vDom");p(this,"eventTragetElement");p(this,"canvasServiceFloatRef",h.createRef());p(this,"canvasFloatRef",h.createRef());p(this,"canvasBgRef",h.createRef());p(this,"floatBarRef",h.createRef());p(this,"floatBarCanvasRef",h.createRef());p(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&this.canvasBgRef.current&&(this.dpr=ii(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=i,this.canvasBgRef.current.style.width=`${e}px`,this.canvasBgRef.current.style.height=`${i}px`,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.style.width=`${e}px`,this.canvasFloatRef.current.style.height=`${i}px`,this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.style.width=`${e}px`,this.canvasServiceFloatRef.current.style.height=`${i}px`,this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const i=e.querySelectorAll(".teaching-aids-plugin-main-view-displayer");for(const o of i)o.remove()}}}createMainViewDisplayer(e){const i=document.createElement("div");return i.className="teaching-aids-plugin-main-view-displayer",e.appendChild(i),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Qt.render(h.createElement(si,{viewId:this.viewId,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,floatBarCanvasRef:this.floatBarCanvasRef}}),i),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Rf extends OM{constructor(e,i,o){super(e,i,o);p(this,"dpr",1);p(this,"width",1e3);p(this,"height",1e3);p(this,"vDom");p(this,"eventTragetElement");p(this,"canvasServiceFloatRef",h.createRef());p(this,"canvasFloatRef",h.createRef());p(this,"canvasBgRef",h.createRef());p(this,"floatBarRef",h.createRef());p(this,"floatBarCanvasRef",h.createRef());p(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement&&this.canvasBgRef.current){this.dpr=ii(this.canvasBgRef.current.getContext("2d"));const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&(this.width=e,this.height=i,this.canvasBgRef.current.style.width=`${e}px`,this.canvasBgRef.current.style.height=`${i}px`,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.style.width=`${e}px`,this.canvasFloatRef.current.style.height=`${i}px`,this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.style.width=`${e}px`,this.canvasServiceFloatRef.current.style.height=`${i}px`,this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr))}}createAppViewDisplayer(e,i){const o=document.createElement("div");return o.className="teaching-aids-plugin-app-view-displayer",i.appendChild(o),this.eventTragetElement=i.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Qt.render(h.createElement(si,{viewId:e,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,floatBarCanvasRef:this.floatBarCanvasRef}}),o),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class ze extends it{constructor(e){super(e);p(this,"focuedViewId");p(this,"focuedView");p(this,"control");p(this,"tmpFocusedViewId");p(this,"checkScaleTimer");p(this,"onMainViewRelease",e=>{this.control.textEditorManager.clear(ut.viewId,!0),console.log("onMainViewRelease",e),this.onMainViewMounted(e);const i=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(i),this.control.clearSnapshootData()});p(this,"onMainViewMounted",e=>{var M;const i=e.divElement;if(!i||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const g=i.getElementsByClassName("teaching-aids-plugin-main-view-displayer");for(const y of g)y.remove();(M=this.control.worker)==null||M.destroyViewWorker(this.mainView.id,!0),this.mainView=void 0}const r=new ut(this.control,Ne.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,l={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...ze.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...ze.defaultLayerOpt,width:s,height:a},cameraOpt:{...ze.defaultCameraOpt,width:s,height:a}},{scale:d,...u}=e.camera;l.cameraOpt={...l.cameraOpt,...u,scale:d===1/0?1:d},this.focuedViewId=ut.viewId,this.createMianView({id:ut.viewId,container:i,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.focuedView=this.mainView,r.createMainViewDisplayer(i),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});p(this,"onMainViewSizeUpdated",async()=>{Promise.resolve().then(()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.size,i=this.mainView.cameraOpt;i&&(this.mainView.displayer.updateSize(),this.mainView.cameraOpt={...i,...e})}})});p(this,"onMainViewCameraUpdated",async()=>{Promise.resolve().then(()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera,i=this.mainView.cameraOpt;if(i){const o=e.scale===1/0?1:e.scale,r=e.centerX||0,s=e.centerY||0;this.mainView.cameraOpt={...i,scale:o,centerX:r,centerY:s},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 a,c;(c=(a=this.mainView)==null?void 0:a.viewData)==null||c.moveCamera({scale:o,centerX:r,centerY:s,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}})});p(this,"onAppViewMounted",e=>{var M;const{appId:i,view:o}=e,r=o.divElement;if(!r||!o.focusScenePath)return;const s=this.appViews.get(i);if(s&&s.displayer){const g=r.getElementsByClassName("teaching-aids-plugin-app-view-displayer");for(const y of g)y.remove();this.destroyAppView(e.appId,!0),(M=this.control.worker)==null||M.destroyViewWorker(i,!0)}const a=new Rf(i,this.control,Ne.InternalMsgEmitter),c=o.size.width||a.width,l=o.size.height||a.height,u={dpr:a.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...ze.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...ze.defaultLayerOpt,width:c,height:l},cameraOpt:{...ze.defaultCameraOpt,...o.camera,width:c,height:l}};if(this.createAppView({id:i,container:r,displayer:a,cameraOpt:u.cameraOpt,focusScenePath:o.focusScenePath,viewData:o}),a.createAppViewDisplayer(i,r),o.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,i)),o.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,i)),o.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===i){const g=this.control.worker.getLocalWorkViewId();g&&g!==i?this.setFocuedViewId(g):this.setFocuedViewId(i),this.tmpFocusedViewId=void 0}});p(this,"onAppViewSizeUpdated",async e=>{Promise.resolve().then(()=>{const i=this.appViews.get(e);if(i&&i.viewData){const o=i.viewData.size,r=i.cameraOpt;r&&(i.displayer.updateSize(),i.cameraOpt={...r,...o})}})});p(this,"onAppViewCameraUpdated",async e=>{Promise.resolve().then(()=>{const i=this.appViews.get(e);if(i&&i.viewData){const o=i.viewData.camera,r=i.cameraOpt;if(r){const s=o.scale===1/0?1:o.scale,a=o.centerX||0,c=o.centerY||0;i.cameraOpt={...r,scale:s,centerX:a,centerY:c}}}})});this.control=e.control}mountView(e){var o,r;const i=this.getView(e);if(i){const{width:s,height:a,dpr:c}=i.displayer,l={dpr:c,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...ze.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...ze.defaultLayerOpt,width:s,height:a},cameraOpt:{...ze.defaultCameraOpt,width:s,height:a}};if(i.viewData){const{scale:d,...u}=i.viewData.camera;l.cameraOpt={...l.cameraOpt,...u,scale:d===1/0?1:d}}e===((o=this.mainView)==null?void 0:o.id)&&this.control.activeWorker(),(r=this.control.worker)==null||r.createViewWorker(e,l),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath)}}listenerWindowManager(e){e.emitter.on("focusedChange",i=>{const o=i||ve.viewId;if(this.focuedViewId!==o)if(this.getView(o)){const s=this.control.worker.getLocalWorkViewId();s&&s!==o?this.setFocuedViewId(s):this.setFocuedViewId(o)}else this.tmpFocusedViewId=o}),e.emitter.on("mainViewScenePathChange",i=>{console.log("ContainerManager mainViewScenePathChange",i),this.control.onSceneChange(i,"mainView")}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",i=>{this.appViews.get(i.appId)&&(this.destroyAppView(i.appId),this.control.worker.destroyViewWorker(i.appId))}),e.emitter.on("onAppScenePathChange",i=>{const{appId:o,view:r}=i;this.control.onSceneChange(r.focusScenePath,o)})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class ht extends Ne{constructor(e){super(e);p(this,"windowManager");p(this,"viewContainerManager");const i={control:this,internalMsgEmitter:Ne.InternalMsgEmitter};this.viewContainerManager=new ze(i)}init(){}destroy(){var e,i,o,r;this.roomMember.destroy(),(e=this.collector)==null||e.destroy(),(i=this.worker)==null||i.destroy(),(o=this.viewContainerManager)==null||o.destroy(),(r=this.cursor)==null||r.destroy()}activePlugin(){this.collector&&(this.collector.addStorageStateListener(e=>{var i,o;if((i=this.collector)!=null&&i.storage&&Object.keys(this.collector.storage).length===0){(o=this.worker)==null||o.clearViewScenePath("mainView",!0);return}if(e){const r=new Map;Object.keys(e).forEach(s=>{var c;const a=e[s];if(a){const l=a.viewId,d=r.get(l)||new Set;d.add(s),r.set(l,d),(c=this.worker)==null||c.onServiceDerive(s,a)}});for(const[s,a]of r.entries())Ne.InternalMsgEmitter.emit("excludeIds",[...a],s)}}),this.room&&this.roomMember.onUidChangeHook(e=>{var i,o,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(c=>{var l;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&this.collector.serviceStorage[c.id][c.focusScenePath]){const d=Object.keys(this.collector.serviceStorage[c.id][c.focusScenePath]).filter(u=>{var M;return(M=this.collector)==null?void 0:M.isSelector(u)}).map(u=>({viewId:c.id,scenePath:c.focusScenePath,key:u}));d.length&&a.push(...d)}}),a.forEach(({key:c,viewId:l,scenePath:d})=>{var M,g;const u=(M=this.collector)==null?void 0:M.getUidFromKey(c);u&&!e.online.includes(u)&&((g=this.collector)==null||g.updateValue(c,void 0,{isAfterUpdate:!0,viewId:l,scenePath:d}))})}(r=(o=this.cursor)==null?void 0:o.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(c=>{var l,d;e.online.includes(c)||(d=(l=this.cursor)==null?void 0:l.eventCollector)==null||d.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath)}))}activeWorker(){this.worker.init()}setWindowManager(e){var i,o,r,s,a;this.windowManager=e,(o=(i=this.windowManager)==null?void 0:i.mainView)!=null&&o.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(s=(r=this.windowManager.appManager)==null?void 0:r.viewManager)==null?void 0:s.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const R=class R extends V.InvisiblePlugin{constructor(){super(...arguments);p(this,"onPhaseChanged",e=>{var i;e===V.RoomPhase.Reconnecting&&((i=R.currentManager)==null||i.setSnapshootData())});p(this,"updateRoomWritable",()=>{var e;(e=R.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});p(this,"roomStateChangeListener",async e=>{var i,o;V.isRoom(this.displayer)&&!this.displayer.isWritable||(e.memberState&&((i=R.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((o=R.currentManager)==null||o.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const o=e.displayer,r=o.callbacks.on,s=o.callbacks.off,a=o.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState,d=o.setMemberState,u={displayer:o,windowManager:e,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var m;R.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const y=(this.windowManager&&this.windowManager.mainView||this.displayer).getBoundingRect(g),N=await((m=R.currentManager)==null?void 0:m.getBoundingRect(g));return!y.width||!y.height?N:Lo(y,N)},screenshotToCanvasAsync:async function(g,y,N,m,f,w){var A;R.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let I=N,z=m,T=f.scale;I>this.maxScreenshotWidth&&(T=this.maxScreenshotWidth/I*T,I=this.maxScreenshotWidth),z>this.maxScreenshotHeight&&(T=Math.min(this.maxScreenshotHeight/z*T,T),z=this.maxScreenshotHeight),f.scale=T;const j=document.createElement("canvas"),x=j.getContext("2d");j.width=I*(w||1),j.height=z*(w||1),x&&((this.windowManager&&this.windowManager.mainView||this.displayer).screenshotToCanvas(x,y,I,z,f,w),g.drawImage(j,Math.floor((N-I)/2),Math.floor((m-z)/2),I*(w||1),z*(w||1),0,0,I,z),j.remove()),R.currentManager&&await((A=R.currentManager)==null?void 0:A.screenshotToCanvas(g,y,I,z,f,Math.floor((N-I)/2),Math.floor((m-z)/2)))},scenePreviewAsync:async function(g,y,N,m,f){R.logger.info("[ApplianceMultiPlugin] scenePreview"),(this.windowManager&&this.windowManager.mainView||this.displayer).scenePreview(g,y,N,m,f);const w=document.createElement("img");w.style.position="absolute",w.style.top="0px",w.style.left="0px",w.style.width="100%",w.style.height="100%",w.style.pointerEvents="none",y.append(w),getComputedStyle(y).position||(y.style.position="relative"),R.currentManager&&await R.currentManager.scenePreview(g,w)},_callbacksOn:function(g,y){R.logger.info(`[ApplianceMultiPlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?ht.InternalMsgEmitter.on(g,y):r.call(o.callbacks,g,y)},_callbacksOnce:function(g,y){R.logger.info(`[ApplianceMultiPlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?ht.InternalMsgEmitter.on(g,y):a.call(o.callbacks,g,y)},_callbacksOff:function(g,y){R.logger.info(`[ApplianceMultiPlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?ht.InternalMsgEmitter.off(g,y):s.call(o.callbacks,g,y)},undo:function(){return R.logger.info("[ApplianceMultiPlugin] undo"),R.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?R.currentManager.viewContainerManager.undo():0},redo:function(){return R.logger.info("[ApplianceMultiPlugin] redo"),R.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?R.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){R.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&(R.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(g){R.logger.info("[ApplianceMultiPlugin] insertImage"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&R.currentManager.worker.insertImage(g)},lockImage:function(g,y){R.logger.info("[ApplianceMultiPlugin] lockImage"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&R.currentManager.worker.lockImage(g,y)},completeImageUpload:function(g,y){R.logger.info("[ApplianceMultiPlugin] completeImageUpload"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&R.currentManager.worker.completeImageUpload(g,y)},getImagesInformation:function(g){return R.logger.info("[ApplianceMultiPlugin] completeImageUpload"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable?R.currentManager.worker.getImagesInformation(g):[]},callbacks:()=>(R.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...o.callbacks,on:u._callbacksOn.bind(u),once:u._callbacksOnce.bind(u),off:u._callbacksOff.bind(u)}),destroy(){R.currentManager&&(R.logger.info("[ApplianceMultiPlugin] destroy"),R.currentManager.destroy(),R.currentManager=void 0)},setMemberState(g){if(R.logger.info("[ApplianceMultiPlugin] setMemberState"),Object.keys(g).includes("currentApplianceName")&&(g.currentApplianceName&&g.currentApplianceName===H.laserPen?(g.currentApplianceName=H.pencil,g.useLaserPen=!0):g.currentApplianceName&&g.currentApplianceName===H.pencil&&(g.useLaserPen=!1)),u._injectTargetObject===e.mainView){l.call(u._injectTargetObject,g);return}d.call(o,g)}};i!=null&&i.logger&&(R.logger=i.logger),i.options&&(R.options=i.options);let M=o.getInvisiblePlugin(R.kind);return o&&M&&R.createCurrentManager(e,R.options,M),!M&&V.isRoom(o)&&(M=await R.createApplianceMultiPlugin(o,R.kind)),M&&R.currentManager&&(R.currentManager.bindPlugin(M),M.init(o)),{...u,callbacks:u.callbacks(),injectMethodToObject:function(g,y){if(R.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${y}`),typeof g[y]=="function"||typeof g[y]>"u"){y==="setMemberState"&&(u._injectTargetObject=g),g[y]=u[y].bind(u);return}y==="callbacks"&&(g.callbacks.on=u._callbacksOn.bind(u),g.callbacks.off=u._callbacksOff.bind(u),g.callbacks.once=u._callbacksOnce.bind(u))}}}static onCreate(e){e&&R.currentManager&&(R.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,i){await e.createInvisiblePlugin(R,{});let o=e.getInvisiblePlugin(i);return o||(o=await R.createApplianceMultiPlugin(e,i)),o}get isReplay(){return V.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;if(V.isRoom(e)){const r=e.state;(i=R.currentManager)==null||i.onMemberChange(r.memberState),(o=R.currentManager)==null||o.onRoomMembersChange(r.roomMembers)}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;R.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=R.currentManager)==null||e.destroy(),R.currentManager=void 0}};p(R,"kind","appliance-multi-plugin"),p(R,"currentManager"),p(R,"logger",{info:console.log,warn:console.warn,error:console.error}),p(R,"options",{syncOpt:{interval:300},canvasOpt:{contextType:nt.Canvas2d},cdn:{fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.1/dist/fullWorker.js",subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.1/dist/subWorker.js"}}),p(R,"createCurrentManager",(e,i,o)=>{if(R.currentManager&&R.currentManager.destroy(),i&&e){const r={plugin:o,displayer:e.displayer,options:i},s=new ht(r);R.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),R.currentManager=s}});let Ut=R;class Bf extends ve{constructor(e,i){super(e,i);p(this,"width",1e3);p(this,"height",1e3);p(this,"dpr",1);p(this,"vDom");p(this,"viewId","mainView");p(this,"eventTragetElement");p(this,"canvasServiceFloatRef",h.createRef());p(this,"canvasFloatRef",h.createRef());p(this,"canvasBgRef",h.createRef());p(this,"floatBarRef",h.createRef());p(this,"floatBarCanvasRef",h.createRef());p(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,i=this.eventTragetElement.offsetHeight;e&&i&&this.canvasBgRef.current&&(this.dpr=ii(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=i,this.canvasBgRef.current.style.width=`${e}px`,this.canvasBgRef.current.style.height=`${i}px`,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.style.width=`${e}px`,this.canvasFloatRef.current.style.height=`${i}px`,this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.style.width=`${e}px`,this.canvasServiceFloatRef.current.style.height=`${i}px`,this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",Qt.render(h.createElement(si,{viewId:this.viewId,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,floatBarCanvasRef:this.floatBarCanvasRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Ye extends it{constructor(e){super(e);p(this,"focuedViewId");p(this,"control");p(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new Bf(this.control,Ne.InternalMsgEmitter);this.focuedViewId=ve.viewId;const{width:i,height:o,dpr:r}=e,s={dpr:r,originalPoint:[i/2,o/2],offscreenCanvasOpt:{...Ye.defaultScreenCanvasOpt,width:i,height:o},layerOpt:{...Ye.defaultLayerOpt,width:i,height:o},cameraOpt:{...Ye.defaultCameraOpt,width:i,height:o}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:c,...l}=a.camera;s.cameraOpt={...s.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:ve.viewId,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:s.cameraOpt,viewData:a}),this.focuedView=this.mainView,e.createMainViewDisplayer(this.control.divMainView)}}mountView(e){var o;const i=this.getView(e);if(i){const{width:r,height:s,dpr:a}=i.displayer,c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Ye.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Ye.defaultLayerOpt,width:r,height:s},cameraOpt:{...Ye.defaultCameraOpt,width:r,height:s}};if(i.viewData){const{scale:l,...d}=i.viewData.camera;c.cameraOpt={...c.cameraOpt,...d,scale:l===1/0?1:l}}this.control.worker.isActive||this.control.activeWorker(),(o=this.control.worker)==null||o.createViewWorker(e,c),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath)}}}class De extends Ne{constructor(e){super(e);p(this,"viewContainerManager");p(this,"divMainView");p(this,"onCameraChange",ne(e=>{this.viewContainerManager.setFocuedViewCameraOpt(e)},20,{leading:!1}));const i={control:this,internalMsgEmitter:De.InternalMsgEmitter};this.viewContainerManager=new Ye(i)}init(){De.InternalMsgEmitter.on(U.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 i,o;if((i=this.collector)!=null&&i.storage&&Object.keys(this.collector.storage).length===0){(o=this.worker)==null||o.clearViewScenePath("mainView",!0);return}if(e){const r=new Map;Object.keys(e).forEach(s=>{var c;const a=e[s];if(a){const l=a.viewId,d=r.get(l)||new Set;d.add(s),r.set(l,d),(c=this.worker)==null||c.onServiceDerive(s,a)}});for(const[s,a]of r.entries())De.InternalMsgEmitter.emit("excludeIds",[...a],s)}}),this.room&&(this.roomMember.onUidChangeHook(e=>{var i,o,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(c=>{var l,d,u;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&((d=this.collector)!=null&&d.serviceStorage[c.id][c.focusScenePath])){const M=Object.keys((u=this.collector)==null?void 0:u.serviceStorage[c.id][c.focusScenePath]).filter(g=>{var y;return(y=this.collector)==null?void 0:y.isSelector(g)}).map(g=>({viewId:c.id,scenePath:c.focusScenePath,key:g}));M.length&&a.push(...M)}}),a.forEach(({key:c,viewId:l,scenePath:d})=>{var M,g;const u=(M=this.collector)==null?void 0:M.getUidFromKey(c);u&&!e.online.includes(u)&&((g=this.collector)==null||g.updateValue(c,void 0,{isAfterUpdate:!0,viewId:l,scenePath:d}))})}(r=(o=this.cursor)==null?void 0:o.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(c=>{var l,d;e.online.includes(c)||(d=(l=this.cursor)==null?void 0:l.eventCollector)==null||d.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath)})))}activeWorker(){this.worker.init()}}const E=class E extends V.InvisiblePlugin{constructor(){super(...arguments);p(this,"updateRoomWritable",()=>{var e;(e=E.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});p(this,"roomStateChangeListener",async e=>{var i,o;E.currentManager instanceof De&&(e.cameraState&&E.currentManager.onCameraChange(e.cameraState),e.sceneState&&E.currentManager.onSceneChange(e.sceneState.scenePath,"mainView")),!(V.isRoom(this.displayer)&&!this.displayer.isWritable)&&(e.memberState&&((i=E.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((o=E.currentManager)==null||o.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const o=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene,c=e.setMemberState,l={displayer:e,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(u){var y;E.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const M=this.displayer.getBoundingRect(u),g=await((y=E.currentManager)==null?void 0:y.getBoundingRect(u));return!M.width||!M.height?g:Lo(M,g)},screenshotToCanvasAsync:async function(u,M,g,y,N,m){var j;E.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let f=g,w=y,I=N.scale;f>this.maxScreenshotWidth&&(I=this.maxScreenshotWidth/f*I,f=this.maxScreenshotWidth),w>this.maxScreenshotHeight&&(I=Math.min(this.maxScreenshotHeight/w*I,I),w=this.maxScreenshotHeight),N.scale=I;const z=document.createElement("canvas"),T=z.getContext("2d");z.width=f*(m||1),z.height=w*(m||1),T&&(this.displayer.screenshotToCanvas(T,M,f,w,N,m),u.drawImage(z,Math.floor((g-f)/2),Math.floor((y-w)/2),f*(m||1),w*(m||1),0,0,f,w),z.remove()),E.currentManager&&await((j=E.currentManager)==null?void 0:j.screenshotToCanvas(u,M,f,w,N,Math.floor((g-f)/2),Math.floor((y-w)/2)))},scenePreviewAsync:async function(u,M,g,y,N){E.logger.info("[ApplianceSinglePlugin] scenePreview"),this.displayer.scenePreview(u,M,g,y,N);const m=document.createElement("img");m.style.position="absolute",m.style.top="0px",m.style.left="0px",m.style.width="100%",m.style.height="100%",m.style.pointerEvents="none",M.append(m),getComputedStyle(M).position||(M.style.position="relative"),E.currentManager&&await E.currentManager.scenePreview(u,m)},_callbacksOn:function(u,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${u}`),(u==="onCanUndoStepsUpdate"||u==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?De.InternalMsgEmitter.on(u,M):o.call(e.callbacks,u,M)},_callbacksOnce:function(u,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${u}`),(u==="onCanUndoStepsUpdate"||u==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?De.InternalMsgEmitter.on(u,M):s.call(e.callbacks,u,M)},_callbacksOff:function(u,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${u}`),(u==="onCanUndoStepsUpdate"||u==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?De.InternalMsgEmitter.off(u,M):r.call(e.callbacks,u,M)},undo:function(){return E.logger.info("[ApplianceSinglePlugin] undo"),E.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?E.currentManager.viewContainerManager.undo():0},redo:function(){return E.logger.info("[ApplianceSinglePlugin] redo"),E.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?E.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(u){E.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&(E.currentManager.cleanCurrentScene(),a.call(e,u))},insertImage:function(u){E.logger.info("[ApplianceSinglePlugin] insertImage"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&E.currentManager.worker.insertImage(u)},lockImage:function(u,M){E.logger.info("[ApplianceSinglePlugin] lockImage"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&E.currentManager.worker.lockImage(u,M)},completeImageUpload:function(u,M){E.logger.info("[ApplianceSinglePlugin] completeImageUpload"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&E.currentManager.worker.completeImageUpload(u,M)},getImagesInformation:function(u){return E.logger.info("[ApplianceSinglePlugin] completeImageUpload"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable?E.currentManager.worker.getImagesInformation(u):[]},callbacks:()=>({...e.callbacks,on:l._callbacksOn.bind(l),once:l._callbacksOnce.bind(l),off:l._callbacksOff.bind(l)}),destroy(){E.currentManager&&(E.logger.info("[ApplianceSinglePlugin] destroy"),E.currentManager.destroy(),E.currentManager=void 0,E.cursorAdapter=void 0)},setMemberState(u){E.logger.info("[ApplianceSinglePlugin] setMemberState"),Object.keys(u).includes("currentApplianceName")&&(u.currentApplianceName&&u.currentApplianceName===H.laserPen&&(u.currentApplianceName=H.pencil,u.useLaserPen=!0),u.currentApplianceName&&u.currentApplianceName===H.pencil&&(u.useLaserPen=!1)),c(u)}};i!=null&&i.logger&&(E.logger=i.logger),i.options&&(E.options=i.options);let d=e.getInvisiblePlugin(E.kind);return e&&d&&E.createCurrentManager(e,E.options,d),!d&&V.isRoom(e)&&(d=await E.createAppliancePlugin(e,E.kind)),d&&E.currentManager&&(E.currentManager.bindPlugin(d),d.init(e)),i!=null&&i.cursorAdapter&&(E.cursorAdapter=i.cursorAdapter),E.effectInstance(),{...l,callbacks:l.callbacks(),injectMethodToObject:function(u,M){if(E.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${M}`),typeof u[M]=="function"||typeof u[M]>"u"){u[M]=l[M].bind(l);return}M==="callbacks"&&(u.callbacks.on=l._callbacksOn.bind(l),u.callbacks.off=l._callbacksOff.bind(l),u.callbacks.once=l._callbacksOnce.bind(l))}}}static onCreate(e){e&&E.currentManager&&(E.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,i){await e.createInvisiblePlugin(E,{});let o=e.getInvisiblePlugin(i);return o||(o=await E.createAppliancePlugin(e,i)),o}static effectInstance(){if(E.cursorAdapter){const e=E.cursorAdapter.onAddedCursor;E.cursorAdapter.onAddedCursor=function(i){i.onCursorMemberChanged=o=>{try{o.appliance===H.pencil||o.appliance===H.shape||o.appliance===H.text||o.appliance===H.arrow||o.appliance===H.straight||o.appliance===H.rectangle||o.appliance===H.ellipse?i!=null&&i.divElement&&(i.divElement.style.display="none"):i!=null&&i.divElement&&(i.divElement.style.display="block")}catch{}},e.call(E.cursorAdapter,i)}}}get isReplay(){return V.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i;if(V.isRoom(e)){const o=e.state;o!=null&&o.memberState&&((i=E.currentManager)==null||i.onMemberChange(o.memberState))}this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable)}destroy(){var e;E.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=E.currentManager)==null||e.destroy(),E.currentManager=void 0,E.cursorAdapter=void 0}};p(E,"kind","teaching-aids-single-plugin"),p(E,"cursorAdapter"),p(E,"currentManager"),p(E,"logger",{info:console.log,warn:console.warn,error:console.error}),p(E,"options",{syncOpt:{interval:300},canvasOpt:{contextType:nt.Canvas2d},cdn:{fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.1/dist/fullWorker.js",subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.1/dist/subWorker.js"}}),p(E,"createCurrentManager",(e,i,o)=>{E.currentManager&&E.currentManager.destroy();const r={plugin:o,displayer:e,options:i},s=new De(r);s.init(),E.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),E.currentManager=s});let $t=E;const We=class We extends h.Component{constructor(){super(...arguments);p(this,"mainViewRef",null)}componentDidMount(){We.emiter||(We.emiter=De.InternalMsgEmitter),We.emiter.emit(U.BindMainView,this.mainViewRef)}componentWillUnmount(){We.emiter.emit(U.DisplayState,Ht.unmounted)}render(){return h.createElement(h.Fragment,null,this.props.children,h.createElement("div",{className:"teaching-aids-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};p(We,"emiter");let Ft=We;exports.ActiveContainerType=to;exports.ApplianceMultiPlugin=Ut;exports.ApplianceNames=H;exports.ApplianceSigleWrapper=Ft;exports.ApplianceSinglePlugin=$t;exports.DisplayStateEnum=Ht;exports.ECanvasContextType=nt;exports.ECanvasShowType=Se;exports.EDataType=Z;exports.EPostMessageType=k;exports.EScaleType=fe;exports.EStrokeType=gt;exports.EToolsKey=v;exports.ElayerType=Ue;exports.EmitEventType=S;exports.EventMessageType=$e;exports.EvevtWorkState=C;exports.InternalMsgEmitterType=U;exports.ShapeType=Te;
1
+ "use strict";var Ro=Object.defineProperty;var Bo=(n,t,e)=>t in n?Ro(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var p=(n,t,e)=>(Bo(n,typeof t!="symbol"?t+"":t,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("white-web-sdk");require("spritejs");const Xi=require("lz-string");require("lineclip");const eo=require("eventemitter2"),ci=require("lodash"),Qt=require("react-dom"),h=require("react"),ot=require("react-draggable"),Wo=require("re-resizable");var H=(n=>(n.selector="selector",n.clicker="clicker",n.laserPointer="laserPointer",n.pencil="pencil",n.rectangle="rectangle",n.ellipse="ellipse",n.shape="shape",n.eraser="eraser",n.pencilEraser="pencilEraser",n.text="text",n.straight="straight",n.arrow="arrow",n.hand="hand",n.laserPen="laserPen",n))(H||{}),Ht=(n=>(n[n.pedding=0]="pedding",n[n.mounted=1]="mounted",n[n.update=2]="update",n[n.unmounted=3]="unmounted",n))(Ht||{}),dt=(n=>(n.Normal="Normal",n.Stroke="Stroke",n.Dotted="Dotted",n.LongDotted="LongDotted",n))(dt||{}),Te=(n=>(n.Triangle="triangle",n.Rhombus="rhombus",n.Pentagram="pentagram",n.SpeechBalloon="speechBalloon",n.Star="star",n.Polygon="polygon",n))(Te||{}),S=(n=>(n.None="None",n.ShowFloatBar="ShowFloatBar",n.ZIndexFloatBar="ZIndexFloatBar",n.DeleteNode="DeleteNode",n.CopyNode="CopyNode",n.ZIndexActive="ZIndexActive",n.ZIndexNode="ZIndexNode",n.RotateNode="RotateNode",n.SetColorNode="SetColorNode",n.TranslateNode="TranslateNode",n.ScaleNode="ScaleNode",n.OriginalEvent="OriginalEvent",n.CreateScene="CreateScene",n.ActiveCursor="ActiveCursor",n.MoveCursor="MoveCursor",n.CommandEditor="CommandEditor",n.SetEditorData="SetEditorData",n.SetFontStyle="SetFontStyle",n.SetPoint="SetPoint",n.SetLock="SetLock",n.SetShapeOpt="SetShapeOpt",n))(S||{}),U=(n=>(n.DisplayState="DisplayState",n.FloatBar="FloatBar",n.CanvasSelector="CanvasSelector",n.MainEngine="MainEngine",n.DisplayContainer="DisplayContainer",n.Cursor="Cursor",n.TextEditor="TextEditor",n.BindMainView="BindMainView",n.MountMainView="MountMainView",n.MountAppView="MountAppView",n))(U||{}),to=(n=>(n[n.MainView=0]="MainView",n[n.Plugin=1]="Plugin",n[n.Both=2]="Both",n))(to||{}),N=(n=>(n[n.Pencil=1]="Pencil",n[n.Eraser=2]="Eraser",n[n.Selector=3]="Selector",n[n.Clicker=4]="Clicker",n[n.Arrow=5]="Arrow",n[n.Hand=6]="Hand",n[n.LaserPen=7]="LaserPen",n[n.Text=8]="Text",n[n.Straight=9]="Straight",n[n.Rectangle=10]="Rectangle",n[n.Ellipse=11]="Ellipse",n[n.Star=12]="Star",n[n.Triangle=13]="Triangle",n[n.Rhombus=14]="Rhombus",n[n.Polygon=15]="Polygon",n[n.SpeechBalloon=16]="SpeechBalloon",n[n.Image=17]="Image",n))(N||{}),Z=(n=>(n[n.Local=1]="Local",n[n.Service=2]="Service",n[n.Worker=3]="Worker",n))(Z||{}),C=(n=>(n[n.Pending=0]="Pending",n[n.Start=1]="Start",n[n.Doing=2]="Doing",n[n.Done=3]="Done",n[n.Freeze=4]="Freeze",n[n.Unwritable=5]="Unwritable",n))(C||{}),L=(n=>(n[n.None=0]="None",n[n.Init=1]="Init",n[n.UpdateCamera=2]="UpdateCamera",n[n.UpdateTools=3]="UpdateTools",n[n.CreateWork=4]="CreateWork",n[n.DrawWork=5]="DrawWork",n[n.FullWork=6]="FullWork",n[n.UpdateNode=7]="UpdateNode",n[n.RemoveNode=8]="RemoveNode",n[n.Clear=9]="Clear",n[n.Select=10]="Select",n[n.Destroy=11]="Destroy",n[n.Snapshot=12]="Snapshot",n[n.BoundingBox=13]="BoundingBox",n[n.Cursor=14]="Cursor",n[n.TextUpdate=15]="TextUpdate",n[n.GetTextActive=16]="GetTextActive",n[n.TasksQueue=17]="TasksQueue",n[n.CursorHover=18]="CursorHover",n))(L||{}),It=(n=>(n.Webgl2="webgl2",n.Webgl="webgl",n.Canvas2d="2d",n))(It||{}),Se=(n=>(n[n.Float=1]="Float",n[n.Bg=2]="Bg",n[n.Selector=3]="Selector",n[n.ServiceFloat=4]="ServiceFloat",n[n.None=5]="None",n))(Se||{}),$e=(n=>(n[n.Cursor=1]="Cursor",n[n.TextCreate=2]="TextCreate",n))($e||{}),Ue=(n=>(n[n.Top=1]="Top",n[n.Bottom=2]="Bottom",n))(Ue||{}),fe=(n=>(n[n.none=1]="none",n[n.all=2]="all",n[n.both=3]="both",n[n.proportional=4]="proportional",n))(fe||{});const Uo={linear:n=>n,easeInQuad:n=>n*n,easeOutQuad:n=>n*(2-n),easeInOutQuad:n=>n<.5?2*n*n:-1+(4-2*n)*n,easeInCubic:n=>n*n*n,easeOutCubic:n=>--n*n*n+1,easeInOutCubic:n=>n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1,easeInQuart:n=>n*n*n*n,easeOutQuart:n=>1- --n*n*n*n,easeInOutQuart:n=>n<.5?8*n*n*n*n:1-8*--n*n*n*n,easeInQuint:n=>n*n*n*n*n,easeOutQuint:n=>1+--n*n*n*n*n,easeInOutQuint:n=>n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n,easeInSine:n=>1-Math.cos(n*Math.PI/2),easeOutSine:n=>Math.sin(n*Math.PI/2),easeInOutSine:n=>-(Math.cos(Math.PI*n)-1)/2,easeInExpo:n=>n<=0?0:Math.pow(2,10*n-10),easeOutExpo:n=>n>=1?1:1-Math.pow(2,-10*n),easeInOutExpo:n=>n<=0?0:n>=1?1:n<.5?Math.pow(2,20*n-10)/2:(2-Math.pow(2,-20*n+10))/2};class k{constructor(t=0,e=0,i=1){this.x=t,this.y=e,this.z=i}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,i=this.z){return this.x=t,this.y=e,this.z=i,this}setTo({x:t=0,y:e=0,z:i=1}){return this.x=t,this.y=e,this.z=i,this}rot(t){if(t===0)return this;const{x:e,y:i}=this,o=Math.sin(t),r=Math.cos(t);return this.x=e*r-i*o,this.y=e*o+i*r,this}rotWith(t,e){if(e===0)return this;const i=this.x-t.x,o=this.y-t.y,r=Math.sin(e),s=Math.cos(e);return this.x=t.x+(i*s-o*r),this.y=t.y+(i*r+o*s),this}clone(){const{x:t,y:e,z:i}=this;return new k(t,e,i)}sub(t){return this.x-=t.x,this.y-=t.y,this}subXY(t,e){return this.x-=t,this.y-=e,this}subScalar(t){return this.x-=t,this.y-=t,this}add(t){return this.x+=t.x,this.y+=t.y,this}addXY(t,e){return this.x+=t,this.y+=e,this}addScalar(t){return this.x+=t,this.y+=t,this}clamp(t,e){return this.x=Math.max(this.x,t),this.y=Math.max(this.y,t),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(t){return this.x/=t,this.y/=t,this}divV(t){return this.x/=t.x,this.y/=t.y,this}mul(t){return this.x*=t,this.y*=t,this}mulV(t){return this.x*=t.x,this.y*=t.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(t,e){const i=k.Tan(t,this);return this.add(i.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(t){return this.x=this.y*t.z-this.z*t.y,this.y=this.z*t.x-this.x*t.z,this}dpr(t){return k.Dpr(this,t)}cpr(t){return k.Cpr(this,t)}len2(){return k.Len2(this)}len(){return k.Len(this)}pry(t){return k.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return k.Uni(this)}tan(t){return k.Tan(this,t)}dist(t){return k.Dist(this,t)}distanceToLineSegment(t,e){return k.DistanceToLineSegment(t,e,this)}slope(t){return k.Slope(this,t)}snapToGrid(t){return this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this}angle(t){return k.Angle(this,t)}toAngle(){return k.ToAngle(this)}lrp(t,e){return this.x=this.x+(t.x-this.x)*e,this.y=this.y+(t.y-this.y)*e,this}equals(t,e){return k.Equals(this,t,e)}equalsXY(t,e){return k.EqualsXY(this,t,e)}norm(){const t=this.len();return this.x=t===0?0:this.x/t,this.y=t===0?0:this.y/t,this}toFixed(){return k.ToFixed(this)}toString(){return k.ToString(k.ToFixed(this))}toJson(){return k.ToJson(this)}toArray(){return k.ToArray(this)}static Add(t,e){return new k(t.x+e.x,t.y+e.y)}static AddXY(t,e,i){return new k(t.x+e,t.y+i)}static Sub(t,e){return new k(t.x-e.x,t.y-e.y)}static SubXY(t,e,i){return new k(t.x-e,t.y-i)}static AddScalar(t,e){return new k(t.x+e,t.y+e)}static SubScalar(t,e){return new k(t.x-e,t.y-e)}static Div(t,e){return new k(t.x/e,t.y/e)}static Mul(t,e){return new k(t.x*e,t.y*e)}static DivV(t,e){return new k(t.x/e.x,t.y/e.y)}static MulV(t,e){return new k(t.x*e.x,t.y*e.y)}static Neg(t){return new k(-t.x,-t.y)}static Per(t){return new k(t.y,-t.x)}static Dist2(t,e){return k.Sub(t,e).len2()}static Abs(t){return new k(Math.abs(t.x),Math.abs(t.y))}static Dist(t,e){return Math.hypot(t.y-e.y,t.x-e.x)}static Dpr(t,e){return t.x*e.x+t.y*e.y}static Cross(t,e){return new k(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z)}static Cpr(t,e){return t.x*e.y-e.x*t.y}static Len2(t){return t.x*t.x+t.y*t.y}static Len(t){return Math.hypot(t.x,t.y)}static Pry(t,e){return k.Dpr(t,e)/k.Len(e)}static Uni(t){return k.Div(t,k.Len(t))}static Tan(t,e){return k.Uni(k.Sub(t,e))}static Min(t,e){return new k(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new k(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new k().add(t)}static FromArray(t){return new k(t[0],t[1])}static Rot(t,e=0){const i=Math.sin(e),o=Math.cos(e);return new k(t.x*o-t.y*i,t.x*i+t.y*o)}static RotWith(t,e,i){const o=t.x-e.x,r=t.y-e.y,s=Math.sin(i),a=Math.cos(i);return new k(e.x+(o*a-r*s),e.y+(o*s+r*a))}static NearestPointOnLineThroughPoint(t,e,i){return k.Mul(e,k.Sub(i,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,i,o=!0){const r=k.Tan(e,t),s=k.Add(t,k.Mul(r,k.Sub(i,t).pry(r)));if(o){if(s.x<Math.min(t.x,e.x))return k.Cast(t.x<e.x?t:e);if(s.x>Math.max(t.x,e.x))return k.Cast(t.x>e.x?t:e);if(s.y<Math.min(t.y,e.y))return k.Cast(t.y<e.y?t:e);if(s.y>Math.max(t.y,e.y))return k.Cast(t.y>e.y?t:e)}return s}static DistanceToLineThroughPoint(t,e,i){return k.Dist(i,k.NearestPointOnLineThroughPoint(t,e,i))}static DistanceToLineSegment(t,e,i,o=!0){return k.Dist(i,k.NearestPointOnLineSegment(t,e,i,o))}static Snap(t,e=1){return new k(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof k?t:k.From(t)}static Slope(t,e){return t.x===e.y?NaN:(t.y-e.y)/(t.x-e.x)}static Angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static Lrp(t,e,i){return k.Sub(e,t).mul(i).add(t)}static Med(t,e){return new k((t.x+e.x)/2,(t.y+e.y)/2)}static Equals(t,e,i=1e-4){return Math.abs(t.x-e.x)<i&&Math.abs(t.y-e.y)<i}static EqualsXY(t,e,i){return t.x===e&&t.y===i}static EqualsXYZ(t,e,i=1e-4){return k.Equals(t,e,i)&&Math.abs((t.z||0)-(e.z||0))<i}static Clockwise(t,e,i){return(i.x-t.x)*(e.y-t.y)-(e.x-t.x)*(i.y-t.y)<0}static Rescale(t,e){const i=k.Len(t);return new k(e*t.x/i,e*t.y/i)}static ScaleWithOrigin(t,e,i){return k.Sub(t,i).mul(e).add(i)}static ScaleWOrigin(t,e,i){return k.Sub(t,i).mulV(e).add(i)}static ToFixed(t,e=2){return new k(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,i){return k.Add(t,k.Tan(e,t).mul(i))}static ToString(t){return`${t.x}, ${t.y}`}static ToAngle(t){let e=Math.atan2(t.y,t.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(t,e=1){return new k(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:i,z:o}=t;return{x:e,y:i,z:o}}static Average(t){const e=t.length,i=new k(0,0);for(let o=0;o<e;o++)i.add(t[o]);return i.div(e)}static Clamp(t,e,i){return i===void 0?new k(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new k(Math.min(Math.max(t.x,e),i),Math.min(Math.max(t.y,e),i))}static PointsBetween(t,e,i=6){const o=[];for(let r=0;r<i;r++){const s=Uo.easeInQuad(r/(i-1)),a=k.Lrp(t,e,s);a.z=Math.min(1,.5+Math.abs(.5-$o(s))*.65),o.push(a)}return o}static SnapToGrid(t,e=8){return new k(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const $o=n=>n<.5?2*n*n:-1+(4-2*n)*n;class ie extends k{constructor(t=0,e=0,i=0,o={x:0,y:0},r=0,s=0){super(t,e,i),this.x=t,this.y=e,this.z=i,this.v=o,this.t=r,this.a=s}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,i=this.z,o=this.v,r=this.t,s=this.a){return this.x=t,this.y=e,this.z=i,this.v=o,this.t=r,this.a=s,this}clone(){const{x:t,y:e,z:i,v:o,t:r,a:s}=this,a={x:o.x,y:o.y};return new ie(t,e,i,a,r,s)}distance(t){return ie.GetDistance(this,t)}isNear(t,e){return ie.IsNear(this,t,e)}getAngleByPoints(t,e){return ie.GetAngleByPoints(t,this,e)}static Sub(t,e){return new ie(t.x-e.x,t.y-e.y)}static Add(t,e){return new ie(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return ie.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,i){const o=e.x-t.x,r=i.x-e.x,s=e.y-t.y,a=i.y-e.y;let c=0;const l=Math.sqrt(o*o+s*s),d=Math.sqrt(r*r+a*a);if(l&&d){const u=o*r+s*a;c=Math.acos(u/(l*d)),c=c/Math.PI*180;let M=o*a-s*r;M=M>0?1:-1,c=180+M*c}return c}static IsNear(t,e,i){return ie.Len(t.clone().sub(e))<i}static RotWith(t,e,i,o=2){const r=t.x-e.x,s=t.y-e.y,a=Math.sin(i),c=Math.cos(i),l=Math.pow(10,o),d=Math.floor((e.x+(r*c-s*a))*l)/l,u=Math.floor((e.y+(r*a+s*c))*l)/l;return new ie(d,u)}static GetDotStroke(t,e,i=16){const o=new k(1,1),r=Math.PI+.001,s=ie.Add(t,ie.Sub(t,o).uni().per().mul(-e)),a=[];for(let c=1/i,l=c;l<=1;l+=c)a.push(ie.RotWith(s,t,r*2*l));return a}static GetSemicircleStroke(t,e,i=-1,o=8){const r=i*(Math.PI+.001),s=[];for(let a=1/o,c=a;c<=1;c+=a)s.push(ie.RotWith(e,t,r*c));return s}}var rt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Fe(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Fo=typeof rt=="object"&&rt&&rt.Object===Object&&rt,io=Fo,Qo=io,Ho=typeof self=="object"&&self&&self.Object===Object&&self,Zo=Qo||Ho||Function("return this")(),Ce=Zo,Go=Ce,Vo=Go.Symbol,vt=Vo,li=vt,oo=Object.prototype,Jo=oo.hasOwnProperty,Ko=oo.toString,tt=li?li.toStringTag:void 0;function qo(n){var t=Jo.call(n,tt),e=n[tt];try{n[tt]=void 0;var i=!0}catch{}var o=Ko.call(n);return i&&(t?n[tt]=e:delete n[tt]),o}var _o=qo,Xo=Object.prototype,en=Xo.toString;function tn(n){return en.call(n)}var on=tn,ui=vt,nn=_o,rn=on,sn="[object Null]",an="[object Undefined]",hi=ui?ui.toStringTag:void 0;function cn(n){return n==null?n===void 0?an:sn:hi&&hi in Object(n)?nn(n):rn(n)}var Qe=cn;function ln(n){return n!=null&&typeof n=="object"}var Oe=ln,un=Qe,hn=Oe,dn="[object Number]";function gn(n){return typeof n=="number"||hn(n)&&un(n)==dn}var Mn=gn;const se=Fe(Mn);function fn(){this.__data__=[],this.size=0}var pn=fn;function yn(n,t){return n===t||n!==n&&t!==t}var Zt=yn,In=Zt;function vn(n,t){for(var e=n.length;e--;)if(In(n[e][0],t))return e;return-1}var Nt=vn,Nn=Nt,wn=Array.prototype,mn=wn.splice;function Tn(n){var t=this.__data__,e=Nn(t,n);if(e<0)return!1;var i=t.length-1;return e==i?t.pop():mn.call(t,e,1),--this.size,!0}var zn=Tn,jn=Nt;function Cn(n){var t=this.__data__,e=jn(t,n);return e<0?void 0:t[e][1]}var Sn=Cn,Dn=Nt;function xn(n){return Dn(this.__data__,n)>-1}var Ln=xn,kn=Nt;function An(n,t){var e=this.__data__,i=kn(e,n);return i<0?(++this.size,e.push([n,t])):e[i][1]=t,this}var En=An,bn=pn,On=zn,Yn=Sn,Pn=Ln,Rn=En;function Ke(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}Ke.prototype.clear=bn;Ke.prototype.delete=On;Ke.prototype.get=Yn;Ke.prototype.has=Pn;Ke.prototype.set=Rn;var wt=Ke,Bn=wt;function Wn(){this.__data__=new Bn,this.size=0}var Un=Wn;function $n(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Fn=$n;function Qn(n){return this.__data__.get(n)}var Hn=Qn;function Zn(n){return this.__data__.has(n)}var Gn=Zn;function Vn(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Pe=Vn,Jn=Qe,Kn=Pe,qn="[object AsyncFunction]",_n="[object Function]",Xn="[object GeneratorFunction]",er="[object Proxy]";function tr(n){if(!Kn(n))return!1;var t=Jn(n);return t==_n||t==Xn||t==qn||t==er}var no=tr,ir=Ce,or=ir["__core-js_shared__"],nr=or,Dt=nr,di=function(){var n=/[^.]+$/.exec(Dt&&Dt.keys&&Dt.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function rr(n){return!!di&&di in n}var sr=rr,ar=Function.prototype,cr=ar.toString;function lr(n){if(n!=null){try{return cr.call(n)}catch{}try{return n+""}catch{}}return""}var ro=lr,ur=no,hr=sr,dr=Pe,gr=ro,Mr=/[\\^$.*+?()[\]{}|]/g,fr=/^\[object .+?Constructor\]$/,pr=Function.prototype,yr=Object.prototype,Ir=pr.toString,vr=yr.hasOwnProperty,Nr=RegExp("^"+Ir.call(vr).replace(Mr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function wr(n){if(!dr(n)||hr(n))return!1;var t=ur(n)?Nr:fr;return t.test(gr(n))}var mr=wr;function Tr(n,t){return n==null?void 0:n[t]}var zr=Tr,jr=mr,Cr=zr;function Sr(n,t){var e=Cr(n,t);return jr(e)?e:void 0}var He=Sr,Dr=He,xr=Ce,Lr=Dr(xr,"Map"),Gt=Lr,kr=He,Ar=kr(Object,"create"),mt=Ar,gi=mt;function Er(){this.__data__=gi?gi(null):{},this.size=0}var br=Er;function Or(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Yr=Or,Pr=mt,Rr="__lodash_hash_undefined__",Br=Object.prototype,Wr=Br.hasOwnProperty;function Ur(n){var t=this.__data__;if(Pr){var e=t[n];return e===Rr?void 0:e}return Wr.call(t,n)?t[n]:void 0}var $r=Ur,Fr=mt,Qr=Object.prototype,Hr=Qr.hasOwnProperty;function Zr(n){var t=this.__data__;return Fr?t[n]!==void 0:Hr.call(t,n)}var Gr=Zr,Vr=mt,Jr="__lodash_hash_undefined__";function Kr(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Vr&&t===void 0?Jr:t,this}var qr=Kr,_r=br,Xr=Yr,es=$r,ts=Gr,is=qr;function qe(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}qe.prototype.clear=_r;qe.prototype.delete=Xr;qe.prototype.get=es;qe.prototype.has=ts;qe.prototype.set=is;var os=qe,Mi=os,ns=wt,rs=Gt;function ss(){this.size=0,this.__data__={hash:new Mi,map:new(rs||ns),string:new Mi}}var as=ss;function cs(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var ls=cs,us=ls;function hs(n,t){var e=n.__data__;return us(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Tt=hs,ds=Tt;function gs(n){var t=ds(this,n).delete(n);return this.size-=t?1:0,t}var Ms=gs,fs=Tt;function ps(n){return fs(this,n).get(n)}var ys=ps,Is=Tt;function vs(n){return Is(this,n).has(n)}var Ns=vs,ws=Tt;function ms(n,t){var e=ws(this,n),i=e.size;return e.set(n,t),this.size+=e.size==i?0:1,this}var Ts=ms,zs=as,js=Ms,Cs=ys,Ss=Ns,Ds=Ts;function _e(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}_e.prototype.clear=zs;_e.prototype.delete=js;_e.prototype.get=Cs;_e.prototype.has=Ss;_e.prototype.set=Ds;var so=_e,xs=wt,Ls=Gt,ks=so,As=200;function Es(n,t){var e=this.__data__;if(e instanceof xs){var i=e.__data__;if(!Ls||i.length<As-1)return i.push([n,t]),this.size=++e.size,this;e=this.__data__=new ks(i)}return e.set(n,t),this.size=e.size,this}var bs=Es,Os=wt,Ys=Un,Ps=Fn,Rs=Hn,Bs=Gn,Ws=bs;function Xe(n){var t=this.__data__=new Os(n);this.size=t.size}Xe.prototype.clear=Ys;Xe.prototype.delete=Ps;Xe.prototype.get=Rs;Xe.prototype.has=Bs;Xe.prototype.set=Ws;var ao=Xe;function Us(n,t){for(var e=-1,i=n==null?0:n.length;++e<i&&t(n[e],e,n)!==!1;);return n}var $s=Us,Fs=He,Qs=function(){try{var n=Fs(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Hs=Qs,fi=Hs;function Zs(n,t,e){t=="__proto__"&&fi?fi(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var co=Zs,Gs=co,Vs=Zt,Js=Object.prototype,Ks=Js.hasOwnProperty;function qs(n,t,e){var i=n[t];(!(Ks.call(n,t)&&Vs(i,e))||e===void 0&&!(t in n))&&Gs(n,t,e)}var lo=qs,_s=lo,Xs=co;function ea(n,t,e,i){var o=!e;e||(e={});for(var r=-1,s=t.length;++r<s;){var a=t[r],c=i?i(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?Xs(e,a,c):_s(e,a,c)}return e}var zt=ea;function ta(n,t){for(var e=-1,i=Array(n);++e<n;)i[e]=t(e);return i}var ia=ta,oa=Qe,na=Oe,ra="[object Arguments]";function sa(n){return na(n)&&oa(n)==ra}var aa=sa,pi=aa,ca=Oe,uo=Object.prototype,la=uo.hasOwnProperty,ua=uo.propertyIsEnumerable,ha=pi(function(){return arguments}())?pi:function(n){return ca(n)&&la.call(n,"callee")&&!ua.call(n,"callee")},da=ha,ga=Array.isArray,jt=ga,gt={exports:{}};function Ma(){return!1}var fa=Ma;gt.exports;(function(n,t){var e=Ce,i=fa,o=t&&!t.nodeType&&t,r=o&&!0&&n&&!n.nodeType&&n,s=r&&r.exports===o,a=s?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||i;n.exports=l})(gt,gt.exports);var Vt=gt.exports,pa=9007199254740991,ya=/^(?:0|[1-9]\d*)$/;function Ia(n,t){var e=typeof n;return t=t??pa,!!t&&(e=="number"||e!="symbol"&&ya.test(n))&&n>-1&&n%1==0&&n<t}var va=Ia,Na=9007199254740991;function wa(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Na}var ho=wa,ma=Qe,Ta=ho,za=Oe,ja="[object Arguments]",Ca="[object Array]",Sa="[object Boolean]",Da="[object Date]",xa="[object Error]",La="[object Function]",ka="[object Map]",Aa="[object Number]",Ea="[object Object]",ba="[object RegExp]",Oa="[object Set]",Ya="[object String]",Pa="[object WeakMap]",Ra="[object ArrayBuffer]",Ba="[object DataView]",Wa="[object Float32Array]",Ua="[object Float64Array]",$a="[object Int8Array]",Fa="[object Int16Array]",Qa="[object Int32Array]",Ha="[object Uint8Array]",Za="[object Uint8ClampedArray]",Ga="[object Uint16Array]",Va="[object Uint32Array]",te={};te[Wa]=te[Ua]=te[$a]=te[Fa]=te[Qa]=te[Ha]=te[Za]=te[Ga]=te[Va]=!0;te[ja]=te[Ca]=te[Ra]=te[Sa]=te[Ba]=te[Da]=te[xa]=te[La]=te[ka]=te[Aa]=te[Ea]=te[ba]=te[Oa]=te[Ya]=te[Pa]=!1;function Ja(n){return za(n)&&Ta(n.length)&&!!te[ma(n)]}var Ka=Ja;function qa(n){return function(t){return n(t)}}var Jt=qa,Mt={exports:{}};Mt.exports;(function(n,t){var e=io,i=t&&!t.nodeType&&t,o=i&&!0&&n&&!n.nodeType&&n,r=o&&o.exports===i,s=r&&e.process,a=function(){try{var c=o&&o.require&&o.require("util").types;return c||s&&s.binding&&s.binding("util")}catch{}}();n.exports=a})(Mt,Mt.exports);var Kt=Mt.exports,_a=Ka,Xa=Jt,yi=Kt,Ii=yi&&yi.isTypedArray,ec=Ii?Xa(Ii):_a,go=ec,tc=ia,ic=da,oc=jt,nc=Vt,rc=va,sc=go,ac=Object.prototype,cc=ac.hasOwnProperty;function lc(n,t){var e=oc(n),i=!e&&ic(n),o=!e&&!i&&nc(n),r=!e&&!i&&!o&&sc(n),s=e||i||o||r,a=s?tc(n.length,String):[],c=a.length;for(var l in n)(t||cc.call(n,l))&&!(s&&(l=="length"||o&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||rc(l,c)))&&a.push(l);return a}var Mo=lc,uc=Object.prototype;function hc(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||uc;return n===e}var qt=hc;function dc(n,t){return function(e){return n(t(e))}}var fo=dc,gc=fo,Mc=gc(Object.keys,Object),fc=Mc,pc=qt,yc=fc,Ic=Object.prototype,vc=Ic.hasOwnProperty;function Nc(n){if(!pc(n))return yc(n);var t=[];for(var e in Object(n))vc.call(n,e)&&e!="constructor"&&t.push(e);return t}var wc=Nc,mc=no,Tc=ho;function zc(n){return n!=null&&Tc(n.length)&&!mc(n)}var po=zc,jc=Mo,Cc=wc,Sc=po;function Dc(n){return Sc(n)?jc(n):Cc(n)}var _t=Dc,xc=zt,Lc=_t;function kc(n,t){return n&&xc(t,Lc(t),n)}var Ac=kc;function Ec(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var bc=Ec,Oc=Pe,Yc=qt,Pc=bc,Rc=Object.prototype,Bc=Rc.hasOwnProperty;function Wc(n){if(!Oc(n))return Pc(n);var t=Yc(n),e=[];for(var i in n)i=="constructor"&&(t||!Bc.call(n,i))||e.push(i);return e}var Uc=Wc,$c=Mo,Fc=Uc,Qc=po;function Hc(n){return Qc(n)?$c(n,!0):Fc(n)}var Xt=Hc,Zc=zt,Gc=Xt;function Vc(n,t){return n&&Zc(t,Gc(t),n)}var Jc=Vc,ft={exports:{}};ft.exports;(function(n,t){var e=Ce,i=t&&!t.nodeType&&t,o=i&&!0&&n&&!n.nodeType&&n,r=o&&o.exports===i,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function c(l,d){if(d)return l.slice();var u=l.length,M=a?a(u):new l.constructor(u);return l.copy(M),M}n.exports=c})(ft,ft.exports);var Kc=ft.exports;function qc(n,t){var e=-1,i=n.length;for(t||(t=Array(i));++e<i;)t[e]=n[e];return t}var _c=qc;function Xc(n,t){for(var e=-1,i=n==null?0:n.length,o=0,r=[];++e<i;){var s=n[e];t(s,e,n)&&(r[o++]=s)}return r}var el=Xc;function tl(){return[]}var yo=tl,il=el,ol=yo,nl=Object.prototype,rl=nl.propertyIsEnumerable,vi=Object.getOwnPropertySymbols,sl=vi?function(n){return n==null?[]:(n=Object(n),il(vi(n),function(t){return rl.call(n,t)}))}:ol,ei=sl,al=zt,cl=ei;function ll(n,t){return al(n,cl(n),t)}var ul=ll;function hl(n,t){for(var e=-1,i=t.length,o=n.length;++e<i;)n[o+e]=t[e];return n}var Io=hl,dl=fo,gl=dl(Object.getPrototypeOf,Object),vo=gl,Ml=Io,fl=vo,pl=ei,yl=yo,Il=Object.getOwnPropertySymbols,vl=Il?function(n){for(var t=[];n;)Ml(t,pl(n)),n=fl(n);return t}:yl,No=vl,Nl=zt,wl=No;function ml(n,t){return Nl(n,wl(n),t)}var Tl=ml,zl=Io,jl=jt;function Cl(n,t,e){var i=t(n);return jl(n)?i:zl(i,e(n))}var wo=Cl,Sl=wo,Dl=ei,xl=_t;function Ll(n){return Sl(n,xl,Dl)}var mo=Ll,kl=wo,Al=No,El=Xt;function bl(n){return kl(n,El,Al)}var Ol=bl,Yl=He,Pl=Ce,Rl=Yl(Pl,"DataView"),Bl=Rl,Wl=He,Ul=Ce,$l=Wl(Ul,"Promise"),Fl=$l,Ql=He,Hl=Ce,Zl=Ql(Hl,"Set"),Gl=Zl,Vl=He,Jl=Ce,Kl=Vl(Jl,"WeakMap"),ql=Kl,Et=Bl,bt=Gt,Ot=Fl,Yt=Gl,Pt=ql,To=Qe,et=ro,Ni="[object Map]",_l="[object Object]",wi="[object Promise]",mi="[object Set]",Ti="[object WeakMap]",zi="[object DataView]",Xl=et(Et),eu=et(bt),tu=et(Ot),iu=et(Yt),ou=et(Pt),Re=To;(Et&&Re(new Et(new ArrayBuffer(1)))!=zi||bt&&Re(new bt)!=Ni||Ot&&Re(Ot.resolve())!=wi||Yt&&Re(new Yt)!=mi||Pt&&Re(new Pt)!=Ti)&&(Re=function(n){var t=To(n),e=t==_l?n.constructor:void 0,i=e?et(e):"";if(i)switch(i){case Xl:return zi;case eu:return Ni;case tu:return wi;case iu:return mi;case ou:return Ti}return t});var Ct=Re,nu=Object.prototype,ru=nu.hasOwnProperty;function su(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&ru.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var au=su,cu=Ce,lu=cu.Uint8Array,zo=lu,ji=zo;function uu(n){var t=new n.constructor(n.byteLength);return new ji(t).set(new ji(n)),t}var ti=uu,hu=ti;function du(n,t){var e=t?hu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var gu=du,Mu=/\w*$/;function fu(n){var t=new n.constructor(n.source,Mu.exec(n));return t.lastIndex=n.lastIndex,t}var pu=fu,Ci=vt,Si=Ci?Ci.prototype:void 0,Di=Si?Si.valueOf:void 0;function yu(n){return Di?Object(Di.call(n)):{}}var Iu=yu,vu=ti;function Nu(n,t){var e=t?vu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var wu=Nu,mu=ti,Tu=gu,zu=pu,ju=Iu,Cu=wu,Su="[object Boolean]",Du="[object Date]",xu="[object Map]",Lu="[object Number]",ku="[object RegExp]",Au="[object Set]",Eu="[object String]",bu="[object Symbol]",Ou="[object ArrayBuffer]",Yu="[object DataView]",Pu="[object Float32Array]",Ru="[object Float64Array]",Bu="[object Int8Array]",Wu="[object Int16Array]",Uu="[object Int32Array]",$u="[object Uint8Array]",Fu="[object Uint8ClampedArray]",Qu="[object Uint16Array]",Hu="[object Uint32Array]";function Zu(n,t,e){var i=n.constructor;switch(t){case Ou:return mu(n);case Su:case Du:return new i(+n);case Yu:return Tu(n,e);case Pu:case Ru:case Bu:case Wu:case Uu:case $u:case Fu:case Qu:case Hu:return Cu(n,e);case xu:return new i;case Lu:case Eu:return new i(n);case ku:return zu(n);case Au:return new i;case bu:return ju(n)}}var Gu=Zu,Vu=Pe,xi=Object.create,Ju=function(){function n(){}return function(t){if(!Vu(t))return{};if(xi)return xi(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Ku=Ju,qu=Ku,_u=vo,Xu=qt;function eh(n){return typeof n.constructor=="function"&&!Xu(n)?qu(_u(n)):{}}var th=eh,ih=Ct,oh=Oe,nh="[object Map]";function rh(n){return oh(n)&&ih(n)==nh}var sh=rh,ah=sh,ch=Jt,Li=Kt,ki=Li&&Li.isMap,lh=ki?ch(ki):ah,uh=lh,hh=Ct,dh=Oe,gh="[object Set]";function Mh(n){return dh(n)&&hh(n)==gh}var fh=Mh,ph=fh,yh=Jt,Ai=Kt,Ei=Ai&&Ai.isSet,Ih=Ei?yh(Ei):ph,vh=Ih,Nh=ao,wh=$s,mh=lo,Th=Ac,zh=Jc,jh=Kc,Ch=_c,Sh=ul,Dh=Tl,xh=mo,Lh=Ol,kh=Ct,Ah=au,Eh=Gu,bh=th,Oh=jt,Yh=Vt,Ph=uh,Rh=Pe,Bh=vh,Wh=_t,Uh=Xt,$h=1,Fh=2,Qh=4,jo="[object Arguments]",Hh="[object Array]",Zh="[object Boolean]",Gh="[object Date]",Vh="[object Error]",Co="[object Function]",Jh="[object GeneratorFunction]",Kh="[object Map]",qh="[object Number]",So="[object Object]",_h="[object RegExp]",Xh="[object Set]",ed="[object String]",td="[object Symbol]",id="[object WeakMap]",od="[object ArrayBuffer]",nd="[object DataView]",rd="[object Float32Array]",sd="[object Float64Array]",ad="[object Int8Array]",cd="[object Int16Array]",ld="[object Int32Array]",ud="[object Uint8Array]",hd="[object Uint8ClampedArray]",dd="[object Uint16Array]",gd="[object Uint32Array]",ee={};ee[jo]=ee[Hh]=ee[od]=ee[nd]=ee[Zh]=ee[Gh]=ee[rd]=ee[sd]=ee[ad]=ee[cd]=ee[ld]=ee[Kh]=ee[qh]=ee[So]=ee[_h]=ee[Xh]=ee[ed]=ee[td]=ee[ud]=ee[hd]=ee[dd]=ee[gd]=!0;ee[Vh]=ee[Co]=ee[id]=!1;function ht(n,t,e,i,o,r){var s,a=t&$h,c=t&Fh,l=t&Qh;if(e&&(s=o?e(n,i,o,r):e(n)),s!==void 0)return s;if(!Rh(n))return n;var d=Oh(n);if(d){if(s=Ah(n),!a)return Ch(n,s)}else{var u=kh(n),M=u==Co||u==Jh;if(Yh(n))return jh(n,a);if(u==So||u==jo||M&&!o){if(s=c||M?{}:bh(n),!a)return c?Dh(n,zh(s,n)):Sh(n,Th(s,n))}else{if(!ee[u])return o?n:{};s=Eh(n,u,a)}}r||(r=new Nh);var g=r.get(n);if(g)return g;r.set(n,s),Bh(n)?n.forEach(function(m){s.add(ht(m,t,e,m,n,r))}):Ph(n)&&n.forEach(function(m,f){s.set(f,ht(m,t,e,f,n,r))});var y=l?c?Lh:xh:c?Uh:Wh,v=d?void 0:y(n);return wh(v||n,function(m,f){v&&(f=m,m=n[f]),mh(s,f,ht(m,t,e,f,n,r))}),s}var Do=ht,Md=Do,fd=1,pd=4;function yd(n){return Md(n,fd|pd)}var Id=yd;const oe=Fe(Id);function vd(n){return JSON.parse(Xi.decompress(n))}function Nd(n){return Xi.compress(JSON.stringify(n))}const ye=Object.keys,xe="++",O="selector",wd="all";var md="__lodash_hash_undefined__";function Td(n){return this.__data__.set(n,md),this}var zd=Td;function jd(n){return this.__data__.has(n)}var Cd=jd,Sd=so,Dd=zd,xd=Cd;function pt(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Sd;++t<e;)this.add(n[t])}pt.prototype.add=pt.prototype.push=Dd;pt.prototype.has=xd;var Ld=pt;function kd(n,t){for(var e=-1,i=n==null?0:n.length;++e<i;)if(t(n[e],e,n))return!0;return!1}var Ad=kd;function Ed(n,t){return n.has(t)}var bd=Ed,Od=Ld,Yd=Ad,Pd=bd,Rd=1,Bd=2;function Wd(n,t,e,i,o,r){var s=e&Rd,a=n.length,c=t.length;if(a!=c&&!(s&&c>a))return!1;var l=r.get(n),d=r.get(t);if(l&&d)return l==t&&d==n;var u=-1,M=!0,g=e&Bd?new Od:void 0;for(r.set(n,t),r.set(t,n);++u<a;){var y=n[u],v=t[u];if(i)var m=s?i(v,y,u,t,n,r):i(y,v,u,n,t,r);if(m!==void 0){if(m)continue;M=!1;break}if(g){if(!Yd(t,function(f,w){if(!Pd(g,w)&&(y===f||o(y,f,e,i,r)))return g.push(w)})){M=!1;break}}else if(!(y===v||o(y,v,e,i,r))){M=!1;break}}return r.delete(n),r.delete(t),M}var xo=Wd;function Ud(n){var t=-1,e=Array(n.size);return n.forEach(function(i,o){e[++t]=[o,i]}),e}var $d=Ud;function Fd(n){var t=-1,e=Array(n.size);return n.forEach(function(i){e[++t]=i}),e}var Qd=Fd,bi=vt,Oi=zo,Hd=Zt,Zd=xo,Gd=$d,Vd=Qd,Jd=1,Kd=2,qd="[object Boolean]",_d="[object Date]",Xd="[object Error]",eg="[object Map]",tg="[object Number]",ig="[object RegExp]",og="[object Set]",ng="[object String]",rg="[object Symbol]",sg="[object ArrayBuffer]",ag="[object DataView]",Yi=bi?bi.prototype:void 0,xt=Yi?Yi.valueOf:void 0;function cg(n,t,e,i,o,r,s){switch(e){case ag:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case sg:return!(n.byteLength!=t.byteLength||!r(new Oi(n),new Oi(t)));case qd:case _d:case tg:return Hd(+n,+t);case Xd:return n.name==t.name&&n.message==t.message;case ig:case ng:return n==t+"";case eg:var a=Gd;case og:var c=i&Jd;if(a||(a=Vd),n.size!=t.size&&!c)return!1;var l=s.get(n);if(l)return l==t;i|=Kd,s.set(n,t);var d=Zd(a(n),a(t),i,o,r,s);return s.delete(n),d;case rg:if(xt)return xt.call(n)==xt.call(t)}return!1}var lg=cg,Pi=mo,ug=1,hg=Object.prototype,dg=hg.hasOwnProperty;function gg(n,t,e,i,o,r){var s=e&ug,a=Pi(n),c=a.length,l=Pi(t),d=l.length;if(c!=d&&!s)return!1;for(var u=c;u--;){var M=a[u];if(!(s?M in t:dg.call(t,M)))return!1}var g=r.get(n),y=r.get(t);if(g&&y)return g==t&&y==n;var v=!0;r.set(n,t),r.set(t,n);for(var m=s;++u<c;){M=a[u];var f=n[M],w=t[M];if(i)var I=s?i(w,f,M,t,n,r):i(f,w,M,n,t,r);if(!(I===void 0?f===w||o(f,w,e,i,r):I)){v=!1;break}m||(m=M=="constructor")}if(v&&!m){var z=n.constructor,T=t.constructor;z!=T&&"constructor"in n&&"constructor"in t&&!(typeof z=="function"&&z instanceof z&&typeof T=="function"&&T instanceof T)&&(v=!1)}return r.delete(n),r.delete(t),v}var Mg=gg,Lt=ao,fg=xo,pg=lg,yg=Mg,Ri=Ct,Bi=jt,Wi=Vt,Ig=go,vg=1,Ui="[object Arguments]",$i="[object Array]",st="[object Object]",Ng=Object.prototype,Fi=Ng.hasOwnProperty;function wg(n,t,e,i,o,r){var s=Bi(n),a=Bi(t),c=s?$i:Ri(n),l=a?$i:Ri(t);c=c==Ui?st:c,l=l==Ui?st:l;var d=c==st,u=l==st,M=c==l;if(M&&Wi(n)){if(!Wi(t))return!1;s=!0,d=!1}if(M&&!d)return r||(r=new Lt),s||Ig(n)?fg(n,t,e,i,o,r):pg(n,t,c,e,i,o,r);if(!(e&vg)){var g=d&&Fi.call(n,"__wrapped__"),y=u&&Fi.call(t,"__wrapped__");if(g||y){var v=g?n.value():n,m=y?t.value():t;return r||(r=new Lt),o(v,m,e,i,r)}}return M?(r||(r=new Lt),yg(n,t,e,i,o,r)):!1}var mg=wg,Tg=mg,Qi=Oe;function Lo(n,t,e,i,o){return n===t?!0:n==null||t==null||!Qi(n)&&!Qi(t)?n!==n&&t!==t:Tg(n,t,e,i,Lo,o)}var zg=Lo,jg=zg;function Cg(n,t){return jg(n,t)}var Sg=Cg;const ce=Fe(Sg);var Dg=Qe,xg=Oe,Lg="[object Boolean]";function kg(n){return n===!0||n===!1||xg(n)&&Dg(n)==Lg}var Ag=kg;const pe=Fe(Ag);function ko(n,t){if(n&&t){const e=Math.min(n.originX,t.originX),i=Math.min(n.originY,t.originY),o=Math.max(n.originX+n.width,t.originX+t.width),r=Math.max(n.originY+n.height,t.originY+t.height),s=o-e,a=r-i;return{originX:e,originY:i,width:s,height:a}}return t||n}const Je=(n,t)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:t}):setTimeout(()=>{e(2)},t)}).then(function(){n()},()=>{n()}),ii=n=>{const t=n.webkitBackingStorePixelRatio||n.mozBackingStorePixelRatio||n.msBackingStorePixelRatio||n.oBackingStorePixelRatio||n.backingStorePixelRatio||1;return Math.max(1,(window.devicePixelRatio||1)/t)};class Ao{constructor(t){p(this,"plugin");p(this,"uid");this.plugin=t,this.uid=t.displayer.uid}getNamespaceData(){var t;return V.toJS((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getUidFromKey(t){return t.split(xe).length===2&&t.split(xe)[0]||this.uid}isLocalId(t){return t.split(xe).length===1}getLocalId(t){return t.split(xe)[1]}isSelector(t){return this.getLocalId(t)===O}}const Ae=class Ae extends Ao{constructor(e,i){super(e);p(this,"namespace");p(this,"serviceStorage",{});p(this,"storage",{});p(this,"stateDisposer");p(this,"asyncClockState",!1);Ae.syncInterval=(i||Ae.syncInterval)*.5,this.namespace=Ae.namespace,this.serviceStorage=this.getNamespaceData(),this.storage=oe(this.serviceStorage)}getViewIdBySecenPath(e){const i=this.getNamespaceData();for(const[o,r]of Object.entries(i))for(const s of Object.keys(r))if(s===e)return o}getScenePathData(e){const i=this.getNamespaceData();for(const o of Object.values(i))for(const r of Object.keys(o))if(r===e)return oe(o[r])}getStorageData(e,i){const o=this.getNamespaceData();return o[e]&&oe(o[e][i])||void 0}hasSelector(e,i){const o=this.storage&&this.storage[e]&&this.storage[e][i];return!!(o&&Object.keys(o).find(r=>this.isOwn(r)&&this.getLocalId(r)===O))}addStorageStateListener(e){this.stateDisposer=V.autorun(async()=>{const i=this.getNamespaceData(),o=this.diffFun(this.serviceStorage,i);this.serviceStorage=i;for(const[r,s]of Object.entries(o))if(s&&s.newValue===void 0){const{viewId:a,scenePath:c}=s;a&&c&&this.storage[a]&&delete this.storage[a][c][r]}else if(s&&s.newValue){const{viewId:a,scenePath:c}=s;this.storage[a]||(this.storage[a]={}),this.storage[a][c]||(this.storage[a][c]={}),this.storage[a][c][r]=oe(s.newValue)}Object.keys(o).length>0&&e(o)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFun(e,i){const o=ye(e),r=ye(i),s={};for(const a of o){if(ce(e[a],i[a]))continue;const c=this.diffFunByscenePath(e[a]||{},i[a]||{},a);Object.assign(s,c)}for(const a of r)if(!o.includes(a)){const c=this.diffFunByscenePath(e[a]||{},i[a]||{},a);Object.assign(s,c)}return s}diffFunByscenePath(e,i,o){const r=ye(e),s=ye(i),a={};for(const c of r){if(ce(e[c],i[c]))continue;const l=this.diffFunByKeys(e[c]||{},i[c]||{},c,o);Object.assign(a,l)}for(const c of s)if(!r.includes(c)){const l=this.diffFunByKeys(e[c]||{},i[c]||{},c,o);Object.assign(a,l)}return a}diffFunByKeys(e,i,o,r){const s=ye(e),a=ye(i),c={};for(const l of s){if(a.includes(l)){if(ce(e[l],i[l]))continue;c[l]={oldValue:e[l],newValue:i[l],viewId:r,scenePath:o};continue}c[l]={oldValue:e[l],newValue:void 0,viewId:r,scenePath:o}}for(const l of a)s.includes(l)||(c[l]={oldValue:void 0,newValue:i[l],viewId:r,scenePath:o});return c}transformKey(e){return this.uid+xe+e}isOwn(e){return e.split(xe)[0]===this.uid}dispatch(e){const{type:i,workId:o,ops:r,index:s,opt:a,toolsType:c,removeIds:l,updateNodeOpt:d,op:u,selectIds:M,isSync:g,scenePath:y,viewId:v}=e;if(v)switch(i){case L.Clear:const m={};y&&this.storage[v]&&this.storage[v][y]?(delete this.storage[v][y],this.setState(m,{isSync:g,viewId:v,scenePath:y})):this.storage[v]&&(delete this.storage[v],this.setState(m,{isSync:g,viewId:v,scenePath:""}));break;case L.CreateWork:if(y&&o&&c&&a){const T=this.isLocalId(o.toString())?this.transformKey(o):o;this.updateValue(T.toString(),{type:L.CreateWork,workId:o,toolsType:c,opt:a},{isSync:g,viewId:v,scenePath:y})}break;case L.DrawWork:if(y&&o&&typeof s=="number"&&(u!=null&&u.length)){const T=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[v]&&this.storage[v][y]&&this.storage[v][y][T]||void 0,x=s?((j==null?void 0:j.op)||[]).slice(0,s).concat(u):u||(j==null?void 0:j.op);j&&x&&this.updateValue(T.toString(),{...j,type:L.DrawWork,op:x,index:s},{isSync:g,viewId:v,scenePath:y})}break;case L.FullWork:if(y&&o){const T=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[v]&&this.storage[v][y]&&this.storage[v][y][T]||void 0,x=d||(j==null?void 0:j.updateNodeOpt),A=c||(j==null?void 0:j.toolsType),W=a||(j==null?void 0:j.opt),b=r||(j==null?void 0:j.ops);A&&W&&this.updateValue(T.toString(),{type:L.FullWork,updateNodeOpt:x,workId:T,toolsType:A,opt:W,ops:b},{isSync:g,viewId:v,scenePath:y})}break;case L.RemoveNode:if(y&&(l!=null&&l.length)){const T=l.map(j=>this.isLocalId(j+"")?this.transformKey(j):j);this.storage[v]&&this.storage[v][y]&&Object.keys(this.storage[v][y]).map(j=>{T!=null&&T.includes(j)&&this.updateValue(j,void 0,{isSync:g,viewId:v,scenePath:y})})}break;case L.UpdateNode:if(y&&o&&(d||r||a)){const T=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[v]&&this.storage[v][y]&&this.storage[v][y][T]||void 0;j&&(j.updateNodeOpt=d,(r||u)&&(j.ops=r,j.op=u),a&&(j.opt=a),j.type=L.FullWork,this.updateValue(T.toString(),j,{isSync:g,viewId:v,scenePath:y}))}break;case L.Select:if(!y)return;let f;M!=null&&M.length&&(f=M.map(T=>this.isLocalId(T+"")?this.transformKey(T):T));const w=this.transformKey(O),I=this.storage[v]&&this.storage[v][y]&&this.storage[v][y][w]||void 0,z=a||(I==null?void 0:I.opt);f&&this.checkOtherSelector(w,f,{isSync:g,viewId:v,scenePath:y}),this.updateValue(w,f&&{type:L.Select,toolsType:N.Selector,opt:z,selectIds:f},{isSync:g,viewId:v,scenePath:y});break}}checkOtherSelector(e,i,o){const{viewId:r,scenePath:s}=o;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===O){const c=this.storage[r][s][a];if(c&&c.selectIds){const l=c.selectIds.filter(d=>!i.includes(d));l.length>0&&(c.selectIds=l),this.updateValue(a,l.length&&c||void 0,o)}}}setState(e,i){const{viewId:o,scenePath:r}=i,s=ye(e);for(let a=0;a<s.length;a++){const c=s[a],l=e[c];typeof l<"u"?(this.storage[o]||(this.storage[o]={}),this.storage[o][r]||(this.storage[o][r]={}),this.storage[o][r][c]=l):delete this.storage[o][r][c]}this.runSyncService(i)}updateValue(e,i,o){const{viewId:r,scenePath:s}=o;i===void 0?delete this.storage[r][s][e]:(this.storage[r]||(this.storage[r]={}),this.storage[r][s]||(this.storage[r][s]={}),this.storage[r][s][e]=i),this.runSyncService(o)}runSyncService(e){this.asyncClockState||(this.asyncClockState=!0,setTimeout(()=>{e.isSync?(this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)):Je(()=>{this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)},Ae.syncInterval)},e!=null&&e.isSync?0:Ae.syncInterval))}syncSerivice(e=!1){const i=ye(this.serviceStorage),o=ye(this.storage),r=new Map;for(const s of i){if(!o.includes(s)){r.set(s,void 0);continue}ce(this.serviceStorage[s],this.storage[s])||this.syncViewData(s,e)}for(const s of o)i.includes(s)||r.set(s,this.storage[s]);if(r.size>5)this.syncStorageView(this.storage,e);else for(const[s,a]of r.entries())this.syncUpdataView(s,a,e)}syncViewData(e,i=!1){const o=ye(this.serviceStorage[e]),r=ye(this.storage[e]),s=new Map;for(const a of o){if(!r.includes(a)){s.set(a,void 0);continue}ce(this.serviceStorage[e][a],this.storage[e][a])||this.syncScenePathData(e,a,i)}for(const a of r)o.includes(a)||s.set(a,this.storage[e][a]);if(s.size>5)this.syncStorageScenePath(e,this.storage[e],i);else for(const[a,c]of s.entries())this.syncUpdataScenePath(e,a,c,i)}syncScenePathData(e,i,o=!1){const r=ye(this.serviceStorage[e][i]),s=ye(this.storage[e][i]),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}ce(this.serviceStorage[e][i][c],this.storage[e][i][c])||a.set(c,this.storage[e][i][c])}for(const c of s)r.includes(c)||a.set(c,this.storage[e][i][c]);if(a.size>5)this.syncStorageKey(e,i,this.storage[e][i],o);else for(const[c,l]of a.entries())this.syncUpdataKey(e,i,c,l,o)}syncUpdataView(e,i,o=!1){var s;Object.keys(this.serviceStorage).length?(o||(i===void 0?delete this.serviceStorage[e]:this.serviceStorage[e]=oe(i)),(s=this.plugin)==null||s.updateAttributes([this.namespace,e],i)):this.syncStorageView(this.storage,o)}syncStorageView(e,i=!1){var o;i||e&&(this.serviceStorage=oe(e)),(o=this.plugin)==null||o.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,i,o,r=!1){var a;Object.keys(this.serviceStorage[e]).length?(r||(o===void 0?delete this.serviceStorage[e][i]:this.serviceStorage[e][i]=o),(a=this.plugin)==null||a.updateAttributes([this.namespace,e,i],o)):this.syncStorageScenePath(e,this.storage[e],r)}syncStorageScenePath(e,i,o=!1){var r;o||i&&(this.serviceStorage[e]=i),(r=this.plugin)==null||r.updateAttributes([this.namespace,e],i)}syncUpdataKey(e,i,o,r,s=!1){var c;Object.keys(this.serviceStorage[e][i]).length?(s||(r===void 0?delete this.serviceStorage[e][i][o]:this.serviceStorage[e][i][o]=r),(c=this.plugin)==null||c.updateAttributes([this.namespace,e,i,o],r)):this.syncStorageKey(e,i,this.storage[e][i],s)}syncStorageKey(e,i,o,r=!1){var s;r||(this.serviceStorage[e][i]=o),(s=this.plugin)==null||s.updateAttributes([this.namespace,e,i],o)}keyTransformWorkId(e){const i=e.split(xe);return i.length===2?i[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={}}};p(Ae,"namespace","PluginState"),p(Ae,"syncInterval",500);let Rt=Ae;class Eg{constructor(){p(this,"roomMembers",[]);p(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const i={online:e.map(o=>{var r;return((r=o.payload)==null?void 0:r.uid)||o.session}),offline:t.map(o=>{var r;return((r=o.payload)==null?void 0:r.uid)||o.session})};this.onChangeHooks.forEach(o=>o(i))}getRoomMember(t){return this.roomMembers.find(e=>{var i;return((i=e.payload)==null?void 0:i.uid)===t})}isOnLine(t){return!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}var je=(n=>(n[n.Text=1]="Text",n[n.Shape=2]="Shape",n))(je||{});const Me=class Me{createProxy(t){const e=new Proxy(t,{get(i,o,r){const s=Me.interceptors.hasOwnProperty(o)?Me.interceptors:i;return Reflect.get(s,o,r)}});return Me.proxyToRaw.set(e,t),e}};p(Me,"proxyToRaw",new WeakMap),p(Me,"interceptors",{entries(...t){return Me.proxyToRaw.get(this).entries(...t)},forEach(...t){return Me.proxyToRaw.get(this).forEach(...t)},size(){return Me.proxyToRaw.get(this).size},get(t){return Me.proxyToRaw.get(this).get(t)},set(t,e){return Me.proxyToRaw.get(this).set(t,e)},delete(t,e){return Me.proxyToRaw.get(this).delete(t)},clear(){return Me.proxyToRaw.get(this).clear()}});let Be=Me;class bg{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"editors");p(this,"activeId");p(this,"undoTickerId");p(this,"proxyMap");p(this,"taskqueue",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i;const o=new Map;this.proxyMap=new Be;const r=this,s=Be.interceptors.set;Be.interceptors.set=function(c,l){return r.interceptors.set(c,l),s.call(this,c,l)};const a=Be.interceptors.delete;Be.interceptors.delete=function(c,l){return r.interceptors.delete(c,l),a.call(this,c)},this.editors=this.proxyMap.createProxy(o)}get collector(){return this.control.collector}filterEditor(t){const e=new Map;return this.editors.forEach((i,o)=>{i.viewId===t&&e.set(o,i)}),e}get interceptors(){return{set:(t,e)=>{var g,y,v,m,f,w,I,z;if(!this.collector)return!0;const{viewId:i,scenePath:o,canSync:r,canWorker:s,type:a,opt:c,dataType:l}=e;if(!s&&!r)return!0;const u=((g=this.collector)==null?void 0:g.isLocalId(t))?(y=this.collector)==null?void 0:y.transformKey(t):t,M=((v=this.collector)==null?void 0:v.storage[i])&&this.collector.storage[i][o]&&this.collector.storage[i][o][u]||void 0;M?M.toolsType===N.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:t,msgType:L.UpdateNode}).forEach(T=>{var j;(j=this.control.worker)==null||j.taskBatchData.delete(T)}),(I=this.control.worker)==null||I.taskBatchData.add({workId:t,msgType:L.UpdateNode,dataType:l||Z.Local,toolsType:N.Text,opt:c,viewId:i,scenePath:o}),(z=this.control.worker)==null||z.runAnimation()),r&&Je(()=>{var T;(T=this.collector)==null||T.dispatch({type:L.UpdateNode,workId:t,toolsType:N.Text,opt:c,viewId:i,scenePath:o})},this.control.worker.maxLastSyncTime)):a===je.Text&&(r&&((m=this.collector)==null||m.dispatch({type:c.text&&L.FullWork||L.CreateWork,workId:t,toolsType:N.Text,opt:c,isSync:!0,viewId:i,scenePath:o})),s&&((f=this.control.worker)==null||f.taskBatchData.add({workId:t,msgType:c.text&&L.FullWork||L.CreateWork,dataType:l||Z.Local,toolsType:N.Text,opt:c,viewId:i,scenePath:o}),(w=this.control.worker)==null||w.runAnimation()))},delete:t=>{var a,c;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:i,scenePath:o,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:t,toolsType:N.Text,msgType:L.RemoveNode,dataType:Z.Local,viewId:i,scenePath:o}),(c=this.control.worker)==null||c.runAnimation()),r&&Je(()=>{var l;(l=this.collector)==null||l.dispatch({type:L.RemoveNode,removeIds:[t],toolsType:N.Text,viewId:i,scenePath:o})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(t,e){var r,s,a,c;const i=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(t,e),o=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&o&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:L.GetTextActive,dataType:Z.Local,op:i,viewId:e,scenePath:o}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){if(this.activeId){const t=this.editors.get(this.activeId),e=(t==null?void 0:t.opt.text)&&(t==null?void 0:t.opt.text.replace(/\s*,/g,"")),i=t==null?void 0:t.viewId;e?this.unActive():this.delete(this.activeId,!0,!0),this.undoTickerId&&i&&(this.internalMsgEmitter.emit("undoTickerEnd",this.undoTickerId,i,!0),this.undoTickerId=void 0)}}onCameraChange(t,e){var i,o;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:c}=s.opt,l=a&&((i=this.control.viewContainerManager)==null?void 0:i.transformToOriginPoint(a,s.viewId)),d=(o=this.control.viewContainerManager)==null?void 0:o.getCurScenePath(e);if(d&&e){const u={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:s.opt,scale:t.scale,type:je.Text,viewId:e,scenePath:d,canWorker:!1,canSync:!1};this.editors.set(r,u),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(t){var y,v;const{workId:e,opt:i,msgType:o,viewId:r,scenePath:s,dataType:a}=t;if(!e||!r||!s)return;const c=e.toString();if(o===L.RemoveNode){console.log("onServiceDerive-d",c),this.delete(c,!0,!0);return}const{boxPoint:l,boxSize:d}=i,u=l&&((y=this.control.viewContainerManager)==null?void 0:y.transformToOriginPoint(l,r)),M=this.control.viewContainerManager.getView(r),g={x:u&&u[0]||0,y:u&&u[1]||0,w:d&&d[0]||0,h:d&&d[1]||0,opt:i,type:je.Text,canWorker:!0,canSync:!1,dataType:a,scale:((v=M==null?void 0:M.cameraOpt)==null?void 0:v.scale)||1,viewId:r,scenePath:s};this.editors.set(c,g),a===Z.Service&&i.workState===C.Done&&this.activeId===c&&(this.activeId=void 0),console.log("onServiceDerive---1",c,g.opt.text,g.opt.uid,this.activeId,a),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}updateForViewEdited(t,e){var o;this.editors.set(t,e);const i=(o=this.taskqueue.get(t))==null?void 0:o.resolve;i&&i(e)}active(t){var i;const e=this.editors.get(t);e&&e.viewId&&(e.opt.workState=C.Start,e.opt.uid=(i=this.collector)==null?void 0:i.uid,this.activeId=t,e.canWorker=!0,e.canSync=!0,console.log("onServiceDerive---0",e.opt.uid),this.editors.set(t,e),this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}unActive(){const t=this.activeId&&this.editors.get(this.activeId);t&&t.viewId&&this.activeId&&(t.opt.workState=C.Done,t.opt.uid=void 0,t.canWorker=!0,t.canSync=!0,this.editors.set(this.activeId,t),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t.viewId,this.activeId))}createTextForMasterController(t,e){var s;const{workId:i,isActive:o,...r}=t;r.opt.zIndex=this.getMaxZIndex()+1,r.opt.uid=(s=this.collector)==null?void 0:s.uid,e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,r.viewId)),o&&(this.activeId=i),r.dataType=Z.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(i,r),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}updateTextForMasterController(t,e){var s;const{workId:i,...o}=t;e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,o.viewId));const r=this.editors.get(i)||{};o.opt&&(o.opt.uid=(s=this.collector)==null?void 0:s.uid),o.dataType=Z.Local,this.editors.set(i,{...r,...o}),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var l;const{workId:i,...o}=t;e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,o.viewId));const r=this.editors.get(i)||{};if(o.opt&&(o.opt.uid=(l=this.collector)==null?void 0:l.uid),o.dataType=Z.Local,this.editors.set(i,{...r,...o}),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId),this.taskqueue.has(i))return;const s=setTimeout(()=>{var u;const d=(u=this.taskqueue.get(i))==null?void 0:u.resolve;d&&d(void 0)},20),a=await new Promise(d=>{this.taskqueue.set(i,{resolve:d,clocker:s})}),c=this.taskqueue.get(i);return c&&(c.clocker&&clearTimeout(c.clocker),this.taskqueue.delete(i)),this.taskqueue.delete(i),a}updateTextForWorker(t,e){const{workId:i,isActive:o,...r}=t;e&&(this.undoTickerId=e,this.internalMsgEmitter.emit("undoTickerStart",this.undoTickerId,r.viewId));const a={...this.editors.get(i)||{},...r};if(o){a.canWorker=!1,a.canSync=!1,this.editors.set(i,a),this.active(i);return}this.editors.set(i,a),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}get(t){return this.editors.get(t)}delete(t,e,i){const o=this.editors.get(t);if(o){const r=o.viewId;o.canSync=e,o.canWorker=i,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}}deleteBatch(t,e,i){const o=new Set;for(const r of t){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=i,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),o.add(a)}}for(const r of o)this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}clear(t,e){this.editors.forEach((i,o)=>{i.viewId===t&&(e&&(i.canSync=!1),i.canWorker=!1,this.editors.delete(o))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}getMaxZIndex(){let t=0;return this.editors.forEach(e=>{e.opt.zIndex&&e.opt.zIndex>t&&(t=e.opt.zIndex)}),t}}const Ee=class Ee extends Ao{constructor(e,i){super(e);p(this,"serviceStorage",{});p(this,"storage",{});p(this,"stateDisposer");p(this,"asyncClockTimer");p(this,"namespace");this.namespace=Ee.namespace,Ee.syncInterval=(i||Ee.syncInterval)*.5,this.serviceStorage=this.getNamespaceData(),this.storage=oe(this.serviceStorage)}addStorageStateListener(e){this.stateDisposer=V.autorun(async()=>{const i=this.getNamespaceData(),o=this.getDiffMap(this.serviceStorage,i);this.serviceStorage=i,o.size&&e(o)})}getDiffMap(e,i){const o=new Map;for(const[r,s]of Object.entries(i))r!==this.uid&&(s&&ce(e[r],s)||s&&o.set(r,s));return o}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}transformKey(e){return this.uid+xe+e}isOwn(e){return e===this.uid}dispatch(e){const{type:i,op:o,isSync:r,viewId:s}=e;switch(i){case $e.Cursor:o&&this.pushValue(this.uid,{type:$e.Cursor,op:o,viewId:s},{isSync:r});break}}pushValue(e,i,o){var r;this.storage[e]||(this.storage[e]=[]),(r=this.storage[e])==null||r.push(i),this.runSyncService(o)}clearValue(e){var o;this.storage[e]=void 0,Object.keys(this.serviceStorage).length&&((o=this.plugin)==null||o.updateAttributes([this.namespace,e],void 0))}runSyncService(e){this.asyncClockTimer||(this.asyncClockTimer=setTimeout(()=>{e!=null&&e.isSync?(this.asyncClockTimer=void 0,this.syncSerivice()):Je(()=>{this.asyncClockTimer=void 0,this.syncSerivice()},Ee.syncInterval)},e!=null&&e.isSync?0:Ee.syncInterval))}syncSerivice(){var i;Object.keys(this.serviceStorage).length?Object.keys(this.storage).forEach(o=>{var r;(r=this.plugin)==null||r.updateAttributes([this.namespace,o],this.storage[o])}):(i=this.plugin)==null||i.updateAttributes(this.namespace,this.storage),this.storage={}}destroy(){this.removeStorageStateListener(),this.storage={},this.serviceStorage={}}};p(Ee,"syncInterval",100),p(Ee,"namespace","PluginEvent");let Bt=Ee;class Og{constructor(t){p(this,"expirationTime",5e3);p(this,"internalMsgEmitter");p(this,"control");p(this,"eventCollector");p(this,"roomMember");p(this,"animationId");p(this,"removeTimerId");p(this,"asyncEndInfo");p(this,"animationPointWorkers",new Map);p(this,"animationDrawWorkers",new Map);p(this,"cursorInfoMap",new Map);const{control:e,internalMsgEmitter:i}=t;this.internalMsgEmitter=i,this.control=e,this.roomMember=e.roomMember}activeCollector(){var t,e;this.control.plugin&&(this.eventCollector=new Bt(this.control.plugin,Math.min(((e=(t=this.control.pluginOptions)==null?void 0:t.syncOpt)==null?void 0:e.interval)||100,100)),this.eventCollector.addStorageStateListener(i=>{i.forEach((o,r)=>{var s;if(((s=this.eventCollector)==null?void 0:s.uid)!==r){const a=new Map;o==null||o.forEach(c=>{if(c&&c.type===$e.Cursor&&c.op&&c.viewId){const l=[];for(let d=0;d<c.op.length;d+=2){const u=c.op[d],M=c.op[d+1];if(se(u)&&se(M)){const g=this.control.viewContainerManager.transformToOriginPoint([u,M],c.viewId);l.push(g[0],g[1])}else l.push(u,M)}a.set(c.viewId,l)}}),a.size&&(this.activePointWorkShape(r,a),this.runAnimation())}})}))}onFocusViewChange(){const t=this.control.viewContainerManager.focuedViewId;for(const i of this.animationDrawWorkers.keys()){const o=this.getUidAndviewId(i).uid,r=this.getUidAndviewId(i).viewId;r!==t&&this.activeDrawWorkShape(o,[void 0,void 0],C.Done,r)}const e=new Map;for(const i of this.animationPointWorkers.keys()){const o=this.getUidAndviewId(i).uid,r=this.getUidAndviewId(i).viewId;if(r!==t){const s=e.get(o)||new Map;s.set(r,[void 0,void 0]),e.set(o,s)}}if(e.size)for(const[i,o]of e.entries())this.activePointWorkShape(i,o);this.runAnimation()}activePointWorkShape(t,e){var o;if(this.roomMember.getRoomMember(t))for(const[r,s]of e.entries()){const a=this.getKey(t,r);let c=!1;const l=this.control.viewContainerManager.getAllViews().map(u=>u==null?void 0:u.id);for(const u of l)if(u&&u!==r){const M=this.getKey(t,u),g=this.animationDrawWorkers.get(M);if((g==null?void 0:g.workState)===C.Start||(g==null?void 0:g.workState)===C.Doing||!1){c=!0;break}else if(this.removeTimerId&&(clearTimeout(this.removeTimerId),this.removeTimerId=void 0),g)this.activeDrawWorkShape(t,[void 0,void 0],C.Done,u),this.runAnimation();else{const v=this.animationPointWorkers.get(M);if(v)v.animationWorkData=[void 0,void 0],v.animationIndex=0,v.freeze=!1;else{const m={animationIndex:0,animationWorkData:[void 0,void 0],freeze:!1};this.animationPointWorkers.set(M,m)}}}const d=this.animationPointWorkers.get(a);if(s){if(!d){const u={animationIndex:0,animationWorkData:s,freeze:c};(o=this.animationPointWorkers)==null||o.set(a,u);return}d.animationWorkData=s,d.animationIndex=0,d.freeze=c}}}getKey(t,e){return`${t}${xe}${e}`}getUidAndviewId(t){const[e,i]=t.split(xe);return{uid:e,viewId:i}}animationCursor(){this.animationId=void 0;const t=Date.now();this.animationPointWorkers.forEach((e,i)=>{const{uid:o,viewId:r}=this.getUidAndviewId(i);if(e.freeze)return;const a=e.animationIndex,c=this.roomMember.getRoomMember(o);if(c){e.animationWorkData.length-1>a&&(e.animationIndex=a+2);const l=e.animationWorkData[a],d=e.animationWorkData[a+1],u=this.cursorInfoMap.get(r)||new Map;se(l)&&se(d)?u.set(c.memberId,{x:l,y:d,roomMember:c,timestamp:t}):u.has(c.memberId)&&u.delete(c.memberId),u.size?this.cursorInfoMap.set(r,u):this.cursorInfoMap.has(r)&&(this.cursorInfoMap.delete(r),this.internalMsgEmitter.emit([U.Cursor,r],[])),e.animationWorkData.length-1<=e.animationIndex&&this.animationPointWorkers.delete(i)}}),this.animationDrawWorkers.forEach((e,i)=>{const{uid:o,viewId:r}=this.getUidAndviewId(i),s=e.animationIndex,a=this.roomMember.getRoomMember(o);if(a){e.animationWorkData.length-1>s&&(e.animationIndex=s+2);const c=e.animationWorkData[s],l=e.animationWorkData[s+1],d=this.cursorInfoMap.get(r)||new Map;se(c)&&se(l)?d.set(a.memberId,{x:c,y:l,roomMember:a,timestamp:t}):d.has(a.memberId)&&d.delete(a.memberId),d.size?this.cursorInfoMap.set(r,d):this.cursorInfoMap.has(r)&&(this.cursorInfoMap.delete(r),this.internalMsgEmitter.emit([U.Cursor,r],[])),e.animationWorkData.length-1<=e.animationIndex&&this.animationDrawWorkers.delete(i)}});for(const[e,i]of this.cursorInfoMap)if(i){const o=[],r=[];for(const[s,a]of i.entries()){const{timestamp:c,...l}=a;c+this.expirationTime<t?r.push(s):o.push(l)}if(r.length)for(const s of r)i.delete(s);i.size?this.cursorInfoMap.set(e,i):this.cursorInfoMap.delete(e),this.internalMsgEmitter.emit([U.Cursor,e],o)}(this.animationPointWorkers.size||this.animationDrawWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}activeDrawWorkShape(t,e,i,o){var c,l;if(!this.roomMember.getRoomMember(t))return;const s=this.getKey(t,o);if(i===C.Start){const d=this.animationPointWorkers.get(s);if(d)d.animationWorkData=[],d.animationIndex=0,d.freeze=!0;else{const u={animationIndex:0,animationWorkData:[],freeze:!0};(c=this.animationDrawWorkers)==null||c.set(s,u)}}else if(i===C.Done){const d=this.animationPointWorkers.get(s);d&&(d.freeze=!1)}const a=this.animationDrawWorkers.get(s);if(e){if(!a){const d={animationIndex:0,animationWorkData:e,workState:i};(l=this.animationDrawWorkers)==null||l.set(s,d);return}a.animationWorkData=e,a.animationIndex=0,a.workState=i}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}sendEvent(t,e){var i;(i=this.eventCollector)==null||i.dispatch({type:$e.Cursor,op:se(t[0])&&se(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0],viewId:e})}collectServiceCursor(t){const{op:e,uid:i,workState:o,viewId:r}=t;if(i&&e&&o&&r){const s=this.control.viewContainerManager.focuedViewId;if(o===C.Done){if(r!==s){this.activeDrawWorkShape(i,[void 0,void 0],o,r),this.runAnimation();return}this.removeTimerId&&(clearTimeout(this.removeTimerId),this.removeTimerId=void 0,this.asyncEndInfo&&this.asyncEndInfo.viewId!==r&&this.asyncEndInfo.uid===i&&this.activeDrawWorkShape(i,[void 0,void 0],C.Done,this.asyncEndInfo.viewId)),this.asyncEndInfo={uid:i,viewId:r},this.removeTimerId=setTimeout(()=>{this.removeTimerId=void 0,this.activeDrawWorkShape(i,[void 0,void 0],C.Done,r),this.runAnimation()},this.expirationTime)}if(se(e[0])&&se(e[1])){const a=this.control.viewContainerManager.transformToOriginPoint(e,r);this.activeDrawWorkShape(i,a,o,r)}this.runAnimation()}}unabled(){var t;(t=this.eventCollector)==null||t.dispatch({type:$e.Cursor,op:[void 0,void 0],viewId:this.control.viewContainerManager.focuedViewId})}destroy(){var t;(t=this.eventCollector)==null||t.destroy()}}class Ie{constructor(){p(this,"emtType");p(this,"control");p(this,"mainEngine")}static dispatch(t,e,i){var o;(o=Ne.InternalMsgEmitter)==null||o.emit([t,e],i)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,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(t){var e,i,o;for(const[r,s]of t)(e=this.mainEngine)==null||e.queryTaskBatchData(s).forEach(a=>{var c;(c=this.mainEngine)==null||c.taskBatchData.delete(a)}),(i=this.mainEngine)==null||i.taskBatchData.add(r);(o=this.mainEngine)==null||o.runAnimation()}collectForServiceWorker(t){Je(()=>{t.forEach(e=>{var r,s,a;(r=this.serviceColloctor)==null||r.dispatch(e);const{viewId:i,undoTickerId:o}=e;o&&i&&((a=(s=this.mainEngine)==null?void 0:s.internalMsgEmitter)==null||a.emit("undoTickerEnd",o,i))})},this.mainEngine.maxLastSyncTime)}}class Yg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.ZIndexActive)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workId:i,isActive:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[],l=[];i===O&&c.push([{workId:i,msgType:L.UpdateNode,dataType:Z.Local,isActiveZIndex:o,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!1,viewId:r,scenePath:a},{workId:i,msgType:L.UpdateNode,emitEventType:this.emitEventType}]),c.length&&this.collectForLocalWorker(c),l.length&&this.collectForServiceWorker(l)}}class Pg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.CopyNode)}collect(e){var a;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o}=e,r=this.control.viewContainerManager.getView(o);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath;for(const c of i){const l=c.toString(),u=this.serviceColloctor.isLocalId(l)?this.serviceColloctor.transformKey(c):l,M=(a=this.serviceColloctor.getStorageData(o,s))==null?void 0:a[u];if(M){if(c===O){const g=M&&this.copySelector({viewId:o,store:M});g&&this.pasteSelector({...g,viewId:o,scenePath:s});break}if(M.toolsType===N.Text&&M.opt&&M.opt.workState&&M.opt.workState!==C.Done){const g=M&&this.copyText({viewId:o,store:M});g&&this.pasteText({...g,viewId:o,scenePath:s,key:u,store:M});break}}}}copyText(e){const{viewId:i,store:o}=e,r=this.control.viewContainerManager.getView(i);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],c=o.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:a,textCenter:l}}pasteText(e){var m,f;const{bgCenter:i,textCenter:o,store:r,key:s,viewId:a,scenePath:c}=e,l=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!l)return;const d=Math.floor(Math.random()*30+1),u=Date.now(),M=((m=l.cameraOpt)==null?void 0:m.scale)||1,g=i&&o&&[i[0]-o[0]+d,i[1]-o[1]+d]||[d/M,d/M],v=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+u;if(this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,a),r.toolsType===N.Text&&r.opt){const w=r.opt;if(w&&w.boxPoint&&w.text){w.workState=C.Done;const I=w.boxPoint;w.boxPoint=[I[0]+g[0],I[1]+g[1]],w.workState=C.Done;const z=this.control.viewContainerManager.transformToOriginPoint(w.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:v,x:z[0],y:z[1],opt:w,scale:((f=l.cameraOpt)==null?void 0:f.scale)||1,type:je.Text,isActive:!1,viewId:a,scenePath:c}),this.collectForServiceWorker([{...r,opt:w,type:L.FullWork,workId:v,viewId:a,scenePath:c,undoTickerId:u}])}}}copySelector(e){var v,m,f,w,I,z,T,j;const{viewId:i,store:o}=e,r=this.control.viewContainerManager.getView(i),s=o.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((v=r.cameraOpt)==null?void 0:v.centerX)||0,centerY:((m=r.cameraOpt)==null?void 0:m.centerY)||0,scale:((f=r.cameraOpt)==null?void 0:f.scale)||1}},l=(w=r.displayer.canvasBgRef.current)==null?void 0:w.getBoundingClientRect(),d=(z=(I=r.displayer)==null?void 0:I.floatBarCanvasRef.current)==null?void 0:z.getBoundingClientRect(),u=l&&[l.x+l.width/2,l.y+l.height/2],M=d&&[d.x+d.width/2,d.y+d.height/2],g=u&&r.viewData&&r.viewData.convertToPointInWorld({x:u[0],y:u[1]}),y=M&&r.viewData&&r.viewData.convertToPointInWorld({x:M[0],y:M[1]});g&&y&&(c.offset={x:g.x-y.x,y:g.y-y.y});for(const x of s){const A=(j=(T=this.serviceColloctor)==null?void 0:T.getStorageData(r.id,r.focusScenePath))==null?void 0:j[x];A&&a.set(x,A)}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var v;const{copyStores:i,copyCoordInfo:o,viewId:r,scenePath:s}=e,a=this.control.viewContainerManager.getView(r);if(!i.size||!this.serviceColloctor||!a)return;const{offset:c,cameraOpt:l}=o,d=Math.floor(Math.random()*30+1),u=[c.x+d,c.y+d],M=Date.now(),g=[],y=[];this.mainEngine.internalMsgEmitter.emit("undoTickerStart",M,r);for(const[m,f]of i.entries()){const I=(this.serviceColloctor.isLocalId(m)?m:this.serviceColloctor.getLocalId(m.toString()))+"-"+M,z={useAnimation:!1};if(f.toolsType===N.Text&&f.opt){const T=f.opt;if(T&&T.boxPoint&&T.text){T.workState=C.Done;const j=T.boxPoint;T.boxPoint=[j[0]+u[0],j[1]+u[1]],T.workState=C.Done;const x=this.control.viewContainerManager.transformToOriginPoint(T.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:I,x:x[0],y:x[1],opt:T,scale:((v=a.cameraOpt)==null?void 0:v.scale)||1,type:je.Text,isActive:!1,viewId:r,scenePath:s})}y.push({...f,opt:T,type:L.FullWork,workId:I,viewId:r,scenePath:s,undoTickerId:M});continue}if(f.toolsType===N.Image&&(f.opt.uuid=I,f.opt.centerX=f.opt.centerX+u[0],f.opt.centerY=f.opt.centerY+u[1]),f.ops){const T=vd(f.ops).map((x,A)=>{const W=A%3;return W===0?x+u[0]:W===1?x+u[1]:x}),j=Nd(T);f.ops=j}y.push({...f,updateNodeOpt:z,type:L.FullWork,workId:I,viewId:r,scenePath:s,undoTickerId:M}),g.push([{...f,updateNodeOpt:z,workId:I,msgType:L.FullWork,dataType:Z.Local,emitEventType:S.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r,undoTickerId:M},{workId:I,msgType:L.FullWork,emitEventType:S.CopyNode}])}g.length&&this.collectForLocalWorker(g),y.length&&this.collectForServiceWorker(y)}}function St(n,t,e){return"#"+((n<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function ue(n,t=1){return"rgba("+parseInt("0x"+n.slice(1,3))+","+parseInt("0x"+n.slice(3,5))+","+parseInt("0x"+n.slice(5,7))+","+t+")"}function at(n,t,e,i=1){return`rgba(${n},${t},${e},${i})`}function oi(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),o=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[St(e,i,o),r]}function ct(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),o=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[e,i,o,r]}function Hi(n){return n==="transparent"}class Rg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetColorNode)}setTextColor(e,i,o,r){const{fontColor:s,fontBgColor:a}=o;i.opt&&(s&&(i.opt.fontColor=s),a&&(i.opt.fontColor=a),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:i.opt,viewId:r,canSync:!0,canWorker:!0}))}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,strokeColor:o,fillColor:r,fontColor:s,fontBgColor:a,viewId:c}=e,l=this.control.viewContainerManager.getView(c);if(!(l!=null&&l.displayer))return;const d=l.focusScenePath,u=[...i],M=this.serviceColloctor.storage,g=[],y={};for(;u.length;){const v=u.pop();if(!v)continue;const m=v.toString(),f=this.serviceColloctor.isLocalId(m),w=f?this.serviceColloctor.transformKey(v):m;let I=m;!f&&this.serviceColloctor.isOwn(I)&&(I=this.serviceColloctor.getLocalId(I));const z=M[c][d][w]||void 0;if(z){const T=z.updateNodeOpt||{};if(s||a){if(s){T.fontColor=s;const[x,A,W,b]=ct(s);y.textColor=[x,A,W],y.textOpacity=b}if(a){T.fontBgColor=a;const[x,A,W,b]=ct(a);y.textBgColor=[x,A,W],y.textBgOpacity=b}if(z.toolsType===N.Text&&z.opt){this.setTextColor(I,oe(z),T,c);continue}}if(o){T.strokeColor=o;const[x,A,W,b]=ct(o);y.strokeColor=[x,A,W],y.strokeOpacity=b}if(r)if(T.fillColor=Hi(r)?"transparent":r,Hi(r))y.fillColor=void 0,y.fillOpacity=void 0;else{const[x,A,W,b]=ct(r);y.fillColor=[x,A,W],y.fillOpacity=b}const j={workId:I,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:T,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c};g.push([j,{workId:I,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}g.length&&this.collectForLocalWorker(g),Object.keys(y).length&&setTimeout(()=>{var v;(v=this.control.room)==null||v.setMemberState(y)},0)}}class Bg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.ZIndexNode);p(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.min)||0}getMaxZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.max)||0}setMaxZIndex(e,i){const o=this.getMinZIndex(i);this.zIndexMap.set(i,{min:o,max:e})}setMinZIndex(e,i){const o=this.getMaxZIndex(i);this.zIndexMap.set(i,{min:e,max:o})}addMaxLayer(e){const i=this.getMaxZIndex(e)+1;this.setMaxZIndex(i,e)}addMinLayer(e){const i=this.getMinZIndex(e)-1;this.setMinZIndex(i,e)}correct(e){const i=e.sort((o,r)=>o[1]-r[1]);for(let o=1;o<i.length;o++){const r=i[o][1],s=i[o-1][1];r<=s&&(i[o][1]=s+1)}return i}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,layer:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,d=[],u=[];for(;c.length;){const g=c.pop();if(!g)continue;const y=g.toString(),v=this.serviceColloctor.isLocalId(y),m=v?this.serviceColloctor.transformKey(g):y;let f=y;!v&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const w=oe(l[r][a][m]);let I;if(w&&f===O){if(w.selectIds){u.push(...w.selectIds),u.sort((x,A)=>{var Y,Q,P,X;const W=((Q=(Y=l[M(x,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:Q.zIndex)||0,b=((X=(P=l[M(x,this.serviceColloctor)])==null?void 0:P.opt)==null?void 0:X.zIndex)||0;return W>b?1:x<A?-1:0});const z=w.updateNodeOpt||{};z.zIndexLayer=o;const T={workId:g,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:z,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},j=new Map;o===Ue.Top?(this.addMaxLayer(r),I=this.getMaxZIndex(r)):(this.addMinLayer(r),I=this.getMinZIndex(r)),u.forEach(x=>{var Y,Q,P;const A=(Y=this.serviceColloctor)==null?void 0:Y.isLocalId(x);let W=A&&((Q=this.serviceColloctor)==null?void 0:Q.transformKey(x))||x;const b=l[r][a][W];!A&&((P=this.serviceColloctor)!=null&&P.isOwn(W))&&(W=this.serviceColloctor.getLocalId(W)),z.zIndex=I,b!=null&&b.opt&&(b.opt.zIndex=I),b!=null&&b.opt&&j.set(W,{updateNodeOpt:b.updateNodeOpt,opt:b.opt})}),T.selectStore=j,T.willSerializeData=!0,d.push([T,{workId:g,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}continue}}d.length&&this.collectForLocalWorker(d);function M(g,y){return y.isLocalId(g)&&y.transformKey(g)||g}}}class Wg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.TranslateNode);p(this,"undoTickerId");p(this,"oldRect");p(this,"cachePosition")}collect(e){var m,f,w,I;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,position:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...i],d=(m=this.serviceColloctor)==null?void 0:m.storage,u=[],M=(f=a.displayer.canvasBgRef.current)==null?void 0:f.getBoundingClientRect(),g=(I=(w=a.displayer)==null?void 0:w.floatBarCanvasRef.current)==null?void 0:I.getBoundingClientRect();let y=!1;const v=r===C.Start&&Date.now()||void 0;for(v&&(this.undoTickerId=v,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",v,s)),M&&g&&this.oldRect&&(this.oldRect.x<M.x&&g.x>this.oldRect.x||this.oldRect.y<M.y&&g.y>this.oldRect.y||this.oldRect.x+this.oldRect.width>M.x+M.width&&g.x<this.oldRect.x||this.oldRect.y+this.oldRect.height>M.y+M.height&&g.y<this.oldRect.y)&&(y=!0),g&&(this.oldRect=g);l.length;){const z=l.pop();if(!z)continue;const T=z.toString(),j=this.serviceColloctor.isLocalId(T),x=j&&this.serviceColloctor.transformKey(z)||T;let A=T;!j&&this.serviceColloctor.isOwn(A)&&(A=this.serviceColloctor.getLocalId(A));const W=d[s][c][x];if(W&&A===O){if(W.selectIds&&(r===C.Start&&(this.cachePosition=o),this.cachePosition)){const b=W.updateNodeOpt||{};b.translate=[o.x-this.cachePosition.x,o.y-this.cachePosition.y],b.workState=r;const Y={workId:z,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:b,emitEventType:this.emitEventType,willRefreshSelector:y,willSyncService:!0,textUpdateForWoker:!1,viewId:s};r===C.Done&&(Y.willRefreshSelector=!0,Y.textUpdateForWoker=!0,Y.willSerializeData=!0,Y.undoTickerId=this.undoTickerId,this.cachePosition=void 0),u.push([Y,{workId:z,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}continue}}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}class Ug extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.DeleteNode)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o}=e,r=this.control.viewContainerManager.getView(o);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,c=[...i],l=[],d=[],u=Date.now();for(;c.length;){const M=c.pop();if(!M)continue;const g=M.toString(),y=this.serviceColloctor.isLocalId(g),v=y?this.serviceColloctor.transformKey(M):g,m=a[o][s][v];if(m){let f=g;if(!y&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f)),m.toolsType===N.Text){this.control.textEditorManager.delete(f,!0,!0);continue}d.push(f)}}d.length&&(l.push([{msgType:L.RemoveNode,emitEventType:S.DeleteNode,removeIds:d,dataType:Z.Local,willSyncService:!0,willRefresh:!0,undoTickerId:u,viewId:o},void 0]),this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,o),this.collectForLocalWorker(l))}}class $g extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.ScaleNode);p(this,"undoTickerId");p(this,"targetBox",new Map);p(this,"targetText",new Map);p(this,"cacheTextInfo",new Map)}async collect(e){var y,v,m,f,w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,box:o,workState:r,viewId:s,dir:a}=e,c=this.control.viewContainerManager.getView(s);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,d=[...i],u=(y=this.serviceColloctor)==null?void 0:y.storage,M=[],g=r===C.Start&&Date.now()||void 0;for(g&&(this.undoTickerId=g,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",g,s));d.length;){const I=d.pop();if(!I)continue;const z=I.toString(),T=this.serviceColloctor.isLocalId(z),j=T&&this.serviceColloctor.transformKey(I)||z;let x=z;!T&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const A=u[s][l][j];if(A&&x===O&&A.selectIds){const W=A.updateNodeOpt||{};if(W.dir=a,W.box=o,W.workState=r,r===C.Start&&o){for(const Y of A.selectIds){const Q=(v=this.serviceColloctor)==null?void 0:v.isLocalId(Y),P=Q&&((m=this.serviceColloctor)==null?void 0:m.transformKey(Y))||Y;let X=P;!Q&&((f=this.serviceColloctor)!=null&&f.isOwn(P))&&(X=this.serviceColloctor.getLocalId(P));const q=this.control.textEditorManager.get(X);q&&r===C.Start&&this.targetText.set(X,oe(q))}this.targetText.size&&this.targetBox.set(x,o)}if(this.targetText.size&&r!==C.Start){const Y=this.targetBox.get(x);if(Y){const Q=[o.w/Y.w,o.h/Y.h];for(const[P,X]of this.targetText.entries()){const{opt:q}=X,_=Math.floor(q.fontSize*Q[0]),G=this.cacheTextInfo.get(P),J=!G&&q.fontSize!==_||G&&G.fontSize!==_||!1,K=(w=this.control.textEditorManager.get(P))==null?void 0:w.opt;if(J&&K&&q.boxSize&&q.boxPoint){const D=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:P,opt:{...K,fontSize:_},viewId:s,canSync:!1,canWorker:!1});D&&this.cacheTextInfo.set(P,{fontSize:D.opt.fontSize,boxSize:D.opt.boxSize,boxPoint:D.opt.boxPoint})}}W.textInfos=this.cacheTextInfo}}const b={workId:I,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:W,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===C.Done&&(b.willSerializeData=!0,b.undoTickerId=this.undoTickerId,this.targetBox.delete(x),this.targetText.clear()),M.push([b,{workId:I,msgType:L.UpdateNode,emitEventType:this.emitEventType}]);continue}}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),M.length&&this.collectForLocalWorker(M)}}class Fg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.RotateNode);p(this,"undoTickerId");p(this,"cacheOriginRotate",0)}collect(e){var g,y,v,m,f;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,angle:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...i],d=(g=this.serviceColloctor)==null?void 0:g.storage,u=[],M=r===C.Start&&Date.now()||void 0;for(M&&(this.undoTickerId=M,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",M,s));l.length;){const w=l.pop();if(!w)continue;const I=w.toString(),z=this.serviceColloctor.isLocalId(I),T=z&&this.serviceColloctor.transformKey(w)||I;let j=I;!z&&this.serviceColloctor.isOwn(j)&&(j=this.serviceColloctor.getLocalId(j));const x=d[s][c][T];if(x&&j===O){if(((y=x.selectIds)==null?void 0:y.length)===1){const A=x.selectIds[0];if(r===C.Start){const Q=((v=this.serviceColloctor)==null?void 0:v.isLocalId(A))&&((m=this.serviceColloctor)==null?void 0:m.transformKey(A))||A,P=d[s][c][Q];this.cacheOriginRotate=((f=P==null?void 0:P.opt)==null?void 0:f.rotate)||0}const W=x.updateNodeOpt||{};W.angle=(o+this.cacheOriginRotate)%360,W.workState=r;const b={workId:w,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:W,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:s};r===C.Done&&(b.willRefreshSelector=!0,b.willSerializeData=!0,b.undoTickerId=this.undoTickerId,this.cacheOriginRotate=0),u.push([b,{workId:w,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}continue}}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}function Qg(n){switch(n){case N.Text:return je.Text;case N.SpeechBalloon:case N.Star:case N.Ellipse:case N.Rectangle:case N.Triangle:case N.Rhombus:case N.Polygon:return je.Shape}}class Hg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetFontStyle)}setTextStyle(e,i,o,r,s){const{bold:a,underline:c,lineThrough:l,italic:d,fontSize:u}=o;if(i.toolsType){const M=Qg(i.toolsType);M===je.Text&&(i.opt&&(a&&(i.opt.bold=a),pe(c)&&(i.opt.underline=c),pe(l)&&(i.opt.lineThrough=l),d&&(i.opt.italic=d),u&&(i.opt.fontSize=u)),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:i.opt,viewId:r,canSync:!0,canWorker:!0},s)),je.Shape}}collect(e){var v,m,f,w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,bold:o,italic:r,lineThrough:s,underline:a,viewId:c,fontSize:l}=e,d=this.control.viewContainerManager.getView(c);if(!(d!=null&&d.displayer))return;const u=d.focusScenePath,M=[...i],g=this.serviceColloctor.storage,y={};for(;M.length;){const I=M.pop();if(!I)continue;const z=I.toString(),T=this.serviceColloctor.isLocalId(z),j=T?this.serviceColloctor.transformKey(I):z;let x=z;!T&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const A=g[c][u][j]||void 0;if(A){const W=A.updateNodeOpt||{};if(o&&(W.bold=o,y.bold=o==="bold"),r&&(W.italic=r,y.italic=r==="italic"),pe(s)&&(W.lineThrough=s,y.lineThrough=s),pe(a)&&(W.underline=a,y.underline=a),l&&(W.fontSize=l,y.textSize=l),A.toolsType===N.Text&&A.opt){this.setTextStyle(x,oe(A),W,c);continue}if(A&&x===O&&((v=A.selectIds)!=null&&v.length))for(const b of A.selectIds){const Y=(m=this.serviceColloctor)==null?void 0:m.isLocalId(b);let Q=Y&&((f=this.serviceColloctor)==null?void 0:f.transformKey(b))||b;const P=g[c][u][Q]||void 0;if(!Y&&((w=this.serviceColloctor)!=null&&w.isOwn(Q))&&(Q=this.serviceColloctor.getLocalId(Q)),P&&P.toolsType===N.Text&&A.opt){this.setTextStyle(Q,oe(P),W,c);continue}}}}Object.keys(y).length&&setTimeout(()=>{var I;(I=this.control.room)==null||I.setMemberState(y)},0)}}class Zg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetPoint);p(this,"undoTickerId")}collect(e){var w;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:i,pointMap:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=(w=this.serviceColloctor)==null?void 0:w.storage,d=[],u=r===C.Start&&Date.now()||void 0;u&&(this.undoTickerId=u,this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,s));const M=i;if(!M)return;const g=M.toString(),y=this.serviceColloctor.isLocalId(g),v=y&&this.serviceColloctor.transformKey(M)||g;let m=g;!y&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const f=l[s][c][v];if(f&&m===O&&f.selectIds){const I=f.updateNodeOpt||{};I.pointMap=o,I.workState=r;const z={workId:M,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:I,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===C.Done&&(z.undoTickerId=this.undoTickerId),d.push([z,{workId:M,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),d.length&&this.collectForLocalWorker(d)}}class Gg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetLock)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,isLocked:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,d=[],u=Date.now();for(;c.length;){const M=c.pop();if(!M)continue;const g=M.toString(),y=this.serviceColloctor.isLocalId(g),v=y?this.serviceColloctor.transformKey(M):g;let m=g;!y&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const f=l[r][a][v]||void 0;if(f){const w=f.updateNodeOpt||{};w.isLocked=o;const I={workId:m,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:w,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r};d.push([I,{workId:m,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("undoTickerStart",u,r),d.length&&this.collectForLocalWorker(d)}}class Vg extends Ie{constructor(){super(...arguments);p(this,"emitEventType",S.SetShapeOpt)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o,...r}=e,s=this.control.viewContainerManager.getView(o);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,d=[];for(;c.length;){const u=c.pop();if(!u)continue;const M=u.toString(),g=this.serviceColloctor.isLocalId(M),y=g?this.serviceColloctor.transformKey(u):M;let v=M;!g&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const m=l[o][a][y]||void 0;if(m){const f={...m.updateNodeOpt,...r,willRefresh:!0};if(m&&v===O){const w={workId:v,msgType:L.UpdateNode,dataType:Z.Local,updateNodeOpt:f,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:o};d.push([w,{workId:v,msgType:L.UpdateNode,emitEventType:this.emitEventType}])}}}d.length&&this.collectForLocalWorker(d)}}class F{constructor(t){p(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case S.TranslateNode:return new Wg;case S.ZIndexNode:return new Bg;case S.ZIndexActive:return new Yg;case S.CopyNode:return new Pg;case S.SetColorNode:return new Rg;case S.DeleteNode:return new Ug;case S.ScaleNode:return new $g;case S.RotateNode:return new Fg;case S.SetFontStyle:return new Hg;case S.SetPoint:return new Zg;case S.SetLock:return new Gg;case S.SetShapeOpt:return new Vg}}getBuilder(t){return this.builders.get(t)}registerForMainEngine(t,e){return this.builders.forEach(i=>{i&&i.registerForMainEngine(t,e)}),this}destroy(){this.builders.forEach(t=>{t&&t.destroy()})}static emitMethod(t,e,i){Ie.dispatch(t,e,i)}}class Jg{constructor(){p(this,"maxLastSyncTime",500)}setCurrentToolsData(t){this.currentToolsData=t}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(t){this.currentLocalWorkData=t}getWorkId(){return this.currentLocalWorkData.workId}getWorkState(){return this.currentLocalWorkData.workState}}class Kg extends Jg{constructor(e){var r,s;super();p(this,"isActive",!1);p(this,"currentToolsData");p(this,"currentLocalWorkData");p(this,"control");p(this,"internalMsgEmitter");p(this,"taskBatchData",new Set);p(this,"fullWorker");p(this,"subWorker");p(this,"fullWorkerUrl");p(this,"subWorkerUrl");p(this,"methodBuilder");p(this,"zIndexNodeMethod");p(this,"subWorkerDrawCount",0);p(this,"wokerDrawCount",0);p(this,"maxDrawCount",0);p(this,"cacheDrawCount",0);p(this,"reRenders",[]);p(this,"localWorkViewId");p(this,"localPointsBatchData",[]);p(this,"tasksqueue",new Map);p(this,"useTasksqueue",!1);p(this,"useTasksClockId");p(this,"mianTasksqueueCount");p(this,"workerTasksqueueCount");p(this,"snapshotMap",new Map);p(this,"boundingRectMap",new Map);p(this,"clearAllResolve");p(this,"delayWorkStateToDone");p(this,"delayWorkStateToDoneResolve");p(this,"undoTickerId");p(this,"animationId");p(this,"tmpImageConfigMap",new Map);const{control:i,internalMsgEmitter:o}=e;this.control=i,this.maxLastSyncTime=(((s=(r=this.control.pluginOptions)==null?void 0:r.syncOpt)==null?void 0:s.interval)||this.maxLastSyncTime)*.5,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl,this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl,this.internalMsgEmitter=o,this.currentLocalWorkData={workState:C.Pending}}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===N.Pencil||e===N.LaserPen||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon}get isCanDrawWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===N.Pencil||e===N.LaserPen||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Triangle||e===N.Rhombus}get isUseZIndex(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===N.Pencil||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Text||e===N.Image}get isCanRecordUndoRedo(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===N.Pencil||e===N.Eraser||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Text||e===N.Image}get isCanSentCursor(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===N.Pencil||e===N.Text||e===N.LaserPen||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Triangle||e===N.Rhombus}init(){this.on(),this.internalMsgEmitterListener(),this.isActive=!0}on(){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.fullWorker.onmessage=e=>{if(e.data){const{render:i,sp:o,drawCount:r,workerTasksqueueCount:s}=e.data;if(s&&(this.workerTasksqueueCount=s),o!=null&&o.length&&this.collectorSyncData(o),!r&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}r&&(this.wokerDrawCount=r,this.wokerDrawCount<1/0?this.maxDrawCount=Math.max(this.maxDrawCount,this.wokerDrawCount):this.maxDrawCount=0,i!=null&&i.length&&(this.viewContainerManager.render(i),this.wokerDrawCount<this.subWorkerDrawCount&&(this.reRenders.forEach(a=>{a.isUnClose=!1}),this.viewContainerManager.render(this.reRenders),this.reRenders.length=0)))}},this.subWorker.onmessage=e=>{if(e.data){const{render:i,drawCount:o,sp:r}=e.data;if(r!=null&&r.length&&this.collectorSyncData(r),!o&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}o&&(this.subWorkerDrawCount=o,this.wokerDrawCount<1/0&&(this.maxDrawCount=Math.max(this.maxDrawCount,this.subWorkerDrawCount)),i!=null&&i.length&&(this.subWorkerDrawCount>this.wokerDrawCount&&(i.forEach(s=>s.isUnClose=!0),this.reRenders.push(...i)),this.wokerDrawCount<1/0&&this.viewContainerManager.render(i)))}}}collectorSyncData(e){var o,r;let i=!1;for(const s of e){const{type:a,selectIds:c,opt:l,selectRect:d,strokeColor:u,fillColor:M,willSyncService:g,isSync:y,undoTickerId:v,imageBitmap:m,canvasHeight:f,canvasWidth:w,rect:I,op:z,canTextEdit:T,points:j,selectorColor:x,canRotate:A,scaleType:W,textOpt:b,toolsType:Y,workId:Q,viewId:P,dataType:X,canLock:q,isLocked:_,shapeOpt:G,toolsTypes:J}=s;if(!P){console.error("collectorSyncData",s);return}const K=s.scenePath||this.viewContainerManager.getCurScenePath(P);switch(a){case L.Select:{const D=c!=null&&c.length?{...d,selectIds:c,canvasHeight:f,canvasWidth:w,points:j}:void 0;D&&(l!=null&&l.strokeColor)&&(D.selectorColor=l.strokeColor),D&&x&&(D.selectorColor=x),D&&u&&(D.strokeColor=u),D&&(l!=null&&l.fillColor)&&(D.fillColor=l.fillColor),D&&M&&(D.fillColor=M),D&&pe(A)&&(D.canRotate=A),D&&W&&(D.scaleType=W),D&&T&&(D.canTextEdit=T),D&&b&&(D.textOpt=b),D&&pe(q)&&(D.canLock=q),D&&pe(_)&&(D.isLocked=_),D&&G&&(D.shapeOpt=G),D&&J&&(D.toolsTypes=J),P&&this.viewContainerManager.showFloatBar(P,!!D,D),g&&((o=this.collector)==null||o.dispatch({type:a,selectIds:c,opt:l,isSync:y,viewId:P,scenePath:K}));break}case L.Snapshot:if(m&&K){const D=this.snapshotMap.get(K);D&&D(m)}break;case L.BoundingBox:if(I&&K){const D=this.boundingRectMap.get(K);D&&D(I)}break;case L.Cursor:z&&this.control.cursor.collectServiceCursor({...s});break;case L.Clear:P&&this.viewContainerManager.showFloatBar(P,!1),P&&this.clearAllResolve&&this.clearAllResolve(P);break;case L.TextUpdate:if(Y===N.Text&&Q&&P){const D=this.viewContainerManager.transformToOriginPoint((l==null?void 0:l.boxPoint)||[0,0],P),B=(l==null?void 0:l.boxSize)||[0,0],$=(r=this.viewContainerManager.getView(P))==null?void 0:r.cameraOpt;l?this.control.textEditorManager.updateTextForWorker({x:D[0],y:D[1],w:B[0],h:B[1],scale:($==null?void 0:$.scale)||1,workId:Q,opt:l,dataType:X,viewId:P,canSync:g||!1,canWorker:!1}):this.control.textEditorManager.delete(Q,g||!1,!1)}break;case L.GetTextActive:Y===N.Text&&Q&&P&&this.control.textEditorManager.updateTextForWorker({workId:Q,isActive:!0,viewId:P,dataType:Z.Local,canWorker:!1,canSync:!0},Date.now());break;default:i=!0;break}!i&&v&&this.internalMsgEmitter.emit("undoTickerEnd",v,P)}i&&Je(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var i,o,r,s;for(const a of e){const{type:c,op:l,workId:d,index:u,removeIds:M,ops:g,opt:y,updateNodeOpt:v,toolsType:m,isSync:f,undoTickerId:w,viewId:I}=a;if(!I){console.error("collectorAsyncData",a);return}const z=a.scenePath||this.viewContainerManager.getCurScenePath(I);switch(c){case L.DrawWork:{(i=this.collector)==null||i.dispatch({type:c,op:l,workId:d,index:u,isSync:f,viewId:I,scenePath:z});break}case L.FullWork:{(o=this.collector)==null||o.dispatch({type:c,ops:g,workId:d,updateNodeOpt:v,opt:y,toolsType:m,isSync:f,viewId:I,scenePath:z});break}case L.UpdateNode:{(r=this.collector)==null||r.dispatch({type:c,updateNodeOpt:v,workId:d,opt:y,ops:g,op:l,isSync:f,viewId:I,scenePath:z});break}case L.RemoveNode:{M&&this.control.textEditorManager.deleteBatch(M,!1,!1),(s=this.collector)==null||s.dispatch({type:c,removeIds:M,isSync:f,viewId:I,scenePath:z});break}}w&&this.internalMsgEmitter.emit("undoTickerEnd",w,I)}}async onLocalEventEnd(e,i){var c;const o=this.currentLocalWorkData.workState,r=this.viewContainerManager.getView(i);if(!r)return;const{focusScenePath:s,cameraOpt:a}=r;if(o===C.Start||o===C.Doing){const l=this.viewContainerManager.transformToScenePoint(e,i);this.pushPoint(l),this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:C.Done}),await new Promise(d=>{this.delayWorkStateToDone=setTimeout(()=>{var M,g;this.delayWorkStateToDone=void 0,this.runAnimation();const u=(M=this.currentLocalWorkData.workId)==null?void 0:M.toString();u&&s&&this.control.runEffectWork(()=>{var y;this.setShapeSelectorByWorkId(u,i),((y=this.currentToolsData)==null?void 0:y.toolsType)===N.Selector&&this.viewContainerManager.activeFloatBar(i)}),this.delayWorkStateToDoneResolve=d,((g=this.currentToolsData)==null?void 0:g.toolsType)===N.Selector&&this.viewContainerManager.activeFloatBar(i)},0)}).then(()=>{this.delayWorkStateToDoneResolve=void 0})}else if(((c=this.currentToolsData)==null?void 0:c.toolsType)===N.Text){const l=this.viewContainerManager.transformToScenePoint(e,i);if(this.localPointsBatchData[0]===l[0]&&this.localPointsBatchData[1]===l[1]){const d=this.currentToolsData.toolsOpt;d.workState=C.Doing,d.boxPoint=l,d.boxSize=[d.fontSize,d.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:Date.now().toString(),x:e[0],y:e[1],scale:(a==null?void 0:a.scale)||1,opt:d,type:je.Text,isActive:!0,viewId:i,scenePath:s},Date.now())}this.clearLocalPointsBatchData()}}onLocalEventDoing(e,i){const o=this.currentLocalWorkData.workState;if(o===C.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:C.Doing}),this.delayWorkStateToDone,o===C.Doing||this.delayWorkStateToDone){const r=this.viewContainerManager.transformToScenePoint(e,i);this.pushPoint(r),this.delayWorkStateToDone,!this.delayWorkStateToDone&&this.runAnimation();return}this.hoverCursor(e,i)}onLocalEventStart(e,i){var a,c,l,d,u,M,g;this.viewContainerManager.focuedViewId!==i&&this.viewContainerManager.setFocuedViewId(i),this.clearLocalPointsBatchData();const o=this.viewContainerManager.transformToScenePoint(e,i);if(this.pushPoint(o),((a=this.currentToolsData)==null?void 0:a.toolsType)===N.Text)return;this.control.textEditorManager.checkEmptyTextBlur();const r=((c=this.currentToolsData)==null?void 0:c.toolsType)===N.Selector?O:Date.now(),s=this.setZIndex(i);if(this.setCurrentLocalWorkData({workId:r,workState:C.Start,toolsOpt:s,viewId:i,undoTickerId:this.isCanRecordUndoRedo&&r||void 0}),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("undoTickerStart",r,i),this.maxDrawCount=0,this.cacheDrawCount=0,this.wokerDrawCount=0,this.subWorkerDrawCount=0,this.reRenders.length=0,r&&s&&((l=this.currentToolsData)!=null&&l.toolsType)&&this.prepareOnceWork({workId:r,toolsOpt:s,viewId:i},(d=this.currentToolsData)==null?void 0:d.toolsType),this.isCanDrawWork){const y=this.viewContainerManager.getCurScenePath(i);(M=this.collector)==null||M.dispatch({type:L.CreateWork,workId:r,toolsType:(u=this.currentToolsData)==null?void 0:u.toolsType,opt:s,viewId:i,scenePath:y}),y&&this.blurSelector(i,y)}else((g=this.currentToolsData)==null?void 0:g.toolsType)===N.Selector&&this.viewContainerManager.unActiveFloatBar(i);this.consume()}pushPoint(e){this.localPointsBatchData.push(e[0],e[1])}correctStorage(e,i,o){var c;const r=new Map,s=[];Object.keys(e).forEach(l=>{var u,M;const d=(M=(u=e[l])==null?void 0:u.opt)==null?void 0:M.zIndex;se(d)&&s.push([l,d])});const a=s.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,i),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,i));for(const[l,d]of a){if(!e[l])continue;const u=e[l];u.opt&&se(u.opt.zIndex)&&u.opt.zIndex!==d&&(u.opt.zIndex=d,r.set(l,u))}return r.size&&r.forEach((l,d)=>{var u;console.log("key",l),(u=this.collector)==null||u.updateValue(d,l,{viewId:i,scenePath:o,isSync:!0}),e[d]=l}),e}async originalEventLintener(e,i,o){if(this.isAbled())switch(e){case C.Start:this.setLocalWorkViewId(o),o&&this.onLocalEventStart(i,o);break;case C.Doing:o&&o===this.getLocalWorkViewId()&&this.onLocalEventDoing(i,o);break;case C.Done:o&&o===this.getLocalWorkViewId()&&await this.onLocalEventEnd(i,o);break}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var s,a,c;const i=e.toolsType,o=((s=this.currentToolsData)==null?void 0:s.toolsType)!==e.toolsType;super.setCurrentToolsData(e);const r=(a=this.viewContainerManager)==null?void 0:a.getAllViews();if(o){for(const l of r)if(l){const{id:d,focusScenePath:u}=l;o&&d&&u&&((c=this.collector)!=null&&c.hasSelector(d,u)&&this.blurSelector(d,u),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:L.UpdateTools,dataType:Z.Local,toolsType:i,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:wd}),this.runAnimation()}}setCurrentLocalWorkData(e){super.setCurrentLocalWorkData(e);const{workId:i}=e;(!this.isAbled()||!i)&&this.clearLocalPointsBatchData()}prepareOnceWork(e,i){const{workId:o,toolsOpt:r,viewId:s}=e;this.taskBatchData.add({msgType:L.CreateWork,workId:o,toolsType:i,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:Z.Local,isRunSubWork:this.isRunSubWork,viewId:s}),this.runAnimation()}createViewWorker(e,i){const{offscreenCanvasOpt:o,layerOpt:r,dpr:s,cameraOpt:a}=i;this.taskBatchData.add({msgType:L.Init,dataType:Z.Local,viewId:e,offscreenCanvasOpt:o,layerOpt:r,dpr:s,cameraOpt:a,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}),this.runAnimation()}destroyViewWorker(e,i=!1){var o;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:L.Destroy,dataType:Z.Local,viewId:e,isRunSubWork:!0}),this.runAnimation(),i||(o=this.collector)==null||o.dispatch({type:L.Clear,viewId:e})}onServiceDerive(e,i){var g,y,v,m;const{newValue:o,oldValue:r,viewId:s,scenePath:a}=i,c=oe(o)||{},l=e;let d=c.type;if(!o&&r&&(d=L.RemoveNode,r.toolsType===N.LaserPen))return;const u=(g=this.viewContainerManager.getView(s))==null?void 0:g.focusScenePath;if(u&&u!==a)return;if(d&&l){const f=c;if(f.workId=(y=this.collector)!=null&&y.isOwn(l)?(v=this.collector)==null?void 0:v.getLocalId(l):l,f.msgType=d,f.dataType=Z.Service,f.viewId=s,f.scenePath=a,f.selectIds&&(f.selectIds=f.selectIds.map(w=>{var I,z;return(I=this.collector)!=null&&I.isOwn(w)?(z=this.collector)==null?void 0:z.getLocalId(w):w})),f&&f.toolsType===N.Text||(r==null?void 0:r.toolsType)===N.Text){this.control.textEditorManager.onServiceDerive(f);return}this.taskBatchData.add(f)}this.runAnimation();const M=i.newValue&&((m=i.newValue.opt)==null?void 0:m.zIndex);if(this.zIndexNodeMethod&&se(M)){const f=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<M&&this.zIndexNodeMethod.setMaxZIndex(M,s),f>M&&this.zIndexNodeMethod.setMinZIndex(M,s)}}pullServiceData(e,i){var r,s,a,c;let o=(r=this.collector)==null?void 0:r.getStorageData(e,i);if(o){o=this.correctStorage(o,e,i);const l=Object.keys(o);for(const d of l){const u=(s=o[d])==null?void 0:s.type;if(u&&d){const M=o[d];if(M.workId=(a=this.collector)!=null&&a.isOwn(d)?(c=this.collector)==null?void 0:c.getLocalId(d):d,M.msgType=u,M.dataType=Z.Service,M.viewId=e,M.scenePath=i,M.useAnimation=!1,M.selectIds&&(M.selectIds=M.selectIds.map(g=>{var y,v;return(y=this.collector)!=null&&y.isOwn(g)?(v=this.collector)==null?void 0:v.getLocalId(g):g})),M.toolsType===N.Text){this.control.textEditorManager.onServiceDerive(M);continue}this.taskBatchData.add(M)}this.internalMsgEmitter.emit("excludeIds",l,e)}this.runAnimation()}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){this.animationId=void 0;const{workState:e,viewId:i,workId:o,undoTickerId:r}=this.currentLocalWorkData;if(!this.isAbled()&&this.clearLocalPointsBatchData(),this.tasksqueue.size){const s=this.consumeQueue();s.size&&(this.post(s),this.tasksqueue.clear())}else if(!this.delayWorkStateToDone){if(e!==C.Pending&&this.localPointsBatchData.length&&i){let s=!1;this.wokerDrawCount!==1/0&&this.wokerDrawCount<=this.subWorkerDrawCount&&this.cacheDrawCount<this.maxDrawCount&&(s=!0),this.maxDrawCount||(s=!0),s&&(this.taskBatchData.add({op:this.localPointsBatchData.map(a=>a),workState:e,workId:o,dataType:Z.Local,msgType:L.DrawWork,isRunSubWork:this.isRunSubWork,undoTickerId:e===C.Done&&r||void 0,viewId:i,scenePath:i&&this.viewContainerManager.getCurScenePath(i)}),this.delayWorkStateToDoneResolve&&e===C.Done&&this.delayWorkStateToDoneResolve(!0),this.clearLocalPointsBatchData(),this.cacheDrawCount=this.maxDrawCount)}this.taskBatchData.size&&(this.post(this.taskBatchData),this.taskBatchData.clear(),r&&e===C.Done&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,undoTickerId:void 0}))}(this.tasksqueue.size||this.taskBatchData.size||this.localPointsBatchData.length)&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}unWritable(){this.setCurrentLocalWorkData({workState:C.Unwritable,workId:void 0})}abled(){this.setCurrentLocalWorkData({workState:C.Pending,workId:void 0})}isAbled(){return this.currentLocalWorkData.workState!==C.Unwritable}post(e){this.fullWorker.postMessage(e);const i=new Set;for(const o of e.values()){const r=o.msgType;(r===L.Init||r===L.Clear||r===L.Destroy||r===L.UpdateCamera||o.isRunSubWork)&&i.add(o)}i.size&&this.subWorker.postMessage(i)}destroy(){this.unWritable(),this.taskBatchData.clear(),this.tmpImageConfigMap.clear(),this.clearLocalPointsBatchData(),this.fullWorker.terminate(),this.subWorker.terminate(),this.isActive=!1}updateNode(e,i,o,r){this.taskBatchData.add({msgType:L.UpdateNode,workId:e,updateNodeOpt:i,viewId:o,scenePath:r,dataType:Z.Local}),this.runAnimation()}updateCamera(e,i){this.useTasksqueue||(this.useTasksqueue=!0,this.mianTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:L.UpdateCamera,dataType:Z.Local,cameraOpt:{...i,width:Math.floor(i.width),height:Math.floor(i.height)},isRunSubWork:!0,viewId:e}),this.control.textEditorManager.onCameraChange(i,e),this.runAnimation(),this.useTasksClockId&&clearTimeout(this.useTasksClockId),this.useTasksClockId=setTimeout(()=>{this.useTasksClockId=void 0,this.tasksqueue.clear(),this.useTasksqueue=!1,this.mianTasksqueueCount=void 0,this.workerTasksqueueCount=void 0},this.maxLastSyncTime))}consumeQueue(){const e=new Set;return this.mianTasksqueueCount&&this.workerTasksqueueCount&&this.mianTasksqueueCount===this.workerTasksqueueCount&&(this.mianTasksqueueCount++,e.add({msgType:L.TasksQueue,dataType:Z.Local,isRunSubWork:!0,mainTasksqueueCount:this.mianTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""})),e}async clearViewScenePath(e,i){var o;if(this.control.textEditorManager.clear(e,i),this.taskBatchData.add({dataType:Z.Local,msgType:L.Clear,viewId:e}),this.runAnimation(),!i){const r=this.viewContainerManager.getCurScenePath(e);(o=this.collector)==null||o.dispatch({type:L.Clear,viewId:e,scenePath:r})}this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.clearLocalPointsBatchData(),await new Promise(r=>{this.clearAllResolve=r}).then(()=>{this.clearAllResolve=void 0})}internalMsgEmitterListener(){var e;this.methodBuilder=new F([S.CopyNode,S.SetColorNode,S.DeleteNode,S.RotateNode,S.ScaleNode,S.TranslateNode,S.ZIndexActive,S.ZIndexNode,S.RotateNode,S.SetFontStyle,S.SetPoint,S.SetLock,S.SetShapeOpt]).registerForMainEngine(U.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(S.ZIndexNode)}setZIndex(e){const i=this.currentToolsData&&oe(this.currentToolsData.toolsOpt);return i&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),i.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),i}clearLocalPointsBatchData(){this.localPointsBatchData.length=0}hoverCursor(e,i){var o;if(((o=this.currentToolsData)==null?void 0:o.toolsType)===N.Selector){const r=this.viewContainerManager.transformToScenePoint(e,i),s={msgType:L.CursorHover,dataType:Z.Local,point:r,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:i};this.queryTaskBatchData({msgType:L.CursorHover,dataType:Z.Local,toolsType:this.currentToolsData.toolsType,viewId:i}).forEach(a=>{this.taskBatchData.delete(a)}),this.taskBatchData.add(s),this.runAnimation()}}sendCursorEvent(e,i){if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===C.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;let o=[void 0,void 0];this.currentToolsData&&(this.isCanDrawWork||this.currentToolsData.toolsType===N.Text)&&this.currentLocalWorkData.workState!==C.Start&&this.currentLocalWorkData.workState!==C.Doing&&(o=e,this.control.cursor.sendEvent(o,i))}getBoundingRect(e){var o,r;if(!((o=this.boundingRectMap)==null?void 0:o.get(e))){const s=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!s)return;if(Object.keys(s).forEach(a=>{var c;((c=this.collector)==null?void 0:c.getLocalId(a))===O&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:L.BoundingBox,dataType:Z.Local,scenePath:e,scenes:s,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:this.viewContainerManager.mainView.id};return this.taskBatchData.add(a),this.runAnimation(),new Promise(c=>{this.boundingRectMap.set(e,c)}).then(c=>(this.boundingRectMap.delete(e),c))}}}getSnapshot(e,i,o,r){var a,c,l,d,u,M;if(!((a=this.snapshotMap)==null?void 0:a.get(e))){const g=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!g)return;const y=(l=this.collector)==null?void 0:l.getStorageData(g,e);if(!y)return;if(Object.keys(y).forEach(v=>{var m;((m=this.collector)==null?void 0:m.getLocalId(v))===O&&delete y[v]}),Object.keys(y).length){const v=this.viewContainerManager.getView(g)||this.viewContainerManager.focuedView;if(!v)return;const m=i||((d=v.cameraOpt)==null?void 0:d.width),f=o||((u=v.cameraOpt)==null?void 0:u.height),w={msgType:L.Snapshot,dataType:Z.Local,scenePath:e,scenes:y,w:m,h:f,cameraOpt:r&&{...r,width:m,height:f}||v.cameraOpt,isRunSubWork:!0,viewId:g,maxZIndex:(M=this.zIndexNodeMethod)==null?void 0:M.getMaxZIndex(g)};return this.taskBatchData.add(w),this.runAnimation(),new Promise(I=>{this.snapshotMap.set(e,I)}).then(I=>(this.snapshotMap.delete(e),I))}}}queryTaskBatchData(e){const i=[];if(e)for(const o of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(o[s]!==a){r=!1;break}r&&i.push(o)}return i}insertImage(e){const i=this.viewContainerManager.mainView,o=i==null?void 0:i.id,r=i==null?void 0:i.focusScenePath;if(o&&r){const{src:s,uuid:a}=e;if(a&&!s){this.tmpImageConfigMap.set(a,e);return}this.setCurrentLocalWorkData({...this.currentLocalWorkData,undoTickerId:Date.now()}),Ne.InternalMsgEmitter.emit("undoTickerStart",this.undoTickerId,o);const c={...e};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(o),c.zIndex=this.zIndexNodeMethod.getMaxZIndex(o)),this.taskBatchData.add({msgType:L.FullWork,dataType:Z.Local,toolsType:N.Image,workId:e.uuid,opt:c,viewId:o,undoTickerId:Date.now(),willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,i){var a,c;const o=this.viewContainerManager.mainView,r=o==null?void 0:o.id,s=o==null?void 0:o.focusScenePath;if(r&&s&&this.collector){const l=this.collector.getStorageData(r,s);if(!l)return;for(const[d,u]of Object.entries(l))if(u&&u.toolsType===N.Image&&u.opt.uuid===e){const M=Date.now();Ne.InternalMsgEmitter.emit("undoTickerStart",M,r);const g=(a=this.collector)!=null&&a.isOwn(d)?(c=this.collector)==null?void 0:c.getLocalId(d):d,y={...u.opt,locked:i};this.taskBatchData.add({msgType:L.FullWork,dataType:Z.Local,toolsType:N.Image,workId:g,opt:y,viewId:r,undoTickerId:M,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,i){const o=this.viewContainerManager.mainView,r=o==null?void 0:o.id,s=o==null?void 0:o.focusScenePath;if(r&&s){const a=this.tmpImageConfigMap.get(e);a&&(a.src=i,this.insertImage(a),this.tmpImageConfigMap.delete(e));return}}getImagesInformation(e){const i=[];if(this.collector){const o=this.collector.getScenePathData(e);if(!o)return i;for(const r of Object.values(o))if(r&&r.toolsType===N.Image){const s=r.opt;i.push({uuid:s.uuid,centerX:s.centerX,centerY:s.centerY,width:s.width,height:s.height,locked:s.locked,uniformScale:s.uniformScale,crossOrigin:s.crossOrigin})}}return i}setShapeSelectorByWorkId(e,i,o){this.taskBatchData.add({workId:O,selectIds:[e],msgType:L.Select,dataType:Z.Service,viewId:i,willSyncService:!0,undoTickerId:o}),this.runAnimation()}blurSelector(e,i,o){this.taskBatchData.add({workId:O,selectIds:[],msgType:L.Select,dataType:Z.Service,viewId:e,scenePath:i,undoTickerId:o}),this.runAnimation()}}var qg=Ce,_g=function(){return qg.Date.now()},Xg=_g,eM=/\s/;function tM(n){for(var t=n.length;t--&&eM.test(n.charAt(t)););return t}var iM=tM,oM=iM,nM=/^\s+/;function rM(n){return n&&n.slice(0,oM(n)+1).replace(nM,"")}var sM=rM,aM=Qe,cM=Oe,lM="[object Symbol]";function uM(n){return typeof n=="symbol"||cM(n)&&aM(n)==lM}var hM=uM,dM=sM,Zi=Pe,gM=hM,Gi=NaN,MM=/^[-+]0x[0-9a-f]+$/i,fM=/^0b[01]+$/i,pM=/^0o[0-7]+$/i,yM=parseInt;function IM(n){if(typeof n=="number")return n;if(gM(n))return Gi;if(Zi(n)){var t=typeof n.valueOf=="function"?n.valueOf():n;n=Zi(t)?t+"":t}if(typeof n!="string")return n===0?n:+n;n=dM(n);var e=fM.test(n);return e||pM.test(n)?yM(n.slice(2),e?2:8):MM.test(n)?Gi:+n}var vM=IM,NM=Pe,kt=Xg,Vi=vM,wM="Expected a function",mM=Math.max,TM=Math.min;function zM(n,t,e){var i,o,r,s,a,c,l=0,d=!1,u=!1,M=!0;if(typeof n!="function")throw new TypeError(wM);t=Vi(t)||0,NM(e)&&(d=!!e.leading,u="maxWait"in e,r=u?mM(Vi(e.maxWait)||0,t):r,M="trailing"in e?!!e.trailing:M);function g(j){var x=i,A=o;return i=o=void 0,l=j,s=n.apply(A,x),s}function y(j){return l=j,a=setTimeout(f,t),d?g(j):s}function v(j){var x=j-c,A=j-l,W=t-x;return u?TM(W,r-A):W}function m(j){var x=j-c,A=j-l;return c===void 0||x>=t||x<0||u&&A>=r}function f(){var j=kt();if(m(j))return w(j);a=setTimeout(f,v(j))}function w(j){return a=void 0,M&&i?g(j):(i=o=void 0,s)}function I(){a!==void 0&&clearTimeout(a),l=0,i=c=o=a=void 0}function z(){return a===void 0?s:w(kt())}function T(){var j=kt(),x=m(j);if(i=arguments,o=this,c=j,x){if(a===void 0)return y(c);if(u)return clearTimeout(a),a=setTimeout(f,t),g(c)}return a===void 0&&(a=setTimeout(f,t)),s}return T.cancel=I,T.flush=z,T}var Eo=zM;const Ji=Fe(Eo);var jM=Eo,CM=Pe,SM="Expected a function";function DM(n,t,e){var i=!0,o=!0;if(typeof n!="function")throw new TypeError(SM);return CM(e)&&(i="leading"in e?!!e.leading:i,o="trailing"in e?!!e.trailing:o),jM(n,t,{leading:i,maxWait:t,trailing:o})}var xM=DM;const ne=Fe(xM);class LM{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"roomHotkeyCheckers");p(this,"tmpCopyStore",new Map);p(this,"tmpCopyCoordInfo");var o;const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.roomHotkeyCheckers=((o=this.control.room)==null?void 0:o.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var t;return((t=this.control.room)==null?void 0:t.disableDeviceInputs)||!1}get isSelector(){var t;return((t=this.control.worker.currentToolsData)==null?void 0:t.toolsType)===N.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(t){switch(t.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(t){var o,r,s;console.log("onActiveHotkey---sdk",t);const e=this.control.viewContainerManager.focuedViewId,i=(o=this.control.viewContainerManager.focuedView)==null?void 0:o.focusScenePath;if(e&&i)switch(t){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,i))&&F.emitMethod(U.MainEngine,S.DeleteNode,{workIds:[O],viewId:e});break;case"copy":this.isSelector&&((s=this.collector)!=null&&s.hasSelector(e,i))&&this.copySelectorToTemp(e,i);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,i);break}(t==="changeToPencil"||t==="redo"||t==="undo")&&this.onSelfActiveHotkey(t)}colloctHotkey(t){if(this.isUseSelf){const e=this.checkHotkey(t);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(t){switch(console.log("onActiveHotkey---self",t),t){case"changeToPencil":this.setMemberState({currentApplianceName:H.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:H.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:H.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:H.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:H.eraser,isLine:!0});break;case"changeToHand":this.setMemberState({currentApplianceName:H.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:H.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:H.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:H.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:H.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:H.text});break}}checkHotkey(t){for(const e of this.roomHotkeyCheckers){const{kind:i,checker:o}=e;if(o({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return i}}copySelectorToTemp(t,e){var l,d;const i=this.control.viewContainerManager.getView(t),o=(d=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:d.getBuilder(S.CopyNode);if(!i||!this.collector||!o)return;const r=this.collector.transformKey(O),s=this.collector.getStorageData(t,e);if(!s)return;const a=s[r],c=a&&o.copySelector({viewId:t,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(t,e){var r,s;const i=this.control.viewContainerManager.getView(t),o=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(S.CopyNode);if(!(!i||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!o)&&i.viewData&&this.tmpCopyCoordInfo){const a=ci.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=i.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY,o.pasteSelector({viewId:t,scenePath:e,copyStores:ci.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l}})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const Ge=class Ge{constructor(t){p(this,"plugin");p(this,"room");p(this,"play");p(this,"collector");p(this,"hasSwitchToSelectorEffect");p(this,"snapshootStateMap");p(this,"effectResolve");p(this,"hotkeyManager");p(this,"pluginOptions");p(this,"roomMember");p(this,"cursor");p(this,"textEditorManager");p(this,"worker");p(this,"onSceneChange",async(t,e)=>{var s;const i=this.viewContainerManager.getView(e);i!=null&&i.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,i.focusScenePath)&&this.worker.blurSelector(e,i.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const o=i==null?void 0:i.displayer;o&&(o.setActive(!1),await o.stopEventHandler());const r=t;r&&this.viewContainerManager.setViewScenePath(e,r),o==null||o.setActive(!0)});p(this,"onRoomMembersChange",t=>{this.roomMember.setRoomMembers(V.toJS(t))});p(this,"onMemberChange",ne(t=>{if(!this.room||!this.worker)return;const e=this.getToolsKey(t),i=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(i),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));p(this,"internalSceneChange",(t,e)=>{var i;(i=this.worker)==null||i.clearViewScenePath(t,!0).then(()=>{var o;(o=this.worker)==null||o.pullServiceData(t,e)})});p(this,"internalCameraChange",(t,e)=>{var i;(i=this.worker)==null||i.updateCamera(t,e)});const{displayer:e,plugin:i,options:o}=t;this.plugin=i,this.room=V.isRoom(e)?e:void 0,this.play=V.isPlayer(e)?e:void 0,this.pluginOptions=o,this.roomMember=new Eg;const r={control:this,internalMsgEmitter:Ge.InternalMsgEmitter};this.cursor=new Og(r),this.textEditorManager=new bg(r),this.worker=new Kg(r),this.hotkeyManager=new LM(r)}bindPlugin(t){var e,i;this.plugin=t,this.collector&&this.collector.removeStorageStateListener(),this.collector=new Rt(t,(i=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:i.interval),this.cursor.activeCollector(),this.activePlugin()}destroy(){var t,e,i,o,r;this.roomMember.destroy(),(t=this.collector)==null||t.destroy(),(e=this.worker)==null||e.destroy(),(i=this.viewContainerManager)==null||i.destroy(),(o=this.cursor)==null||o.destroy(),(r=this.textEditorManager)==null||r.destory()}cleanCurrentScene(){const t=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(Ge.InternalMsgEmitter.emit("undoTickerStart",t,e),this.worker.clearViewScenePath(e).then(()=>{Ge.InternalMsgEmitter.emit("undoTickerEnd",t,e)}))}onWritableChange(t){var e,i;t?(i=this.worker)==null||i.abled():(e=this.worker)==null||e.unWritable()}getToolsKey(t){const e=t.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case H.text:return t.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Text;case H.pencil:return t.useLaserPen?N.LaserPen:N.Pencil;case H.eraser:case H.pencilEraser:return N.Eraser;case H.selector:return N.Selector;case H.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Arrow;case H.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Straight;case H.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Ellipse;case H.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Rectangle;case H.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===Te.Pentagram||t.shapeType===Te.Star)return N.Star;if(t.shapeType===Te.Polygon||t.shapeType===Te.Triangle||t.shapeType===Te.Rhombus)return N.Polygon;if(t.shapeType===Te.SpeechBalloon)return N.SpeechBalloon;break}return N.Clicker}getToolsOpt(t,e){const i=e.currentApplianceName,o={strokeColor:at(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(t){case N.Text:o.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),o.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),o.textAlign=(e==null?void 0:e.textAlign)||"left",o.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",o.fontColor=(e==null?void 0:e.textColor)&&at(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||o.strokeColor||"rgba(0,0,0,1)",o.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&at(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",o.bold=(e==null?void 0:e.bold)&&"bold"||void 0,o.italic=(e==null?void 0:e.italic)&&"italic"||void 0,o.underline=(e==null?void 0:e.underline)||void 0,o.lineThrough=(e==null?void 0:e.lineThrough)||void 0,o.text="",o.strokeColor=void 0;break;case N.Pencil:o.strokeType=(e==null?void 0:e.strokeType)||dt.Normal;break;case N.Eraser:o.thickness=Math.min(3,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,o.isLine=i===H.eraser&&!0;break;case N.LaserPen:o.duration=(e==null?void 0:e.duration)||1,o.strokeType=(e==null?void 0:e.strokeType)||dt.Normal;break;case N.Ellipse:case N.Rectangle:case N.Star:case N.Polygon:case N.SpeechBalloon:t===N.Star&&(e.shapeType===Te.Pentagram?(o.vertices=10,o.innerVerticeStep=2,o.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(o.vertices=e.vertices,o.innerVerticeStep=e.innerVerticeStep,o.innerRatio=e.innerRatio)),t===N.Polygon&&(e.shapeType===Te.Triangle?o.vertices=3:e.shapeType===Te.Rhombus?o.vertices=4:e.vertices&&(o.vertices=e.vertices)),o.fillColor=(e==null?void 0:e.fillColor)&&at(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===N.SpeechBalloon&&(o.placement=e.placement||"bottomLeft");break}return{toolsType:t,toolsOpt:o}}effectViewContainer(t){var e,i,o,r,s;switch(t){case N.Text:case N.Pencil:case N.LaserPen:case N.Arrow:case N.Straight:case N.Rectangle:case N.Ellipse:case N.Star:case N.Polygon:case N.SpeechBalloon:case N.Triangle:case N.Rhombus:this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.abled();break;case N.Eraser:case N.Selector:this.room.disableDeviceInputs=!1,(i=this.cursor)==null||i.unabled(),(o=this.worker)==null||o.abled();break;default:this.room.disableDeviceInputs=!1,(r=this.worker)==null||r.unWritable(),(s=this.cursor)==null||s.unabled();break}setTimeout(()=>{this.viewContainerManager.getAllViews().forEach(c=>{c!=null&&c.displayer&&c.displayer.bindToolsClass()})},0)}async getBoundingRect(t){var i,o,r,s,a;const e=await((i=this.worker)==null?void 0:i.getBoundingRect(t));if(e){const c=((r=(o=this.viewContainerManager.mainView)==null?void 0:o.viewData)==null?void 0:r.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((a=(s=this.viewContainerManager.mainView)==null?void 0:s.viewData)==null?void 0:a.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(t,e,i,o,r,s,a){const c=await this.worker.getSnapshot(e,i,o,r);c&&(t.drawImage(c,s||0,a||0),c.close())}async scenePreview(t,e){var s,a,c,l;const i=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(t);if(!i)return;const o=this.viewContainerManager.getView(i);if(!o||!((a=o.cameraOpt)!=null&&a.width)||!((c=o.cameraOpt)!=null&&c.height))return;const r=await((l=this.worker)==null?void 0:l.getSnapshot(t));if(r&&this.worker){const d=document.createElement("canvas"),u=d.getContext("2d"),{width:M,height:g}=o.cameraOpt;d.width=M,d.height=g,u&&(u.drawImage(r,0,0),e.src=d.toDataURL(),e.onload=()=>{d.remove()},e.onerror=()=>{d.remove(),e.remove()}),r.close()}}setOriginMemberState(){}switchToSelector(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:H.selector})}async runEffectWork(t){if(this.hasSwitchToSelectorEffect){const e=await new Promise(i=>{this.switchToSelector(),this.effectResolve=i});this.effectResolve=void 0,e&&t&&t()}}setSnapshootData(){var t;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(t=this.room)==null?void 0:t.state.memberState))}getSnapshootData(t){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(t)}clearSnapshootData(){var t;(t=this.snapshootStateMap)==null||t.clear(),this.snapshootStateMap=void 0}};p(Ge,"InternalMsgEmitter",new eo);let Ne=Ge;var kM=Do,AM=4;function EM(n){return kM(n,AM)}var bM=EM;const Ki=Fe(bM),be=class be{constructor(t){p(this,"emitter",new eo);p(this,"undoStack");p(this,"redoStack");p(this,"worker");p(this,"control");p(this,"room");p(this,"isTicking");p(this,"undoTickerId");p(this,"viewId");p(this,"scenePath");p(this,"tickStartStorerCache");p(this,"excludeIds",new Set);p(this,"undoTickerEnd",Ji((t,e,i)=>{var o,r;if(t===this.undoTickerId&&i===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const s=((o=this.collector)==null?void 0:o.storage[e])&&((r=this.collector)==null?void 0:r.storage[e][i])||{},a=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(s)));a.size&&(this.undoStack.push({id:t,type:2,data:oe(a),scenePath:i}),this.undoStack.length>be.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()}},be.waitTime));p(this,"onChangeScene",Ji(()=>{const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(o=>o.scenePath===t).length,i=this.redoStack.filter(o=>o.scenePath===t).length;this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}},be.waitTime));const{control:e,internalMsgEmitter:i,viewId:o}=t;this.control=e,this.emitter=i,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=o}get collector(){return this.control.collector}addExcludeIds(t){if(this.isTicking)for(const e of t)this.excludeIds.add(e)}undoTickerStart(t,e){if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){this.isTicking=!0,this.excludeIds.clear();const i=this.collector.transformKey(O);this.excludeIds.add(i),this.undoTickerId=t,this.scenePath=e;const o=this.collector.getStorageData(this.viewId,e)||{};this.tickStartStorerCache=new Map(Object.entries(oe(o)))}}undoTickerEndSync(t,e,i,o){var r,s;if(t===this.undoTickerId&&i===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const a=((r=this.collector)==null?void 0:r.storage[e])&&((s=this.collector)==null?void 0:s.storage[e][i])||{},c=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)));c.size&&(this.undoStack.push({id:t,type:2,data:oe(c),scenePath:i,tickStartStorerCache:o&&oe(this.tickStartStorerCache)||void 0}),this.undoStack.length>be.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(t){this.undoTickerId&&this.tickStartStorerCache&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath,!0);let e=this.undoStack.length-1;for(;e>=0;){if(this.undoStack[e].scenePath===t){const s=this.undoStack[e];s&&(this.redoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s)),this.undoStack.splice(e,1);break}e--}const i=this.undoStack.filter(r=>r.scenePath===t).length,o=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",o),i}redo(t){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===t){const s=this.redoStack[e];s&&(!this.undoTickerId&&s.tickStartStorerCache?(this.undoTickerId=s.id,this.tickStartStorerCache=s.tickStartStorerCache,this.scenePath=s.scenePath):this.undoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const i=this.undoStack.filter(r=>r.scenePath===t).length,o=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",o),o}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 t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(o=>o.scenePath===t).length,i=this.redoStack.filter(o=>o.scenePath===t).length;this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}}diffFun(t,e){const i=new Set,o=t.keys(),r=e.keys();for(const s of o){if(this.excludeIds.has(s))continue;const a=t.get(s),c=e.get(s);if(a&&c){if(ce(c,a))continue;i.add({dataType:3,key:s,data:[a,c]});continue}a&&i.add({dataType:2,key:s,data:a})}for(const s of r){if(this.excludeIds.has(s))continue;const a=e.get(s);a&&!t.has(s)&&i.add({dataType:1,key:s,data:a})}return i}isDrawEffectiveScene(t,e){const{key:i}=t;return!e.includes(i)}isDeleteEffectiveScene(t,e,i){var s;const{key:o}=t;if(!e.includes(o))return!1;const r=e.filter(a=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(a))===O&&!((l=this.collector)!=null&&l.isOwn(a))}).map(a=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(o))return!1;return!0}isOldEffectiveScene(t,e,i){var s;const{key:o}=t;if(!e.includes(o))return!1;const r=e.filter(a=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(a))===O&&!((l=this.collector)!=null&&l.isOwn(a))}).map(a=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(o))return!1;return!0}isNewEffectiveScene(t,e){const{key:i}=t;return!!e.includes(i)}refreshPlugin(t,e=!1){var s,a,c,l,d,u,M,g,y,v,m,f,w,I,z,T,j,x,A,W,b;let i;const{scenePath:o}=t,r=t.data;if(!(!r||!this.collector))for(const Y of r.values()){const{dataType:Q,data:P,key:X}=Y,q=this.collector.storage[this.viewId]&&this.collector.storage[this.viewId][o],_=q&&Object.keys(q)||[];switch(Q){case 1:if(i=e?this.isDrawEffectiveScene(Y,_):this.isDeleteEffectiveScene(Y,_,o),i)if(e&&!Array.isArray(P)){if((s=P.updateNodeOpt)!=null&&s.useAnimation&&(P.updateNodeOpt.useAnimation=!1),((a=this.collector)==null?void 0:a.getLocalId(X))===O&&((c=this.collector)!=null&&c.isOwn(Y.key))){const G=P.selectIds;if(G){const J=_.filter(D=>{var B,$;return((B=this.collector)==null?void 0:B.getLocalId(D))===O&&!(($=this.collector)!=null&&$.isOwn(D))}).map(D=>{var B;return(B=this.collector)==null?void 0:B.storage[this.viewId][o][D]});let K=!1;for(const D of J)for(let B=0;B<G.length;B++)(l=D==null?void 0:D.selectIds)!=null&&l.includes(G[B])&&(delete G[B],K=!0);K&&(P.selectIds=G.filter(D=>!!D))}}(d=this.collector)==null||d.updateValue(Y.key,P,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}else!e&&!Array.isArray(Y.data)&&((u=this.collector)==null||u.updateValue(Y.key,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0}));break;case 2:if(i=e?this.isDeleteEffectiveScene(Y,_,o):this.isDrawEffectiveScene(Y,_),i){if(e&&!Array.isArray(P))(M=this.collector)==null||M.updateValue(X,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0});else if(!e&&!Array.isArray(P)){if((g=P.updateNodeOpt)!=null&&g.useAnimation&&(P.updateNodeOpt.useAnimation=!1),((y=this.collector)==null?void 0:y.getLocalId(Y.key))===O&&((v=this.collector)!=null&&v.isOwn(Y.key))){const G=P.selectIds;if(G){const J=_.filter(D=>{var B,$;return((B=this.collector)==null?void 0:B.getLocalId(D))===O&&!(($=this.collector)!=null&&$.isOwn(D))}).map(D=>{var B;return(B=this.collector)==null?void 0:B.storage[this.viewId][o][D]});let K=!1;for(const D of J)for(let B=0;B<G.length;B++)(m=D==null?void 0:D.selectIds)!=null&&m.includes(G[B])&&(delete G[B],K=!0);K&&(P.selectIds=G.filter(D=>!!D))}}(f=this.collector)==null||f.updateValue(Y.key,Y.data,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}}break;case 3:if(i=e?this.isNewEffectiveScene(Y,_):this.isOldEffectiveScene(Y,_,o),i){if(e&&Array.isArray(P)&&P.length===2){const G=P[1];if((w=G.updateNodeOpt)!=null&&w.useAnimation&&(G.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(Y.key))===O&&((z=this.collector)!=null&&z.isOwn(Y.key))){const J=G.selectIds;if(J){const K=_.filter(B=>{var $,re;return(($=this.collector)==null?void 0:$.getLocalId(B))===O&&!((re=this.collector)!=null&&re.isOwn(B))}).map(B=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][o][B]});let D=!1;for(const B of K)for(let $=0;$<J.length;$++)B!=null&&B.selectIds&&((T=B.selectIds)!=null&&T.includes(J[$]))&&(delete J[$],D=!0);D&&(G.selectIds=J.filter(B=>!!B))}}(j=this.collector)==null||j.updateValue(X,G,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}else if(!e&&Array.isArray(P)&&P.length===2){const G=P[0];if((x=G.updateNodeOpt)!=null&&x.useAnimation&&(G.updateNodeOpt.useAnimation=!1),((A=this.collector)==null?void 0:A.getLocalId(Y.key))===O&&((W=this.collector)!=null&&W.isOwn(Y.key))){const J=G.selectIds;if(J){const K=_.filter(B=>{var $,re;return(($=this.collector)==null?void 0:$.getLocalId(B))===O&&!((re=this.collector)!=null&&re.isOwn(B))}).map(B=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][o][B]});let D=!1;for(const B of K)for(let $=0;$<J.length;$++)B!=null&&B.selectIds&&B.selectIds.includes(J[$])&&(delete J[$],D=!0);D&&(G.selectIds=J.filter(B=>!!B))}}(b=this.collector)==null||b.updateValue(Y.key,G,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}}break}}}};p(be,"sdkCallBack"),p(be,"MaxStackLength",20),p(be,"waitTime",100);let yt=be;function OM(n){return n instanceof TouchEvent||n instanceof window.TouchEvent||(n==null?void 0:n.touches)&&(n==null?void 0:n.touches.length)||(n==null?void 0:n.changedTouches)&&(n==null?void 0:n.changedTouches.length)}function Ve(n){return OM(n)&&(n.touches&&n.touches.length===1||n.changedTouches&&n.changedTouches.length===1)}function bo(n){return n.touches&&n.touches.length?{x:n.touches[0].pageX,y:n.touches[0].pageY}:n.changedTouches&&n.changedTouches.length?{x:n.changedTouches[0].pageX,y:n.changedTouches[0].pageY}:{x:n.pageX,y:n.pageY}}class it{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"mainView");p(this,"appViews",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.internalMsgEmitter.on("undoTickerStart",this.undoTickerStart.bind(this)),this.internalMsgEmitter.on("undoTickerEnd",this.undoTickerEnd.bind(this)),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds.bind(this))}undoTickerStart(t,e){const i=this.getView(e);i&&i.displayer&&i.focusScenePath&&i.displayer.commiter.undoTickerStart(t,i.focusScenePath)}undoTickerEnd(t,e,i){const o=this.getView(e);if(o&&o.displayer&&o.focusScenePath){if(i){o.displayer.commiter.undoTickerEndSync(t,e,o.focusScenePath);return}o.displayer.commiter.undoTickerEnd(t,e,o.focusScenePath)}}addExcludeIds(t,e){const i=this.getView(e);i&&i.displayer&&i.focusScenePath&&i.displayer.commiter.addExcludeIds(t)}undo(){const t=this.focuedView;let e=0;if(t){const i=t.focusScenePath;e=t.displayer.commiter.undo(i)||0}return e}redo(){const t=this.focuedView;let e=0;if(t){const i=t.focusScenePath;e=t.displayer.commiter.redo(i)||0}return e}validator(t,e,i){var s;const o=Ki(t[e]),r=Ki(i);if(e==="focusScenePath"&&i&&!ce(o,r)&&(this.control.internalSceneChange(t.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!ce(o,r)){if(r.width!==(o==null?void 0:o.width)||r.height!==(o==null?void 0:o.height)){const a=this.getView(e);a==null||a.displayer.updateSize()}this.control.internalCameraChange(t.id,r)}}destroyAppView(t,e=!1){const i=this.appViews.get(t);i&&(this.control.textEditorManager.clear(t,e),i.displayer.destroy(),this.appViews.delete(t))}createMianView(t){this.mainView=new Proxy(t,{set:(e,i,o)=>(this.control.worker.isActive&&this.validator(e,i,o),e[i]=o,!0)})}createAppView(t){const e=t.id,i=new Proxy(t,{set:(o,r,s)=>(this.control.worker.isActive&&this.validator(o,r,s),o[r]=s,!0)});this.appViews.set(e,i)}isAppView(t){return t!==ve.viewId&&this.appViews.has(t)}getView(t){var e;return t===ve.viewId?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var i;if(t===ve.viewId&&this.mainView)this.mainView.focusScenePath=e;else{const o=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;o&&(o.focusScenePath=e)}}setViewData(t,e){var i;if(t===ve.viewId&&this.mainView)this.mainView.viewData=e;else{const o=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;o&&(o.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===ve.viewId?this.focuedView=this.mainView:this.focuedView=t&&((e=this.appViews)==null?void 0:e.get(t))||void 0,this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(t,e){var o;let i;t===ve.viewId?i=this.mainView:i=(o=this.appViews)==null?void 0:o.get(t),i&&(i.focusScenePath=e)}destroy(){var t;this.internalMsgEmitter.removeAllListeners("undoTickerStart"),this.internalMsgEmitter.removeAllListeners("undoTickerEnd"),this.internalMsgEmitter.removeAllListeners("excludeIds"),(t=this.mainView)==null||t.displayer.destroy(),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.control.worker.destroyViewWorker(e.id)})}setFocuedViewCameraOpt(t){this.focuedView&&(this.focuedView.cameraOpt=t)}transformToOriginPoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const o=i.viewData.convertToPointOnScreen(t[0],t[1]);return[o.x,o.y]}return t}transformToScenePoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const o=i.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[o.x,o.y]}return t}render(t){var e,i,o,r,s,a,c,l,d,u,M,g,y,v,m,f,w;for(const I of t){const{rect:z,imageBitmap:T,isClear:j,isUnClose:x,drawCanvas:A,clearCanvas:W,offset:b,viewId:Y}=I,Q=(e=this.getView(Y))==null?void 0:e.displayer;if(Q&&z){const{dpr:P,canvasBgRef:X,canvasFloatRef:q,floatBarCanvasRef:_,canvasServiceFloatRef:G}=Q,J=z.w*P,K=z.h*P,D=z.x*P,B=z.y*P;if(j)switch(W){case Se.Selector:(o=(i=_.current)==null?void 0:i.getContext("2d"))==null||o.clearRect(0,0,J,K);break;case Se.ServiceFloat:(s=(r=G.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(D,B,J,K);break;case Se.Float:(c=(a=q.current)==null?void 0:a.getContext("2d"))==null||c.clearRect(D,B,J,K);break;case Se.Bg:(d=(l=X.current)==null?void 0:l.getContext("2d"))==null||d.clearRect(D,B,J,K);break}if(A&&T)switch(A){case Se.Selector:{const $=((b==null?void 0:b.x)||0)*P,re=((b==null?void 0:b.y)||0)*P;(M=(u=_.current)==null?void 0:u.getContext("2d"))==null||M.drawImage(T,0,0,J,K,$,re,J,K);break}case Se.ServiceFloat:{(y=(g=G.current)==null?void 0:g.getContext("2d"))==null||y.drawImage(T,0,0,J,K,D,B,J,K);break}case Se.Float:{(m=(v=q.current)==null?void 0:v.getContext("2d"))==null||m.drawImage(T,0,0,J,K,D,B,J,K);break}case Se.Bg:{(w=(f=X.current)==null?void 0:f.getContext("2d"))==null||w.drawImage(T,0,0,J,K,D,B,J,K);break}}if(x)return;T==null||T.close()}}}showFloatBar(t,e,i){const o=this.getView(t),r=o==null?void 0:o.displayer.vDom;r&&r.showFloatBar(e,i)}activeFloatBar(t){var i;const e=(i=this.getView(t))==null?void 0:i.displayer;e!=null&&e.vDom&&e.vDom.setFloatZIndex(2)}unActiveFloatBar(t){const e=this.getView(t),i=e==null?void 0:e.displayer.vDom;i&&i.setFloatZIndex(-1)}setActiveTextEditor(t,e){const i=this.getView(t),o=i==null?void 0:i.displayer.vDom;o&&o.setActiveTextEditor(e)}}p(it,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),p(it,"defaultScreenCanvasOpt",{autoRender:!1,contextType:It.Canvas2d}),p(it,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class YM{constructor(t,e,i){p(this,"viewId");p(this,"control");p(this,"internalMsgEmitter");p(this,"commiter");p(this,"cachePoint");p(this,"cacheCursorPoint");p(this,"active",!0);p(this,"mousedown",t=>{if(this.active&&t.button===0&&this.viewId){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"mousemove",t=>{if(this.active&&this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)}});p(this,"mouseup",t=>{if(this.active&&t.button===0&&this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}});p(this,"touchstart",t=>{if(this.active&&Ve(t)&&this.viewId){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"touchmove",t=>{if(this.active){if(!Ve(t)){this.control.worker.unWritable(),this.control.worker.clearLocalPointsBatchData();return}if(this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)}}});p(this,"touchend",t=>{if(this.active){if(!Ve(t)||!this.control.worker.isAbled()){this.control.worker.clearLocalPointsBatchData();return}if(this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}}});p(this,"cursorMouseMove",ne(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&ce(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));p(this,"cursorMouseLeave",ne(()=>{this.viewId&&(this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId))},30,{leading:!1}));p(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.viewId=t,this.control=e,this.internalMsgEmitter=i;const o={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new yt(o)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case N.Text:case N.Pencil:case N.LaserPen:case N.Arrow:case N.Straight:case N.Rectangle:case N.Ellipse:case N.Star:case N.Polygon:case N.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===N.Text?"cursor-text":t===N.Pencil||t===N.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(t){this.viewId=t}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.internalMsgEmitter.removeAllListeners([U.Cursor,this.viewId])}getPoint(t){const e=bo(t);if(e&&se(e.x)&&se(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(C.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),o=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[o,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let o={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(o=this.getContainerOffset(t.offsetParent,o)),o}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,!1),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,!1),window.addEventListener("touchend",this.touchend,!1),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}class ve{constructor(t,e){p(this,"viewId","mainView");p(this,"control");p(this,"internalMsgEmitter");p(this,"commiter");p(this,"cachePoint");p(this,"cacheCursorPoint");p(this,"active",!0);p(this,"mousedown",t=>{if(this.active&&t.button===0){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"mousemove",t=>{if(!this.active)return;const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)});p(this,"mouseup",t=>{if(this.active&&t.button===0){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}});p(this,"touchstart",t=>{if(!this.active||!Ve(t))return;this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)});p(this,"touchmove",t=>{if(!this.active)return;if(!Ve(t)){this.control.worker.clearLocalPointsBatchData(),this.control.worker.unWritable();return}const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)});p(this,"touchend",t=>{if(!this.active)return;if(!Ve(t)||!this.control.worker.isAbled()){this.control.worker.clearLocalPointsBatchData();return}const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0});p(this,"cursorMouseMove",ne(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&ce(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));p(this,"cursorMouseLeave",ne(()=>{this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)},30,{leading:!1}));p(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.control=t,this.internalMsgEmitter=e;const i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new yt(i)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case N.Text:case N.Pencil:case N.LaserPen:case N.Arrow:case N.Straight:case N.Rectangle:case N.Ellipse:case N.Star:case N.Polygon:case N.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===N.Text?"cursor-text":t===N.Pencil||t===N.LaserPen?"cursor-pencil":"cursor-arrow"}`);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.internalMsgEmitter.removeAllListeners([U.Cursor,this.viewId])}getPoint(t){const e=bo(t);if(e&&se(e.x)&&se(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(C.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),o=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[o,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let o={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(o=this.getContainerOffset(t.offsetParent,o)),o}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,!1),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,!1),window.addEventListener("touchend",this.touchend,!1),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}p(ve,"viewId","mainView");const PM="index-module__Container__nLsM3",RM="index-module__CanvasBox__j2Xe-",BM="index-module__FloatCanvas__d1YR7",WM="index-module__FloatBar__cm-EL",UM="index-module__RotateBtn__HSSkf",$M="index-module__ResizeBtn__yjvda",FM="index-module__CursorBox__2UHvI",QM="index-module__TextEditorContainer__Qm8KC",HM="index-module__ResizeTowBox__HOllX",ZM="index-module__FloatBarBtn__FJrOG",me={Container:PM,CanvasBox:RM,FloatCanvas:BM,FloatBar:WM,RotateBtn:UM,ResizeBtn:$M,CursorBox:FM,TextEditorContainer:QM,ResizeTowBox:HM,FloatBarBtn:ZM},GM={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 le(n){return GM[n]}const VM=n=>{const{workIds:t,maranger:e}=n;return h.createElement("div",{className:"button normal-button",onClick:i=>{i.preventDefault(),i.stopPropagation(),F.emitMethod(U.MainEngine,S.DeleteNode,{workIds:t||[O],viewId:e.viewId})},onTouchEnd:i=>{i.stopPropagation(),F.emitMethod(U.MainEngine,S.DeleteNode,{workIds:t||[O],viewId:e.viewId})}},h.createElement("img",{alt:"icon",src:le("delete")}))},JM=n=>{const{workIds:t,viewId:e}=n;return h.createElement("div",{className:"button normal-button",onClick:i=>{i.preventDefault(),i.stopPropagation(),F.emitMethod(U.MainEngine,S.CopyNode,{workIds:t||[O],viewId:e})},onTouchEnd:i=>{i.stopPropagation(),F.emitMethod(U.MainEngine,S.CopyNode,{workIds:t||[O],viewId:e})}},h.createElement("img",{alt:"icon",src:le("duplicate")}))},qi=n=>{const{icon:t,onClickHandler:e,onTouchEndHandler:i}=n;return h.createElement("div",{className:"button normal-button",onClick:e,onTouchEnd:i},h.createElement("img",{src:le(t)}))},KM=n=>{const{open:t,setOpen:e,style:i}=n,{floatBarData:o,maranger:r}=h.useContext(ae),[s,a]=h.useState([]),c=h.useMemo(()=>{if(i&&i.bottom){const M={};return M.top="inherit",M.bottom=50,M}},[i]),l=h.useMemo(()=>t?h.createElement("div",{className:"image-layer-menu",style:c},h.createElement(qi,{icon:"to-top",onClickHandler:M=>{M.preventDefault(),M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Top,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:M=>{M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Top,viewId:r==null?void 0:r.viewId})}}),h.createElement(qi,{icon:"to-bottom",onClickHandler:M=>{M.preventDefault(),M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Bottom,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:M=>{M.stopPropagation(),F.emitMethod(U.MainEngine,S.ZIndexNode,{workIds:[O],layer:Ue.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[t,c]),d=M=>{M.preventDefault(),M.stopPropagation(),M.nativeEvent.stopImmediatePropagation();const g=!t;e(g),g&&F.emitMethod(U.MainEngine,S.ZIndexActive,{workId:O,isActive:g,viewId:r==null?void 0:r.viewId})},u=M=>{M.stopPropagation(),M.nativeEvent.stopImmediatePropagation();const g=!t;e(g),F.emitMethod(U.MainEngine,S.ZIndexActive,{workId:O,isActive:g,viewId:r==null?void 0:r.viewId})};return h.useEffect(()=>{ce(o==null?void 0:o.selectIds,s)||o!=null&&o.selectIds&&!ce(o==null?void 0:o.selectIds,s)&&(a(o==null?void 0:o.selectIds),e(!1))},[t,o,s,e]),h.useEffect(()=>()=>{t&&F.emitMethod(U.MainEngine,S.ZIndexActive,{workId:O,isActive:!1,viewId:r==null?void 0:r.viewId})},[t]),h.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:d,onTouchEnd:u},l,h.createElement("img",{alt:"icon",src:le(t?"layer-pressed":"layer")}))},qM=n=>{const{activeColor:t,onClickHandler:e,onTouchEndHandler:i}=n;return h.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onClick:e,onTouchEnd:i},h.createElement("div",{className:"circle none"}))},ni=n=>{const{color:t,activeColor:e,onClickHandler:i,onTouchEndHandler:o}=n;return h.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onClick:i,onTouchEnd:o},h.createElement("div",{className:"circle",style:{backgroundColor:ue(t,1)}}))},ri=n=>{const{opacity:t,activeColor:e,setCurOpacity:i}=n,[o,r]=h.useState({x:108,y:0});if(h.useEffect(()=>{r({x:t*100+8,y:0})},[]),!e)return null;const s=ne((l,d)=>{l.preventDefault(),l.stopPropagation(),d.x!==(o==null?void 0:o.x)&&r({x:d.x,y:0});const u=Math.min(Math.max(d.x-8,0),100)/100;t!==u&&i(u,e,C.Doing)},100,{leading:!1}),a=l=>{l.preventDefault(),l.stopPropagation(),i(t,e,C.Start)},c=ne((l,d)=>{l.preventDefault(),l.stopPropagation(),d.x!==(o==null?void 0:o.x)&&r({x:d.x,y:0});const u=Math.min(Math.max(d.x-8,0),100)/100;i(u,e,C.Done)},100,{leading:!1});return h.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:l=>{const d=l.nativeEvent.offsetX,u=Math.min(Math.max(d-12,0),100)/100;r({x:u*100+8,y:0}),i(u,e,C.Done)}},h.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${ue(e,0)}, ${ue(e,1)})`}}),h.createElement("div",{className:"range-opacity"},h.createElement(ot,{bounds:"parent",axis:"x",position:o,onDrag:s,onStart:a,onStop:c},h.createElement("div",{className:"circle",style:{backgroundColor:ue(e,t)},onClick:l=>{l==null||l.preventDefault(),l==null||l.stopPropagation()}}))))},_M=n=>{const{open:t,setOpen:e,floatBarRef:i}=n,{floatBarData:o,floatBarColors:r,maranger:s,position:a,setFloatBarData:c}=h.useContext(ae),[l,d]=h.useState(),[u,M]=h.useState(1);h.useEffect(()=>{if(o!=null&&o.strokeColor){const[f,w]=oi(o.strokeColor);d(f),M(w)}},[o]);const g=h.useMemo(()=>{if(i!=null&&i.current&&a&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+a.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-a.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[i,a,s]),y=h.useMemo(()=>h.createElement(ri,{key:"strokeColors",opacity:u,activeColor:l,setCurOpacity:(f,w,I)=>{I===C.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),I===C.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),M(f);const z=ue(w,f);o!=null&&o.strokeColor&&(o.strokeColor=z,c({strokeColor:z})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],strokeColor:z,workState:I,viewId:s==null?void 0:s.viewId})}}),[u,l,s==null?void 0:s.control.room,s==null?void 0:s.viewId,o]),v=h.useMemo(()=>t?h.createElement("div",{className:"font-colors-menu",style:g,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},r.concat().map((f,w)=>{const I=St(...f);return h.createElement(ni,{key:w,color:I,activeColor:l,onTouchEndHandler:z=>{z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.strokeColor&&(o.strokeColor=T,c({strokeColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],strokeColor:T,viewId:s==null?void 0:s.viewId})},onClickHandler:z=>{z.preventDefault(),z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.strokeColor&&(o.strokeColor=T,c({strokeColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],strokeColor:T,viewId:s==null?void 0:s.viewId})}})}),y):null,[t,r,y,l,u,o,s==null?void 0:s.viewId,g]),m=h.useMemo(()=>l?h.createElement("div",{className:"color-bar-ring",style:{backgroundColor:ue(l,u)}},h.createElement("div",{className:"circle"})):null,[l,u]);return h.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},m,v)},XM=n=>{const{open:t,setOpen:e,floatBarRef:i}=n,{floatBarData:o,floatBarColors:r,maranger:s,position:a,setFloatBarData:c}=h.useContext(ae),[l,d]=h.useState(),[u,M]=h.useState(1);h.useEffect(()=>{if(o!=null&&o.fillColor){const[f,w]=(o==null?void 0:o.fillColor)==="transparent"&&["transparent",1]||oi(o.fillColor);d(f),M(w)}},[o]);const g=h.useMemo(()=>{if(i!=null&&i.current&&a&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+a.y>200){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-a.y<140){const f={};return f.top="inherit",f.bottom=50,f}}},[i,a,s]),y=h.useMemo(()=>l&&l!=="transparent"?h.createElement(ri,{key:"fillColors",opacity:u||0,activeColor:l,setCurOpacity:(f,w,I)=>{I===C.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),I===C.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),M(f);const z=ue(w,f);o!=null&&o.fillColor&&(o.fillColor=z,c({fillColor:z})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:l&&ue(w,f),workState:I,viewId:s==null?void 0:s.viewId})}}):null,[l,u,s==null?void 0:s.control.room,s==null?void 0:s.viewId,o]),v=h.useMemo(()=>t?h.createElement("div",{className:"font-colors-menu",style:g,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},h.createElement(qM,{activeColor:l,onTouchEndHandler:f=>{f.stopPropagation(),d("transparent");const w="transparent";o!=null&&o.fillColor&&(o.fillColor=w,c({fillColor:w})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:w,viewId:s==null?void 0:s.viewId})},onClickHandler:f=>{f.preventDefault(),f.stopPropagation(),d("transparent");const w="transparent";o!=null&&o.fillColor&&(o.fillColor=w,c({fillColor:w})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:w,viewId:s==null?void 0:s.viewId})}}),r.map((f,w)=>{const I=St(...f);return h.createElement(ni,{key:w,color:I,activeColor:l,onTouchEndHandler:z=>{z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.fillColor&&(o.fillColor=T,c({fillColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:T,viewId:s==null?void 0:s.viewId})},onClickHandler:z=>{z.preventDefault(),z.stopPropagation(),d(I);const T=ue(I,u);o!=null&&o.fillColor&&(o.fillColor=T,c({fillColor:T})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:[O],fillColor:T,viewId:s==null?void 0:s.viewId})}})}),y):null,[t,l,r,y,o,s==null?void 0:s.viewId,u,g]),m=h.useMemo(()=>{const f=l&&l!=="transparent"&&ue(l,u)||"transparent";return h.createElement("div",{className:"color-bar-fill"},h.createElement("div",{className:"circle",style:{backgroundColor:f}}))},[l,u]);return h.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},m,v)},ef=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,floatBarRef:r}=n,{floatBarColors:s,maranger:a,position:c,setFloatBarData:l,floatBarData:d}=h.useContext(ae),[u,M]=h.useState(),[g,y]=h.useState(1);h.useEffect(()=>{if(i!=null&&i.fontColor){const[I,z]=(i==null?void 0:i.fontColor)==="transparent"&&["transparent",0]||oi(i.fontColor);M(I),y(z)}},[i==null?void 0:i.fontColor]);const v=h.useMemo(()=>{if(r!=null&&r.current&&c&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+c.y>180){const I={};return I.top="inherit",I.bottom=50,I}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-c.y<120){const I={};return I.top="inherit",I.bottom=50,I}}},[r,c,a]),m=h.useMemo(()=>u&&u!=="transparent"?h.createElement(ri,{key:"fontColors",opacity:g,activeColor:u,setCurOpacity:(I,z,T)=>{T===C.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),T===C.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),y(I);const j=ue(z,I);d!=null&&d.textOpt&&(d.textOpt.fontColor=j,l({textOpt:d.textOpt})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:o||[O],fontColor:u&&j,workState:T,viewId:a==null?void 0:a.viewId})}}):null,[u,g,a==null?void 0:a.control.room,a==null?void 0:a.viewId,d==null?void 0:d.textOpt,o]),f=h.useMemo(()=>t?h.createElement("div",{className:"font-colors-menu",style:v,onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()},onClick:I=>{I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},s.map((I,z)=>{const T=St(...I);return h.createElement(ni,{key:z,color:T,activeColor:u,onTouchEndHandler:j=>{j.stopPropagation(),M(T);const x=ue(T,g);d!=null&&d.textOpt&&(d.textOpt.fontColor=x,l({textOpt:d.textOpt})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:o||[O],fontColor:x,viewId:a==null?void 0:a.viewId})},onClickHandler:j=>{j.preventDefault(),j.stopPropagation(),M(T);const x=ue(T,g);d!=null&&d.textOpt&&(d.textOpt.fontColor=x,l({textOpt:d.textOpt})),F.emitMethod(U.MainEngine,S.SetColorNode,{workIds:o||[O],fontColor:x,viewId:a==null?void 0:a.viewId})}})}),m):null,[t,s,m,u,g,d==null?void 0:d.textOpt,o,a==null?void 0:a.viewId,v]),w=h.useMemo(()=>{const I=u&&u!=="transparent"&&ue(u,g)||"transparent";return h.createElement("div",{className:"color-bar"},h.createElement("div",{className:"color-bar-color",style:{backgroundColor:I}}))},[u,g]);return h.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:I=>{I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),e(!t)}},h.createElement("img",{alt:"icon",src:le("font-colors")}),w,f)},tf=n=>{const{bold:t,setBold:e,workIds:i,viewId:o}=n,r=s=>{const a=t==="bold"?"normal":"bold";s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,bold:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t==="bold"?"bold-active":"bold")}))},of=n=>{const{underline:t,setUnderline:e,workIds:i,viewId:o}=n,r=s=>{const a=!t;s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,underline:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t?"underline-active":"underline")}))},nf=n=>{const{lineThrough:t,setLineThrough:e,workIds:i,viewId:o}=n,r=s=>{const a=!t;s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,lineThrough:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t?"line-through-active":"line-through")}))},rf=n=>{const{italic:t,setItalic:e,workIds:i,viewId:o}=n,r=s=>{const a=t==="italic"?"normal":"italic";s==null||s.preventDefault(),s==null||s.stopPropagation(),e(a),F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,italic:a})};return h.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},h.createElement("img",{alt:"icon",src:le(t==="italic"?"italic-active":"italic")}))},sf=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,style:r}=n,{maranger:s}=h.useContext(ae),[a,c]=h.useState("normal"),[l,d]=h.useState("normal"),[u,M]=h.useState(!1),[g,y]=h.useState(!1);h.useEffect(()=>{i!=null&&i.bold&&c(i.bold),pe(i==null?void 0:i.underline)&&M(i.underline||!1),pe(i==null?void 0:i.lineThrough)&&y(i.lineThrough||!1),i!=null&&i.italic&&d(i.italic)},[i]);const v=h.useMemo(()=>{if(r&&r.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[r]),m=h.useMemo(()=>t?h.createElement("div",{className:"font-style-menu",style:v,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},h.createElement(tf,{workIds:o||[O],bold:a,setBold:c,viewId:s==null?void 0:s.viewId}),h.createElement(of,{workIds:o||[O],underline:u,setUnderline:M,viewId:s==null?void 0:s.viewId}),h.createElement(nf,{workIds:o||[O],lineThrough:g,setLineThrough:y,viewId:s==null?void 0:s.viewId}),h.createElement(rf,{workIds:o||[O],italic:l,setItalic:d,viewId:s==null?void 0:s.viewId})):null,[t,o,a,s==null?void 0:s.viewId,u,g,l,v]);return h.createElement("div",{className:`button normal-button ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},h.createElement("img",{alt:"icon",src:le(t?"font-style-active":"font-style")}),m)},ge=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Ze=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],af=n=>{const{style:t,onClickHandler:e}=n;return h.createElement("div",{className:"font-size-menu",style:t,onTouchEnd:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()},onClick:i=>{i.preventDefault(),i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}},ge.map(i=>h.createElement("div",{className:"font-size-btn",key:i,onClick:()=>{e(i)},onTouchEnd:()=>{e(i)}},i)))},cf=n=>{const t=h.useRef(null),{open:e,setOpen:i,textOpt:o,workIds:r,floatBarRef:s}=n,{maranger:a,position:c}=h.useContext(ae),[l,d]=h.useState(0),[u,M]=h.useState(),g=ge.length-1;h.useEffect(()=>{o!=null&&o.fontSize&&(d(o.fontSize),t.current&&(t.current.value=o.fontSize.toString()))},[o==null?void 0:o.fontSize]);const y=h.useMemo(()=>{if(s!=null&&s.current&&c&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>250){const I={};return I.top="inherit",I.bottom=35,I}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<180){const I={};return I.top="inherit",I.bottom=35,I}}},[s,c,a]);function v(I){d(I),I&&I>=ge[0]&&I<=ge[g]&&F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:r||[O],fontSize:I,viewId:a==null?void 0:a.viewId})}const m=I=>{var z;d(I),i(!1),(z=t.current)==null||z.blur(),I&&I>=ge[0]&&I<=ge[g]&&F.emitMethod(U.MainEngine,S.SetFontStyle,{workIds:r||[O],fontSize:I,viewId:a==null?void 0:a.viewId})},f=h.useMemo(()=>e?h.createElement(af,{onClickHandler:m,style:y}):null,[e,m,y]),w=I=>{I>ge[g]&&(I=ge[g]),I<ge[0]&&(I=ge[0]),v(I)};return h.useEffect(()=>()=>{a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u)},[a,u]),h.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()},onClick:I=>{I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},h.createElement("input",{className:"font-size-input",ref:t,onTouchEnd:()=>{t.current&&t.current.focus()},onClick:()=>{i(!e),t.current&&t.current.focus()},onKeyDown:I=>{if(I.key==="Backspace"){const z=window.getSelection(),T=z==null?void 0:z.getRangeAt(0);if(T!=null&&T.collapsed)return I.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(t.current){const I=t.current.value,z=parseInt(I);isNaN(z)?t.current.value="0":t.current.value=z.toString()}},onChange:I=>{const z=I.target.value,T=parseInt(z);T&&v(T)},onFocus:()=>{a!=null&&a.control.room&&!a.control.room.disableDeviceInputs&&(M(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0)},onBlur:()=>{a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u)}}),h.createElement("div",{className:"font-size-btns"},h.createElement("div",{className:"font-size-add",onClick:()=>{w(l+ge[0])},onTouchEnd:()=>{w(l+ge[0])}}),h.createElement("div",{className:"font-size-cut",onClick:()=>{w(l-ge[0])},onTouchEnd:()=>{w(l-ge[0])}})),f)},lf=n=>{const{workIds:t,maranger:e,islocked:i}=n;return h.createElement("div",{className:"button normal-button",onClick:o=>{o.preventDefault(),o.stopPropagation(),F.emitMethod(U.MainEngine,S.SetLock,{workIds:t||[O],isLocked:!i,viewId:e==null?void 0:e.viewId})},onTouchEnd:o=>{o.stopPropagation(),F.emitMethod(U.MainEngine,S.SetLock,{workIds:t||[O],isLocked:!i,viewId:e==null?void 0:e.viewId})}},h.createElement("img",{alt:"icon",src:le(i?"unlock-new":"lock-new")}))},Wt=n=>{const{icon:t,min:e,max:i,step:o,value:r,onInputHandler:s}=n,[a,c]=h.useState(0),l=h.useRef(null),d=u=>{u>i&&(u=i),u<e&&(u=e),c(u),s(u),l.current&&(l.current.value=u.toString())};return h.useEffect(()=>{r&&(c(r),l.current&&(l.current.value=r.toString()))},[r]),h.createElement("div",{className:"button input-button",onTouchEnd:u=>{u.stopPropagation(),u.nativeEvent.stopImmediatePropagation()},onClick:u=>{u.preventDefault(),u.stopPropagation(),u.nativeEvent.stopImmediatePropagation()}},h.createElement("img",{src:le(t)}),h.createElement("input",{className:"input-number",type:"text",ref:l,onTouchEnd:()=>{l.current&&l.current.focus()},onClick:()=>{l.current&&l.current.focus()},onKeyDown:u=>{if(u.key==="Backspace"){const M=window.getSelection(),g=M==null?void 0:M.getRangeAt(0);if(g!=null&&g.collapsed)return u.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(l.current){const u=l.current.value,M=parseInt(u);isNaN(M)?l.current.value="0":l.current.value=M.toString()}},onChange:u=>{const M=u.target.value,g=parseInt(M);g&&g&&g>=e&&g<=i&&d(g)}}),h.createElement("div",{className:"input-number-btns"},h.createElement("div",{className:"input-number-add",onClick:()=>{d(a+o)},onTouchEnd:()=>{d(a+o)}}),h.createElement("div",{className:"input-number-cut",onClick:()=>{d(a-o)},onTouchEnd:()=>{d(a-o)}})))},uf=n=>{const{icon:t,min:e,max:i,step:o,value:r,onInputHandler:s}=n;return h.createElement("div",{className:"button input-button"},h.createElement("img",{src:le(t)}),h.createElement(hf,{min:e,max:i,step:o,value:r,onInputHandler:s}))},hf=n=>{const{value:t,min:e,max:i,onInputHandler:o}=n,[r,s]=h.useState({x:0,y:0});h.useEffect(()=>{s({x:t*100,y:0})},[]);const a=ne((d,u)=>{d.preventDefault(),d.stopPropagation();let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,i*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const g=M/100;console.log("first1--doing",u,u.x,M,g),t!==g&&o(g)},100,{leading:!1}),c=d=>{d.preventDefault(),d.stopPropagation()},l=ne((d,u)=>{d.preventDefault(),d.stopPropagation();let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,i*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const g=M/100;console.log("first1--end",u,u.x,M,g),t!==g&&o(g)},100,{leading:!1});return console.log("position",r),h.createElement("div",{className:"range-number-container",onClick:d=>{const u=d.nativeEvent.offsetX-6;let M=Math.floor(Math.max(u,e*100));M=Math.floor(Math.min(M,i*100)),s({x:M,y:0});const g=M/100;console.log("first1",d.nativeEvent.offsetX,M,g),t!==g&&o(g)}},h.createElement("div",{className:"range-number-color"}),h.createElement("div",{className:"range-number"},h.createElement(ot,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:c,onStop:l},h.createElement("div",{className:"circle",onClick:c}))))},df=n=>{const{icon:t,value:e,onChangeHandler:i,style:o}=n,[r,s]=h.useState(0),[a,c]=h.useState(),l=h.useRef(null),d=h.useCallback(g=>{g>=Ze.length&&(g=0),g<0&&(g=Ze.length-1),s(g),i(Ze[g]),c(!1),l.current&&(l.current.value=Ze[g])},[i]),u=h.useMemo(()=>{if(o&&o.bottom){const g={};return g.top="inherit",g.bottom=50,g}},[o]);h.useEffect(()=>{e&&(s(Ze.indexOf(e)),l.current&&(l.current.value=e))},[e]);const M=h.useMemo(()=>a?h.createElement(gf,{options:Ze,onClickHandler:d,style:u}):null,[a,d,u]);return h.createElement("div",{className:"button input-button"},h.createElement("img",{src:le(t)}),h.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onTouchEnd:()=>{l.current&&l.current.focus()},onClick:()=>{l.current&&(l.current.focus(),c(!a))}}),h.createElement("div",{className:"input-number-btns"},h.createElement("div",{className:"input-number-add",onClick:()=>{d(r+1)},onTouchEnd:()=>{d(r+1)}}),h.createElement("div",{className:"input-number-cut",onClick:()=>{d(r-1)},onTouchEnd:()=>{d(r-1)}})),M)},gf=n=>{const{options:t,style:e,onClickHandler:i}=n;return h.createElement("div",{className:"select-option-menu",style:e,onTouchEnd:o=>{o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()},onClick:o=>{o.preventDefault(),o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()}},t.map((o,r)=>h.createElement("div",{className:"select-option-btn",key:o,onClick:()=>{i(r)},onTouchEnd:()=>{i(r)}},o)))},Mf=n=>{const{maranger:t,innerRatio:e,innerVerticeStep:i,vertices:o}=n,r=c=>{console.log("onInputHandler",c),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:N.Star,viewId:t.viewId,vertices:c})},s=c=>{console.log("onInputHandler",c),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:N.Star,viewId:t.viewId,innerVerticeStep:c})},a=c=>{console.log("onInputHandler",c),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:N.Star,viewId:t.viewId,innerRatio:c})};return h.createElement(h.Fragment,null,h.createElement(Wt,{value:o,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:r}),h.createElement(Wt,{value:i,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:s}),h.createElement(uf,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:a}))},ff=n=>{const{maranger:t,vertices:e}=n,i=o=>{F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:N.Polygon,viewId:t.viewId,vertices:o})};return h.createElement(Wt,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:i})},pf=n=>{const{maranger:t,placement:e}=n,i=o=>{console.log("onChangeHandler-SpeechBalloonFormView",o),F.emitMethod(U.MainEngine,S.SetShapeOpt,{workIds:[O],toolsType:N.SpeechBalloon,viewId:t.viewId,placement:o})};return h.createElement(df,{value:e,icon:"speechBallon-placement",onChangeHandler:i})},At=n=>{const{icon:t,isActive:e,onClickHandler:i,onTouchEndHandler:o}=n;return h.createElement("div",{className:`button tab-button ${e?"active":""}`,onClick:i,onTouchEnd:o},h.createElement("img",{src:le(t)}))},yf=n=>{const{toolsTypes:t,style:e,maranger:i,shapeOpt:o}=n,[r,s]=h.useState();h.useEffect(()=>{t.includes(N.Polygon)?s(N.Polygon):t.includes(N.Star)?s(N.Star):s(N.SpeechBalloon)},[t]);const a=(u,M)=>{M==null||M.preventDefault(),M==null||M.stopPropagation(),s(u)},c=h.useMemo(()=>r===N.Polygon&&i&&o.vertices?h.createElement(ff,{vertices:o.vertices,maranger:i}):null,[i,r,o]),l=h.useMemo(()=>r===N.Star&&i&&o.vertices&&o.innerVerticeStep&&o.innerRatio?h.createElement(Mf,{maranger:i,vertices:o.vertices,innerVerticeStep:o.innerVerticeStep,innerRatio:o.innerRatio}):null,[i,r,o]),d=h.useMemo(()=>r===N.SpeechBalloon&&i&&o.placement?h.createElement(pf,{maranger:i,placement:o.placement}):null,[i,r,o]);return h.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:u=>{u.stopPropagation(),u.nativeEvent.stopImmediatePropagation(),u==null||u.preventDefault()}},h.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(N.Polygon)&&h.createElement(At,{isActive:r===N.Polygon,icon:r===N.Polygon?"polygon-active":"polygon",onClickHandler:a.bind(void 0,N.Polygon),onTouchEndHandler:a.bind(void 0,N.Polygon)})||null,t.includes(N.Star)&&h.createElement(At,{isActive:r===N.Star,icon:r===N.Star?"star-active":"star",onClickHandler:a.bind(void 0,N.Star),onTouchEndHandler:a.bind(void 0,N.Star)})||null,t.includes(N.SpeechBalloon)&&h.createElement(At,{isActive:r===N.SpeechBalloon,icon:r===N.SpeechBalloon?"speechBallon-active":"speechBallon",onClickHandler:a.bind(void 0,N.SpeechBalloon),onTouchEndHandler:a.bind(void 0,N.SpeechBalloon)})||null),h.createElement("div",{className:"shapeOpt-sub-menu-content"},c,l,d))},If=n=>{const{open:t,setOpen:e,floatBarRef:i,toolsTypes:o,shapeOpt:r}=n,{floatBarData:s,maranger:a,position:c}=h.useContext(ae),[l,d]=h.useState([]),[u,M]=h.useState(),g=h.useMemo(()=>{if(i!=null&&i.current&&c&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+c.y>200){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-c.y<140){const f={};return f.top="inherit",f.bottom=50,f}}},[i,c,a]),y=h.useMemo(()=>t&&o&&a&&r?(a.control.room&&!a.control.room.disableDeviceInputs&&(M(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0),h.createElement(yf,{shapeOpt:r,style:g,toolsTypes:o,maranger:a})):(a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u),null),[t,g,o,a,r]),v=f=>{f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},m=f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)};return h.useEffect(()=>{ce(s==null?void 0:s.selectIds,l)||s!=null&&s.selectIds&&!ce(s==null?void 0:s.selectIds,l)&&(d(s==null?void 0:s.selectIds),e(!1))},[t,s,l,e]),h.useEffect(()=>()=>{t&&a!=null&&a.control.room&&pe(u)&&(a.control.room.disableDeviceInputs=u)},[t,a,u]),h.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:v,onTouchEnd:m},y,h.createElement("img",{alt:"icon",src:le(t?"shapes-active":"shapes")}))},Oo=h.memo(n=>{const{textOpt:t,workIds:e,noLayer:i,position:o}=n,{floatBarData:r,maranger:s}=h.useContext(ae),[a,c]=h.useState(0),l=h.useRef(null),d=h.useMemo(()=>{var j,x,A;const I={},z=(r==null?void 0:r.w)||((j=t==null?void 0:t.boxSize)==null?void 0:j[0])||0,T=(r==null?void 0:r.h)||((x=t==null?void 0:t.boxSize)==null?void 0:x[1])||0;if(o&&z&&T&&(s!=null&&s.width)&&(s!=null&&s.height)){if(o.y<60&&(o.y+z<s.height-60?I.bottom=-120:o.y+T<s.height?I.bottom=-58:o.y>0?I.top=62:I.top=-o.y+62),o.x<0)I.left=-o.x+3;else if(o.x+(((A=l.current)==null?void 0:A.offsetWidth)||z)>s.width){const W=z+o.x-s.width;I.left="initial",I.right=W}return I}},[l,o,r==null?void 0:r.w,r==null?void 0:r.h,s==null?void 0:s.width,s==null?void 0:s.height,t==null?void 0:t.boxSize]),u=h.useMemo(()=>r!=null&&r.fillColor?h.createElement(XM,{floatBarRef:l,open:a===3,setOpen:I=>{c(I===!0?3:0)}}):null,[r==null?void 0:r.fillColor,a,l]),M=h.useMemo(()=>r!=null&&r.strokeColor?h.createElement(_M,{floatBarRef:l,open:a===2,setOpen:I=>{c(I===!0?2:0)}}):null,[r==null?void 0:r.strokeColor,a,l]),g=h.useMemo(()=>t!=null&&t.fontColor&&(s!=null&&s.viewId)?h.createElement(ef,{floatBarRef:l,open:a===4,setOpen:I=>{c(I===!0?4:0)},textOpt:t,workIds:e}):null,[t,a,e,s,l]),y=h.useMemo(()=>t&&(s!=null&&s.viewId)?h.createElement(sf,{open:a===6,setOpen:I=>{c(I===!0?6:0)},textOpt:t,workIds:e,style:d}):null,[t,a,e,s,d]),v=h.useMemo(()=>t&&(s!=null&&s.viewId)?h.createElement(cf,{open:a===7,setOpen:I=>{c(I===!0?7:0)},textOpt:t,workIds:e,floatBarRef:l}):null,[t,a,e,s,l]),m=h.useMemo(()=>i?null:h.createElement(KM,{open:a===1,setOpen:I=>{c(I===!0?1:0)},floatBarRef:l}),[i,a,l]),f=h.useMemo(()=>r!=null&&r.canLock&&s?h.createElement(lf,{workIds:e,maranger:s,islocked:r.isLocked}):null,[r,s,e]),w=h.useMemo(()=>s&&(s!=null&&s.viewId)&&d&&(r!=null&&r.shapeOpt)&&(r!=null&&r.toolsTypes)?h.createElement(If,{open:a===8,setOpen:I=>{c(I===!0?8:0)},floatBarRef:l,workIds:e,toolsTypes:r.toolsTypes,shapeOpt:r.shapeOpt}):null,[r,s,a,d,e,l]);return h.createElement("div",{className:"bezier-pencil-plugin-floatbtns",style:d,ref:l},s&&h.createElement(VM,{workIds:e,maranger:s}),m,f,!!(s!=null&&s.viewId)&&h.createElement(JM,{workIds:e,viewId:s.viewId}),w,v,y,g,M,u)}),vf=n=>{const{data:t,isActive:e,manager:i,workId:o}=n,{opt:r,scale:s,translate:a,x:c,y:l}=t,d=`scale(${s||1}) ${a&&"translate("+a[0]+"px,"+a[1]+"px)"||""}`,{fontSize:u,fontFamily:M,underline:g,fontColor:y,lineThrough:v,textAlign:m,strokeColor:f,lineHeight:w,bold:I,italic:z,uid:T}=r,j=u,x=w||j*1.2,A={fontSize:`${j}px`,lineHeight:`${x}px`,color:y,borderColor:f,minHeight:`${x}px`};M&&(A.fontFamily=`${M}`),(v||g)&&(A.textDecoration=`${v&&"line-through"||""}${g&&" underline"||""}`),I&&(A.fontWeight=`${I}`),z&&(A.fontStyle=`${z}`),m&&(A.textAlign=`${m}`);let W="";r!=null&&r.text&&(W=r.text.split(",").reduce((Q,P,X)=>{const q=P===""?"<br/>":P;return X===0?q:`${Q}<div>${q}</div>`},""));function b(){var Y,Q;console.log("onServiceDerive---handleClick",e,T,(Y=i.control.collector)==null?void 0:Y.uid),e&&(T&&T===((Q=i.control.collector)==null?void 0:Q.uid)||!T)&&i.control.textEditorManager.active(o)}return h.createElement("div",{className:"editor-box",style:{left:`${c}px`,top:`${l}px`,transform:d,transformOrigin:"left top",pointerEvents:"none"}},h.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:A,dangerouslySetInnerHTML:{__html:W},onClick:b}))},Nf=h.memo(n=>{const{data:t,position:e,workId:i,selectIds:o,updateOptInfo:r}=n,[s,a]=h.useState([0,0]),{opt:c,scale:l,translate:d,x:u,y:M}=t,g=h.useRef(null);h.useEffect(()=>{se(u)&&se(M)&&a([u-((e==null?void 0:e.x)||0),M-((e==null?void 0:e.y)||0)])},[u,M,o,i]),h.useEffect(()=>{var P,X;if((P=g.current)!=null&&P.offsetWidth&&((X=g.current)!=null&&X.offsetHeight)){const q=c.boxSize;((q==null?void 0:q[0])!==g.current.offsetWidth||q[1]!==g.current.offsetHeight||!q)&&(console.log("updateForViewEdited---1--0",i,q,[g.current.offsetWidth,g.current.offsetHeight]),r({activeTextId:i,update:{boxSize:[g.current.offsetWidth,g.current.offsetHeight],workState:C.Done},syncData:{canSync:!0,canWorker:!0}}))}},[c.fontSize]);const y=`scale(${l||1}) ${d&&"translate("+d[0]+"px,"+d[1]+"px)"||""}`,{fontSize:v,fontFamily:m,underline:f,fontColor:w,lineThrough:I,textAlign:z,strokeColor:T,lineHeight:j,bold:x,italic:A}=c,W=v,b=j||W*1.2,Y={fontSize:`${W}px`,lineHeight:`${b}px`,color:w,borderColor:T,minHeight:`${b}px`,pointerEvents:"none"};m&&(Y.fontFamily=`${m}`),(I||f)&&(Y.textDecoration=`${I&&"line-through"||""}${f&&" underline"||""}`),z&&(Y.textAlign=`${z}`),x&&(Y.fontWeight=`${x}`),A&&(Y.fontStyle=`${A}`);let Q="";return c!=null&&c.text&&(Q=c.text.split(",").reduce((X,q,_)=>{const G=q===""?"<br/>":q;return _===0?G:`${X}<div>${G}</div>`},"")),h.createElement("div",{className:"editor-box",style:{left:`${s[0]}px`,top:`${s[1]}px`,transform:y,transformOrigin:"left top",zIndex:1,pointerEvents:"none"}},h.createElement("div",{className:"editor readOnly",ref:g,style:Y,dangerouslySetInnerHTML:{__html:Q}}))}),wf=n=>{const{data:t,workId:e,isSelect:i,handleKeyUp:o,handleFocus:r,updateOptInfo:s,showFloatBtns:a,manager:c}=n,[l,d]=h.useState(),{opt:u,scale:M,translate:g,x:y,y:v}=t,[m,f]=h.useState(""),w=h.useRef(null);h.useEffect(()=>{let D="";u!=null&&u.text&&(D=u.text.split(",").reduce(($,re,he)=>{const we=re===""?"<br/>":re;return he===0?we:`${$}<div>${we}</div>`},"")),f(D),Promise.resolve().then(()=>{w.current&&w.current.click()})},[]),h.useEffect(()=>{var D,B;(D=w.current)!=null&&D.offsetWidth&&((B=w.current)!=null&&B.offsetHeight)&&s({activeTextId:e,update:{boxSize:[w.current.offsetWidth,w.current.offsetHeight],workState:C.Doing}})});const I=`scale(${M||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`,{fontSize:z,fontFamily:T,underline:j,fontColor:x,lineThrough:A,textAlign:W,strokeColor:b,lineHeight:Y,bold:Q,italic:P}=u,X=z,q=Y||X*1.2,_={transform:I,transformOrigin:"left top",fontSize:`${X}px`,lineHeight:`${q}px`,color:x,borderColor:b,minHeight:`${q}px`};T&&(_.fontFamily=`${T}`),(A||j)&&(_.textDecoration=`${A&&"line-through"||""} ${j&&" underline"||""}`),W&&(_.textAlign=`${W}`),Q&&(_.fontWeight=`${Q}`),P&&(_.fontStyle=`${P}`);function G(){var D;if(w.current){w.current.focus();const B=window==null?void 0:window.getSelection(),$=w.current.lastChild;if(B&&$){const re=document.createRange(),he=((D=$.textContent)==null?void 0:D.length)||0;($==null?void 0:$.nodeName)==="#text"?re.setStart($,he):re.setStart($,he&&1||0),re.collapse(!0),B.removeAllRanges(),B.addRange(re)}}}function J(D){if(D.key==="Backspace"){const B=window.getSelection(),$=B==null?void 0:B.getRangeAt(0);if($!=null&&$.collapsed)return D.preventDefault(),document.execCommand("delete",!1),!1}return!1}function K(D){var B,$;if(D.preventDefault(),w.current){let re=(D.clipboardData||window.clipboardData).getData("text");re=re.toUpperCase();const he=window==null?void 0:window.getSelection();if(!(he!=null&&he.rangeCount))return;const we=re.split(/\n/);if(he&&we.length){he.deleteFromDocument();const Le=document.createRange();let de=w.current.lastChild;if(!de){const ke=document.createTextNode(we[0]);if(w.current.appendChild(ke),we.length===1){const nt=((B=ke.textContent)==null?void 0:B.length)||0;Le.setStart(ke,nt),Le.collapse(!0),he.removeAllRanges(),he.addRange(Le);return}}if((de==null?void 0:de.nodeName)==="#text"&&(de.textContent=de.textContent+we[0],we.length===1)){const ke=(($=de.textContent)==null?void 0:$.length)||0;Le.setStart(de,ke),Le.collapse(!0),he.removeAllRanges(),he.addRange(Le);return}(de==null?void 0:de.nodeName)==="DIV"&&(de.innerText=de.innerText+we[0]);for(let ke=1;ke<we.length;ke++){const nt=we[ke];if(nt){const ai=document.createElement("div");ai.innerText=nt,w.current.appendChild(ai)}}de=w.current.lastChild,de&&Le.setStart(de,1),Le.collapse(!0),he.removeAllRanges(),he.addRange(Le)}}}return h.createElement("div",{className:"editor-box",style:{left:`${y}px`,top:`${v}px`,zIndex:2,pointerEvents:"none"},onFocus:()=>{c.control.room&&!c.control.room.disableDeviceInputs&&(d(c.control.room.disableDeviceInputs),c.control.room.disableDeviceInputs=!0)},onBlur:()=>{c!=null&&c.control.room&&pe(l)&&(c.control.room.disableDeviceInputs=l)},onKeyDown:D=>(D.stopPropagation(),!0),onMouseMove:D=>(D.stopPropagation(),D.preventDefault(),!0)},!i&&a&&h.createElement(Oo,{textOpt:u,workIds:[e],noLayer:!0,position:{x:y,y:v}}),h.createElement("div",{id:e,contentEditable:!0,className:"editor",ref:w,style:_,dangerouslySetInnerHTML:{__html:m},onKeyDown:J,onKeyUp:o,onClick:G,onTouchEnd:G,onFocus:r,onPaste:K}))};class Yo extends h.Component{constructor(t){super(t)}getInnerText(t){const e=[];for(let i=0;i<t.childNodes.length;i++){const o=t.childNodes[i];if(o.nodeName==="#text"&&i===0){const r=o.textContent.split(/\n/),s=r.pop();e.push(...r),s&&e.push(s)}else if(o.nodeName==="DIV"){const r=o.innerText.split(/\n/);if(r.length===2&&r[0]===""&&r[1]==="")e.push("");else{const s=r.shift();s&&e.push(s);const a=r.pop();e.push(...r),a&&e.push(a)}}}return e}updateOptInfo(t){var s,a;const{activeTextId:e,update:i,syncData:o}=t,r=e&&oe(((s=this.props.manager.control.textEditorManager)==null?void 0:s.get(e))||((a=this.props.editors)==null?void 0:a.get(e)));r&&r.opt&&(r.opt={...r.opt,...i},o&&(r.canSync=o.canSync,r.canWorker=o.canWorker),this.props.manager.control.textEditorManager.updateForViewEdited(e,r))}get editorUI(){var t;if((t=this.props.editors)!=null&&t.size){const e=[];return this.props.editors.forEach((i,o)=>{if(this.props.selectIds.includes(o)&&!(this.props.activeTextId==o)){const s=h.createElement(Nf,{key:o,data:i,workId:o,isSelect:!0,position:this.props.position,selectIds:this.props.selectIds,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(s)}}),e}return null}render(){return h.createElement("div",{ref:this.props.textRef},this.editorUI)}}class mf extends Yo{constructor(t){super(t)}handleKeyUp(t){const e=this.getInnerText(t.nativeEvent.target),i=this.props.activeTextId;i&&this.updateOptInfo({activeTextId:i,update:{text:e.toString(),boxSize:[t.nativeEvent.target.offsetWidth,t.nativeEvent.target.offsetHeight],workState:C.Doing},syncData:{canSync:!0,canWorker:!0}})}handleFocus(t){const e=this.props.activeTextId;e&&this.updateOptInfo({activeTextId:e,update:{boxSize:[t.nativeEvent.target.offsetWidth,t.nativeEvent.target.offsetHeight],workState:C.Doing},syncData:{canSync:!0,canWorker:!0}})}get editorUI(){var t;if((t=this.props.editors)!=null&&t.size){const e=[];return this.props.editors.forEach((i,o)=>{if(!(this.props.selectIds.includes(o)&&this.props.activeTextId!==o)){const a=this.props.activeTextId==o?h.createElement(wf,{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}):h.createElement(vf,{manager:this.props.manager,isActive:i.opt.workState===C.Doing||i.opt.workState===C.Start||!1,key:o,data:i,workId:o});e.push(a)}}),e}return null}render(){return h.createElement("div",{className:`${this.props.className}`},this.editorUI)}}const Tf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},h.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},zf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}})},jf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},h.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),h.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},Cf=()=>{const{floatBarData:n}=h.useContext(ae);return h.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},h.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},Sf=h.forwardRef((n,t)=>{const{floatBarData:e,zIndex:i,position:o,angle:r,operationType:s,setPosition:a,setOperationType:c,maranger:l}=h.useContext(ae),{className:d,editors:u,activeTextId:M}=n,g=h.useRef(null),[y,v]=h.useState(C.Pending),[m,f]=h.useState(),w=b=>{b.preventDefault(),b.stopPropagation(),c(S.TranslateNode),v(C.Start),f(o),l!=null&&l.control.room&&(l.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.TranslateNode,{workIds:[O],position:o,workState:C.Start,viewId:l==null?void 0:l.viewId})},I=ne((b,Y)=>{b.preventDefault(),b.stopPropagation();const Q={x:Y.x,y:Y.y};a(Q),c(S.None),v(C.Done),l!=null&&l.control.room&&(l.control.room.disableDeviceInputs=!1),console.log("onDragEndHandler"),F.emitMethod(U.MainEngine,S.TranslateNode,{workIds:[O],position:Q,workState:C.Done,viewId:l==null?void 0:l.viewId})},100,{leading:!1}),z=ne((b,Y)=>{b.preventDefault(),b.stopPropagation();const Q={x:Y.x,y:Y.y};(Y.x!==(o==null?void 0:o.x)||Y.y!==(o==null?void 0:o.y))&&(a(Q),v(C.Doing),F.emitMethod(U.MainEngine,S.TranslateNode,{workIds:[O],position:Q,workState:C.Doing,viewId:l==null?void 0:l.viewId}))},100,{leading:!1}),T=h.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.all||s===S.RotateNode?null:h.createElement(Tf,null),[e,s]),j=h.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.both||s===S.RotateNode?null:h.createElement(zf,null),[e,s]),x=h.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.proportional||s===S.RotateNode?null:h.createElement(jf,null),[e,s]),A=h.useMemo(()=>(e==null?void 0:e.scaleType)===fe.none&&(e!=null&&e.canLock)?h.createElement(Cf,null):null,[e]),W=h.useMemo(()=>{const b=(e==null?void 0:e.selectIds)||[];return u&&l&&b?h.createElement(Yo,{manager:l,textRef:g,selectIds:b,position:o,activeTextId:M,editors:u}):null},[e==null?void 0:e.selectIds,u,l,M]);return h.createElement(ot,{disabled:!!(e!=null&&e.isLocked),position:o,onStart:w,onDrag:z,onStop:I,handle:"canvas"},h.createElement("div",{className:`${d}`,style:e?{width:e.w,height:e.h,zIndex:i,pointerEvents:i<2||A?"none":"auto"}:void 0,onClick:ne(b=>{if(b.stopPropagation(),b.preventDefault(),l&&(u!=null&&u.size)&&g.current&&ce(m,o)){const Y=l.getPoint(b.nativeEvent);Y&&l.control.textEditorManager.computeTextActive(Y,l.viewId)}return!1},100,{leading:!1}),onTouchEndCapture:ne(b=>{if(b.stopPropagation(),b.preventDefault(),l&&(u!=null&&u.size)&&g.current&&y!==C.Doing){const Y=l.getPoint(b.nativeEvent);Y&&l.control.textEditorManager.computeTextActive(Y,l.viewId)}return!1},100,{leading:!1})},h.createElement("div",{className:"bezier-pencil-plugin-floatCanvas-box",style:{width:"100%",height:"100%",transform:`rotate(${r}deg)`}},h.createElement("canvas",{ref:t,className:"bezier-pencil-plugin-floatCanvas"})),A,T,j,x,W))}),Df=h.memo(Sf,(n,t)=>ce(n,t)?!0:(console.log("FloatBar-----isEqual",!1),!1)),xf=n=>{const{floatBarData:t,position:e,operationType:i}=h.useContext(ae),{className:o}=n;return i===S.None?h.createElement("div",{className:`${o}`,style:t?{left:e==null?void 0:e.x,top:e==null?void 0:e.y,width:t.w,height:t.h}:void 0},h.createElement(Oo,{textOpt:t==null?void 0:t.textOpt,position:e,noLayer:t==null?void 0:t.isLocked})):null},Lf=n=>{const{className:t}=n,{floatBarData:e,angle:i,setAngle:o,position:r,setOperationType:s,maranger:a}=h.useContext(ae),[c,l]=h.useState(!1),[d,u]=h.useState(new ie),[M,g]=h.useState(new ie);h.useEffect(()=>{if(e){const f=Math.floor(e.w/2),w=Math.floor(-e.h/2);g(new ie(f,w)),u(new ie)}},[e,r]);const y=(f,w)=>{f.preventDefault(),f.stopPropagation(),l(!0);const I=Math.round(ie.GetAngleByPoints(d,M,new ie(w.x,w.y)))||0;o(I),s(S.RotateNode),a!=null&&a.control.room&&(a.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.RotateNode,{workIds:[O],angle:I,workState:C.Start,viewId:a==null?void 0:a.viewId})},v=ne((f,w)=>{f.preventDefault(),f.stopPropagation(),l(!1);const I=Math.round(ie.GetAngleByPoints(d,M,new ie(w.x,w.y)))||0;o(I),s(S.None),a!=null&&a.control.room&&(a.control.room.disableDeviceInputs=!1),F.emitMethod(U.MainEngine,S.RotateNode,{workIds:[O],angle:I,workState:C.Done,viewId:a==null?void 0:a.viewId})},100,{leading:!1}),m=ne((f,w)=>{f.preventDefault(),f.stopPropagation(),l(!0);const I=Math.round(ie.GetAngleByPoints(d,M,new ie(w.x,w.y)))||0;o(I),s(S.RotateNode),F.emitMethod(U.MainEngine,S.RotateNode,{workIds:[O],angle:I,workState:C.Doing,viewId:a==null?void 0:a.viewId})},100,{leading:!1});return h.createElement(ot,{handle:".bezier-pencil-plugin-rotate-mouse-pointer",onStart:y,onDrag:m,onStop:v},h.createElement("div",{className:`${t}`,style:r&&e?{left:r.x-30,top:r.y+e.h+20}:void 0},!c&&h.createElement("div",{className:"bezier-pencil-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},h.createElement("img",{alt:"icon",src:le("rotation-button")})),h.createElement("div",{className:`bezier-pencil-plugin-rotate-mouse-pointer ${c?"active":""}`},h.createElement("img",{alt:"icon",src:le("rotation")}),h.createElement("div",{className:"angle-icon"},i,"°"))))},kf="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==",Af="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",Ef="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";class bf extends h.Component{constructor(e){super(e);p(this,"renderAvatar",e=>{var o;const i=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.detectCursorName(e);return h.createElement("img",{className:"cursor-selector-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":i,marginRight:r?4:0},src:(o=e.payload)==null?void 0:o.avatar,alt:"avatar"})}else return null});p(this,"getOpacity",e=>{const i=this.getCursorName(e),o=this.detectAvatar(e);return i===void 0&&o===void 0?0:1});p(this,"getCursorName",e=>{if(e.payload&&e.payload.cursorName)return e.payload.cursorName});p(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");p(this,"getCursorBackgroundColor",e=>{const i=this.detectCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:i?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});p(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");p(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));p(this,"detectCursorName",e=>!!(e.payload&&e.payload.cursorName));p(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));p(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return h.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)})}render(){const{roomMember:e}=this.props,i=this.getCursorName(e);switch(e.memberState.currentApplianceName){case H.pencil:return h.createElement("div",{className:"cursor-box"},h.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"10px"}},h.createElement("div",{className:"cursor-name"},h.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),h.createElement("div",null,h.createElement("img",{className:"cursor-pencil-image",src:kf,alt:"pencilCursor"}))));case H.text:return h.createElement("div",{className:"cursor-box"},h.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},h.createElement("div",{className:"cursor-name"},h.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),h.createElement("div",null,h.createElement("img",{className:"cursor-arrow-image",src:Ef,alt:"textCursor"}))));case H.rectangle:case H.arrow:case H.straight:case H.shape:case H.ellipse:return h.createElement("div",{className:"cursor-box"},h.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},h.createElement("div",{className:"cursor-name"},h.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),h.createElement("div",null,h.createElement("img",{className:"cursor-arrow-image",src:Af,alt:"shapeCursor"}))));default:return null}}}const Of=n=>{const{className:t,info:e}=n,{roomMember:i,...o}=e||{};return h.createElement("div",{className:`${t}`,style:o?{transform:`translate(${o.x}px, ${o.y}px)`}:{display:"none"}},i&&h.createElement(bf,{roomMember:i}))},Yf=n=>{const{className:t,manager:e}=n,[i,o]=h.useState();h.useEffect(()=>(e.internalMsgEmitter.on([U.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([U.Cursor,e.viewId],r)}),[e]);function r(a){o(a)}return h.useMemo(()=>{if(i!=null&&i.length){const a=i.map(c=>{var l;return c.roomMember?h.createElement(Of,{key:(l=c.roomMember)==null?void 0:l.memberId,className:t,info:c}):null});return h.createElement(h.Fragment,null,a)}return null},[i])},Pf=n=>{const{className:t}=n,[e,i]=h.useState({x:0,y:0,h:0,w:0}),{floatBarData:o,position:r,maranger:s}=h.useContext(ae);h.useEffect(()=>{o&&i({x:o.x,y:o.y,w:o.w,h:o.h})},[]);const a=d=>{if(d.preventDefault(),d.stopPropagation(),o!=null&&o.w&&(o!=null&&o.h)){const u={x:(r==null?void 0:r.x)||0,y:(r==null?void 0:r.y)||0,w:o.w,h:o.h};i(u),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.ScaleNode,{workIds:[O],box:u,workState:C.Start,viewId:s==null?void 0:s.viewId})}},c=ne((d,u,M,g)=>{d.preventDefault(),d.stopPropagation();const y={x:e.x,y:e.y,w:e.w,h:e.h};switch(y.w+=g.width,y.h+=g.height,u){case"bottomLeft":case"left":y.x-=g.width;break;case"topLeft":y.x-=g.width,y.y-=g.height;break;case"top":case"topRight":y.y-=g.height;break}(g.width!==0||g.height!==0)&&F.emitMethod(U.MainEngine,S.ScaleNode,{workIds:[O],box:y,dir:u,workState:C.Doing,viewId:s==null?void 0:s.viewId})},100,{leading:!1}),l=ne((d,u,M,g)=>{d.preventDefault(),d.stopPropagation();const y={x:e.x,y:e.y,w:e.w,h:e.h};switch(y.w+=g.width,y.h+=g.height,u){case"bottomLeft":case"left":y.x-=g.width;break;case"topLeft":y.x-=g.width,y.y-=g.height;break;case"top":case"topRight":y.y-=g.height;break}s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),F.emitMethod(U.MainEngine,S.ScaleNode,{workIds:[O],box:y,dir:u,workState:C.Done,viewId:s==null?void 0:s.viewId})},100,{leading:!1});return h.createElement(Wo.Resizable,{className:`${t}`,boundsByDirection:!0,size:{width:(o==null?void 0:o.w)||0,height:(o==null?void 0:o.h)||0},style:{position:"absolute",pointerEvents:"auto",left:r==null?void 0:r.x,top:r==null?void 0:r.y},enable:{top:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,right:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,bottom:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,left:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(o==null?void 0:o.scaleType)===fe.proportional,onResizeStart:a,onResize:c,onResizeStop:l})},_i=n=>{const{id:t,pos:e,pointMap:i,type:o}=n,{setOperationType:r,maranger:s,floatBarData:a}=h.useContext(ae),[c,l]=h.useState({x:0,y:0}),[d,u]=h.useState(C.Pending);h.useEffect(()=>{(d===C.Pending||d===C.Done)&&l(e)},[e,d]);const M=v=>{v.preventDefault(),v.stopPropagation(),r(S.SetPoint),u(C.Start),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),F.emitMethod(U.MainEngine,S.SetPoint,{workId:O,pointMap:i,workState:C.Start,viewId:s==null?void 0:s.viewId})},g=ne((v,m)=>{if(v.preventDefault(),v.stopPropagation(),r(S.SetPoint),u(C.Doing),m.x!==(c==null?void 0:c.x)||m.y!==(c==null?void 0:c.y)){const f=i.get(t);f&&o==="start"&&(s!=null&&s.control.viewContainerManager)?f[0]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId):f&&o==="end"&&(s!=null&&s.control.viewContainerManager)&&(f[1]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId)),F.emitMethod(U.MainEngine,S.SetPoint,{workId:O,pointMap:i,workState:C.Doing,viewId:s==null?void 0:s.viewId})}},50,{leading:!1}),y=ne((v,m)=>{if(v.preventDefault(),v.stopPropagation(),r(S.None),u(C.Done),m.x!==(c==null?void 0:c.x)||m.y!==(c==null?void 0:c.y)){l(m);const f=i.get(t);f&&o==="start"&&(s!=null&&s.control.viewContainerManager)?f[0]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId):f&&o==="end"&&(s!=null&&s.control.viewContainerManager)&&(f[1]=s.control.viewContainerManager.transformToScenePoint([m.x,m.y],s.viewId)),F.emitMethod(U.MainEngine,S.SetPoint,{workId:O,pointMap:i,workState:C.Done,viewId:s==null?void 0:s.viewId})}},100,{leading:!1});return h.createElement(ot,{position:c,onStart:M,onDrag:g,onStop:y},h.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn"},h.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn-inner",style:{borderColor:a==null?void 0:a.selectorColor}})))},Rf=n=>{const{className:t}=n,{floatBarData:e,maranger:i}=h.useContext(ae),[o,r]=h.useState(),[s,a]=h.useState(),[c,l]=h.useState(new Map);h.useEffect(()=>{const M=[];if(i&&(e!=null&&e.points)){const g=i.viewId;if(i.control.viewContainerManager.getView(g))for(const v of e.points){const m=i.control.viewContainerManager.transformToOriginPoint(v,g);M.push(m)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}M[0]&&r({x:M[0][0],y:M[0][1]}),M[1]&&a({x:M[1][0],y:M[1][1]})},[i,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const d=h.useMemo(()=>o&&(e!=null&&e.selectIds)?h.createElement(_i,{pos:o,type:"start",id:e.selectIds[0],pointMap:c}):null,[o,e==null?void 0:e.selectIds,c]),u=h.useMemo(()=>s&&(e!=null&&e.selectIds)?h.createElement(_i,{pos:s,type:"end",id:e.selectIds[0],pointMap:c}):null,[s,e==null?void 0:e.selectIds,c]);return h.createElement("div",{className:`${t}`},d,u)},ae=h.createContext({maranger:void 0,floatBarColors:[],floatBarData:void 0,zIndex:-1,dpr:1,position:void 0,angle:0,operationType:S.None,scale:[1,1],setPosition:()=>{},setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class si extends h.Component{constructor(e){var i;super(e);p(this,"setPosition",e=>{this.setState({position:e})});p(this,"setAngle",e=>{this.setState({angle:e})});p(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,zIndex:-1,dpr:1,position:void 0,angle:0,operationType:S.None,scale:[1,1],editors:this.editors,activeTextId:(i=this.props.maranger.control.textEditorManager)==null?void 0:i.activeId}}get editors(){return oe(this.props.maranger.control.textEditorManager.filterEditor(this.props.maranger.viewId))}componentDidMount(){this.props.maranger.vDom=this,this.props.maranger.mountView(),this.setState({dpr:this.props.maranger.dpr})}componentWillUnmount(){}showFloatBar(e,i){const o=e&&i&&{...this.state.floatBarData,...i}||void 0;this.setState({showFloatBar:e,floatBarData:o,position:o&&{x:o.x,y:o.y},angle:0}),o&&this.props.refs.floatBarCanvasRef.current&&(o.canvasHeight&&o.canvasWidth?(this.props.refs.floatBarCanvasRef.current.width=o.canvasWidth*this.state.dpr,this.props.refs.floatBarCanvasRef.current.height=o.canvasHeight*this.state.dpr,this.props.refs.floatBarCanvasRef.current.style.width=o.canvasWidth+"px",this.props.refs.floatBarCanvasRef.current.style.height=o.canvasHeight+"px"):(this.props.refs.floatBarCanvasRef.current.width=o.w*this.state.dpr,this.props.refs.floatBarCanvasRef.current.height=o.h*this.state.dpr,this.props.refs.floatBarCanvasRef.current.style.width="100%",this.props.refs.floatBarCanvasRef.current.style.height="100%"))}setActiveTextEditor(e){this.setState({activeTextId:e,editors:this.editors})}setFloatZIndex(e){this.setState({zIndex:e})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var i,o,r,s,a,c,l,d,u,M,g,y,v;const e=!!((o=(i=this.props.maranger.control)==null?void 0:i.room)!=null&&o.floatBarOptions);return h.createElement(h.Fragment,null,h.createElement("div",{className:me.Container,onMouseDown:m=>{m.preventDefault(),m.stopPropagation()},onTouchStart:m=>{m.stopPropagation()},onMouseMove:m=>{this.props.maranger.cursorMouseMove(m)}},h.createElement("div",{className:me.CanvasBox},h.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef}),h.createElement("canvas",{id:"serviceCanvas",className:me.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef}),h.createElement("canvas",{id:"localCanvas",className:me.FloatCanvas,ref:this.props.refs.canvasFloatRef})),h.createElement(ae.Provider,{value:{maranger:this.props.maranger,floatBarColors:e&&((a=(s=(r=this.props.maranger.control)==null?void 0:r.room)==null?void 0:s.floatBarOptions)==null?void 0:a.colors)||[],floatBarData:this.state.floatBarData,zIndex:this.state.zIndex,dpr:this.state.dpr,position:this.state.position,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,setPosition:this.setPosition.bind(this),setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&h.createElement(Df,{className:me.FloatBar,ref:this.props.refs.floatBarCanvasRef,editors:this.state.editors,activeTextId:this.state.activeTextId})||null,((c=this.state.editors)==null?void 0:c.size)&&h.createElement(mf,{className:me.TextEditorContainer,showFloatBtns:e,manager:this.props.maranger,selectIds:((l=this.state.floatBarData)==null?void 0:l.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null,((d=this.state.floatBarData)==null?void 0:d.canRotate)&&((M=(u=this.state.floatBarData)==null?void 0:u.selectIds)==null?void 0:M.length)===1&&(this.state.operationType===S.None||this.state.operationType===S.RotateNode)&&h.createElement(Lf,{className:me.RotateBtn})||null,(((g=this.state.floatBarData)==null?void 0:g.scaleType)===fe.all||((y=this.state.floatBarData)==null?void 0:y.scaleType)===fe.proportional)&&this.state.showFloatBar&&(this.state.operationType===S.None||this.state.operationType===S.ScaleNode)&&h.createElement(Pf,{className:me.ResizeBtn})||null,((v=this.state.floatBarData)==null?void 0:v.scaleType)===fe.both&&this.state.showFloatBar&&(this.state.operationType===S.None||this.state.operationType===S.SetPoint)&&h.createElement(Rf,{className:me.ResizeTowBox})||null,this.state.showFloatBar&&e&&h.createElement(xf,{className:me.FloatBarBtn})||null),h.createElement(Yf,{className:me.CursorBox,manager:this.props.maranger})))}}class lt extends ve{constructor(e,i){super(e,i);p(this,"width",1e3);p(this,"height",1e3);p(this,"dpr",1);p(this,"vDom");p(this,"eventTragetElement");p(this,"canvasServiceFloatRef",h.createRef());p(this,"canvasFloatRef",h.createRef());p(this,"canvasBgRef",h.createRef());p(this,"floatBarRef",h.createRef());p(this,"floatBarCanvasRef",h.createRef());p(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&this.canvasBgRef.current&&(this.dpr=ii(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=i,this.canvasBgRef.current.style.width=`${e}px`,this.canvasBgRef.current.style.height=`${i}px`,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.style.width=`${e}px`,this.canvasFloatRef.current.style.height=`${i}px`,this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.style.width=`${e}px`,this.canvasServiceFloatRef.current.style.height=`${i}px`,this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const i=e.querySelectorAll(".teaching-aids-plugin-main-view-displayer");for(const o of i)o.remove()}}}createMainViewDisplayer(e){const i=document.createElement("div");return i.className="teaching-aids-plugin-main-view-displayer",e.appendChild(i),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Qt.render(h.createElement(si,{viewId:this.viewId,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,floatBarCanvasRef:this.floatBarCanvasRef}}),i),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Bf extends YM{constructor(e,i,o){super(e,i,o);p(this,"dpr",1);p(this,"width",1e3);p(this,"height",1e3);p(this,"vDom");p(this,"eventTragetElement");p(this,"canvasServiceFloatRef",h.createRef());p(this,"canvasFloatRef",h.createRef());p(this,"canvasBgRef",h.createRef());p(this,"floatBarRef",h.createRef());p(this,"floatBarCanvasRef",h.createRef());p(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement&&this.canvasBgRef.current){this.dpr=ii(this.canvasBgRef.current.getContext("2d"));const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&(this.width=e,this.height=i,this.canvasBgRef.current.style.width=`${e}px`,this.canvasBgRef.current.style.height=`${i}px`,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.style.width=`${e}px`,this.canvasFloatRef.current.style.height=`${i}px`,this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.style.width=`${e}px`,this.canvasServiceFloatRef.current.style.height=`${i}px`,this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr))}}createAppViewDisplayer(e,i){const o=document.createElement("div");return o.className="teaching-aids-plugin-app-view-displayer",i.appendChild(o),this.eventTragetElement=i.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Qt.render(h.createElement(si,{viewId:e,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,floatBarCanvasRef:this.floatBarCanvasRef}}),o),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class ze extends it{constructor(e){super(e);p(this,"focuedViewId");p(this,"focuedView");p(this,"control");p(this,"tmpFocusedViewId");p(this,"checkScaleTimer");p(this,"onMainViewRelease",e=>{this.control.textEditorManager.clear(lt.viewId,!0),console.log("onMainViewRelease",e),this.onMainViewMounted(e);const i=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(i),this.control.clearSnapshootData()});p(this,"onMainViewMounted",e=>{var M;const i=e.divElement;if(!i||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const g=i.getElementsByClassName("teaching-aids-plugin-main-view-displayer");for(const y of g)y.remove();(M=this.control.worker)==null||M.destroyViewWorker(this.mainView.id,!0),this.mainView=void 0}const r=new lt(this.control,Ne.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,l={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...ze.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...ze.defaultLayerOpt,width:s,height:a},cameraOpt:{...ze.defaultCameraOpt,width:s,height:a}},{scale:d,...u}=e.camera;l.cameraOpt={...l.cameraOpt,...u,scale:d===1/0?1:d},this.focuedViewId=lt.viewId,this.createMianView({id:lt.viewId,container:i,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.focuedView=this.mainView,r.createMainViewDisplayer(i),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});p(this,"onMainViewSizeUpdated",async()=>{Promise.resolve().then(()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.size,i=this.mainView.cameraOpt;i&&(this.mainView.displayer.updateSize(),this.mainView.cameraOpt={...i,...e})}})});p(this,"onMainViewCameraUpdated",async()=>{Promise.resolve().then(()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera,i=this.mainView.cameraOpt;if(i){const o=e.scale===1/0?1:e.scale,r=e.centerX||0,s=e.centerY||0;this.mainView.cameraOpt={...i,scale:o,centerX:r,centerY:s},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 a,c;(c=(a=this.mainView)==null?void 0:a.viewData)==null||c.moveCamera({scale:o,centerX:r,centerY:s,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}})});p(this,"onAppViewMounted",e=>{var M;const{appId:i,view:o}=e,r=o.divElement;if(!r||!o.focusScenePath)return;const s=this.appViews.get(i);if(s&&s.displayer){const g=r.getElementsByClassName("teaching-aids-plugin-app-view-displayer");for(const y of g)y.remove();this.destroyAppView(e.appId,!0),(M=this.control.worker)==null||M.destroyViewWorker(i,!0)}const a=new Bf(i,this.control,Ne.InternalMsgEmitter),c=o.size.width||a.width,l=o.size.height||a.height,u={dpr:a.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...ze.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...ze.defaultLayerOpt,width:c,height:l},cameraOpt:{...ze.defaultCameraOpt,...o.camera,width:c,height:l}};if(this.createAppView({id:i,container:r,displayer:a,cameraOpt:u.cameraOpt,focusScenePath:o.focusScenePath,viewData:o}),a.createAppViewDisplayer(i,r),o.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,i)),o.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,i)),o.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===i){const g=this.control.worker.getLocalWorkViewId();g&&g!==i?this.setFocuedViewId(g):this.setFocuedViewId(i),this.tmpFocusedViewId=void 0}});p(this,"onAppViewSizeUpdated",async e=>{Promise.resolve().then(()=>{const i=this.appViews.get(e);if(i&&i.viewData){const o=i.viewData.size,r=i.cameraOpt;r&&(i.displayer.updateSize(),i.cameraOpt={...r,...o})}})});p(this,"onAppViewCameraUpdated",async e=>{Promise.resolve().then(()=>{const i=this.appViews.get(e);if(i&&i.viewData){const o=i.viewData.camera,r=i.cameraOpt;if(r){const s=o.scale===1/0?1:o.scale,a=o.centerX||0,c=o.centerY||0;i.cameraOpt={...r,scale:s,centerX:a,centerY:c}}}})});this.control=e.control}mountView(e){var o,r;const i=this.getView(e);if(i){const{width:s,height:a,dpr:c}=i.displayer,l={dpr:c,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...ze.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...ze.defaultLayerOpt,width:s,height:a},cameraOpt:{...ze.defaultCameraOpt,width:s,height:a}};if(i.viewData){const{scale:d,...u}=i.viewData.camera;l.cameraOpt={...l.cameraOpt,...u,scale:d===1/0?1:d}}e===((o=this.mainView)==null?void 0:o.id)&&this.control.activeWorker(),(r=this.control.worker)==null||r.createViewWorker(e,l),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath)}}listenerWindowManager(e){e.emitter.on("focusedChange",i=>{const o=i||ve.viewId;if(this.focuedViewId!==o)if(this.getView(o)){const s=this.control.worker.getLocalWorkViewId();s&&s!==o?this.setFocuedViewId(s):this.setFocuedViewId(o)}else this.tmpFocusedViewId=o}),e.emitter.on("mainViewScenePathChange",i=>{console.log("ContainerManager mainViewScenePathChange",i),this.control.onSceneChange(i,"mainView")}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",i=>{this.appViews.get(i.appId)&&(this.destroyAppView(i.appId),this.control.worker.destroyViewWorker(i.appId))}),e.emitter.on("onAppScenePathChange",i=>{const{appId:o,view:r}=i;this.control.onSceneChange(r.focusScenePath,o)})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class ut extends Ne{constructor(e){super(e);p(this,"windowManager");p(this,"viewContainerManager");const i={control:this,internalMsgEmitter:Ne.InternalMsgEmitter};this.viewContainerManager=new ze(i)}init(){}destroy(){var e,i,o,r;this.roomMember.destroy(),(e=this.collector)==null||e.destroy(),(i=this.worker)==null||i.destroy(),(o=this.viewContainerManager)==null||o.destroy(),(r=this.cursor)==null||r.destroy()}activePlugin(){this.collector&&(this.collector.addStorageStateListener(e=>{var i,o;if((i=this.collector)!=null&&i.storage&&Object.keys(this.collector.storage).length===0){(o=this.worker)==null||o.clearViewScenePath("mainView",!0);return}if(e){const r=new Map;Object.keys(e).forEach(s=>{var c;const a=e[s];if(a){const l=a.viewId,d=r.get(l)||new Set;d.add(s),r.set(l,d),(c=this.worker)==null||c.onServiceDerive(s,a)}});for(const[s,a]of r.entries())Ne.InternalMsgEmitter.emit("excludeIds",[...a],s)}}),this.room&&this.roomMember.onUidChangeHook(e=>{var i,o,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(c=>{var l;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&this.collector.serviceStorage[c.id][c.focusScenePath]){const d=Object.keys(this.collector.serviceStorage[c.id][c.focusScenePath]).filter(u=>{var M;return(M=this.collector)==null?void 0:M.isSelector(u)}).map(u=>({viewId:c.id,scenePath:c.focusScenePath,key:u}));d.length&&a.push(...d)}}),a.forEach(({key:c,viewId:l,scenePath:d})=>{var M,g;const u=(M=this.collector)==null?void 0:M.getUidFromKey(c);u&&!e.online.includes(u)&&((g=this.collector)==null||g.updateValue(c,void 0,{isAfterUpdate:!0,viewId:l,scenePath:d}))})}(r=(o=this.cursor)==null?void 0:o.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(c=>{var l,d;e.online.includes(c)||(d=(l=this.cursor)==null?void 0:l.eventCollector)==null||d.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath)}))}activeWorker(){this.worker.init()}setWindowManager(e){var i,o,r,s,a;this.windowManager=e,(o=(i=this.windowManager)==null?void 0:i.mainView)!=null&&o.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(s=(r=this.windowManager.appManager)==null?void 0:r.viewManager)==null?void 0:s.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const Po={syncOpt:{interval:200},canvasOpt:{contextType:It.Canvas2d},cdn:{fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.2/cdn/fullWorker-O4uzWn.js",subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.2/cdn/subWorker-CvBoLi.js"}},R=class R extends V.InvisiblePlugin{constructor(){super(...arguments);p(this,"onPhaseChanged",e=>{var i;e===V.RoomPhase.Reconnecting&&((i=R.currentManager)==null||i.setSnapshootData())});p(this,"updateRoomWritable",()=>{var e;(e=R.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});p(this,"roomStateChangeListener",async e=>{var i,o;V.isRoom(this.displayer)&&!this.displayer.isWritable||(e.memberState&&((i=R.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((o=R.currentManager)==null||o.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const o=e.displayer,r=o.callbacks.on,s=o.callbacks.off,a=o.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState,d=o.setMemberState,u={displayer:o,windowManager:e,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var m;R.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const y=(this.windowManager&&this.windowManager.mainView||this.displayer).getBoundingRect(g),v=await((m=R.currentManager)==null?void 0:m.getBoundingRect(g));return!y.width||!y.height?v:ko(y,v)},screenshotToCanvasAsync:async function(g,y,v,m,f,w){var A;R.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let I=v,z=m,T=f.scale;I>this.maxScreenshotWidth&&(T=this.maxScreenshotWidth/I*T,I=this.maxScreenshotWidth),z>this.maxScreenshotHeight&&(T=Math.min(this.maxScreenshotHeight/z*T,T),z=this.maxScreenshotHeight),f.scale=T;const j=document.createElement("canvas"),x=j.getContext("2d");j.width=I*(w||1),j.height=z*(w||1),x&&((this.windowManager&&this.windowManager.mainView||this.displayer).screenshotToCanvas(x,y,I,z,f,w),g.drawImage(j,Math.floor((v-I)/2),Math.floor((m-z)/2),I*(w||1),z*(w||1),0,0,I,z),j.remove()),R.currentManager&&await((A=R.currentManager)==null?void 0:A.screenshotToCanvas(g,y,I,z,f,Math.floor((v-I)/2),Math.floor((m-z)/2)))},scenePreviewAsync:async function(g,y,v,m,f){R.logger.info("[ApplianceMultiPlugin] scenePreview"),(this.windowManager&&this.windowManager.mainView||this.displayer).scenePreview(g,y,v,m,f);const w=document.createElement("img");w.style.position="absolute",w.style.top="0px",w.style.left="0px",w.style.width="100%",w.style.height="100%",w.style.pointerEvents="none",y.append(w),getComputedStyle(y).position||(y.style.position="relative"),R.currentManager&&await R.currentManager.scenePreview(g,w)},_callbacksOn:function(g,y){R.logger.info(`[ApplianceMultiPlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?ut.InternalMsgEmitter.on(g,y):r.call(o.callbacks,g,y)},_callbacksOnce:function(g,y){R.logger.info(`[ApplianceMultiPlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?ut.InternalMsgEmitter.on(g,y):a.call(o.callbacks,g,y)},_callbacksOff:function(g,y){R.logger.info(`[ApplianceMultiPlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?ut.InternalMsgEmitter.off(g,y):s.call(o.callbacks,g,y)},undo:function(){return R.logger.info("[ApplianceMultiPlugin] undo"),R.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?R.currentManager.viewContainerManager.undo():0},redo:function(){return R.logger.info("[ApplianceMultiPlugin] redo"),R.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?R.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){R.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&(R.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(g){R.logger.info("[ApplianceMultiPlugin] insertImage"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&R.currentManager.worker.insertImage(g)},lockImage:function(g,y){R.logger.info("[ApplianceMultiPlugin] lockImage"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&R.currentManager.worker.lockImage(g,y)},completeImageUpload:function(g,y){R.logger.info("[ApplianceMultiPlugin] completeImageUpload"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&R.currentManager.worker.completeImageUpload(g,y)},getImagesInformation:function(g){return R.logger.info("[ApplianceMultiPlugin] completeImageUpload"),R.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable?R.currentManager.worker.getImagesInformation(g):[]},callbacks:()=>(R.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...o.callbacks,on:u._callbacksOn.bind(u),once:u._callbacksOnce.bind(u),off:u._callbacksOff.bind(u)}),destroy(){R.currentManager&&(R.logger.info("[ApplianceMultiPlugin] destroy"),R.currentManager.destroy(),R.currentManager=void 0)},setMemberState(g){if(R.logger.info("[ApplianceMultiPlugin] setMemberState"),Object.keys(g).includes("currentApplianceName")&&(g.currentApplianceName&&g.currentApplianceName===H.laserPen?(g.currentApplianceName=H.pencil,g.useLaserPen=!0):g.currentApplianceName&&g.currentApplianceName===H.pencil&&(g.useLaserPen=!1)),u._injectTargetObject===e.mainView){l.call(u._injectTargetObject,g);return}d.call(o,g)}};i!=null&&i.logger&&(R.logger=i.logger),i.options&&(R.options=i.options);let M=o.getInvisiblePlugin(R.kind);return o&&M&&R.createCurrentManager(e,R.options,M),!M&&V.isRoom(o)&&(M=await R.createApplianceMultiPlugin(o,R.kind)),M&&R.currentManager&&(R.currentManager.bindPlugin(M),M.init(o)),{...u,callbacks:u.callbacks(),injectMethodToObject:function(g,y){if(R.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${y}`),typeof g[y]=="function"||typeof g[y]>"u"){y==="setMemberState"&&(u._injectTargetObject=g),g[y]=u[y].bind(u);return}y==="callbacks"&&(g.callbacks.on=u._callbacksOn.bind(u),g.callbacks.off=u._callbacksOff.bind(u),g.callbacks.once=u._callbacksOnce.bind(u))}}}static onCreate(e){e&&R.currentManager&&(R.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,i){await e.createInvisiblePlugin(R,{});let o=e.getInvisiblePlugin(i);return o||(o=await R.createApplianceMultiPlugin(e,i)),o}get isReplay(){return V.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;if(V.isRoom(e)){const r=e.state;(i=R.currentManager)==null||i.onMemberChange(r.memberState),(o=R.currentManager)==null||o.onRoomMembersChange(r.roomMembers)}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;R.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=R.currentManager)==null||e.destroy(),R.currentManager=void 0}};p(R,"kind","appliance-multi-plugin"),p(R,"currentManager"),p(R,"logger",{info:console.log,warn:console.warn,error:console.error}),p(R,"options",Po),p(R,"createCurrentManager",(e,i,o)=>{if(R.currentManager&&R.currentManager.destroy(),i&&e){const r={plugin:o,displayer:e.displayer,options:i},s=new ut(r);R.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),R.currentManager=s}});let Ut=R;class Wf extends ve{constructor(e,i){super(e,i);p(this,"width",1e3);p(this,"height",1e3);p(this,"dpr",1);p(this,"vDom");p(this,"viewId","mainView");p(this,"eventTragetElement");p(this,"canvasServiceFloatRef",h.createRef());p(this,"canvasFloatRef",h.createRef());p(this,"canvasBgRef",h.createRef());p(this,"floatBarRef",h.createRef());p(this,"floatBarCanvasRef",h.createRef());p(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,i=this.eventTragetElement.offsetHeight;e&&i&&this.canvasBgRef.current&&(this.dpr=ii(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=i,this.canvasBgRef.current.style.width=`${e}px`,this.canvasBgRef.current.style.height=`${i}px`,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.style.width=`${e}px`,this.canvasFloatRef.current.style.height=`${i}px`,this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.style.width=`${e}px`,this.canvasServiceFloatRef.current.style.height=`${i}px`,this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",Qt.render(h.createElement(si,{viewId:this.viewId,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,floatBarCanvasRef:this.floatBarCanvasRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Ye extends it{constructor(e){super(e);p(this,"focuedViewId");p(this,"control");p(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new Wf(this.control,Ne.InternalMsgEmitter);this.focuedViewId=ve.viewId;const{width:i,height:o,dpr:r}=e,s={dpr:r,originalPoint:[i/2,o/2],offscreenCanvasOpt:{...Ye.defaultScreenCanvasOpt,width:i,height:o},layerOpt:{...Ye.defaultLayerOpt,width:i,height:o},cameraOpt:{...Ye.defaultCameraOpt,width:i,height:o}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:c,...l}=a.camera;s.cameraOpt={...s.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:ve.viewId,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:s.cameraOpt,viewData:a}),this.focuedView=this.mainView,e.createMainViewDisplayer(this.control.divMainView)}}mountView(e){var o;const i=this.getView(e);if(i){const{width:r,height:s,dpr:a}=i.displayer,c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Ye.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Ye.defaultLayerOpt,width:r,height:s},cameraOpt:{...Ye.defaultCameraOpt,width:r,height:s}};if(i.viewData){const{scale:l,...d}=i.viewData.camera;c.cameraOpt={...c.cameraOpt,...d,scale:l===1/0?1:l}}this.control.worker.isActive||this.control.activeWorker(),(o=this.control.worker)==null||o.createViewWorker(e,c),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath)}}}class De extends Ne{constructor(e){super(e);p(this,"viewContainerManager");p(this,"divMainView");p(this,"onCameraChange",ne(e=>{this.viewContainerManager.setFocuedViewCameraOpt(e)},20,{leading:!1}));const i={control:this,internalMsgEmitter:De.InternalMsgEmitter};this.viewContainerManager=new Ye(i)}init(){De.InternalMsgEmitter.on(U.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 i,o;if((i=this.collector)!=null&&i.storage&&Object.keys(this.collector.storage).length===0){(o=this.worker)==null||o.clearViewScenePath("mainView",!0);return}if(e){const r=new Map;Object.keys(e).forEach(s=>{var c;const a=e[s];if(a){const l=a.viewId,d=r.get(l)||new Set;d.add(s),r.set(l,d),(c=this.worker)==null||c.onServiceDerive(s,a)}});for(const[s,a]of r.entries())De.InternalMsgEmitter.emit("excludeIds",[...a],s)}}),this.room&&(this.roomMember.onUidChangeHook(e=>{var i,o,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(c=>{var l,d,u;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&((d=this.collector)!=null&&d.serviceStorage[c.id][c.focusScenePath])){const M=Object.keys((u=this.collector)==null?void 0:u.serviceStorage[c.id][c.focusScenePath]).filter(g=>{var y;return(y=this.collector)==null?void 0:y.isSelector(g)}).map(g=>({viewId:c.id,scenePath:c.focusScenePath,key:g}));M.length&&a.push(...M)}}),a.forEach(({key:c,viewId:l,scenePath:d})=>{var M,g;const u=(M=this.collector)==null?void 0:M.getUidFromKey(c);u&&!e.online.includes(u)&&((g=this.collector)==null||g.updateValue(c,void 0,{isAfterUpdate:!0,viewId:l,scenePath:d}))})}(r=(o=this.cursor)==null?void 0:o.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(c=>{var l,d;e.online.includes(c)||(d=(l=this.cursor)==null?void 0:l.eventCollector)==null||d.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath)})))}activeWorker(){this.worker.init()}}const E=class E extends V.InvisiblePlugin{constructor(){super(...arguments);p(this,"updateRoomWritable",()=>{var e;(e=E.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});p(this,"roomStateChangeListener",async e=>{var i,o;E.currentManager instanceof De&&(e.cameraState&&E.currentManager.onCameraChange(e.cameraState),e.sceneState&&E.currentManager.onSceneChange(e.sceneState.scenePath,"mainView")),!(V.isRoom(this.displayer)&&!this.displayer.isWritable)&&(e.memberState&&((i=E.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((o=E.currentManager)==null||o.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const o=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene,c=e.setMemberState,l={displayer:e,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(u){var y;E.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const M=this.displayer.getBoundingRect(u),g=await((y=E.currentManager)==null?void 0:y.getBoundingRect(u));return!M.width||!M.height?g:ko(M,g)},screenshotToCanvasAsync:async function(u,M,g,y,v,m){var j;E.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let f=g,w=y,I=v.scale;f>this.maxScreenshotWidth&&(I=this.maxScreenshotWidth/f*I,f=this.maxScreenshotWidth),w>this.maxScreenshotHeight&&(I=Math.min(this.maxScreenshotHeight/w*I,I),w=this.maxScreenshotHeight),v.scale=I;const z=document.createElement("canvas"),T=z.getContext("2d");z.width=f*(m||1),z.height=w*(m||1),T&&(this.displayer.screenshotToCanvas(T,M,f,w,v,m),u.drawImage(z,Math.floor((g-f)/2),Math.floor((y-w)/2),f*(m||1),w*(m||1),0,0,f,w),z.remove()),E.currentManager&&await((j=E.currentManager)==null?void 0:j.screenshotToCanvas(u,M,f,w,v,Math.floor((g-f)/2),Math.floor((y-w)/2)))},scenePreviewAsync:async function(u,M,g,y,v){E.logger.info("[ApplianceSinglePlugin] scenePreview"),this.displayer.scenePreview(u,M,g,y,v);const m=document.createElement("img");m.style.position="absolute",m.style.top="0px",m.style.left="0px",m.style.width="100%",m.style.height="100%",m.style.pointerEvents="none",M.append(m),getComputedStyle(M).position||(M.style.position="relative"),E.currentManager&&await E.currentManager.scenePreview(u,m)},_callbacksOn:function(u,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${u}`),(u==="onCanUndoStepsUpdate"||u==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?De.InternalMsgEmitter.on(u,M):o.call(e.callbacks,u,M)},_callbacksOnce:function(u,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${u}`),(u==="onCanUndoStepsUpdate"||u==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?De.InternalMsgEmitter.on(u,M):s.call(e.callbacks,u,M)},_callbacksOff:function(u,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${u}`),(u==="onCanUndoStepsUpdate"||u==="onCanRedoStepsUpdate")&&V.isRoom(this.displayer)&&this.displayer.isWritable?De.InternalMsgEmitter.off(u,M):r.call(e.callbacks,u,M)},undo:function(){return E.logger.info("[ApplianceSinglePlugin] undo"),E.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?E.currentManager.viewContainerManager.undo():0},redo:function(){return E.logger.info("[ApplianceSinglePlugin] redo"),E.currentManager&&V.isRoom(this.displayer)&&!this.displayer.disableSerialization?E.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(u){E.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&(E.currentManager.cleanCurrentScene(),a.call(e,u))},insertImage:function(u){E.logger.info("[ApplianceSinglePlugin] insertImage"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&E.currentManager.worker.insertImage(u)},lockImage:function(u,M){E.logger.info("[ApplianceSinglePlugin] lockImage"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&E.currentManager.worker.lockImage(u,M)},completeImageUpload:function(u,M){E.logger.info("[ApplianceSinglePlugin] completeImageUpload"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable&&E.currentManager.worker.completeImageUpload(u,M)},getImagesInformation:function(u){return E.logger.info("[ApplianceSinglePlugin] completeImageUpload"),E.currentManager&&V.isRoom(this.displayer)&&this.displayer.isWritable?E.currentManager.worker.getImagesInformation(u):[]},callbacks:()=>({...e.callbacks,on:l._callbacksOn.bind(l),once:l._callbacksOnce.bind(l),off:l._callbacksOff.bind(l)}),destroy(){E.currentManager&&(E.logger.info("[ApplianceSinglePlugin] destroy"),E.currentManager.destroy(),E.currentManager=void 0,E.cursorAdapter=void 0)},setMemberState(u){E.logger.info("[ApplianceSinglePlugin] setMemberState"),Object.keys(u).includes("currentApplianceName")&&(u.currentApplianceName&&u.currentApplianceName===H.laserPen&&(u.currentApplianceName=H.pencil,u.useLaserPen=!0),u.currentApplianceName&&u.currentApplianceName===H.pencil&&(u.useLaserPen=!1)),c(u)}};i!=null&&i.logger&&(E.logger=i.logger),i.options&&(E.options=i.options);let d=e.getInvisiblePlugin(E.kind);return e&&d&&E.createCurrentManager(e,E.options,d),!d&&V.isRoom(e)&&(d=await E.createAppliancePlugin(e,E.kind)),d&&E.currentManager&&(E.currentManager.bindPlugin(d),d.init(e)),i!=null&&i.cursorAdapter&&(E.cursorAdapter=i.cursorAdapter),E.effectInstance(),{...l,callbacks:l.callbacks(),injectMethodToObject:function(u,M){if(E.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${M}`),typeof u[M]=="function"||typeof u[M]>"u"){u[M]=l[M].bind(l);return}M==="callbacks"&&(u.callbacks.on=l._callbacksOn.bind(l),u.callbacks.off=l._callbacksOff.bind(l),u.callbacks.once=l._callbacksOnce.bind(l))}}}static onCreate(e){e&&E.currentManager&&(E.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,i){await e.createInvisiblePlugin(E,{});let o=e.getInvisiblePlugin(i);return o||(o=await E.createAppliancePlugin(e,i)),o}static effectInstance(){if(E.cursorAdapter){const e=E.cursorAdapter.onAddedCursor;E.cursorAdapter.onAddedCursor=function(i){i.onCursorMemberChanged=o=>{try{o.appliance===H.pencil||o.appliance===H.shape||o.appliance===H.text||o.appliance===H.arrow||o.appliance===H.straight||o.appliance===H.rectangle||o.appliance===H.ellipse?i!=null&&i.divElement&&(i.divElement.style.display="none"):i!=null&&i.divElement&&(i.divElement.style.display="block")}catch{}},e.call(E.cursorAdapter,i)}}}get isReplay(){return V.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i;if(V.isRoom(e)){const o=e.state;o!=null&&o.memberState&&((i=E.currentManager)==null||i.onMemberChange(o.memberState))}this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable)}destroy(){var e;E.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=E.currentManager)==null||e.destroy(),E.currentManager=void 0,E.cursorAdapter=void 0}};p(E,"kind","teaching-aids-single-plugin"),p(E,"cursorAdapter"),p(E,"currentManager"),p(E,"logger",{info:console.log,warn:console.warn,error:console.error}),p(E,"options",Po),p(E,"createCurrentManager",(e,i,o)=>{E.currentManager&&E.currentManager.destroy();const r={plugin:o,displayer:e,options:i},s=new De(r);s.init(),E.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),E.currentManager=s});let $t=E;const We=class We extends h.Component{constructor(){super(...arguments);p(this,"mainViewRef",null)}componentDidMount(){We.emiter||(We.emiter=De.InternalMsgEmitter),We.emiter.emit(U.BindMainView,this.mainViewRef)}componentWillUnmount(){We.emiter.emit(U.DisplayState,Ht.unmounted)}render(){return h.createElement(h.Fragment,null,this.props.children,h.createElement("div",{className:"teaching-aids-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};p(We,"emiter");let Ft=We;exports.ActiveContainerType=to;exports.ApplianceMultiPlugin=Ut;exports.ApplianceNames=H;exports.ApplianceSigleWrapper=Ft;exports.ApplianceSinglePlugin=$t;exports.DisplayStateEnum=Ht;exports.ECanvasContextType=It;exports.ECanvasShowType=Se;exports.EDataType=Z;exports.EPostMessageType=L;exports.EScaleType=fe;exports.EStrokeType=dt;exports.EToolsKey=N;exports.ElayerType=Ue;exports.EmitEventType=S;exports.EventMessageType=$e;exports.EvevtWorkState=C;exports.InternalMsgEmitterType=U;exports.ShapeType=Te;