@netless/appliance-plugin 1.1.28 → 1.1.29

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 Co=Object.defineProperty;var So=(o,i,e)=>i in o?Co(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e;var m=(o,i,e)=>So(o,typeof i!="symbol"?i+"":i,e);const F=require("white-web-sdk");require("spritejs");const En=require("lz-string");require("clipper-lib");require("lineclip");const li=require("xss"),x=require("lodash"),ui=require("eventemitter2"),d=require("react"),Zt=require("react-dom"),ft=require("react-draggable"),jo=require("re-resizable"),Do="/fullWorker.js",xo="/subWorker.js";var te=(o=>(o.selector="selector",o.clicker="clicker",o.laserPointer="laserPointer",o.pencil="pencil",o.rectangle="rectangle",o.ellipse="ellipse",o.shape="shape",o.eraser="eraser",o.pencilEraser="pencilEraser",o.text="text",o.straight="straight",o.arrow="arrow",o.hand="hand",o.laserPen="laserPen",o))(te||{}),fe=(o=>(o.Normal="Normal",o.Stroke="Stroke",o.Dotted="Dotted",o.LongDotted="LongDotted",o))(fe||{}),Ye=(o=>(o.Triangle="triangle",o.Rhombus="rhombus",o.Pentagram="pentagram",o.SpeechBalloon="speechBalloon",o.Star="star",o.Polygon="polygon",o))(Ye||{}),W=(o=>(o.None="None",o.ShowFloatBar="ShowFloatBar",o.ZIndexFloatBar="ZIndexFloatBar",o.DeleteNode="DeleteNode",o.CopyNode="CopyNode",o.ZIndexActive="ZIndexActive",o.ZIndexNode="ZIndexNode",o.RotateNode="RotateNode",o.SetColorNode="SetColorNode",o.TranslateNode="TranslateNode",o.ScaleNode="ScaleNode",o.OriginalEvent="OriginalEvent",o.CreateScene="CreateScene",o.ActiveCursor="ActiveCursor",o.MoveCursor="MoveCursor",o.CommandEditor="CommandEditor",o.SetEditorData="SetEditorData",o.SetFontStyle="SetFontStyle",o.SetPoint="SetPoint",o.SetLock="SetLock",o.SetShapeOpt="SetShapeOpt",o.CameraChange="CameraChange",o.ActiveMethod="ActiveMethod",o.HidFloatBarBtn="HidFloatBarBtn",o))(W||{}),ee=(o=>(o.DisplayState="DisplayState",o.MainEngine="MainEngine",o.Cursor="Cursor",o.BindMainView="BindMainView",o))(ee||{}),Ln=(o=>(o[o.MainView=0]="MainView",o[o.Plugin=1]="Plugin",o[o.Both=2]="Both",o))(Ln||{}),ji=(o=>(o.longPencil="longPencil",o))(ji||{}),T=(o=>(o[o.Pencil=1]="Pencil",o[o.Eraser=2]="Eraser",o[o.PencilEraser=3]="PencilEraser",o[o.BitMapEraser=4]="BitMapEraser",o[o.Selector=5]="Selector",o[o.Clicker=6]="Clicker",o[o.Arrow=7]="Arrow",o[o.Hand=8]="Hand",o[o.LaserPen=9]="LaserPen",o[o.Text=10]="Text",o[o.Straight=11]="Straight",o[o.Rectangle=12]="Rectangle",o[o.Ellipse=13]="Ellipse",o[o.Star=14]="Star",o[o.Triangle=15]="Triangle",o[o.Rhombus=16]="Rhombus",o[o.Polygon=17]="Polygon",o[o.SpeechBalloon=18]="SpeechBalloon",o[o.Image=19]="Image",o))(T||{}),K=(o=>(o[o.Local=1]="Local",o[o.Service=2]="Service",o[o.Worker=3]="Worker",o))(K||{}),D=(o=>(o[o.Pending=0]="Pending",o[o.Start=1]="Start",o[o.Doing=2]="Doing",o[o.Done=3]="Done",o[o.Unwritable=4]="Unwritable",o))(D||{}),U=(o=>(o[o.None=0]="None",o[o.Init=1]="Init",o[o.UpdateCamera=2]="UpdateCamera",o[o.UpdateTools=3]="UpdateTools",o[o.CreateWork=4]="CreateWork",o[o.DrawWork=5]="DrawWork",o[o.FullWork=6]="FullWork",o[o.UpdateNode=7]="UpdateNode",o[o.RemoveNode=8]="RemoveNode",o[o.Clear=9]="Clear",o[o.Select=10]="Select",o[o.Destroy=11]="Destroy",o[o.Snapshot=12]="Snapshot",o[o.BoundingBox=13]="BoundingBox",o[o.Cursor=14]="Cursor",o[o.TextUpdate=15]="TextUpdate",o[o.GetTextActive=16]="GetTextActive",o[o.TasksQueue=17]="TasksQueue",o[o.CursorHover=18]="CursorHover",o[o.CursorBlur=19]="CursorBlur",o[o.Console=20]="Console",o[o.GetImageBitMap=23]="GetImageBitMap",o[o.AuthWriter=24]="AuthWriter",o[o.AuthReader=25]="AuthReader",o[o.AuthClear=26]="AuthClear",o[o.AuthPage=27]="AuthPage",o[o.GetVNodeInfo=28]="GetVNodeInfo",o[o.UpdateDpr=29]="UpdateDpr",o[o.SetFontFace=30]="SetFontFace",o[o.ReportError=31]="ReportError",o[o.ReportLog=32]="ReportLog",o))(U||{}),$e=(o=>(o[o.None=0]="None",o[o.Bg=1]="Bg",o[o.ServiceFloat=2]="ServiceFloat",o[o.Float=3]="Float",o[o.TopFloat=4]="TopFloat",o))($e||{}),jt=(o=>(o[o.Cursor=1]="Cursor",o[o.TextCreate=2]="TextCreate",o))(jt||{}),zt=(o=>(o[o.Top=1]="Top",o[o.Bottom=2]="Bottom",o))(zt||{}),be=(o=>(o[o.none=1]="none",o[o.all=2]="all",o[o.both=3]="both",o[o.proportional=4]="proportional",o))(be||{}),Pn=(o=>(o[o.Pending=0]="Pending",o[o.Start=1]="Start",o[o.Doing=2]="Doing",o[o.Done=3]="Done",o[o.Unwritable=4]="Unwritable",o))(Pn||{}),Dt=(o=>(o[o.inside=0]="inside",o[o.outside=1]="outside",o[o.intersect=2]="intersect",o))(Dt||{}),Te=(o=>(o.renderPage="renderPage",o.addPage="addPage",o.deletePage="deletePage",o.addElement="addElement",o.deleteElement="deleteElement",o.clearPage="clearPage",o.clearViewScenePath="clearViewScenePath",o.clearView="clearView",o.syncUndoStack="syncUndoStack",o.syncRedoStack="syncRedoStack",o))(Te||{}),Ue=(o=>(o.setAuth="setAuth",o.setShow="addShow",o.setHide="setHide",o.setClear="setClear",o))(Ue||{}),xt=(o=>(o.Image="image",o.Iconify="iconify",o))(xt||{});const zo="cursorhover",Di=20,he="mainView",Ao={linear:o=>o,easeInQuad:o=>o*o,easeOutQuad:o=>o*(2-o),easeInOutQuad:o=>o<.5?2*o*o:-1+(4-2*o)*o,easeInCubic:o=>o*o*o,easeOutCubic:o=>--o*o*o+1,easeInOutCubic:o=>o<.5?4*o*o*o:(o-1)*(2*o-2)*(2*o-2)+1,easeInQuart:o=>o*o*o*o,easeOutQuart:o=>1- --o*o*o*o,easeInOutQuart:o=>o<.5?8*o*o*o*o:1-8*--o*o*o*o,easeInQuint:o=>o*o*o*o*o,easeOutQuint:o=>1+--o*o*o*o*o,easeInOutQuint:o=>o<.5?16*o*o*o*o*o:1+16*--o*o*o*o*o,easeInSine:o=>1-Math.cos(o*Math.PI/2),easeOutSine:o=>Math.sin(o*Math.PI/2),easeInOutSine:o=>-(Math.cos(Math.PI*o)-1)/2,easeInExpo:o=>o<=0?0:Math.pow(2,10*o-10),easeOutExpo:o=>o>=1?1:1-Math.pow(2,-10*o),easeInOutExpo:o=>o<=0?0:o>=1?1:o<.5?Math.pow(2,20*o-10)/2:(2-Math.pow(2,-20*o+10))/2};class Y{constructor(i=0,e=0,t=1){this.x=i,this.y=e,this.z=t}get XY(){return[this.x,this.y]}setz(i){return this.z=i,this}setXY(i=this.x,e=this.y){return this.x=i,this.y=e,this}set(i=this.x,e=this.y,t=this.z){return this.x=i,this.y=e,this.z=t,this}setTo({x:i=0,y:e=0,z:t=1}){return this.x=i,this.y=e,this.z=t,this}rot(i){if(i===0)return this;const{x:e,y:t}=this,n=Math.sin(i),r=Math.cos(i);return this.x=e*r-t*n,this.y=e*n+t*r,this}rotWith(i,e){if(e===0)return this;const t=this.x-i.x,n=this.y-i.y,r=Math.sin(e),s=Math.cos(e);return this.x=i.x+(t*s-n*r),this.y=i.y+(t*r+n*s),this}clone(){const{x:i,y:e,z:t}=this;return new Y(i,e,t)}sub(i){return this.x-=i.x,this.y-=i.y,this}subXY(i,e){return this.x-=i,this.y-=e,this}subScalar(i){return this.x-=i,this.y-=i,this}add(i){return this.x+=i.x,this.y+=i.y,this}addXY(i,e){return this.x+=i,this.y+=e,this}addScalar(i){return this.x+=i,this.y+=i,this}clamp(i,e){return this.x=Math.max(this.x,i),this.y=Math.max(this.y,i),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(i){return this.x/=i,this.y/=i,this}divV(i){return this.x/=i.x,this.y/=i.y,this}mul(i){return this.x*=i,this.y*=i,this}mulV(i){return this.x*=i.x,this.y*=i.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(i,e){const t=Y.Tan(i,this);return this.add(t.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(i){return this.x=this.y*i.z-this.z*i.y,this.y=this.z*i.x-this.x*i.z,this}dpr(i){return Y.Dpr(this,i)}cpr(i){return Y.Cpr(this,i)}len2(){return Y.Len2(this)}len(){return Y.Len(this)}pry(i){return Y.Pry(this,i)}per(){const{x:i,y:e}=this;return this.x=e,this.y=-i,this}uni(){return Y.Uni(this)}tan(i){return Y.Tan(this,i)}dist(i){return Y.Dist(this,i)}distanceToLineSegment(i,e){return Y.DistanceToLineSegment(i,e,this)}slope(i){return Y.Slope(this,i)}snapToGrid(i){return this.x=Math.round(this.x/i)*i,this.y=Math.round(this.y/i)*i,this}angle(i){return Y.Angle(this,i)}toAngle(){return Y.ToAngle(this)}lrp(i,e){return this.x=this.x+(i.x-this.x)*e,this.y=this.y+(i.y-this.y)*e,this}equals(i,e){return Y.Equals(this,i,e)}equalsXY(i,e){return Y.EqualsXY(this,i,e)}norm(){const i=this.len();return this.x=i===0?0:this.x/i,this.y=i===0?0:this.y/i,this}toFixed(){return Y.ToFixed(this)}toString(){return Y.ToString(Y.ToFixed(this))}toJson(){return Y.ToJson(this)}toArray(){return Y.ToArray(this)}static Add(i,e){return new Y(i.x+e.x,i.y+e.y)}static AddXY(i,e,t){return new Y(i.x+e,i.y+t)}static Sub(i,e){return new Y(i.x-e.x,i.y-e.y)}static SubXY(i,e,t){return new Y(i.x-e,i.y-t)}static AddScalar(i,e){return new Y(i.x+e,i.y+e)}static SubScalar(i,e){return new Y(i.x-e,i.y-e)}static Div(i,e){return new Y(i.x/e,i.y/e)}static Mul(i,e){return new Y(i.x*e,i.y*e)}static DivV(i,e){return new Y(i.x/e.x,i.y/e.y)}static MulV(i,e){return new Y(i.x*e.x,i.y*e.y)}static Neg(i){return new Y(-i.x,-i.y)}static Per(i){return new Y(i.y,-i.x)}static Dist2(i,e){return Y.Sub(i,e).len2()}static Abs(i){return new Y(Math.abs(i.x),Math.abs(i.y))}static Dist(i,e){return Math.hypot(i.y-e.y,i.x-e.x)}static Dpr(i,e){return i.x*e.x+i.y*e.y}static Cross(i,e){return new Y(i.y*e.z-i.z*e.y,i.z*e.x-i.x*e.z)}static Cpr(i,e){return i.x*e.y-e.x*i.y}static Len2(i){return i.x*i.x+i.y*i.y}static Len(i){return Math.hypot(i.x,i.y)}static Pry(i,e){return Y.Dpr(i,e)/Y.Len(e)}static Uni(i){return Y.Div(i,Y.Len(i))}static Tan(i,e){return Y.Uni(Y.Sub(i,e))}static Min(i,e){return new Y(Math.min(i.x,e.x),Math.min(i.y,e.y))}static Max(i,e){return new Y(Math.max(i.x,e.x),Math.max(i.y,e.y))}static From(i){return new Y().add(i)}static FromArray(i){return new Y(i[0],i[1])}static Rot(i,e=0){const t=Math.sin(e),n=Math.cos(e);return new Y(i.x*n-i.y*t,i.x*t+i.y*n)}static RotWith(i,e,t){const n=i.x-e.x,r=i.y-e.y,s=Math.sin(t),a=Math.cos(t);return new Y(e.x+(n*a-r*s),e.y+(n*s+r*a))}static NearestPointOnLineThroughPoint(i,e,t){return Y.Mul(e,Y.Sub(t,i).pry(e)).add(i)}static NearestPointOnLineSegment(i,e,t,n=!0){const r=Y.Tan(e,i),s=Y.Add(i,Y.Mul(r,Y.Sub(t,i).pry(r)));if(n){if(s.x<Math.min(i.x,e.x))return Y.Cast(i.x<e.x?i:e);if(s.x>Math.max(i.x,e.x))return Y.Cast(i.x>e.x?i:e);if(s.y<Math.min(i.y,e.y))return Y.Cast(i.y<e.y?i:e);if(s.y>Math.max(i.y,e.y))return Y.Cast(i.y>e.y?i:e)}return s}static DistanceToLineThroughPoint(i,e,t){return Y.Dist(t,Y.NearestPointOnLineThroughPoint(i,e,t))}static DistanceToLineSegment(i,e,t,n=!0){return Y.Dist(t,Y.NearestPointOnLineSegment(i,e,t,n))}static Snap(i,e=1){return new Y(Math.round(i.x/e)*e,Math.round(i.y/e)*e)}static Cast(i){return i instanceof Y?i:Y.From(i)}static Slope(i,e){return i.x===e.y?NaN:(i.y-e.y)/(i.x-e.x)}static Angle(i,e){return Math.atan2(e.y-i.y,e.x-i.x)}static Lrp(i,e,t){return Y.Sub(e,i).mul(t).add(i)}static Med(i,e){return new Y((i.x+e.x)/2,(i.y+e.y)/2)}static Equals(i,e,t=1e-4){return Math.abs(i.x-e.x)<t&&Math.abs(i.y-e.y)<t}static EqualsXY(i,e,t){return i.x===e&&i.y===t}static EqualsXYZ(i,e,t=1e-4){return Y.Equals(i,e,t)&&Math.abs((i.z||0)-(e.z||0))<t}static Clockwise(i,e,t){return(t.x-i.x)*(e.y-i.y)-(e.x-i.x)*(t.y-i.y)<0}static Rescale(i,e){const t=Y.Len(i);return new Y(e*i.x/t,e*i.y/t)}static ScaleWithOrigin(i,e,t){return Y.Sub(i,t).mul(e).add(t)}static ScaleWOrigin(i,e,t){return Y.Sub(i,t).mulV(e).add(t)}static ToFixed(i,e=2){return new Y(+i.x.toFixed(e),+i.y.toFixed(e),+i.z.toFixed(e))}static Nudge(i,e,t){return Y.Add(i,Y.Tan(e,i).mul(t))}static ToString(i){return`${i.x}, ${i.y}`}static ToAngle(i){let e=Math.atan2(i.y,i.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(i,e=1){return new Y(Math.cos(i)*e,Math.sin(i)*e)}static ToArray(i){return[i.x,i.y,i.z]}static ToJson(i){const{x:e,y:t,z:n}=i;return{x:e,y:t,z:n}}static Average(i){const e=i.length,t=new Y(0,0);for(let n=0;n<e;n++)t.add(i[n]);return t.div(e)}static Clamp(i,e,t){return t===void 0?new Y(Math.min(Math.max(i.x,e)),Math.min(Math.max(i.y,e))):new Y(Math.min(Math.max(i.x,e),t),Math.min(Math.max(i.y,e),t))}static PointsBetween(i,e,t=6){const n=[];for(let r=0;r<t;r++){const s=Ao.easeInQuad(r/(t-1)),a=Y.Lrp(i,e,s);a.z=Math.min(1,.5+Math.abs(.5-bo(s))*.65),n.push(a)}return n}static SnapToGrid(i,e=8){return new Y(Math.round(i.x/e)*e,Math.round(i.y/e)*e)}}const bo=o=>o<.5?2*o*o:-1+(4-2*o)*o;class ye extends Y{constructor(i=0,e=0,t=0,n={x:0,y:0},r=0,s=0){super(i,e,t),this.x=i,this.y=e,this.z=t,this.v=n,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(i){this.a=i}setT(i){this.t=i}setv(i){return this.v={x:i.x,y:i.y},this}set(i=this.x,e=this.y,t=this.z,n=this.v,r=this.t,s=this.a){return this.x=i,this.y=e,this.z=t,this.v=n,this.t=r,this.a=s,this}clone(){const{x:i,y:e,z:t,v:n,t:r,a:s}=this,a={x:n.x,y:n.y};return new ye(i,e,t,a,r,s)}distance(i){return ye.GetDistance(this,i)}isNear(i,e){return ye.IsNear(this,i,e)}getAngleByPoints(i,e){return ye.GetAngleByPoints(i,this,e)}static Sub(i,e){return new ye(i.x-e.x,i.y-e.y)}static Add(i,e){return new ye(i.x+e.x,i.y+e.y)}static GetDistance(i,e){return ye.Len(i.clone().sub(e))}static GetAngleByPoints(i,e,t){const n=e.x-i.x,r=t.x-e.x,s=e.y-i.y,a=t.y-e.y;let c=0;const l=Math.sqrt(n*n+s*s),h=Math.sqrt(r*r+a*a);if(l&&h){const u=n*r+s*a;c=Math.acos(u/(l*h)),c=c/Math.PI*180;let M=n*a-s*r;M=M>0?1:-1,c=180+M*c}return c}static IsNear(i,e,t){return ye.Len(i.clone().sub(e))<t}static RotWith(i,e,t,n=2){const r=i.x-e.x,s=i.y-e.y,a=Math.sin(t),c=Math.cos(t),l=Math.pow(10,n),h=Math.floor((e.x+(r*c-s*a))*l)/l,u=Math.floor((e.y+(r*a+s*c))*l)/l;return new ye(h,u)}static GetDotStroke(i,e,t=16){const n=new Y(1,1),r=Math.PI+.001,s=ye.Add(i,ye.Sub(i,n).uni().per().mul(-e)),a=[];for(let c=1/t,l=c;l<=1;l+=c)a.push(ye.RotWith(s,i,r*2*l));return a}static GetSemicircleStroke(i,e,t=-1,n=8){const r=t*(Math.PI+.001),s=[];for(let a=1/n,c=a;c<=1;c+=a)s.push(ye.RotWith(e,i,r*c));return s}}var Ot=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ht(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var ko=typeof Ot=="object"&&Ot&&Ot.Object===Object&&Ot,On=ko,Eo=On,Lo=typeof self=="object"&&self&&self.Object===Object&&self,Po=Eo||Lo||Function("return this")(),Be=Po,Oo=Be,Ro=Oo.Symbol,bt=Ro,$i=bt,Rn=Object.prototype,Yo=Rn.hasOwnProperty,Uo=Rn.toString,Ct=$i?$i.toStringTag:void 0;function Wo(o){var i=Yo.call(o,Ct),e=o[Ct];try{o[Ct]=void 0;var t=!0}catch{}var n=Uo.call(o);return t&&(i?o[Ct]=e:delete o[Ct]),n}var Bo=Wo,Fo=Object.prototype,Qo=Fo.toString;function Vo(o){return Qo.call(o)}var Zo=Vo,Gi=bt,Ho=Bo,$o=Zo,Go="[object Null]",Jo="[object Undefined]",Ji=Gi?Gi.toStringTag:void 0;function qo(o){return o==null?o===void 0?Jo:Go:Ji&&Ji in Object(o)?Ho(o):$o(o)}var pt=qo;function Xo(o){return o!=null&&typeof o=="object"}var it=Xo;function Ko(){this.__data__=[],this.size=0}var _o=Ko;function er(o,i){return o===i||o!==o&&i!==i}var xi=er,tr=xi;function ir(o,i){for(var e=o.length;e--;)if(tr(o[e][0],i))return e;return-1}var $t=ir,nr=$t,or=Array.prototype,rr=or.splice;function sr(o){var i=this.__data__,e=nr(i,o);if(e<0)return!1;var t=i.length-1;return e==t?i.pop():rr.call(i,e,1),--this.size,!0}var ar=sr,cr=$t;function lr(o){var i=this.__data__,e=cr(i,o);return e<0?void 0:i[e][1]}var ur=lr,hr=$t;function dr(o){return hr(this.__data__,o)>-1}var gr=dr,Mr=$t;function fr(o,i){var e=this.__data__,t=Mr(e,o);return t<0?(++this.size,e.push([o,i])):e[t][1]=i,this}var pr=fr,yr=_o,Ir=ar,mr=ur,wr=gr,Nr=pr;function yt(o){var i=-1,e=o==null?0:o.length;for(this.clear();++i<e;){var t=o[i];this.set(t[0],t[1])}}yt.prototype.clear=yr;yt.prototype.delete=Ir;yt.prototype.get=mr;yt.prototype.has=wr;yt.prototype.set=Nr;var Gt=yt,Tr=Gt;function vr(){this.__data__=new Tr,this.size=0}var Cr=vr;function Sr(o){var i=this.__data__,e=i.delete(o);return this.size=i.size,e}var jr=Sr;function Dr(o){return this.__data__.get(o)}var xr=Dr;function zr(o){return this.__data__.has(o)}var Ar=zr;function br(o){var i=typeof o;return o!=null&&(i=="object"||i=="function")}var nt=br,kr=pt,Er=nt,Lr="[object AsyncFunction]",Pr="[object Function]",Or="[object GeneratorFunction]",Rr="[object Proxy]";function Yr(o){if(!Er(o))return!1;var i=kr(o);return i==Pr||i==Or||i==Lr||i==Rr}var Yn=Yr,Ur=Be,Wr=Ur["__core-js_shared__"],Br=Wr,oi=Br,qi=function(){var o=/[^.]+$/.exec(oi&&oi.keys&&oi.keys.IE_PROTO||"");return o?"Symbol(src)_1."+o:""}();function Fr(o){return!!qi&&qi in o}var Qr=Fr,Vr=Function.prototype,Zr=Vr.toString;function Hr(o){if(o!=null){try{return Zr.call(o)}catch{}try{return o+""}catch{}}return""}var Un=Hr,$r=Yn,Gr=Qr,Jr=nt,qr=Un,Xr=/[\\^$.*+?()[\]{}|]/g,Kr=/^\[object .+?Constructor\]$/,_r=Function.prototype,es=Object.prototype,ts=_r.toString,is=es.hasOwnProperty,ns=RegExp("^"+ts.call(is).replace(Xr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function os(o){if(!Jr(o)||Gr(o))return!1;var i=$r(o)?ns:Kr;return i.test(qr(o))}var rs=os;function ss(o,i){return o==null?void 0:o[i]}var as=ss,cs=rs,ls=as;function us(o,i){var e=ls(o,i);return cs(e)?e:void 0}var lt=us,hs=lt,ds=Be,gs=hs(ds,"Map"),zi=gs,Ms=lt,fs=Ms(Object,"create"),Jt=fs,Xi=Jt;function ps(){this.__data__=Xi?Xi(null):{},this.size=0}var ys=ps;function Is(o){var i=this.has(o)&&delete this.__data__[o];return this.size-=i?1:0,i}var ms=Is,ws=Jt,Ns="__lodash_hash_undefined__",Ts=Object.prototype,vs=Ts.hasOwnProperty;function Cs(o){var i=this.__data__;if(ws){var e=i[o];return e===Ns?void 0:e}return vs.call(i,o)?i[o]:void 0}var Ss=Cs,js=Jt,Ds=Object.prototype,xs=Ds.hasOwnProperty;function zs(o){var i=this.__data__;return js?i[o]!==void 0:xs.call(i,o)}var As=zs,bs=Jt,ks="__lodash_hash_undefined__";function Es(o,i){var e=this.__data__;return this.size+=this.has(o)?0:1,e[o]=bs&&i===void 0?ks:i,this}var Ls=Es,Ps=ys,Os=ms,Rs=Ss,Ys=As,Us=Ls;function It(o){var i=-1,e=o==null?0:o.length;for(this.clear();++i<e;){var t=o[i];this.set(t[0],t[1])}}It.prototype.clear=Ps;It.prototype.delete=Os;It.prototype.get=Rs;It.prototype.has=Ys;It.prototype.set=Us;var Ws=It,Ki=Ws,Bs=Gt,Fs=zi;function Qs(){this.size=0,this.__data__={hash:new Ki,map:new(Fs||Bs),string:new Ki}}var Vs=Qs;function Zs(o){var i=typeof o;return i=="string"||i=="number"||i=="symbol"||i=="boolean"?o!=="__proto__":o===null}var Hs=Zs,$s=Hs;function Gs(o,i){var e=o.__data__;return $s(i)?e[typeof i=="string"?"string":"hash"]:e.map}var qt=Gs,Js=qt;function qs(o){var i=Js(this,o).delete(o);return this.size-=i?1:0,i}var Xs=qs,Ks=qt;function _s(o){return Ks(this,o).get(o)}var ea=_s,ta=qt;function ia(o){return ta(this,o).has(o)}var na=ia,oa=qt;function ra(o,i){var e=oa(this,o),t=e.size;return e.set(o,i),this.size+=e.size==t?0:1,this}var sa=ra,aa=Vs,ca=Xs,la=ea,ua=na,ha=sa;function mt(o){var i=-1,e=o==null?0:o.length;for(this.clear();++i<e;){var t=o[i];this.set(t[0],t[1])}}mt.prototype.clear=aa;mt.prototype.delete=ca;mt.prototype.get=la;mt.prototype.has=ua;mt.prototype.set=ha;var Wn=mt,da=Gt,ga=zi,Ma=Wn,fa=200;function pa(o,i){var e=this.__data__;if(e instanceof da){var t=e.__data__;if(!ga||t.length<fa-1)return t.push([o,i]),this.size=++e.size,this;e=this.__data__=new Ma(t)}return e.set(o,i),this.size=e.size,this}var ya=pa,Ia=Gt,ma=Cr,wa=jr,Na=xr,Ta=Ar,va=ya;function wt(o){var i=this.__data__=new Ia(o);this.size=i.size}wt.prototype.clear=ma;wt.prototype.delete=wa;wt.prototype.get=Na;wt.prototype.has=Ta;wt.prototype.set=va;var Bn=wt;function Ca(o,i){for(var e=-1,t=o==null?0:o.length;++e<t&&i(o[e],e,o)!==!1;);return o}var Sa=Ca,ja=lt,Da=function(){try{var o=ja(Object,"defineProperty");return o({},"",{}),o}catch{}}(),Fn=Da,_i=Fn;function xa(o,i,e){i=="__proto__"&&_i?_i(o,i,{configurable:!0,enumerable:!0,value:e,writable:!0}):o[i]=e}var Qn=xa,za=Qn,Aa=xi,ba=Object.prototype,ka=ba.hasOwnProperty;function Ea(o,i,e){var t=o[i];(!(ka.call(o,i)&&Aa(t,e))||e===void 0&&!(i in o))&&za(o,i,e)}var Vn=Ea,La=Vn,Pa=Qn;function Oa(o,i,e,t){var n=!e;e||(e={});for(var r=-1,s=i.length;++r<s;){var a=i[r],c=t?t(e[a],o[a],a,e,o):void 0;c===void 0&&(c=o[a]),n?Pa(e,a,c):La(e,a,c)}return e}var Xt=Oa;function Ra(o,i){for(var e=-1,t=Array(o);++e<o;)t[e]=i(e);return t}var Ya=Ra,Ua=pt,Wa=it,Ba="[object Arguments]";function Fa(o){return Wa(o)&&Ua(o)==Ba}var Qa=Fa,en=Qa,Va=it,Zn=Object.prototype,Za=Zn.hasOwnProperty,Ha=Zn.propertyIsEnumerable,$a=en(function(){return arguments}())?en:function(o){return Va(o)&&Za.call(o,"callee")&&!Ha.call(o,"callee")},Hn=$a,Ga=Array.isArray,kt=Ga,Wt={exports:{}};function Ja(){return!1}var qa=Ja;Wt.exports;(function(o,i){var e=Be,t=qa,n=i&&!i.nodeType&&i,r=n&&!0&&o&&!o.nodeType&&o,s=r&&r.exports===n,a=s?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||t;o.exports=l})(Wt,Wt.exports);var Ai=Wt.exports,Xa=9007199254740991,Ka=/^(?:0|[1-9]\d*)$/;function _a(o,i){var e=typeof o;return i=i??Xa,!!i&&(e=="number"||e!="symbol"&&Ka.test(o))&&o>-1&&o%1==0&&o<i}var ec=_a,tc=9007199254740991;function ic(o){return typeof o=="number"&&o>-1&&o%1==0&&o<=tc}var $n=ic,nc=pt,oc=$n,rc=it,sc="[object Arguments]",ac="[object Array]",cc="[object Boolean]",lc="[object Date]",uc="[object Error]",hc="[object Function]",dc="[object Map]",gc="[object Number]",Mc="[object Object]",fc="[object RegExp]",pc="[object Set]",yc="[object String]",Ic="[object WeakMap]",mc="[object ArrayBuffer]",wc="[object DataView]",Nc="[object Float32Array]",Tc="[object Float64Array]",vc="[object Int8Array]",Cc="[object Int16Array]",Sc="[object Int32Array]",jc="[object Uint8Array]",Dc="[object Uint8ClampedArray]",xc="[object Uint16Array]",zc="[object Uint32Array]",pe={};pe[Nc]=pe[Tc]=pe[vc]=pe[Cc]=pe[Sc]=pe[jc]=pe[Dc]=pe[xc]=pe[zc]=!0;pe[sc]=pe[ac]=pe[mc]=pe[cc]=pe[wc]=pe[lc]=pe[uc]=pe[hc]=pe[dc]=pe[gc]=pe[Mc]=pe[fc]=pe[pc]=pe[yc]=pe[Ic]=!1;function Ac(o){return rc(o)&&oc(o.length)&&!!pe[nc(o)]}var bc=Ac;function kc(o){return function(i){return o(i)}}var Kt=kc,Bt={exports:{}};Bt.exports;(function(o,i){var e=On,t=i&&!i.nodeType&&i,n=t&&!0&&o&&!o.nodeType&&o,r=n&&n.exports===t,s=r&&e.process,a=function(){try{var c=n&&n.require&&n.require("util").types;return c||s&&s.binding&&s.binding("util")}catch{}}();o.exports=a})(Bt,Bt.exports);var bi=Bt.exports,Ec=bc,Lc=Kt,tn=bi,nn=tn&&tn.isTypedArray,Pc=nn?Lc(nn):Ec,Gn=Pc,Oc=Ya,Rc=Hn,Yc=kt,Uc=Ai,Wc=ec,Bc=Gn,Fc=Object.prototype,Qc=Fc.hasOwnProperty;function Vc(o,i){var e=Yc(o),t=!e&&Rc(o),n=!e&&!t&&Uc(o),r=!e&&!t&&!n&&Bc(o),s=e||t||n||r,a=s?Oc(o.length,String):[],c=a.length;for(var l in o)(i||Qc.call(o,l))&&!(s&&(l=="length"||n&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Wc(l,c)))&&a.push(l);return a}var Jn=Vc,Zc=Object.prototype;function Hc(o){var i=o&&o.constructor,e=typeof i=="function"&&i.prototype||Zc;return o===e}var ki=Hc;function $c(o,i){return function(e){return o(i(e))}}var qn=$c,Gc=qn,Jc=Gc(Object.keys,Object),qc=Jc,Xc=ki,Kc=qc,_c=Object.prototype,el=_c.hasOwnProperty;function tl(o){if(!Xc(o))return Kc(o);var i=[];for(var e in Object(o))el.call(o,e)&&e!="constructor"&&i.push(e);return i}var il=tl,nl=Yn,ol=$n;function rl(o){return o!=null&&ol(o.length)&&!nl(o)}var Ei=rl,sl=Jn,al=il,cl=Ei;function ll(o){return cl(o)?sl(o):al(o)}var Li=ll,ul=Xt,hl=Li;function dl(o,i){return o&&ul(i,hl(i),o)}var gl=dl;function Ml(o){var i=[];if(o!=null)for(var e in Object(o))i.push(e);return i}var fl=Ml,pl=nt,yl=ki,Il=fl,ml=Object.prototype,wl=ml.hasOwnProperty;function Nl(o){if(!pl(o))return Il(o);var i=yl(o),e=[];for(var t in o)t=="constructor"&&(i||!wl.call(o,t))||e.push(t);return e}var Tl=Nl,vl=Jn,Cl=Tl,Sl=Ei;function jl(o){return Sl(o)?vl(o,!0):Cl(o)}var Pi=jl,Dl=Xt,xl=Pi;function zl(o,i){return o&&Dl(i,xl(i),o)}var Al=zl,Ft={exports:{}};Ft.exports;(function(o,i){var e=Be,t=i&&!i.nodeType&&i,n=t&&!0&&o&&!o.nodeType&&o,r=n&&n.exports===t,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function c(l,h){if(h)return l.slice();var u=l.length,M=a?a(u):new l.constructor(u);return l.copy(M),M}o.exports=c})(Ft,Ft.exports);var bl=Ft.exports;function kl(o,i){var e=-1,t=o.length;for(i||(i=Array(t));++e<t;)i[e]=o[e];return i}var El=kl;function Ll(o,i){for(var e=-1,t=o==null?0:o.length,n=0,r=[];++e<t;){var s=o[e];i(s,e,o)&&(r[n++]=s)}return r}var Xn=Ll;function Pl(){return[]}var Kn=Pl,Ol=Xn,Rl=Kn,Yl=Object.prototype,Ul=Yl.propertyIsEnumerable,on=Object.getOwnPropertySymbols,Wl=on?function(o){return o==null?[]:(o=Object(o),Ol(on(o),function(i){return Ul.call(o,i)}))}:Rl,Oi=Wl,Bl=Xt,Fl=Oi;function Ql(o,i){return Bl(o,Fl(o),i)}var Vl=Ql;function Zl(o,i){for(var e=-1,t=i.length,n=o.length;++e<t;)o[n+e]=i[e];return o}var Ri=Zl,Hl=qn,$l=Hl(Object.getPrototypeOf,Object),_n=$l,Gl=Ri,Jl=_n,ql=Oi,Xl=Kn,Kl=Object.getOwnPropertySymbols,_l=Kl?function(o){for(var i=[];o;)Gl(i,ql(o)),o=Jl(o);return i}:Xl,eo=_l,eu=Xt,tu=eo;function iu(o,i){return eu(o,tu(o),i)}var nu=iu,ou=Ri,ru=kt;function su(o,i,e){var t=i(o);return ru(o)?t:ou(t,e(o))}var to=su,au=to,cu=Oi,lu=Li;function uu(o){return au(o,lu,cu)}var io=uu,hu=to,du=eo,gu=Pi;function Mu(o){return hu(o,gu,du)}var fu=Mu,pu=lt,yu=Be,Iu=pu(yu,"DataView"),mu=Iu,wu=lt,Nu=Be,Tu=wu(Nu,"Promise"),vu=Tu,Cu=lt,Su=Be,ju=Cu(Su,"Set"),no=ju,Du=lt,xu=Be,zu=Du(xu,"WeakMap"),Au=zu,hi=mu,di=zi,gi=vu,Mi=no,fi=Au,oo=pt,Nt=Un,rn="[object Map]",bu="[object Object]",sn="[object Promise]",an="[object Set]",cn="[object WeakMap]",ln="[object DataView]",ku=Nt(hi),Eu=Nt(di),Lu=Nt(gi),Pu=Nt(Mi),Ou=Nt(fi),st=oo;(hi&&st(new hi(new ArrayBuffer(1)))!=ln||di&&st(new di)!=rn||gi&&st(gi.resolve())!=sn||Mi&&st(new Mi)!=an||fi&&st(new fi)!=cn)&&(st=function(o){var i=oo(o),e=i==bu?o.constructor:void 0,t=e?Nt(e):"";if(t)switch(t){case ku:return ln;case Eu:return rn;case Lu:return sn;case Pu:return an;case Ou:return cn}return i});var _t=st,Ru=Object.prototype,Yu=Ru.hasOwnProperty;function Uu(o){var i=o.length,e=new o.constructor(i);return i&&typeof o[0]=="string"&&Yu.call(o,"index")&&(e.index=o.index,e.input=o.input),e}var Wu=Uu,Bu=Be,Fu=Bu.Uint8Array,ro=Fu,un=ro;function Qu(o){var i=new o.constructor(o.byteLength);return new un(i).set(new un(o)),i}var Yi=Qu,Vu=Yi;function Zu(o,i){var e=i?Vu(o.buffer):o.buffer;return new o.constructor(e,o.byteOffset,o.byteLength)}var Hu=Zu,$u=/\w*$/;function Gu(o){var i=new o.constructor(o.source,$u.exec(o));return i.lastIndex=o.lastIndex,i}var Ju=Gu,hn=bt,dn=hn?hn.prototype:void 0,gn=dn?dn.valueOf:void 0;function qu(o){return gn?Object(gn.call(o)):{}}var Xu=qu,Ku=Yi;function _u(o,i){var e=i?Ku(o.buffer):o.buffer;return new o.constructor(e,o.byteOffset,o.length)}var eh=_u,th=Yi,ih=Hu,nh=Ju,oh=Xu,rh=eh,sh="[object Boolean]",ah="[object Date]",ch="[object Map]",lh="[object Number]",uh="[object RegExp]",hh="[object Set]",dh="[object String]",gh="[object Symbol]",Mh="[object ArrayBuffer]",fh="[object DataView]",ph="[object Float32Array]",yh="[object Float64Array]",Ih="[object Int8Array]",mh="[object Int16Array]",wh="[object Int32Array]",Nh="[object Uint8Array]",Th="[object Uint8ClampedArray]",vh="[object Uint16Array]",Ch="[object Uint32Array]";function Sh(o,i,e){var t=o.constructor;switch(i){case Mh:return th(o);case sh:case ah:return new t(+o);case fh:return ih(o,e);case ph:case yh:case Ih:case mh:case wh:case Nh:case Th:case vh:case Ch:return rh(o,e);case ch:return new t;case lh:case dh:return new t(o);case uh:return nh(o);case hh:return new t;case gh:return oh(o)}}var jh=Sh,Dh=nt,Mn=Object.create,xh=function(){function o(){}return function(i){if(!Dh(i))return{};if(Mn)return Mn(i);o.prototype=i;var e=new o;return o.prototype=void 0,e}}(),zh=xh,Ah=zh,bh=_n,kh=ki;function Eh(o){return typeof o.constructor=="function"&&!kh(o)?Ah(bh(o)):{}}var Lh=Eh,Ph=_t,Oh=it,Rh="[object Map]";function Yh(o){return Oh(o)&&Ph(o)==Rh}var Uh=Yh,Wh=Uh,Bh=Kt,fn=bi,pn=fn&&fn.isMap,Fh=pn?Bh(pn):Wh,Qh=Fh,Vh=_t,Zh=it,Hh="[object Set]";function $h(o){return Zh(o)&&Vh(o)==Hh}var Gh=$h,Jh=Gh,qh=Kt,yn=bi,In=yn&&yn.isSet,Xh=In?qh(In):Jh,so=Xh;const Kh=Ht(so);var _h=Bn,ed=Sa,td=Vn,id=gl,nd=Al,od=bl,rd=El,sd=Vl,ad=nu,cd=io,ld=fu,ud=_t,hd=Wu,dd=jh,gd=Lh,Md=kt,fd=Ai,pd=Qh,yd=nt,Id=so,md=Li,wd=Pi,Nd=1,Td=2,vd=4,ao="[object Arguments]",Cd="[object Array]",Sd="[object Boolean]",jd="[object Date]",Dd="[object Error]",co="[object Function]",xd="[object GeneratorFunction]",zd="[object Map]",Ad="[object Number]",lo="[object Object]",bd="[object RegExp]",kd="[object Set]",Ed="[object String]",Ld="[object Symbol]",Pd="[object WeakMap]",Od="[object ArrayBuffer]",Rd="[object DataView]",Yd="[object Float32Array]",Ud="[object Float64Array]",Wd="[object Int8Array]",Bd="[object Int16Array]",Fd="[object Int32Array]",Qd="[object Uint8Array]",Vd="[object Uint8ClampedArray]",Zd="[object Uint16Array]",Hd="[object Uint32Array]",Me={};Me[ao]=Me[Cd]=Me[Od]=Me[Rd]=Me[Sd]=Me[jd]=Me[Yd]=Me[Ud]=Me[Wd]=Me[Bd]=Me[Fd]=Me[zd]=Me[Ad]=Me[lo]=Me[bd]=Me[kd]=Me[Ed]=Me[Ld]=Me[Qd]=Me[Vd]=Me[Zd]=Me[Hd]=!0;Me[Dd]=Me[co]=Me[Pd]=!1;function Yt(o,i,e,t,n,r){var s,a=i&Nd,c=i&Td,l=i&vd;if(e&&(s=n?e(o,t,n,r):e(o)),s!==void 0)return s;if(!yd(o))return o;var h=Md(o);if(h){if(s=hd(o),!a)return rd(o,s)}else{var u=ud(o),M=u==co||u==xd;if(fd(o))return od(o,a);if(u==lo||u==ao||M&&!n){if(s=c||M?{}:gd(o),!a)return c?ad(o,nd(s,o)):sd(o,id(s,o))}else{if(!Me[u])return n?o:{};s=dd(o,u,a)}}r||(r=new _h);var y=r.get(o);if(y)return y;r.set(o,s),Id(o)?o.forEach(function(w){s.add(Yt(w,i,e,w,o,r))}):pd(o)&&o.forEach(function(w,p){s.set(p,Yt(w,i,e,p,o,r))});var g=l?c?ld:cd:c?wd:md,I=h?void 0:g(o);return ed(I||o,function(w,p){I&&(p=w,w=o[p]),td(s,p,Yt(w,i,e,p,o,r))}),s}var $d=Yt,Gd=$d,Jd=1,qd=4;function Xd(o){return Gd(o,Jd|qd)}var Kd=Xd;const Et=Ht(Kd),uo="1.1.28",_d="@netless/appliance-plugin",mn=typeof OffscreenCanvas=="function"?"worker":"mainThread";if(typeof window<"u"){let o=window.__netlessUA||"";o+=` ${_d}@${uo}`,window.__netlessUA=o}const we={useWorker:"auto",useSimple:!1,syncOpt:{interval:300,smoothSync:!0},cursor:{enable:!0,expirationTime:5e3,moveDelayTime:100},bufferSize:{full:2e4,sub:600},bezier:{enable:!0,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920,maxCombineTime:500},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!1,extendFontFaces:[],loadFontFacesTimeout:1e4},longDottedStroke:{lineCap:"round",segment:1,gap:2},dottedStroke:{lineCap:"round",segment:1,gap:2},normalStroke:{lineCap:"round"},undoRedo:{enableGlobal:!1,maxStackLength:20}};function ei(o){return JSON.parse(En.decompress(o))}function At(o){return En.compress(JSON.stringify(o))}const Ce=Object.keys,Je="++",Z="selector",ho="all";var eg="__lodash_hash_undefined__";function tg(o){return this.__data__.set(o,eg),this}var ig=tg;function ng(o){return this.__data__.has(o)}var og=ng,rg=Wn,sg=ig,ag=og;function Qt(o){var i=-1,e=o==null?0:o.length;for(this.__data__=new rg;++i<e;)this.add(o[i])}Qt.prototype.add=Qt.prototype.push=sg;Qt.prototype.has=ag;var Ui=Qt;function cg(o,i){for(var e=-1,t=o==null?0:o.length;++e<t;)if(i(o[e],e,o))return!0;return!1}var lg=cg;function ug(o,i){return o.has(i)}var Wi=ug,hg=Ui,dg=lg,gg=Wi,Mg=1,fg=2;function pg(o,i,e,t,n,r){var s=e&Mg,a=o.length,c=i.length;if(a!=c&&!(s&&c>a))return!1;var l=r.get(o),h=r.get(i);if(l&&h)return l==i&&h==o;var u=-1,M=!0,y=e&fg?new hg:void 0;for(r.set(o,i),r.set(i,o);++u<a;){var g=o[u],I=i[u];if(t)var w=s?t(I,g,u,i,o,r):t(g,I,u,o,i,r);if(w!==void 0){if(w)continue;M=!1;break}if(y){if(!dg(i,function(p,f){if(!gg(y,f)&&(g===p||n(g,p,e,t,r)))return y.push(f)})){M=!1;break}}else if(!(g===I||n(g,I,e,t,r))){M=!1;break}}return r.delete(o),r.delete(i),M}var go=pg;function yg(o){var i=-1,e=Array(o.size);return o.forEach(function(t,n){e[++i]=[n,t]}),e}var Ig=yg;function mg(o){var i=-1,e=Array(o.size);return o.forEach(function(t){e[++i]=t}),e}var Bi=mg,wn=bt,Nn=ro,wg=xi,Ng=go,Tg=Ig,vg=Bi,Cg=1,Sg=2,jg="[object Boolean]",Dg="[object Date]",xg="[object Error]",zg="[object Map]",Ag="[object Number]",bg="[object RegExp]",kg="[object Set]",Eg="[object String]",Lg="[object Symbol]",Pg="[object ArrayBuffer]",Og="[object DataView]",Tn=wn?wn.prototype:void 0,ri=Tn?Tn.valueOf:void 0;function Rg(o,i,e,t,n,r,s){switch(e){case Og:if(o.byteLength!=i.byteLength||o.byteOffset!=i.byteOffset)return!1;o=o.buffer,i=i.buffer;case Pg:return!(o.byteLength!=i.byteLength||!r(new Nn(o),new Nn(i)));case jg:case Dg:case Ag:return wg(+o,+i);case xg:return o.name==i.name&&o.message==i.message;case bg:case Eg:return o==i+"";case zg:var a=Tg;case kg:var c=t&Cg;if(a||(a=vg),o.size!=i.size&&!c)return!1;var l=s.get(o);if(l)return l==i;t|=Sg,s.set(o,i);var h=Ng(a(o),a(i),t,n,r,s);return s.delete(o),h;case Lg:if(ri)return ri.call(o)==ri.call(i)}return!1}var Yg=Rg;function Lt(o,i,e){return"#"+((o<<16)+(i<<8)+e).toString(16).padStart(6,"0")}function Se(o,i=1){return"rgba("+parseInt("0x"+o.slice(1,3))+","+parseInt("0x"+o.slice(3,5))+","+parseInt("0x"+o.slice(5,7))+","+i+")"}function ht(o,i,e,t=1){return`rgba(${o},${i},${e},${t})`}function ti(o){const i=o.split(","),e=parseInt(i[0].split("(")[1]),t=parseInt(i[1]),n=parseInt(i[2]),r=Number(i[3].split(")")[0]);return[Lt(e,t,n),r]}function St(o){const i=o.split(","),e=parseInt(i[0].split("(")[1]),t=parseInt(i[1]),n=parseInt(i[2]),r=Number(i[3].split(")")[0]);return[e,t,n,r]}function Rt(o){return o==="transparent"}var We=(o=>(o[o.Text=1]="Text",o[o.Shape=2]="Shape",o))(We||{});const Ee=class Ee{createProxy(i){const e=new Proxy(i,{get(t,n,r){const s=Ee.interceptors.hasOwnProperty(n)?Ee.interceptors:t;return Reflect.get(s,n,r)}});return Ee.proxyToRaw.set(e,i),e}};m(Ee,"proxyToRaw",new WeakMap),m(Ee,"interceptors",{entries(...i){return Ee.proxyToRaw.get(this).entries(...i)},forEach(...i){return Ee.proxyToRaw.get(this).forEach(...i)},size(){return Ee.proxyToRaw.get(this).size},get(i){return Ee.proxyToRaw.get(this).get(i)},set(i,e){return Ee.proxyToRaw.get(this).set(i,e)},delete(i){return Ee.proxyToRaw.get(this).delete(i)},clear(){return Ee.proxyToRaw.get(this).clear()}});let at=Ee;const pi=5;class Ug{constructor(i){m(this,"internalMsgEmitter");m(this,"publicMsgEmitter");m(this,"control");m(this,"editors");m(this,"activeId");m(this,"proxyMap");m(this,"taskqueue",new Map);m(this,"undoTickerId");m(this,"checkLocalTextBlur",x.debounce(()=>{if(this.collector)for(const[i,e]of this.editors.entries())e.opt.workState!==D.Done&&this.collector.isLocalId(i)&&this.activeId!==i&&(e.opt.text&&e.opt.text.replace(/\s*,/g,"")?this.unActive(i):this.delete(i,!0,!0))},100));const{control:e,internalMsgEmitter:t,publicMsgEmitter:n}=i;this.control=e,this.internalMsgEmitter=t,this.publicMsgEmitter=n;const r=new Map;this.proxyMap=new at;const s=this,a=at.interceptors.set;at.interceptors.set=function(l,h){return s.interceptors.set(l,h),a.call(this,l,h)};const c=at.interceptors.delete;at.interceptors.delete=function(l){return s.interceptors.delete(l),c.call(this,l)},this.editors=this.proxyMap.createProxy(r)}get collector(){return this.control.collector}set UndoTickerId(i){this.undoTickerId=i}filterEditor(i){const e=new Map;return this.editors.forEach((t,n)=>{t.viewId===i&&e.set(n,t)}),e}get interceptors(){return{set:(i,e)=>{var g,I,w,p,f,N,S,v,j;if(!this.collector)return!0;const{viewId:t,scenePath:n,canSync:r,canWorker:s,type:a,opt:c,dataType:l,updateNodeOpt:h}=e;if(!s&&!r)return!0;const M=((g=this.collector)==null?void 0:g.isLocalId(i))?(I=this.collector)==null?void 0:I.transformKey(i):i,y=((w=this.collector)==null?void 0:w.storage[t])&&this.collector.storage[t][n]&&this.collector.storage[t][n][M]||void 0;y?y.toolsType===T.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:i,msgType:U.UpdateNode}).forEach(C=>{var k;(k=this.control.worker)==null||k.taskBatchData.delete(C)}),(S=this.control.worker)==null||S.taskBatchData.add({workId:i,msgType:U.UpdateNode,dataType:l||K.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:n,willRefresh:!0}),(v=this.control.worker)==null||v.runAnimation()),r&&((j=this.collector)==null||j.dispatch({type:U.UpdateNode,workId:i,toolsType:T.Text,opt:c,viewId:t,scenePath:n,updateNodeOpt:h}),c.workState===D.Done&&this.undoTickerId&&this.control.viewContainerManager.getUndoTickerId(t)===this.undoTickerId&&(this.internalMsgEmitter.emit("forceUndoTickerEnd",this.undoTickerId,t),this.undoTickerId=void 0),c.workState===D.Done&&this.control.runEffectWork(()=>{this.control.worker.setShapeSelectorByWorkId(i,t)}))):a===We.Text&&(r&&((p=this.collector)==null||p.dispatch({type:c.text&&U.FullWork||U.CreateWork,workId:i,toolsType:T.Text,opt:c,isSync:!0,viewId:t,scenePath:n,updateNodeOpt:h})),s&&((f=this.control.worker)==null||f.taskBatchData.add({workId:i,msgType:c.text&&U.FullWork||U.CreateWork,dataType:l||K.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:n,willRefresh:!0}),(N=this.control.worker)==null||N.runAnimation()))},delete:i=>{var a,c,l;if(!this.collector)return!0;const e=this.editors.get(i);if(!e)return!0;const{viewId:t,scenePath:n,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:i,toolsType:T.Text,msgType:U.RemoveNode,dataType:K.Local,viewId:t,scenePath:n,willRefresh:!0}),(c=this.control.worker)==null||c.runAnimation()),r&&((l=this.collector)==null||l.dispatch({type:U.RemoveNode,removeIds:[i],toolsType:T.Text,viewId:t,scenePath:n}),this.undoTickerId&&this.control.viewContainerManager.getUndoTickerId(t)===this.undoTickerId&&(this.internalMsgEmitter.emit("forceUndoTickerEnd",this.undoTickerId,t),this.undoTickerId=void 0))},clear(){return!0}}}computeTextActive(i,e){var r,s,a,c;const t=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(i,e),n=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&n&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:U.GetTextActive,dataType:K.Local,op:t,viewId:e,scenePath:n}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let i=this.activeId;for(const[t,n]of this.editors.entries())if(n.opt.uid&&n.opt.uid===((e=this.collector)==null?void 0:e.uid)){i=t;break}if(i){const t=this.editors.get(i);(t==null?void 0:t.opt.text)&&(t==null?void 0:t.opt.text.replace(/\s*,/g,""))?this.unActive(i):this.delete(i,!0,!0)}this.checkLocalTextBlur()}onCameraChange(i,e){var t,n;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:c}=s.opt,l=a&&((t=this.control.viewContainerManager)==null?void 0:t.transformToOriginPoint(a,s.viewId)),h=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);if(h&&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:i.scale,type:We.Text,viewId:e,scenePath:h,canWorker:!1,canSync:!1};this.editors.set(r,u),this.control.viewContainerManager.updateTextEditorInfo(e,this.activeId)}}}onServiceDerive(i){var I,w,p;const{workId:e,opt:t,msgType:n,viewId:r,scenePath:s,dataType:a,updateNodeOpt:c}=i;if(!e||!r||!s)return;const l=e.toString();if(n===U.RemoveNode){this.delete(l,!0,!0);return}const{boxPoint:h,boxSize:u}=t,M=h&&((I=this.control.viewContainerManager)==null?void 0:I.transformToOriginPoint(h,r)),y=this.control.viewContainerManager.getView(r),g={x:M&&M[0]||0,y:M&&M[1]||0,w:u&&u[0]||0,h:u&&u[1]||0,opt:t,type:We.Text,canWorker:!0,canSync:!1,dataType:a,scale:((w=y==null?void 0:y.cameraOpt)==null?void 0:w.scale)||1,viewId:r,scenePath:s};if(t&&t.workState===D.Done&&!this.control.cursor.isEnableCursor&&h&&u){let N=c==null?void 0:c.uid;if(!N){const S=this.editors.get(l);N=S&&((p=S.opt)==null?void 0:p.uid)}N&&this.control.cursor.collectServiceCursor({op:h&&[h[0]+u[0],h[1]+u[1]],uid:N,workState:D.Done,viewId:r,type:U.Cursor})}this.editors.set(l,g),a===K.Service&&t.workState===D.Done&&this.activeId===l&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}updateForViewEdited(i,e){var n;this.editors.set(i,e);const t=(n=this.taskqueue.get(i))==null?void 0:n.resolve;t&&t(e)}active(i,e){var n;const t=this.editors.get(i);t&&t.viewId&&(t.opt.workState=D.Start,t.opt.uid=(n=this.collector)==null?void 0:n.uid,this.activeId=i,t.canWorker=!0,t.canSync=!0,e&&t.viewId&&this.addUndoTicker(e,t.viewId),this.editors.set(i,t),this.control.viewContainerManager.updateTextEditorInfo(t.viewId,this.activeId))}unActive(i){var t;const e=this.editors.get(i);if(e&&e.viewId){e.opt.workState=D.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(i,e),this.activeId=void 0;const n=(t=this.control.viewContainerManager.getView(e.viewId))==null?void 0:t.container;if(n){const r=CSS.escape(i),s=n.querySelector(`.editor-box #${r}`);s&&s.blur()}this.control.viewContainerManager.updateTextEditorInfo(e.viewId,this.activeId)}}addUndoTicker(i,e){this.internalMsgEmitter.emit("addUndoTicker",i,e),this.undoTickerId=i}createTextForMasterController(i,e){var s;const{workId:t,isActive:n,...r}=i;e&&this.addUndoTicker(e,r.viewId),r.opt.uid=(s=this.collector)==null?void 0:s.uid,n&&(this.activeId=t),r.dataType=K.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(t,r),this.control.viewContainerManager.updateTextEditorInfo(r.viewId,this.activeId)}updateTextForMasterController(i,e){var s;const{workId:t,...n}=i;e&&this.addUndoTicker(e,n.viewId);const r=this.editors.get(t)||{};n.opt&&(n.opt.uid=(s=this.collector)==null?void 0:s.uid),n.dataType=K.Local,this.editors.set(t,{...r,...n}),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId)}async updateTextControllerWithEffectAsync(i,e){var h;const{workId:t,...n}=i;e&&this.addUndoTicker(e,n.viewId);const r=this.editors.get(t)||{};n.opt&&(n.opt.uid=(h=this.collector)==null?void 0:h.uid),n.dataType=K.Local;const s={...r,...n};if(this.editors.set(t,s),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId),this.taskqueue.has(t)){const u=this.taskqueue.get(t);return u&&(u.clocker&&clearTimeout(u.clocker),this.taskqueue.delete(t)),await this.updateTextControllerWithEffectAsync(i)}const a=setTimeout(()=>{var M;const u=(M=this.taskqueue.get(t))==null?void 0:M.resolve;u&&u(s)},50),c=await new Promise(u=>{this.taskqueue.set(t,{resolve:u,clocker:a})}),l=this.taskqueue.get(t);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(t)),c}updateTextForWorker(i,e){const{workId:t,isActive:n,...r}=i,a={...this.editors.get(t)||{},...r};if(e&&this.addUndoTicker(e,r.viewId),n){a.canWorker=!1,a.canSync=!1,this.editors.set(t,a),this.active(t);return}this.editors.set(t,a),this.control.viewContainerManager.updateTextEditorInfo(r.viewId,this.activeId)}get(i){return this.editors.get(i)}delete(i,e,t){const n=this.editors.get(i);if(n){const r=n.viewId;n.canSync=e,n.canWorker=t,this.editors.delete(i),this.activeId===i&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}}deleteBatch(i,e,t){const n=new Set;for(const r of i){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=t,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),n.add(a)}}for(const r of n)this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}clear(i,e){this.editors.forEach((t,n)=>{t.viewId===i&&(e&&(t.canSync=!1),t.canWorker=!1,this.editors.delete(n))}),this.activeId=void 0,this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}insertText(i,e,t,n){var g,I;const r=(g=this.control.room)==null?void 0:g.state.memberState;if(!r)return;const s=this.control.viewContainerManager.getView(i);if(!(s!=null&&s.focusScenePath))return;const a=s==null?void 0:s.cameraOpt,c=this.control.getToolsOpt(T.Text,r);if(!c)return;const l=(I=this.control.viewContainerManager)==null?void 0:I.transformToOriginPoint([e,t],i),u=li(n,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/),M=c.toolsOpt;M.text=At(u),M.workState=D.Doing,M.boxPoint=[Math.round(e),Math.round(t)],M.boxSize=[M.fontSize,M.fontSize];const y=this.control.worker.now;return this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:y.toString(),x:l&&l[0]||0,y:l&&l[1]||0,scale:(a==null?void 0:a.scale)||1,opt:M,type:We.Text,isActive:!0,viewId:i,scenePath:s.focusScenePath},y),y.toString()}updateText(i,e){const t=this.editors.get(i.toString());if(!t)return;const r=li(e,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/);t.opt.text=At(r),this.control.textEditorManager.updateTextForMasterController({workId:i,opt:t.opt,viewId:t.viewId,canSync:!0,canWorker:!0},this.control.worker.now)}}function Wg(o){return o}var Mo=Wg;function Bg(o,i,e){switch(e.length){case 0:return o.call(i);case 1:return o.call(i,e[0]);case 2:return o.call(i,e[0],e[1]);case 3:return o.call(i,e[0],e[1],e[2])}return o.apply(i,e)}var Fg=Bg,Qg=Fg,vn=Math.max;function Vg(o,i,e){return i=vn(i===void 0?o.length-1:i,0),function(){for(var t=arguments,n=-1,r=vn(t.length-i,0),s=Array(r);++n<r;)s[n]=t[i+n];n=-1;for(var a=Array(i+1);++n<i;)a[n]=t[n];return a[i]=e(s),Qg(o,this,a)}}var Zg=Vg;function Hg(o){return function(){return o}}var $g=Hg,Gg=$g,Cn=Fn,Jg=Mo,qg=Cn?function(o,i){return Cn(o,"toString",{configurable:!0,enumerable:!1,value:Gg(i),writable:!0})}:Jg,Xg=qg,Kg=800,_g=16,eM=Date.now;function tM(o){var i=0,e=0;return function(){var t=eM(),n=_g-(t-e);if(e=t,n>0){if(++i>=Kg)return arguments[0]}else i=0;return o.apply(void 0,arguments)}}var iM=tM,nM=Xg,oM=iM,rM=oM(nM),sM=rM,aM=Mo,cM=Zg,lM=sM;function uM(o,i){return lM(cM(o,i,aM),o+"")}var hM=uM;function dM(o,i,e,t){for(var n=o.length,r=e+(t?1:-1);t?r--:++r<n;)if(i(o[r],r,o))return r;return-1}var gM=dM;function MM(o){return o!==o}var fM=MM;function pM(o,i,e){for(var t=e-1,n=o.length;++t<n;)if(o[t]===i)return t;return-1}var yM=pM,IM=gM,mM=fM,wM=yM;function NM(o,i,e){return i===i?wM(o,i,e):IM(o,mM,e)}var TM=NM,vM=TM;function CM(o,i){var e=o==null?0:o.length;return!!e&&vM(o,i,0)>-1}var fo=CM;function SM(o,i,e){for(var t=-1,n=o==null?0:o.length;++t<n;)if(e(i,o[t]))return!0;return!1}var po=SM;function jM(o,i){for(var e=-1,t=o==null?0:o.length,n=Array(t);++e<t;)n[e]=i(o[e],e,o);return n}var DM=jM,xM=Ui,zM=fo,AM=po,bM=DM,kM=Kt,EM=Wi,LM=200;function PM(o,i,e,t){var n=-1,r=zM,s=!0,a=o.length,c=[],l=i.length;if(!a)return c;e&&(i=bM(i,kM(e))),t?(r=AM,s=!1):i.length>=LM&&(r=EM,s=!1,i=new xM(i));e:for(;++n<a;){var h=o[n],u=e==null?h:e(h);if(h=t||h!==0?h:0,s&&u===u){for(var M=l;M--;)if(i[M]===u)continue e;c.push(h)}else r(i,u,t)||c.push(h)}return c}var OM=PM,Sn=bt,RM=Hn,YM=kt,jn=Sn?Sn.isConcatSpreadable:void 0;function UM(o){return YM(o)||RM(o)||!!(jn&&o&&o[jn])}var WM=UM,BM=Ri,FM=WM;function yo(o,i,e,t,n){var r=-1,s=o.length;for(e||(e=FM),n||(n=[]);++r<s;){var a=o[r];i>0&&e(a)?i>1?yo(a,i-1,e,t,n):BM(n,a):t||(n[n.length]=a)}return n}var QM=yo;function VM(){}var ZM=VM,si=no,HM=ZM,$M=Bi,GM=1/0,JM=si&&1/$M(new si([,-0]))[1]==GM?function(o){return new si(o)}:HM,qM=JM,XM=Ui,KM=fo,_M=po,ef=Wi,tf=qM,nf=Bi,of=200;function rf(o,i,e){var t=-1,n=KM,r=o.length,s=!0,a=[],c=a;if(e)s=!1,n=_M;else if(r>=of){var l=i?null:tf(o);if(l)return nf(l);s=!1,n=ef,c=new XM}else c=i?[]:a;e:for(;++t<r;){var h=o[t],u=i?i(h):h;if(h=e||h!==0?h:0,s&&u===u){for(var M=c.length;M--;)if(c[M]===u)continue e;i&&c.push(u),a.push(h)}else n(c,u,e)||(c!==a&&c.push(u),a.push(h))}return a}var sf=rf,af=OM,cf=QM,Dn=sf;function lf(o,i,e){var t=o.length;if(t<2)return t?Dn(o[0]):[];for(var n=-1,r=Array(t);++n<t;)for(var s=o[n],a=-1;++a<t;)a!=n&&(r[n]=af(r[n]||s,o[a],i,e));return Dn(cf(r,1),i,e)}var uf=lf,hf=Ei,df=it;function gf(o){return df(o)&&hf(o)}var Mf=gf,ff=Xn,pf=hM,yf=uf,If=Mf;pf(function(o){return yf(ff(o,If))});function mf(o,i){if(o&&i){const e=Math.min(o.x,i.x),t=Math.min(o.y,i.y),n=Math.max(o.x+o.w,i.x+i.w),r=Math.max(o.y+o.h,i.y+i.h),s=n-e,a=r-t;return{x:e,y:t,w:s,h:a}}return i||o}function Fi(o,i){if(o&&i){const e=Math.min(o.originX,i.originX),t=Math.min(o.originY,i.originY),n=Math.max(o.originX+o.width,i.originX+i.width),r=Math.max(o.originY+o.height,i.originY+i.height),s=n-e,a=r-t;return{originX:e,originY:t,width:s,height:a}}return i||o}function Qi(o,i=0){const e={x:0,y:0,w:0,h:0};let t=1/0,n=1/0,r=-1/0,s=-1/0;return o.forEach(a=>{const[c,l]=a.XY;t=Math.min(t,c-i),n=Math.min(n,l-i),r=Math.max(r,c+i),s=Math.max(s,l+i)}),e.x=t,e.y=n,e.w=r-t,e.h=s-n,e}function wf(o,i){return!(o.x+o.w<i.x||o.x>i.x+i.w||o.y+o.h<i.y||o.y>i.y+i.h)}function Nf(o,i=10){return{x:Math.floor(o.x-i),y:Math.floor(o.y-i),w:Math.ceil(o.w+i*2),h:Math.ceil(o.h+i*2)}}function Tf(o,i){return{x:o.x+i[0],y:o.y+i[1],w:o.w,h:o.h}}function vf(o,i){const e=new Y(o.x,o.y),t=new Y(o.x+o.w,o.y),n=new Y(o.x+o.w,o.y+o.h),r=new Y(o.x,o.y+o.h),s=new Y(o.x+o.w/2,o.y+o.h/2),a=Math.PI*i/180,c=Y.RotWith(e,s,a),l=Y.RotWith(t,s,a),h=Y.RotWith(n,s,a),u=Y.RotWith(r,s,a);return[c,l,h,u]}function Cf(o,i){const e=vf(o,i);return Qi(e)}function Sf(o,i,e){const t=new Y(o.x,o.y),n=new Y(o.x+o.w,o.y),r=new Y(o.x+o.w,o.y+o.h),s=new Y(o.x,o.y+o.h),a=new Y(e[0],e[1]),c=new Y(i[0],i[1]),l=Y.ScaleWOrigin(t,c,a),h=Y.ScaleWOrigin(n,c,a),u=Y.ScaleWOrigin(r,c,a),M=Y.ScaleWOrigin(s,c,a);return Qi([l,h,u,M])}function jf(o,i,e){const t=new Y(i[0],i[1]);for(let n=0;n<o.length;n+=3){const r=new Y(o[n],o[n+1]),s=Math.PI*e/180,a=Y.RotWith(r,t,s);o[n]=a.x,o[n+1]=a.y}}function Df(o,i,e){const t=new Y(i[0],i[1]);for(let n=0;n<o.length;n+=2){const r=new Y(o[n],o[n+1]),s=Math.PI*e/180,a=Y.RotWith(r,t,s);o[n]=a.x,o[n+1]=a.y}}function xf(o,i,e,t=[0,0]){const n=new Y(i[0],i[1]);for(let r=0;r<o.length;r+=3){const s=new Y(o[r],o[r+1]),a=new Y(e[0],e[1]),c=Y.ScaleWOrigin(s,a,n);o[r]=c.x+t[0],o[r+1]=c.y+t[1]}}function zf(o,i,e,t=[0,0]){const n=new Y(i[0],i[1]);for(let r=0;r<o.length;r+=2){const s=new Y(o[r],o[r+1]),a=new Y(e[0],e[1]),c=Y.ScaleWOrigin(s,a,n);o[r]=c.x+t[0],o[r+1]=c.y+t[1]}}function Io(o,i){return o[0]>=i.x&&o[0]<=i.x+i.w&&o[1]>=i.y&&o[1]<=i.y+i.h}function Af(o,i){const e=o<=i?1:o/i,t=i<=o?1:i/o;return[e,t]}function bf(o){for(const i of o)if(isNaN(i)||i===1/0||i===-1/0)return!1;return!0}function kf(o){return o!==Math.floor(o)}function Ef(o){const i=o.toString();return i.indexOf(".")!==-1?i.split(".")[1].length:0}function Lf(o,i){for(;i!==0;)[o,i]=[i,o%i];return o}function Pf(o){return`${Vt(o.x)},${Vt(o.y)} `}function Of(o,i){return`${Vt((o.x+i.x)/2)},${Vt((o.y+i.y)/2)} `}function Vt(o){return+o.toFixed(4)}const Ge=async(o,i,e=!1)=>{let t,n;return new Promise(function(r){if(e&&requestIdleCallback)requestIdleCallback(()=>{r(1)},{timeout:i});else{if(typeof window.requestIdleCallback=="function"){const s=typeof i=="number"&&!isNaN(i)&&i>0?i:0;n=window.requestIdleCallback(()=>{clearTimeout(t),r(1)},{timeout:s})}t=setTimeout(()=>{n&&window.cancelIdleCallback(n),r(1)},i||0)}}).then(function(){o()}).catch(function(){o()})},Mt=o=>Math.max(1,(window.devicePixelRatio||1)/1),Rf=(o,i)=>o.x+o.w<i.x||o.x>i.x+i.w||o.y+o.h<i.y||o.y>i.y+i.h?Dt.outside:o.x>=i.x&&o.y>=i.y&&o.x+o.w<=i.x+i.w&&o.y+o.h<=i.y+i.h?Dt.inside:Dt.intersect;function Yf(o){let i=0;for(let e=0;e<o.length;e++){const t=o.charCodeAt(e);t>=1&&t<=126||65376<=t&&t<=65439?i++:i+=2}return i}class Uf{constructor(i,e){m(this,"plugin");m(this,"uid");m(this,"control");this.control=i,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var i;return F.toJS((i=this.plugin)==null?void 0:i.attributes[this.namespace])||{}}getAuthSpaceData(){var i;return F.toJS((i=this.plugin)==null?void 0:i.attributes[this.authSpace])||{}}getGlobalUndoRedoStackData(){var i;return F.toJS((i=this.plugin)==null?void 0:i.attributes[this.globalUndoRedoStackSpace])||{}}getUidFromKey(i){return i.split(Je).length===2&&i.split(Je)[0]||this.uid}isLocalId(i){return i.split(Je).length===1}getLocalId(i){return i.split(Je)[1]}isSelector(i){return this.getLocalId(i)===Z}}const Ae=class Ae extends Uf{constructor(e,t,n){super(e,t);m(this,"namespace");m(this,"authSpace");m(this,"globalUndoRedoStackSpace");m(this,"serviceStorage",{});m(this,"storage",{});m(this,"authStorage",{});m(this,"globalUndoRedoStackStorage",{});m(this,"stateDisposer");m(this,"authDisposer");m(this,"asyncClockState",!1);m(this,"limitNums",new Map);m(this,"syncInterval");m(this,"limitComponents",x.debounce((e,t)=>{var s,a,c,l,h,u,M,y;const n=((a=(s=this.storage)==null?void 0:s[e])==null?void 0:a[t])&&Object.keys(this.storage[e][t]).length||0;if(n===0)return;let r=this.limitNums.get(`${e}/${t}`);if(!r){const g=this.getLimitNum(n);this.limitNums.set(`${e}/${t}`,g),r=g}if(r>0&&n>=r){const g=Ae.componentsLimits.indexOf(r),I=g>=0&&g<Ae.componentsLimits.length-1;if((h=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&h.map.onObjectsLimit&&((M=(u=this.control.room)==null?void 0:u.callbacks)==null||M.dispatch("onObjectsLimit",p=>p(r,I))),!I){this.control.room.logger.error(`exceeds the limit of ${r} components, current: ${n}`),(y=this.control.room)==null||y.disconnect().then(()=>{var p,f,N,S,v;(N=(f=(p=this.control.room)==null?void 0:p.callbacks)==null?void 0:f.listeners)!=null&&N.map.onKickedWithReason&&((v=(S=this.control.room)==null?void 0:S.callbacks)==null||v.dispatch("onKickedWithReason",j=>j("kickByAdmin")))});return}console.warn(`exceeds the limit of ${r} components, current: ${n}`);const w=I?Ae.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${t}`,w)}},2e3,{maxWait:5e3}));m(this,"clearLimitComponents",(e,t)=>{if(t)this.limitNums.delete(`${e}/${t}`);else for(const n of this.limitNums.keys())`${e}/`.indexOf(n)===0&&this.limitNums.delete(n)});this.syncInterval=n,this.namespace=Ae.namespace,this.authSpace=Ae.authSpace,this.globalUndoRedoStackSpace=Ae.globalUndoRedoStackSpace,this.serviceStorage=this.getNamespaceData(),this.storage=x.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.globalUndoRedoStackStorage={},this.getLimitNums()}getLimitNum(e){return e>=Ae.componentsLimits[0]?Ae.componentsLimits[1]:Ae.componentsLimits[0]}getLimitNums(){for(const[e,t]of Object.entries(this.storage))if(e&&t){for(const[n,r]of Object.entries(t))if(n&&r){const s=this.getLimitNum(Object.keys(r).length);this.limitNums.set(`${e}/${n}`,s)}}}getViewIdBySecenPath(e){const t=this.getNamespaceData();for(const[n,r]of Object.entries(t))if(r){for(const s of Object.keys(r))if(s===e)return n}}getScenePathData(e){const t=this.getNamespaceData();for(const n of Object.values(t))if(n){for(const r of Object.keys(n))if(r===e)return x.cloneDeep(n[r])}}getStorageData(e,t){const n=this.getNamespaceData();return n&&n[e]&&x.cloneDeep(n[e][t])||void 0}hasSelector(e,t){const n=this.storage&&this.storage[e]&&this.storage[e][t];return!!(n&&Object.keys(n).find(r=>this.isOwn(r)&&this.getLocalId(r)===Z))}hasIncludeSelector(e,t,n){for(const r of Object.keys(this.storage))if(!(t&&r!==t)){for(const s of Object.keys(this.storage[r]))if(!(n&&s!==n)){for(const a of Object.keys(this.storage[r][s]))if(this.getLocalId(a)===Z){const c=this.storage[r][s][a],l=this.isLocalId(e)?this.transformKey(e):e;if(c&&c.selectIds&&c.selectIds.length&&c.selectIds.includes(l))return!0}}}return!1}addStorageStateListener(e){this.stateDisposer=F.autorun(async()=>{var c,l,h,u,M,y;const t=this.getNamespaceData(),{diffView:n,diffScenePath:r,diffData:s}=this.diffFunByView(this.serviceStorage,t);this.serviceStorage=t;const a={};if(Object.keys(n).length>0)for(const[g,I]of Object.entries(n))I&&!x.isEqual((c=this.storage)==null?void 0:c[g],I.newValue)&&(a.diffView||(a.diffView={}),a.diffView[g]=I,this.storage||(this.storage={}),I.newValue===void 0?delete this.storage[g]:this.storage[g]=x.cloneDeep(I.newValue));if(Object.keys(r).length>0){for(const[g,I]of Object.entries(r))if(I){const{viewId:w,newValue:p}=I;I&&!x.isEqual((h=(l=this.storage)==null?void 0:l[w])==null?void 0:h[g],p)&&(a.diffScenePath||(a.diffScenePath={}),a.diffScenePath[g]=I,this.storage||(this.storage={}),this.storage[w]||(this.storage[w]={}),I.newValue===void 0?delete this.storage[w][g]:this.storage[w][g]=x.cloneDeep(I.newValue))}}if(Object.keys(s).length>0){for(const[g,I]of Object.entries(s))if(I){const{viewId:w,scenePath:p,newValue:f}=I;I&&!x.isEqual((y=(M=(u=this.storage)==null?void 0:u[w])==null?void 0:M[p])==null?void 0:y[g],f)&&(a.diffData||(a.diffData={}),a.diffData[g]=I,this.storage||(this.storage={}),this.storage[w]||(this.storage[w]={}),this.storage[w][p]||(this.storage[w][p]={}),I.newValue===void 0?delete this.storage[w][p][g]:this.storage[w][p][g]=x.cloneDeep(I.newValue))}}Object.keys(a).length>0&&e(a),this.control.worker.publicMsgEmitter.emit("syncStorageChange",this.serviceStorage)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,t){const n=Ce(e),r=Ce(t),s={},a={},c={};for(const l of r)if(!n.includes(l)||e[l]===void 0){s[l]={newValue:t[l],oldValue:void 0};continue}for(const l of n){if(x.isEqual(e[l],t[l]))continue;if(!r.includes(l)||t[l]===void 0){s[l]={newValue:void 0,oldValue:e[l]};continue}const h=this.diffFunByScenePath(e[l],t[l],l);Object.assign(a,h.diffScenePath),Object.assign(c,h.diffData)}return{diffData:c,diffScenePath:a,diffView:s}}diffFunByScenePath(e,t,n){const r=Ce(e),s=Ce(t),a={},c={};for(const l of s)if(!r.includes(l)||e[l]===void 0){a[l]={newValue:t[l],oldValue:void 0,viewId:n};continue}for(const l of r){if(x.isEqual(e[l],t[l]))continue;if(!s.includes(l)||t[l]===void 0){a[l]={newValue:void 0,oldValue:e[l],viewId:n};continue}const h=this.diffFunByKeys(e[l],t[l],l,n);Object.assign(c,h)}return{diffScenePath:a,diffData:c}}diffFunByKeys(e,t,n,r){const s=Ce(e),a=Ce(t),c={};for(const l of a)(!s.includes(l)||e[l]===void 0)&&(c[l]={oldValue:void 0,newValue:t[l],viewId:r,scenePath:n});for(const l of s)if(!x.isEqual(e[l],t[l])){if(!a.includes(l)||t[l]===void 0){c[l]={newValue:void 0,oldValue:e[l],viewId:r,scenePath:n};continue}a.includes(l)&&(c[l]={oldValue:e[l],newValue:t[l],viewId:r,scenePath:n})}return c}transformKey(e){return this.uid+Je+e}isOwn(e){return e.split(Je)[0]===this.uid}dispatch(e){var w;const{type:t,workId:n,ops:r,index:s,opt:a,toolsType:c,removeIds:l,updateNodeOpt:h,op:u,selectIds:M,isSync:y,scenePath:g,viewId:I}=e;if(I)switch(t){case U.Clear:const p={};g&&this.storage[I]&&this.storage[I][g]?(delete this.storage[I][g],this.setState(p,{isSync:y,viewId:I,scenePath:g})):this.storage[I]&&(delete this.storage[I],this.setState(p,{isSync:y,viewId:I,scenePath:""})),Ge(()=>{var j,C;(j=this.control.pluginManager)==null||j.dispatchPluginEvent("syncStorage",I,g),this.control.isUseSimple||(C=this.control.miniMapManager)==null||C.updateMiniMapCamera(I),this.clearLimitComponents(I,g)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"));break;case U.CreateWork:if(g&&n&&c&&a){const j=this.isLocalId(n.toString())?this.transformKey(n):n;this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.addRenderPageElementId({viewId:I,scenePath:g,elementId:j.toString()}),this.updateValue(j.toString(),{type:U.CreateWork,workId:n,toolsType:c,opt:a},{isSync:y,viewId:I,scenePath:g})}break;case U.DrawWork:if(g&&n&&typeof s=="number"&&(u!=null&&u.length)){const j=this.isLocalId(n.toString())?this.transformKey(n):n,C=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][j]||void 0;if(C!=null&&C.ops||(C==null?void 0:C.type)===U.FullWork)return;const k=s?((C==null?void 0:C.op)||[]).slice(0,s).concat(u):u||(C==null?void 0:C.op),P=c||(C==null?void 0:C.toolsType),L=a||(C==null?void 0:C.opt),O=h||(C==null?void 0:C.updateNodeOpt);n&&P&&L&&k&&(this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.addRenderPageElementId({viewId:I,scenePath:g,elementId:j.toString()}),this.updateValue(j.toString(),{...C,type:U.DrawWork,workId:n,updateNodeOpt:O,toolsType:P,opt:L,op:k,index:s},{isSync:y,viewId:I,scenePath:g}))}break;case U.FullWork:if(g&&n){const j=this.isLocalId(n.toString())?this.transformKey(n):n,C=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][j]||void 0,k=h||(C==null?void 0:C.updateNodeOpt),P=c||(C==null?void 0:C.toolsType),L=a||(C==null?void 0:C.opt),O=r||(C==null?void 0:C.ops);P&&L&&(this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.addRenderPageElementId({viewId:I,scenePath:g,elementId:j.toString()}),this.updateValue(j.toString(),{type:U.FullWork,updateNodeOpt:k,workId:j,toolsType:P,opt:L,ops:O},{isSync:y,viewId:I,scenePath:g}),Ge(()=>{var A,R;(A=this.control.pluginManager)==null||A.dispatchPluginEvent("syncStorage",I,g),this.control.isUseSimple||(R=this.control.miniMapManager)==null||R.updateMiniMapCamera(I),this.limitComponents(I,g)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case U.RemoveNode:if(g&&(l!=null&&l.length)){const j=l.map(C=>this.isLocalId(C+"")?this.transformKey(C):C);this.storage[I]&&this.storage[I][g]&&(Object.keys(this.storage[I][g]).map(C=>{j!=null&&j.includes(C)&&(this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.delRenderPageElementId({viewId:I,scenePath:g,elementId:C}),this.updateValue(C,void 0,{isSync:y,viewId:I,scenePath:g}))}),(w=this.control.pluginManager)==null||w.dispatchPluginEvent("syncStorage",I,g),this.control.isUseSimple||Ge(()=>{var C;(C=this.control.miniMapManager)==null||C.updateMiniMapCamera(I)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case U.UpdateNode:if(g&&n&&(h||r||a)){const j=this.isLocalId(n.toString())?this.transformKey(n):n,C=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][j]||void 0;C&&(C.updateNodeOpt=h,(r||u)&&(C.ops=r,C.op=u),a&&(C.opt=a),C.type=U.FullWork,this.updateValue(j.toString(),C,{isSync:y,viewId:I,scenePath:g}),this.control.isUseSimple||Ge(()=>{var k;(k=this.control.miniMapManager)==null||k.updateMiniMapCamera(I)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case U.Select:if(!g)return;let f;M!=null&&M.length&&(f=M.map(j=>this.isLocalId(j+"")?this.transformKey(j):j));const N=this.transformKey(Z),S=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][N]||void 0,v=a||(S==null?void 0:S.opt);f&&this.checkOtherSelector(N,f,{isSync:y,viewId:I,scenePath:g}),this.updateValue(N,f&&{type:U.Select,toolsType:T.Selector,opt:v,selectIds:f},{isSync:y,viewId:I,scenePath:g});break}}checkOtherSelector(e,t,n){const{viewId:r,scenePath:s}=n;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===Z){const c=this.storage[r][s][a];if(c&&c.selectIds){const l=c.selectIds.filter(h=>!t.includes(h));l.length>0&&(c.selectIds=l),this.updateValue(a,l.length&&c||void 0,n)}}}setState(e,t){const{viewId:n,scenePath:r}=t,s=Ce(e);for(let a=0;a<s.length;a++){const c=s[a],l=e[c];typeof l<"u"?(this.storage[n]||(this.storage[n]={}),this.storage[n][r]||(this.storage[n][r]={}),this.storage[n][r][c]=l):delete this.storage[n][r][c]}this.runSyncService(t)}updateValue(e,t,n){const{viewId:r,scenePath:s,storage:a}=n,c=a||this.storage;t===void 0?delete c[r][s][e]:(c[r]||(c[r]={}),c[r][s]||(c[r][s]={}),c[r][s][e]=t),this.runSyncService(n)}runSyncService(e){if(!this.control.renderControl.isWritable){this.control.room&&this.control.room.logger?this.control.room.logger.error("The current state is not writable and synchronization cannot be synchronized"):console.error("The current state is not writable and synchronization cannot be synchronized");return}this.asyncClockState||(this.asyncClockState=!0,e.isSync?(this.asyncClockState=!1,this.syncSerivice(e)):Ge(()=>{this.asyncClockState=!1,this.syncSerivice(e)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}syncSerivice(e={storage:this.storage}){const{storage:t}=e,n=t||this.storage,r=Ce(this.serviceStorage),s=Ce(n),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}x.isEqual(this.serviceStorage[c],n[c])||this.syncViewData(n,c)}for(const c of s)r.includes(c)||a.set(c,n[c]);if(a.size>5)this.syncStorageView(n);else for(const[c,l]of a.entries())this.syncUpdataView(n,c,l)}syncViewData(e,t){const n=Ce(this.serviceStorage[t]),r=Ce(e[t]),s=new Map;for(const a of n){if(!r.includes(a)){s.set(a,void 0);continue}x.isEqual(this.serviceStorage[t][a],e[t][a])||this.syncScenePathData(e,t,a)}for(const a of r)n.includes(a)||s.set(a,e[t][a]);if(s.size>5)this.syncStorageScenePath(t,e[t]);else for(const[a,c]of s.entries())this.syncUpdataScenePath(e,t,a,c)}syncScenePathData(e,t,n){const r=Ce(this.serviceStorage[t][n]),s=Ce(e[t][n]),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}x.isEqual(this.serviceStorage[t][n][c],e[t][n][c])||a.set(c,e[t][n][c])}for(const c of s)r.includes(c)||a.set(c,e[t][n][c]);if(a.size>5)this.syncStorageKey(t,n,e[t][n]);else for(const[c,l]of a.entries())this.syncUpdataKey(e,t,n,c,l)}syncUpdataView(e,t,n){var s;Object.keys(this.serviceStorage).length?(s=this.plugin)==null||s.updateAttributes([this.namespace,t],n):this.syncStorageView(e)}syncStorageView(e){var t;(t=this.plugin)==null||t.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,t,n,r){var a;Object.keys(this.serviceStorage[t]).length?(a=this.plugin)==null||a.updateAttributes([this.namespace,t,n],r):this.syncStorageScenePath(t,e[t])}syncStorageScenePath(e,t){var n;(n=this.plugin)==null||n.updateAttributes([this.namespace,e],t)}syncUpdataKey(e,t,n,r,s){var c;Object.keys(this.serviceStorage[t][n]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,t,n,r],s):this.syncStorageKey(t,n,e[t][n])}syncStorageKey(e,t,n){var r;(r=this.plugin)==null||r.updateAttributes([this.namespace,e,t],n)}keyTransformWorkId(e){const t=e.split(Je);return t.length===2?t[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.removeAuthStateListener(),this.authStorage={},this.globalUndoRedoStackStorage={}}transformToSerializableUndoStackItemData(e){const{data:t,scenePath:n}=e,r={};for(const s of t)r[s.key]={dataType:s.dataType,data:s.data};return{data:r,scenePath:n}}dispatchUndoTicker(e){const{viewId:t,undoTickerId:n,data:r,syncType:s,operation:a}=e,c=a===Te.syncUndoStack?"undoStack":"redoStack",l=s==="delete"?void 0:this.transformToSerializableUndoStackItemData(r);if(this.plugin)if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,t]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,t,c]))this.globalUndoRedoStackStorage[t][c][n]=l,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c,n],l);else{const h={[n]:l};this.globalUndoRedoStackStorage[t][c]=h,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c],h)}else{const h={[c]:{[n]:l}};this.globalUndoRedoStackStorage[t]=h,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t],h)}else{const h={[t]:{[c]:{[n]:l}}};this.globalUndoRedoStackStorage=h,this.plugin.updateAttributes(this.globalUndoRedoStackSpace,h)}}addGlobalUndoRedoStackListener(e){this.authDisposer=F.autorun(async()=>{const t=this.getGlobalUndoRedoStackData();if(x.isEqual(this.globalUndoRedoStackStorage,t))return;const n=this.diffGlobalUndoRedoStackFun(this.globalUndoRedoStackStorage,t);this.globalUndoRedoStackStorage=t,e(n)})}diffGlobalUndoRedoStackFun(e,t){const n=Ce(e),r=Ce(t),s={};for(const a of r)if(!n.includes(a)||e[a]===void 0){s[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!x.isEqual(e[a],t[a])){if(!r.includes(a)||t[a]===void 0){s[a]={newValue:void 0,oldValue:e[a]};continue}s[a]={newValue:t[a],oldValue:e[a]}}return s}dispatchPageAuth(e,t=!0){var l,h,u,M,y,g,I,w,p,f,N,S,v,j,C,k,P,L,O,A,R,z,V,_,B,J,ie,re,ne,q,$,ue,Fe,Qe,ot,qe,Ve,Ze;const{operation:n,viewId:r,scenePath:s,pageId:a,pageData:c}=e;switch(n){case Te.addPage:{if(!r||!s||!a)return;const H=[this.authSpace];Object.keys(this.authStorage).length&&H.push("pageAuth");const Q=this.authStorage.pageAuth||{};this.authStorage.pageAuth=Q,Object.keys(Q).length&&H.push(r),Q[r]=Q[r]||{},Object.keys(Q[r]).length&&H.push(s),Q[r][s]=Q[r][s]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(Q[r][s].pages).length&&H.push("pages",a);const G={};if(c!=null&&c.elementIds)for(const X of c.elementIds.keys())G[X]=!0;Q[r][s].pages[a]=G,t&&(H.length===1?(l=this.plugin)==null||l.updateAttributes(H,x.cloneDeep(this.authStorage)):H.length===2?(h=this.plugin)==null||h.updateAttributes(H,x.cloneDeep(Q)):H.length===3?(u=this.plugin)==null||u.updateAttributes(H,x.cloneDeep(Q[r])):H.length===4?(M=this.plugin)==null||M.updateAttributes(H,x.cloneDeep(Q[r][s])):(y=this.plugin)==null||y.updateAttributes(H,x.cloneDeep(G)));return}case Te.renderPage:{if(!r||!s||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[r]&&this.authStorage.pageAuth[r][s]&&c.render!==this.authStorage.pageAuth[r][s].render&&(this.authStorage.pageAuth[r][s].render=c.render,t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",r,s,"render"],c.render)));return}case Te.deletePage:{if(!r||!s||!a)return;(N=(f=(p=(w=(I=this.authStorage)==null?void 0:I.pageAuth)==null?void 0:w[r])==null?void 0:p[s])==null?void 0:f.pages)!=null&&N[a]&&(delete this.authStorage.pageAuth[r][s].pages[a],t&&((S=this.plugin)==null||S.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a],void 0)));return}case Te.clearPage:{if(!r||!s||!a)return;(P=(k=(C=(j=(v=this.authStorage)==null?void 0:v.pageAuth)==null?void 0:j[r])==null?void 0:C[s])==null?void 0:k.pages)!=null&&P[a]&&(delete this.authStorage.pageAuth[r][s].pages[a],t&&((L=this.plugin)==null||L.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a],{})));return}case Te.addElement:{if(!r||!s||!a||!(c!=null&&c.elementId))return;(V=(z=(R=(A=(O=this.authStorage)==null?void 0:O.pageAuth)==null?void 0:A[r])==null?void 0:R[s])==null?void 0:z.pages)!=null&&V[a]&&(this.authStorage.pageAuth[r][s].pages[a][c.elementId]=!0,t&&((_=this.plugin)==null||_.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a,c.elementId],!0)));return}case Te.deleteElement:{if(!r||!s||!a||!(c!=null&&c.elementId))return;(q=(ne=(re=(ie=(J=(B=this.authStorage)==null?void 0:B.pageAuth)==null?void 0:J[r])==null?void 0:ie[s])==null?void 0:re.pages)==null?void 0:ne[a])!=null&&q[c.elementId]&&(delete this.authStorage.pageAuth[r][s].pages[a][c.elementId],t&&(($=this.plugin)==null||$.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a,c.elementId],void 0)));return}case Te.clearViewScenePath:{if(!r||!s)return;(Qe=(Fe=(ue=this.authStorage)==null?void 0:ue.pageAuth)==null?void 0:Fe[r])!=null&&Qe[s]&&(delete this.authStorage.pageAuth[r][s],t&&((ot=this.plugin)==null||ot.updateAttributes([this.authSpace,"pageAuth",r,s],void 0)));return}case Te.clearView:{if(!r)return;(Ve=(qe=this.authStorage)==null?void 0:qe.pageAuth)!=null&&Ve[r]&&(delete this.authStorage.pageAuth[r],t&&((Ze=this.plugin)==null||Ze.updateAttributes([this.authSpace,"pageAuth",r],void 0)));return}}}dispatchRenderAuth(e,t=!0){var l,h,u,M,y,g,I,w,p,f,N,S,v,j,C,k,P,L,O,A;const{operation:n,viewId:r,uid:s,renderData:a,isClear:c}=e;if(r)switch(n){case Ue.setAuth:{if(!a||a.render===void 0&&a.hide===void 0&&a.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[r]&&(delete this.authStorage.renderAuth[r],t&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",r],void 0)));return}const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]={},this.authStorage.renderAuth=z;const{render:V,hide:_,clear:B}=a;if(V===!0)z[r].render=!0;else if(x.isSet(V)){z[r].render={};for(const J of V.keys())z[r].render[J]=!0}if(_===!0)z[r].hide=!0;else if(x.isSet(_)){z[r].hide={};for(const J of _.keys())z[r].hide[J]=!0}if(B===!0)z[r].clear=!0;else if(x.isSet(B)){z[r].clear={};for(const J of B.keys())z[r].clear[J]=!0}t&&(R.length===1?(h=this.plugin)==null||h.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(u=this.plugin)==null||u.updateAttributes(R,x.cloneDeep(z)):(M=this.plugin)==null||M.updateAttributes(R,x.cloneDeep(z[r])));return}case Ue.setShow:{if(!s)return;const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]=z[r]||{},this.authStorage.renderAuth=z,Object.keys(z[r]).length&&R.push("render"),z[r].render=z[r].render||{},z[r].render!==!0&&(Object.keys(z[r].render).length&&R.push(s),z[r].render[s]=!0),z[r].hide!==!0&&((y=z[r].hide)!=null&&y[s])&&(delete z[r].hide[s],t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",r,"hide",s],void 0))),t&&(R.length===1?(I=this.plugin)==null||I.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(w=this.plugin)==null||w.updateAttributes(R,x.cloneDeep(z)):R.length===3?(p=this.plugin)==null||p.updateAttributes(R,x.cloneDeep(z[r])):(f=this.plugin)==null||f.updateAttributes(R,!0));return}case Ue.setHide:{if(!s)return;const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]=z[r]||{},this.authStorage.renderAuth=z,Object.keys(z[r]).length&&R.push("hide"),z[r].hide=z[r].hide||{},z[r].hide!==!0&&(Object.keys(z[r].hide).length&&R.push(s),z[r].hide[s]=!0),z[r].render!==!0&&((N=z[r].render)!=null&&N[s])&&(delete z[r].render[s],t&&((S=this.plugin)==null||S.updateAttributes([this.authSpace,"renderAuth",r,"render",s],void 0))),t&&(R.length===1?(v=this.plugin)==null||v.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(j=this.plugin)==null||j.updateAttributes(R,x.cloneDeep(z)):R.length===3?(C=this.plugin)==null||C.updateAttributes(R,x.cloneDeep(z[r])):(k=this.plugin)==null||k.updateAttributes(R,!0));return}case Ue.setClear:{if(!s)return;const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]=z[r]||{},this.authStorage.renderAuth=z,Object.keys(z[r]).length&&R.push("clear"),z[r].clear=z[r].clear||{},z[r].clear!==!0&&(Object.keys(z[r].clear).length&&R.push(s),c?z[r].clear[s]=!0:delete z[r].clear[s]),t&&(R.length===1?(P=this.plugin)==null||P.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(L=this.plugin)==null||L.updateAttributes(R,x.cloneDeep(z)):R.length===3?(O=this.plugin)==null||O.updateAttributes(R,x.cloneDeep(z[r])):(A=this.plugin)==null||A.updateAttributes(R,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=F.autorun(async()=>{const t=this.getAuthSpaceData(),{renderAuth:n,pageAuth:r}=t;let s,a;x.isEqual(n,this.authStorage.renderAuth)||(s=this.diffAuthFun(this.authStorage.renderAuth||{},n||{}),this.authStorage.renderAuth=n),x.isEqual(r,this.authStorage.pageAuth)||(a=this.diffAuthPageFun(this.authStorage.pageAuth||{},r||{}),this.authStorage.pageAuth=r),(s||a)&&e(s,a)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,t){const n=Ce(e),r=Ce(t),s={};for(const a of r)if(!n.includes(a)||e[a]===void 0){s[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!x.isEqual(e[a],t[a])){if(!r.includes(a)||t[a]===void 0){s[a]={newValue:void 0,oldValue:e[a]};continue}s[a]={newValue:t[a],oldValue:e[a]}}return s}diffAuthPageFun(e,t){const n=Ce(e),r=Ce(t),s={};for(const a of r)if(!n.includes(a)||e[a]===void 0){s[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!x.isEqual(e[a],t[a])){if(!r.includes(a)||t[a]===void 0){s[a]={newValue:void 0,oldValue:e[a]};continue}s[a]={newValue:t[a],oldValue:e[a]}}return s}};m(Ae,"namespace","PluginState"),m(Ae,"authSpace","PluginAuth"),m(Ae,"globalUndoRedoStackSpace","GlobalUndoRedoStack"),m(Ae,"componentsLimits",[500,1e3]);let yi=Ae;var Le=(o=>(o[o.Draw=1]="Draw",o[o.Delete=2]="Delete",o[o.Update=3]="Update",o))(Le||{});class Wf{constructor(){m(this,"roomMembers",[]);m(this,"onChangeHooks",new Set)}setRoomMembers(i){this.executChangeUidHook(this.roomMembers,i),this.roomMembers=i}executChangeUidHook(i,e){const t={online:e.map(n=>{var r;return((r=n.payload)==null?void 0:r.uid)||n.session}),offline:i.map(n=>{var r;return((r=n.payload)==null?void 0:r.uid)||n.session})};this.onChangeHooks.forEach(n=>n(t))}getAllRoomMembers(){return this.roomMembers}getRoomMember(i){return this.roomMembers.find(e=>{var t;return((t=e.payload)==null?void 0:t.uid)===i})}isOnLine(i){return!!this.getRoomMember(i)}onUidChangeHook(i){this.onChangeHooks.add(i)}destroy(){this.onChangeHooks.clear()}}class Bf{constructor(i){m(this,"expirationTime",we.cursor.expirationTime);m(this,"isEnableCursor");m(this,"internalMsgEmitter");m(this,"publicMsgEmitter");m(this,"control");m(this,"eventName","applianc-cursor");m(this,"displayer");m(this,"roomMember");m(this,"animationId");m(this,"maxLastSyncTime");m(this,"willSendEventWorkers",[]);m(this,"willConsumeEventWorkers",new Map);m(this,"sendEventTimerId");m(this,"animationDrawWorkers",new Map);m(this,"animationEventWorkers",new Map);m(this,"cursorInfoMap",new Map);m(this,"doneRenderCursorInfoMap",new Map);const{control:e,internalMsgEmitter:t,publicMsgEmitter:n}=i;this.internalMsgEmitter=t,this.publicMsgEmitter=n,this.expirationTime=x.isNumber(e.pluginOptions.extras.cursor.expirationTime)?e.pluginOptions.extras.cursor.expirationTime:this.expirationTime,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.isEnableCursor=this.control.pluginOptions.extras.cursor.enable}activeCollector(){this.control.plugin&&this.isEnableCursor&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(i){var a;const{event:e,payload:t}=i;if(e!==this.eventName)return;const{uid:n,op:r,type:s}=t;if(((a=this.control.collector)==null?void 0:a.uid)!==n&&s===jt.Cursor&&(r!=null&&r.length)){const c=this.willConsumeEventWorkers.get(n)||[];for(const l of r){const{viewId:h}=l;x.isNumber(l.consumPoint[0])&&x.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,h)),this.control.renderControl.isFilterCursor(h)&&c.unshift({...l,timestamp:this.control.worker.now})}this.willConsumeEventWorkers.set(n,c),this.runAnimation()}}onFocusViewChange(){this.isEnableCursor&&(this.checkDrawWorks(),this.runAnimation())}updateRoomMembers(i){const{offline:e}=i;for(const t of this.cursorInfoMap.keys())t&&e.includes(t)&&this.cursorInfoMap.delete(t)}getKey(i,e){return`${i}${Je}${e}`}getUidAndviewId(i){const[e,t]=i.split(Je);return{uid:e,viewId:t}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const i=this.control.viewContainerManager.focuedViewId;for(const[t,n]of this.animationDrawWorkers.entries()){const{viewId:r,uid:s}=this.getUidAndviewId(t);s!==((e=this.control.collector)==null?void 0:e.uid)&&r!==i&&n.workState===D.Done&&(n.consumPoint=[void 0,void 0])}}animationCursor(){this.animationId=void 0;const i=this.control.worker.now;for(const[t,n]of this.animationDrawWorkers.entries()){const{uid:r,viewId:s}=this.getUidAndviewId(t),a=this.roomMember.getRoomMember(r);if(!a){this.animationDrawWorkers.delete(t);continue}const{consumPoint:c,timestamp:l,workState:h}=n,u=this.cursorInfoMap.get(s)||new Map;c&&x.isNumber(c[0])&&x.isNumber(c[1])&&l+this.expirationTime>i?u.set(a.memberId,{x:c[0],y:c[1],roomMember:a,timestamp:l,type:1,workState:h}):u.delete(a.memberId),u.size?this.cursorInfoMap.set(s,u):this.cursorInfoMap.delete(s),this.animationDrawWorkers.delete(t)}const e=new Set;for(const[t,n]of this.cursorInfoMap.entries())if(n)for(const[r,s]of n.entries())s.type===1&&s.workState!==D.Done&&e.add(r);else this.cursorInfoMap.delete(t);for(const[t,n]of this.willConsumeEventWorkers.entries()){const r=this.roomMember.getRoomMember(t);if(x.isNumber(r==null?void 0:r.memberId)&&!e.has(r.memberId)){const s=n.pop();s?this.animationEventWorkers.set(t,s):this.willConsumeEventWorkers.delete(t)}}for(const[t,n]of this.animationEventWorkers.entries()){const r=this.roomMember.getRoomMember(t);if(!r){this.animationEventWorkers.delete(t);continue}const{viewId:s,consumPoint:a,timestamp:c}=n,l=this.cursorInfoMap.get(s)||new Map;a&&x.isNumber(a[0])&&x.isNumber(a[1])&&c+this.expirationTime>i?l.set(r.memberId,{x:a[0],y:a[1],roomMember:r,timestamp:c,type:0}):l.delete(r.memberId),l.size?this.cursorInfoMap.set(s,l):this.cursorInfoMap.delete(s),this.animationEventWorkers.delete(t)}for(const t of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(t)||(this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([ee.Cursor,t],[]));for(const[t,n]of this.cursorInfoMap.entries())if(n!=null&&n.size){const r=[];for(const[a,c]of n.entries()){const{timestamp:l,...h}=c;l+this.expirationTime>i?r.push(h):(n.delete(a),n.size===0&&(this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([ee.Cursor,t],[])))}const s=this.doneRenderCursorInfoMap.get(t);x.isEqual(s,r)||(this.doneRenderCursorInfoMap.set(t,r),this.internalMsgEmitter.emit([ee.Cursor,t],r))}else this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([ee.Cursor,t],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(i,e){if(this.displayer&&F.isRoom(this.displayer)){const t=x.isNumber(i[0])&&x.isNumber(i[1])&&this.control.viewContainerManager.transformToScenePoint(i,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:t,viewId:e}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var i;this.displayer&&F.isRoom(this.displayer)&&this.displayer.isWritable&&this.displayer.dispatchMagixEvent(this.eventName,{type:jt.Cursor,op:x.cloneDeep(this.willSendEventWorkers),uid:(i=this.control.collector)==null?void 0:i.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(i){var s;if(!this.isEnableCursor&&!this.control.renderControl.isWritable)return;const{op:e,uid:t,workState:n,viewId:r}=i;if(t&&e&&n&&r){const a=this.roomMember.getRoomMember(t);if(!a||t===((s=this.control.collector)==null?void 0:s.uid))return;const c=this.getKey(t,r);let l=[void 0,void 0];if(x.isNumber(e[0])&&x.isNumber(e[1])){const[u,M]=this.control.viewContainerManager.transformToOriginPoint(e,r);l=[u,M]}if(n===D.Start){for(const u of this.cursorInfoMap.values())if(u!=null&&u.size)for(const M of u.keys())M===a.memberId&&u.delete(M)}const h={consumPoint:l,workState:n,viewId:r,timestamp:this.control.worker.now};if(n===D.Start||n===D.Done){const u=this.willConsumeEventWorkers.get(t);n===D.Start&&u&&this.willConsumeEventWorkers.delete(t),u&&n===D.Done&&(h.timestamp=h.timestamp-this.expirationTime)}this.animationDrawWorkers.set(c,h),this.runAnimation()}}unabled(){var i;this.displayer&&F.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:jt.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(i=this.control.collector)==null?void 0:i.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)),this.isEnableCursor||this.stopAnimation()}clearViewCursor(i){var e,t,n;for(const[r]of this.animationDrawWorkers.entries()){const{uid:s}=this.getUidAndviewId(r);s===((e=this.control.collector)==null?void 0:e.uid)&&i===i&&this.animationDrawWorkers.delete(r)}for(const[r]of this.willConsumeEventWorkers.entries())r===((t=this.control.collector)==null?void 0:t.uid)&&this.willConsumeEventWorkers.delete(r);for(const[r]of this.animationEventWorkers.entries())r===((n=this.control.collector)==null?void 0:n.uid)&&this.animationEventWorkers.delete(r);for(const[r]of this.cursorInfoMap.entries())r===r&&(this.cursorInfoMap.delete(r),this.doneRenderCursorInfoMap.delete(r),this.internalMsgEmitter.emit([ee.Cursor,r],[]))}stopAnimation(){this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.cursorInfoMap.clear()}destroy(){var i;(i=this.displayer)==null||i.removeMagixEventListener(this.eventName),this.stopAnimation()}}class Re{constructor(){m(this,"useEmtMsg");m(this,"emtType");m(this,"control");m(this,"mainEngine");m(this,"collectListener",(i,e)=>{this.collect(i,e)})}static dispatch(i,e,t){var n;(n=ve.InternalMsgEmitter)==null||n.emit([i,e],t)}get serviceColloctor(){return this.control.collector}registerForMainEngine(i,e){return this.emtType=i,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collectListener),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collectListener)}collectForLocalWorker(i,e){var t,n,r;for(const[s,a]of i)(t=this.mainEngine)==null||t.queryTaskBatchData(a).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(n=this.mainEngine)==null||n.taskBatchData.add(s);if(e){this.mainEngine.consume();return}(r=this.mainEngine)==null||r.runAnimation()}collectForServiceWorker(i){Ge(()=>{i.forEach(e=>{var t;(t=this.serviceColloctor)==null||t.dispatch(e)})},this.mainEngine.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback"))}pause(){var i;if(this.lastEmtData){this.useEmtMsg=!0;const e={...this.lastEmtData,workState:D.Done};this.collect(e,!0),(i=ve.InternalMsgEmitter)==null||i.emit(W.ActiveMethod,!1)}}recover(){var i;this.useEmtMsg&&ve.InternalMsgEmitter.hasListeners(W.ActiveMethod)&&((i=ve.InternalMsgEmitter)==null||i.emit(W.ActiveMethod,!0))}}class Ff extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.CopyNode)}collect(e){var c;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,n);for(const l of t){const h=l.toString(),M=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(l):h,y=(c=this.serviceColloctor.getStorageData(n,s))==null?void 0:c[M];if(y){if(l===Z){const g=y&&this.copySelector({viewId:n,store:y});g&&this.pasteSelector({...g,viewId:n,scenePath:s,undoTickerId:a});break}if(y.toolsType===T.Text&&y.opt&&y.opt.workState&&y.opt.workState!==D.Done){const g=y&&this.copyText({viewId:n,store:y});g&&this.pasteText({...g,viewId:n,scenePath:s,key:M,store:y,undoTickerId:a});break}}}}copyText(e){const{viewId:t,store:n}=e,r=this.control.viewContainerManager.getView(t);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],c=n.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 w,p;const{bgCenter:t,textCenter:n,store:r,key:s,viewId:a,scenePath:c,undoTickerId:l}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const u=Math.floor(Math.random()*30+1),M=((w=h.cameraOpt)==null?void 0:w.scale)||1,y=t&&n&&[t[0]-n[0]+u,t[1]-n[1]+u]||[u/M,u/M],I=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+l;if(r.toolsType===T.Text&&r.opt){const f=r.opt;if(f&&f.boxPoint&&f.text){f.workState=D.Done;const N=f.boxPoint;f.boxPoint=[Math.round(N[0]+y[0]),Math.round(N[1]+y[1])],f.workState=D.Done;const S=this.control.viewContainerManager.transformToOriginPoint(f.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:I,x:S[0],y:S[1],opt:f,scale:((p=h.cameraOpt)==null?void 0:p.scale)||1,type:We.Text,isActive:!1,viewId:a,scenePath:c}),this.collectForServiceWorker([{...r,opt:f,type:U.FullWork,workId:I,viewId:a,scenePath:c}])}}}copySelector(e){var I,w,p,f,N,S,v,j,C;const{viewId:t,store:n}=e,r=this.control.viewContainerManager.getView(t),s=n.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((I=r.cameraOpt)==null?void 0:I.centerX)||0,centerY:((w=r.cameraOpt)==null?void 0:w.centerY)||0,scale:((p=r.cameraOpt)==null?void 0:p.scale)||1}},l=this.control.hasOffscreenCanvas&&((f=r.displayer.canvasBgRef.current)==null?void 0:f.getBoundingClientRect())||((N=r.displayer.canvasContainerRef.current)==null?void 0:N.getBoundingClientRect()),h=(v=(S=r.displayer)==null?void 0:S.floatBarRef.current)==null?void 0:v.getBoundingClientRect(),u=l&&[l.x+l.width/2,l.y+l.height/2],M=h&&[h.x+h.width/2,h.y+h.height/2],y=u&&r.viewData&&r.viewData.convertToPointInWorld({x:u[0],y:u[1]}),g=M&&r.viewData&&r.viewData.convertToPointInWorld({x:M[0],y:M[1]});y&&g&&(c.offset={x:y.x-g.x,y:y.y-g.y});for(const k of s){const P=(C=(j=this.serviceColloctor)==null?void 0:j.getStorageData(r.id,r.focusScenePath))==null?void 0:C[k];P&&a.set(k,P)}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var w,p,f,N;const{copyStores:t,copyCoordInfo:n,viewId:r,scenePath:s,undoTickerId:a}=e,c=this.control.viewContainerManager.getView(r);if(!t.size||!this.serviceColloctor||!c)return;const{offset:l,cameraOpt:h}=n,{scale:u}=h,M=Math.floor(Math.random()*30+1),y=l&&[l.x+M,l.y+M]||[M/u,M/u],g=[],I=[];for(const[S,v]of t.entries()){const C=(this.serviceColloctor.isLocalId(S)?S:this.serviceColloctor.getLocalId(S.toString()))+"-"+a,k={useAnimation:!1};if(v.toolsType===T.Text&&v.opt){const P=v.opt;if(P&&P.boxPoint&&P.text){P.workState=D.Done;const L=P.boxPoint;P.boxPoint=[Math.round(L[0]+y[0]),Math.round(L[1]+y[1])],P.workState=D.Done;const O=this.control.viewContainerManager.transformToOriginPoint(P.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:C,x:O[0],y:O[1],opt:P,scale:((w=c.cameraOpt)==null?void 0:w.scale)||1,type:We.Text,isActive:!1,viewId:r,scenePath:s})}I.push({...v,opt:P,type:U.FullWork,workId:C,viewId:r,scenePath:s});continue}if(v.toolsType===T.Image&&(v.opt.uuid=C,v.opt.centerX=v.opt.centerX+y[0],v.opt.centerY=v.opt.centerY+y[1]),v.ops){const P=ei(v.ops).map((O,A)=>{const R=A%3;return R===0?O+y[0]:R===1?O+y[1]:O}),L=At(P);v.ops=L}if((p=v==null?void 0:v.opt)!=null&&p.eraserlines&&(f=v==null?void 0:v.opt)!=null&&f.eraserlines.length)for(const P of(N=v==null?void 0:v.opt)==null?void 0:N.eraserlines){const{op:L}=P;for(let O=0;O<L.length;O++){const A=L[O].map((R,z)=>z%2?R+y[1]:R+y[0]);P.op[O]=A}}I.push({...v,updateNodeOpt:k,type:U.FullWork,workId:C,viewId:r,scenePath:s}),g.push([{...v,updateNodeOpt:k,workId:C,msgType:U.FullWork,dataType:K.Local,emitEventType:W.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(r)},{workId:C,msgType:U.FullWork,emitEventType:W.CopyNode}])}g.length&&this.collectForLocalWorker(g),I.length&&this.collectForServiceWorker(I)}}class Qf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetColorNode);m(this,"undoTickerId")}setTextColor(e,t,n,r){const{fontColor:s,fontBgColor:a}=n;t.opt&&(s&&(t.opt.fontColor=s),a&&(t.opt.fontBgColor=a),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:t.opt,viewId:r,canSync:!0,canWorker:!0}))}collect(e){var f,N;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,strokeColor:n,fillColor:r,fontColor:s,fontBgColor:a,viewId:c,workState:l,thickness:h,strokeType:u}=e,M=this.control.viewContainerManager.getView(c);if(!(M!=null&&M.displayer))return;const y=M.focusScenePath,g=[...t],I=this.serviceColloctor.storage,w=[],p={};for((l===D.Start||!this.undoTickerId&&l===D.Done)&&(this.undoTickerId=this.mainEngine.now,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,c));g.length;){const S=g.pop();if(!S)continue;const v=S.toString(),j=this.serviceColloctor.isLocalId(v),C=j?this.serviceColloctor.transformKey(S):v;let k=v;!j&&this.serviceColloctor.isOwn(k)&&(k=this.serviceColloctor.getLocalId(k));const P=(N=(f=I==null?void 0:I[c])==null?void 0:f[y])==null?void 0:N[C];if(P){const L=P.updateNodeOpt||{};if(s||a){if(s){L.fontColor=s;const[A,R,z,V]=St(s);p.textColor=[A,R,z],p.textOpacity=V}if(a)if(L.fontBgColor=Rt(a)?"transparent":a,Rt(a))p.textBgColor=void 0,p.textBgOpacity=void 0;else{const[A,R,z,V]=St(a);p.textBgColor=[A,R,z],p.textBgOpacity=V}if(P.toolsType===T.Text&&P.opt&&l!==D.Start){this.setTextColor(k,Et(P),L,c),l===D.Done&&(this.undoTickerId=void 0);continue}}if(n){L.strokeColor=n;const[A,R,z,V]=St(n);p.strokeColor=[A,R,z],p.strokeOpacity=V}if(r)if(L.fillColor=Rt(r)?"transparent":r,Rt(r))p.fillColor=void 0,p.fillOpacity=void 0;else{const[A,R,z,V]=St(r);p.fillColor=[A,R,z],p.fillOpacity=V}h&&(L.thickness=h,p.strokeWidth=h),u&&(L.strokeType=u,p.strokeType=u);const O={workId:k,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:L,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c,needUndoTicker:l===D.Done&&this.control.viewContainerManager.getUndoTickerId(c)||void 0};w.push([O,{workId:k,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}}w.length&&(l===D.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(w)),Object.keys(p).length&&setTimeout(()=>{var S;(S=this.control.room)==null||S.setMemberState(p)},0)}}class Vf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.ZIndexNode);m(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.min)||0}getMaxZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.max)||0}setMaxZIndex(e,t){const n=this.getMinZIndex(t);this.zIndexMap.set(t,{min:n,max:e})}setMinZIndex(e,t){const n=this.getMaxZIndex(t);this.zIndexMap.set(t,{min:e,max:n})}addMaxLayer(e){const t=this.getMaxZIndex(e)+1;this.setMaxZIndex(t,e)}addMinLayer(e){const t=this.getMinZIndex(e)-1;this.setMinZIndex(t,e)}correct(e){const t=e.sort((n,r)=>n[1]-r[1]);for(let n=1;n<t.length;n++){const r=t[n][1],s=t[n-1][1];r<=s&&(t[n][1]=s+1)}return t}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,layer:n,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...t],l=this.serviceColloctor.storage,h=[],u=[];for(;c.length;){const y=c.pop();if(!y)continue;const g=y.toString(),I=this.serviceColloctor.isLocalId(g),w=I?this.serviceColloctor.transformKey(y):g;let p=g;!I&&this.serviceColloctor.isOwn(p)&&(p=this.serviceColloctor.getLocalId(p));const f=Et(l[r][a][w]);let N;if(f&&p===Z){if(f.selectIds){u.push(...f.selectIds),u.sort((C,k)=>{var O,A,R,z;const P=((A=(O=l[M(C,this.serviceColloctor)])==null?void 0:O.opt)==null?void 0:A.zIndex)||0,L=((z=(R=l[M(C,this.serviceColloctor)])==null?void 0:R.opt)==null?void 0:z.zIndex)||0;return P>L?1:C<k?-1:0});const S=f.updateNodeOpt||{};S.zIndexLayer=n;const v={workId:y,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:S,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},j=new Map;n===zt.Top?(this.addMaxLayer(r),N=this.getMaxZIndex(r)):(this.addMinLayer(r),N=this.getMinZIndex(r)),u.forEach(C=>{var O,A,R,z,V;const k=(O=this.serviceColloctor)==null?void 0:O.isLocalId(C);let P=k&&((A=this.serviceColloctor)==null?void 0:A.transformKey(C))||C;const L=(z=(R=l==null?void 0:l[r])==null?void 0:R[a])==null?void 0:z[P];L&&(!k&&((V=this.serviceColloctor)!=null&&V.isOwn(P))&&(P=this.serviceColloctor.getLocalId(P)),S.zIndex=N,L!=null&&L.opt&&(L.opt.zIndex=N),L!=null&&L.opt&&j.set(P,{updateNodeOpt:L.updateNodeOpt,opt:L.opt}))}),v.selectStore=j,v.willSerializeData=!0,h.push([v,{workId:y,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&this.collectForLocalWorker(h);function M(y,g){return g.isLocalId(y)&&g.transformKey(y)||y}}}class Zf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.TranslateNode);m(this,"cachePosition")}collect(e,t){var g,I,w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,position:r,workState:s,viewId:a}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,h=[...n],u=(g=this.serviceColloctor)==null?void 0:g.storage,M=[],y=s===D.Start&&this.mainEngine.now||void 0;for(y&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",y,a);h.length;){const p=h.pop();if(!p)continue;const f=p.toString(),N=this.serviceColloctor.isLocalId(f),S=N&&this.serviceColloctor.transformKey(p)||f;let v=f;!N&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const j=(w=(I=u==null?void 0:u[a])==null?void 0:I[l])==null?void 0:w[S];if(j&&v===Z){if(j.selectIds){const C=this.control.viewContainerManager.transformToScenePoint([r.x,r.y],a);if(s===D.Start&&(this.cachePosition=C),this.cachePosition){const k=j.updateNodeOpt||{};k.translate=[C[0]-this.cachePosition[0],C[1]-this.cachePosition[1]],k.workState=s,this.control.cursor.isEnableCursor?k.useAnimation=!1:(k.uid=this.serviceColloctor.uid,s===D.Start?k.useAnimation=!1:s===D.Done&&(k.useAnimation=!0));const P={workId:p,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a,smoothSync:this.mainEngine.smoothSync};s===D.Done&&(P.textUpdateForWoker=!0,P.willSerializeData=!0,this.cachePosition=void 0,P.needUndoTicker=this.control.viewContainerManager.getUndoTickerId(a)),M.push([P,{workId:p,msgType:U.UpdateNode,emitEventType:this.emitEventType,workState:s}])}}continue}}s===D.Start?this.mainEngine.unWritable():s===D.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),M.length&&this.collectForLocalWorker(M,t)}}class Hf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.DeleteNode)}collect(e){var M,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,c=[...t],l=[],h=[],u=this.mainEngine.now;for(;c.length;){const g=c.pop();if(!g)continue;const I=g.toString(),w=this.serviceColloctor.isLocalId(I),p=w?this.serviceColloctor.transformKey(g):I,f=(y=(M=a==null?void 0:a[n])==null?void 0:M[s])==null?void 0:y[p];if(f){let N=I;if(!w&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N)),f.toolsType===T.Text){this.control.textEditorManager.delete(N,!0,!0);continue}h.push(N)}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,n),l.push([{msgType:U.RemoveNode,emitEventType:W.DeleteNode,removeIds:h,dataType:K.Local,willSyncService:!0,willRefresh:!0,viewId:n,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)},void 0]),this.collectForLocalWorker(l))}}class $f extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.ScaleNode);m(this,"targetText",new Map);m(this,"cacheTextInfo",new Map)}async setTextStyle(e,t,n){const r=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t,viewId:n,canSync:!1,canWorker:!1});return{key:e,textInfo:r}}async collect(e,t){var f,N,S,v,j,C,k;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,workState:r,viewId:s,originPoint:a,scenePoint:c,dir:l,scale:h,translate:u}=e;this.lastEmtData=e;const M=this.control.viewContainerManager.getView(s);if(!(M!=null&&M.displayer))return;const y=M.focusScenePath,g=[...n],I=(f=this.serviceColloctor)==null?void 0:f.storage,w=[],p=r===D.Start&&this.mainEngine.now||void 0;for(p&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",p,s);g.length;){const P=g.pop();if(!P)continue;const L=P.toString(),O=this.serviceColloctor.isLocalId(L),A=O&&this.serviceColloctor.transformKey(P)||L;let R=L;!O&&this.serviceColloctor.isOwn(R)&&(R=this.serviceColloctor.getLocalId(R));const z=(S=(N=I==null?void 0:I[s])==null?void 0:N[y])==null?void 0:S[A];if(z&&R===Z&&z.selectIds){const V=z.updateNodeOpt||{};if(V.dir=l,V.originPoint=a,V.scenePoint=c,V.workState=r,V.scale=h,V.translate=u,r===D.Start){this.cacheTextInfo.clear();for(const B of z.selectIds){const J=(v=this.serviceColloctor)==null?void 0:v.isLocalId(B),ie=J&&((j=this.serviceColloctor)==null?void 0:j.transformKey(B))||B;let re=ie;!J&&((C=this.serviceColloctor)!=null&&C.isOwn(ie))&&(re=this.serviceColloctor.getLocalId(ie));const ne=this.control.textEditorManager.get(re);ne&&r===D.Start&&this.targetText.set(re,Et(ne))}}if(this.targetText.size&&r!==D.Start&&h){const B=[];for(const[ie,re]of this.targetText.entries()){const{opt:ne}=re,q=Math.floor(ne.fontSize*h[0]),$=this.cacheTextInfo.get(ie),ue=!$&&ne.fontSize!==q||$&&$.fontSize!==q||!1,Fe=(k=this.control.textEditorManager.get(ie))==null?void 0:k.opt;if(ue&&Fe&&ne.boxSize&&ne.boxPoint){const Qe=this.setTextStyle(ie,{...Fe,fontSize:q},s);B.push(Qe)}}const J=await Promise.all(B);for(const ie of J)if(ie){const{key:re,textInfo:ne}=ie;this.cacheTextInfo.set(re,{fontSize:ne.opt.fontSize,boxSize:ne.opt.boxSize,boxPoint:ne.opt.boxPoint})}V.textInfos=this.cacheTextInfo}this.control.cursor.isEnableCursor?V.useAnimation=!1:(V.uid=this.serviceColloctor.uid,r===D.Start?V.useAnimation=!1:r===D.Done&&(V.useAnimation=!0));const _={workId:P,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:V,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s,smoothSync:this.mainEngine.smoothSync};r===D.Done&&(_.willSerializeData=!0,this.targetText.clear(),_.needUndoTicker=this.control.viewContainerManager.getUndoTickerId(s)),w.push([_,{workId:P,msgType:U.UpdateNode,emitEventType:this.emitEventType,workState:r}]);continue}}r===D.Start?this.mainEngine.unWritable():r===D.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),w.length&&this.collectForLocalWorker(w,t)}}class Gf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.RotateNode);m(this,"cacheOriginRotate",0)}collect(e,t){var g,I,w,p,f,N,S;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,angle:r,workState:s,viewId:a}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,h=[...n],u=(g=this.serviceColloctor)==null?void 0:g.storage,M=[],y=s===D.Start&&this.mainEngine.now||void 0;for(y&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",y,a);h.length;){const v=h.pop();if(!v)continue;const j=v.toString(),C=this.serviceColloctor.isLocalId(j),k=C&&this.serviceColloctor.transformKey(v)||j;let P=j;!C&&this.serviceColloctor.isOwn(P)&&(P=this.serviceColloctor.getLocalId(P));const L=(w=(I=u==null?void 0:u[a])==null?void 0:I[l])==null?void 0:w[k];if(L&&P===Z){if(((p=L.selectIds)==null?void 0:p.length)===1){const O=L.selectIds[0];if(s===D.Start){const V=((f=this.serviceColloctor)==null?void 0:f.isLocalId(O))&&((N=this.serviceColloctor)==null?void 0:N.transformKey(O))||O,_=u[a][l][V];this.cacheOriginRotate=((S=_==null?void 0:_.opt)==null?void 0:S.rotate)||0}const A=L.updateNodeOpt||{};A.angle=(r+this.cacheOriginRotate)%360,A.workState=s,this.control.cursor.isEnableCursor?A.useAnimation=!1:(A.uid=this.serviceColloctor.uid,s===D.Start?A.useAnimation=!1:s===D.Done&&(A.useAnimation=!0));const R={workId:v,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:A,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a,smoothSync:this.mainEngine.smoothSync};s===D.Done&&(R.willRefreshSelector=!0,R.willSerializeData=!0,this.cacheOriginRotate=0,R.needUndoTicker=this.control.viewContainerManager.getUndoTickerId(a)),M.push([R,{workId:v,msgType:U.UpdateNode,emitEventType:this.emitEventType,workState:s}])}continue}}s===D.Start?this.mainEngine.unWritable():s===D.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),M.length&&this.collectForLocalWorker(M,t)}}function Jf(o){switch(o){case T.Text:return We.Text;case T.SpeechBalloon:case T.Star:case T.Ellipse:case T.Rectangle:case T.Triangle:case T.Rhombus:case T.Polygon:return We.Shape}}class qf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetFontStyle);m(this,"timerId")}async setTextStyle(e,t,n,r){const{bold:s,underline:a,lineThrough:c,italic:l,fontSize:h}=n;if(t.toolsType&&Jf(t.toolsType)===We.Text){t.opt&&(s&&(t.opt.bold=s),x.isBoolean(a)&&(t.opt.underline=a),x.isBoolean(c)&&(t.opt.lineThrough=c),l&&(t.opt.italic=l),h&&(t.opt.fontSize=h));const M=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t.opt,viewId:r,canSync:!1,canWorker:!1});return{key:e,textInfo:M}}}async collect(e){var f,N,S,v,j,C;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,bold:n,italic:r,lineThrough:s,underline:a,viewId:c,fontSize:l}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const u=h.focusScenePath,M=[...t],y=this.serviceColloctor.storage,g={},I=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",I,c),this.control.textEditorManager.UndoTickerId=I;const w=[];for(;M.length;){const k=M.pop();if(!k)continue;const P=k.toString(),L=this.serviceColloctor.isLocalId(P),O=L?this.serviceColloctor.transformKey(k):P;let A=P;!L&&this.serviceColloctor.isOwn(A)&&(A=this.serviceColloctor.getLocalId(A));const R=(N=(f=y==null?void 0:y[c])==null?void 0:f[u])==null?void 0:N[O];if(R){const z=R.updateNodeOpt||{};if(n&&(z.bold=n,g.bold=n==="bold"),r&&(z.italic=r,g.italic=r==="italic"),x.isBoolean(s)&&(z.lineThrough=s,g.lineThrough=s),x.isBoolean(a)&&(z.underline=a,g.underline=a),l&&(z.fontSize=l,g.textSize=l),R.toolsType===T.Text&&R.opt){const V=this.setTextStyle(A,x.cloneDeep(R),z,c);w.push(V);continue}if(R&&A===Z&&((S=R.selectIds)!=null&&S.length))for(const V of R.selectIds){const _=(v=this.serviceColloctor)==null?void 0:v.isLocalId(V);let B=_&&((j=this.serviceColloctor)==null?void 0:j.transformKey(V))||V;const J=y[c][u][B]||void 0;if(!_&&((C=this.serviceColloctor)!=null&&C.isOwn(B))&&(B=this.serviceColloctor.getLocalId(B)),J&&J.toolsType===T.Text&&R.opt){const ie=this.setTextStyle(B,x.cloneDeep(J),z,c);w.push(ie);continue}}}}const p=await Promise.all(w);for(const k of p)if(k){const{key:P,textInfo:L}=k;L&&(L.canSync=!0,L.canWorker=!0,this.control.textEditorManager.updateForViewEdited(P,L))}Object.keys(g).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var k;this.timerId=void 0,(k=this.control.room)==null||k.setMemberState(g)},0))}}class Xf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetPoint);m(this,"undoTickerId")}collect(e){var f,N,S;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:t,pointMap:n,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=(f=this.serviceColloctor)==null?void 0:f.storage,h=[],u=r===D.Start&&this.mainEngine.now||void 0;u&&(this.undoTickerId=u,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,s));const M=t;if(!M)return;const y=M.toString(),g=this.serviceColloctor.isLocalId(y),I=g&&this.serviceColloctor.transformKey(M)||y;let w=y;!g&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const p=(S=(N=l==null?void 0:l[s])==null?void 0:N[c])==null?void 0:S[I];if(p&&w===Z&&p.selectIds){const v=p.updateNodeOpt||{};v.pointMap=n,v.workState=r;const j={workId:M,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:v,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s,needUndoTicker:r===D.Done&&this.control.viewContainerManager.getUndoTickerId(s)||void 0};r===D.Done&&(j.undoTickerId=this.undoTickerId),h.push([j,{workId:M,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}r===D.Start?this.mainEngine.unWritable():r===D.Done&&this.mainEngine.abled(),h.length&&this.collectForLocalWorker(h)}}class Kf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetLock)}collect(e){var M,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,isLocked:n,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...t],l=this.serviceColloctor.storage,h=[],u=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,r);c.length;){const g=c.pop();if(!g)continue;const I=g.toString(),w=this.serviceColloctor.isLocalId(I),p=w?this.serviceColloctor.transformKey(g):I;let f=I;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const N=(y=(M=l==null?void 0:l[r])==null?void 0:M[a])==null?void 0:y[p];if(N){const S=N.updateNodeOpt||{};S.isLocked=n;const v={workId:f,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:S,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(r)};h.push([v,{workId:f,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}}h.length&&this.collectForLocalWorker(h)}}class _f extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetShapeOpt)}collect(e){var M,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n,...r}=e,s=this.control.viewContainerManager.getView(n);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...t],l=this.serviceColloctor.storage,h=[],u=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,n);c.length;){const g=c.pop();if(!g)continue;const I=g.toString(),w=this.serviceColloctor.isLocalId(I),p=w?this.serviceColloctor.transformKey(g):I;let f=I;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const N=(y=(M=l==null?void 0:l[n])==null?void 0:M[a])==null?void 0:y[p];if(N){const S={...N.updateNodeOpt,...r,willRefresh:!0};if(N&&f===Z){const v={workId:f,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:S,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:n,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)};h.push([v,{workId:f,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&this.collectForLocalWorker(h)}}class oe{constructor(i){m(this,"builders",new Map);this.builders=new Map(i.map(e=>[e,this.build(e)]))}build(i){switch(i){case W.TranslateNode:return new Zf;case W.ZIndexNode:return new Vf;case W.CopyNode:return new Ff;case W.SetColorNode:return new Qf;case W.DeleteNode:return new Hf;case W.ScaleNode:return new $f;case W.RotateNode:return new Gf;case W.SetFontStyle:return new qf;case W.SetPoint:return new Xf;case W.SetLock:return new Kf;case W.SetShapeOpt:return new _f}}getBuilder(i){return this.builders.get(i)}registerForMainEngine(i,e){return this.builders.forEach(t=>{t&&t.registerForMainEngine(i,e)}),this}destroy(){this.builders.forEach(i=>{i&&i.destroy()}),this.builders.clear()}pause(){return this.builders.forEach(i=>{i&&i.pause()}),this}recover(){return this.builders.forEach(i=>{i&&i.recover()}),this}static emitMethod(i,e,t){Re.dispatch(i,e,t)}static activeListener(i){ve.InternalMsgEmitter.on(W.ActiveMethod,i)}static unmountActiveListener(i){ve.InternalMsgEmitter.off(W.ActiveMethod,i)}}const ep=async(o,i)=>{const{src:e,isgl:t,isCache:n}=o;if(typeof Image=="function"){const r=new Image;return typeof e=="string"&&(r.crossOrigin="anonymous"),new Promise(s=>{r.onload=function(){createImageBitmap(r,{imageOrientation:t?"flipY":"none"}).then(a=>{s(a)})},r.onerror=function(){s(void 0)},r.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(r=>r.blob()).then(r=>createImageBitmap(r,{imageOrientation:t?"flipY":"none"}).then(s=>s))},ct=class ct{constructor(){m(this,"fontDB");m(this,"FONT_DB_NAME","__APPLIANCE_PLUGIN_FONT_DB");m(this,"FONT_STORE_NAME","fonts");m(this,"FONT_DB_VERSION",1)}static getInstance(){return ct.instance||(ct.instance=new ct),ct.instance}async initFontDB(){return this.fontDB?this.fontDB:new Promise((i,e)=>{const t=indexedDB.open(this.FONT_DB_NAME,this.FONT_DB_VERSION);t.onerror=()=>{e(new Error(`Failed to open font database: ${t.error}`))},t.onsuccess=()=>{this.fontDB=t.result,i(t.result)},t.onupgradeneeded=n=>{const r=n.target.result;r.objectStoreNames.contains(this.FONT_STORE_NAME)||r.createObjectStore(this.FONT_STORE_NAME,{keyPath:"fontFamily"}).createIndex("url","url",{unique:!1})}})}async getFontFromDB(i){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((e,t)=>{const s=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).get(i);s.onsuccess=()=>{s.result&&s.result.buffer?e(s.result.buffer):e(null)},s.onerror=()=>{t(s.error)}})}catch(e){return console.error(`Failed to get font from database for ${i}:`,e),null}}async saveFontToDB(i,e,t){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((n,r)=>{const a=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME),c={fontFamily:i,url:e,buffer:t,timestamp:Date.now()},l=a.put(c);l.onsuccess=()=>{n(!0)},l.onerror=()=>{r(l.error)}})}catch(n){return console.error(`Failed to save font to database for ${i}:`,n),!1}}async clearFontCache(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((i,e)=>{const r=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME).clear();r.onsuccess=()=>{console.log("Font cache cleared successfully"),i(!0)},r.onerror=()=>{e(r.error)}})}catch(i){return console.error("Failed to clear font cache:",i),!1}}async getFontCacheStatus(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((i,e)=>{const r=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).getAll();r.onsuccess=()=>{const s=r.result||[],a=s.reduce((c,l)=>c+(l.buffer?l.buffer.byteLength:0),0);i({count:s.length,totalSize:a})},r.onerror=()=>{e(r.error)}})}catch(i){return console.error("Failed to get font cache status:",i),{count:0,totalSize:0}}}};m(ct,"instance");let Ii=ct;class tp{get now(){var i;return((i=this.control.room)==null?void 0:i.calibrationTimestamp)||Date.now()}get newWorkId(){return this.now.toString()}setCurrentToolsData(i){this.currentToolsData=i}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(i){this.currentLocalWorkData=i}getWorkId(){return this.currentLocalWorkData.workId}get workState(){return this.currentLocalWorkData.workState}}class ip extends tp{constructor(e){super();m(this,"maxLastSyncTime",we.syncOpt.interval);m(this,"combineUnitTime",we.bezier.combineUnitTime);m(this,"maxCombineEraserTime",we.pencilEraser.maxCombineTime);m(this,"smoothSync",we.syncOpt.smoothSync);m(this,"isActive",!1);m(this,"currentToolsData");m(this,"currentLocalWorkData");m(this,"control");m(this,"internalMsgEmitter");m(this,"publicMsgEmitter");m(this,"taskBatchData",new Set);m(this,"fullWorker");m(this,"subWorker");m(this,"fullWorkerUrl");m(this,"subWorkerUrl");m(this,"methodBuilder");m(this,"zIndexNodeMethod");m(this,"subWorkerDrawCount",0);m(this,"fullWorkerDrawCount",0);m(this,"maxDrawCount",0);m(this,"_consumeCount",0);m(this,"_postCount",0);m(this,"reRenders",new Map);m(this,"localWorkViewId");m(this,"localPointsBatchData",new Map);m(this,"tasksqueue",new Map);m(this,"useTasksqueue",!1);m(this,"useTasksClockId");m(this,"mainTasksqueueCount");m(this,"workerTasksqueueCount");m(this,"snapshotMap",new Map);m(this,"boundingRectMap",new Map);m(this,"clearAllResolveMap",new Map);m(this,"delayWorkStateToDoneResolve");m(this,"animationId");m(this,"tmpImageConfigMap",new Map);m(this,"mainThread");m(this,"willSelectorWorkId");m(this,"isLockSentEventCursor",!1);m(this,"getVNodeInfoResolveMap",new Map);m(this,"setFontFacesResolve",{});m(this,"isLocalWorkActive",!1);m(this,"indexDBUtils",Ii.getInstance());const{control:t,internalMsgEmitter:n,publicMsgEmitter:r}=e;this.control=t,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.combineUnitTime=this.control.pluginOptions.extras.bezier.combineUnitTime||this.combineUnitTime,this.smoothSync=x.isBoolean(this.control.pluginOptions.extras.syncOpt.smoothSync)?this.control.pluginOptions.extras.syncOpt.smoothSync:this.smoothSync,this.maxCombineEraserTime=this.control.pluginOptions.extras.pencilEraser.maxCombineTime||this.maxCombineEraserTime,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl||"",this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl||"",this.internalMsgEmitter=n,this.publicMsgEmitter=r,this.currentLocalWorkData={workState:D.Pending}}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}destroy(){var e,t,n;(e=this.methodBuilder)==null||e.destroy(),this.unWritable(),this.taskBatchData.clear(),this.tasksqueue.clear(),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.isActive=!1,this.clearAllResolveMap.clear(),this.snapshotMap.clear(),this.boundingRectMap.clear(),(t=this.fullWorker)==null||t.terminate(),(n=this.subWorker)==null||n.terminate()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}get postCount(){return this._postCount}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.PencilEraser||e===T.BitMapEraser||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Selector}get isCanDrawWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.BitMapEraser||e===T.PencilEraser}get isUseZIndex(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanRecordUndoRedo(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanSentCursor(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Text||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser||e===T.Selector}get isPostCountType(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser||e===T.Selector}get isCanPostDraw(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.PencilEraser||e===T.BitMapEraser}get isCanStartEventConsum(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Selector||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}async init(){this.destroy(),await this.on(),this.internalMsgEmitterListener(),this.isActive=!0}async useMainThread(){console.info("no OffscreenCanvas"),this.control.hasExtendFontFaces&&await document.fonts.ready.then(()=>{this.control.room&&this.control.room.logger.info("set font faces in main thread success")});const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-D6tJMnFK.js"));this.mainThread=new e(this)}async on(){if(!this.control.hasOffscreenCanvas){await this.useMainThread();return}if(!this.fullWorkerUrl||!this.subWorkerUrl){console.error("no worker url config");return}if(this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),this.control.isUseSimple||(this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"})),this.fullWorker.onmessage=e=>{if(e.data){const{render:t,sp:n,fullWorkerDrawCount:r,workerTasksqueueCount:s,viewId:a,consumeCount:c}=e.data;if(c&&(this.consumeCount=c),this.isBusy&&s&&this.setWorkerTasksqueueCount(s),n!=null&&n.length&&this.collectorSyncData(n),this.control.isUseSimple){if(this.control.isUseOffscreenTransfer)return;t&&(t!=null&&t.length)&&this.viewContainerManager.render(t);return}const l=(t==null?void 0:t.length)&&t||[];if(r&&a){if(this.fullWorkerDrawCount=r,this.fullWorkerDrawCount<1/0){const h=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(h),this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.clearReRenders(1/0);if(this.reRenders.size)for(const h of this.reRenders.values())l.push(...h)}l.length&&this.viewContainerManager.render(l)}},this.subWorker&&(this.subWorker.onmessage=e=>{if(e.data){const{render:t,sp:n,subWorkerDrawCount:r,consumeCount:s}=e.data;s&&(this.consumeCount=s),n!=null&&n.length&&this.collectorSyncData(n);const a=(t==null?void 0:t.length)&&t||[];if(x.isNumber(r)){if(this.subWorkerDrawCount=r,this.fullWorkerDrawCount<1/0){const c=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(c)}if(t!=null&&t.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const c=[];for(const l of t)l.imageBitmap&&(l.isUnClose=!0,c.push(l));this.reRenders.set(this.subWorkerDrawCount,c)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}a.length&&this.viewContainerManager.render(a)}}),this.control.hasExtendFontFaces){const e=this.control.extendFontFaces,t=[],n=[];this.control.room&&this.control.room.logger.info(`load before font faces ${JSON.stringify(e)}`),await new Promise(async r=>{this.setFontFacesResolve.resolve=r,this.setFontFacesResolve.timer=setTimeout(()=>{this.setFontFacesResolve.resolve&&(this.control.room?this.control.room.logger.error("set font faces timeout"):console.warn("set font faces timeout"),this.setFontFacesResolve.resolve(!1))},this.control.loadFontFacesTimeout);try{for(const s of e){let a;a=await this.indexDBUtils.getFontFromDB(s.fontFamily)||void 0,a||(a=await this.loadFontInMainThread(s.src),a&&a.byteLength>0&&(await this.indexDBUtils.saveFontToDB(s.fontFamily,s.src,a)||(this.control.room?this.control.room.logger.warn(`Failed to save font ${s.fontFamily} to IndexedDB, but continuing with font loading`):console.warn(`Failed to save font ${s.fontFamily} to IndexedDB, but continuing with font loading`)))),a&&a.byteLength>0?(n.push({fontFamily:s.fontFamily,buffer:a}),t.push(a)):this.control.room?this.control.room.logger.warn(`Font ${s.fontFamily} could not be loaded from any source`):console.warn(`Font ${s.fontFamily} could not be loaded from any source`)}this.control.room&&this.control.room.logger.info("load end font faces"),n.length?this.fullWorker.postMessage(new Set([{type:U.SetFontFace,fontBuffers:n}]),t):this.setFontFacesResolve.resolve(!0)}catch(s){this.setFontFacesResolve.timer&&(clearTimeout(this.setFontFacesResolve.timer),this.setFontFacesResolve.timer=void 0),this.setFontFacesResolve.resolve&&(this.setFontFacesResolve.resolve(!1),this.control.room?this.control.room.logger.error(`set font faces error: ${s}`):console.error(`set font faces error: ${s}`))}}).then(r=>{this.setFontFacesResolve.resolve=void 0,this.setFontFacesResolve.timer=void 0,this.control.room?r?this.control.room.logger.info("set font faces in web worker success"):this.control.room.logger.error("set font faces in web worker error"):r||console.error("set font faces in web worker error")})}}async clearFontCache(){return await this.indexDBUtils.clearFontCache()}async getFontCacheStatus(){return await this.indexDBUtils.getFontCacheStatus()}async loadFontInMainThread(e){try{const t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);const n=await t.arrayBuffer();if(!n||n.byteLength===0)throw new Error("Empty font data received");const r=new Uint8Array(n);if(!this.validateFontData(r))throw new Error("Invalid font data format: not a valid font file");return n}catch(t){this.control.room?this.control.room.logger.error(`Failed to load font from ${e}: ${t}`):console.error(`Failed to load font from ${e}: ${t}`);return}}validateFontData(e){return e.length<4?!1:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===50||e[0]===119&&e[1]===79&&e[2]===70&&e[3]===70||e[0]===0&&e[1]===1&&e[2]===0&&e[3]===0||e[0]===79&&e[1]===84&&e[2]===84&&e[3]===79||e.length>36&&e[36]===0&&e[37]===1&&e[38]===0&&e[39]===0}clearReRenders(e=1/0){for(const t of this.reRenders.keys())if(x.isNumber(Number(t))&&Number(t)<=e){const n=this.reRenders.get(Number(t));n==null||n.forEach(r=>{var s;(s=r.imageBitmap)==null||s.close()}),this.reRenders.delete(t)}}get isBusy(){return this.getTasksqueueState()===D.Doing}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.useTasksqueue&&D.Doing||D.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e){this.consumeCount=e}getConsumeCount(){return this.consumeCount}setWorkerTasksqueueCount(e){const t=Math.max(this.workerTasksqueueCount||0,e);this.workerTasksqueueCount=t}collectorSyncData(e){var n,r,s,a;let t=!1;for(const c of e){const{type:l,selectIds:h,opt:u,selectRect:M,strokeColor:y,fillColor:g,willSyncService:I,isSync:w,imageBitmap:p,canvasHeight:f,canvasWidth:N,rect:S,op:v,canTextEdit:j,points:C,selectorColor:k,canRotate:P,scaleType:L,textOpt:O,toolsType:A,workId:R,viewId:z,dataType:V,canLock:_,isLocked:B,shapeOpt:J,toolsTypes:ie,thickness:re,strokeType:ne,useStroke:q,isgl:$,imageSrc:ue,isSubWorker:Fe,updateNodeOpt:Qe,setFontFaceResult:ot,failedFonts:qe,reportString:Ve}=c;if(l===U.SetFontFace){ot&&this.setFontFacesResolve.resolve&&(qe&&qe.length>0&&(this.control.room?this.control.room.logger.info("set font face has failed fonts: "+qe.join(", ")):console.info("set font face has failed fonts: "+qe.join(", "))),this.setFontFacesResolve.resolve(ot));return}if(!z)return;const Ze=c.scenePath||this.viewContainerManager.getCurScenePath(z);switch(l){case U.Select:{const H=h!=null&&h.length?{...M,selectIds:h,canvasHeight:f,canvasWidth:N,points:C}:void 0;H&&(u!=null&&u.strokeColor)&&(H.selectorColor=u.strokeColor),H&&k&&(H.selectorColor=k),H&&y&&(H.strokeColor=y),H&&(u!=null&&u.fillColor)&&(H.fillColor=u.fillColor),H&&g&&(H.fillColor=g),H&&x.isBoolean(P)&&(H.canRotate=P),H&&L&&(H.scaleType=L),H&&j&&(H.canTextEdit=j),H&&O&&(H.textOpt=O),H&&x.isBoolean(_)&&(H.canLock=_),H&&x.isBoolean(B)&&(H.isLocked=B),H&&J&&(H.shapeOpt=J),H&&ie&&(H.toolsTypes=ie),H&&re&&(H.thickness=re),H&&ne&&(H.strokeType=ne),H&&x.isBoolean(q)&&(H.useStroke=q),z&&this.viewContainerManager.showFloatBar(z,!!H,H),I&&((n=this.collector)==null||n.dispatch({type:l,selectIds:h,opt:u,isSync:w,viewId:z,scenePath:Ze}));break}case U.Snapshot:if(p&&Ze){const H=this.snapshotMap.get(Ze);H&&H(p)}break;case U.BoundingBox:if(S&&Ze){const H=this.boundingRectMap.get(Ze);H&&H(S)}break;case U.Cursor:v&&this.control.cursor.collectServiceCursor({...c});break;case U.Clear:if(z){this.viewContainerManager.showFloatBar(z,!1);const H=(r=this.clearAllResolveMap.get(z))==null?void 0:r.resolve;H&&H(z)}break;case U.TextUpdate:if(A===T.Text&&R&&z){const H=this.viewContainerManager.transformToOriginPoint((u==null?void 0:u.boxPoint)||[0,0],z),Q=(u==null?void 0:u.boxSize)||[0,0],G=(s=this.viewContainerManager.getView(z))==null?void 0:s.cameraOpt;u?this.control.textEditorManager.updateTextForWorker({x:H[0],y:H[1],w:Q[0],h:Q[1],scale:(G==null?void 0:G.scale)||1,workId:R,opt:u,dataType:V,viewId:z,canSync:I||!1,canWorker:!1,updateNodeOpt:Qe}):this.control.textEditorManager.delete(R,I||!1,!1)}break;case U.GetTextActive:A===T.Text&&R&&z&&this.control.textEditorManager.updateTextForWorker({workId:R,isActive:!0,viewId:z,dataType:K.Local,canWorker:!1,canSync:!0},this.now);break;case U.GetImageBitMap:ue&&z&&R&&ep({src:ue,isgl:$}).then(H=>{var G;const Q=new Set;if(Q.add({msgType:U.GetImageBitMap,dataType:K.Local,workId:R,viewId:z,imageSrc:ue,isSubWorker:Fe,imageBitmap:H}),!this.control.hasOffscreenCanvas)(G=this.mainThread)==null||G.consume(Q);else{const X=Fe&&this.subWorker?this.subWorker:this.fullWorker;H?X.postMessage(Q,[H]):X.postMessage(Q)}});break;case U.GetVNodeInfo:if(R){const H=R.toString(),Q=(a=this.getVNodeInfoResolveMap.get(H))==null?void 0:a.resolve,G={...c,uuid:H};Q&&Q(G)}break;case U.ReportError:case U.ReportLog:Ve&&(l===U.ReportError?this.control.room?this.control.room.logger.error(Ve):console.error("[MasterControlForWorker] reportError",Ve):this.control.room?this.control.room.logger.info(Ve):console.log("[MasterControlForWorker] reportLog",Ve));break;default:t=!0;break}}t&&this.collectorAsyncData(e)}foceUndoTickerEnd(e,t){this.internalMsgEmitter.emit("forceUndoTickerEnd",e,t)}collectorAsyncData(e){var t,n,r,s;for(const a of e){const{type:c,op:l,workId:h,index:u,removeIds:M,ops:y,opt:g,updateNodeOpt:I,toolsType:w,isSync:p,viewId:f,isLockSentEventCursor:N,nextTasks:S,needUndoTicker:v}=a;if(!f){console.error("[MasterControlForWorker] collectorAsyncData on viewId in",a);return}const j=a.scenePath||this.viewContainerManager.getCurScenePath(f);switch(c){case U.None:{N&&Ge(()=>{this.setLockSentEventCursor(!1)},this.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback")),v&&Number(v)&&Ge(()=>{this.foceUndoTickerEnd(Number(v),f)},0,this.control.hasPolyfillMethod("requestIdleCallback"));break}case U.DrawWork:{(t=this.collector)==null||t.dispatch({type:c,op:l,opt:g,toolsType:w,workId:h,index:u,isSync:p,viewId:f,scenePath:j,updateNodeOpt:I});break}case U.FullWork:{(n=this.collector)==null||n.dispatch({type:c,ops:y,workId:h,updateNodeOpt:I,opt:g,toolsType:w,isSync:p,viewId:f,scenePath:j}),this.willSelectorWorkId&&h&&h.toString()===this.willSelectorWorkId&&this.control.runEffectWork(()=>{this.setShapeSelectorByWorkId(this.willSelectorWorkId,f),this.willSelectorWorkId=void 0});break}case U.UpdateNode:{(r=this.collector)==null||r.dispatch({type:c,updateNodeOpt:I,workId:h,opt:g,ops:y,op:l,isSync:p,viewId:f,scenePath:j});break}case U.RemoveNode:{M&&this.control.textEditorManager.deleteBatch(M,!1,!1),(s=this.collector)==null||s.dispatch({type:c,removeIds:M,isSync:p,viewId:f,scenePath:j}),this.willSelectorWorkId&&(M!=null&&M.includes(this.willSelectorWorkId))&&(this.willSelectorWorkId=void 0);break}}S&&this.collectorAsyncData(S)}}async onLocalEventEnd(e,t){var l;const n=this.viewContainerManager.getView(t);if(!n)return;const{focusScenePath:r,cameraOpt:s}=n,a=this.viewContainerManager.transformToScenePoint(e,t),c=[];for(const h of this.localPointsBatchData.keys())if(((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Text){const u=this.getLocalPointInfo(h),M=u==null?void 0:u.state;if(M&&M===D.Start){const y=this.currentLocalWorkData.toolsOpt;y.workState=D.Doing,y.boxPoint=[Math.round(a[0]),Math.round(a[1])],y.boxSize=[y.fontSize,y.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:this.newWorkId,x:e[0],y:e[1],scale:(s==null?void 0:s.scale)||1,opt:y,type:We.Text,isActive:!0,viewId:t,scenePath:r},this.now)}this.deleteLocalPoint(h);continue}else this.pushLocalPoint(h,a,D.Done,t),c.push(h);if(c.length){try{if(await new Promise(u=>{setTimeout(async()=>{c.forEach(M=>{this.setLocalPointIsFullWork(M)}),this.delayWorkStateToDoneResolve=u,this.consume()},0)})&&c[0]){const u=c[0];c.forEach(M=>{this.deleteLocalPoint(M)}),this.willSelectorWorkId=u.toString()}}catch(h){console.error("[MasterControlForWorker] onLocalEventEnd error:",h)}this.delayWorkStateToDoneResolve=void 0,c.length=0}}onLocalEventDoing(e,t){var r;if(((r=this.currentToolsData)==null?void 0:r.toolsType)===T.Text)return;this.currentLocalWorkData.workState===D.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:D.Doing});let n=!1;for(const[s,{state:a}]of this.localPointsBatchData.entries())if(this.isAbled()&&a!==D.Pending){const c=this.viewContainerManager.transformToScenePoint(e,t);this.pushLocalPoint(s,c,a===D.Start?D.Doing:a,t),n=!0}if(n){this.runAnimation();return}}onLocalEventStart(e,t){var c,l;this.viewContainerManager.focuedViewId!==t&&this.viewContainerManager.setFocuedViewId(t),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const n=(c=this.currentToolsData)==null?void 0:c.toolsType,r=n===T.Selector?Z:this.newWorkId,s=this.setZIndex(t);this.setCurrentLocalWorkData({workState:D.Start,toolsOpt:s,viewId:t});const a=this.viewContainerManager.transformToScenePoint(e,t);if(this.pushLocalPoint(r,a,D.Start,t,s),n!==T.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",this.now,t),r&&s&&n&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:r,toolsOpt:s,viewId:t},n),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(t);h&&((l=this.collector)!=null&&l.hasSelector(t,h))&&this.blurSelector(t,h)}this.consume()}}setLocalPointIsFullWork(e){const t=this.getLocalPointInfo(e);t&&(t.isFullWork=!0,this.localPointsBatchData.set(e,t))}pushLocalPoint(e,t,n,r,s){let a=this.getLocalPointInfo(e);n===D.Start?a={state:D.Start,points:t,opt:s||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:r}:a&&(a.state=n,a.points.push(t[0],t[1])),a&&this.localPointsBatchData.set(e,a)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}correctStorage(e,t,n){var c;const r=new Map,s=[];Object.keys(e).forEach(l=>{var u,M;const h=(M=(u=e[l])==null?void 0:u.opt)==null?void 0:M.zIndex;x.isNumber(h)&&s.push([l,h])});const a=s.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,t),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,t));for(const[l,h]of a){if(!e[l])continue;const u=e[l];u.opt&&x.isNumber(u.opt.zIndex)&&u.opt.zIndex!==h&&(u.opt.zIndex=h,r.set(l,u))}return r.size&&r.forEach((l,h)=>{var u;(u=this.collector)==null||u.updateValue(h,l,{viewId:t,scenePath:n,isSync:!0}),e[h]=l}),e}async originalEventLintener(e,t,n){var c,l,h;if(!this.isAbled())return;const r=(c=this.collector)==null?void 0:c.uid,s=this.viewContainerManager.getCurScenePath(n);if(r&&!this.control.renderControl.isWritable)return;const a=((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Selector;switch((h=this.currentToolsData)==null?void 0:h.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(r&&!this.control.renderControl.isClearAble({uid:r,viewId:n,scenePath:s}))return;break}default:{if(r&&!this.control.renderControl.isRenderAble({uid:r,viewId:n,scenePath:s}))return;break}}switch(e){case D.Start:this.isLocalWorkActive=!0,this.setLocalWorkViewId(n),n&&this.onLocalEventStart(t,n),a&&this.viewContainerManager.showFloatBarBtn(n,!1);break;case D.Doing:n&&n===this.getLocalWorkViewId()&&this.onLocalEventDoing(t,n);break;case D.Done:n&&n===this.getLocalWorkViewId()&&(this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:D.Done}),await this.onLocalEventEnd(t,n),setTimeout(()=>{this.isLocalWorkActive=!1,this.setCurrentLocalWorkData({workState:D.Pending}),a&&this.viewContainerManager.showFloatBarBtn(n,!0),this.setLocalWorkViewId(void 0)},0));break}this.isLocalWorkActive&&this.viewContainerManager.focuedViewId===n&&this.publicMsgEmitter.emit("workState",e,n),Ge(()=>{var u;(u=this.control.pluginManager)==null||u.dispatchPluginEvent("localEvent",n,e,t)},Di,this.control.hasPolyfillMethod("requestIdleCallback"))}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var r,s,a;const t=e.toolsType,n=((r=this.currentToolsData)==null?void 0:r.toolsType)!==e.toolsType;if(super.setCurrentToolsData(e),n){const c=(s=this.viewContainerManager)==null?void 0:s.getAllViews();for(const l of c)if(l){const{id:h,focusScenePath:u}=l;n&&h&&u&&((a=this.collector)!=null&&a.hasSelector(h,u)&&this.blurSelector(h,u),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:U.UpdateTools,dataType:K.Local,toolsType:t,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,isRunSubWork:this.isRunSubWork,viewId:ho}),this.runAnimation()}}prepareOnceWork(e,t){const{workId:n,toolsOpt:r,viewId:s}=e,a={msgType:U.CreateWork,dataType:K.Local,viewId:s,toolsType:t};this.queryTaskBatchData(a).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...a,workId:n,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:K.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,t,n){const{offscreenCanvasOpt:r,layerOpt:s,dpr:a,cameraOpt:c}=t,l={msgType:U.Init,dataType:K.Local,viewId:e,offscreenCanvasOpt:r,layerOpt:s,dpr:a,cameraOpt:c,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1,combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,syncUnitTime:this.maxLastSyncTime,isUseSimple:this.control.isUseSimple,offscreenCanvas:n.transferControlToOffscreenCanvas};this.taskBatchData.add(l),this.isBusy&&this.destroyTaskQueue(),this.consume()}destroyViewWorker(e,t=!1){var n;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:U.Destroy,dataType:K.Local,viewId:e,isRunSubWork:!0}),this.consume(),t||(n=this.collector)==null||n.dispatch({type:U.Clear,viewId:e}),this.control.renderControl.destoryByViewId(e,t)}onServiceDerive(e,t){var y,g,I,w,p,f,N,S;const{newValue:n,oldValue:r,viewId:s,scenePath:a}=t,c=x.cloneDeep(n)||{},l=e;let h=c.type;if(!n&&r){if(l&&((y=this.collector)==null?void 0:y.getLocalId(l))===Z){this.collector.isOwn(l)?this.blurSelector(s,a):this.blurSelector(s,a,l);return}if(h=U.RemoveNode,r.toolsType===T.LaserPen)return}const u=(g=this.viewContainerManager.getView(s))==null?void 0:g.focusScenePath;if(u&&u!==a)return;if((I=this.collector)!=null&&I.isSelector(e)){const v=(w=this.collector)==null?void 0:w.getUidFromKey(e);if(v&&!this.control.roomMember.isOnLine(v))return}if(h&&l){if(!this.control.renderControl.isFilterAble({viewId:s,elementId:e,scenePath:a},h))return;const v=c;if(v.workId=(p=this.collector)!=null&&p.isOwn(l)?(f=this.collector)==null?void 0:f.getLocalId(l):l,v.msgType=h,v.toolsType===T.LaserPen&&(v.isRunSubWork=!0),v.dataType=K.Service,v.viewId=s,v.scenePath=a,v.useAnimation=this.smoothSync&&((N=v.updateNodeOpt)==null?void 0:N.useAnimation)||!1,v.selectIds&&(v.selectIds=v.selectIds.map(j=>{var C,k;return(C=this.collector)!=null&&C.isOwn(j)?(k=this.collector)==null?void 0:k.getLocalId(j):j})),v&&v.toolsType===T.Text||(r==null?void 0:r.toolsType)===T.Text){this.control.textEditorManager.onServiceDerive(v);return}v.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(v)}this.runAnimation();const M=t.newValue&&((S=t.newValue.opt)==null?void 0:S.zIndex);if(this.zIndexNodeMethod&&x.isNumber(M)){const v=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<M&&this.zIndexNodeMethod.setMaxZIndex(M,s),v>M&&this.zIndexNodeMethod.setMinZIndex(M,s)}}pullServiceData(e,t,n={isAsync:!1,useAnimation:!1}){var c,l,h,u,M,y,g;let r=(c=this.collector)==null?void 0:c.getStorageData(e,t);const{isAsync:s,useAnimation:a}=n;if(r){this.control.renderControl.isWritable&&(r=this.correctStorage(r,e,t));const I=Object.keys(r);for(const w of I){if((l=this.collector)!=null&&l.isSelector(w)){const f=(h=this.collector)==null?void 0:h.getUidFromKey(w);if(f&&!this.control.roomMember.isOnLine(f))continue}const p=(u=r[w])==null?void 0:u.type;if(p&&w){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:w,scenePath:t},p))continue;const f=r[w];if(f.workId=(M=this.collector)!=null&&M.isOwn(w)?(y=this.collector)==null?void 0:y.getLocalId(w):w,f.msgType=p,f.dataType=K.Service,f.viewId=e,f.scenePath=t,f.useAnimation=this.smoothSync&&(f.ops?!!a:(g=f.updateNodeOpt)==null?void 0:g.useAnimation)||!1,f.selectIds&&(f.selectIds=f.selectIds.map(N=>{var S,v;return(S=this.collector)!=null&&S.isOwn(N)?(v=this.collector)==null?void 0:v.getLocalId(N):N})),f.toolsType===T.Text){this.control.textEditorManager.onServiceDerive(f);continue}s&&f.updateNodeOpt&&f.updateNodeOpt.useAnimation&&(f.updateNodeOpt.useAnimation=!1),f.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(f)}this.internalMsgEmitter.emit("excludeIds",I,e)}s?this.consume():this.runAnimation()}}runAnimation(){!this.animationId&&!this.isBusy&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var t;this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const n=this.consumeQueue(),r=!!n.size;if(this.taskBatchData.size)for(const s of this.taskBatchData.values())s.dataType===K.Service&&(n.add(s),this.taskBatchData.delete(s));n.size?(this.post(n),r&&this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[n,{state:r,isFullWork:s,points:a,opt:c}]of this.localPointsBatchData.entries()){if(r===D.Done&&!s||r===D.Start&&!this.isCanStartEventConsum)continue;const l=a.map(h=>h);if(l.length){if(this.isPostCountType&&r===D.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}this.delayWorkStateToDoneResolve&&r===D.Done&&(this.delayWorkStateToDoneResolve(!0),this.setLockSentEventCursor(!0)),this.taskBatchData.add({op:l,workState:r,workId:n,dataType:K.Local,msgType:U.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(t=this.currentToolsData)==null?void 0:t.toolsType,viewId:e,scenePath:e&&this.viewContainerManager.getCurScenePath(e),opt:c,smoothSync:this.smoothSync,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0,needUndoTicker:r===D.Done&&this.viewContainerManager.getUndoTickerId(e)||void 0}),a.length=0}}this.taskBatchData.size&&(this.post(this.taskBatchData),this.taskBatchData.clear()),this.taskBatchData.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}unWritable(){this.setCurrentLocalWorkData({workState:D.Unwritable}),this.setLockSentEventCursor(!0)}abled(){this.setCurrentLocalWorkData({workState:D.Pending}),this.setLockSentEventCursor(!1)}isAbled(){return this.currentLocalWorkData.workState!==D.Unwritable}post(e){if(!this.control.hasOffscreenCanvas){if(!this.mainThread){let t=[];t=x.cloneDeep([...e]),setTimeout(()=>{for(const n of t)this.taskBatchData.add(n)},0);return}this.mainThread.consume(e);return}if(this.control.isUseSimple){const t=[...e].find(n=>n.msgType===U.Init&&n.offscreenCanvas);t!=null&&t.offscreenCanvas?this.fullWorker.postMessage(e,[t.offscreenCanvas.bgCanvas,t.offscreenCanvas.localCanvas,t.offscreenCanvas.serviceCanvas]):this.fullWorker.postMessage(e);return}else if(this.subWorker){this.fullWorker.postMessage(e);const t=new Set;for(const n of e.values()){const r=n.msgType;(r===U.Init||r===U.Clear||r===U.Destroy||r===U.UpdateCamera||n.isRunSubWork)&&t.add(n)}t.size&&this.subWorker.postMessage(t)}}updateNode(e,t,n,r){this.taskBatchData.add({msgType:U.UpdateNode,workId:e,updateNodeOpt:t,viewId:n,scenePath:r,dataType:K.Local}),this.runAnimation()}destroyTaskQueue(){this.useTasksqueue=!1,this.useTasksClockId&&(clearTimeout(this.useTasksClockId),this.useTasksClockId=void 0),this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0}updateDpr(e,t){this.queryTaskBatchData({msgType:U.UpdateDpr,dataType:K.Local,viewId:e}).forEach(n=>{this.taskBatchData.delete(n)}),this.taskBatchData.add({dataType:K.Local,msgType:U.UpdateDpr,viewId:e,dpr:t,isRunSubWork:!0}),this.runAnimation()}updateCamera(e,t){var n;this.useTasksqueue||((n=this.methodBuilder)==null||n.pause(),this.blurCursor(e),this.checkDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:U.UpdateCamera,dataType:K.Local,cameraOpt:{...t,width:t.width,height:t.height},scenePath:this.viewContainerManager.getCurScenePath(e),isRunSubWork:!0,viewId:e}),this.consume(),this.useTasksClockId&&clearTimeout(this.useTasksClockId),this.updateCameraDone())}updateCameraDone(){this.useTasksClockId=setTimeout(()=>{var e;this.useTasksClockId=void 0,this.mainTasksqueueCount===this.workerTasksqueueCount?(this.tasksqueue.size&&this.consume(),this.useTasksqueue=!1,this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0,(e=this.methodBuilder)==null||e.recover(),this.runAnimation()):this.updateCameraDone()},this.maxLastSyncTime)}consumeQueue(){const e=new Set;let t=!this.isBusy;if(this.isBusy&&this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount<=this.workerTasksqueueCount&&(t=!0),t){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:U.TasksQueue,dataType:K.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[n,r]of this.tasksqueue.entries())r.cameraOpt&&this.control.textEditorManager.onCameraChange(r.cameraOpt,n)}return e}async clearViewScenePath(e,t,n){var s,a;const r=this.viewContainerManager.getCurScenePath(e);if(n){const c=(s=this.collector)==null?void 0:s.uid;if(c&&!this.control.renderControl.isClearAble({uid:c,viewId:e,scenePath:r}))return}this.control.textEditorManager.clear(e,t),this.queryTaskBatchData({msgType:U.Clear,dataType:K.Local,viewId:e}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({dataType:K.Local,msgType:U.Clear,viewId:e}),this.runAnimation(),t||(this.control.renderControl.isUsePageAuth(e)&&r?this.control.renderControl.clearRenderPage(e,r):(a=this.collector)==null||a.dispatch({type:U.Clear,viewId:e,scenePath:r})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e);for(const[c,l]of this.localPointsBatchData.entries())l.viewId===e&&this.localPointsBatchData.delete(c);await new Promise(c=>{const l=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};l.timer&&clearTimeout(l.timer),l.resolve=c,l.timer=setTimeout(()=>{const h=this.clearAllResolveMap.get(e);h!=null&&h.resolve&&h.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,l)}).then(c=>{this.clearAllResolveMap.delete(c)})}internalMsgEmitterListener(){var e;this.methodBuilder=new oe([W.CopyNode,W.SetColorNode,W.DeleteNode,W.RotateNode,W.ScaleNode,W.TranslateNode,W.ZIndexNode,W.SetFontStyle,W.SetPoint,W.SetLock,W.SetShapeOpt]).registerForMainEngine(ee.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(W.ZIndexNode)}setZIndex(e){const t=this.currentToolsData&&x.cloneDeep(this.currentToolsData.toolsOpt);return t&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),t.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),t}checkDrawingWork(e){var r,s,a;let t=!1;const n=[];for(const[c,{state:l,viewId:h,points:u,opt:M}]of this.localPointsBatchData.entries())if(e===h&&l===D.Start||l===D.Doing){if(l===D.Doing&&this.isCanDrawWork){Number(c)&&Number(c)+60>this.now&&(n.push(c.toString()),this.taskBatchData.add({msgType:U.RemoveNode,workId:c,viewId:h,dataType:K.Local,isRunSubWork:!0}));const y=u.map(g=>g);this.taskBatchData.add({op:y,workState:D.Done,workId:c,dataType:K.Local,msgType:U.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(r=this.currentToolsData)==null?void 0:r.toolsType,viewId:h,opt:M,scenePath:h&&this.viewContainerManager.getCurScenePath(h)}),t=!0}this.deleteLocalPoint(c)}if((t||n.length)&&(this.consume(),n.length)){const c=(s=this.viewContainerManager.getView(e))==null?void 0:s.focusScenePath;(a=this.collector)==null||a.dispatch({type:U.RemoveNode,removeIds:n,viewId:e,scenePath:c})}}removeDrawingWork(e){var n,r;const t=[];for(const[s,{state:a,viewId:c}]of this.localPointsBatchData.entries())(e===c&&a===D.Start||a===D.Doing)&&(this.deleteLocalPoint(s),a===D.Doing&&this.isCanDrawWork&&(t.push(s.toString()),this.taskBatchData.add({msgType:U.RemoveNode,workId:s,viewId:c,dataType:K.Local,isRunSubWork:!0})));if(t.length){this.consume();const s=(n=this.viewContainerManager.getView(e))==null?void 0:n.focusScenePath;(r=this.collector)==null||r.dispatch({type:U.RemoveNode,removeIds:t,viewId:e,scenePath:s})}}removeNodes(e,t){var r,s;const n=(r=this.viewContainerManager.getView(e))==null?void 0:r.focusScenePath;if(n&&t.length){for(const a of t)this.taskBatchData.add({msgType:U.RemoveNode,workId:a,viewId:e,dataType:K.Local,isRunSubWork:!1});this.consume(),(s=this.collector)==null||s.dispatch({type:U.RemoveNode,removeIds:t,viewId:e,scenePath:n})}}hoverCursor(e,t){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)===T.Selector&&!this.isBusy){const r=this.viewContainerManager.getView(t);if(r&&r.displayer&&r.displayer.vDom){const c=r.displayer.vDom.state.floatBarData;if(c){const{x:l,y:h,w:u,h:M}=c;if(Io(e,{x:l,y:h,w:u,h:M}))return}}const s=this.viewContainerManager.transformToScenePoint(e,t),a={msgType:U.CursorHover,dataType:K.Local,point:s,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:t};this.queryTaskBatchData({msgType:U.CursorHover,dataType:K.Local,toolsType:this.currentToolsData.toolsType,viewId:t}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==T.Selector)return;const t={msgType:U.CursorBlur,dataType:K.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:U.CursorHover,dataType:K.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add(t),this.consume()}sendCursorEvent(e,t){var c,l,h;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===D.Unwritable||this.isBusy)return;const n=(c=this.currentToolsData)==null?void 0:c.toolsType;if(!this.useTasksqueue&&this.workState===D.Pending&&n===T.Selector&&(x.isNumber(e[0])&&x.isNumber(e[1])?this.hoverCursor(e,t):e[0]===void 0&&e[1]===void 0&&this.blurCursor(t)),!this.currentToolsData||!this.isCanSentCursor||!this.control.pluginOptions.extras.cursor.enable)return;const r=(l=this.collector)==null?void 0:l.uid,s=this.viewContainerManager.getCurScenePath(t);switch((h=this.currentToolsData)==null?void 0:h.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(r&&!this.control.renderControl.isClearAble({uid:r,viewId:t,filterLocalSelf:!1,scenePath:s}))return;break}default:if(r&&!this.control.renderControl.isWritable||r&&!this.control.renderControl.isRenderAble({uid:r,viewId:t,filterLocalSelf:!1,scenePath:s}))return;break}let a=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(a=e,this.control.cursor.sendEvent(a,t))}getBoundingRect(e){var n,r;if(!((n=this.boundingRectMap)==null?void 0:n.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))===Z&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:U.BoundingBox,dataType:K.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,t,n,r){var a,c,l,h,u;if(!((a=this.snapshotMap)==null?void 0:a.get(e))){const M=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!M)return;const y=(l=this.collector)==null?void 0:l.getStorageData(M,e);if(!y)return;if(Object.keys(y).forEach(g=>{var I;((I=this.collector)==null?void 0:I.getLocalId(g))===Z&&delete y[g]}),Object.keys(y).length){const g=this.viewContainerManager.mainView;if(!g)return;const I=t||((h=g.cameraOpt)==null?void 0:h.width),w=n||((u=g.cameraOpt)==null?void 0:u.height),p={msgType:U.Snapshot,dataType:K.Local,scenePath:e,scenes:y,w:I,h:w,cameraOpt:r&&{...r,width:I,height:w}||g.cameraOpt,isRunSubWork:!0,viewId:M};return this.taskBatchData.add(p),this.runAnimation(),new Promise(f=>{this.snapshotMap.set(e,f)}).then(f=>(this.snapshotMap.delete(e),f))}}}queryTaskBatchData(e){const t=[];if(e)for(const n of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(n[s]!==a){r=!1;break}r&&t.push(n)}return t}insertIconify(e,t){var a;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertIconify viewId is not exist");if(!t.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(t.src))throw new Error("iconify src must be http or https");t.strokeColor||(t.strokeColor=(a=this.currentLocalWorkData.toolsOpt)==null?void 0:a.strokeColor);const s=n==null?void 0:n.focusScenePath;if(e&&s){const c=this.now;ve.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:xt.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:U.FullWork,dataType:K.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}insertImage(e,t){const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertImage viewId is not exist");if(t.src&&!/^(http|https):\/\//.test(t.src))throw new Error("Image src must be http or https");const r=n==null?void 0:n.focusScenePath;if(e&&r){const{src:s,uuid:a}=t;if(a&&!s){this.tmpImageConfigMap.set(a,t);return}const c=this.now;ve.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:xt.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:U.FullWork,dataType:K.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}lockImage(e,t,n){var a,c;const r=this.viewContainerManager.getView(e);if(!r)throw new Error("insertImage viewId is not exist");const s=r==null?void 0:r.focusScenePath;if(e&&s&&this.collector){const l=this.collector.getStorageData(e,s);if(!l)return;for(const[h,u]of Object.entries(l))if(u&&u.toolsType===T.Image&&u.opt.uuid===t){const M=this.now;ve.InternalMsgEmitter.emit("addUndoTicker",M,e);const y=(a=this.collector)!=null&&a.isOwn(h)?(c=this.collector)==null?void 0:c.getLocalId(h):h,g={...u.opt,locked:n,type:xt.Image};this.taskBatchData.add({msgType:U.FullWork,dataType:K.Local,toolsType:T.Image,workId:y,opt:g,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:M}),this.runAnimation();return}}}completeImageUpload(e,t,n){const r=this.viewContainerManager.getView(e);if(!r)throw new Error("insertImage viewId is not exist");const s=r==null?void 0:r.focusScenePath;if(e&&s){const a=this.tmpImageConfigMap.get(t);a&&(a.src=n,this.insertImage(e,a),this.tmpImageConfigMap.delete(t));return}}getImagesInformation(e){const t=[];if(this.collector){const n=this.collector.getScenePathData(e);if(!n)return t;for(const r of Object.values(n))if(r&&r.toolsType===T.Image){const s=r.opt;t.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 t}setShapeSelectorByWorkId(e,t){this.taskBatchData.add({workId:Z,selectIds:[e],msgType:U.Select,dataType:K.Local,viewId:t,willSyncService:!0}),this.runAnimation()}blurSelector(e,t,n){this.taskBatchData.add({workId:n||Z,selectIds:[],msgType:U.Select,dataType:K.Service,viewId:e,scenePath:t}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:U.Console,dataType:K.Local,isRunSubWork:!0,viewId:""}),this.consume()}sendClearUids(e,t){var r,s;const n=new Set;n.add({msgType:U.AuthClear,dataType:K.Local,viewId:e,clearUids:t,localUid:(r=this.collector)==null?void 0:r.uid}),this.control.hasOffscreenCanvas?this.fullWorker.postMessage(n):(s=this.mainThread)==null||s.consume(n)}async getVNodeInfo(e,t,n){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:U.GetVNodeInfo,dataType:K.Local,isRunSubWork:!0,viewId:t,workIds:n,workId:e}),this.consume(),await new Promise(r=>{const s=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};s.timer&&clearTimeout(s.timer),s.resolve=r,s.timer=setTimeout(()=>{const a=this.getVNodeInfoResolveMap.get(e);a!=null&&a.resolve&&a.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,s)}).then(r=>{const{uuid:s}=r;return this.getVNodeInfoResolveMap.delete(s),r})}}class np{constructor(i){m(this,"internalMsgEmitter");m(this,"control");m(this,"roomHotkeyCheckers");m(this,"tmpCopyStore",new Map);m(this,"tmpCopyCoordInfo");var n;const{control:e,internalMsgEmitter:t}=i;this.control=e,this.internalMsgEmitter=t,this.roomHotkeyCheckers=((n=this.control.room)==null?void 0:n.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var i,e;return((e=(i=this.control)==null?void 0:i.room)==null?void 0:e.disableDeviceInputs)||!1}get isSelector(){var i;return((i=this.control.worker.currentToolsData)==null?void 0:i.toolsType)===T.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(i){switch(i.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(i){var n,r,s;const e=this.control.viewContainerManager.focuedViewId,t=(n=this.control.viewContainerManager.focuedView)==null?void 0:n.focusScenePath;if(e&&t)switch(i){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,t))&&oe.emitMethod(ee.MainEngine,W.DeleteNode,{workIds:[Z],viewId:e});break;case"copy":this.isSelector&&((s=this.collector)!=null&&s.hasSelector(e,t))&&this.copySelectorToTemp(e,t);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,t);break}(i==="changeToPencil"||i==="redo"||i==="undo")&&this.onSelfActiveHotkey(i)}colloctHotkey(i){if(this.isUseSelf){const e=this.checkHotkey(i);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(i){switch(i){case"changeToPencil":this.setMemberState({currentApplianceName:te.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:te.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:te.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:te.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:te.eraser});break;case"changeToHand":this.setMemberState({currentApplianceName:te.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:te.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:te.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:te.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:te.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:te.text});break;case"changeToPencilEraser":this.setMemberState({currentApplianceName:te.pencilEraser});break;case"delete":case"copy":case"paste":this.onActiveHotkey(i);break}}checkHotkey(i){for(const e of this.roomHotkeyCheckers){const{kind:t,checker:n}=e;if(n({nativeEvent:i,kind:this.getEventKey(i),key:i.key,altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey},this.keyboardKind))return t}}copySelectorToTemp(i,e){var l,h;const t=this.control.viewContainerManager.getView(i),n=(h=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:h.getBuilder(W.CopyNode);if(!t||!this.collector||!n)return;const r=this.collector.transformKey(Z),s=this.collector.getStorageData(i,e);if(!s)return;const a=s[r],c=a&&n.copySelector({viewId:i,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(i,e){var r,s;const t=this.control.viewContainerManager.getView(i),n=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(W.CopyNode);if(!(!t||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!n)&&t.viewData&&this.tmpCopyCoordInfo){const a=x.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=t.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY;const h=this.control.worker.now;this.control.worker.internalMsgEmitter.emit("addUndoTicker",h,i),n.pasteSelector({viewId:i,scenePath:e,copyStores:x.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l},undoTickerId:h})}}setMemberState(i){var e;(e=this.control.room)==null||e.setMemberState(i)}}class op{constructor(i){m(this,"control");m(this,"roomMemberManager");m(this,"worker");m(this,"publicMsgEmitter");m(this,"renderUids",new Map);m(this,"pageAuth",new Map);m(this,"isLocalRender",!1);m(this,"isCurWritable",!1);var n;const{control:e,publicMsgEmitter:t}=i;this.control=e,this.publicMsgEmitter=t,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((n=this.control.room)==null?void 0:n.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(i){this.isCurWritable=i}addPage(i,e=!0){var l,h;const{viewId:t,render:n="localSelf",elementIds:r,pageId:s=(l=this.control.collector)==null?void 0:l.uid}=i,a=this.pageAuth.get(t)||new Map,c=this.control.viewContainerManager.getCurScenePath(t);if(c&&s){const u=a.get(c)||{render:"localSelf",pages:new Map};e&&(u.render=n);const M=r&&this.cloneElementIds(t,c,r,s)||new Set;u.pages.set(s,M),a.set(c,u),this.pageAuth.set(t,a),e&&this.pageAuthEffect(t),this.isLocalRender=!1,(h=this.control.collector)==null||h.dispatchPageAuth({operation:Te.addPage,viewId:t,scenePath:c,pageId:s,pageData:{render:n,elementIds:M}},!0)}}delPage(i,e){var s,a;const t=this.pageAuth.get(e);if(!t)return;const n=[...t.keys()].find(c=>{const l=t.get(c);return!!(l&&l.pages.has(i))});if(!n)return;const r=t.get(n);if(r){const{render:c,pages:l}=r,h=c==="localSelf"?(s=this.control.collector)==null?void 0:s.uid:c,u=l.get(i);u!=null&&u.size&&this.delElementIds(e,n,u),l.delete(i),h===i&&this.pageAuthEffect(e)}(a=this.control.collector)==null||a.dispatchPageAuth({operation:Te.deletePage,viewId:e,scenePath:n,pageId:i},!0)}delViewPage(i,e=!0){var n;this.pageAuth.get(i)&&(this.pageAuth.delete(i),e&&((n=this.control.collector)==null||n.dispatchPageAuth({operation:Te.clearView,viewId:i},e)))}clearRenderPage(i,e,t=!0){var a,c;const n=this.pageAuth.get(i);if(!n)return;const r=n.get(e);let s;if(r){const{render:l,pages:h}=r,u=l==="localSelf"?(a=this.control.collector)==null?void 0:a.uid:l;if(u){if(t){const M=h.get(u);M&&this.delElementIds(i,e,M)}h.set(u,new Set),s=u}}t&&s&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:Te.clearPage,viewId:i,scenePath:e,pageId:s},t))}hasPage(i,e,t){const n=this.pageAuth.get(e);if(!n)return!1;const r=n.get(t);return r?r.pages.has(i):!1}getPageInfo(i,e,t){const n=this.pageAuth.get(e);if(!n)return;const r=n.get(t);if(r)return r.pages.get(i)}addRenderPageElementId(i,e=!0,t=!1){var h,u;const{viewId:n,elementId:r,scenePath:s}=i,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(s);let l;if(c){const{render:M,pages:y}=c,g=M==="localSelf"?(h=this.control.collector)==null?void 0:h.uid:M;if(g&&y.has(g)){const I=y.get(g)||new Set;I.add(r),y.set(g,I),l=g}}t&&this.pageAuthEffect(n),e&&l&&((u=this.control.collector)==null||u.dispatchPageAuth({operation:Te.addElement,viewId:n,scenePath:s,pageId:l,pageData:{elementId:r}},e))}delRenderPageElementId(i,e=!0,t=!1){var h,u;const{viewId:n,elementId:r,scenePath:s}=i,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(s);let l;if(c){const{render:M,pages:y}=c,g=M==="localSelf"?(h=this.control.collector)==null?void 0:h.uid:M;if(g&&y.has(g)){const I=y.get(g);I&&(I.delete(r),y.set(g,I),l=g)}}t&&this.pageAuthEffect(n),e&&l&&((u=this.control.collector)==null||u.dispatchPageAuth({operation:Te.deleteElement,viewId:n,scenePath:s,pageId:l,pageData:{elementId:r}},e))}setPageRender(i,e,t,n=!0){var a;const r=this.pageAuth.get(i);if(!r)throw new Error(`no view info in viewId: ${i}`);const s=r.get(e);s&&(s.render=t),e===this.control.viewContainerManager.getCurScenePath(i)&&this.pageAuthEffect(i),n||(this.isLocalRender=!0),n&&(this.isLocalRender=!1,(a=this.control.collector)==null||a.dispatchPageAuth({operation:Te.renderPage,viewId:i,scenePath:e,pageData:{render:t}},n))}isRenderAble(i){var c,l;const{uid:e,viewId:t,filterLocalSelf:n=!0,scenePath:r}=i,s=this.renderUids.get(t);if(s){const{render:h,hide:u}=s;if(h===void 0&&u===void 0)return!0;if(x.isSet(h)){if(h.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&h.has("localSelf"))return!0}else if(h===!0&&(!u||x.isSet(u)&&!u.has(e)&&!(n&&u.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const a=this.pageAuth.get(t);if(a&&r){const h=a.get(r);if(h){const{render:u}=h;if(u)return!(u==="localSelf"&&!n)}}return!0}isClearAble(i){var c;const{uid:e,viewId:t,filterLocalSelf:n=!0,scenePath:r}=i,s=this.renderUids.get(t);if(s){const{clear:l}=s;return!!(l===void 0||l===!0||x.isSet(l)&&(l.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const a=this.pageAuth.get(t);if(a&&r){const l=a.get(r);if(l){const{render:h}=l;if(h)return!(h==="localSelf"&&!n)}}return!0}isFilterAble(i,e){var c,l,h,u;const{viewId:t,scenePath:n,elementId:r}=i,s=this.renderUids.get(t);if(s&&r){const{render:M,hide:y}=s;if(M===void 0&&y===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(r);return g?!!(x.isSet(M)&&(M.has(g)||M.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||M===!0&&(!y||x.isSet(y)&&!y.has(g)&&!(y.has("localSelf")&&((h=this.control.collector)==null?void 0:h.uid)===g))):!1}const a=this.pageAuth.get(t);if(a&&n&&r){const M=a.get(n);if(M){const{render:y,pages:g}=M;if(!y)return!0;const I=(u=this.control.collector)==null?void 0:u.uid,w=y==="localSelf"?I:y,p=w&&g.get(w)||void 0;if(p)switch(e){case U.RemoveNode:return!0;default:return p.has(r)}return!1}}return!0}isFilterCursor(i){if(this.isUsePageAuth(i)){const e=this.control.viewContainerManager.getCurScenePath(i),t=this.pageAuth.get(i);if(e&&t){const n=t.get(e);if(n){const{render:r}=n;return r!=="localSelf"}}}return!0}isUsePageAuth(i){var n;if(!this.pageAuth.has(i))return!1;const t=this.control.viewContainerManager.getCurScenePath(i);return t&&((n=this.pageAuth.get(i))==null?void 0:n.has(t))||!1}publishRender(i){var s;const{viewId:e,option:t,isSync:n=!0}=i,r={};if(t){const{render:a,hide:c,clear:l}=t;a&&(r.render=a===!0&&!0||new Set(a)),c&&(r.hide=c===!0&&!0||new Set(c)),l&&(r.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,r)}else this.renderUids.delete(e);n&&((s=this.control.collector)==null||s.dispatchRenderAuth({operation:Ue.setAuth,viewId:e,renderData:r},n)),this.renderEffect(e)}publishOneRender(i,e,t,n=!0){var a;const r=this.renderUids.get(i);let s;switch(t){case"show":r?(r.render||(r.render=new Set),x.isSet(r.render)&&r.render.add(e),x.isSet(r.hide)&&r.hide.delete(e)):this.renderUids.set(i,{render:new Set([e])}),s=Ue.setShow;break;case"hide":r?(r.hide||(r.hide=new Set),x.isSet(r.hide)&&r.hide.add(e),x.isSet(r.render)&&r.render.delete(e)):this.renderUids.set(i,{hide:new Set([e])}),s=Ue.setHide;break}r?this.renderUids.set(i,r):this.renderUids.delete(i),n&&s&&((a=this.control.collector)==null||a.dispatchRenderAuth({operation:s,viewId:i,uid:e},n)),this.renderEffect(i)}publishOneClear(i,e,t,n=!0){var s;const r=this.renderUids.get(i);t?r?(r.clear||(r.clear=new Set),x.isSet(r.clear)&&r.clear.add(e)):this.renderUids.set(i,{clear:new Set([e])}):r&&x.isSet(r.clear)&&r.clear.has(e)&&r.clear.delete(e),r?this.renderUids.set(i,r):this.renderUids.delete(i),n&&((s=this.control.collector)==null||s.dispatchRenderAuth({operation:Ue.setClear,viewId:i,uid:e,isClear:t},n)),this.renderEffect(i)}syncRenderUids(i,e,t,n){const r=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,s=t===!0?!0:t&&Object.keys(t)?new Set(Object.keys(t)):void 0,a=n===!0?!0:n&&Object.keys(n)?new Set(Object.keys(n)):void 0;r||s||a?this.renderUids.set(i,{render:r,hide:s,clear:a}):this.renderUids.delete(i),this.renderEffect(i),this.publicMsgEmitter.emit("syncRenderUids",i,{render:r,hide:s,clear:a})}syncPageAuth(i,e,t=!1){let n=!1;if(!e)this.pageAuth.delete(i);else{const r=this.pageAuth.get(i)||new Map;for(const[s,a]of Object.entries(e)){const{render:c,pages:l}=a,h=r.get(s),u=this.isLocalRender?h==null?void 0:h.render:c;if(u){u!==(h==null?void 0:h.render)&&(n=!0);const M=new Map;for(const[g,I]of Object.entries(l))M.set(g,new Set(Object.keys(I)));const y={render:u,pages:M};M.size&&r.set(s,y)}}r.size&&(this.pageAuth.set(i,r),this.publicMsgEmitter.emit("syncPageAuth",i,r))}(t||n)&&this.pageAuthEffect(i)}destoryByViewId(i,e=!1){var t;this.renderUids.has(i)&&(this.renderUids.delete(i),e||(t=this.control.collector)==null||t.dispatchRenderAuth({operation:Ue.setAuth,viewId:i})),this.pageAuth.has(i)&&this.control.renderControl.delViewPage(i,!e)}renderEffect(i){var t;const e=(t=this.control.viewContainerManager.getView(i))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(i,!0).then(()=>{var n;this.worker.pullServiceData(i,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(i,(n=this.renderUids.get(i))==null?void 0:n.clear)})}pageAuthEffect(i){var t;const e=(t=this.control.viewContainerManager.getView(i))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(i,!0).then(()=>{this.worker.pullServiceData(i,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(i,!0)})}cloneElementIds(i,e,t,n){var a,c;const r=(a=this.control.collector)==null?void 0:a.getStorageData(i,e),s=new Set;if(r){for(const l of Object.keys(r))if(t.has(l)){const h=`${l}_${n}`;if(s.add(h),!Object.keys(r).includes(h)){const u=x.cloneDeep(r[l]);(c=this.control.collector)==null||c.updateValue(h,{type:U.FullWork,...u,workId:h},{isSync:!0,viewId:i,scenePath:e})}}}return s}delElementIds(i,e,t){var r,s;const n=(r=this.control.collector)==null?void 0:r.getStorageData(i,e);if(n)for(const a of Object.keys(n))t.has(a)&&Object.keys(n).includes(a)&&((s=this.control.collector)==null||s.updateValue(a,void 0,{isSync:!0,viewId:i,scenePath:e}))}}class rp{constructor(i){m(this,"internalMsgEmitter");m(this,"control");m(this,"maps",new Map);m(this,"showId");m(this,"color");m(this,"timer");m(this,"updateMiniMapCamera",x.debounce(async i=>{const e=this.maps.get(i);if(e){const t=await this.getMiniMapCamera(i);if(t){const n=t.width/t.scale,r=t.height/t.scale,s=e.miniMapCamera.width/e.miniMapCamera.scale,a=e.miniMapCamera.height/e.miniMapCamera.scale;(n>=s||r>=a)&&(e.miniMapCamera=t);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const h=this.control.viewContainerManager.getView(i);if(!(h!=null&&h.focusScenePath))return;const{miniMapCamera:u,contianer:M}=e,{width:y,height:g}=M.getBoundingClientRect(),I=Math.min(y/u.width,g/u.height);l.clearRect(0,0,c.width,c.height),c.width=u.width,c.height=u.height,c.style.width=`${u.width*I}px`,c.style.height=`${u.height*I}px`,await this.control.screenshotToCanvas(l,h.focusScenePath,u.width,u.height,u),this.listener.emitAsync([i,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var n;const{control:e,internalMsgEmitter:t}=i;this.control=e,this.internalMsgEmitter=t,this.color=((n=this.control.worker.currentToolsData)==null?void 0:n.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(i){this.color=i}async createMiniMap(i,e,t){const n=this.control.viewContainerManager.getView(i);if(!n)throw new Error("view not found");const r=n.cameraOpt;if(!r)throw new Error("view camera not found");const{width:s,height:a}=e.getBoundingClientRect();if(!s||!a)throw new Error("contianer width or height is 0");const c=d.createRef();this.maps.set(i,{contianer:e,miniMapCanvas:c,miniMapCamera:t,viewCamera:r}),this.showId=i,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(s/t.width,a/t.height),h=await new Promise(u=>{this.listener.once([i,"miniMapCreate"],()=>{const M=c.current;M&&(M.width=t.width,M.height=t.height,M.style.width=`${t.width*l}px`,M.style.height=`${t.height*l}px`),u(!0)}),this.timer=setTimeout(()=>{u(!1)},2e3)});return this.timer&&clearTimeout(this.timer),h}async getMiniMapCamera(i){const e=this.control.viewContainerManager.getView(i);if(!e)return;const{cameraOpt:t,focusScenePath:n}=e;if(!t||!n)return;const r={originX:t.centerX-t.width/t.scale/2,originY:t.centerY-t.height/t.scale/2,width:t.width/t.scale,height:t.height/t.scale};let s=await this.control.getBoundingRect(n)||r;s=Fi(s,r)||r;let a=s.width,c=s.height,l=1;const h=a>t.width&&Math.min(t.width/a,l)||l,u=c>t.height&&Math.min(t.height/c,l)||l;return h<=u?(a=h<1&&t.width||a,c=Math.floor(c*h)+1,l=h):h>u&&(c=u<1&&t.height||c,a=Math.floor(a*u)+1,l=u),{scale:l,centerX:s.originX+s.width/2,centerY:s.originY+s.height/2,width:a,height:c}}getMiniMapCanvas(i){const e=this.maps.get(i);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(i,e){const t=this.maps.get(i);t&&(t.viewCamera=e,this.listener.emitAsync([i,"viewCameraUpate"],1))}destroyMiniMap(i){const e=i||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}class sp{constructor(){m(this,"control");m(this,"_listeners",{})}_inject(i){this.control=i}_onEvent(i,e){this._listeners[i]&&this._listeners[i](...e)}callbacks(i,e){this._listeners[i]=e}removeCallback(i){delete this._listeners[i]}}class ap{constructor(i){m(this,"control");m(this,"worker");m(this,"publicMsgEmitter");m(this,"plugins",new Map);const{control:e,publicMsgEmitter:t}=i;this.control=e,this.publicMsgEmitter=t,this.worker=e.worker}use(i){this.plugins.set(i.kind,i),i._inject(this.control),i.onCreate()}destroy(){this.plugins.forEach(i=>{this.plugins.delete(i.kind),i.onDestroy()})}dispatchPluginEvent(i,...e){this.plugins.forEach(t=>{t._onEvent(i,e)})}}const tt=class tt{constructor(i){m(this,"version",uo);m(this,"plugin");m(this,"room");m(this,"play");m(this,"collector");m(this,"hasSwitchToSelectorEffect");m(this,"snapshootStateMap");m(this,"_disableDeviceInputs");m(this,"_disableEraseImage");m(this,"_disableEraseText");m(this,"_disableCameraTransform");m(this,"_disableUseWorker",!1);m(this,"effectResolve");m(this,"hotkeyManager");m(this,"pluginOptions");m(this,"roomMember");m(this,"cursor");m(this,"textEditorManager");m(this,"worker");m(this,"renderControl");m(this,"miniMapManager");m(this,"pluginManager");m(this,"_isPolyfill",{requestIdleCallback:!1,cancelIdleCallback:!1});m(this,"onSceneChange",async(i,e)=>{var s;const t=this.viewContainerManager.getView(e);t!=null&&t.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,t.focusScenePath)&&this.worker.blurSelector(e,t.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const n=t==null?void 0:t.displayer;n&&(n.setActive(!1),await n.stopEventHandler());const r=i;r&&this.viewContainerManager.setViewScenePath(e,r),n==null||n.setActive(!0)});m(this,"onRoomMembersChange",i=>{this.roomMember.setRoomMembers(F.toJS(i))});m(this,"onMemberChange",x.throttle(i=>{var s,a;if(!this.room||!this.worker||!i||!this.room.isWritable)return;const e=this.getToolsKey(i),t=(s=this.worker.getCurrentToolsData())==null?void 0:s.toolsType,n=this.viewContainerManager.focuedViewId;n&&t===T.Selector&&e!==T.Selector&&this.worker.blurCursor(n);const r=this.getToolsOpt(e,i);this.worker.setCurrentToolsData(r),(a=this.pluginManager)==null||a.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));m(this,"internalSceneChange",(i,e)=>{var t,n,r,s;this.isUseSimple||((t=this.miniMapManager)==null?void 0:t.activeViewId)===i&&((n=this.miniMapManager)==null||n.destroyMiniMap(i)),(r=this.pluginManager)==null||r.dispatchPluginEvent("sceneChange",i,e),(s=this.worker)==null||s.clearViewScenePath(i,!0).then(()=>{var a;(a=this.worker)==null||a.pullServiceData(i,e,{isAsync:!0,useAnimation:!1})})});m(this,"internalCameraChange",(i,e)=>{var t,n;(t=this.worker)==null||t.updateCamera(i,e),this.isUseSimple||(n=this.miniMapManager)==null||n.updateViewCamera(i,e)});var s;const{displayer:e,plugin:t,options:n}=i;this.plugin=t,this.room=F.isRoom(e)?e:void 0,this.play=F.isPlayer(e)?e:void 0,this.room&&(this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1),this.pluginOptions=n,((s=n.extras)==null?void 0:s.useWorker)==="mainThread"?this._disableUseWorker=!0:this._disableUseWorker=mn!=="worker",this.roomMember=new Wf;const r={control:this,internalMsgEmitter:tt.InternalMsgEmitter,publicMsgEmitter:tt.PublicMsgEmitter};this.cursor=new Bf(r),this.textEditorManager=new Ug(r),this.worker=new ip(r),this.hotkeyManager=new np(r),this.renderControl=new op(r),this.pluginManager=new ap(r),this.isUseSimple||(this.miniMapManager=new rp(r))}hasPolyfillMethod(i){return this._isPolyfill[i]}registerPolyfillMethod(i){this._isPolyfill[i]=!0}get hasExtendFontFaces(){return this.extendFontFaces.length>0}get extendFontFaces(){var i;return((i=this.pluginOptions.extras.textEditor)==null?void 0:i.extendFontFaces)??we.textEditor.extendFontFaces}get loadFontFacesTimeout(){var i;return((i=this.pluginOptions.extras.textEditor)==null?void 0:i.loadFontFacesTimeout)??we.textEditor.loadFontFacesTimeout}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(i){this._disableEraseText=i}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(i){this._disableEraseImage=i}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(i){var t;this._disableDeviceInputs=i;const e=(t=this.worker.getCurrentToolsData())==null?void 0:t.toolsType;e&&this.effectViewContainer(e)}get disableCameraTransform(){return this._disableCameraTransform||!1}set disableCameraTransform(i){this._disableCameraTransform=i}get disableUseWorker(){return this._disableUseWorker||!1}set disableUseWorker(i){this._disableUseWorker=i}get hasOffscreenCanvas(){return this._disableUseWorker?!1:mn==="worker"}get canUseTransferControlToOffscreen(){return this._disableUseWorker?!1:!!HTMLCanvasElement.prototype.transferControlToOffscreen}get isUseOffscreenTransfer(){return this.isUseSimple&&this.hasOffscreenCanvas&&this.canUseTransferControlToOffscreen}get isUseSimple(){return this.pluginOptions.extras.useSimple}bindPlugin(i){this.plugin=i,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new yi(this,i,this.pluginOptions.extras.syncOpt.interval),this.activePlugin()}destroy(){var i,e,t,n,r,s,a;this.roomMember.destroy(),(i=this.collector)==null||i.destroy(),(e=this.worker)==null||e.destroy(),(t=this.viewContainerManager)==null||t.destroy(),(n=this.cursor)==null||n.destroy(),(r=this.textEditorManager)==null||r.destory(),(s=this.pluginManager)==null||s.destroy(),(a=this.miniMapManager)==null||a.destroyMiniMap()}cleanCurrentScene(){const i=this.worker.now,e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(tt.InternalMsgEmitter.emit("addUndoTicker",i,e),this.worker.clearViewScenePath(e,!1,!0).then(()=>{tt.InternalMsgEmitter.emit("forceUndoTickerEnd",i,e)}))}async setWritable(i){var e,t;if(!i){(e=this.cursor)==null||e.unabled(),this.textEditorManager.checkEmptyTextBlur();const n=this.viewContainerManager.getAllViews();for(const r of n){r!=null&&r.focusScenePath&&(t=this.collector)!=null&&t.hasSelector(r.id,r.focusScenePath)&&this.worker.blurSelector(r.id,r.focusScenePath);const s=r==null?void 0:r.displayer;s&&(s.setActive(!1),await s.stopEventHandler())}}await new Promise(n=>{setTimeout(()=>{n()},500)})}onWritableChange(i){var n;i?this.worker.abled():this.worker.unWritable(),((n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType)===T.Text&&this.viewContainerManager.focuedViewId&&(i?this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId):this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId)),this.renderControl.onWritableChange(i),this.viewContainerManager.getAllViews().forEach(r=>{const s=r==null?void 0:r.displayer;s&&(s.bindToolsClass(),i?s.setActive(!0):s.setActive(!1))})}getToolsKey(i){const e=i.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case te.text:return i.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Text;case te.pencil:return i.useLaserPen?T.LaserPen:T.Pencil;case te.eraser:return T.Eraser;case te.pencilEraser:return this.pluginOptions.extras.pencilEraser.useBitMap===!1?T.PencilEraser:T.BitMapEraser;case te.selector:return T.Selector;case te.arrow:return i.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Arrow;case te.straight:return i.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Straight;case te.ellipse:return i.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Ellipse;case te.rectangle:return i.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Rectangle;case te.shape:if(i.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),i.shapeType===Ye.Pentagram||i.shapeType===Ye.Star)return T.Star;if(i.shapeType===Ye.Polygon||i.shapeType===Ye.Triangle||i.shapeType===Ye.Rhombus)return T.Polygon;if(i.shapeType===Ye.SpeechBalloon)return T.SpeechBalloon;break}return T.Clicker}getToolsOpt(i,e){if(i===T.Clicker)return{toolsType:i,toolsOpt:{}};const t={strokeColor:ht(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(i){case T.Text:t.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),t.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),t.textAlign=(e==null?void 0:e.textAlign)||"left",t.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",t.fontColor=(e==null?void 0:e.textColor)&&ht(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||t.strokeColor||"rgba(0,0,0,1)",t.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&ht(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",t.bold=(e==null?void 0:e.bold)&&"bold"||void 0,t.italic=(e==null?void 0:e.italic)&&"italic"||void 0,t.underline=(e==null?void 0:e.underline)||void 0,t.lineThrough=(e==null?void 0:e.lineThrough)||void 0,t.text="",t.strokeColor=void 0;break;case T.Pencil:{const n=(e==null?void 0:e.strokeType)||fe.Normal;t.strokeType=n,t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case T.PencilEraser:case T.BitMapEraser:case T.Eraser:t.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1;break;case T.LaserPen:{t.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===fe.Stroke?t.strokeType=fe.Normal:t.strokeType=(e==null?void 0:e.strokeType)||fe.Normal;const n=t.strokeType;t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case T.Arrow:case T.Straight:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===fe.Stroke?t.strokeType=fe.Normal:t.strokeType=(e==null?void 0:e.strokeType)||fe.Normal;const n=t.strokeType;t.strokeType=n,t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case T.Ellipse:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===fe.Stroke?t.strokeType=fe.Normal:t.strokeType=(e==null?void 0:e.strokeType)||fe.Normal;const n=t.strokeType;t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n),i===T.Star&&(e.shapeType===Ye.Pentagram?(t.vertices=10,t.innerVerticeStep=2,t.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(t.vertices=e.vertices,t.innerVerticeStep=e.innerVerticeStep,t.innerRatio=e.innerRatio)),i===T.Polygon&&(e.shapeType===Ye.Triangle?t.vertices=3:e.shapeType===Ye.Rhombus?t.vertices=4:e.vertices&&(t.vertices=e.vertices)),t.fillColor=(e==null?void 0:e.fillColor)&&ht(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",i===T.SpeechBalloon&&(t.placement=e.placement||"bottomLeft");break}}return{toolsType:i,toolsOpt:t}}getLineCap(i){switch(i){case fe.Normal:return this.pluginOptions.extras.normalStroke.lineCap||we.normalStroke.lineCap;case fe.Dotted:return this.pluginOptions.extras.dottedStroke.lineCap||we.dottedStroke.lineCap;case fe.LongDotted:return this.pluginOptions.extras.longDottedStroke.lineCap||we.longDottedStroke.lineCap;default:return}}getLineDash(i){switch(i){case fe.Normal:return;case fe.Dotted:{const{segment:e,gap:t}=this.pluginOptions.extras.dottedStroke||we.dottedStroke;return[e,t]}case fe.LongDotted:{const{segment:e,gap:t}=this.pluginOptions.extras.longDottedStroke||we.longDottedStroke;return[e,t]}default:return}}effectViewContainer(i){var e,t,n,r,s;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.unWritable(),(t=this.cursor)==null||t.unabled();else switch(i!==T.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId),i){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Triangle:case T.Rhombus:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:case T.Selector:this.room.disableDeviceInputs=!0,(n=this.worker)==null||n.abled(),i===T.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId);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(i){var t,n,r,s,a;const e=await((t=this.worker)==null?void 0:t.getBoundingRect(i));if(e){const c=((r=(n=this.viewContainerManager.mainView)==null?void 0:n.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(i,e,t,n,r,s,a){const c=await this.worker.getSnapshot(e,t,n,r);c&&(i.drawImage(c,s||0,a||0),c.close())}async scenePreview(i,e){var s,a,c,l;const t=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(i);if(!t)return;const n=this.viewContainerManager.getView(t);if(!n||!((a=n.cameraOpt)!=null&&a.width)||!((c=n.cameraOpt)!=null&&c.height))return;const r=await((l=this.worker)==null?void 0:l.getSnapshot(i));if(r&&this.worker){const h=document.createElement("canvas"),u=h.getContext("2d"),{width:M,height:y}=n.cameraOpt;h.width=M,h.height=y,u&&(u.drawImage(r,0,0),e.crossOrigin="anonymous",e.src=h.toDataURL(),e.onload=()=>{h.remove()},e.onerror=()=>{h.remove(),e.remove()}),r.close()}}switchToText(){var i;(i=this.room)==null||i.setMemberState({currentApplianceName:te.text})}switchToSelector(){var i;(i=this.room)==null||i.setMemberState({currentApplianceName:te.selector})}async runEffectWork(i){if(this.hasSwitchToSelectorEffect){const e=await new Promise(t=>{this.switchToSelector(),this.effectResolve=t});this.effectResolve=void 0,e&&i&&i()}}setSnapshootData(){var i;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(i=this.room)==null?void 0:i.state.memberState))}getSnapshootData(i){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(i)}clearSnapshootData(){var i;(i=this.snapshootStateMap)==null||i.clear(),this.snapshootStateMap=void 0}useBitMapEraser(i){this.pluginOptions.extras.pencilEraser.useBitMap=i}consoleWorkerInfo(){var i;(i=this.worker)==null||i.consoleWorkerInfo()}filterRenderByUid(i,e,t=!0){var r;this.viewContainerManager.getView(i)&&((r=this.renderControl)==null||r.publishRender({viewId:i,option:e,isSync:t}))}cancelFilterRender(i,e=!0){var t;(t=this.renderControl)==null||t.publishRender({viewId:i,isSync:e})}async createMiniMap(i,e){var n,r,s;if(this.isUseSimple)throw new Error("simple mode not support createMiniMap");const t=await((n=this.miniMapManager)==null?void 0:n.getMiniMapCamera(i));if(t&&await((r=this.miniMapManager)==null?void 0:r.createMiniMap(i,e,t))){const c=(s=this.miniMapManager)==null?void 0:s.getMiniMapCanvas(i);if(c){const l=c.getContext("2d");if(l){const h=this.viewContainerManager.getView(i);h!=null&&h.focusScenePath&&this.screenshotToCanvas(l,h.focusScenePath,t.width,t.height,t)}}}}async destroyMiniMap(i){var e;(e=this.miniMapManager)==null||e.destroyMiniMap(i)}insertIconify(i,e){var n;if(this.viewContainerManager.getView(i)&&this.room){const r=this.room.state.memberState,s=ht(r.strokeColor[0],r.strokeColor[1],r.strokeColor[2],r.strokeOpacity||1);(n=this.worker)==null||n.insertIconify(i,{...e,strokeColor:s})}}usePlugin(i){var e;return(e=this.pluginManager)==null?void 0:e.use(i)}async stopDraw(i){var t;const e=this.viewContainerManager.getView(i);e&&await((t=e.displayer)==null?void 0:t.stopEventHandler())}async setViewLocalScenePathChange(i,e){this.viewContainerManager.getView(i)&&await this.onSceneChange(e,i)}};m(tt,"InternalMsgEmitter",new ui),m(tt,"PublicMsgEmitter",new ui);let ve=tt;var mi=(o=>(o.Undo="undo",o.Redo="redo",o))(mi||{});const se=class se{createProxy(i,e,t){const n=new Proxy(i,{get(r,s,a){if(typeof s=="string"&&/^\d+$/.test(s))return Reflect.get(r,s,a);const c=se.interceptors.hasOwnProperty(s)?se.interceptors:r,l=Reflect.get(c,s,a);return typeof l=="function"&&c===se.interceptors?l.bind(n):l},set(r,s,a,c){const l=se.proxyCallbacks.get(c),h=(l==null?void 0:l.arrayType)||"undo";if(s==="length"){const u=r.length,M=[];if(a<u)for(let g=a;g<u;g++)M.push(r[g]);const y=Reflect.set(r,s,a,c);if(l!=null&&l.callback)for(let g=0;g<M.length;g++)l.callback({operation:"delete",index:a+g,oldValue:M[g],arrayType:h});return y}return typeof s=="string"&&/^\d+$/.test(s),Reflect.set(r,s,a,c)},deleteProperty(r,s){const a=se.proxyCallbacks.get(n),c=(a==null?void 0:a.arrayType)||"undo";if(typeof s=="string"&&/^\d+$/.test(s)){const l=parseInt(s,10),h=r[l],u=Reflect.deleteProperty(r,s);return a!=null&&a.callback&&h!==void 0&&a.callback({operation:"delete",index:l,oldValue:h,arrayType:c}),u}return Reflect.deleteProperty(r,s)}});return se.proxyToRaw.set(n,i),se.proxyCallbacks.set(n,{callback:e,arrayType:t}),n}};m(se,"proxyToRaw",new WeakMap),m(se,"proxyCallbacks",new WeakMap),m(se,"interceptors",{entries(...i){return se.proxyToRaw.get(this).entries(...i)},forEach(...i){return se.proxyToRaw.get(this).forEach(...i)},map(...i){return se.proxyToRaw.get(this).map(...i)},filter(...i){return se.proxyToRaw.get(this).filter(...i)},find(...i){return se.proxyToRaw.get(this).find(...i)},findIndex(...i){return se.proxyToRaw.get(this).findIndex(...i)},includes(...i){return se.proxyToRaw.get(this).includes(...i)},indexOf(...i){return se.proxyToRaw.get(this).indexOf(...i)},slice(...i){return se.proxyToRaw.get(this).slice(...i)},concat(...i){return se.proxyToRaw.get(this).concat(...i)},push(...i){const e=se.proxyToRaw.get(this),t=this,n=se.proxyCallbacks.get(t),r=(n==null?void 0:n.arrayType)||"undo",s=e.length,a=e.push(...i);if(n!=null&&n.callback)for(let c=s;c<e.length;c++)n.callback({operation:"add",index:c,newValue:e[c],arrayType:r});return a},customPush(...i){return se.proxyToRaw.get(this).push(...i)},pop(){const i=se.proxyToRaw.get(this),e=this,t=se.proxyCallbacks.get(e),n=(t==null?void 0:t.arrayType)||"undo",r=i.length,s=i[r-1],a=i.pop();return t!=null&&t.callback&&r>0&&t.callback({operation:"delete",index:r-1,oldValue:s,arrayType:n}),a},shift(){const i=se.proxyToRaw.get(this),e=this,t=se.proxyCallbacks.get(e),n=(t==null?void 0:t.arrayType)||"undo",r=i[0],s=i.shift();return t!=null&&t.callback&&i.length>0&&t.callback({operation:"delete",index:0,oldValue:r,arrayType:n}),s},unshift(...i){const e=se.proxyToRaw.get(this),t=this,n=se.proxyCallbacks.get(t),r=(n==null?void 0:n.arrayType)||"undo",s=e.unshift(...i);if(n!=null&&n.callback)for(let a=0;a<i.length;a++)n.callback({operation:"add",index:a,newValue:e[a],arrayType:r});return s},splice(i,e,...t){const n=se.proxyToRaw.get(this),r=this,s=se.proxyCallbacks.get(r),a=(s==null?void 0:s.arrayType)||"undo",c=e??n.length-i,l=n.slice(i,i+c),h=n.splice(i,c,...t);if(s!=null&&s.callback){for(let u=0;u<l.length;u++)s.callback({operation:"delete",index:i+u,oldValue:l[u],arrayType:a});for(let u=0;u<t.length;u++)s.callback({operation:"add",index:i+u,newValue:n[i+u],arrayType:a})}return h},customSplice(i,e,...t){const n=se.proxyToRaw.get(this),r=e??n.length-i;return n.splice(i,r,...t)},get length(){return se.proxyToRaw.get(this).length},set length(i){const e=se.proxyToRaw.get(this),t=this,n=se.proxyCallbacks.get(t),r=(n==null?void 0:n.arrayType)||"undo",s=e.length,a=[];if(i<s)for(let c=i;c<s;c++)a.push(e[c]);if(e.length=i,n!=null&&n.callback)for(let c=0;c<a.length;c++)n.callback({operation:"delete",index:i+c,oldValue:a[c],arrayType:r})}});let wi=se;const Ke=class Ke{constructor(i){m(this,"emitter",new ui);m(this,"undoStack");m(this,"redoStack");m(this,"worker");m(this,"control");m(this,"room");m(this,"viewId");m(this,"enableGlobal");m(this,"isTicking");m(this,"_undoTickerId");m(this,"scenePath");m(this,"tickStartStorerCache");m(this,"excludeIds",new Set);m(this,"onChangeScene",x.debounce(()=>{const i=this.control.viewContainerManager.getCurScenePath(this.viewId);if(i){const e=this.undoStack.filter(n=>n.scenePath===i).length,t=this.redoStack.filter(n=>n.scenePath===i).length;this.emitter.emitAsync("onCanUndoStepsUpdate",e,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",t,this.viewId)}},Ke.waitTime));const{control:e,internalMsgEmitter:t,viewId:n,enableGlobal:r}=i;this.control=e,this.emitter=t,Ke.MaxStackLength=this.control.pluginOptions.extras.undoRedo.maxStackLength||we.undoRedo.maxStackLength;const s=new wi,a=[],c=[];this.undoStack=s.createProxy(a,l=>{this.control.renderControl.isWritable&&this.handleArrayChange(l,Te.syncUndoStack)},mi.Undo),this.redoStack=s.createProxy(c,l=>{this.control.renderControl.isWritable&&this.handleArrayChange(l,Te.syncRedoStack)},mi.Redo),this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=n,this.enableGlobal=r}handleArrayChange(i,e){if(!this.collector||!this.enableGlobal)return;const{operation:t,oldValue:n,newValue:r}=i;let s,a;t==="delete"&&n?(s=n,a=n.id):t==="add"&&r&&(s=r,a=r.id),s&&a&&this.collector.dispatchUndoTicker({operation:e,syncType:t,viewId:this.viewId,undoTickerId:a,data:s})}get collector(){return this.control.collector}get undoTickerId(){return this._undoTickerId}get tmpTickStartStorerCache(){return this.tickStartStorerCache}get uid(){var i;return((i=this.control.collector)==null?void 0:i.uid)||""}addExcludeIds(i){if(this.isTicking)for(const e of i)this.excludeIds.add(e)}undoTickerStart(i,e){var t,n;if(this.collector&&(this.undoTickerId!==i||this.scenePath!==e)){this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const r=this.collector.transformKey(Z);this.excludeIds.add(r),this._undoTickerId=i,this.scenePath=e;const s=((t=this.collector)==null?void 0:t.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(x.cloneDeep(s)))}}undoTickerEnd(i,e){this.undoTickerId&&i===this.undoTickerId&&e===this.scenePath?this.undoTickerEndSync(i,this.viewId,e):(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear())}undoTickerEndSync(i,e,t,n=!0){var r,s;if(i===this.undoTickerId&&t===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][t])||{},c=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)),!0);c.size&&(this.undoStack.push({id:`${i}-${this.uid}`,data:x.cloneDeep(c),scenePath:t}),this.undoStack.length>Ke.MaxStackLength&&this.undoStack.shift(),n&&this.emitter.emitAsync("onCanUndoStepsUpdate",this.undoStack.length,this.viewId),this.redoStack.length&&(this.redoStack.length=0,n&&this.emitter.emitAsync("onCanRedoStepsUpdate",this.redoStack.length,this.viewId))),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}}transformToUndoStackItem(i){const e=[];for(const[t,n]of Object.entries(i)){const r=new Set;for(const[s,a]of Object.entries(n.data))r.add({key:s,dataType:a.dataType,data:a.data});e.push({id:t,scenePath:n.scenePath,data:r})}return e}pullServiceData(i){if(i){const{undoStack:e,redoStack:t}=i;if(e){const n=this.transformToUndoStackItem(e);for(let r=this.undoStack.length-1;r>=0;r--){const s=this.undoStack[r];n.findIndex(c=>c.id===s.id)===-1&&this.undoStack.customSplice(r,1)}for(const r of n){const s=this.undoStack.findIndex(a=>a.id===r.id);s!==-1?this.undoStack[s]=r:this.undoStack.customPush(r)}this.undoStack.sort((r,s)=>{const a=parseInt(r.id.split("-")[0]),c=parseInt(s.id.split("-")[0]);return a-c}),this.emitter.emitAsync("onCanUndoStepsUpdate",this.undoStack.length,this.viewId)}if(t){const n=this.transformToUndoStackItem(t);for(let r=this.redoStack.length-1;r>=0;r--){const s=this.redoStack[r];n.findIndex(c=>c.id===s.id)===-1&&this.redoStack.customSplice(r,1)}for(const r of n){const s=this.redoStack.findIndex(a=>a.id===r.id);s!==-1?this.redoStack[s]=r:this.redoStack.customPush(r)}this.redoStack.sort((r,s)=>{const a=parseInt(r.id.split("-")[0]);return parseInt(s.id.split("-")[0])-a}),this.emitter.emitAsync("onCanRedoStepsUpdate",this.redoStack.length,this.viewId)}}else this.clear()}undo(i){var r,s;let e;if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=((r=this.collector)==null?void 0:r.storage[this.viewId])&&((s=this.collector)==null?void 0:s.storage[this.viewId][i])||{},c=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)),!1),l=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)),!0);c.size===l.size?(this.undoStack.push({id:`${this.undoTickerId}-${this.uid}`,data:x.cloneDeep(c),scenePath:i}),this.undoStack.length>Ke.MaxStackLength&&this.undoStack.shift()):c.size&&!l.size&&(e={id:`${this.undoTickerId}-${this.uid}`,data:x.cloneDeep(c),scenePath:i}),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}if(e)this.refreshPlugin(e);else{let a=this.undoStack.length-1;for(;a>=0;){if(this.undoStack[a].scenePath===i){const l=this.undoStack[a];l&&(this.redoStack.push(l),l.data&&this.refreshPlugin(l)),this.undoStack.splice(a,1);break}a--}}const t=this.undoStack.filter(a=>a.scenePath===i).length,n=this.redoStack.filter(a=>a.scenePath===i).length;return this.emitter.emitAsync("onCanUndoStepsUpdate",t,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",n,this.viewId),t}redo(i){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===i){const s=this.redoStack[e];s&&(this.undoStack.push(s),s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const t=this.undoStack.filter(r=>r.scenePath===i).length,n=this.redoStack.filter(r=>r.scenePath===i).length;return this.emitter.emitAsync("onCanUndoStepsUpdate",t,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",n,this.viewId),n}clear(){this.clearUndo(),this.clearRedo()}clearUndo(){this.undoStack.length=0,this.emitter.emitAsync("onCanUndoStepsUpdate",this.undoStack.length,this.viewId)}clearRedo(){this.redoStack.length=0,this.emitter.emitAsync("onCanRedoStepsUpdate",this.redoStack.length,this.viewId)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){const i=this.control.viewContainerManager.getCurScenePath(this.viewId);if(i){const e=this.undoStack.filter(n=>n.scenePath===i).length,t=this.redoStack.filter(n=>n.scenePath===i).length;this.emitter.emitAsync("onCanUndoStepsUpdate",e,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",t,this.viewId)}}especialDiff(i,e,t,n){if(e===Le.Update)switch(t==null?void 0:t.toolsType){case T.Text:{if(n!=null&&n.opt&&(t!=null&&t.opt)){const{uid:s,workState:a,...c}=n==null?void 0:n.opt,{uid:l,workState:h,...u}=t==null?void 0:t.opt;if(i&&x.isEqual(c,u))return!0;n.opt.workState!==D.Done&&(n.opt.workState=D.Done),t.opt.workState!==D.Done&&(t.opt.workState=D.Done)}break}}else if(e===Le.Draw||e===Le.Delete)switch(t==null?void 0:t.toolsType){case T.Text:{if(t!=null&&t.opt){const s=t.opt.text;if(i&&!s)return!0;t.opt.workState!==D.Done&&(t.opt.workState=D.Done)}break}}return!1}diffFun(i,e,t=!0){const n=new Set,r=i.keys(),s=e.keys();for(const a of r){if(this.excludeIds.has(a))continue;const c=i.get(a),l=x.cloneDeep(e.get(a));if(c&&l){if(x.isEqual(l,c)||this.especialDiff(t,Le.Update,l,c))continue;n.add({dataType:Le.Update,key:a,data:[c,l]});continue}this.especialDiff(t,Le.Delete,c)||c&&n.add({dataType:Le.Delete,key:a,data:c})}for(const a of s){if(this.excludeIds.has(a))continue;const c=x.cloneDeep(e.get(a));if(c&&!i.has(a)){if(this.especialDiff(t,Le.Draw,c))continue;n.add({dataType:Le.Draw,key:a,data:c})}}return n}isDrawEffectiveScene(i,e){const{key:t}=i;return!e.includes(t)}isDeleteEffectiveScene(i,e){const{key:t}=i;return!!e.includes(t)}isOldEffectiveScene(i,e){const{key:t}=i;return!!e.includes(t)}isNewEffectiveScene(i,e){const{key:t}=i;return!!e.includes(t)}refreshPlugin(i,e=!1){var a,c,l,h,u,M,y,g,I,w,p,f,N,S,v,j,C,k,P,L,O;let t;const{scenePath:n}=i,r=i.data;if(!r||!this.collector)return;const s=x.cloneDeep(this.collector.storage);for(const A of r.values()){const{dataType:R,data:z,key:V}=A,_=this.collector.getStorageData(this.viewId,n),B=_&&Object.keys(_)||[];switch(R){case Le.Draw:if(t=e?this.isDrawEffectiveScene(A,B):this.isDeleteEffectiveScene(A,B),t)if(e&&!Array.isArray(z)){if((a=z.updateNodeOpt)!=null&&a.useAnimation&&(z.updateNodeOpt.useAnimation=!1),((c=this.collector)==null?void 0:c.getLocalId(V))===Z&&((l=this.collector)!=null&&l.isOwn(A.key))){const J=z.selectIds;if(J){const ie=B.filter(ne=>{var q,$;return((q=this.collector)==null?void 0:q.getLocalId(ne))===Z&&!(($=this.collector)!=null&&$.isOwn(ne))}).map(ne=>{var q;return(q=this.collector)==null?void 0:q.storage[this.viewId][n][ne]});let re=!1;for(const ne of ie)for(let q=0;q<J.length;q++)(h=ne==null?void 0:ne.selectIds)!=null&&h.includes(J[q])&&(delete J[q],re=!0);re&&(z.selectIds=J.filter(ne=>!!ne))}}(u=this.collector)==null||u.updateValue(A.key,z,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}else!e&&!Array.isArray(A.data)&&((M=this.collector)==null||M.updateValue(A.key,void 0,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s}));break;case Le.Delete:if(t=e?this.isDeleteEffectiveScene(A,B):this.isDrawEffectiveScene(A,B),t){if(e&&!Array.isArray(z))(y=this.collector)==null||y.updateValue(V,void 0,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s});else if(!e&&!Array.isArray(z)){if((g=z.updateNodeOpt)!=null&&g.useAnimation&&(z.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(A.key))===Z&&((w=this.collector)!=null&&w.isOwn(A.key))){const J=z.selectIds;if(J){const ie=B.filter(ne=>{var q,$;return((q=this.collector)==null?void 0:q.getLocalId(ne))===Z&&!(($=this.collector)!=null&&$.isOwn(ne))}).map(ne=>{var q;return(q=this.collector)==null?void 0:q.storage[this.viewId][n][ne]});let re=!1;for(const ne of ie)for(let q=0;q<J.length;q++)(p=ne==null?void 0:ne.selectIds)!=null&&p.includes(J[q])&&(delete J[q],re=!0);re&&(z.selectIds=J.filter(ne=>!!ne))}}(f=this.collector)==null||f.updateValue(A.key,A.data,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}}break;case Le.Update:if(t=e?this.isNewEffectiveScene(A,B):this.isOldEffectiveScene(A,B),t){if(e&&Array.isArray(z)&&z.length===2){const J=z[1];if((N=J.updateNodeOpt)!=null&&N.useAnimation&&(J.updateNodeOpt.useAnimation=!1),((S=this.collector)==null?void 0:S.getLocalId(A.key))===Z&&((v=this.collector)!=null&&v.isOwn(A.key))){const ie=J.selectIds;if(ie){const re=B.filter(q=>{var $,ue;return(($=this.collector)==null?void 0:$.getLocalId(q))===Z&&!((ue=this.collector)!=null&&ue.isOwn(q))}).map(q=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][n][q]});let ne=!1;for(const q of re)for(let $=0;$<ie.length;$++)q!=null&&q.selectIds&&((j=q.selectIds)!=null&&j.includes(ie[$]))&&(delete ie[$],ne=!0);ne&&(J.selectIds=ie.filter(q=>!!q))}}(C=this.collector)==null||C.updateValue(V,J,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}else if(!e&&Array.isArray(z)&&z.length===2){const J=z[0];if((k=J.updateNodeOpt)!=null&&k.useAnimation&&(J.updateNodeOpt.useAnimation=!1),((P=this.collector)==null?void 0:P.getLocalId(A.key))===Z&&((L=this.collector)!=null&&L.isOwn(A.key))){const ie=J.selectIds;if(ie){const re=B.filter(q=>{var $,ue;return(($=this.collector)==null?void 0:$.getLocalId(q))===Z&&!((ue=this.collector)!=null&&ue.isOwn(q))}).map(q=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][n][q]});let ne=!1;for(const q of re)for(let $=0;$<ie.length;$++)q!=null&&q.selectIds&&q.selectIds.includes(ie[$])&&(delete ie[$],ne=!0);ne&&(J.selectIds=ie.filter(q=>!!q))}}(O=this.collector)==null||O.updateValue(A.key,J,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}}break}}}};m(Ke,"sdkCallBack"),m(Ke,"MaxStackLength",we.undoRedo.maxStackLength),m(Ke,"waitTime",100);let Ni=Ke;function cp(o){return o instanceof TouchEvent||o instanceof window.TouchEvent||(o==null?void 0:o.touches)&&(o==null?void 0:o.touches.length)||(o==null?void 0:o.changedTouches)&&(o==null?void 0:o.changedTouches.length)}function Ut(o){return cp(o)&&(o.touches&&o.touches.length===1||o.changedTouches&&o.changedTouches.length===1)}function mo(o){return o.touches&&o.touches.length?{x:o.touches[0].pageX,y:o.touches[0].pageY}:o.changedTouches&&o.changedTouches.length?{x:o.changedTouches[0].pageX,y:o.changedTouches[0].pageY}:{x:o.pageX,y:o.pageY}}class gt{constructor(i){m(this,"internalMsgEmitter");m(this,"control");m(this,"mainView");m(this,"appViews",new Map);m(this,"undoTickerStart",(i,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.undoTickerStart(i,t.focusScenePath)});m(this,"undoTickerEnd",(i,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.undoTickerEnd(i,t.focusScenePath)});m(this,"addExcludeIds",(i,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.addExcludeIds(i)});const{control:e,internalMsgEmitter:t}=i;this.control=e,this.internalMsgEmitter=t,this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.on("forceUndoTickerEnd",this.undoTickerEnd),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds)}get worker(){return this.control.worker}getUndoTickerId(i){const e=this.getView(i);if(e&&e.displayer&&e.focusScenePath)return e.displayer.commiter.undoTickerId}undo(){const i=this.focuedView;let e=0;if(i){const t=i.focusScenePath;e=i.displayer.commiter.undo(t)||0}return e}redo(){const i=this.focuedView;let e=0;if(i){const t=i.focusScenePath;e=i.displayer.commiter.redo(t)||0}return e}validator(i,e,t){var s;const n=x.clone(i[e]),r=x.clone(t);e==="focusScenePath"&&t&&!x.isEqual(n,r)&&(this.control.internalSceneChange(i.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!x.isEqual(n,r)&&this.control.internalCameraChange(i.id,r)}destroyAppView(i,e=!1){const t=this.appViews.get(i);t&&(this.control.textEditorManager.clear(i,e),t.displayer.destroy(),this.appViews.delete(i))}createMianView(i){this.mainView=new Proxy(i,{set:(e,t,n)=>(this.worker.isActive&&this.validator(e,t,n),e[t]=n,!0)})}createAppView(i){const e=i.id,t=new Proxy(i,{set:(n,r,s)=>(this.worker.isActive&&this.validator(n,r,s),n[r]=s,!0)});this.appViews.set(e,t)}isAppView(i){return i!==he&&this.appViews.has(i)}getView(i){var e;return i===he?this.mainView:(e=this.appViews)==null?void 0:e.get(i)}getCurScenePath(i){const e=this.getView(i);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(i,e){var t;if(i===he&&this.mainView)this.mainView.focusScenePath=e;else{const n=i&&((t=this.appViews)==null?void 0:t.get(i))||void 0;n&&(n.focusScenePath=e)}}setViewData(i,e){var t;if(i===he&&this.mainView)this.mainView.viewData=e;else{const n=i&&((t=this.appViews)==null?void 0:t.get(i))||void 0;n&&(n.viewData=e)}}setFocuedViewId(i){var e;this.focuedViewId=i,i===he?this.focuedView=this.mainView:this.focuedView=i&&((e=this.appViews)==null?void 0:e.get(i))||void 0,this.worker.currentToolsData&&this.worker.currentToolsData.toolsType===T.Text&&this.activeTextEditor(i),this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(i,e){var n;let t;i===he?t=this.mainView:t=(n=this.appViews)==null?void 0:n.get(i),t&&(t.focusScenePath=e)}destroy(){var i;this.internalMsgEmitter.off("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.off("excludeIds",this.addExcludeIds),this.internalMsgEmitter.off("forceUndoTickerEnd",this.undoTickerEnd),(i=this.mainView)==null||i.displayer.destroy(),this.control.destroyMiniMap(he),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.worker.destroyViewWorker(e.id),this.control.destroyMiniMap(e.id)})}setFocuedViewCameraOpt(i){if(this.focuedView){const e=this.focuedView.cameraOpt;x.isEqual(e,i)||(this.focuedView.cameraOpt=i)}}transformToOriginPoint(i,e){const t=this.getView(e);if(t!=null&&t.viewData){const n=t.viewData.convertToPointOnScreen(i[0],i[1]);return[n.x,n.y]}return i}transformToScenePoint(i,e){const t=this.getView(e);if(t!=null&&t.viewData){const n=t.viewData.convertToPointInWorld({x:i[0],y:i[1]});return[n.x,n.y]}return i}render(i){var e,t,n,r,s,a,c,l,h,u,M,y,g,I,w,p,f;for(const N of i){const{rect:S,imageBitmap:v,isClear:j,isUnClose:C,drawCanvas:k,clearCanvas:P,viewId:L}=N,O=(e=this.getView(L))==null?void 0:e.displayer;if(O&&S){const{dpr:A,canvasBgRef:R,canvasFloatRef:z,canvasServiceFloatRef:V,canvasTopRef:_}=O,B=Math.floor(S.w*A),J=Math.floor(S.h*A),ie=S.x*A,re=S.y*A;if(j){switch(P){case $e.TopFloat:(n=(t=_==null?void 0:_.current)==null?void 0:t.getContext("2d"))==null||n.clearRect(ie,re,B,J);break;case $e.Float:(s=(r=z.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(ie,re,B,J);break;case $e.ServiceFloat:(c=(a=V.current)==null?void 0:a.getContext("2d"))==null||c.clearRect(ie,re,B,J);break;case $e.Bg:(h=(l=R.current)==null?void 0:l.getContext("2d"))==null||h.clearRect(ie,re,B,J);break}continue}if(k&&v)switch(k){case $e.TopFloat:(M=(u=_==null?void 0:_.current)==null?void 0:u.getContext("2d"))==null||M.drawImage(v,0,0,B,J,ie,re,B,J);break;case $e.Float:{(g=(y=z.current)==null?void 0:y.getContext("2d"))==null||g.drawImage(v,0,0,B,J,ie,re,B,J);break}case $e.ServiceFloat:{(w=(I=V.current)==null?void 0:I.getContext("2d"))==null||w.drawImage(v,0,0,B,J,ie,re,B,J);break}case $e.Bg:{(f=(p=R.current)==null?void 0:p.getContext("2d"))==null||f.drawImage(v,0,0,B,J,ie,re,B,J);break}}if(C)continue;v==null||v.close()}}}showFloatBar(i,e,t){const n=this.getView(i),r=n==null?void 0:n.displayer.vDom;r&&r.showFloatBar(e,t)}activeTextEditor(i){const e=this.getView(i),t=e==null?void 0:e.displayer.vDom;t&&t.activeTextEditor()}unActiveTextEditor(i){const e=this.getView(i),t=e==null?void 0:e.displayer.vDom;t&&t.unActiveTextEditor()}showFloatBarBtn(i,e){const t=this.getView(i),n=t==null?void 0:t.displayer.vDom;n&&n.showFloatBarBtn(e)}updateTextEditorInfo(i,e){const t=this.getView(i),n=t==null?void 0:t.displayer.vDom;n&&n.updateTextEditorInfo(e)}setActiveMiniMap(i,e){const t=this.getView(i),n=t==null?void 0:t.displayer.vDom;n&&n.setActiveMiniMap(e&&i||void 0)}}m(gt,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),m(gt,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"webgl2"}),m(gt,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class wo{constructor(i,e,t){m(this,"control");m(this,"internalMsgEmitter");m(this,"commiter");m(this,"cachePoint");m(this,"cacheCursorPoint");m(this,"active",!0);m(this,"toolsKey");m(this,"activePointers",new Set);m(this,"currentDrawingPointerId");m(this,"cursorMouseMove");m(this,"cursorMouseMoveDebounced");m(this,"cursorMouseMoveThrottled");m(this,"cursorMouseMoveFun");m(this,"_transferControlToOffscreenCanvas");m(this,"cursorMouseLeave",()=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled.cancel():this.cursorMouseMoveDebounced.cancel(),this.cacheCursorPoint=[void 0,void 0],this.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)});m(this,"mousedown",i=>{var e;if(this.active&&i.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(i);this.cachePoint=t,t&&(this.worker.originalEventLintener(D.Start,t,this.viewId),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseleave",this.mouseup,!1),document.addEventListener("mouseup",this.mouseup,!1))}});m(this,"mousemove",i=>{if(this.active&&this.viewId){const e=this.getPoint(i);if(this.cachePoint=e,this.checkConsumeCount())return;e&&this.worker.originalEventLintener(D.Doing,e,this.viewId)}});m(this,"mouseup",i=>{if(this.active&&i.button===0&&this.viewId){const e=this.getPoint(i)||this.cachePoint;e?(this.worker.originalEventLintener(D.Done,e,this.viewId).finally(()=>{document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1)}),this.cachePoint=void 0):(document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1))}});m(this,"touchstart",i=>{var e;if(this.active){if(!Ut(i)){this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId);return}if(this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(i);this.cachePoint=t,t&&(this.worker.originalEventLintener(D.Start,t,this.viewId),document.addEventListener("touchmove",this.touchmove,!1),document.addEventListener("touchend",this.touchend,!1))}}});m(this,"touchmove",i=>{if(this.active){if(!Ut(i)){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(i);if(this.cachePoint=e,this.checkConsumeCount())return;e&&this.worker.originalEventLintener(D.Doing,e,this.viewId)}}});m(this,"touchend",i=>{if(this.active){if(!Ut(i)||!this.worker.isAbled()){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(i)||this.cachePoint;e?(this.worker.originalEventLintener(D.Done,e,this.viewId).finally(()=>{document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1)}),this.cachePoint=void 0):(document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1))}}});m(this,"keydown",i=>{this.control.hotkeyManager.colloctHotkey(i)});m(this,"pointerdown",i=>{var e;if(this.active){if(i.pointerType==="touch"&&(this.activePointers.add(i.pointerId),this.activePointers.size>1)){this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId),document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1),this.currentDrawingPointerId=void 0,this.cachePoint=void 0,this.activePointers.clear();return}if(i.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(i);this.cachePoint=t,t&&(this.currentDrawingPointerId=i.pointerId,this.worker.originalEventLintener(D.Start,t,this.viewId),document.addEventListener("pointermove",this.pointermove,!1),document.addEventListener("pointerup",this.pointerup,!1),document.addEventListener("pointercancel",this.pointerup,!1))}}});m(this,"pointermove",i=>{if(this.active){if(i.pointerType==="touch"){if(this.activePointers.size>1){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}if(this.currentDrawingPointerId!==void 0&&i.pointerId!==this.currentDrawingPointerId)return;if(!this.worker.isAbled()){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}}if(this.viewId){const e=this.getPoint(i);if(this.cachePoint=e,this.checkConsumeCount())return;e&&this.worker.originalEventLintener(D.Doing,e,this.viewId)}}});m(this,"pointerup",i=>{if(this.active&&(i.pointerType==="touch"&&this.activePointers.delete(i.pointerId),!(this.currentDrawingPointerId!==void 0&&i.pointerId!==this.currentDrawingPointerId))){if(this.currentDrawingPointerId===void 0){document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1);return}if(i.pointerType==="touch"&&(this.activePointers.size>0||!this.worker.isAbled())){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId),document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1),this.cachePoint=void 0,this.currentDrawingPointerId=void 0;return}if(i.button===0&&this.viewId){const e=this.getPoint(i)||this.cachePoint;e?(this.worker.originalEventLintener(D.Done,e,this.viewId).finally(()=>{document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1)}),this.cachePoint=void 0,this.currentDrawingPointerId=void 0):(document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1),this.currentDrawingPointerId=void 0)}i.pointerType==="touch"&&this.activePointers.size===0&&this.activePointers.clear()}});this.control=i,this.internalMsgEmitter=e;const n={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:t,enableGlobal:!!this.control.pluginOptions.extras.undoRedo.enableGlobal};this.commiter=new Ni(n),this.cursorMouseMoveFun=r=>{const s=this.getPoint(r);this.cacheCursorPoint&&x.isEqual(s,this.cacheCursorPoint)||(this.cacheCursorPoint=s,s&&this.worker.sendCursorEvent(s,this.viewId))},this.cursorMouseMoveDebounced=x.debounce(this.cursorMouseMoveFun,this.moveDelayTime,{trailing:!0}),this.cursorMouseMoveThrottled=x.throttle(this.cursorMouseMoveFun,this.moveDelayTime,{leading:!0}),this.cursorMouseMove=r=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled(r):this.cursorMouseMoveDebounced(r)}}get moveDelayTime(){var i,e;return((e=(i=this.control.pluginOptions.extras)==null?void 0:i.cursor)==null?void 0:e.moveDelayTime)??we.cursor.moveDelayTime}setTransferControlToOffscreenCanvas(i){this._transferControlToOffscreenCanvas={bgCanvas:i.bgCanvas.transferControlToOffscreen(),serviceCanvas:i.serviceCanvas.transferControlToOffscreen(),localCanvas:i.localCanvas.transferControlToOffscreen()}}get transferControlToOffscreenCanvas(){return this._transferControlToOffscreenCanvas}get worker(){return this.control.worker}bindToolsClass(){var n,r;const i=(r=(n=this.worker)==null?void 0:n.currentToolsData)==null?void 0:r.toolsType,e=this.control.renderControl.isWritable,t=this.worker.isAbled();switch(i){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:case T.Selector:this.eventTragetElement&&(this.eventTragetElement.className=e&&t?`netless-whiteboard ${i===T.Selector?"cursor-selector":i===T.Text?"cursor-text":i===T.Eraser||i===T.PencilEraser||i===T.BitMapEraser?"cursor-eraser":i===T.Pencil||i===T.LaserPen?"cursor-pencil":"cursor-arrow"}`:"netless-whiteboard");break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}get parentElement(){var i;return(i=this.eventTragetElement)==null?void 0:i.parentElement}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([ee.Cursor,this.viewId])}getPoint(i){const e=mo(i);if(e&&x.isNumber(e.x)&&x.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}getActive(){return this.active}setActive(i){this.active=i}focusElement(){var i;(i=this.eventTragetElement)==null||i.focus()}async stopEventHandler(){this.cachePoint&&(await this.worker.originalEventLintener(D.Done,this.cachePoint,this.viewId).finally(()=>{document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1)}),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0)}getTranslate(i){const t=(i.style.WebkitTransform||getComputedStyle(i,"").getPropertyValue("-webkit-transform")||i.style.transform||getComputedStyle(i,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=t&&parseInt(t[0])||0,r=t&&parseInt(t[1])||0;return[n,r]}getContainerOffset(i,e){var r;const t=this.getTranslate(i);let n={x:e.x+i.offsetLeft-i.scrollLeft+t[0],y:e.y+i.offsetTop-i.scrollTop+t[1]};return(r=i.offsetParent)!=null&&r.nodeName&&i.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(i.offsetParent,n)),n}bindDisplayerEvent(i){i.addEventListener("pointerdown",this.pointerdown,!1),i.addEventListener("mousemove",this.cursorMouseMove,!1),i.addEventListener("mouseleave",this.cursorMouseLeave,!1),i.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(i){i.removeEventListener("pointerdown",this.pointerdown,!1),document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointerleave",this.pointerup,!1),i.removeEventListener("mousemove",this.cursorMouseMove,!1),i.removeEventListener("mouseleave",this.cursorMouseLeave,!1),i.removeEventListener("keydown",this.keydown,!0)}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get maxDrawCount(){return this.control.pluginOptions.extras.bezier.maxDrawCount||we.bezier.maxDrawCount}checkConsumeCount(){const i=this.worker.getConsumeCount();return this.cachePoint&&this.toolsKey&&this.toolsKey===T.Pencil&&i>this.maxDrawCount?(this.stopEventHandler().finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",ji.longPencil,this.viewId)}),!0):!1}}class lp extends wo{constructor(e,t,n){super(t,n,e);m(this,"_viewId");this._viewId=e}get viewId(){return this._viewId}setViewId(e){this._viewId=e}}class No extends wo{constructor(i,e){super(i,e,he)}get viewId(){return he}updateSize(){this.setCanvassStyle()}destroy(){super.destroy(),this.control.cursor.destroy()}}const up="index-module__Container__nLsM3",hp="index-module__CanvasBox__j2Xe-",dp="index-module__FloatCanvas__d1YR7",gp="index-module__TopFloatCanvas__7IaCw",Mp="index-module__CanvasBoxSub__hcMeK",fp="index-module__SnapshotBox__--eeE",pp="index-module__FloatBar__cm-EL",yp="index-module__RotateBtn__HSSkf",Ip="index-module__ResizeBtn__yjvda",mp="index-module__CursorBox__2UHvI",wp="index-module__TextEditorContainer__Qm8KC",Np="index-module__ResizeTowBox__HOllX",Tp="index-module__FloatBarBtn__FJrOG",ze={Container:up,CanvasBox:hp,FloatCanvas:dp,TopFloatCanvas:gp,CanvasBoxSub:Mp,SnapshotBox:fp,FloatBar:pp,RotateBtn:yp,ResizeBtn:Ip,CursorBox:mp,TextEditorContainer:wp,ResizeTowBox:Np,FloatBarBtn:Tp},vp={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 je(o){return vp[o]}const Cp=o=>{const{workIds:i,mananger:e}=o;return d.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:t=>{t.cancelable&&t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation(),oe.emitMethod(ee.MainEngine,W.DeleteNode,{workIds:i||[Z],viewId:e.viewId})}},d.createElement("img",{alt:"icon",src:je("delete")}))},Sp=o=>{const{workIds:i,viewId:e}=o;return d.createElement("div",{className:"button normal-button",onPointerUp:t=>{t.stopPropagation(),oe.emitMethod(ee.MainEngine,W.CopyNode,{workIds:i||[Z],viewId:e})}},d.createElement("img",{alt:"icon",src:je("duplicate")}))},xn=o=>{const{icon:i,onPointerUpHandler:e}=o;return d.createElement("div",{className:"button normal-button",onPointerUp:e},d.createElement("img",{src:je(i)}))},jp=o=>{const{open:i,setOpen:e,floatBarRef:t}=o,{floatBarData:n,mananger:r}=d.useContext(Ie),[s,a]=d.useState([]),c=d.useMemo(()=>{if(t!=null&&t.current&&x.isNumber(n==null?void 0:n.y)&&(r!=null&&r.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>180){const u={};return u.top="inherit",u.bottom=50,u}else if(!t.current.offsetTop&&(r==null?void 0:r.height)-t.current.offsetTop-n.y<120){const u={};return u.top="inherit",u.bottom=50,u}}},[t==null?void 0:t.current,n,r]),l=d.useMemo(()=>i?d.createElement("div",{className:"image-layer-menu",style:c},d.createElement(xn,{icon:"to-top",onPointerUpHandler:u=>{u.stopPropagation(),oe.emitMethod(ee.MainEngine,W.ZIndexNode,{workIds:[Z],layer:zt.Top,viewId:r==null?void 0:r.viewId})}}),d.createElement(xn,{icon:"to-bottom",onPointerUpHandler:u=>{u.stopPropagation(),oe.emitMethod(ee.MainEngine,W.ZIndexNode,{workIds:[Z],layer:zt.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[i,c]),h=u=>{u.stopPropagation(),u.nativeEvent.stopImmediatePropagation(),e(!i)};return d.useEffect(()=>{x.isEqual(n==null?void 0:n.selectIds,s)||n!=null&&n.selectIds&&!x.isEqual(n==null?void 0:n.selectIds,s)&&(a(n==null?void 0:n.selectIds),e(!1))},[i,n,s,e]),d.createElement("div",{className:`button normal-button ${i&&"active"}`,onPointerUp:h},l,d.createElement("img",{alt:"icon",src:je(i?"layer-pressed":"layer")}))},Pt=o=>{o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()},Dp=()=>d.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},d.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),To=o=>{const{activeColor:i,onPointerUpHandler:e}=o;return d.createElement("div",{className:`font-color-button ${i==="transparent"?"active":""}`,onPointerUp:e},d.createElement("div",{className:"circle none"}))},ii=o=>{const{color:i,activeColor:e,onPointerUpHandler:t}=o;return d.createElement("div",{className:`font-color-button ${i===e?"active":""}`,onPointerUp:t},d.createElement("div",{className:"circle",style:{backgroundColor:Se(i,1)}}))},ni=o=>{const{opacity:i,activeColor:e,setCurOpacity:t}=o,[n,r]=d.useState({x:108,y:0}),s=d.useRef(0);if(d.useEffect(()=>{r({x:i*100+8,y:0})},[]),!e)return null;const a=(u,M)=>{const y=Math.min(Math.max(u-8,0),100)/100;(i!==y||M===D.Done)&&t(y,e,M)},c=(u,M)=>{M.x!==(n==null?void 0:n.x)&&r({x:M.x,y:0}),!s.current&&(s.current=setTimeout(()=>{s.current=0,a(M.x,D.Doing)},100))},l=()=>{t(i,e,D.Start)},h=(u,M)=>{M.x!==(n==null?void 0:n.x)&&r({x:M.x,y:0}),s.current&&(clearTimeout(s.current),s.current=0),a(M.x,D.Done)};return d.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:u=>{s.current&&(clearTimeout(s.current),s.current=0);const M=u.nativeEvent.offsetX,y=Math.min(Math.max(M-12,0),100)/100;r({x:y*100+8,y:0}),t(y,e,D.Done)}},d.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Se(e,0)}, ${Se(e,1)})`}}),d.createElement("div",{className:"range-opacity"},d.createElement(ft,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:h},d.createElement("div",{className:"circle",style:{backgroundColor:Se(e,i)},onPointerUp:Pt}))))},xp=o=>{const{min:i,max:e,activeNumber:t,setActiveNumber:n,color:r}=o,[s,a]=d.useState({x:108,y:0}),c=d.useRef(0);if(d.useEffect(()=>{const y=Math.ceil((t-i)/(e-i)*100)+8;a({x:y,y:0})},[]),!t)return null;const l=(y,g)=>{const I=Math.ceil(Math.max(y-8,0)/100*(e-i)+i);(t!==I||g===D.Done)&&n(I,g)},h=(y,g)=>{g.x!==(s==null?void 0:s.x)&&a({x:g.x,y:0}),!c.current&&(c.current=setTimeout(()=>{c.current=0,l(g.x,D.Doing)},100))},u=()=>{n(t,D.Start)},M=(y,g)=>{g.x!==(s==null?void 0:s.x)&&a({x:g.x,y:0}),c.current&&(clearTimeout(c.current),c.current=0),l(g.x,D.Done)};return d.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:y=>{c.current&&(clearTimeout(c.current),c.current=0);const g=y.nativeEvent.offsetX,I=Math.ceil(Math.max(g-12,0)/100*(e-i)+i),w=Math.ceil((I-i)/(e-i)*100)+8;a({x:w,y:0}),n(I,D.Done)}},d.createElement("div",{className:"range-color",style:{backgroundColor:r}}),d.createElement("div",{className:"range-opacity"},d.createElement(ft,{bounds:"parent",axis:"x",position:s,onDrag:h,onStart:u,onStop:M},d.createElement("div",{className:"circle",style:{backgroundColor:r},onPointerUp:Pt},d.createElement("div",{className:"range-opacity-data-icon"},t)))))},zp=o=>{const{useStroke:i,color:e,activeStrokeType:t,setStrokeType:n}=o;return d.createElement("div",{className:"stroke-type-box"},!!i&&d.createElement("div",{className:`stroke-type-box-item Stroke ${t===fe.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{n(fe.Stroke)}}),d.createElement("div",{className:`stroke-type-box-item Normal ${t===fe.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(fe.Normal)}}),d.createElement("div",{className:`stroke-type-box-item Dotted ${t===fe.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(fe.Dotted)}}),d.createElement("div",{className:`stroke-type-box-item LongDotted ${t===fe.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(fe.LongDotted)}}))},Ap=o=>{const{open:i,setOpen:e,floatBarRef:t}=o,{floatBarData:n,floatBarColors:r,mananger:s,setFloatBarData:a}=d.useContext(Ie),[c,l]=d.useState(),[h,u]=d.useState(1);d.useEffect(()=>{if(n!=null&&n.strokeColor){const[f,N]=ti(n.strokeColor);l(f),u(N)}},[n]);const M=d.useMemo(()=>{if(t!=null&&t.current&&n&&x.isNumber(n==null?void 0:n.y)&&(s!=null&&s.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!t.current.offsetTop&&(s==null?void 0:s.height)-t.current.offsetTop-n.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[n,t,s==null?void 0:s.height]),y=d.useMemo(()=>d.createElement(ni,{key:"strokeColors",opacity:h,activeColor:c,setCurOpacity:(f,N,S)=>{u(f);const v=Se(N,f);n!=null&&n.strokeColor&&a({strokeColor:v}),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],strokeColor:v,workState:S,viewId:s==null?void 0:s.viewId})}}),[h,c,n==null?void 0:n.strokeColor,s==null?void 0:s.viewId,a]),g=d.useMemo(()=>c&&n&&n.thickness?d.createElement(xp,{key:"strokeThickness",min:Math.min(n.thickness,(s==null?void 0:s.control.pluginOptions.extras.strokeWidth.min)||we.strokeWidth.min),max:Math.max(n.thickness,(s==null?void 0:s.control.pluginOptions.extras.strokeWidth.max)||we.strokeWidth.max),activeNumber:n.thickness,setActiveNumber:(f,N)=>{n!=null&&n.thickness&&a({thickness:f}),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],thickness:f,workState:N,viewId:s==null?void 0:s.viewId})},color:c}):null,[c,n,s==null?void 0:s.control.pluginOptions.extras.strokeWidth.max,s==null?void 0:s.control.pluginOptions.extras.strokeWidth.min,s==null?void 0:s.viewId,a]),I=d.useMemo(()=>c&&n&&(n!=null&&n.strokeType)?d.createElement(zp,{key:"strokeType",useStroke:n==null?void 0:n.useStroke,activeStrokeType:n.strokeType,setStrokeType:f=>{n.strokeType&&a({strokeType:f}),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],strokeType:f,workState:D.Done,viewId:s==null?void 0:s.viewId})},color:c}):null,[c,n,s==null?void 0:s.viewId,a]),w=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:M,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},I,g,d.createElement("div",{className:"font-colors-line"}),r.concat().map((f,N)=>{const S=Lt(...f);return d.createElement(ii,{key:N,color:S,activeColor:c,onPointerUpHandler:v=>{v.stopPropagation(),l(S);const j=Se(S,h);n!=null&&n.strokeColor&&(n.strokeColor=j,a({strokeColor:j})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],workState:D.Done,strokeColor:j,viewId:s==null?void 0:s.viewId})}})}),y):null,[i,M,I,g,r,y,c,h,n,s==null?void 0:s.viewId,a]),p=d.useMemo(()=>c?d.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Se(c,h)}},d.createElement("div",{className:"circle"})):null,[c,h]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!i)}},p,w)},bp=o=>{const{open:i,setOpen:e,floatBarRef:t}=o,{floatBarData:n,floatBarColors:r,mananger:s,setFloatBarData:a}=d.useContext(Ie),[c,l]=d.useState(),[h,u]=d.useState(1);d.useEffect(()=>{if(n!=null&&n.fillColor){const[w,p]=(n==null?void 0:n.fillColor)==="transparent"&&["transparent",1]||ti(n.fillColor);l(w),u(p)}},[n]);const M=d.useMemo(()=>{if(t!=null&&t.current&&x.isNumber(n==null?void 0:n.y)&&(s!=null&&s.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>200){const w={};return w.top="inherit",w.bottom=50,w}else if(!t.current.offsetTop&&(s==null?void 0:s.height)-t.current.offsetTop-n.y<140){const w={};return w.top="inherit",w.bottom=50,w}}},[t,n,s==null?void 0:s.height]),y=d.useMemo(()=>c&&c!=="transparent"?d.createElement(ni,{key:"fillColors",opacity:h||0,activeColor:c,setCurOpacity:(w,p,f)=>{u(w);const N=Se(p,w);n!=null&&n.fillColor&&(n.fillColor=N,a({fillColor:N})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],fillColor:c&&Se(p,w),workState:f,viewId:s==null?void 0:s.viewId})}}):null,[c,h,n,s==null?void 0:s.viewId,a]),g=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:M,onPointerUp:w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation()}},d.createElement(To,{activeColor:c,onPointerUpHandler:w=>{w.stopPropagation(),l("transparent");const p="transparent";n!=null&&n.fillColor&&(n.fillColor=p,a({fillColor:p})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],workState:D.Done,fillColor:p,viewId:s==null?void 0:s.viewId})}}),r.map((w,p)=>{const f=Lt(...w);return d.createElement(ii,{key:p,color:f,activeColor:c,onPointerUpHandler:N=>{N.cancelable&&N.preventDefault(),N.stopPropagation(),l(f);const S=Se(f,h);n!=null&&n.fillColor&&(n.fillColor=S,a({fillColor:S})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],workState:D.Done,fillColor:S,viewId:s==null?void 0:s.viewId})}})}),y):null,[i,M,c,r,y,n,s==null?void 0:s.viewId,a,h]),I=d.useMemo(()=>{const w=c&&c!=="transparent"&&Se(c,h)||"transparent";return d.createElement("div",{className:"color-bar-fill"},d.createElement("div",{className:"circle",style:{backgroundColor:w}}))},[c,h]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),e(!i)}},I,g)},kp=o=>{const{open:i,setOpen:e,textOpt:t,workIds:n,floatBarRef:r}=o,{floatBarColors:s,mananger:a,setFloatBarData:c,floatBarData:l}=d.useContext(Ie),[h,u]=d.useState(),[M,y]=d.useState(1);d.useEffect(()=>{if(t!=null&&t.fontColor){const[f,N]=(t==null?void 0:t.fontColor)==="transparent"&&["transparent",0]||ti(t.fontColor);u(f),y(N)}},[t==null?void 0:t.fontColor]);const g=d.useMemo(()=>{if(r!=null&&r.current&&l&&x.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+l.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-l.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[r,l,a==null?void 0:a.height]),I=d.useMemo(()=>h&&h!=="transparent"?d.createElement(ni,{key:"fontColors",opacity:M,activeColor:h,setCurOpacity:(f,N,S)=>{y(f);const v=Se(N,f);l!=null&&l.textOpt&&(l.textOpt.fontColor=v,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],fontColor:h&&v,workState:S,viewId:a==null?void 0:a.viewId})}}):null,[c,h,M,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,n]),w=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},s.map((f,N)=>{const S=Lt(...f);return d.createElement(ii,{key:N,color:S,activeColor:h,onPointerUpHandler:v=>{v.stopPropagation(),u(S);const j=Se(S,M);l!=null&&l.textOpt&&(l.textOpt.fontColor=j,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],workState:D.Done,fontColor:j,viewId:a==null?void 0:a.viewId})}})}),I):null,[c,i,s,I,h,M,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),p=d.useMemo(()=>{const f=h&&h!=="transparent"&&Se(h,M)||"transparent";return d.createElement("div",{className:"color-bar"},d.createElement("div",{className:"color-bar-color",style:{backgroundColor:f}}))},[h,M]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!i)}},d.createElement("img",{alt:"icon",src:je("font-colors")}),p,w)},Ep=o=>{const{open:i,setOpen:e,textOpt:t,workIds:n,floatBarRef:r}=o,{floatBarColors:s,mananger:a,setFloatBarData:c,floatBarData:l}=d.useContext(Ie),[h,u]=d.useState(),[M,y]=d.useState(1);d.useEffect(()=>{if(t!=null&&t.fontBgColor){const[f,N]=(t==null?void 0:t.fontBgColor)==="transparent"&&["transparent",1]||ti(t.fontBgColor);u(f),y(N)}},[t==null?void 0:t.fontBgColor]);const g=d.useMemo(()=>{if(r!=null&&r.current&&l&&x.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+l.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-l.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[r,l,a==null?void 0:a.height]),I=d.useMemo(()=>h&&h!=="transparent"?d.createElement(ni,{key:"fontBgColor",opacity:M||0,activeColor:h,setCurOpacity:(f,N,S)=>{y(f);const v=Se(N,f);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=v,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],fontBgColor:h&&Se(N,f),workState:S,viewId:a==null?void 0:a.viewId})}}):null,[h,M,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,c]),w=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},d.createElement(To,{activeColor:h,onPointerUpHandler:f=>{f.stopPropagation();const N="transparent";u(N),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=N,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],workState:D.Done,fontBgColor:N,viewId:a==null?void 0:a.viewId})}}),s.map((f,N)=>{const S=Lt(...f);return d.createElement(ii,{key:N,color:S,activeColor:h,onPointerUpHandler:v=>{v.stopPropagation(),u(S);const j=Se(S,M);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=j,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],workState:D.Done,fontBgColor:Se(S,M),viewId:a==null?void 0:a.viewId})}})}),I):null,[c,i,s,I,M,h,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),p=d.useMemo(()=>{const f=h&&h!=="transparent"&&Se(h,M)||"transparent";return d.createElement("div",{className:"color-bar",style:{marginTop:0}},d.createElement("div",{className:"color-bar-color",style:{backgroundColor:f}}))},[h,M]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!i)}},d.createElement(Dp,null),p,w)},Lp=o=>{const{bold:i,setBold:e,workIds:t,viewId:n}=o,r=s=>{const a=i==="bold"?"normal":"bold";s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,bold:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i==="bold"?"bold-active":"bold")}))},Pp=o=>{const{underline:i,setUnderline:e,workIds:t,viewId:n}=o,r=s=>{const a=!i;s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,underline:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i?"underline-active":"underline")}))},Op=o=>{const{lineThrough:i,setLineThrough:e,workIds:t,viewId:n}=o,r=s=>{const a=!i;s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,lineThrough:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i?"line-through-active":"line-through")}))},Rp=o=>{const{italic:i,setItalic:e,workIds:t,viewId:n}=o,r=s=>{const a=i==="italic"?"normal":"italic";s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,italic:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i==="italic"?"italic-active":"italic")}))},Yp=o=>{const{open:i,setOpen:e,textOpt:t,workIds:n,style:r,floatBarRef:s}=o,{mananger:a,floatBarData:c}=d.useContext(Ie),[l,h]=d.useState("normal"),[u,M]=d.useState("normal"),[y,g]=d.useState(!1),[I,w]=d.useState(!1);d.useEffect(()=>{t!=null&&t.bold&&h(t.bold),x.isBoolean(t==null?void 0:t.underline)&&g(t.underline||!1),x.isBoolean(t==null?void 0:t.lineThrough)&&w(t.lineThrough||!1),t!=null&&t.italic&&M(t.italic)},[t]);const p=d.useMemo(()=>{if(r&&(s!=null&&s.current)&&x.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>180){const N={};return N.top="inherit",N.bottom=50,N}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<120){const N={};return N.top="inherit",N.bottom=50,N}}},[r,s==null?void 0:s.current,c,a]),f=d.useMemo(()=>i?d.createElement("div",{className:"font-style-menu",style:p,onPointerUp:N=>{N.stopPropagation(),N.nativeEvent.stopImmediatePropagation()}},d.createElement(Lp,{workIds:n||[Z],bold:l,setBold:h,viewId:a==null?void 0:a.viewId}),d.createElement(Pp,{workIds:n||[Z],underline:y,setUnderline:g,viewId:a==null?void 0:a.viewId}),d.createElement(Op,{workIds:n||[Z],lineThrough:I,setLineThrough:w,viewId:a==null?void 0:a.viewId}),d.createElement(Rp,{workIds:n||[Z],italic:u,setItalic:M,viewId:a==null?void 0:a.viewId})):null,[i,n,l,a==null?void 0:a.viewId,y,I,u,p]);return d.createElement("div",{className:`button normal-button ${i&&"active"}`,onPointerUp:N=>{N.stopPropagation(),N.nativeEvent.stopImmediatePropagation(),e(!i)}},d.createElement("img",{alt:"icon",src:je(i?"font-style-active":"font-style")}),f)},He=Object.freeze([12,14,18,24,36,48,64,80,144,288]),ut=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Up=new Map([["selector","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKeSURBVHgB3VTLi1JhFD86zlQ4ysxSXAy1GWYZzMxmYAhHagRB/QN8FLqPFq4FIQhXkS6kTQ4t2ilIKEWgSS0SmVpIm0BdaBJSaOP78XU+PXey6+saburAD+73uL/feX0H4H81GQdj7D7ilrCGFRonk3c6nXvhcJiFQiGWy+Xy/X7/WbPZ1K1KkBOsl0qlO36/n+3t7Q1hs9kYF+WC3W73MTpxc1lBmej7KuJaoVDInZ6eqsWXDw4OwGKxwPHx8Se1Wn1Wr9cjW1tbOTxi9D9bJCJHXEFslsvlR263+246nYZZptPpQK/Xg8lkSvZ6vbNGo5EgQRCLiSPhIqpoNHobo3keCARgkalUKjg5ORlGuL+/n8T6PVAqlefjYmKRdYQSsZ3P5z8aDAYVLGFarRbi8fhbhUKhx2VPEJGP3eEbfTrs4MUwr4EU49FYrVbweDy1SqXyipy95FaI7g8QXS6SyWReHx4e2ubVBc+HtTk6OjqvVqtvvF7vi0gkUiSByyyJ21BGwpswJ2Vmsxlw/0Kj0bxMJBJJl8vFPWkhGogLQoeyMhEJo2jGUzYRjcPh+Op0Oq2pVOoHkXE0SahF/w+E+3KYNEaX2pSyiSiKxeJTFPiGyyriO6FKEUgSESLp4ht4bzQaf4pFYrHYO/ysEXGNyJtjKRqM/zNNhFuf0B7vst3dXdjZ2Yn4fL4vRFwn8jaMGqYPU179LBEGf3bZcNNutwPOtScwKnCLPJ9KLMWEh7mNuIFdVsNXzbBNP+D6Ou1vwAqm8hqMWlmbzWYf4mz6HAwGzbjWwGgqrEklmucJT+UGCfG3wiPjueeNwGvB0zkAid7OMmF8CyOck/I6NJcR4KZYcM6J2vCbUGhvyQIA0gonzCEZkQud9Fcd9W/bL57cJu3lkjuNAAAAAElFTkSuQmCC"],["pencil","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ2SURBVHgB7ZXPqxJRFMfvjI4F+cqkTcrjge9B+B+0LJQ27lq4ijZprly6DaF1COKPjYRrVy0CF/aof6Baa6ChOPkLFcdMm1+dM93RafzxZuptgnfgC3ecO+dzz497JOTKNsZMp9OAoihvZFku4xp/I5dsbL/fP221Wl/D4bCKwnWn0znDd+SSDE/N6ZBgMKjJBNuKzC4dHTgQ5PF4bququn7R7XZJPB4/kSTpHcBOiQlmJ6cMpCvAcdz5ZDJhF4tF1u12v4jFYkc8z683+f1+Uq1W38K+x/AogVQ7ETF4SnB+Ho1GTxKJxDFC2u32q1KpJPh8vvVGjHK5XM4xahv+tYgRcranJrNarfay2WwKoVBIRTUajW42m70P390EOYmFrOEGdhfECEMIwur1Og+p5VOp1CP47piCOB3EXBBJAIuLRcZi7zKsSaVSEbxe70N4FEEL0AyE6VuBZEJD2wmyAkHDmoxGIwGW36ljBP2gUEXf5/wXCDZBsVjky+XyUwpCyBL0k0ai7gNp3WUVUigUvgHoWSaTaRoi2YJojk1r52q1eh2JRJ5YgUB3Pc/n83WyXRPV/A1rWrtgSAZsQL6Q3ynTI1F2QdCMqXNQEGsDMqMgrMt6ChwCaXcGYdBFjA3InELkQxBCtkcEI4riHyPFCMnlcnEKMbYzQhRi0TCKa6A76XT6wWAweD8ejz8Oh8PPcEc+9Xq9D8lkMgLv74Hugo5ALmJzlumG4+IG6BZ1dJ06wtPqN14gmza2FYljD1SljrCTsAaYpjnZFP7CmpADEel/ai4qffLiqSUKFSlEP8xfgYwwlmzyr1KYHoUtgBU4Y9D/Y78AxCeE/aWoyrkAAAAASUVORK5CYII="],["eraser","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANKSURBVHgB1VTdS5NhFD/7iuXa8KNw7SK/IjBYo13soqvEITENtj9AwZiCOCTvQrNWF9rFFPGLrC1iF10Oiy68mBSUF2KB4YabhKKyTfFCc+3Lzb2ds72LsfbxCkZ04Mf7Puc5z/k95+M5AP+R8OAvCW9nZ6cyHo8/SSaTc4RQKKQ+S0JyxFtbW6va39//ZjKZmMbGRkar1TJOp5MhYtwXwBkQkgMROnyXIcmGw+FgYrHY00JkQm4cqYPCaDQ6ZrFY7i4sLPxhMDg4SJ8hTOOWRCJ5jf8npyUiEgE6eGy1Wk12u72gIZHJZDLr4eHhVnl5+YdsslL5pH1+JBIx22y2h9PT01BKpFIpLC4ufhKJRFpcxhEM6fmlSMLh8P35+XlOJCTBYBC2t7dr8fdctv+iRHjI4HK5LAMDA8BVFAoFyOVyH/6KIKsxCtVIgC188+Dg4CV2GJxGpqamYHR09AHklEWQY5d6K/gg67HD3huNRrlKpYLNzU3gIsPDw8Dn84fa29s/4zIK6Rol8xIhSUMikXB2dXXV4AHo6en5KhaLFcvLy0VJent7QaPRzKrV6le4DCEi2UTCnGgE1dXVj3Q6XY1er08drKiosK2urnbjnrFQQxBJU1PTC3y4kyxJGHEMWe2dTUSNIcLZVXl0dAStra3BiYmJOTqgVCqfu91uull3LhlFjbZv6urqiCTIElHaEsC2dq4QqXRlZeUePsrUDFtfX/eZzebbqL+GuIFks1js32OHRtHu7u5H3FMiahFViPNQYuZRO8oQVzY2NibJocFgYAKBgLuzs/M66hsQKuzELx0dHak9rKe3paXlFurrERdZEiGUGARkcAFxmSJAJ/aRkRGGnOKwdPn9/rG9vT0HXaC5uZnxer3+vr4+HdpeRVxClBWLJFuZqhF7gAjL0PGz8fFxvcfjSY0WevVUv5mZmQDWyog1/I52PyBdlxgUqUu+qMSQznVtW1ubBlP3dmlpicnA5/N5+vv770C6bhS9lEu6eHnWFP45NioJS5xxRLdNsrenKH5CusNOWH1BEeTRMTnI6MgZpYYeYhhOmS5eEX0mMhELPktGoBd/zCWSUkTAOs4QZqZ8JsokS8Kp8KWICtlwdv5P5BchBHaEIRURoQAAAABJRU5ErkJggg=="],["text","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4="],["shape","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"]]),Wp=o=>{const{style:i,onClickHandler:e}=o;return d.createElement("div",{className:"font-size-menu",style:i,onPointerUp:t=>{t.stopPropagation(),t.nativeEvent.stopImmediatePropagation()}},He.map(t=>d.createElement("div",{className:"font-size-btn",key:t,onPointerUp:()=>{e(t)}},t)))},Bp=o=>{const i=d.useRef(null),{open:e,setOpen:t,textOpt:n,workIds:r,floatBarRef:s}=o,{mananger:a,floatBarData:c}=d.useContext(Ie),[l,h]=d.useState(0),u=He.length-1;d.useEffect(()=>{n!=null&&n.fontSize&&(h(n.fontSize),i.current&&(i.current.value=n.fontSize.toString()))},[n==null?void 0:n.fontSize]);const M=d.useMemo(()=>{if(s!=null&&s.current&&x.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>180){const p={};return p.top="inherit",p.bottom=35,p}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<120){const p={};return p.top="inherit",p.bottom=35,p}}},[s==null?void 0:s.current,c,a]);function y(p){h(p),p&&p>=He[0]&&p<=He[u]&&oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:r||[Z],fontSize:p,viewId:a==null?void 0:a.viewId})}const g=p=>{var f;(f=i.current)==null||f.blur(),t(!1),w(p)},I=d.useMemo(()=>e?d.createElement(Wp,{onClickHandler:g,style:M}):null,[e,g,M]),w=p=>{p>He[u]&&(p=He[u]),p<He[0]&&(p=He[0]),y(p)};return d.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()}},d.createElement("input",{className:"font-size-input",ref:i,onTouchEnd:()=>{i.current&&i.current.focus()},onClick:()=>{t(!e),i.current&&i.current.focus()},onKeyDown:p=>{if(p.key==="Backspace"){const f=window.getSelection(),N=f==null?void 0:f.getRangeAt(0);if(N!=null&&N.collapsed)return p.cancelable&&p.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:p=>{var f;if(i.current){const N=i.current.value,S=parseInt(N);isNaN(S)?i.current.value="0":i.current.value=S.toString(),S&&p.key==="Enter"&&(w(S),(f=i.current)==null||f.blur(),t(!1))}}}),d.createElement("div",{className:"font-size-btns"},d.createElement("div",{className:"font-size-add",onPointerUp:()=>{w(l+He[0])}}),d.createElement("div",{className:"font-size-cut",onPointerUp:()=>{w(l-He[0])}})),I)},Fp=o=>{const{workIds:i,mananger:e,islocked:t}=o;return d.createElement("div",{className:"button normal-button",onPointerUp:n=>{n.stopPropagation(),oe.emitMethod(ee.MainEngine,W.SetLock,{workIds:i||[Z],isLocked:!t,viewId:e==null?void 0:e.viewId})}},d.createElement("img",{alt:"icon",src:je(t?"unlock-new":"lock-new")}))},Ti=o=>{const{icon:i,min:e,max:t,step:n,value:r,onInputHandler:s}=o,[a,c]=d.useState(0),l=d.useRef(null),h=u=>{u>t&&(u=t),u<e&&(u=e),c(u),s(u),l.current&&(l.current.value=u.toString())};return d.useEffect(()=>{r&&(c(r),l.current&&(l.current.value=r.toString()))},[r]),d.createElement("div",{className:"button input-button"},d.createElement("img",{src:je(i)}),d.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:u=>{if(u.key==="Backspace"){const M=window.getSelection(),y=M==null?void 0:M.getRangeAt(0);if(y!=null&&y.collapsed)return u.cancelable&&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,y=parseInt(M);y&&y&&y>=e&&y<=t&&h(y)}}),d.createElement("div",{className:"input-number-btns"},d.createElement("div",{className:"input-number-add",onPointerUp:()=>{h(a+n)}}),d.createElement("div",{className:"input-number-cut",onPointerUp:()=>{h(a-n)}})))},Qp=o=>{const{icon:i,min:e,max:t,step:n,value:r,onInputHandler:s}=o;return d.createElement("div",{className:"button input-button"},d.createElement("img",{src:je(i)}),d.createElement(Vp,{min:e,max:t,step:n,value:r,onInputHandler:s}))},Vp=o=>{const{value:i,min:e,max:t,onInputHandler:n}=o,[r,s]=d.useState({x:0,y:0});d.useEffect(()=>{s({x:i*100,y:0})},[]);const a=(h,u)=>{let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,t*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const y=M/100;i!==y&&n(y)},c=()=>{},l=(h,u)=>{let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,t*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const y=M/100;i!==y&&n(y)};return d.createElement("div",{className:"range-number-container",onPointerUp:h=>{const u=h.nativeEvent.offsetX-6;let M=Math.floor(Math.max(u,e*100));M=Math.floor(Math.min(M,t*100)),s({x:M,y:0});const y=M/100;i!==y&&n(y)}},d.createElement("div",{className:"range-number-color"}),d.createElement("div",{className:"range-number"},d.createElement(ft,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:c,onStop:l},d.createElement("div",{className:"circle",onPointerUp:Pt}))))},Zp=o=>{const{icon:i,value:e,onChangeHandler:t,style:n}=o,[r,s]=d.useState(0),[a,c]=d.useState(),l=d.useRef(null),h=d.useCallback(y=>{y>=ut.length&&(y=0),y<0&&(y=ut.length-1),s(y),t(ut[y]),c(!1),l.current&&(l.current.value=ut[y])},[t]),u=d.useMemo(()=>{if(n&&n.bottom){const y={};return y.top="inherit",y.bottom=50,y}},[n]);d.useEffect(()=>{e&&(s(ut.indexOf(e)),l.current&&(l.current.value=e))},[e]);const M=d.useMemo(()=>a?d.createElement(Hp,{options:ut,onClickHandler:h,style:u}):null,[a,h,u]);return d.createElement("div",{className:"button input-button"},d.createElement("img",{src:je(i)}),d.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&(l.current.focus(),c(!a))}}),d.createElement("div",{className:"input-number-btns"},d.createElement("div",{className:"input-number-add",onPointerUp:()=>{h(r+1)}}),d.createElement("div",{className:"input-number-cut",onPointerUp:()=>{h(r-1)}})),M)},Hp=o=>{const{options:i,style:e,onClickHandler:t}=o;return d.createElement("div",{className:"select-option-menu",style:e},i.map((n,r)=>d.createElement("div",{className:"select-option-btn",key:n,onPointerUp:()=>{t(r)}},n)))},$p=o=>{const{innerRatio:i,innerVerticeStep:e,vertices:t,mananger:n,setShapeOpt:r}=o,s=l=>{r({vertices:l}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Star,viewId:n.viewId,vertices:l})},a=l=>{r({innerVerticeStep:l}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Star,viewId:n.viewId,innerVerticeStep:l})},c=l=>{r({innerRatio:l}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Star,viewId:n.viewId,innerRatio:l})};return d.createElement(d.Fragment,null,d.createElement(Ti,{value:t,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:s}),d.createElement(Ti,{value:e,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:a}),d.createElement(Qp,{value:i,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:c}))},Gp=o=>{const{mananger:i,vertices:e,setShapeOpt:t}=o,n=r=>{t({vertices:r}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Polygon,viewId:i.viewId,vertices:r})};return d.createElement(Ti,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:n})},Jp=o=>{const{mananger:i,placement:e,setShapeOpt:t}=o,n=r=>{t({placement:r}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.SpeechBalloon,viewId:i.viewId,placement:r})};return d.createElement(Zp,{value:e,icon:"speechBallon-placement",onChangeHandler:n})},ai=o=>{const{icon:i,isActive:e,onPointerUpHandler:t}=o;return d.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:t},d.createElement("img",{src:je(i)}))},qp=o=>{const{toolsTypes:i,style:e,mananger:t,shapeOpt:n,setShapeOpt:r}=o,[s,a]=d.useState();d.useEffect(()=>{i.includes(T.Polygon)?a(T.Polygon):i.includes(T.Star)?a(T.Star):a(T.SpeechBalloon)},[i]);const c=M=>{a(M)},l=d.useMemo(()=>s===T.Polygon&&t&&n.vertices?d.createElement(Gp,{vertices:n.vertices,mananger:t,setShapeOpt:r}):null,[t,s,n,r]),h=d.useMemo(()=>s===T.Star&&t&&n.vertices&&n.innerVerticeStep&&n.innerRatio?d.createElement($p,{mananger:t,vertices:n.vertices,innerVerticeStep:n.innerVerticeStep,innerRatio:n.innerRatio,setShapeOpt:r}):null,[t,s,n,r]),u=d.useMemo(()=>s===T.SpeechBalloon&&t&&n.placement?d.createElement(Jp,{mananger:t,placement:n.placement,setShapeOpt:r}):null,[s,t,n.placement,r]);return d.createElement("div",{className:"shapeOpt-sub-menu",style:e,onPointerUp:Pt},d.createElement("div",{className:"shapeOpt-sub-menu-tabs"},i.includes(T.Polygon)&&d.createElement(ai,{isActive:s===T.Polygon,icon:s===T.Polygon?"polygon-active":"polygon",onPointerUpHandler:c.bind(void 0,T.Polygon)})||null,i.includes(T.Star)&&d.createElement(ai,{isActive:s===T.Star,icon:s===T.Star?"star-active":"star",onPointerUpHandler:c.bind(void 0,T.Star)})||null,i.includes(T.SpeechBalloon)&&d.createElement(ai,{isActive:s===T.SpeechBalloon,icon:s===T.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:c.bind(void 0,T.SpeechBalloon)})||null),d.createElement("div",{className:"shapeOpt-sub-menu-content"},l,h,u))},Xp=o=>{const{open:i,setOpen:e,floatBarRef:t,toolsTypes:n,shapeOpt:r}=o,{floatBarData:s,mananger:a,setFloatBarData:c}=d.useContext(Ie),l=d.useRef(null),h=d.useMemo(()=>{if(t!=null&&t.current&&x.isNumber(s==null?void 0:s.x)&&x.isNumber(s==null?void 0:s.y)&&(a!=null&&a.height)){if(t.current.offsetTop&&t.current.offsetTop+s.y>200){const g={};return g.top="inherit",g.bottom=50,g}else if(!t.current.offsetTop&&(a==null?void 0:a.height)-t.current.offsetTop-(s==null?void 0:s.y)<140){const g={};return g.top="inherit",g.bottom=50,g}}},[t,s==null?void 0:s.x,s==null?void 0:s.y,a==null?void 0:a.height]),u=d.useCallback(g=>{c({shapeOpt:{...r,...g}})},[c,r]),M=d.useMemo(()=>i&&n&&a&&r?d.createElement(qp,{shapeOpt:r,style:h,toolsTypes:n,mananger:a,setShapeOpt:u}):null,[i,h,n,a,r,u]),y=()=>{e(!i)};return d.createElement("div",{ref:l,className:`button normal-button ${i&&"active"}`,onPointerUp:y},M,d.createElement("img",{alt:"icon",src:je(i?"shapes-active":"shapes")}))},vo=d.memo(o=>{const{textOpt:i,workIds:e,noLayer:t,position:n,noDelete:r,noCopy:s}=o,{floatBarData:a,mananger:c}=d.useContext(Ie),[l,h]=d.useState(0),[u,M]=d.useState(),y=d.useRef(null);d.useEffect(()=>{var L,O,A,R;const C={},k=(a==null?void 0:a.w)||((L=i==null?void 0:i.boxSize)==null?void 0:L[0])||0,P=(a==null?void 0:a.h)||((O=i==null?void 0:i.boxSize)==null?void 0:O[1])||0;if(n&&k&&P&&(c!=null&&c.width)&&(c!=null&&c.height)){if(n.y<60?n.y+P<c.height-60?C.bottom=-120:n.y+P<c.height?C.bottom=-58:n.y>0?C.top=62:C.top=-n.y+62:C.top=0,n.x<0)C.left=-n.x+3;else if(n.x+(((A=y.current)==null?void 0:A.offsetWidth)||k)>c.width){const z=c.width-(((R=y.current)==null?void 0:R.offsetWidth)||k)-n.x;C.left=z}M(C);return}M(void 0)},[y,n,a==null?void 0:a.w,a==null?void 0:a.h,c==null?void 0:c.width,c==null?void 0:c.height,i==null?void 0:i.boxSize]);const g=d.useMemo(()=>a!=null&&a.fillColor?d.createElement(bp,{floatBarRef:y,open:l===3,setOpen:C=>{h(C===!0?3:0)}}):null,[a==null?void 0:a.fillColor,l,y]),I=d.useMemo(()=>a!=null&&a.strokeColor?d.createElement(Ap,{floatBarRef:y,open:l===2,setOpen:C=>{h(C===!0?2:0)}}):null,[a==null?void 0:a.strokeColor,l,y]),w=d.useMemo(()=>i!=null&&i.fontColor&&(c!=null&&c.viewId)?d.createElement(kp,{floatBarRef:y,open:l===4,setOpen:C=>{h(C===!0?4:0)},textOpt:i,workIds:e}):null,[i,l,e,c,y]),p=d.useMemo(()=>i!=null&&i.fontBgColor&&(c!=null&&c.viewId)?d.createElement(Ep,{floatBarRef:y,open:l===5,setOpen:C=>{h(C===!0?5:0)},textOpt:i,workIds:e}):null,[i,l,e,c,y]),f=d.useMemo(()=>i&&(c!=null&&c.viewId)?d.createElement(Yp,{floatBarRef:y,open:l===6,setOpen:C=>{h(C===!0?6:0)},textOpt:i,workIds:e,style:u}):null,[i,l,e,c,u,y]),N=d.useMemo(()=>i&&(c!=null&&c.viewId)?d.createElement(Bp,{open:l===7,setOpen:C=>{h(C===!0?7:0)},textOpt:i,workIds:e,floatBarRef:y}):null,[i,l,e,c,y]),S=d.useMemo(()=>t?null:d.createElement(jp,{open:l===1,setOpen:C=>{h(C===!0?1:0)},floatBarRef:y}),[t,l,y]),v=d.useMemo(()=>a!=null&&a.canLock&&c?d.createElement(Fp,{workIds:e,mananger:c,islocked:a.isLocked}):null,[a,c,e]),j=d.useMemo(()=>c&&(c!=null&&c.viewId)&&u&&(a!=null&&a.shapeOpt)&&(a!=null&&a.toolsTypes)?d.createElement(Xp,{open:l===8,setOpen:C=>{h(C===!0?8:0)},floatBarRef:y,workIds:e,toolsTypes:a.toolsTypes,shapeOpt:a.shapeOpt}):null,[a,c,l,u,e,y]);return d.createElement("div",{className:"appliance-plugin-floatbtns",style:u,ref:y},c&&!r&&d.createElement(Cp,{workIds:e,mananger:c}),S,v,!!(c!=null&&c.viewId)&&!s&&d.createElement(Sp,{workIds:e,viewId:c.viewId}),j,f,N,w,p,I,g)}),Kp=o=>{const{data:i,workId:e,updateOptInfo:t,handlePointerDown:n,handlePointerUp:r}=o,{opt:s,scale:a,translate:c,x:l,y:h}=i,u=d.useRef(null),{floatBarData:M}=d.useContext(Ie),y=d.useMemo(()=>{const{fontSize:w,fontFamily:p,underline:f,fontColor:N,lineThrough:S,textAlign:v,strokeColor:j,lineHeight:C,bold:k,italic:P}=s,L=C||w*1.2,O={fontSize:`${w}px`,lineHeight:`${L}px`,color:"transparent",caretColor:N,borderColor:j,minHeight:`${L}px`,pointerEvents:"none",paddingRight:`${P==="italic"?Math.round(w*.3):5}px`};return p&&(O.fontFamily=`${p}`),(S||f)&&(O.textDecoration=`${S&&"line-through"||""}${f&&" underline"||""}`),v&&(O.textAlign=`${v}`),k&&(O.fontWeight=`${k}`),P&&(O.fontStyle=`${P}`),O},[s]),g=d.useMemo(()=>{const w=[];if(s.text){const p=ei(s.text);for(let f=0;f<p.length;f++){const N=p[f];N===""?w.push(d.createElement("div",{key:f})):w.push(d.createElement("div",{key:f},N))}}return w.length?w:d.createElement("div",null)},[s.text]),I=d.useMemo(()=>{if(!M)return{};const w=`scale(${a||1}) ${c&&"translate("+c[0]+"px,"+c[1]+"px)"||""}`;return{left:`${l-M.x}px`,top:`${h-M.y}px`,zIndex:1,transform:w,transformOrigin:"left top",opacity:0,pointerEvents:"auto"}},[a,c,l,h,M]);return d.useEffect(()=>{var w,p;if((w=u.current)!=null&&w.offsetWidth&&((p=u.current)!=null&&p.offsetHeight)){const f=s.boxSize;if((f==null?void 0:f[0])!==u.current.offsetWidth||f[1]!==u.current.offsetHeight||!f){const N=[u.current.offsetWidth,u.current.offsetHeight];t({activeTextId:e,update:{boxSize:N,workState:D.Done}})}}},[s.fontSize,s.italic,s.bold,s.boxSize,e,t]),d.createElement("div",{className:"editor-box readonly",style:I,onPointerDown:()=>{n(e)},onPointerUp:()=>{r()}},d.createElement("div",{className:"editor",ref:u,style:y},g))},_p=o=>{const{mananger:i}=d.useContext(Ie),e=d.useMemo(()=>{var n;const t=r=>{var h,u;if(!i)return;const{activeTextId:s,update:a,syncData:c}=r,l=s&&x.cloneDeep(((h=i.control.textEditorManager)==null?void 0:h.get(s))||((u=o.editors)==null?void 0:u.get(s)));l&&l.opt&&(l.opt={...l.opt,...a},c&&(l.canSync=Object.keys(c).includes("canSync")&&c.canSync||l.canSync,l.canWorker=Object.keys(c).includes("canWorker")&&c.canWorker||l.canWorker),i.control.textEditorManager.updateForViewEdited(s,l))};if((n=o.editors)!=null&&n.size){const r=[];return o.editors.forEach((s,a)=>{if(o.selectIds&&o.selectIds.includes(a)){const c=d.createElement(Kp,{key:a,workId:a,data:s,updateOptInfo:t,handlePointerDown:o.handleTextEditorPointerDown,handlePointerUp:o.handleTextEditorPointerUp});r.push(c)}}),r}return null},[o.editors,o.selectIds,i]);return d.createElement(d.Fragment,null,e)},ey=o=>{const{position:i,textOpt:e,workIds:t,noLayer:n,noCopy:r,noDelete:s,style:a}=o,c=d.useRef(null);return d.createElement("div",{className:ze.FloatBarBtn,ref:c,style:a},d.createElement(vo,{position:i,textOpt:e,workIds:t,noLayer:n,noCopy:r,noDelete:s}))},ty=o=>{const{data:i,workId:e,showFloatBtns:t,handleKeyUp:n,handleFocus:r,runAnimation:s,updateSize:a,rightBoundBreak:c}=o,{activeTextEditor:l,activeTextId:h,mananger:u}=d.useContext(Ie),{opt:M,scale:y,translate:g,x:I,y:w}=i,{fontSize:p,fontFamily:f,underline:N,fontColor:S,lineThrough:v,textAlign:j,lineHeight:C,bold:k,italic:P}=M,L=d.useRef(null),O=d.useMemo(()=>{const Q=p,G=C||Q*1.2,X={fontSize:`${Q}px`,lineHeight:`${G}px`,caretColor:S,color:"transparent",minHeight:`${G}px`,paddingRight:`${P==="italic"?Math.round(Q*.3):5}px`,borderWidth:0};return f&&(X.fontFamily=`${f}`),(v||N)&&(X.textDecoration=`${v&&"line-through"||""} ${N&&" underline"||""}`),j&&(X.textAlign=`${j}`),k&&(X.fontWeight=`${k}`),P&&(X.fontStyle=`${P}`),X},[k,S,f,p,P,C,v,y,j,N]),A=d.useRef(!1),R=d.useRef(6),z=d.useRef({fontSize:O.fontSize,lineHeight:O.lineHeight,fontStyle:O.fontStyle,fontWeight:O.fontWeight,fontFamily:O.fontFamily}),V=d.useMemo(()=>h===e?"hover":M.workState===D.Doing||M.workState===D.Start?"editing":l?"active":"none",[h,e,M.workState,l]);function _(Q){if(L.current){const G=window==null?void 0:window.getSelection(),X=L.current,ae=(le,de)=>{var ce;const ge=document.createRange();if(de.childNodes.length>0){const Ne=de.lastChild;if(Ne){const De=Ne.lastChild;De&&De.nodeType===Node.TEXT_NODE?ge.setStart(De,((ce=De.textContent)==null?void 0:ce.length)||0):ge.setStart(Ne,0)}else ge.setStart(de,0)}else ge.setStart(de,0);ge.collapse(!0),le.removeAllRanges(),le.addRange(ge)};if(G&&X)if(Q&&Ut(Q.nativeEvent)){const{x:le,y:de}=mo(Q.nativeEvent);if(document.caretPositionFromPoint){const ge=document.caretPositionFromPoint(le,de);if(ge){const ce=document.createRange();ce.setStart(ge.offsetNode,ge.offset),ce.collapse(!0),G.removeAllRanges(),G.addRange(ce)}else ae(G,X)}else if(document.caretRangeFromPoint){const ge=document.caretRangeFromPoint(le,de);ge?(G.removeAllRanges(),G.addRange(ge)):ae(G,X)}else ae(G,X)}else ae(G,X);L.current.focus()}}const B=d.useMemo(()=>{const Q=`scale(${y||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`;return{left:`${I-pi*(y||1)}px`,top:`${w-pi*(y||1)}px`,zIndex:2,transform:Q,transformOrigin:"left top",borderColor:V==="editing"||V==="hover"?S:"transparent"}},[y,g,I,w,S,V]),J=d.useMemo(()=>{let Q="";const G="<div></div>";if(M.text){const X=ei(M.text);for(let ae=0;ae<X.length;ae++){const le=X[ae];if(le==="")Q=Q+G;else{const de=le.replace(/[<>&]/g,ge=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[ge]);Q=Q+`<div>${de}</div>`}}}else Q=G;return Q},[M.fontBgColor,M.text]),ie=d.useMemo(()=>{var Q,G;if(V==="hover"){if(y&&t&&x.isNumber(I)&&x.isNumber(w)&&M.boxSize&&x.isNumber((Q=M.boxSize)==null?void 0:Q[0])&&x.isNumber((G=M.boxSize)==null?void 0:G[1])){const X={x:I,y:w},ae={left:I,top:w,width:M.boxSize[0]*y,height:M.boxSize[1]*y};return d.createElement(ey,{position:X,style:ae,textOpt:M,workIds:[e],noLayer:!0,noCopy:!0,noDelete:!0})}return null}return null},[M,t,e,I,w,y,V]);d.useEffect(()=>{h===e&&L.current&&(document.activeElement!==L.current&&_(),r(L.current))},[h,r,e]),d.useEffect(()=>{if(L.current){const Q=parseInt(getComputedStyle(L.current).paddingRight,10)+parseInt(getComputedStyle(L.current).borderWidth,10);R.current=Number(Q)}},[]),d.useEffect(()=>{if(L.current){const Q={fontSize:O.fontSize,lineHeight:O.lineHeight,fontStyle:O.fontStyle,fontWeight:O.fontWeight,fontFamily:O.fontFamily};if(!x.isEqual(z.current,Q)){z.current=Q;const G=[L.current.offsetWidth,L.current.offsetHeight];a(e,G)}}},[O,e,a]);const re=d.useCallback(Q=>{var de,ge;const G=u==null?void 0:u.parentElement;if(!G||!L.current||!c)return!1;const X=L.current.lastChild;if(!X||X instanceof Text)return!1;const ae=X==null?void 0:X.getBoundingClientRect(),le=G==null?void 0:G.getBoundingClientRect();if(!ae||!le)return!1;if(ae.right+Q>le.right){const ce=X.lastChild;if(!(ce instanceof Text))return!1;const Ne=ce.length||0;let De=0,me=0,ke=Ne;for(;me<ke;){const xe=Math.floor((me+ke)/2),_e=document.createRange();_e.setStart(ce,0),_e.setEnd(ce,xe);const Tt=_e.getBoundingClientRect(),Zi=le.right-Tt.right;if(Zi<Q){if(xe>0){const rt=document.createRange();rt.setStart(ce,0),rt.setEnd(ce,xe-1);const vt=rt.getBoundingClientRect();if(le.right-vt.right>=Q){De=xe-1;break}}ke=xe}else{const rt=xe+1;if(rt<Ne){const vt=document.createRange();vt.setStart(ce,0),vt.setEnd(ce,rt);const Hi=vt.getBoundingClientRect();if(le.right-Hi.right<=Q&&Zi>Q){De=xe;break}}me=rt}}if(!De){const xe=document.createRange();xe.setStart(ce,0),xe.setEnd(ce,me);const _e=xe.getBoundingClientRect();le.right-_e.right>Q?De=me:me>0&&(De=me-1)}if(De>0){const xe=((de=ce.textContent)==null?void 0:de.slice(0,De))||"",_e=((ge=ce.textContent)==null?void 0:ge.slice(De))||"";ce.textContent=xe;const Tt=document.createElement("div");return _e&&(Tt.textContent=_e),L.current.appendChild(Tt),re(Q),!0}}return!1},[u==null?void 0:u.parentElement,M.fontBgColor,c]);function ne(Q){if(Q.key==="Backspace"){const G=window.getSelection(),X=G==null?void 0:G.getRangeAt(0);if(X!=null&&X.collapsed)return Q.cancelable&&Q.preventDefault(),document.execCommand("delete",!1),!1}return!1}function q(Q,G){const X=window==null?void 0:window.getSelection();if(X!=null&&X.rangeCount&&Q&&X&&X.anchorNode){const ae=X.anchorOffset,le=X.anchorNode.textContent||"",de=le.slice(0,ae)||"",ge=le.slice(ae)||"",ce=de.concat(Q)||"";$(ce,ge,G)}}function $(Q,G,X){const ae=window==null?void 0:window.getSelection();if(!(ae!=null&&ae.rangeCount)||!ae.anchorNode)return;const le=Q.split(/\n/);let de=ae.anchorNode.parentNode;de===X&&(de=ae.anchorNode);const ge=[...X.childNodes],ce=[];let Ne,De=ae.anchorOffset;for(;ge.length;){const me=ge.pop();if(me){if(me===de){let ke=le[0];le.length===1&&(De=le[0].length,ke=le[0].concat(G)),de.nodeName==="#text"?(de.textContent=ke,Ne=de):de.nodeName==="DIV"&&(de.innerText=ke,Ne=de.childNodes[0]);break}ce.push(me),X.removeChild(me)}}if(le.length>1)for(let me=1;me<le.length;me++){let ke=le[me];const xe=document.createElement("div");me===le.length-1&&(De=ke.length,ke=ke.concat(G)),xe.innerText=ke,X.appendChild(xe),me===le.length-1&&(Ne=xe.childNodes[0])}if(ce.length){ce.reverse();for(const me of ce)X.appendChild(me)}if(Ne&&Ne.nodeName==="#text"){ae.deleteFromDocument();const me=document.createRange(),ke=Math.min(De,(Ne==null?void 0:Ne.length)||0);me.setStart(Ne,ke),me.collapse(!0),ae.removeAllRanges(),ae.addRange(me)}}function ue(Q){if(Q.cancelable&&Q.preventDefault(),Q.stopPropagation(),Q.nativeEvent.stopImmediatePropagation(),L.current){const G=(Q.clipboardData||window.clipboardData).getData("text"),X=window==null?void 0:window.getSelection();if(!(X!=null&&X.rangeCount))return;if(G&&X&&X.anchorNode){const ae=li(G,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]});q(ae,L.current),re((y||1)*R.current),n(L.current)}s()}return!1}function Fe(Q){var X;const G=Q.querySelector("div");if(G){const ae=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT,null);let le;const de=[];for(;(le=ae.nextNode())!==null;)le.parentNode===Q&&de.push(le);if(de.length>0){for(const ce of de)G.appendChild(ce);const ge=window.getSelection();if(ge){const ce=document.createRange(),Ne=G.lastChild;Ne&&Ne.nodeType===Node.TEXT_NODE&&(ce.setStart(Ne,((X=Ne.textContent)==null?void 0:X.length)||0),ce.collapse(!0),ge.removeAllRanges(),ge.addRange(ce))}}}}const Qe=d.useCallback(()=>{const Q=L.current;s(()=>{if(Q){if(Fe(Q),!A.current&&re((y||1)*R.current)){const G=window.getSelection();if(!(G!=null&&G.rangeCount))return!1;const X=document.createRange(),ae=L.current.lastChild;X.selectNodeContents(ae),X.collapse(!1),G.removeAllRanges(),G.addRange(X)}n(Q)}})},[s,n,re,y]);function ot(){A.current=!0,s()}function qe(){A.current=!1,Qe()}function Ve(){Qe(),s()}const Ze=d.useCallback(()=>{if(V==="active"&&L.current&&L.current.parentElement){const Q=L.current.parentElement;Q.style.borderColor=S}},[V,S]),H=d.useCallback(()=>{if(V==="active"&&L.current&&L.current.parentElement){const Q=L.current.parentElement;Q.style.borderColor="transparent"}},[V]);return d.createElement(d.Fragment,null,ie,d.createElement("div",{className:`editor-box ${V}`,style:B,onPointerUp:()=>{var Q;if(V==="editing"){s(()=>{var G;(G=document.activeElement)==null||G.blur(),u==null||u.control.textEditorManager.checkEmptyTextBlur()});return}if(V==="active"&&u){if((Q=u.control.collector)!=null&&Q.hasIncludeSelector(e)){s(()=>{var G;(G=document.activeElement)==null||G.blur(),u==null||u.control.textEditorManager.checkEmptyTextBlur()});return}if(u&&h!==e){u.control.textEditorManager.checkEmptyTextBlur(),u.control.textEditorManager.active(e,u.worker.now);return}}},onMouseOver:Ze,onMouseLeave:H},d.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:L,style:O,onKeyDown:ne,onPaste:ue,onTouchEnd:_,onInput:Qe,onCompositionStart:ot,onCompositionUpdate:Ve,onCompositionEnd:qe,dangerouslySetInnerHTML:{__html:J}})))},iy=o=>{const i=d.useRef(null),{mananger:e}=d.useContext(Ie),t=d.useRef(),n=d.useCallback(s=>{var u,M;const{activeTextId:a,update:c,syncData:l}=s;if(!e)return;const h=a&&x.cloneDeep(((u=e.control.textEditorManager)==null?void 0:u.get(a))||((M=o.editors)==null?void 0:M.get(a)));h&&h.opt&&(h.opt={...h.opt,...c},l&&(h.canSync=Object.keys(l).includes("canSync")&&l.canSync||h.canSync,h.canWorker=Object.keys(l).includes("canWorker")&&l.canWorker||h.canWorker),e.control.textEditorManager.updateForViewEdited(a,h))},[e,o.editors]),r=d.useMemo(()=>{var u;const s=M=>{const y=[];for(let g=0;g<M.childNodes.length;g++){const I=M.childNodes[g];if(I.nodeName==="#text"&&g===0){const w=I.textContent.split(/\n/),p=w.pop();y.push(...w),p&&y.push(p)}else if(I.nodeName==="DIV"){const w=I.innerText.split(/\n/);if(w.length===2&&w[0]===""&&w[1]==="")y.push("");else{const p=w.shift();(p||p==="")&&y.push(p);const f=w.pop();y.push(...w),f&&y.push(f)}}}return y},a=M=>{if(!e)return;const y=M.id,g=e.control.textEditorManager.get(y),I=D.Doing,w=[M.offsetWidth,M.offsetHeight];(!g||g&&(!x.isEqual(g.opt.boxSize,w)||!x.isEqual(g.opt.workState,I)))&&n({activeTextId:y,update:{boxSize:w,workState:I},syncData:{canSync:!0,canWorker:!0}})},c=M=>{var N,S;if(!e)return;const y=s(M),g=M.id,I=e.control.textEditorManager.get(g),w=At(y),p=D.Doing,f=[M.offsetWidth,M.offsetHeight];if(!I||I&&(I.opt.text!==w||!x.isEqual(I.opt.boxSize,f)||!x.isEqual(I.opt.workState,p))){const v=g&&x.cloneDeep(((N=e.control.textEditorManager)==null?void 0:N.get(g))||((S=o.editors)==null?void 0:S.get(g)));v&&v.opt&&(v.opt={...v.opt,text:w,boxSize:f,workState:p},v.canSync=!0,v.canWorker=!0,e.control.textEditorManager.updateForViewEdited(g,v)),e.control.textEditorManager.publicMsgEmitter.emit("textChange",g,M,y,v)}},l=(M,y)=>{if(!e)return;const g=M,I=e.control.textEditorManager.get(g);if(I&&!x.isEqual(I.opt.boxSize,y)){const w=x.cloneDeep(I);w.opt={...w.opt,boxSize:y},w.canSync=!1,w.canWorker=!1,e.control.textEditorManager.updateForViewEdited(g,w)}},h=M=>{t.current&&cancelAnimationFrame(t.current),t.current=requestAnimationFrame(()=>{i!=null&&i.current&&(i==null||i.current.scrollTo({left:0,behavior:"instant"}),M&&M(),t.current=void 0)})};if((u=o.editors)!=null&&u.size){const M=[];return o.editors.forEach((y,g)=>{M.push(d.createElement(ty,{key:g,workId:g,data:y,showFloatBtns:o.showFloatBtns||!1,handleFocus:a,handleKeyUp:c,updateSize:l,runAnimation:h,rightBoundBreak:o.rightBoundBreak||!1}))}),M}return null},[o.editors,o.showFloatBtns,o.rightBoundBreak,e,n]);return d.createElement("div",{className:`${o.className}`,ref:i},r)},ny=()=>{const{floatBarData:o}=d.useContext(Ie);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},d.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}))},oy=()=>{const{floatBarData:o,mananger:i}=d.useContext(Ie),[e,t]=d.useState(),[n,r]=d.useState();d.useEffect(()=>{const c=[];if(i&&x.isNumber(o==null?void 0:o.x)&&x.isNumber(o==null?void 0:o.y)&&(o!=null&&o.points)){const l=i.viewId;if(i.control.viewContainerManager.getView(l))for(const u of o.points){const M=i.control.viewContainerManager.transformToOriginPoint(u,l);c.push(M)}c[0]&&t({x:c[0][0]-((o==null?void 0:o.x)||0),y:c[0][1]-((o==null?void 0:o.y)||0)}),c[1]&&r({x:c[1][0]-((o==null?void 0:o.x)||0),y:c[1][1]-((o==null?void 0:o.y)||0)})}},[i,o==null?void 0:o.points,o==null?void 0:o.x,o==null?void 0:o.y]);const s=d.useMemo(()=>e?d.createElement("div",{className:"point point-dot",style:{borderColor:o==null?void 0:o.selectorColor,left:e.x,top:e.y}}):null,[o==null?void 0:o.selectorColor,e]),a=d.useMemo(()=>n?d.createElement("div",{className:"point point-dot",style:{borderColor:o==null?void 0:o.selectorColor,left:n.x,top:n.y}}):null,[n,o==null?void 0:o.selectorColor]);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},s,a)},ry=()=>{const{floatBarData:o}=d.useContext(Ie);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},d.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}))},sy=()=>{const{floatBarData:o}=d.useContext(Ie);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},d.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},ay=o=>{const{className:i}=o,{floatBarData:e,angle:t,setAngle:n,setOperationType:r,mananger:s}=d.useContext(Ie),[a,c]=d.useState(D.Pending),[l,h]=d.useState(),[u,M]=d.useState(!1),[y,g]=d.useState(new ye),[I,w]=d.useState(new ye),[p,f]=d.useState(!1),N=d.useRef(0),S=d.useRef(null),v=L=>{if(!L){f(!0),M(!1),r(W.None),c(D.Pending);return}f(!1)},j=(L,O)=>{N.current&&(clearTimeout(N.current),N.current=0),c(D.Done),M(!1);const A=Math.round(ye.GetAngleByPoints(y,I,new ye(O.x,O.y)))||0;n(A),r(W.None),oe.emitMethod(ee.MainEngine,W.RotateNode,{workIds:[Z],angle:A,workState:D.Done,viewId:s==null?void 0:s.viewId}),s==null||s.focusElement()};d.useEffect(()=>(oe.activeListener(v),()=>{oe.unmountActiveListener(v)}),[]),d.useEffect(()=>{if(e&&(a===D.Pending||a===D.Done)){const L={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},O={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};w(new ye(O.x,O.y)),g(new ye(L.x,L.y)),h({x:L.x,y:L.y})}},[e,a]);const C=(L,O)=>{if(s!=null&&s.control.worker.isBusy){f(!0),c(D.Pending);return}N.current&&(clearTimeout(N.current),N.current=0),c(D.Start),M(!0);const A=Math.round(ye.GetAngleByPoints(y,I,new ye(O.x,O.y)))||0;n(A),r(W.RotateNode),oe.emitMethod(ee.MainEngine,W.RotateNode,{workIds:[Z],angle:0,workState:D.Start,viewId:s==null?void 0:s.viewId})},k=(L,O)=>{if(s!=null&&s.control.worker.isBusy){f(!0),j(L,O);return}j(L,O)},P=(L,O)=>{if(s!=null&&s.control.worker.isBusy){f(!0),j(L,O);return}N.current||(h({x:O.x,y:O.y}),M(!0),N.current=setTimeout(()=>{N.current=0;const A=Math.round(ye.GetAngleByPoints(y,I,new ye(O.x,O.y)))||0;n(A),r(W.RotateNode),c(D.Doing),oe.emitMethod(ee.MainEngine,W.RotateNode,{workIds:[Z],angle:A,workState:D.Doing,viewId:s==null?void 0:s.viewId})},60))};return d.createElement(ft,{disabled:p,position:l,onStart:C,onDrag:P,onStop:k},d.createElement("div",{className:`${i}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!u&&d.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},d.createElement("img",{alt:"icon",src:je("rotation-button")})),d.createElement("div",{ref:S,className:`appliance-plugin-rotate-mouse-pointer ${u?"active":""}`},d.createElement("img",{alt:"icon",src:je("rotation")}),d.createElement("div",{className:"angle-icon"},t,"°"))))},cy=d.memo(o=>{const{editors:i,canSelectorSwitch:e}=o,{floatBarData:t,setOperationType:n,mananger:r,isNoPointerEvents:s}=d.useContext(Ie),[a,c]=d.useState(),[l,h]=d.useState(!1),u=d.useRef(0),M=d.useRef(),y=d.useRef(D.Pending),g=d.useMemo(()=>!!((t==null?void 0:t.scaleType)===be.none&&(t!=null&&t.canLock)),[t]),I=d.useMemo(()=>t&&t.w&&t.h?{position:"absolute",left:0,top:0,width:t.w,height:t.h,zIndex:2,pointerEvents:g||s?"none":"auto",touchAction:"none"}:{display:"none",pointerEvents:"none"},[t,g,s]),w=C=>{if(!C||t!=null&&t.isLocked){h(!0),y.current=D.Pending,n(W.None);return}h(!1)},p=(C,k)=>{u.current&&(clearTimeout(u.current),u.current=0);const P={x:k.x,y:k.y};n(W.None),y.current=D.Done,c(P),oe.emitMethod(ee.MainEngine,W.TranslateNode,{workIds:[Z],position:P,workState:D.Done,viewId:r==null?void 0:r.viewId})};d.useEffect(()=>(oe.activeListener(w),()=>{oe.unmountActiveListener(w)}),[]),d.useEffect(()=>{if(t&&(t!=null&&t.isLocked)||r!=null&&r.control.worker.isBusy){h(!0);return}h(!1)},[t,r==null?void 0:r.control.worker.isBusy]),d.useEffect(()=>{(y.current===D.Pending||y.current===D.Done)&&x.isNumber(t==null?void 0:t.x)&&x.isNumber(t==null?void 0:t.y)&&c({x:t==null?void 0:t.x,y:t==null?void 0:t.y})},[t==null?void 0:t.x,t==null?void 0:t.y]);const f=()=>{if(r!=null&&r.control.worker.isBusy){h(!0);return}u.current&&(clearTimeout(u.current),u.current=0),x.isNumber(t==null?void 0:t.x)&&x.isNumber(t==null?void 0:t.y)&&(n(W.TranslateNode),y.current=D.Start,oe.emitMethod(ee.MainEngine,W.TranslateNode,{workIds:[Z],position:{x:t==null?void 0:t.x,y:t==null?void 0:t.y},workState:D.Start,viewId:r==null?void 0:r.viewId}))},N=(C,k)=>{var O;r!=null&&r.control.worker.isBusy&&h(!0);const P=y.current,L=M.current;if(p(C,k),M.current&&(M.current=void 0),P===D.Start&&(i!=null&&i.size)&&L){const A=(O=r==null?void 0:r.control.viewContainerManager.getView(r.viewId))==null?void 0:O.focusScenePath;A&&(r==null||r.control.worker.blurSelector(r.viewId,A))}r==null||r.focusElement()},S=(C,k)=>{if(r!=null&&r.control.worker.isBusy){h(!0),p(C,k);return}if(u.current)return;const P={x:k.x,y:k.y};c(P),u.current=setTimeout(()=>{u.current=0,(P.x!==(a==null?void 0:a.x)||P.y!==(a==null?void 0:a.y))&&(M.current&&(M.current=void 0),y.current=D.Doing,oe.emitMethod(ee.MainEngine,W.TranslateNode,{workIds:[Z],position:P,workState:D.Doing,viewId:r==null?void 0:r.viewId}))},60)},v=C=>{e&&(M.current=C)},j=()=>{r&&e&&y.current===D.Start&&M.current&&r.control.textEditorManager.active(M.current)};return d.createElement(ft,{disabled:l,position:a,onStart:f,onDrag:S,onStop:N},d.createElement("div",{style:I},d.createElement(ly,{editors:i,selectIds:(t==null?void 0:t.selectIds)||[],handleTextEditorPointerDown:v,handleTextEditorPointerUp:j})))},(o,i)=>!!x.isEqual(o,i)),ly=d.memo(o=>{const{editors:i,selectIds:e,handleTextEditorPointerDown:t,handleTextEditorPointerUp:n}=o;return i?d.createElement(_p,{editors:i,selectIds:e||[],handleTextEditorPointerDown:t,handleTextEditorPointerUp:n}):null},(o,i)=>!(!x.isEqual(o.editors,i.editors)||!x.isEqual(o.selectIds,i.selectIds))),uy=o=>{const{className:i}=o,[e,t]=d.useState({x:0,y:0,h:0,w:0}),[n,r]=d.useState(),[s,a]=d.useState(),[c,l]=d.useState(),{floatBarData:h,mananger:u,isNoPointerEvents:M,setOperationType:y}=d.useContext(Ie),[g,I]=d.useState(),[w,p]=d.useState(!1),f=d.useRef(0);d.useEffect(()=>{if(h&&u){const O={x:h.x,y:h.y,w:h.w,h:h.h};t(O)}return oe.activeListener(S),()=>{oe.unmountActiveListener(S)}},[]),d.useEffect(()=>{if(u!=null&&u.control.worker.isBusy){p(!0);return}p(!1)},[u==null?void 0:u.control.worker.isBusy]);const N=()=>{if(f.current&&(clearTimeout(f.current),f.current=0),g){const{scale:O,translate:A}=g;y(W.None),oe.emitMethod(ee.MainEngine,W.ScaleNode,{workIds:[Z],scale:O,dir:c,translate:A,originPoint:n,scenePoint:s,workState:D.Done,viewId:u==null?void 0:u.viewId})}u==null||u.focusElement()},S=O=>{if(!O){p(!0);return}p(!1)},v=O=>[[O.x,O.y],[O.x+O.w,O.y],[O.x+O.w,O.y+O.h],[O.x,O.y+O.h]],j=(O,A)=>{switch(A){case"top":case"topLeft":case"left":return O[2];case"topRight":return O[3];case"right":case"bottomRight":case"bottom":return O[0];case"bottomLeft":return O[1]}},C=(O,A,R,z)=>{let V=!1,_=!1;const B={x:e.x,y:e.y,w:e.w,h:e.h},J=[1,1],ie=[0,0];switch(O){case"top":{const $=A.height+e.h;$<0?(_=!0,B.y=e.y+e.h,B.h=Math.abs($)):(B.y=e.y-A.height,B.h=e.h+A.height);break}case"topLeft":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+e.w,B.w=Math.abs($)):(B.x=e.x-A.width,B.w=e.w+A.width);const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+e.h,B.h=Math.abs(ue)):(B.y=e.y-A.height,B.h=e.h+A.height);break}case"topRight":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+$,B.w=Math.abs($)):B.w=e.w+A.width;const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+e.h,B.h=Math.abs(ue)):(B.y=e.y-A.height,B.h=e.h+A.height);break}case"bottom":{const $=A.height+e.h;$<0?(_=!0,B.y=e.y+$,B.h=Math.abs($)):B.h=e.h+A.height;break}case"bottomLeft":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+e.w,B.w=Math.abs($)):(B.x=e.x-A.width,B.w=e.w+A.width);const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+ue,B.h=Math.abs(ue)):B.h=e.h+A.height;break}case"left":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+e.w,B.w=Math.abs($)):(B.x=e.x-A.width,B.w=e.w+A.width);break}case"bottomRight":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+$,B.w=Math.abs($)):B.w=e.w+A.width;const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+ue,B.h=Math.abs(ue)):B.h=e.h+A.height;break}case"right":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+$,B.w=Math.abs($)):B.w=e.w+A.width;break}}J[0]=B.w/e.w,J[1]=B.h/e.h;const ne=v(B).map($=>R.control.viewContainerManager.transformToScenePoint($,R.viewId)),q=j(ne,O);return _&&(ie[1]=q[1]-z[1]),V&&(ie[0]=q[0]-z[0]),{scale:J,translate:ie}},k=(O,A)=>{if(f.current&&(clearTimeout(f.current),f.current=0),u!=null&&u.control.worker.isBusy){p(!0);return}if(h!=null&&h.w&&(h!=null&&h.h)&&u){const R={x:h.x,y:h.y,w:h.w,h:h.h},z=v(R),V=z.map(J=>u.control.viewContainerManager.transformToScenePoint(J,u.viewId)),_=j(z,A),B=j(V,A);t(R),r(_),a(B),l(A),y(W.ScaleNode),oe.emitMethod(ee.MainEngine,W.ScaleNode,{workIds:[Z],originPoint:_,scenePoint:B,workState:D.Start,viewId:u.viewId})}},P=(O,A,R,z)=>{if(!(!u||!n||!s)){if(u!=null&&u.control.worker.isBusy){p(!0),N();return}f.current||(f.current=setTimeout(()=>{f.current=0;const{scale:V,translate:_}=C(A,z,u,s);(!x.isEqual(V,g==null?void 0:g.scale)||!x.isEqual(_,g==null?void 0:g.translate))&&(I({scale:V,translate:_}),y(W.ScaleNode),oe.emitMethod(ee.MainEngine,W.ScaleNode,{workIds:[Z],scale:V,dir:A,translate:_,originPoint:n,scenePoint:s,workState:D.Doing,viewId:u.viewId}))},60))}},L=()=>{u!=null&&u.control.worker.isBusy&&p(!0),N()};return d.createElement(jo.Resizable,{className:`${i}`,boundsByDirection:!0,minWidth:-(((h==null?void 0:h.x)||0)+((h==null?void 0:h.w)||0)),minHeight:-(((h==null?void 0:h.y)||0)+((h==null?void 0:h.h)||0)),size:{width:(h==null?void 0:h.w)||0,height:(h==null?void 0:h.h)||0},style:{position:"absolute",left:h==null?void 0:h.x,top:h==null?void 0:h.y,pointerEvents:M?"none":"auto"},enable:w?!1:{top:(h==null?void 0:h.scaleType)===be.all&&!0||!1,right:(h==null?void 0:h.scaleType)===be.all&&!0||!1,bottom:(h==null?void 0:h.scaleType)===be.all&&!0||!1,left:(h==null?void 0:h.scaleType)===be.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(h==null?void 0:h.scaleType)===be.proportional,onResizeStart:k,onResize:P,onResizeStop:L})},zn=o=>{const{id:i,pos:e,pointMap:t,type:n}=o,{setOperationType:r,mananger:s,floatBarData:a}=d.useContext(Ie),[c,l]=d.useState({x:0,y:0}),[h,u]=d.useState(D.Pending),[M,y]=d.useState(!1),g=d.useRef(0),I=d.useMemo(()=>a?{left:0,top:0}:{},[a]),w=v=>{if(!v||a!=null&&a.isLocked){y(!0),u(D.Pending),r(W.None);return}y(!1)};d.useEffect(()=>(oe.activeListener(w),()=>{oe.unmountActiveListener(w)}),[]),d.useEffect(()=>{x.isNumber(e.x)&&x.isNumber(e.y)&&(h===D.Pending||h===D.Done)&&l({x:e.x,y:e.y})},[e,h]),d.useEffect(()=>{if(a&&(a!=null&&a.isLocked)||s!=null&&s.control.worker.isBusy){y(!0);return}y(!1)},[a,s==null?void 0:s.control.worker.isBusy]);const p=(v,j)=>{g.current&&(clearTimeout(g.current),g.current=0),r(W.None),u(D.Done);const C={x:j.x,y:j.y};if(l(C),s!=null&&s.control.viewContainerManager){const k=s.control.viewContainerManager.transformToScenePoint([C.x,C.y],s.viewId),P=t.get(i);P&&n==="start"?P[0]=k:P&&n==="end"&&(P[1]=k),oe.emitMethod(ee.MainEngine,W.SetPoint,{workId:Z,pointMap:t,workState:D.Done,viewId:s==null?void 0:s.viewId})}s==null||s.focusElement()},f=()=>{if(g.current&&(clearTimeout(g.current),g.current=0),s!=null&&s.control.worker.isBusy){y(!0);return}x.isNumber(e.x)&&x.isNumber(e.y)&&(r(W.SetPoint),u(D.Start),oe.emitMethod(ee.MainEngine,W.SetPoint,{workId:Z,pointMap:t,workState:D.Start,viewId:s==null?void 0:s.viewId}))},N=(v,j)=>{if(s!=null&&s.control.worker.isBusy){y(!0),p(v,j);return}if(g.current)return;const C={x:j.x,y:j.y};l(C),g.current=setTimeout(()=>{if(g.current=0,(C.x!==(j==null?void 0:j.x)||C.y!==(j==null?void 0:j.y))&&(s!=null&&s.control.viewContainerManager)){const k=s.control.viewContainerManager.transformToScenePoint([C.x,C.y],s.viewId),P=t.get(i);P&&n==="start"?P[0]=k:P&&n==="end"&&(P[1]=k),u(D.Doing),oe.emitMethod(ee.MainEngine,W.SetPoint,{workId:Z,pointMap:t,workState:D.Doing,viewId:s==null?void 0:s.viewId})}},60)},S=(v,j)=>{s!=null&&s.control.worker.isBusy&&y(!0),p(v,j)};return d.createElement(ft,{disabled:M,position:c,onStart:f,onDrag:N,onStop:S},d.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:I}))},hy=o=>{const{className:i}=o,{floatBarData:e,mananger:t}=d.useContext(Ie),[n,r]=d.useState(),[s,a]=d.useState(),[c,l]=d.useState(new Map);d.useEffect(()=>{const M=[];if(t&&(e!=null&&e.points)){const y=t.viewId;if(t.control.viewContainerManager.getView(y))for(const I of e.points){const w=t.control.viewContainerManager.transformToOriginPoint(I,y);M.push(w)}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]})},[t,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const h=d.useMemo(()=>n&&(e!=null&&e.selectIds)?d.createElement(zn,{pos:n,type:"start",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]),u=d.useMemo(()=>s&&(e!=null&&e.selectIds)?d.createElement(zn,{pos:s,type:"end",id:e.selectIds[0],pointMap:c}):null,[s,e==null?void 0:e.selectIds,c]);return d.createElement("div",{className:`${i}`},h,u)},dy=d.forwardRef((o,i)=>{const{floatBarData:e,operationType:t}=d.useContext(Ie),n=d.useMemo(()=>(e==null?void 0:e.scaleType)!==be.all||t===W.RotateNode?null:d.createElement(ny,null),[e,t]),r=d.useMemo(()=>(e==null?void 0:e.scaleType)!==be.both||t===W.RotateNode?null:d.createElement(oy,null),[e,t]),s=d.useMemo(()=>(e==null?void 0:e.scaleType)!==be.proportional||t===W.RotateNode?null:d.createElement(ry,null),[e,t]),a=d.useMemo(()=>(e==null?void 0:e.scaleType)===be.none&&(e!=null&&e.canLock)?d.createElement(sy,null):null,[e]);return d.createElement("div",{ref:i,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},a,n,r,s,o.children)}),gy=d.memo(o=>{const{isHide:i,operationType:e,floatBarData:t}=o;return i&&e===W.None&&x.isNumber(t==null?void 0:t.x)&&x.isNumber(t==null?void 0:t.y)&&x.isNumber(t==null?void 0:t.w)&&x.isNumber(t==null?void 0:t.h)?d.createElement("div",{className:ze.FloatBarBtn,style:{left:t==null?void 0:t.x,top:t==null?void 0:t.y,width:t.w,height:t.h}},d.createElement(vo,{position:{x:t.x,y:t.y},textOpt:t==null?void 0:t.textOpt,noLayer:t==null?void 0:t.isLocked})):null},(o,i)=>!!x.isEqual(o,i)),My=d.forwardRef((o,i)=>{const{floatBarData:e,operationType:t,mananger:n}=d.useContext(Ie),{editors:r,isHide:s,canSelectorSwitch:a}=o,c=d.useMemo(()=>{var u;return e!=null&&e.canRotate&&((u=e==null?void 0:e.selectIds)==null?void 0:u.length)===1&&(t===W.None||t===W.RotateNode)?d.createElement(ay,{className:ze.RotateBtn}):null},[e,t]),l=d.useMemo(()=>((e==null?void 0:e.scaleType)===be.all||(e==null?void 0:e.scaleType)===be.proportional)&&(t===W.None||t===W.ScaleNode)&&x.isNumber(e==null?void 0:e.x)&&x.isNumber(e==null?void 0:e.y)?d.createElement(uy,{className:ze.ResizeBtn}):null,[e==null?void 0:e.scaleType,t,e==null?void 0:e.x,e==null?void 0:e.y]),h=d.useMemo(()=>(e==null?void 0:e.scaleType)===be.both&&(t===W.None||t===W.SetPoint)?d.createElement(hy,{className:ze.ResizeTowBox}):null,[e==null?void 0:e.scaleType,t]);return d.createElement("div",{className:ze.FloatBar,onPointerOver:u=>(Pt(u),n==null||n.control.worker.blurCursor(n.viewId),!1)},d.createElement(dy,{ref:i}),d.createElement(cy,{editors:r,canSelectorSwitch:a}),c,l,h,d.createElement(gy,{isHide:s,operationType:t,floatBarData:e}))}),fy=d.memo(My,(o,i)=>!!x.isEqual(o,i));class py extends d.Component{constructor(e){super(e);m(this,"renderAvatar",e=>{var n;const t=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.getCursorName(e);return d.createElement("img",{className:"cursor-selector-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":t,marginRight:r?4:0},src:(n=e.payload)==null?void 0:n.avatar,alt:"avatar"})}else return null});m(this,"getOpacity",e=>{const t=this.getCursorName(e),n=this.detectAvatar(e);return t===void 0&&n===void 0?0:1});m(this,"getCursorName",e=>{if(e.payload)return e.payload.nickName||e.payload.cursorName||e.payload.uid});m(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");m(this,"getCursorBackgroundColor",e=>{const t=this.getCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:t?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});m(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");m(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));m(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));m(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return d.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)});m(this,"renderCursor",e=>{const t=Up.get(e);return t&&this.props.isEnableCursor?d.createElement("img",{className:`cursor-${e}-image`,src:t,alt:`${e}Cursor`}):null})}render(){const{roomMember:e}=this.props,t=this.getCursorName(e);switch(e.memberState.currentApplianceName){case te.pencil:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"5px",marginTop:"4px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("pencil"))));case te.selector:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-selector-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"3px",marginTop:"17px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("selector"))));case te.eraser:case te.pencilEraser:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-eraser-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"2px",marginTop:"8px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("eraser"))));case te.text:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-text-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"0px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("text"))));case te.rectangle:case te.arrow:case te.straight:case te.shape:case te.ellipse:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-shape-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"-3px",marginTop:"19px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("shape"))));default:return null}}}const yy=o=>{var s;const{className:i,info:e,isEnableCursor:t}=o,{roomMember:n,...r}=e||{};return d.createElement("div",{"data-cursor-uid":(s=n==null?void 0:n.payload)==null?void 0:s.uid,className:`${i}`,style:r?{transform:`translate(${r.x}px, ${r.y}px)`}:{display:"none"}},n&&d.createElement(py,{roomMember:n,isEnableCursor:t}))},Iy=o=>{const{className:i,manager:e}=o,[t,n]=d.useState();d.useEffect(()=>(e.internalMsgEmitter.on([ee.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([ee.Cursor,e.viewId],r)}),[e]);function r(a){n(a)}return d.useMemo(()=>{if(t!=null&&t.length){const a=t.map(c=>{var l;return c.roomMember?d.createElement(yy,{key:(l=c.roomMember)==null?void 0:l.memberId,className:i,info:c,isEnableCursor:e.control.cursor.isEnableCursor}):null});return d.createElement(d.Fragment,null,a)}return null},[t])},my=o=>{const{viewId:i,miniMapCanvas:e,highlightColor:t,miniMapManager:n,contianer:r}=o,[s,a]=d.useState();d.useEffect(()=>(c(),n.listener.addListener([i,"viewCameraUpate"],c),n.listener.emitAsync([i,"miniMapCreate"],!0),()=>{n.listener.removeListener([i,"viewCameraUpate"],c)}),[]);const c=()=>{const u=n.maps.get(i);u&&l(u.miniMapCamera,u.viewCamera)},l=(u,M)=>{const{width:y,height:g}=r.getBoundingClientRect(),I=Math.min(y/u.width,g/u.height),w=M.width/M.scale,p=M.height/M.scale,f=[M.centerX,M.centerY],N=[u.centerX,u.centerY],S=[f[0]-N[0],f[1]-N[1]],v=Math.min(u.scale*I,u.scale*I),j=[S[0]*v,S[1]*v,w,p,v];a(j)},h=u=>{var M;if(n.control.renderControl.isWritable){const y=u.nativeEvent.target||u.nativeEvent.srcElement;if(y&&u.nativeEvent&&s){const{width:g,height:I}=y.getBoundingClientRect(),[w,p]=[g/2,I/2],[f,N]=[(u.nativeEvent.offsetX-w)/s[4],(u.nativeEvent.offsetY-p)/s[4]],S=n.maps.get(i);if(S!=null&&S.viewCamera){const[v,j]=[S.miniMapCamera.centerX+f,S.miniMapCamera.centerY+N];(M=n.control.room)==null||M.moveCamera({centerX:v,centerY:j,animationMode:"immediately"})}}}};return d.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:h},d.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),s&&d.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:s[2]*s[4],height:s[3]*s[4],boxSizing:"content-box",border:`2px solid ${t}`,transform:`translate(calc(-50% + ${s[0]}px), calc(-50% + ${s[1]}px))`,pointerEvents:"none"}}))},wy=o=>{const{miniMapManager:i,active:e,className:t}=o,n=d.useMemo(()=>{const r=i.maps;if(e){const s=r.get(e);if(s){const{miniMapCamera:a,viewCamera:c,...l}=s;if(l.contianer&&a&&c){const h=i.highlightColor;return Zt.createPortal(d.createElement(my,{viewId:e,...l,highlightColor:h,miniMapManager:i}),l.contianer)}}}return null},[e,i]);return d.createElement("div",{className:t},n)},Ie=d.createContext({viewId:"",mananger:void 0,floatBarColors:[],floatBarData:void 0,dpr:1,angle:0,operationType:W.None,scale:[1,1],isNoPointerEvents:!1,activeTextEditor:!1,activeTextId:void 0,setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class Vi extends d.Component{constructor(e){var n,r;super(e);m(this,"showTextFloatBar");m(this,"canSelectorSwitch");m(this,"rightBoundBreak");m(this,"setAngle",e=>{this.setState({angle:e})});m(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,showFloatBarBtn:!0,dpr:1,angle:0,operationType:W.None,scale:[1,1],editors:this.editors,activeTextId:(n=this.props.mananger.control.textEditorManager)==null?void 0:n.activeId,activeMiniMapViewId:(r=this.props.mananger.control.miniMapManager)==null?void 0:r.activeViewId};const t=this.props.mananger.control.pluginOptions.extras.textEditor;this.showTextFloatBar=x.isBoolean(t.showFloatBar)?t.showFloatBar:we.textEditor.showFloatBar,this.canSelectorSwitch=x.isBoolean(t==null?void 0:t.canSelectorSwitch)?t.canSelectorSwitch:we.textEditor.canSelectorSwitch,this.rightBoundBreak=x.isBoolean(t==null?void 0:t.rightBoundBreak)?t.rightBoundBreak:we.textEditor.rightBoundBreak}get editors(){return Et(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBarBtn(e){this.setState({showFloatBarBtn:e})}showFloatBar(e,t){const n=e&&t&&{...this.state.floatBarData,...t}||void 0;this.setState({showFloatBar:e,floatBarData:n,angle:0})}activeTextEditor(){this.setState({activeTextEditor:!0})}unActiveTextEditor(){this.setState({activeTextEditor:!1})}updateTextEditorInfo(e){this.setState({activeTextId:e,editors:this.editors})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var t,n,r,s,a,c;const e=!!((n=(t=this.props.mananger.control)==null?void 0:t.room)!=null&&n.floatBarOptions);return d.createElement("div",{className:ze.Container},!this.props.mananger.control.hasOffscreenCanvas&&d.createElement("div",{className:ze.CanvasBox,ref:this.props.refs.canvasContainerRef})||d.createElement("div",{className:ze.CanvasBox},d.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"serviceCanvas",className:ze.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"localCanvas",className:ze.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),!this.props.mananger.control.isUseSimple&&d.createElement("div",{id:"subLocalCanvas",className:ze.CanvasBoxSub,ref:this.props.refs.subLocalCanvasContainerRef}),!this.props.mananger.control.isUseSimple&&d.createElement("canvas",{id:"topCanvas",className:ze.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.mananger.control.hasOffscreenCanvas&&this.props.refs.snapshotContainerRef&&d.createElement("div",{className:ze.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,d.createElement(Ie.Provider,{value:{viewId:this.props.viewId,mananger:this.props.mananger,floatBarColors:e&&((a=(s=(r=this.props.mananger.control)==null?void 0:r.room)==null?void 0:s.floatBarOptions)==null?void 0:a.colors)||[],isNoPointerEvents:!this.state.showFloatBarBtn,floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,activeTextEditor:this.state.activeTextEditor,activeTextId:this.state.activeTextId,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&d.createElement(fy,{ref:this.props.refs.floatBarRef,editors:this.state.editors,isHide:e&&this.state.showFloatBarBtn,canSelectorSwitch:this.canSelectorSwitch})||null,((c=this.state.editors)==null?void 0:c.size)&&d.createElement(iy,{className:ze.TextEditorContainer,showFloatBtns:this.showTextFloatBar&&e&&this.state.showFloatBarBtn||!1,editors:this.state.editors,rightBoundBreak:this.rightBoundBreak})||null),d.createElement(Iy,{className:ze.CursorBox,manager:this.props.mananger}),!this.props.mananger.control.isUseSimple&&d.createElement(wy,{className:ze.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class Ny extends No{constructor(e,t){super(e,t);m(this,"width",1e3);m(this,"height",1e3);m(this,"dpr",Mt());m(this,"vDom");m(this,"eventTragetElement");m(this,"snapshotContainerRef");m(this,"canvasContainerRef",d.createRef());m(this,"subLocalCanvasContainerRef");m(this,"canvasTopRef");m(this,"canvasServiceFloatRef",d.createRef());m(this,"canvasFloatRef",d.createRef());m(this,"canvasBgRef",d.createRef());m(this,"floatBarRef",d.createRef());m(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=d.createRef()),this.control.isUseSimple||(this.canvasTopRef=d.createRef(),this.subLocalCanvasContainerRef=d.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=this.eventTragetElement.offsetWidth||this.width,n=this.eventTragetElement.offsetHeight||this.height,r=Mt();r!==this.dpr&&(this.dpr=r,this.control.worker.updateDpr(this.viewId,this.dpr)),t&&n&&this.canvasContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.canvasContainerRef.current.style.width=`${t}px`,this.canvasContainerRef.current.style.height=`${n}px`),t&&n&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n),t&&n&&this.canvasBgRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.control.isUseOffscreenTransfer||(this.canvasBgRef.current.width=t*this.dpr,this.canvasBgRef.current.height=n*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=t*this.dpr,this.canvasFloatRef.current.height=n*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=t*this.dpr,this.canvasServiceFloatRef.current.height=n*this.dpr),(e=this.canvasTopRef)!=null&&e.current&&(this.canvasTopRef.current.width=t*this.dpr,this.canvasTopRef.current.height=n*this.dpr)))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const t=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const n of t)n.remove()}}}createMainViewDisplayer(e){const t=document.createElement("div");return t.className="appliance-plugin-main-view-displayer",e.appendChild(t),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Zt.render(d.createElement(Vi,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),t),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Ty extends lp{constructor(e,t,n){super(e,t,n);m(this,"dpr",Mt());m(this,"width",1e3);m(this,"height",1e3);m(this,"vDom");m(this,"eventTragetElement");m(this,"canvasContainerRef",d.createRef());m(this,"subLocalCanvasContainerRef");m(this,"canvasTopRef");m(this,"canvasServiceFloatRef",d.createRef());m(this,"canvasFloatRef",d.createRef());m(this,"canvasBgRef",d.createRef());m(this,"floatBarRef",d.createRef());m(this,"containerOffset",{x:0,y:0});this.control.isUseSimple||(this.canvasTopRef=d.createRef(),this.subLocalCanvasContainerRef=d.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=Mt();if(t!==this.dpr&&(this.dpr=t,this.control.worker.updateDpr(this.viewId,this.dpr)),this.canvasContainerRef.current){const n=this.eventTragetElement.offsetWidth||this.width,r=this.eventTragetElement.offsetHeight||this.height;n&&r&&(n!==this.width||r!==this.height)&&(this.width=n,this.height=r,this.canvasContainerRef.current.style.width=`${n}px`,this.canvasContainerRef.current.style.height=`${r}px`)}if(this.canvasBgRef.current){const n=this.eventTragetElement.offsetWidth||this.width,r=this.eventTragetElement.offsetHeight||this.height;n&&r&&(n!==this.width||r!==this.height)&&(this.width=n,this.height=r,this.control.isUseOffscreenTransfer||(this.canvasBgRef.current.width=n*this.dpr,this.canvasBgRef.current.height=r*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=n*this.dpr,this.canvasFloatRef.current.height=r*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=n*this.dpr,this.canvasServiceFloatRef.current.height=r*this.dpr),(e=this.canvasTopRef)!=null&&e.current&&(this.canvasTopRef.current.width=n*this.dpr,this.canvasTopRef.current.height=r*this.dpr)))}}}createAppViewDisplayer(e,t){const n=document.createElement("div");return n.className="appliance-plugin-app-view-displayer",t.appendChild(n),this.eventTragetElement=t.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Zt.render(d.createElement(Vi,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),n),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Pe extends gt{constructor(e){super(e);m(this,"focuedViewId");m(this,"focuedView");m(this,"control");m(this,"tmpFocusedViewId");m(this,"checkScaleTimer");m(this,"onMainViewRelease",async e=>{this.control.textEditorManager.clear(he,!0),this.mainViewDestroy(e),await new Promise(n=>{setTimeout(()=>{n(!0)},0)}),this.onMainViewMounted(e);const t=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(t),this.control.clearSnapshootData()});m(this,"mainViewDestroy",e=>{var t;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const n=e.divElement;if(n){const r=n.getElementsByClassName("appliance-plugin-main-view-displayer");for(const s of r)s.remove()}if(this.mainView.container&&n!==this.mainView.container){const r=this.mainView.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const s of r)s.remove()}(t=this.control.worker)==null||t.destroyViewWorker(this.mainView.id,!0),this.mainView.displayer.destroy(),this.mainView=void 0}});m(this,"onMainViewMounted",e=>{const t=e.divElement;if(!t||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const r=new Ny(this.control,ve.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,l={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...Pe.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...Pe.defaultLayerOpt,width:s,height:a},cameraOpt:{...Pe.defaultCameraOpt,width:s,height:a}},{scale:h,...u}=e.camera;l.cameraOpt={...l.cameraOpt,...u,scale:h===1/0?1:h},this.createMianView({id:he,container:t,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.setFocuedViewId(he),r.createMainViewDisplayer(t),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});m(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData&&this.updateMainViewCamera()});m(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.updateMainViewCamera()});m(this,"updateMainViewCamera",()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera;if(!x.isNumber(e.scale)||e.scale===1/0)return;const t=this.mainView.cameraOpt;if(t){const n=t.width,r=t.height,{width:s,height:a}=this.mainView.viewData.size;(s!==n||a!==r)&&this.mainView.displayer.updateSize();const c=e.scale===1/0?1:e.scale,l=e.centerX||0,h=e.centerY||0,u={...t,scale:c,centerX:l,centerY:h,width:s,height:a};x.isEqual(t,u)||(this.mainView.cameraOpt=u),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 M,y;(y=(M=this.mainView)==null?void 0:M.viewData)==null||y.moveCamera({scale:c,centerX:l,centerY:h,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});m(this,"onAppViewMounted",async e=>{var M;const{appId:t,view:n}=e,r=n.divElement;if(!r||!n.focusScenePath)return;const s=this.appViews.get(t);if(s&&s.displayer){let y=r.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of y)g.remove();if(s.container&&s.container!==r){y=s.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of y)g.remove()}this.destroyAppView(e.appId,!0),(M=this.control.worker)==null||M.destroyViewWorker(t,!0),await new Promise(g=>{setTimeout(()=>{g(!0)},0)})}const a=new Ty(t,this.control,ve.InternalMsgEmitter),c=n.size.width||a.width,l=n.size.height||a.height,u={dpr:a.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...Pe.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...Pe.defaultLayerOpt,width:c,height:l},cameraOpt:{...Pe.defaultCameraOpt,...n.camera,width:c,height:l}};if(this.createAppView({id:t,container:r,displayer:a,cameraOpt:u.cameraOpt,focusScenePath:n.focusScenePath,viewData:n}),a.createAppViewDisplayer(t,r),n.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,t)),n.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,t)),n.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===t){const y=this.control.worker.getLocalWorkViewId();y&&y!==t?this.setFocuedViewId(y):this.setFocuedViewId(t),this.tmpFocusedViewId=void 0}setTimeout(()=>{this.onAppViewCameraUpdated(t)},0)});m(this,"onAppViewSizeUpdated",async e=>{await new Promise(n=>{setTimeout(()=>{n(!0)},0)});const t=this.appViews.get(e);t&&t.viewData&&this.updateAppCamera(e)});m(this,"onAppViewCameraUpdated",async e=>{await new Promise(t=>{setTimeout(()=>{t(!0)},0)}),this.updateAppCamera(e)});m(this,"updateAppCamera",e=>{const t=this.appViews.get(e);if(t&&t.viewData){const n=t.viewData.camera,r=t.cameraOpt;if(r){const{width:s,height:a}=t.viewData.size,c=r.width,l=r.height;(s!==c||a!==l)&&t.displayer.updateSize();const h=n.scale===1/0?1:n.scale,u=n.centerX||0,M=n.centerY||0,y={...r,scale:h,centerX:u,centerY:M,width:s,height:a};x.isEqual(y,r)||(t.cameraOpt=y)}}});this.control=e.control}getViewInitData(e){var n;const t=this.getView(e);if(t){const{width:r,height:s,dpr:a}=t.displayer;(n=this.control.pluginOptions.extras.canvasOpt)!=null&&n.contextType&&(Pe.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.extras.canvasOpt.contextType);const c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Pe.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Pe.defaultLayerOpt,width:r,height:s},cameraOpt:{...Pe.defaultCameraOpt,width:r,height:s}};if(t.viewData){const{scale:l,...h}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...h,scale:l===1/0?1:l}}return c}}async mountView(e){var n,r,s;const t=this.getView(e);if(t){e===((n=this.mainView)==null?void 0:n.id)&&(this.control.cursor.activeCollector(),await this.control.activeWorker()),this.control.isUseOffscreenTransfer&&t.displayer.canvasBgRef.current&&t.displayer.canvasServiceFloatRef.current&&t.displayer.canvasFloatRef.current&&t.displayer.setTransferControlToOffscreenCanvas({bgCanvas:t.displayer.canvasBgRef.current,serviceCanvas:t.displayer.canvasServiceFloatRef.current,localCanvas:t.displayer.canvasFloatRef.current});const a=this.getViewInitData(e);if(a&&((r=this.control.worker)==null||r.createViewWorker(e,a,t.displayer)),t.focusScenePath&&this.control.collector){if(this.control.collector.authStorage){const{renderAuth:c,pageAuth:l}=this.control.collector.authStorage;if(c){const h=c[e];if(h){const{render:u,hide:M,clear:y}=h;this.control.renderControl.syncRenderUids(e,u,M,y);return}}if(l){const h=l[e];if(h){this.control.renderControl.syncPageAuth(e,h,!0);return}}}this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1}),this.control.pluginOptions.extras.undoRedo.enableGlobal&&t.displayer.commiter&&((s=this.control.collector)!=null&&s.globalUndoRedoStackStorage[t.id])&&t.displayer.commiter.pullServiceData(this.control.collector.globalUndoRedoStackStorage[t.id])}}}listenerWindowManager(e){e.emitter.on("focusedChange",t=>{const n=t||he;if(this.focuedViewId!==n)if(this.getView(n)){const s=this.control.worker.getLocalWorkViewId();s&&s!==n?this.setFocuedViewId(s):this.setFocuedViewId(n)}else this.tmpFocusedViewId=n}),e.emitter.on("mainViewScenePathChange",t=>{this.control.onSceneChange(t,he)}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",t=>{this.appViews.get(t.appId)&&(this.destroyAppView(t.appId),this.control.worker.destroyViewWorker(t.appId))}),e.emitter.on("onAppScenePathChange",t=>{const{appId:n,view:r}=t;this.control.onSceneChange(r.focusScenePath,n)}),e.emitter.on("appsChange",t=>{for(const n of this.appViews.keys())t.includes(n)||(this.destroyAppView(n),this.control.worker.destroyViewWorker(n,!0))})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class et extends ve{constructor(e){super(e);m(this,"windowManager");m(this,"viewContainerManager");const t={control:this,internalMsgEmitter:ve.InternalMsgEmitter,publicMsgEmitter:ve.PublicMsgEmitter};this.viewContainerManager=new Pe(t)}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,t)=>{e&&Object.keys(e).forEach(n=>{var s;const r=(s=e[n])==null?void 0:s.newValue;this.renderControl.syncRenderUids(n,r==null?void 0:r.render,r==null?void 0:r.hide,r==null?void 0:r.clear)}),t&&Object.keys(t).forEach(n=>{var s;const r=(s=t[n])==null?void 0:s.newValue;this.renderControl.syncPageAuth(n,r)})}),this.collector.addStorageStateListener(e=>{var a,c;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(he,!0);return}const{diffView:t,diffScenePath:n,diffData:r}=e,s=new Map;if(t){let l;Object.keys(t).forEach(h=>{var M;const u=t[h];if(u&&!u.newValue)(M=this.worker)==null||M.clearViewScenePath(h,!0),u.oldValue&&(l=u.oldValue);else if(u&&u.newValue){for(const y of Object.keys(u.newValue))this.worker.pullServiceData(h,y,{isAsync:!1,useAnimation:!1});l=u.newValue}if(l)for(const y of Object.values(l)){const g=new Set;for(const I of Object.keys(y))I&&g.add(I);s.set(h,g)}})}if(n){let l;Object.keys(n).forEach(h=>{var M;const u=n[h];if(u&&u.viewId&&!u.newValue?((M=this.worker)==null||M.clearViewScenePath(u.viewId,!0),u.oldValue&&(l=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!1}),l=u.newValue),u!=null&&u.viewId&&l){const y=new Set;for(const g of Object.keys(l))g&&y.add(g),s.set(u.viewId,y)}})}r&&Object.keys(r).forEach(l=>{var u,M;const h=r[l];if(h){const{viewId:y}=h,g=s.get(y)||new Set;g.add(l),s.set(y,g),(u=this.worker)==null||u.onServiceDerive(l,h),(M=this.miniMapManager)==null||M.updateMiniMapCamera(y)}});for(const[l,h]of s.entries())ve.InternalMsgEmitter.emit("excludeIds",[...h],l)}),this.pluginOptions.extras.undoRedo.enableGlobal&&this.collector.addGlobalUndoRedoStackListener(e=>{Object.keys(e).forEach(t=>{var s;const n=e[t],r=(s=this.viewContainerManager.getView(t))==null?void 0:s.displayer.commiter;r&&r.pullServiceData(n==null?void 0:n.newValue)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var t,n;(t=this.collector)!=null&&t.serviceStorage&&this.viewContainerManager.getAllViews().forEach(r=>{var s,a,c,l;if(r&&r.focusScenePath&&((s=this.collector)!=null&&s.serviceStorage[r.id])&&this.collector.serviceStorage[r.id][r.focusScenePath]){const h=Object.keys(this.collector.serviceStorage[r.id][r.focusScenePath]);for(const u of h){const M=(a=this.collector)==null?void 0:a.getUidFromKey(u);if(M&&!e.online.includes(M))if((c=this.collector)!=null&&c.isSelector(u))this.renderControl.isWritable&&((l=this.collector)==null||l.updateValue(u,void 0,{viewId:r.id,scenePath:r.focusScenePath,isSync:!0})),this.worker.blurSelector(r.id,r.focusScenePath,u);else{const y=this.textEditorManager.editors.get(u);y&&y.opt&&(y.opt.workState===D.Doing||y.opt.workState===D.Start)&&(y.opt.text&&y.opt.text.replace(/\s*,/g,"")?this.textEditorManager.unActive(u):this.textEditorManager.delete(u))}}}}),(n=this.cursor)==null||n.updateRoomMembers(e)}))}async activeWorker(){await this.worker.init()}setWindowManager(e){var t,n,r,s,a;this.windowManager=e,(n=(t=this.windowManager)==null?void 0:t.mainView)!=null&&n.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 E=class E extends F.InvisiblePlugin{constructor(){super(...arguments);m(this,"onPhaseChanged",e=>{var t;e===F.RoomPhase.Reconnecting&&((t=E.currentManager)==null||t.setSnapshootData())});m(this,"updateRoomWritable",()=>{var e;(e=E.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});m(this,"roomStateChangeListener",async e=>{var t,n;e!=null&&e.roomMembers&&((t=E.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(F.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((n=E.currentManager)==null||n.onMemberChange(e.memberState))})}static async getInstance(e,t){var w;t.options&&(((w=t.options.extras)==null?void 0:w.useWorker)==="mainThread"&&(t.options.cdn.fullWorkerUrl="",t.options.cdn.subWorkerUrl=""),(t.options.extras&&t.options.extras.useWorker!=="mainThread"||!t.options.extras)&&!t.options.cdn.fullWorkerUrl&&!t.options.cdn.subWorkerUrl&&E.logger.error("[ApplianceMultiPlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl"));const n=e.displayer,r=n.callbacks.on,s=n.callbacks.off,a=n.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState;let h;F.isRoom(n)&&(h=n.setWritable),t!=null&&t.logger&&(E.logger=t.logger);let u=n.getInvisiblePlugin(E.kind);u||(u=await E.createApplianceMultiPlugin(n,E.kind)),n&&u&&E.createCurrentManager(e,{cdn:t.options.cdn,extras:{...we,...t.options.extras}},u);const M={displayer:n,windowManager:e,currentManager:E.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(p){var S;E.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const f=(e.mainView||n).getBoundingRect(p),N=await((S=E.currentManager)==null?void 0:S.getBoundingRect(p));return!f.width||!f.height?N:Fi(f,N)},screenshotToCanvasAsync:async function(p,f,N,S,v,j){var A;E.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let C=N,k=S,P=v.scale;C>this.maxScreenshotWidth&&(P=this.maxScreenshotWidth/C*P,C=this.maxScreenshotWidth),k>this.maxScreenshotHeight&&(P=Math.min(this.maxScreenshotHeight/k*P,P),k=this.maxScreenshotHeight),v.scale=P;const L=document.createElement("canvas"),O=L.getContext("2d");L.width=C*(j||1),L.height=k*(j||1),O&&((e.mainView||n).screenshotToCanvas(O,f,C,k,v,j),p.drawImage(L,Math.floor((N-C)/2),Math.floor((S-k)/2),C*(j||1),k*(j||1),0,0,C,k),L.remove()),E.currentManager&&await((A=E.currentManager)==null?void 0:A.screenshotToCanvas(p,f,C,k,v,Math.floor((N-C)/2),Math.floor((S-k)/2)))},scenePreviewAsync:async function(p,f,N,S,v){E.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||n).scenePreview(p,f,N,S,v);const j=document.createElement("img");j.className="appliance-plugin-fill-scene-snapshot-img",f.append(j),getComputedStyle(f).position||(f.style.position="relative"),E.currentManager&&await E.currentManager.scenePreview(p,j)},fillSceneSnapshotAsync:async function(p,f,N,S,v){E.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),f.innerHTML="",(e.mainView||n).fillSceneSnapshot(p,f,N,S,v);const j=N||e.mainView.size.width,C=S||e.mainView.size.height;let k=await this.getBoundingRectAsync(p);k||(k={originX:0,originY:0,width:j,height:C});let P=Math.max(k==null?void 0:k.width,j),L=Math.max(k==null?void 0:k.height,C),O=1;const A=P>j&&Math.min(j/P,O)||O,R=L>C&&Math.min(C/L,O)||O;A<=R?(P=A<1&&j||P,L=Math.floor(L*A)+1,O=A):A>R&&(L=R<1&&C||L,P=Math.floor(P*R)+1,O=R);const z={scale:O,centerX:k.originX+k.width/2,centerY:k.originY+k.height/2},V=document.createElement("canvas"),_=V.getContext("2d");V.width=P,V.height=L,_&&await this.screenshotToCanvasAsync(_,p,P,L,z,devicePixelRatio);const B=document.createElement("img");B.className="appliance-plugin-fill-scene-snapshot-img",B.src=V.toDataURL(),B.onload=()=>{V.remove()},B.onerror=()=>{V.remove(),B.remove()},f.append(B),getComputedStyle(f).position||(f.style.position="relative")},_callbacksOn:function(p,f){E.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&F.isRoom(n)&&n.isWritable?et.InternalMsgEmitter.on(p,f):r.call(n.callbacks,p,f)},_callbacksOnce:function(p,f){E.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&F.isRoom(n)&&n.isWritable?et.InternalMsgEmitter.on(p,f):a.call(n.callbacks,p,f)},_callbacksOff:function(p,f){E.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&F.isRoom(n)&&n.isWritable?et.InternalMsgEmitter.off(p,f):s.call(n.callbacks,p,f)},canRedoSteps(){if(E.logger.info("[ApplianceMultiPlugin] canRedoSteps"),E.currentManager&&F.isRoom(n)&&!n.disableSerialization){const p=E.currentManager.viewContainerManager.focuedView,f=p==null?void 0:p.focusScenePath;if(p&&f)return p.displayer.commiter.redoStack.filter(N=>N.scenePath===f).length}return 0},canUndoSteps(){if(E.logger.info("[ApplianceMultiPlugin] canUndoSteps"),E.currentManager&&F.isRoom(n)&&!n.disableSerialization){const p=E.currentManager.viewContainerManager.focuedView,f=p==null?void 0:p.focusScenePath;if(p&&f)return p.displayer.commiter.undoStack.filter(v=>v.scenePath===f).length}return 0},undo:function(){return E.logger.info("[ApplianceMultiPlugin] undo"),E.currentManager&&F.isRoom(n)&&!n.disableSerialization&&n.isWritable?E.currentManager.viewContainerManager.undo():0},redo:function(){return E.logger.info("[ApplianceMultiPlugin] redo"),E.currentManager&&F.isRoom(n)&&!n.disableSerialization&&n.isWritable?E.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){E.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),E.currentManager&&F.isRoom(n)&&n.isWritable&&(E.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(p){if(E.logger.info("[ApplianceMultiPlugin] insertImage"),E.currentManager&&F.isRoom(n)&&n.isWritable){const f=E.currentManager.viewContainerManager.focuedViewId||he;E.currentManager.worker.insertImage(f,p)}},lockImage:function(p,f){if(E.logger.info("[ApplianceMultiPlugin] lockImage"),E.currentManager&&F.isRoom(n)&&n.isWritable){const N=E.currentManager.viewContainerManager.focuedViewId||he;E.currentManager.worker.lockImage(N,p,f)}},completeImageUpload:function(p,f){if(E.logger.info("[ApplianceMultiPlugin] completeImageUpload"),E.currentManager&&F.isRoom(n)&&n.isWritable){const N=E.currentManager.viewContainerManager.focuedViewId||he;E.currentManager.worker.completeImageUpload(N,p,f)}},getImagesInformation:function(p){return E.logger.info("[ApplianceMultiPlugin] completeImageUpload"),E.currentManager&&F.isRoom(n)&&n.isWritable?E.currentManager.worker.getImagesInformation(p):[]},insertText:function(p,f,N){if(E.logger.info("[ApplianceMultiPlugin] insertText"),E.currentManager&&F.isRoom(n)&&n.isWritable){const S=E.currentManager.viewContainerManager.focuedViewId||he;return E.currentManager.textEditorManager.insertText(S,p,f,N)}},updateText:function(p,f){E.logger.info("[ApplianceMultiPlugin] updateText"),E.currentManager&&F.isRoom(n)&&n.isWritable&&E.currentManager.textEditorManager.updateText(p,f)},callbacks:()=>(E.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...n.callbacks,on:M._callbacksOn.bind(M),once:M._callbacksOnce.bind(M),off:M._callbacksOff.bind(M)}),destroy(){E.currentManager&&(E.logger.info("[ApplianceMultiPlugin] destroy"),E.currentManager.destroy(),E.currentManager=void 0)},setMemberState(p){var N;E.logger.info(`[ApplianceMultiPlugin] setMemberState ${JSON.stringify(p)}`);const f=Object.keys(p);if(F.isRoom(n)&&n.isWritable){if(f.includes("currentApplianceName"))if(p.currentApplianceName&&p.currentApplianceName===te.laserPen){if((N=E.currentManager)!=null&&N.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");p.currentApplianceName=te.pencil,p.useLaserPen=!0}else p.currentApplianceName&&p.currentApplianceName===te.pencil&&(p.useLaserPen=!1);l.call(e.mainView,p);return}throw new Error("[ApplianceMultiPlugin] setMemberState must be called in writable room")},createMiniMap:async function(p,f){if(E.logger.info("[ApplianceMultiPlugin] createMiniMap"),E.currentManager&&F.isRoom(n)&&n.isWritable)return E.currentManager.createMiniMap(p,f)},destroyMiniMap:async function(p){if(E.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),E.currentManager&&F.isRoom(n)&&n.isWritable)return E.currentManager.destroyMiniMap(p)},filterRenderByUid(p,f,N){if(E.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),E.currentManager&&F.isRoom(n)&&n.isWritable)return E.currentManager.filterRenderByUid(p,f,N)},cancelFilterRender(p,f){if(E.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),E.currentManager&&F.isRoom(n)&&n.isWritable)return E.currentManager.cancelFilterRender(p,f)},addListener:(p,f)=>{E.logger.info(`[ApplianceMultiPlugin] addListener ${p}`),et.PublicMsgEmitter.on(p,f)},removeListener:(p,f)=>{E.logger.info(`[ApplianceMultiPlugin] removeListener ${p}`),et.PublicMsgEmitter.off(p,f)},usePlugin:p=>{var f;E.logger.info("[ApplianceMultiPlugin] usePlugin",p.kind),(f=E.currentManager)==null||f.usePlugin(p)},getDisableDeviceInputs(){if(E.currentManager&&F.isRoom(n))return E.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){E.logger.info(`[ApplianceMultiPlugin] setDisableDeviceInputs ${p}`),E.currentManager&&F.isRoom(n)&&(E.currentManager.disableDeviceInputs=p)},getDisableCameraTransform(){if(E.currentManager&&F.isRoom(n))return E.currentManager.disableCameraTransform},setDisableCameraTransform(p){E.logger.info(`[ApplianceMultiPlugin] setDisableCameraTransform ${p}`),E.currentManager&&F.isRoom(n)&&(E.currentManager.disableCameraTransform=p)},getDisableEraseImage(){if(E.currentManager&&F.isRoom(n))return E.currentManager.disableEraseImage},setDisableEraseImage(p){E.logger.info(`[ApplianceMultiPlugin] setDisableEraseImage ${p}`),E.currentManager&&F.isRoom(n)&&(E.currentManager.disableEraseImage=p)},setWritable:async function(p){var f;E.logger.info(`[ApplianceMultiPlugin] setWritable ${p}`),F.isRoom(n)&&h&&(await((f=E.currentManager)==null?void 0:f.setWritable(p)),await h.call(n,p))},requestIdleCallback:(p,f)=>{const N=(f==null?void 0:f.timeout)||0,S=performance.now();let v;const j=new MessageChannel;let C;const k=P=>{try{p({didTimeout:P,timeRemaining:()=>{const O=performance.now()-S;return Math.max(0,N-O)}})}catch(L){E.logger.error("[ApplianceMultiPlugin] requestIdleCallback error:",L)}finally{j.port1.close(),j.port2.close(),v!==void 0&&cancelAnimationFrame(v),C!==void 0&&clearTimeout(C)}};return j.port1.onmessage=()=>{v=requestAnimationFrame(()=>{N>0&&performance.now()-S>=N?k(!0):k(!1)})},j.port2.postMessage(null),N>0&&(C=setTimeout(()=>{k(!0)},N)),C||v||0},cancelIdleCallback:p=>{try{clearTimeout(p),cancelAnimationFrame(p)}catch(f){E.logger.error("[ApplianceMultiPlugin] cancelIdleCallback error:",f)}},injectMethodToObject:(p,f)=>{if(E.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${f}`),typeof p[f]=="function"||typeof p[f]>"u"){(f==="requestIdleCallback"||f==="cancelIdleCallback")&&E.currentManager&&E.currentManager.registerPolyfillMethod(f),p[f]=M[f];return}f==="callbacks"&&(p.callbacks.on=M._callbacksOn.bind(M),p.callbacks.off=M._callbacksOff.bind(M),p.callbacks.once=M._callbacksOnce.bind(M))},blurText:()=>{E.logger.info("[ApplianceMultiPlugin] blurText"),E.currentManager&&F.isRoom(n)&&n.isWritable&&E.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(p,f)=>{var N;if(E.logger.info(`[ApplianceMultiPlugin] hasElements ${p}`),E.currentManager&&F.isRoom(n)&&n.isWritable){let S=p;if(!S){const v=E.currentManager.viewContainerManager.focuedView;S=v==null?void 0:v.focusScenePath}if(S){const v=(N=E.currentManager.collector)==null?void 0:N.getScenePathData(S);if(v){const j=Object.values(v);return j.length>0?f?j.some(C=>f(C.toolsType)):!0:!1}return!1}return!1}},getElements:(p,f)=>{var N;if(E.logger.info(`[ApplianceMultiPlugin] getElements ${p}`),E.currentManager&&F.isRoom(n)&&n.isWritable){let S=p;if(!S){const v=E.currentManager.viewContainerManager.focuedView;S=v==null?void 0:v.focusScenePath}if(S){const v=(N=E.currentManager.collector)==null?void 0:N.getScenePathData(S),j=v&&Object.values(v)||[];return v&&j.length>0&&f?j.filter(C=>f(C.toolsType)):j}return[]}},stopDraw:p=>{if(E.logger.info(`[ApplianceMultiPlugin] stopDraw ${p}`),E.currentManager&&F.isRoom(n))return E.currentManager.stopDraw(p)},setViewLocalScenePathChange:async(p,f)=>{E.logger.info(`[ApplianceMultiPlugin] setViewLocalScenePathChange ${p} ${f}`),E.currentManager&&await E.currentManager.setViewLocalScenePathChange(f,p)}};M.injectMethodToObject(e,"undo"),M.injectMethodToObject(e,"redo"),M.injectMethodToObject(e,"cleanCurrentScene"),M.injectMethodToObject(e,"insertImage"),M.injectMethodToObject(e,"completeImageUpload"),M.injectMethodToObject(e,"lockImage"),M.injectMethodToObject(e,"insertText"),M.injectMethodToObject(e,"updateText"),M.injectMethodToObject(n,"getImagesInformation"),M.injectMethodToObject(n,"callbacks"),M.injectMethodToObject(n,"screenshotToCanvasAsync"),M.injectMethodToObject(n,"getBoundingRectAsync"),M.injectMethodToObject(n,"scenePreviewAsync"),M.injectMethodToObject(n,"fillSceneSnapshotAsync"),M.injectMethodToObject(e.mainView,"setMemberState"),F.isRoom(n)&&M.injectMethodToObject(n,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return M.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return M.canRedoSteps()}});const y=(p,f,N=3)=>{const S=e.focused||he;N>0&&S!==p?setTimeout(()=>{y(p,f,N-1)},100):e.emitter.emit("canUndoStepsChange",f)};et.InternalMsgEmitter.on("onCanUndoStepsUpdate",(p,f)=>{y(f,p)});const g=(p,f,N=3)=>{const S=e.focused||he;N>0&&S!==p?setTimeout(()=>{g(p,f,N-1)},100):e.emitter.emit("canRedoStepsChange",f)};et.InternalMsgEmitter.on("onCanRedoStepsUpdate",(p,f)=>{g(f,p)});const I={...M,callbacks:M.callbacks()};return Object.defineProperty(I,"disableDeviceInputs",{set(p){M.setDisableDeviceInputs(p)},get(){return M.getDisableDeviceInputs()}}),Object.defineProperty(I,"disableCameraTransform",{set(p){M.setDisableCameraTransform(p)},get(){return M.getDisableCameraTransform()}}),Object.defineProperty(I,"disableEraseImage",{set(p){M.setDisableEraseImage(p)},get(){return M.getDisableEraseImage()}}),u&&E.currentManager&&(E.currentManager.bindPlugin(u),u.init(n)),e._appliancePlugin=I,e._appliancePlugin}static onCreate(e){e&&E.currentManager&&(E.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,t){try{await e.createInvisiblePlugin(E,{})}catch(r){if(!e.isWritable){await e.setWritable(!0);const s=await this.createApplianceMultiPlugin(e,t);return await e.setWritable(!1),s}throw r}let n=e.getInvisiblePlugin(t);return n||(n=await E.createApplianceMultiPlugin(e,t)),n}get isReplay(){return F.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var n,r;const t=e.state;(n=E.currentManager)==null||n.onRoomMembersChange(t.roomMembers),F.isRoom(e)&&((r=E.currentManager)==null||r.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;E.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=E.currentManager)==null||e.destroy(),E.currentManager=void 0}};m(E,"kind","appliance-multi-plugin"),m(E,"currentManager"),m(E,"logger",{info:console.log,warn:console.warn,error:console.error}),m(E,"createCurrentManager",(e,t,n)=>{E.currentManager&&E.currentManager.destroy();const r={plugin:n,displayer:e.displayer,options:t},s=new et(r);if(E.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),E.currentManager=s,e.room){const a=s.hasOffscreenCanvas;e.room.logger.info(`[ApplianceMultiPlugin] use ${a?"worker":"mainThread"}`)}});let vi=E;var vy=Be,Cy=function(){return vy.Date.now()},Sy=Cy,jy=/\s/;function Dy(o){for(var i=o.length;i--&&jy.test(o.charAt(i)););return i}var xy=Dy,zy=xy,Ay=/^\s+/;function by(o){return o&&o.slice(0,zy(o)+1).replace(Ay,"")}var ky=by,Ey=pt,Ly=it,Py="[object Symbol]";function Oy(o){return typeof o=="symbol"||Ly(o)&&Ey(o)==Py}var Ry=Oy,Yy=ky,An=nt,Uy=Ry,bn=NaN,Wy=/^[-+]0x[0-9a-f]+$/i,By=/^0b[01]+$/i,Fy=/^0o[0-7]+$/i,Qy=parseInt;function Vy(o){if(typeof o=="number")return o;if(Uy(o))return bn;if(An(o)){var i=typeof o.valueOf=="function"?o.valueOf():o;o=An(i)?i+"":i}if(typeof o!="string")return o===0?o:+o;o=Yy(o);var e=By.test(o);return e||Fy.test(o)?Qy(o.slice(2),e?2:8):Wy.test(o)?bn:+o}var Zy=Vy,Hy=nt,ci=Sy,kn=Zy,$y="Expected a function",Gy=Math.max,Jy=Math.min;function qy(o,i,e){var t,n,r,s,a,c,l=0,h=!1,u=!1,M=!0;if(typeof o!="function")throw new TypeError($y);i=kn(i)||0,Hy(e)&&(h=!!e.leading,u="maxWait"in e,r=u?Gy(kn(e.maxWait)||0,i):r,M="trailing"in e?!!e.trailing:M);function y(j){var C=t,k=n;return t=n=void 0,l=j,s=o.apply(k,C),s}function g(j){return l=j,a=setTimeout(p,i),h?y(j):s}function I(j){var C=j-c,k=j-l,P=i-C;return u?Jy(P,r-k):P}function w(j){var C=j-c,k=j-l;return c===void 0||C>=i||C<0||u&&k>=r}function p(){var j=ci();if(w(j))return f(j);a=setTimeout(p,I(j))}function f(j){return a=void 0,M&&t?y(j):(t=n=void 0,s)}function N(){a!==void 0&&clearTimeout(a),l=0,t=c=n=a=void 0}function S(){return a===void 0?s:f(ci())}function v(){var j=ci(),C=w(j);if(t=arguments,n=this,c=j,C){if(a===void 0)return g(c);if(u)return clearTimeout(a),a=setTimeout(p,i),y(c)}return a===void 0&&(a=setTimeout(p,i)),s}return v.cancel=N,v.flush=S,v}var Xy=qy,Ky=Xy,_y=nt,eI="Expected a function";function tI(o,i,e){var t=!0,n=!0;if(typeof o!="function")throw new TypeError(eI);return _y(e)&&(t="leading"in e?!!e.leading:t,n="trailing"in e?!!e.trailing:n),Ky(o,i,{leading:t,maxWait:i,trailing:n})}var iI=tI;const nI=Ht(iI);class oI extends No{constructor(e,t){super(e,t);m(this,"width",1e3);m(this,"height",1e3);m(this,"dpr",Mt());m(this,"vDom");m(this,"eventTragetElement");m(this,"snapshotContainerRef");m(this,"canvasContainerRef",d.createRef());m(this,"subLocalCanvasContainerRef");m(this,"canvasTopRef");m(this,"canvasServiceFloatRef",d.createRef());m(this,"canvasFloatRef",d.createRef());m(this,"canvasBgRef",d.createRef());m(this,"floatBarRef",d.createRef());m(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=d.createRef()),this.control.isUseSimple||(this.canvasTopRef=d.createRef(),this.subLocalCanvasContainerRef=d.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=this.eventTragetElement.offsetWidth,n=this.eventTragetElement.offsetHeight,r=Mt();r!==this.dpr&&(this.dpr=r,this.control.worker.updateDpr(this.viewId,this.dpr)),t&&n&&this.canvasContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n),t&&n&&this.canvasBgRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.control.isUseOffscreenTransfer||(this.canvasBgRef.current.width=t*this.dpr,this.canvasBgRef.current.height=n*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=t*this.dpr,this.canvasFloatRef.current.height=n*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=t*this.dpr,this.canvasServiceFloatRef.current.height=n*this.dpr),(e=this.canvasTopRef)!=null&&e.current&&(this.canvasTopRef.current.width=t*this.dpr,this.canvasTopRef.current.height=n*this.dpr)))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",Zt.render(d.createElement(Vi,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Xe extends gt{constructor(e){super(e);m(this,"focuedViewId");m(this,"control");m(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new oI(this.control,ve.InternalMsgEmitter),{width:t,height:n,dpr:r}=e,s={dpr:r,originalPoint:[t/2,n/2],offscreenCanvasOpt:{...Xe.defaultScreenCanvasOpt,width:t,height:n},layerOpt:{...Xe.defaultLayerOpt,width:t,height:n},cameraOpt:{...Xe.defaultCameraOpt,width:t,height:n}},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:he,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:s.cameraOpt,viewData:a}),this.setFocuedViewId(he),e.createMainViewDisplayer(this.control.divMainView)}}getViewInitData(e){var n;const t=this.getView(e);if(t){const{width:r,height:s,dpr:a}=t.displayer;(n=this.control.pluginOptions.extras.canvasOpt)!=null&&n.contextType&&(Xe.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.extras.canvasOpt.contextType);const c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Xe.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Xe.defaultLayerOpt,width:r,height:s},cameraOpt:{...Xe.defaultCameraOpt,width:r,height:s}};if(t.viewData){const{scale:l,...h}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...h,scale:l===1/0?1:l}}return c}}async mountView(e){var n;const t=this.getView(e);if(t){this.control.worker.isActive||(this.control.cursor.activeCollector(),this.control.isUseOffscreenTransfer&&t.displayer.canvasBgRef.current&&t.displayer.canvasServiceFloatRef.current&&t.displayer.canvasFloatRef.current&&t.displayer.setTransferControlToOffscreenCanvas({bgCanvas:t.displayer.canvasBgRef.current,serviceCanvas:t.displayer.canvasServiceFloatRef.current,localCanvas:t.displayer.canvasFloatRef.current}),await this.control.activeWorker());const r=this.getViewInitData(e);r&&((n=this.control.worker)==null||n.createViewWorker(e,r,t.displayer)),t.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1})}}}class Oe extends ve{constructor(e){super(e);m(this,"viewContainerManager");m(this,"divMainView");m(this,"onCameraChange",nI(e=>{var n;const t=this.viewContainerManager.mainView;t&&t.cameraOpt&&(t.cameraOpt.width!==e.width||t.cameraOpt.height!==e.height)&&((n=this.viewContainerManager.mainView)==null||n.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},Di,{leading:!1}));const t={control:this,internalMsgEmitter:Oe.InternalMsgEmitter,publicMsgEmitter:Oe.PublicMsgEmitter};this.viewContainerManager=new Xe(t)}init(){Oe.InternalMsgEmitter.on(ee.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 a,c;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(he,!0);return}const{diffView:t,diffScenePath:n,diffData:r}=e,s=new Map;if(t){let l;Object.keys(t).forEach(h=>{var M;const u=t[h];if(u&&!u.newValue)(M=this.worker)==null||M.clearViewScenePath(h,!0),u.oldValue&&(l=u.oldValue);else if(u&&u.newValue){for(const y of Object.keys(u.newValue))this.worker.pullServiceData(h,y,{isAsync:!1,useAnimation:!0});l=u.newValue}if(l)for(const y of Object.values(l)){const g=new Set;for(const I of Object.keys(y))I&&g.add(I);s.set(h,g)}})}if(n){let l;Object.keys(n).forEach(h=>{var M;const u=n[h];if(u&&u.viewId&&!u.newValue?((M=this.worker)==null||M.clearViewScenePath(u.viewId,!0),u.oldValue&&(l=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!0}),l=u.newValue),u!=null&&u.viewId&&l){const y=new Set;for(const g of Object.keys(l))g&&y.add(g),s.set(u.viewId,y)}})}r&&Object.keys(r).forEach(l=>{var u,M;const h=r[l];if(h){const{viewId:y}=h,g=s.get(y)||new Set;g.add(l),s.set(y,g),(u=this.worker)==null||u.onServiceDerive(l,h),(M=this.miniMapManager)==null||M.updateMiniMapCamera(y)}});for(const[l,h]of s.entries())ve.InternalMsgEmitter.emit("excludeIds",[...h],l)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var t;(t=this.collector)!=null&&t.serviceStorage&&this.viewContainerManager.getAllViews().forEach(n=>{var r,s,a,c,l,h;if(n&&n.focusScenePath&&((r=this.collector)!=null&&r.serviceStorage[n.id])&&((s=this.collector)!=null&&s.serviceStorage[n.id][n.focusScenePath])){const u=Object.keys((a=this.collector)==null?void 0:a.serviceStorage[n.id][n.focusScenePath]);for(const M of u){const y=(c=this.collector)==null?void 0:c.getUidFromKey(M);if(y&&!e.online.includes(y))if((l=this.collector)!=null&&l.isSelector(M))this.renderControl.isWritable&&((h=this.collector)==null||h.updateValue(M,void 0,{viewId:n.id,scenePath:n.focusScenePath,isSync:!0})),this.worker.blurSelector(n.id,n.focusScenePath,M);else{const g=this.textEditorManager.editors.get(M);g&&g.opt&&(g.opt.workState===D.Doing||g.opt.workState===D.Start)&&(g.opt.text&&g.opt.text.replace(/\s*,/g,"")?this.textEditorManager.unActive(M):this.textEditorManager.delete(M))}}}})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.worker.init()}}const b=class b extends F.InvisiblePlugin{constructor(){super(...arguments);m(this,"onPhaseChanged",e=>{var t;e===F.RoomPhase.Reconnecting&&((t=b.currentManager)==null||t.setSnapshootData())});m(this,"updateRoomWritable",()=>{var e;(e=b.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});m(this,"roomStateChangeListener",async e=>{var t,n;b.currentManager instanceof Oe&&(e.cameraState&&b.currentManager.onCameraChange(e.cameraState),e.sceneState&&b.currentManager.onSceneChange(e.sceneState.scenePath,he)),e!=null&&e.roomMembers&&((t=b.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(F.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((n=b.currentManager)==null||n.onMemberChange(e.memberState))})}static async getInstance(e,t){var y;t.options&&(((y=t.options.extras)==null?void 0:y.useWorker)==="mainThread"&&(t.options.cdn.fullWorkerUrl="",t.options.cdn.subWorkerUrl=""),(t.options.extras&&t.options.extras.useWorker!=="mainThread"||!t.options.extras)&&!t.options.cdn.fullWorkerUrl&&!t.options.cdn.subWorkerUrl&&b.logger.error("[ApplianceSinglePlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl"));const n=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene.bind(e),c=e.setMemberState.bind(e);let l;F.isRoom(e)&&(l=e.setWritable),t!=null&&t.logger&&(b.logger=t.logger);let h=e.getInvisiblePlugin(b.kind);h||(h=await b.createAppliancePlugin(e,b.kind)),e&&h&&b.createCurrentManager(e,{cdn:t.options.cdn,extras:{...we,...t.options.extras}},h),h&&b.currentManager&&(b.currentManager.bindPlugin(h),h.init(e)),t!=null&&t.cursorAdapter&&(b.cursorAdapter=t.cursorAdapter),b.effectInstance();const u={displayer:e,currentManager:b.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var p;b.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const I=e.getBoundingRect(g),w=await((p=b.currentManager)==null?void 0:p.getBoundingRect(g));return!I.width||!I.height?w:Fi(I,w)},screenshotToCanvasAsync:async function(g,I,w,p,f,N){var P;b.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let S=w,v=p,j=f.scale;S>this.maxScreenshotWidth&&(j=this.maxScreenshotWidth/S*j,S=this.maxScreenshotWidth),v>this.maxScreenshotHeight&&(j=Math.min(this.maxScreenshotHeight/v*j,j),v=this.maxScreenshotHeight),f.scale=j;const C=document.createElement("canvas"),k=C.getContext("2d");C.width=S*(N||1),C.height=v*(N||1),k&&(e.screenshotToCanvas(k,I,S,v,f,N),g.drawImage(C,Math.floor((w-S)/2),Math.floor((p-v)/2),S*(N||1),v*(N||1),0,0,S,v),C.remove()),b.currentManager&&await((P=b.currentManager)==null?void 0:P.screenshotToCanvas(g,I,S,v,f,Math.floor((w-S)/2),Math.floor((p-v)/2)))},scenePreviewAsync:async function(g,I,w,p,f){b.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(g,I,w,p,f);const N=document.createElement("img");N.className="appliance-plugin-fill-scene-snapshot-img",I.append(N),getComputedStyle(I).position||(I.style.position="relative"),b.currentManager&&await b.currentManager.scenePreview(g,N)},fillSceneSnapshotAsync:async function(g,I,w,p,f){var V,_;b.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),I.innerHTML="",e.fillSceneSnapshot(g,I,w,p,f);const N=w||((V=e.state.cameraState)==null?void 0:V.width)||0,S=p||((_=e.state.cameraState)==null?void 0:_.height)||0;let v=await this.getBoundingRectAsync(g);v||(v={originX:0,originY:0,width:N,height:S});let j=Math.max(v==null?void 0:v.width,N),C=Math.max(v==null?void 0:v.height,S),k=1;const P=j>N&&Math.min(N/j,k)||k,L=C>S&&Math.min(S/C,k)||k;P<=L?(j=P<1&&N||j,C=Math.floor(C*P)+1,k=P):P>L&&(C=L<1&&S||C,j=Math.floor(j*L)+1,k=L);const O={scale:k,centerX:v.originX+v.width/2,centerY:v.originY+v.height/2},A=document.createElement("canvas"),R=A.getContext("2d");A.width=j,A.height=C,R&&await this.screenshotToCanvasAsync(R,g,j,C,O,devicePixelRatio);const z=document.createElement("img");z.className="appliance-plugin-fill-scene-snapshot-img",z.src=A.toDataURL(),z.onload=()=>{A.remove()},z.onerror=()=>{A.remove(),z.remove()},I.append(z),getComputedStyle(I).position||(I.style.position="relative")},_callbacksOn:function(g,I){b.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&F.isRoom(e)&&e.isWritable?Oe.InternalMsgEmitter.on(g,I):n.call(e.callbacks,g,I)},_callbacksOnce:function(g,I){b.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&F.isRoom(e)&&e.isWritable?Oe.InternalMsgEmitter.on(g,I):s.call(e.callbacks,g,I)},_callbacksOff:function(g,I){b.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&F.isRoom(e)&&e.isWritable?Oe.InternalMsgEmitter.off(g,I):r.call(e.callbacks,g,I)},canRedoSteps(){if(b.logger.info("[ApplianceSinglePlugin] canRedoSteps"),b.currentManager&&F.isRoom(e)&&!e.disableSerialization){const g=b.currentManager.viewContainerManager.focuedView,I=g==null?void 0:g.focusScenePath;if(g&&I)return g.displayer.commiter.redoStack.filter(w=>w.scenePath===I).length}return 0},canUndoSteps(){if(b.logger.info("[ApplianceSinglePlugin] canUndoSteps"),b.currentManager&&F.isRoom(e)&&!e.disableSerialization){const g=b.currentManager.viewContainerManager.focuedView,I=g==null?void 0:g.focusScenePath;if(g&&I)return g.displayer.commiter.undoStack.filter(w=>w.scenePath===I).length}return 0},undo:function(){return b.logger.info("[ApplianceSinglePlugin] undo"),b.currentManager&&F.isRoom(e)&&!e.disableSerialization?b.currentManager.viewContainerManager.undo():0},redo:function(){return b.logger.info("[ApplianceSinglePlugin] redo"),b.currentManager&&F.isRoom(e)&&!e.disableSerialization?b.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(g){b.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),b.currentManager&&F.isRoom(e)&&e.isWritable&&(b.currentManager.cleanCurrentScene(),a.call(e,g))},insertImage:function(g){b.logger.info("[ApplianceSinglePlugin] insertImage"),b.currentManager&&F.isRoom(e)&&e.isWritable&&b.currentManager.worker.insertImage(he,g)},lockImage:function(g,I){b.logger.info("[ApplianceSinglePlugin] lockImage"),b.currentManager&&F.isRoom(e)&&e.isWritable&&b.currentManager.worker.lockImage(he,g,I)},completeImageUpload:function(g,I){b.logger.info("[ApplianceSinglePlugin] completeImageUpload"),b.currentManager&&F.isRoom(e)&&e.isWritable&&b.currentManager.worker.completeImageUpload(he,g,I)},getImagesInformation:function(g){return b.logger.info("[ApplianceSinglePlugin] completeImageUpload"),b.currentManager&&F.isRoom(e)&&e.isWritable?b.currentManager.worker.getImagesInformation(g):[]},insertText:function(g,I,w){if(b.logger.info("[ApplianceSinglePlugin] insertText"),b.currentManager&&F.isRoom(e)&&e.isWritable)return b.currentManager.textEditorManager.insertText(he,g,I,w)},updateText:function(g,I){b.logger.info("[ApplianceMultiPlugin] updateText"),b.currentManager&&F.isRoom(e)&&e.isWritable&&b.currentManager.textEditorManager.updateText(g,I)},callbacks:()=>({...e.callbacks,on:u._callbacksOn.bind(u),once:u._callbacksOnce.bind(u),off:u._callbacksOff.bind(u)}),destroy(){b.currentManager&&(b.logger.info("[ApplianceSinglePlugin] destroy"),b.currentManager.destroy(),b.currentManager=void 0,b.cursorAdapter=void 0)},setMemberState(g){var w;b.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(g)}`);const I=Object.keys(g);if(F.isRoom(e)&&e.isWritable){if(I.includes("currentApplianceName"))if(g.currentApplianceName&&g.currentApplianceName===te.laserPen){if((w=b.currentManager)!=null&&w.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");g.currentApplianceName=te.pencil,g.useLaserPen=!0}else g.currentApplianceName&&g.currentApplianceName===te.pencil&&(g.useLaserPen=!1);c(g);return}throw new Error("setMemberState must be called in writable room")},createMiniMap:async function(g,I){if(b.logger.info("[ApplianceSinglePlugin] createMiniMap"),b.currentManager&&F.isRoom(e)&&e.isWritable)return b.currentManager.createMiniMap(g,I)},destroyMiniMap:async function(g){if(b.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),b.currentManager&&F.isRoom(e)&&e.isWritable)return b.currentManager.destroyMiniMap(g)},filterRenderByUid(g,I,w){if(b.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),b.currentManager&&F.isRoom(e)&&e.isWritable)return b.currentManager.filterRenderByUid(g,I,w)},cancelFilterRender(g,I){if(b.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),b.currentManager&&F.isRoom(e)&&e.isWritable)return b.currentManager.cancelFilterRender(g,I)},addListener:(g,I)=>{b.logger.info(`[ApplianceSinglePlugin] addListener ${g}`),Oe.PublicMsgEmitter.on(g,I)},removeListener:(g,I)=>{b.logger.info(`[ApplianceSinglePlugin] removeListener ${g}`),Oe.PublicMsgEmitter.off(g,I)},usePlugin:g=>{var I;b.logger.info("[ApplianceSinglePlugin] usePlugin",g.kind),(I=b.currentManager)==null||I.usePlugin(g)},getDisableDeviceInputs(){if(b.currentManager&&F.isRoom(e))return b.currentManager.disableDeviceInputs},setDisableDeviceInputs(g){b.logger.info(`[ApplianceSinglePlugin] setDisableDeviceInputs ${g}`),b.currentManager&&F.isRoom(e)&&(b.currentManager.disableDeviceInputs=g)},getDisableCameraTransform(){if(b.currentManager&&F.isRoom(e))return b.currentManager.disableCameraTransform},setDisableCameraTransform(g){b.logger.info(`[ApplianceSinglePlugin] setDisableCameraTransform ${g}`),b.currentManager&&F.isRoom(e)&&(b.currentManager.disableCameraTransform=g)},getDisableEraseImage(){if(b.currentManager&&F.isRoom(e))return b.currentManager.disableEraseImage},setDisableEraseImage(g){b.logger.info(`[ApplianceSinglePlugin] setDisableEraseImage ${g}`),b.currentManager&&F.isRoom(e)&&(b.currentManager.disableEraseImage=g)},setWritable:async function(g){var I;b.logger.info(`[ApplianceSinglePlugin] setWritable ${g}`),F.isRoom(e)&&l&&(await((I=b.currentManager)==null?void 0:I.setWritable(g)),await l.call(e,g))},requestIdleCallback:(g,I)=>{const w=(I==null?void 0:I.timeout)||0,p=performance.now();let f;const N=new MessageChannel;let S;const v=j=>{try{g({didTimeout:j,timeRemaining:()=>{const k=performance.now()-p;return Math.max(0,w-k)}})}catch(C){b.logger.error("[ApplianceSinglePlugin] requestIdleCallback error:",C)}finally{N.port1.close(),N.port2.close(),f!==void 0&&cancelAnimationFrame(f),S!==void 0&&clearTimeout(S)}};return N.port1.onmessage=()=>{f=requestAnimationFrame(()=>{w>0&&performance.now()-p>=w?v(!0):v(!1)})},N.port2.postMessage(null),w>0&&(S=setTimeout(()=>{v(!0)},w)),S||f||0},cancelIdleCallback:g=>{try{clearTimeout(g),cancelAnimationFrame(g)}catch(I){b.logger.error("[ApplianceSinglePlugin] cancelIdleCallback error:",I)}},injectMethodToObject:(g,I)=>{if(b.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${I}`),typeof g[I]=="function"||typeof g[I]>"u"){g[I]=u[I];return}I==="callbacks"&&(g.callbacks.on=u._callbacksOn.bind(u),g.callbacks.off=u._callbacksOff.bind(u),g.callbacks.once=u._callbacksOnce.bind(u))},blurText:()=>{b.logger.info("[ApplianceSinglePlugin] blurText"),b.currentManager&&F.isRoom(e)&&e.isWritable&&b.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(g,I)=>{var w;if(b.logger.info(`[ApplianceSinglePlugin] hasElements ${g}`),b.currentManager&&F.isRoom(e)&&e.isWritable){let p=g;if(!p){const f=b.currentManager.viewContainerManager.focuedView;p=f==null?void 0:f.focusScenePath}if(p){const f=(w=b.currentManager.collector)==null?void 0:w.getScenePathData(p);if(f){const N=Object.values(f);return N.length>0?I?N.some(S=>I(S.toolsType)):!0:!1}return!1}return!1}},getElements:(g,I)=>{var w;if(b.logger.info(`[ApplianceSinglePlugin] getElements ${g}`),b.currentManager&&F.isRoom(e)&&e.isWritable){let p=g;if(!p){const f=b.currentManager.viewContainerManager.focuedView;p=f==null?void 0:f.focusScenePath}if(p){const f=(w=b.currentManager.collector)==null?void 0:w.getScenePathData(p),N=f&&Object.values(f)||[];return f&&N.length>0&&I?N.filter(S=>I(S.toolsType)):N}return[]}},stopDraw:g=>{if(b.logger.info(`[ApplianceSinglePlugin] stopDraw ${g}`),b.currentManager&&F.isRoom(e))return b.currentManager.stopDraw(g)},setViewLocalScenePathChange:async(g,I)=>{b.logger.info(`[ApplianceSinglePlugin] setViewLocalScenePathChange ${g} ${I}`),b.currentManager&&await b.currentManager.setViewLocalScenePathChange(g,I)}};u.injectMethodToObject(e,"undo"),u.injectMethodToObject(e,"redo"),u.injectMethodToObject(e,"cleanCurrentScene"),u.injectMethodToObject(e,"insertImage"),u.injectMethodToObject(e,"completeImageUpload"),u.injectMethodToObject(e,"lockImage"),u.injectMethodToObject(e,"getImagesInformation"),u.injectMethodToObject(e,"insertText"),u.injectMethodToObject(e,"updateText"),u.injectMethodToObject(e,"callbacks"),u.injectMethodToObject(e,"screenshotToCanvasAsync"),u.injectMethodToObject(e,"getBoundingRectAsync"),u.injectMethodToObject(e,"scenePreviewAsync"),u.injectMethodToObject(e,"fillSceneSnapshotAsync"),u.injectMethodToObject(e,"setMemberState"),F.isRoom(e)&&u.injectMethodToObject(e,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return u.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return u.canRedoSteps()}});const M={...u,callbacks:u.callbacks()};return Object.defineProperty(M,"disableDeviceInputs",{set(g){u.setDisableDeviceInputs(g)},get(){return u.getDisableDeviceInputs()}}),Object.defineProperty(M,"disableEraseImage",{set(g){u.setDisableEraseImage(g)},get(){return u.getDisableEraseImage()}}),Object.defineProperty(M,"disableCameraTransform",{set(g){u.setDisableCameraTransform(g)},get(){return u.getDisableCameraTransform()}}),e._appliancePlugin=M,e._appliancePlugin}static onCreate(e){e&&b.currentManager&&(b.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,t){try{await e.createInvisiblePlugin(b,{})}catch(r){if(!e.isWritable){await e.setWritable(!0);const s=await this.createAppliancePlugin(e,t);return await e.setWritable(!1),s}throw r}let n=e.getInvisiblePlugin(t);return n||(n=await b.createAppliancePlugin(e,t)),n}static effectInstance(){if(b.cursorAdapter){const e=b.cursorAdapter.onAddedCursor;b.cursorAdapter.onAddedCursor=function(t){t.onCursorMemberChanged=n=>{try{n.appliance===te.pencil||n.appliance===te.shape||n.appliance===te.text||n.appliance===te.arrow||n.appliance===te.straight||n.appliance===te.rectangle||n.appliance===te.ellipse||n.appliance===te.eraser||n.appliance===te.selector?t!=null&&t.divElement&&(t.divElement.style.display="none"):t!=null&&t.divElement&&(t.divElement.style.display="block")}catch(r){throw r}},e.call(b.cursorAdapter,t)}}}get isReplay(){return F.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var n,r;const t=e.state;(n=b.currentManager)==null||n.onRoomMembersChange(t.roomMembers),F.isRoom(e)&&t!=null&&t.memberState&&((r=b.currentManager)==null||r.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;b.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=b.currentManager)==null||e.destroy(),b.currentManager=void 0,b.cursorAdapter=void 0}};m(b,"kind","appliance-single-plugin"),m(b,"cursorAdapter"),m(b,"currentManager"),m(b,"logger",{info:console.log,warn:console.warn,error:console.error}),m(b,"createCurrentManager",(e,t,n)=>{b.currentManager&&b.currentManager.destroy();const r={plugin:n,displayer:e,options:t},s=new Oe(r);if(s.init(),b.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),b.currentManager=s,F.isRoom(e)){const a=s.hasOffscreenCanvas,c=s.isUseOffscreenTransfer,l=s.pluginOptions,h=s.isUseSimple;e.logger.info(`[ApplianceSinglePlugin] use ${a?"worker":"mainThread"}, isUseSimple: ${h} ${c?"offscreenTransfer":""}, options: ${JSON.stringify(l)}`)}});let Ci=b;const dt=class dt extends d.Component{constructor(){super(...arguments);m(this,"mainViewRef",null)}componentDidMount(){dt.emiter||(dt.emiter=Oe.InternalMsgEmitter),dt.emiter.emit(ee.BindMainView,this.mainViewRef)}render(){return d.createElement(d.Fragment,null,this.props.children,d.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};m(dt,"emiter");let Si=dt;exports.ActiveContainerType=Ln;exports.ApplianceMultiPlugin=vi;exports.ApplianceNames=te;exports.ApplianceSigleWrapper=Si;exports.ApplianceSinglePlugin=Ci;exports.Cursor_Hover_Id=zo;exports.DefaultAppliancePluginExtrasOptions=we;exports.ECanvasShowType=$e;exports.EDataType=K;exports.EForceStopReason=ji;exports.EImageType=xt;exports.EMatrixrRelationType=Dt;exports.EOperationType=Te;exports.EPostMessageType=U;exports.ERenderFilterType=Ue;exports.EScaleType=be;exports.EStrokeType=fe;exports.EToolsKey=T;exports.ElayerType=zt;exports.EmitEventType=W;exports.EventMessageType=jt;exports.EvevtWorkState=D;exports.EvevtWorkType=Pn;exports.InternalMsgEmitterType=ee;exports.Main_View_Id=he;exports.Plugin=sp;exports.Point2d=ye;exports.ShapeType=Ye;exports.Storage_Selector_key=Z;exports.Storage_Splitter=Je;exports.Storage_ViewId_ALL=ho;exports.Task_Time_Interval=Di;exports.TextBoxPadding=pi;exports.Vec2d=Y;exports.ViewContainerManager=gt;exports._Stack=Bn;exports._baseGetTag=pt;exports._equalArrays=go;exports._equalByTag=Yg;exports._getAllKeys=io;exports._getTag=_t;exports.average=Of;exports.checkOp=bf;exports.cloneDeep=Et;exports.colorRGBA2Array=St;exports.computRect=mf;exports.decimalPlaces=Ef;exports.fullWorker=Do;exports.gcd=Lf;exports.getDefaultExportFromCjs=Ht;exports.getRectFromPoints=Qi;exports.getRectMatrixrRelation=Rf;exports.getRectRotated=Cf;exports.getRectScaleWPoint=Sf;exports.getRectTranslated=Tf;exports.getSafetyRect=Nf;exports.getWHRatio=Af;exports.isArray_1=kt;exports.isBufferExports=Ai;exports.isDecimal=kf;exports.isIntersect=wf;exports.isIntersectForPoint=Io;exports.isObjectLike_1=it;exports.isSet=Kh;exports.isTypedArray_1=Gn;exports.precise=Pf;exports.requestAsyncCallBack=Ge;exports.rgbToRgba=ht;exports.rotateLitePoints=Df;exports.rotatePoints=jf;exports.scaleLitePoints=zf;exports.scalePoints=xf;exports.strlen=Yf;exports.subWorker=xo;exports.transformToNormalData=ei;exports.transformToSerializableData=At;
1
+ "use strict";var Co=Object.defineProperty;var So=(o,i,e)=>i in o?Co(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e;var m=(o,i,e)=>So(o,typeof i!="symbol"?i+"":i,e);const Q=require("white-web-sdk");require("spritejs");const En=require("lz-string");require("clipper-lib");require("lineclip");const li=require("xss"),x=require("lodash"),ui=require("eventemitter2"),d=require("react"),Zt=require("react-dom"),ft=require("react-draggable"),jo=require("re-resizable"),Do="/fullWorker.js",xo="/subWorker.js";var te=(o=>(o.selector="selector",o.clicker="clicker",o.laserPointer="laserPointer",o.pencil="pencil",o.rectangle="rectangle",o.ellipse="ellipse",o.shape="shape",o.eraser="eraser",o.pencilEraser="pencilEraser",o.text="text",o.straight="straight",o.arrow="arrow",o.hand="hand",o.laserPen="laserPen",o))(te||{}),fe=(o=>(o.Normal="Normal",o.Stroke="Stroke",o.Dotted="Dotted",o.LongDotted="LongDotted",o))(fe||{}),Ye=(o=>(o.Triangle="triangle",o.Rhombus="rhombus",o.Pentagram="pentagram",o.SpeechBalloon="speechBalloon",o.Star="star",o.Polygon="polygon",o))(Ye||{}),W=(o=>(o.None="None",o.ShowFloatBar="ShowFloatBar",o.ZIndexFloatBar="ZIndexFloatBar",o.DeleteNode="DeleteNode",o.CopyNode="CopyNode",o.ZIndexActive="ZIndexActive",o.ZIndexNode="ZIndexNode",o.RotateNode="RotateNode",o.SetColorNode="SetColorNode",o.TranslateNode="TranslateNode",o.ScaleNode="ScaleNode",o.OriginalEvent="OriginalEvent",o.CreateScene="CreateScene",o.ActiveCursor="ActiveCursor",o.MoveCursor="MoveCursor",o.CommandEditor="CommandEditor",o.SetEditorData="SetEditorData",o.SetFontStyle="SetFontStyle",o.SetPoint="SetPoint",o.SetLock="SetLock",o.SetShapeOpt="SetShapeOpt",o.CameraChange="CameraChange",o.ActiveMethod="ActiveMethod",o.HidFloatBarBtn="HidFloatBarBtn",o))(W||{}),ee=(o=>(o.DisplayState="DisplayState",o.MainEngine="MainEngine",o.Cursor="Cursor",o.BindMainView="BindMainView",o))(ee||{}),Ln=(o=>(o[o.MainView=0]="MainView",o[o.Plugin=1]="Plugin",o[o.Both=2]="Both",o))(Ln||{}),ji=(o=>(o.longPencil="longPencil",o))(ji||{}),T=(o=>(o[o.Pencil=1]="Pencil",o[o.Eraser=2]="Eraser",o[o.PencilEraser=3]="PencilEraser",o[o.BitMapEraser=4]="BitMapEraser",o[o.Selector=5]="Selector",o[o.Clicker=6]="Clicker",o[o.Arrow=7]="Arrow",o[o.Hand=8]="Hand",o[o.LaserPen=9]="LaserPen",o[o.Text=10]="Text",o[o.Straight=11]="Straight",o[o.Rectangle=12]="Rectangle",o[o.Ellipse=13]="Ellipse",o[o.Star=14]="Star",o[o.Triangle=15]="Triangle",o[o.Rhombus=16]="Rhombus",o[o.Polygon=17]="Polygon",o[o.SpeechBalloon=18]="SpeechBalloon",o[o.Image=19]="Image",o))(T||{}),K=(o=>(o[o.Local=1]="Local",o[o.Service=2]="Service",o[o.Worker=3]="Worker",o))(K||{}),D=(o=>(o[o.Pending=0]="Pending",o[o.Start=1]="Start",o[o.Doing=2]="Doing",o[o.Done=3]="Done",o[o.Unwritable=4]="Unwritable",o))(D||{}),U=(o=>(o[o.None=0]="None",o[o.Init=1]="Init",o[o.UpdateCamera=2]="UpdateCamera",o[o.UpdateTools=3]="UpdateTools",o[o.CreateWork=4]="CreateWork",o[o.DrawWork=5]="DrawWork",o[o.FullWork=6]="FullWork",o[o.UpdateNode=7]="UpdateNode",o[o.RemoveNode=8]="RemoveNode",o[o.Clear=9]="Clear",o[o.Select=10]="Select",o[o.Destroy=11]="Destroy",o[o.Snapshot=12]="Snapshot",o[o.BoundingBox=13]="BoundingBox",o[o.Cursor=14]="Cursor",o[o.TextUpdate=15]="TextUpdate",o[o.GetTextActive=16]="GetTextActive",o[o.TasksQueue=17]="TasksQueue",o[o.CursorHover=18]="CursorHover",o[o.CursorBlur=19]="CursorBlur",o[o.Console=20]="Console",o[o.GetImageBitMap=23]="GetImageBitMap",o[o.AuthWriter=24]="AuthWriter",o[o.AuthReader=25]="AuthReader",o[o.AuthClear=26]="AuthClear",o[o.AuthPage=27]="AuthPage",o[o.GetVNodeInfo=28]="GetVNodeInfo",o[o.UpdateDpr=29]="UpdateDpr",o[o.SetFontFace=30]="SetFontFace",o[o.ReportError=31]="ReportError",o[o.ReportLog=32]="ReportLog",o))(U||{}),$e=(o=>(o[o.None=0]="None",o[o.Bg=1]="Bg",o[o.ServiceFloat=2]="ServiceFloat",o[o.Float=3]="Float",o[o.TopFloat=4]="TopFloat",o))($e||{}),jt=(o=>(o[o.Cursor=1]="Cursor",o[o.TextCreate=2]="TextCreate",o))(jt||{}),zt=(o=>(o[o.Top=1]="Top",o[o.Bottom=2]="Bottom",o))(zt||{}),be=(o=>(o[o.none=1]="none",o[o.all=2]="all",o[o.both=3]="both",o[o.proportional=4]="proportional",o))(be||{}),Pn=(o=>(o[o.Pending=0]="Pending",o[o.Start=1]="Start",o[o.Doing=2]="Doing",o[o.Done=3]="Done",o[o.Unwritable=4]="Unwritable",o))(Pn||{}),Dt=(o=>(o[o.inside=0]="inside",o[o.outside=1]="outside",o[o.intersect=2]="intersect",o))(Dt||{}),Te=(o=>(o.renderPage="renderPage",o.addPage="addPage",o.deletePage="deletePage",o.addElement="addElement",o.deleteElement="deleteElement",o.clearPage="clearPage",o.clearViewScenePath="clearViewScenePath",o.clearView="clearView",o.syncUndoStack="syncUndoStack",o.syncRedoStack="syncRedoStack",o))(Te||{}),Ue=(o=>(o.setAuth="setAuth",o.setShow="addShow",o.setHide="setHide",o.setClear="setClear",o))(Ue||{}),xt=(o=>(o.Image="image",o.Iconify="iconify",o))(xt||{});const zo="cursorhover",Di=20,he="mainView",Ao={linear:o=>o,easeInQuad:o=>o*o,easeOutQuad:o=>o*(2-o),easeInOutQuad:o=>o<.5?2*o*o:-1+(4-2*o)*o,easeInCubic:o=>o*o*o,easeOutCubic:o=>--o*o*o+1,easeInOutCubic:o=>o<.5?4*o*o*o:(o-1)*(2*o-2)*(2*o-2)+1,easeInQuart:o=>o*o*o*o,easeOutQuart:o=>1- --o*o*o*o,easeInOutQuart:o=>o<.5?8*o*o*o*o:1-8*--o*o*o*o,easeInQuint:o=>o*o*o*o*o,easeOutQuint:o=>1+--o*o*o*o*o,easeInOutQuint:o=>o<.5?16*o*o*o*o*o:1+16*--o*o*o*o*o,easeInSine:o=>1-Math.cos(o*Math.PI/2),easeOutSine:o=>Math.sin(o*Math.PI/2),easeInOutSine:o=>-(Math.cos(Math.PI*o)-1)/2,easeInExpo:o=>o<=0?0:Math.pow(2,10*o-10),easeOutExpo:o=>o>=1?1:1-Math.pow(2,-10*o),easeInOutExpo:o=>o<=0?0:o>=1?1:o<.5?Math.pow(2,20*o-10)/2:(2-Math.pow(2,-20*o+10))/2};class Y{constructor(i=0,e=0,t=1){this.x=i,this.y=e,this.z=t}get XY(){return[this.x,this.y]}setz(i){return this.z=i,this}setXY(i=this.x,e=this.y){return this.x=i,this.y=e,this}set(i=this.x,e=this.y,t=this.z){return this.x=i,this.y=e,this.z=t,this}setTo({x:i=0,y:e=0,z:t=1}){return this.x=i,this.y=e,this.z=t,this}rot(i){if(i===0)return this;const{x:e,y:t}=this,n=Math.sin(i),r=Math.cos(i);return this.x=e*r-t*n,this.y=e*n+t*r,this}rotWith(i,e){if(e===0)return this;const t=this.x-i.x,n=this.y-i.y,r=Math.sin(e),s=Math.cos(e);return this.x=i.x+(t*s-n*r),this.y=i.y+(t*r+n*s),this}clone(){const{x:i,y:e,z:t}=this;return new Y(i,e,t)}sub(i){return this.x-=i.x,this.y-=i.y,this}subXY(i,e){return this.x-=i,this.y-=e,this}subScalar(i){return this.x-=i,this.y-=i,this}add(i){return this.x+=i.x,this.y+=i.y,this}addXY(i,e){return this.x+=i,this.y+=e,this}addScalar(i){return this.x+=i,this.y+=i,this}clamp(i,e){return this.x=Math.max(this.x,i),this.y=Math.max(this.y,i),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(i){return this.x/=i,this.y/=i,this}divV(i){return this.x/=i.x,this.y/=i.y,this}mul(i){return this.x*=i,this.y*=i,this}mulV(i){return this.x*=i.x,this.y*=i.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(i,e){const t=Y.Tan(i,this);return this.add(t.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(i){return this.x=this.y*i.z-this.z*i.y,this.y=this.z*i.x-this.x*i.z,this}dpr(i){return Y.Dpr(this,i)}cpr(i){return Y.Cpr(this,i)}len2(){return Y.Len2(this)}len(){return Y.Len(this)}pry(i){return Y.Pry(this,i)}per(){const{x:i,y:e}=this;return this.x=e,this.y=-i,this}uni(){return Y.Uni(this)}tan(i){return Y.Tan(this,i)}dist(i){return Y.Dist(this,i)}distanceToLineSegment(i,e){return Y.DistanceToLineSegment(i,e,this)}slope(i){return Y.Slope(this,i)}snapToGrid(i){return this.x=Math.round(this.x/i)*i,this.y=Math.round(this.y/i)*i,this}angle(i){return Y.Angle(this,i)}toAngle(){return Y.ToAngle(this)}lrp(i,e){return this.x=this.x+(i.x-this.x)*e,this.y=this.y+(i.y-this.y)*e,this}equals(i,e){return Y.Equals(this,i,e)}equalsXY(i,e){return Y.EqualsXY(this,i,e)}norm(){const i=this.len();return this.x=i===0?0:this.x/i,this.y=i===0?0:this.y/i,this}toFixed(){return Y.ToFixed(this)}toString(){return Y.ToString(Y.ToFixed(this))}toJson(){return Y.ToJson(this)}toArray(){return Y.ToArray(this)}static Add(i,e){return new Y(i.x+e.x,i.y+e.y)}static AddXY(i,e,t){return new Y(i.x+e,i.y+t)}static Sub(i,e){return new Y(i.x-e.x,i.y-e.y)}static SubXY(i,e,t){return new Y(i.x-e,i.y-t)}static AddScalar(i,e){return new Y(i.x+e,i.y+e)}static SubScalar(i,e){return new Y(i.x-e,i.y-e)}static Div(i,e){return new Y(i.x/e,i.y/e)}static Mul(i,e){return new Y(i.x*e,i.y*e)}static DivV(i,e){return new Y(i.x/e.x,i.y/e.y)}static MulV(i,e){return new Y(i.x*e.x,i.y*e.y)}static Neg(i){return new Y(-i.x,-i.y)}static Per(i){return new Y(i.y,-i.x)}static Dist2(i,e){return Y.Sub(i,e).len2()}static Abs(i){return new Y(Math.abs(i.x),Math.abs(i.y))}static Dist(i,e){return Math.hypot(i.y-e.y,i.x-e.x)}static Dpr(i,e){return i.x*e.x+i.y*e.y}static Cross(i,e){return new Y(i.y*e.z-i.z*e.y,i.z*e.x-i.x*e.z)}static Cpr(i,e){return i.x*e.y-e.x*i.y}static Len2(i){return i.x*i.x+i.y*i.y}static Len(i){return Math.hypot(i.x,i.y)}static Pry(i,e){return Y.Dpr(i,e)/Y.Len(e)}static Uni(i){return Y.Div(i,Y.Len(i))}static Tan(i,e){return Y.Uni(Y.Sub(i,e))}static Min(i,e){return new Y(Math.min(i.x,e.x),Math.min(i.y,e.y))}static Max(i,e){return new Y(Math.max(i.x,e.x),Math.max(i.y,e.y))}static From(i){return new Y().add(i)}static FromArray(i){return new Y(i[0],i[1])}static Rot(i,e=0){const t=Math.sin(e),n=Math.cos(e);return new Y(i.x*n-i.y*t,i.x*t+i.y*n)}static RotWith(i,e,t){const n=i.x-e.x,r=i.y-e.y,s=Math.sin(t),a=Math.cos(t);return new Y(e.x+(n*a-r*s),e.y+(n*s+r*a))}static NearestPointOnLineThroughPoint(i,e,t){return Y.Mul(e,Y.Sub(t,i).pry(e)).add(i)}static NearestPointOnLineSegment(i,e,t,n=!0){const r=Y.Tan(e,i),s=Y.Add(i,Y.Mul(r,Y.Sub(t,i).pry(r)));if(n){if(s.x<Math.min(i.x,e.x))return Y.Cast(i.x<e.x?i:e);if(s.x>Math.max(i.x,e.x))return Y.Cast(i.x>e.x?i:e);if(s.y<Math.min(i.y,e.y))return Y.Cast(i.y<e.y?i:e);if(s.y>Math.max(i.y,e.y))return Y.Cast(i.y>e.y?i:e)}return s}static DistanceToLineThroughPoint(i,e,t){return Y.Dist(t,Y.NearestPointOnLineThroughPoint(i,e,t))}static DistanceToLineSegment(i,e,t,n=!0){return Y.Dist(t,Y.NearestPointOnLineSegment(i,e,t,n))}static Snap(i,e=1){return new Y(Math.round(i.x/e)*e,Math.round(i.y/e)*e)}static Cast(i){return i instanceof Y?i:Y.From(i)}static Slope(i,e){return i.x===e.y?NaN:(i.y-e.y)/(i.x-e.x)}static Angle(i,e){return Math.atan2(e.y-i.y,e.x-i.x)}static Lrp(i,e,t){return Y.Sub(e,i).mul(t).add(i)}static Med(i,e){return new Y((i.x+e.x)/2,(i.y+e.y)/2)}static Equals(i,e,t=1e-4){return Math.abs(i.x-e.x)<t&&Math.abs(i.y-e.y)<t}static EqualsXY(i,e,t){return i.x===e&&i.y===t}static EqualsXYZ(i,e,t=1e-4){return Y.Equals(i,e,t)&&Math.abs((i.z||0)-(e.z||0))<t}static Clockwise(i,e,t){return(t.x-i.x)*(e.y-i.y)-(e.x-i.x)*(t.y-i.y)<0}static Rescale(i,e){const t=Y.Len(i);return new Y(e*i.x/t,e*i.y/t)}static ScaleWithOrigin(i,e,t){return Y.Sub(i,t).mul(e).add(t)}static ScaleWOrigin(i,e,t){return Y.Sub(i,t).mulV(e).add(t)}static ToFixed(i,e=2){return new Y(+i.x.toFixed(e),+i.y.toFixed(e),+i.z.toFixed(e))}static Nudge(i,e,t){return Y.Add(i,Y.Tan(e,i).mul(t))}static ToString(i){return`${i.x}, ${i.y}`}static ToAngle(i){let e=Math.atan2(i.y,i.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(i,e=1){return new Y(Math.cos(i)*e,Math.sin(i)*e)}static ToArray(i){return[i.x,i.y,i.z]}static ToJson(i){const{x:e,y:t,z:n}=i;return{x:e,y:t,z:n}}static Average(i){const e=i.length,t=new Y(0,0);for(let n=0;n<e;n++)t.add(i[n]);return t.div(e)}static Clamp(i,e,t){return t===void 0?new Y(Math.min(Math.max(i.x,e)),Math.min(Math.max(i.y,e))):new Y(Math.min(Math.max(i.x,e),t),Math.min(Math.max(i.y,e),t))}static PointsBetween(i,e,t=6){const n=[];for(let r=0;r<t;r++){const s=Ao.easeInQuad(r/(t-1)),a=Y.Lrp(i,e,s);a.z=Math.min(1,.5+Math.abs(.5-bo(s))*.65),n.push(a)}return n}static SnapToGrid(i,e=8){return new Y(Math.round(i.x/e)*e,Math.round(i.y/e)*e)}}const bo=o=>o<.5?2*o*o:-1+(4-2*o)*o;class ye extends Y{constructor(i=0,e=0,t=0,n={x:0,y:0},r=0,s=0){super(i,e,t),this.x=i,this.y=e,this.z=t,this.v=n,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(i){this.a=i}setT(i){this.t=i}setv(i){return this.v={x:i.x,y:i.y},this}set(i=this.x,e=this.y,t=this.z,n=this.v,r=this.t,s=this.a){return this.x=i,this.y=e,this.z=t,this.v=n,this.t=r,this.a=s,this}clone(){const{x:i,y:e,z:t,v:n,t:r,a:s}=this,a={x:n.x,y:n.y};return new ye(i,e,t,a,r,s)}distance(i){return ye.GetDistance(this,i)}isNear(i,e){return ye.IsNear(this,i,e)}getAngleByPoints(i,e){return ye.GetAngleByPoints(i,this,e)}static Sub(i,e){return new ye(i.x-e.x,i.y-e.y)}static Add(i,e){return new ye(i.x+e.x,i.y+e.y)}static GetDistance(i,e){return ye.Len(i.clone().sub(e))}static GetAngleByPoints(i,e,t){const n=e.x-i.x,r=t.x-e.x,s=e.y-i.y,a=t.y-e.y;let c=0;const l=Math.sqrt(n*n+s*s),h=Math.sqrt(r*r+a*a);if(l&&h){const u=n*r+s*a;c=Math.acos(u/(l*h)),c=c/Math.PI*180;let M=n*a-s*r;M=M>0?1:-1,c=180+M*c}return c}static IsNear(i,e,t){return ye.Len(i.clone().sub(e))<t}static RotWith(i,e,t,n=2){const r=i.x-e.x,s=i.y-e.y,a=Math.sin(t),c=Math.cos(t),l=Math.pow(10,n),h=Math.floor((e.x+(r*c-s*a))*l)/l,u=Math.floor((e.y+(r*a+s*c))*l)/l;return new ye(h,u)}static GetDotStroke(i,e,t=16){const n=new Y(1,1),r=Math.PI+.001,s=ye.Add(i,ye.Sub(i,n).uni().per().mul(-e)),a=[];for(let c=1/t,l=c;l<=1;l+=c)a.push(ye.RotWith(s,i,r*2*l));return a}static GetSemicircleStroke(i,e,t=-1,n=8){const r=t*(Math.PI+.001),s=[];for(let a=1/n,c=a;c<=1;c+=a)s.push(ye.RotWith(e,i,r*c));return s}}var Ot=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ht(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var ko=typeof Ot=="object"&&Ot&&Ot.Object===Object&&Ot,On=ko,Eo=On,Lo=typeof self=="object"&&self&&self.Object===Object&&self,Po=Eo||Lo||Function("return this")(),Be=Po,Oo=Be,Ro=Oo.Symbol,bt=Ro,$i=bt,Rn=Object.prototype,Yo=Rn.hasOwnProperty,Uo=Rn.toString,Ct=$i?$i.toStringTag:void 0;function Wo(o){var i=Yo.call(o,Ct),e=o[Ct];try{o[Ct]=void 0;var t=!0}catch{}var n=Uo.call(o);return t&&(i?o[Ct]=e:delete o[Ct]),n}var Bo=Wo,Fo=Object.prototype,Qo=Fo.toString;function Vo(o){return Qo.call(o)}var Zo=Vo,Gi=bt,Ho=Bo,$o=Zo,Go="[object Null]",Jo="[object Undefined]",Ji=Gi?Gi.toStringTag:void 0;function qo(o){return o==null?o===void 0?Jo:Go:Ji&&Ji in Object(o)?Ho(o):$o(o)}var pt=qo;function Xo(o){return o!=null&&typeof o=="object"}var it=Xo;function Ko(){this.__data__=[],this.size=0}var _o=Ko;function er(o,i){return o===i||o!==o&&i!==i}var xi=er,tr=xi;function ir(o,i){for(var e=o.length;e--;)if(tr(o[e][0],i))return e;return-1}var $t=ir,nr=$t,or=Array.prototype,rr=or.splice;function sr(o){var i=this.__data__,e=nr(i,o);if(e<0)return!1;var t=i.length-1;return e==t?i.pop():rr.call(i,e,1),--this.size,!0}var ar=sr,cr=$t;function lr(o){var i=this.__data__,e=cr(i,o);return e<0?void 0:i[e][1]}var ur=lr,hr=$t;function dr(o){return hr(this.__data__,o)>-1}var gr=dr,Mr=$t;function fr(o,i){var e=this.__data__,t=Mr(e,o);return t<0?(++this.size,e.push([o,i])):e[t][1]=i,this}var pr=fr,yr=_o,Ir=ar,mr=ur,wr=gr,Nr=pr;function yt(o){var i=-1,e=o==null?0:o.length;for(this.clear();++i<e;){var t=o[i];this.set(t[0],t[1])}}yt.prototype.clear=yr;yt.prototype.delete=Ir;yt.prototype.get=mr;yt.prototype.has=wr;yt.prototype.set=Nr;var Gt=yt,Tr=Gt;function vr(){this.__data__=new Tr,this.size=0}var Cr=vr;function Sr(o){var i=this.__data__,e=i.delete(o);return this.size=i.size,e}var jr=Sr;function Dr(o){return this.__data__.get(o)}var xr=Dr;function zr(o){return this.__data__.has(o)}var Ar=zr;function br(o){var i=typeof o;return o!=null&&(i=="object"||i=="function")}var nt=br,kr=pt,Er=nt,Lr="[object AsyncFunction]",Pr="[object Function]",Or="[object GeneratorFunction]",Rr="[object Proxy]";function Yr(o){if(!Er(o))return!1;var i=kr(o);return i==Pr||i==Or||i==Lr||i==Rr}var Yn=Yr,Ur=Be,Wr=Ur["__core-js_shared__"],Br=Wr,oi=Br,qi=function(){var o=/[^.]+$/.exec(oi&&oi.keys&&oi.keys.IE_PROTO||"");return o?"Symbol(src)_1."+o:""}();function Fr(o){return!!qi&&qi in o}var Qr=Fr,Vr=Function.prototype,Zr=Vr.toString;function Hr(o){if(o!=null){try{return Zr.call(o)}catch{}try{return o+""}catch{}}return""}var Un=Hr,$r=Yn,Gr=Qr,Jr=nt,qr=Un,Xr=/[\\^$.*+?()[\]{}|]/g,Kr=/^\[object .+?Constructor\]$/,_r=Function.prototype,es=Object.prototype,ts=_r.toString,is=es.hasOwnProperty,ns=RegExp("^"+ts.call(is).replace(Xr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function os(o){if(!Jr(o)||Gr(o))return!1;var i=$r(o)?ns:Kr;return i.test(qr(o))}var rs=os;function ss(o,i){return o==null?void 0:o[i]}var as=ss,cs=rs,ls=as;function us(o,i){var e=ls(o,i);return cs(e)?e:void 0}var lt=us,hs=lt,ds=Be,gs=hs(ds,"Map"),zi=gs,Ms=lt,fs=Ms(Object,"create"),Jt=fs,Xi=Jt;function ps(){this.__data__=Xi?Xi(null):{},this.size=0}var ys=ps;function Is(o){var i=this.has(o)&&delete this.__data__[o];return this.size-=i?1:0,i}var ms=Is,ws=Jt,Ns="__lodash_hash_undefined__",Ts=Object.prototype,vs=Ts.hasOwnProperty;function Cs(o){var i=this.__data__;if(ws){var e=i[o];return e===Ns?void 0:e}return vs.call(i,o)?i[o]:void 0}var Ss=Cs,js=Jt,Ds=Object.prototype,xs=Ds.hasOwnProperty;function zs(o){var i=this.__data__;return js?i[o]!==void 0:xs.call(i,o)}var As=zs,bs=Jt,ks="__lodash_hash_undefined__";function Es(o,i){var e=this.__data__;return this.size+=this.has(o)?0:1,e[o]=bs&&i===void 0?ks:i,this}var Ls=Es,Ps=ys,Os=ms,Rs=Ss,Ys=As,Us=Ls;function It(o){var i=-1,e=o==null?0:o.length;for(this.clear();++i<e;){var t=o[i];this.set(t[0],t[1])}}It.prototype.clear=Ps;It.prototype.delete=Os;It.prototype.get=Rs;It.prototype.has=Ys;It.prototype.set=Us;var Ws=It,Ki=Ws,Bs=Gt,Fs=zi;function Qs(){this.size=0,this.__data__={hash:new Ki,map:new(Fs||Bs),string:new Ki}}var Vs=Qs;function Zs(o){var i=typeof o;return i=="string"||i=="number"||i=="symbol"||i=="boolean"?o!=="__proto__":o===null}var Hs=Zs,$s=Hs;function Gs(o,i){var e=o.__data__;return $s(i)?e[typeof i=="string"?"string":"hash"]:e.map}var qt=Gs,Js=qt;function qs(o){var i=Js(this,o).delete(o);return this.size-=i?1:0,i}var Xs=qs,Ks=qt;function _s(o){return Ks(this,o).get(o)}var ea=_s,ta=qt;function ia(o){return ta(this,o).has(o)}var na=ia,oa=qt;function ra(o,i){var e=oa(this,o),t=e.size;return e.set(o,i),this.size+=e.size==t?0:1,this}var sa=ra,aa=Vs,ca=Xs,la=ea,ua=na,ha=sa;function mt(o){var i=-1,e=o==null?0:o.length;for(this.clear();++i<e;){var t=o[i];this.set(t[0],t[1])}}mt.prototype.clear=aa;mt.prototype.delete=ca;mt.prototype.get=la;mt.prototype.has=ua;mt.prototype.set=ha;var Wn=mt,da=Gt,ga=zi,Ma=Wn,fa=200;function pa(o,i){var e=this.__data__;if(e instanceof da){var t=e.__data__;if(!ga||t.length<fa-1)return t.push([o,i]),this.size=++e.size,this;e=this.__data__=new Ma(t)}return e.set(o,i),this.size=e.size,this}var ya=pa,Ia=Gt,ma=Cr,wa=jr,Na=xr,Ta=Ar,va=ya;function wt(o){var i=this.__data__=new Ia(o);this.size=i.size}wt.prototype.clear=ma;wt.prototype.delete=wa;wt.prototype.get=Na;wt.prototype.has=Ta;wt.prototype.set=va;var Bn=wt;function Ca(o,i){for(var e=-1,t=o==null?0:o.length;++e<t&&i(o[e],e,o)!==!1;);return o}var Sa=Ca,ja=lt,Da=function(){try{var o=ja(Object,"defineProperty");return o({},"",{}),o}catch{}}(),Fn=Da,_i=Fn;function xa(o,i,e){i=="__proto__"&&_i?_i(o,i,{configurable:!0,enumerable:!0,value:e,writable:!0}):o[i]=e}var Qn=xa,za=Qn,Aa=xi,ba=Object.prototype,ka=ba.hasOwnProperty;function Ea(o,i,e){var t=o[i];(!(ka.call(o,i)&&Aa(t,e))||e===void 0&&!(i in o))&&za(o,i,e)}var Vn=Ea,La=Vn,Pa=Qn;function Oa(o,i,e,t){var n=!e;e||(e={});for(var r=-1,s=i.length;++r<s;){var a=i[r],c=t?t(e[a],o[a],a,e,o):void 0;c===void 0&&(c=o[a]),n?Pa(e,a,c):La(e,a,c)}return e}var Xt=Oa;function Ra(o,i){for(var e=-1,t=Array(o);++e<o;)t[e]=i(e);return t}var Ya=Ra,Ua=pt,Wa=it,Ba="[object Arguments]";function Fa(o){return Wa(o)&&Ua(o)==Ba}var Qa=Fa,en=Qa,Va=it,Zn=Object.prototype,Za=Zn.hasOwnProperty,Ha=Zn.propertyIsEnumerable,$a=en(function(){return arguments}())?en:function(o){return Va(o)&&Za.call(o,"callee")&&!Ha.call(o,"callee")},Hn=$a,Ga=Array.isArray,kt=Ga,Wt={exports:{}};function Ja(){return!1}var qa=Ja;Wt.exports;(function(o,i){var e=Be,t=qa,n=i&&!i.nodeType&&i,r=n&&!0&&o&&!o.nodeType&&o,s=r&&r.exports===n,a=s?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||t;o.exports=l})(Wt,Wt.exports);var Ai=Wt.exports,Xa=9007199254740991,Ka=/^(?:0|[1-9]\d*)$/;function _a(o,i){var e=typeof o;return i=i??Xa,!!i&&(e=="number"||e!="symbol"&&Ka.test(o))&&o>-1&&o%1==0&&o<i}var ec=_a,tc=9007199254740991;function ic(o){return typeof o=="number"&&o>-1&&o%1==0&&o<=tc}var $n=ic,nc=pt,oc=$n,rc=it,sc="[object Arguments]",ac="[object Array]",cc="[object Boolean]",lc="[object Date]",uc="[object Error]",hc="[object Function]",dc="[object Map]",gc="[object Number]",Mc="[object Object]",fc="[object RegExp]",pc="[object Set]",yc="[object String]",Ic="[object WeakMap]",mc="[object ArrayBuffer]",wc="[object DataView]",Nc="[object Float32Array]",Tc="[object Float64Array]",vc="[object Int8Array]",Cc="[object Int16Array]",Sc="[object Int32Array]",jc="[object Uint8Array]",Dc="[object Uint8ClampedArray]",xc="[object Uint16Array]",zc="[object Uint32Array]",pe={};pe[Nc]=pe[Tc]=pe[vc]=pe[Cc]=pe[Sc]=pe[jc]=pe[Dc]=pe[xc]=pe[zc]=!0;pe[sc]=pe[ac]=pe[mc]=pe[cc]=pe[wc]=pe[lc]=pe[uc]=pe[hc]=pe[dc]=pe[gc]=pe[Mc]=pe[fc]=pe[pc]=pe[yc]=pe[Ic]=!1;function Ac(o){return rc(o)&&oc(o.length)&&!!pe[nc(o)]}var bc=Ac;function kc(o){return function(i){return o(i)}}var Kt=kc,Bt={exports:{}};Bt.exports;(function(o,i){var e=On,t=i&&!i.nodeType&&i,n=t&&!0&&o&&!o.nodeType&&o,r=n&&n.exports===t,s=r&&e.process,a=function(){try{var c=n&&n.require&&n.require("util").types;return c||s&&s.binding&&s.binding("util")}catch{}}();o.exports=a})(Bt,Bt.exports);var bi=Bt.exports,Ec=bc,Lc=Kt,tn=bi,nn=tn&&tn.isTypedArray,Pc=nn?Lc(nn):Ec,Gn=Pc,Oc=Ya,Rc=Hn,Yc=kt,Uc=Ai,Wc=ec,Bc=Gn,Fc=Object.prototype,Qc=Fc.hasOwnProperty;function Vc(o,i){var e=Yc(o),t=!e&&Rc(o),n=!e&&!t&&Uc(o),r=!e&&!t&&!n&&Bc(o),s=e||t||n||r,a=s?Oc(o.length,String):[],c=a.length;for(var l in o)(i||Qc.call(o,l))&&!(s&&(l=="length"||n&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Wc(l,c)))&&a.push(l);return a}var Jn=Vc,Zc=Object.prototype;function Hc(o){var i=o&&o.constructor,e=typeof i=="function"&&i.prototype||Zc;return o===e}var ki=Hc;function $c(o,i){return function(e){return o(i(e))}}var qn=$c,Gc=qn,Jc=Gc(Object.keys,Object),qc=Jc,Xc=ki,Kc=qc,_c=Object.prototype,el=_c.hasOwnProperty;function tl(o){if(!Xc(o))return Kc(o);var i=[];for(var e in Object(o))el.call(o,e)&&e!="constructor"&&i.push(e);return i}var il=tl,nl=Yn,ol=$n;function rl(o){return o!=null&&ol(o.length)&&!nl(o)}var Ei=rl,sl=Jn,al=il,cl=Ei;function ll(o){return cl(o)?sl(o):al(o)}var Li=ll,ul=Xt,hl=Li;function dl(o,i){return o&&ul(i,hl(i),o)}var gl=dl;function Ml(o){var i=[];if(o!=null)for(var e in Object(o))i.push(e);return i}var fl=Ml,pl=nt,yl=ki,Il=fl,ml=Object.prototype,wl=ml.hasOwnProperty;function Nl(o){if(!pl(o))return Il(o);var i=yl(o),e=[];for(var t in o)t=="constructor"&&(i||!wl.call(o,t))||e.push(t);return e}var Tl=Nl,vl=Jn,Cl=Tl,Sl=Ei;function jl(o){return Sl(o)?vl(o,!0):Cl(o)}var Pi=jl,Dl=Xt,xl=Pi;function zl(o,i){return o&&Dl(i,xl(i),o)}var Al=zl,Ft={exports:{}};Ft.exports;(function(o,i){var e=Be,t=i&&!i.nodeType&&i,n=t&&!0&&o&&!o.nodeType&&o,r=n&&n.exports===t,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function c(l,h){if(h)return l.slice();var u=l.length,M=a?a(u):new l.constructor(u);return l.copy(M),M}o.exports=c})(Ft,Ft.exports);var bl=Ft.exports;function kl(o,i){var e=-1,t=o.length;for(i||(i=Array(t));++e<t;)i[e]=o[e];return i}var El=kl;function Ll(o,i){for(var e=-1,t=o==null?0:o.length,n=0,r=[];++e<t;){var s=o[e];i(s,e,o)&&(r[n++]=s)}return r}var Xn=Ll;function Pl(){return[]}var Kn=Pl,Ol=Xn,Rl=Kn,Yl=Object.prototype,Ul=Yl.propertyIsEnumerable,on=Object.getOwnPropertySymbols,Wl=on?function(o){return o==null?[]:(o=Object(o),Ol(on(o),function(i){return Ul.call(o,i)}))}:Rl,Oi=Wl,Bl=Xt,Fl=Oi;function Ql(o,i){return Bl(o,Fl(o),i)}var Vl=Ql;function Zl(o,i){for(var e=-1,t=i.length,n=o.length;++e<t;)o[n+e]=i[e];return o}var Ri=Zl,Hl=qn,$l=Hl(Object.getPrototypeOf,Object),_n=$l,Gl=Ri,Jl=_n,ql=Oi,Xl=Kn,Kl=Object.getOwnPropertySymbols,_l=Kl?function(o){for(var i=[];o;)Gl(i,ql(o)),o=Jl(o);return i}:Xl,eo=_l,eu=Xt,tu=eo;function iu(o,i){return eu(o,tu(o),i)}var nu=iu,ou=Ri,ru=kt;function su(o,i,e){var t=i(o);return ru(o)?t:ou(t,e(o))}var to=su,au=to,cu=Oi,lu=Li;function uu(o){return au(o,lu,cu)}var io=uu,hu=to,du=eo,gu=Pi;function Mu(o){return hu(o,gu,du)}var fu=Mu,pu=lt,yu=Be,Iu=pu(yu,"DataView"),mu=Iu,wu=lt,Nu=Be,Tu=wu(Nu,"Promise"),vu=Tu,Cu=lt,Su=Be,ju=Cu(Su,"Set"),no=ju,Du=lt,xu=Be,zu=Du(xu,"WeakMap"),Au=zu,hi=mu,di=zi,gi=vu,Mi=no,fi=Au,oo=pt,Nt=Un,rn="[object Map]",bu="[object Object]",sn="[object Promise]",an="[object Set]",cn="[object WeakMap]",ln="[object DataView]",ku=Nt(hi),Eu=Nt(di),Lu=Nt(gi),Pu=Nt(Mi),Ou=Nt(fi),st=oo;(hi&&st(new hi(new ArrayBuffer(1)))!=ln||di&&st(new di)!=rn||gi&&st(gi.resolve())!=sn||Mi&&st(new Mi)!=an||fi&&st(new fi)!=cn)&&(st=function(o){var i=oo(o),e=i==bu?o.constructor:void 0,t=e?Nt(e):"";if(t)switch(t){case ku:return ln;case Eu:return rn;case Lu:return sn;case Pu:return an;case Ou:return cn}return i});var _t=st,Ru=Object.prototype,Yu=Ru.hasOwnProperty;function Uu(o){var i=o.length,e=new o.constructor(i);return i&&typeof o[0]=="string"&&Yu.call(o,"index")&&(e.index=o.index,e.input=o.input),e}var Wu=Uu,Bu=Be,Fu=Bu.Uint8Array,ro=Fu,un=ro;function Qu(o){var i=new o.constructor(o.byteLength);return new un(i).set(new un(o)),i}var Yi=Qu,Vu=Yi;function Zu(o,i){var e=i?Vu(o.buffer):o.buffer;return new o.constructor(e,o.byteOffset,o.byteLength)}var Hu=Zu,$u=/\w*$/;function Gu(o){var i=new o.constructor(o.source,$u.exec(o));return i.lastIndex=o.lastIndex,i}var Ju=Gu,hn=bt,dn=hn?hn.prototype:void 0,gn=dn?dn.valueOf:void 0;function qu(o){return gn?Object(gn.call(o)):{}}var Xu=qu,Ku=Yi;function _u(o,i){var e=i?Ku(o.buffer):o.buffer;return new o.constructor(e,o.byteOffset,o.length)}var eh=_u,th=Yi,ih=Hu,nh=Ju,oh=Xu,rh=eh,sh="[object Boolean]",ah="[object Date]",ch="[object Map]",lh="[object Number]",uh="[object RegExp]",hh="[object Set]",dh="[object String]",gh="[object Symbol]",Mh="[object ArrayBuffer]",fh="[object DataView]",ph="[object Float32Array]",yh="[object Float64Array]",Ih="[object Int8Array]",mh="[object Int16Array]",wh="[object Int32Array]",Nh="[object Uint8Array]",Th="[object Uint8ClampedArray]",vh="[object Uint16Array]",Ch="[object Uint32Array]";function Sh(o,i,e){var t=o.constructor;switch(i){case Mh:return th(o);case sh:case ah:return new t(+o);case fh:return ih(o,e);case ph:case yh:case Ih:case mh:case wh:case Nh:case Th:case vh:case Ch:return rh(o,e);case ch:return new t;case lh:case dh:return new t(o);case uh:return nh(o);case hh:return new t;case gh:return oh(o)}}var jh=Sh,Dh=nt,Mn=Object.create,xh=function(){function o(){}return function(i){if(!Dh(i))return{};if(Mn)return Mn(i);o.prototype=i;var e=new o;return o.prototype=void 0,e}}(),zh=xh,Ah=zh,bh=_n,kh=ki;function Eh(o){return typeof o.constructor=="function"&&!kh(o)?Ah(bh(o)):{}}var Lh=Eh,Ph=_t,Oh=it,Rh="[object Map]";function Yh(o){return Oh(o)&&Ph(o)==Rh}var Uh=Yh,Wh=Uh,Bh=Kt,fn=bi,pn=fn&&fn.isMap,Fh=pn?Bh(pn):Wh,Qh=Fh,Vh=_t,Zh=it,Hh="[object Set]";function $h(o){return Zh(o)&&Vh(o)==Hh}var Gh=$h,Jh=Gh,qh=Kt,yn=bi,In=yn&&yn.isSet,Xh=In?qh(In):Jh,so=Xh;const Kh=Ht(so);var _h=Bn,ed=Sa,td=Vn,id=gl,nd=Al,od=bl,rd=El,sd=Vl,ad=nu,cd=io,ld=fu,ud=_t,hd=Wu,dd=jh,gd=Lh,Md=kt,fd=Ai,pd=Qh,yd=nt,Id=so,md=Li,wd=Pi,Nd=1,Td=2,vd=4,ao="[object Arguments]",Cd="[object Array]",Sd="[object Boolean]",jd="[object Date]",Dd="[object Error]",co="[object Function]",xd="[object GeneratorFunction]",zd="[object Map]",Ad="[object Number]",lo="[object Object]",bd="[object RegExp]",kd="[object Set]",Ed="[object String]",Ld="[object Symbol]",Pd="[object WeakMap]",Od="[object ArrayBuffer]",Rd="[object DataView]",Yd="[object Float32Array]",Ud="[object Float64Array]",Wd="[object Int8Array]",Bd="[object Int16Array]",Fd="[object Int32Array]",Qd="[object Uint8Array]",Vd="[object Uint8ClampedArray]",Zd="[object Uint16Array]",Hd="[object Uint32Array]",Me={};Me[ao]=Me[Cd]=Me[Od]=Me[Rd]=Me[Sd]=Me[jd]=Me[Yd]=Me[Ud]=Me[Wd]=Me[Bd]=Me[Fd]=Me[zd]=Me[Ad]=Me[lo]=Me[bd]=Me[kd]=Me[Ed]=Me[Ld]=Me[Qd]=Me[Vd]=Me[Zd]=Me[Hd]=!0;Me[Dd]=Me[co]=Me[Pd]=!1;function Yt(o,i,e,t,n,r){var s,a=i&Nd,c=i&Td,l=i&vd;if(e&&(s=n?e(o,t,n,r):e(o)),s!==void 0)return s;if(!yd(o))return o;var h=Md(o);if(h){if(s=hd(o),!a)return rd(o,s)}else{var u=ud(o),M=u==co||u==xd;if(fd(o))return od(o,a);if(u==lo||u==ao||M&&!n){if(s=c||M?{}:gd(o),!a)return c?ad(o,nd(s,o)):sd(o,id(s,o))}else{if(!Me[u])return n?o:{};s=dd(o,u,a)}}r||(r=new _h);var y=r.get(o);if(y)return y;r.set(o,s),Id(o)?o.forEach(function(w){s.add(Yt(w,i,e,w,o,r))}):pd(o)&&o.forEach(function(w,p){s.set(p,Yt(w,i,e,p,o,r))});var g=l?c?ld:cd:c?wd:md,I=h?void 0:g(o);return ed(I||o,function(w,p){I&&(p=w,w=o[p]),td(s,p,Yt(w,i,e,p,o,r))}),s}var $d=Yt,Gd=$d,Jd=1,qd=4;function Xd(o){return Gd(o,Jd|qd)}var Kd=Xd;const Et=Ht(Kd),uo="1.1.29",_d="@netless/appliance-plugin",mn=typeof OffscreenCanvas=="function"?"worker":"mainThread";if(typeof window<"u"){let o=window.__netlessUA||"";o+=` ${_d}@${uo}`,window.__netlessUA=o}const we={useWorker:"auto",useSimple:!1,syncOpt:{interval:300,smoothSync:!0},cursor:{enable:!0,expirationTime:5e3,moveDelayTime:100},bufferSize:{full:2e4,sub:600},bezier:{enable:!0,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920,maxCombineTime:500},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!1,extendFontFaces:[],loadFontFacesTimeout:1e4},longDottedStroke:{lineCap:"round",segment:1,gap:2},dottedStroke:{lineCap:"round",segment:1,gap:2},normalStroke:{lineCap:"round"},undoRedo:{enableGlobal:!1,maxStackLength:20}};function ei(o){return JSON.parse(En.decompress(o))}function At(o){return En.compress(JSON.stringify(o))}const Ce=Object.keys,Je="++",Z="selector",ho="all";var eg="__lodash_hash_undefined__";function tg(o){return this.__data__.set(o,eg),this}var ig=tg;function ng(o){return this.__data__.has(o)}var og=ng,rg=Wn,sg=ig,ag=og;function Qt(o){var i=-1,e=o==null?0:o.length;for(this.__data__=new rg;++i<e;)this.add(o[i])}Qt.prototype.add=Qt.prototype.push=sg;Qt.prototype.has=ag;var Ui=Qt;function cg(o,i){for(var e=-1,t=o==null?0:o.length;++e<t;)if(i(o[e],e,o))return!0;return!1}var lg=cg;function ug(o,i){return o.has(i)}var Wi=ug,hg=Ui,dg=lg,gg=Wi,Mg=1,fg=2;function pg(o,i,e,t,n,r){var s=e&Mg,a=o.length,c=i.length;if(a!=c&&!(s&&c>a))return!1;var l=r.get(o),h=r.get(i);if(l&&h)return l==i&&h==o;var u=-1,M=!0,y=e&fg?new hg:void 0;for(r.set(o,i),r.set(i,o);++u<a;){var g=o[u],I=i[u];if(t)var w=s?t(I,g,u,i,o,r):t(g,I,u,o,i,r);if(w!==void 0){if(w)continue;M=!1;break}if(y){if(!dg(i,function(p,f){if(!gg(y,f)&&(g===p||n(g,p,e,t,r)))return y.push(f)})){M=!1;break}}else if(!(g===I||n(g,I,e,t,r))){M=!1;break}}return r.delete(o),r.delete(i),M}var go=pg;function yg(o){var i=-1,e=Array(o.size);return o.forEach(function(t,n){e[++i]=[n,t]}),e}var Ig=yg;function mg(o){var i=-1,e=Array(o.size);return o.forEach(function(t){e[++i]=t}),e}var Bi=mg,wn=bt,Nn=ro,wg=xi,Ng=go,Tg=Ig,vg=Bi,Cg=1,Sg=2,jg="[object Boolean]",Dg="[object Date]",xg="[object Error]",zg="[object Map]",Ag="[object Number]",bg="[object RegExp]",kg="[object Set]",Eg="[object String]",Lg="[object Symbol]",Pg="[object ArrayBuffer]",Og="[object DataView]",Tn=wn?wn.prototype:void 0,ri=Tn?Tn.valueOf:void 0;function Rg(o,i,e,t,n,r,s){switch(e){case Og:if(o.byteLength!=i.byteLength||o.byteOffset!=i.byteOffset)return!1;o=o.buffer,i=i.buffer;case Pg:return!(o.byteLength!=i.byteLength||!r(new Nn(o),new Nn(i)));case jg:case Dg:case Ag:return wg(+o,+i);case xg:return o.name==i.name&&o.message==i.message;case bg:case Eg:return o==i+"";case zg:var a=Tg;case kg:var c=t&Cg;if(a||(a=vg),o.size!=i.size&&!c)return!1;var l=s.get(o);if(l)return l==i;t|=Sg,s.set(o,i);var h=Ng(a(o),a(i),t,n,r,s);return s.delete(o),h;case Lg:if(ri)return ri.call(o)==ri.call(i)}return!1}var Yg=Rg;function Lt(o,i,e){return"#"+((o<<16)+(i<<8)+e).toString(16).padStart(6,"0")}function Se(o,i=1){return"rgba("+parseInt("0x"+o.slice(1,3))+","+parseInt("0x"+o.slice(3,5))+","+parseInt("0x"+o.slice(5,7))+","+i+")"}function ht(o,i,e,t=1){return`rgba(${o},${i},${e},${t})`}function ti(o){const i=o.split(","),e=parseInt(i[0].split("(")[1]),t=parseInt(i[1]),n=parseInt(i[2]),r=Number(i[3].split(")")[0]);return[Lt(e,t,n),r]}function St(o){const i=o.split(","),e=parseInt(i[0].split("(")[1]),t=parseInt(i[1]),n=parseInt(i[2]),r=Number(i[3].split(")")[0]);return[e,t,n,r]}function Rt(o){return o==="transparent"}var We=(o=>(o[o.Text=1]="Text",o[o.Shape=2]="Shape",o))(We||{});const Ee=class Ee{createProxy(i){const e=new Proxy(i,{get(t,n,r){const s=Ee.interceptors.hasOwnProperty(n)?Ee.interceptors:t;return Reflect.get(s,n,r)}});return Ee.proxyToRaw.set(e,i),e}};m(Ee,"proxyToRaw",new WeakMap),m(Ee,"interceptors",{entries(...i){return Ee.proxyToRaw.get(this).entries(...i)},forEach(...i){return Ee.proxyToRaw.get(this).forEach(...i)},size(){return Ee.proxyToRaw.get(this).size},get(i){return Ee.proxyToRaw.get(this).get(i)},set(i,e){return Ee.proxyToRaw.get(this).set(i,e)},delete(i){return Ee.proxyToRaw.get(this).delete(i)},clear(){return Ee.proxyToRaw.get(this).clear()}});let at=Ee;const pi=5;class Ug{constructor(i){m(this,"internalMsgEmitter");m(this,"publicMsgEmitter");m(this,"control");m(this,"editors");m(this,"activeId");m(this,"proxyMap");m(this,"taskqueue",new Map);m(this,"undoTickerId");m(this,"checkLocalTextBlur",x.debounce(()=>{if(this.collector)for(const[i,e]of this.editors.entries())e.opt.workState!==D.Done&&this.collector.isLocalId(i)&&this.activeId!==i&&(e.opt.text&&e.opt.text.replace(/\s*,/g,"")?this.unActive(i):this.delete(i,!0,!0))},100));const{control:e,internalMsgEmitter:t,publicMsgEmitter:n}=i;this.control=e,this.internalMsgEmitter=t,this.publicMsgEmitter=n;const r=new Map;this.proxyMap=new at;const s=this,a=at.interceptors.set;at.interceptors.set=function(l,h){return s.interceptors.set(l,h),a.call(this,l,h)};const c=at.interceptors.delete;at.interceptors.delete=function(l){return s.interceptors.delete(l),c.call(this,l)},this.editors=this.proxyMap.createProxy(r)}get collector(){return this.control.collector}set UndoTickerId(i){this.undoTickerId=i}filterEditor(i){const e=new Map;return this.editors.forEach((t,n)=>{t.viewId===i&&e.set(n,t)}),e}get interceptors(){return{set:(i,e)=>{var g,I,w,p,f,N,S,v,j;if(!this.collector)return!0;const{viewId:t,scenePath:n,canSync:r,canWorker:s,type:a,opt:c,dataType:l,updateNodeOpt:h}=e;if(!s&&!r)return!0;const M=((g=this.collector)==null?void 0:g.isLocalId(i))?(I=this.collector)==null?void 0:I.transformKey(i):i,y=((w=this.collector)==null?void 0:w.storage[t])&&this.collector.storage[t][n]&&this.collector.storage[t][n][M]||void 0;y?y.toolsType===T.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:i,msgType:U.UpdateNode}).forEach(C=>{var k;(k=this.control.worker)==null||k.taskBatchData.delete(C)}),(S=this.control.worker)==null||S.taskBatchData.add({workId:i,msgType:U.UpdateNode,dataType:l||K.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:n,willRefresh:!0}),(v=this.control.worker)==null||v.runAnimation()),r&&((j=this.collector)==null||j.dispatch({type:U.UpdateNode,workId:i,toolsType:T.Text,opt:c,viewId:t,scenePath:n,updateNodeOpt:h}),c.workState===D.Done&&this.undoTickerId&&this.control.viewContainerManager.getUndoTickerId(t)===this.undoTickerId&&(this.internalMsgEmitter.emit("forceUndoTickerEnd",this.undoTickerId,t),this.undoTickerId=void 0),c.workState===D.Done&&this.control.runEffectWork(()=>{this.control.worker.setShapeSelectorByWorkId(i,t)}))):a===We.Text&&(r&&((p=this.collector)==null||p.dispatch({type:c.text&&U.FullWork||U.CreateWork,workId:i,toolsType:T.Text,opt:c,isSync:!0,viewId:t,scenePath:n,updateNodeOpt:h})),s&&((f=this.control.worker)==null||f.taskBatchData.add({workId:i,msgType:c.text&&U.FullWork||U.CreateWork,dataType:l||K.Local,toolsType:T.Text,opt:c,viewId:t,scenePath:n,willRefresh:!0}),(N=this.control.worker)==null||N.runAnimation()))},delete:i=>{var a,c,l;if(!this.collector)return!0;const e=this.editors.get(i);if(!e)return!0;const{viewId:t,scenePath:n,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:i,toolsType:T.Text,msgType:U.RemoveNode,dataType:K.Local,viewId:t,scenePath:n,willRefresh:!0}),(c=this.control.worker)==null||c.runAnimation()),r&&((l=this.collector)==null||l.dispatch({type:U.RemoveNode,removeIds:[i],toolsType:T.Text,viewId:t,scenePath:n}),this.undoTickerId&&this.control.viewContainerManager.getUndoTickerId(t)===this.undoTickerId&&(this.internalMsgEmitter.emit("forceUndoTickerEnd",this.undoTickerId,t),this.undoTickerId=void 0))},clear(){return!0}}}computeTextActive(i,e){var r,s,a,c;const t=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(i,e),n=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&n&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:U.GetTextActive,dataType:K.Local,op:t,viewId:e,scenePath:n}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let i=this.activeId;for(const[t,n]of this.editors.entries())if(n.opt.uid&&n.opt.uid===((e=this.collector)==null?void 0:e.uid)){i=t;break}if(i){const t=this.editors.get(i);(t==null?void 0:t.opt.text)&&(t==null?void 0:t.opt.text.replace(/\s*,/g,""))?this.unActive(i):this.delete(i,!0,!0)}this.checkLocalTextBlur()}onCameraChange(i,e){var t,n;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:c}=s.opt,l=a&&((t=this.control.viewContainerManager)==null?void 0:t.transformToOriginPoint(a,s.viewId)),h=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);if(h&&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:i.scale,type:We.Text,viewId:e,scenePath:h,canWorker:!1,canSync:!1};this.editors.set(r,u),this.control.viewContainerManager.updateTextEditorInfo(e,this.activeId)}}}onServiceDerive(i){var I,w,p;const{workId:e,opt:t,msgType:n,viewId:r,scenePath:s,dataType:a,updateNodeOpt:c}=i;if(!e||!r||!s)return;const l=e.toString();if(n===U.RemoveNode){this.delete(l,!0,!0);return}const{boxPoint:h,boxSize:u}=t,M=h&&((I=this.control.viewContainerManager)==null?void 0:I.transformToOriginPoint(h,r)),y=this.control.viewContainerManager.getView(r),g={x:M&&M[0]||0,y:M&&M[1]||0,w:u&&u[0]||0,h:u&&u[1]||0,opt:t,type:We.Text,canWorker:!0,canSync:!1,dataType:a,scale:((w=y==null?void 0:y.cameraOpt)==null?void 0:w.scale)||1,viewId:r,scenePath:s};if(t&&t.workState===D.Done&&!this.control.cursor.isEnableCursor&&h&&u){let N=c==null?void 0:c.uid;if(!N){const S=this.editors.get(l);N=S&&((p=S.opt)==null?void 0:p.uid)}N&&this.control.cursor.collectServiceCursor({op:h&&[h[0]+u[0],h[1]+u[1]],uid:N,workState:D.Done,viewId:r,type:U.Cursor})}this.editors.set(l,g),a===K.Service&&t.workState===D.Done&&this.activeId===l&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}updateForViewEdited(i,e){var n;this.editors.set(i,e);const t=(n=this.taskqueue.get(i))==null?void 0:n.resolve;t&&t(e)}active(i,e){var n;const t=this.editors.get(i);t&&t.viewId&&(t.opt.workState=D.Start,t.opt.uid=(n=this.collector)==null?void 0:n.uid,this.activeId=i,t.canWorker=!0,t.canSync=!0,e&&t.viewId&&this.addUndoTicker(e,t.viewId),this.editors.set(i,t),this.control.viewContainerManager.updateTextEditorInfo(t.viewId,this.activeId))}unActive(i){var t;const e=this.editors.get(i);if(e&&e.viewId){e.opt.workState=D.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(i,e),this.activeId=void 0;const n=(t=this.control.viewContainerManager.getView(e.viewId))==null?void 0:t.container;if(n){const r=CSS.escape(i),s=n.querySelector(`.editor-box #${r}`);s&&s.blur()}this.control.viewContainerManager.updateTextEditorInfo(e.viewId,this.activeId)}}addUndoTicker(i,e){this.internalMsgEmitter.emit("addUndoTicker",i,e),this.undoTickerId=i}createTextForMasterController(i,e){var s;const{workId:t,isActive:n,...r}=i;e&&this.addUndoTicker(e,r.viewId),r.opt.uid=(s=this.collector)==null?void 0:s.uid,n&&(this.activeId=t),r.dataType=K.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(t,r),this.control.viewContainerManager.updateTextEditorInfo(r.viewId,this.activeId)}updateTextForMasterController(i,e){var s;const{workId:t,...n}=i;e&&this.addUndoTicker(e,n.viewId);const r=this.editors.get(t)||{};n.opt&&(n.opt.uid=(s=this.collector)==null?void 0:s.uid),n.dataType=K.Local,this.editors.set(t,{...r,...n}),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId)}async updateTextControllerWithEffectAsync(i,e){var h;const{workId:t,...n}=i;e&&this.addUndoTicker(e,n.viewId);const r=this.editors.get(t)||{};n.opt&&(n.opt.uid=(h=this.collector)==null?void 0:h.uid),n.dataType=K.Local;const s={...r,...n};if(this.editors.set(t,s),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId),this.taskqueue.has(t)){const u=this.taskqueue.get(t);return u&&(u.clocker&&clearTimeout(u.clocker),this.taskqueue.delete(t)),await this.updateTextControllerWithEffectAsync(i)}const a=setTimeout(()=>{var M;const u=(M=this.taskqueue.get(t))==null?void 0:M.resolve;u&&u(s)},50),c=await new Promise(u=>{this.taskqueue.set(t,{resolve:u,clocker:a})}),l=this.taskqueue.get(t);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(t)),c}updateTextForWorker(i,e){const{workId:t,isActive:n,...r}=i,a={...this.editors.get(t)||{},...r};if(e&&this.addUndoTicker(e,r.viewId),n){a.canWorker=!1,a.canSync=!1,this.editors.set(t,a),this.active(t);return}this.editors.set(t,a),this.control.viewContainerManager.updateTextEditorInfo(r.viewId,this.activeId)}get(i){return this.editors.get(i)}delete(i,e,t){const n=this.editors.get(i);if(n){const r=n.viewId;n.canSync=e,n.canWorker=t,this.editors.delete(i),this.activeId===i&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}}deleteBatch(i,e,t){const n=new Set;for(const r of i){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=t,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),n.add(a)}}for(const r of n)this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}clear(i,e){this.editors.forEach((t,n)=>{t.viewId===i&&(e&&(t.canSync=!1),t.canWorker=!1,this.editors.delete(n))}),this.activeId=void 0,this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}insertText(i,e,t,n){var g,I;const r=(g=this.control.room)==null?void 0:g.state.memberState;if(!r)return;const s=this.control.viewContainerManager.getView(i);if(!(s!=null&&s.focusScenePath))return;const a=s==null?void 0:s.cameraOpt,c=this.control.getToolsOpt(T.Text,r);if(!c)return;const l=(I=this.control.viewContainerManager)==null?void 0:I.transformToOriginPoint([e,t],i),u=li(n,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/),M=c.toolsOpt;M.text=At(u),M.workState=D.Doing,M.boxPoint=[Math.round(e),Math.round(t)],M.boxSize=[M.fontSize,M.fontSize];const y=this.control.worker.now;return this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:y.toString(),x:l&&l[0]||0,y:l&&l[1]||0,scale:(a==null?void 0:a.scale)||1,opt:M,type:We.Text,isActive:!0,viewId:i,scenePath:s.focusScenePath},y),y.toString()}updateText(i,e){const t=this.editors.get(i.toString());if(!t)return;const r=li(e,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/);t.opt.text=At(r),this.control.textEditorManager.updateTextForMasterController({workId:i,opt:t.opt,viewId:t.viewId,canSync:!0,canWorker:!0},this.control.worker.now)}}function Wg(o){return o}var Mo=Wg;function Bg(o,i,e){switch(e.length){case 0:return o.call(i);case 1:return o.call(i,e[0]);case 2:return o.call(i,e[0],e[1]);case 3:return o.call(i,e[0],e[1],e[2])}return o.apply(i,e)}var Fg=Bg,Qg=Fg,vn=Math.max;function Vg(o,i,e){return i=vn(i===void 0?o.length-1:i,0),function(){for(var t=arguments,n=-1,r=vn(t.length-i,0),s=Array(r);++n<r;)s[n]=t[i+n];n=-1;for(var a=Array(i+1);++n<i;)a[n]=t[n];return a[i]=e(s),Qg(o,this,a)}}var Zg=Vg;function Hg(o){return function(){return o}}var $g=Hg,Gg=$g,Cn=Fn,Jg=Mo,qg=Cn?function(o,i){return Cn(o,"toString",{configurable:!0,enumerable:!1,value:Gg(i),writable:!0})}:Jg,Xg=qg,Kg=800,_g=16,eM=Date.now;function tM(o){var i=0,e=0;return function(){var t=eM(),n=_g-(t-e);if(e=t,n>0){if(++i>=Kg)return arguments[0]}else i=0;return o.apply(void 0,arguments)}}var iM=tM,nM=Xg,oM=iM,rM=oM(nM),sM=rM,aM=Mo,cM=Zg,lM=sM;function uM(o,i){return lM(cM(o,i,aM),o+"")}var hM=uM;function dM(o,i,e,t){for(var n=o.length,r=e+(t?1:-1);t?r--:++r<n;)if(i(o[r],r,o))return r;return-1}var gM=dM;function MM(o){return o!==o}var fM=MM;function pM(o,i,e){for(var t=e-1,n=o.length;++t<n;)if(o[t]===i)return t;return-1}var yM=pM,IM=gM,mM=fM,wM=yM;function NM(o,i,e){return i===i?wM(o,i,e):IM(o,mM,e)}var TM=NM,vM=TM;function CM(o,i){var e=o==null?0:o.length;return!!e&&vM(o,i,0)>-1}var fo=CM;function SM(o,i,e){for(var t=-1,n=o==null?0:o.length;++t<n;)if(e(i,o[t]))return!0;return!1}var po=SM;function jM(o,i){for(var e=-1,t=o==null?0:o.length,n=Array(t);++e<t;)n[e]=i(o[e],e,o);return n}var DM=jM,xM=Ui,zM=fo,AM=po,bM=DM,kM=Kt,EM=Wi,LM=200;function PM(o,i,e,t){var n=-1,r=zM,s=!0,a=o.length,c=[],l=i.length;if(!a)return c;e&&(i=bM(i,kM(e))),t?(r=AM,s=!1):i.length>=LM&&(r=EM,s=!1,i=new xM(i));e:for(;++n<a;){var h=o[n],u=e==null?h:e(h);if(h=t||h!==0?h:0,s&&u===u){for(var M=l;M--;)if(i[M]===u)continue e;c.push(h)}else r(i,u,t)||c.push(h)}return c}var OM=PM,Sn=bt,RM=Hn,YM=kt,jn=Sn?Sn.isConcatSpreadable:void 0;function UM(o){return YM(o)||RM(o)||!!(jn&&o&&o[jn])}var WM=UM,BM=Ri,FM=WM;function yo(o,i,e,t,n){var r=-1,s=o.length;for(e||(e=FM),n||(n=[]);++r<s;){var a=o[r];i>0&&e(a)?i>1?yo(a,i-1,e,t,n):BM(n,a):t||(n[n.length]=a)}return n}var QM=yo;function VM(){}var ZM=VM,si=no,HM=ZM,$M=Bi,GM=1/0,JM=si&&1/$M(new si([,-0]))[1]==GM?function(o){return new si(o)}:HM,qM=JM,XM=Ui,KM=fo,_M=po,ef=Wi,tf=qM,nf=Bi,of=200;function rf(o,i,e){var t=-1,n=KM,r=o.length,s=!0,a=[],c=a;if(e)s=!1,n=_M;else if(r>=of){var l=i?null:tf(o);if(l)return nf(l);s=!1,n=ef,c=new XM}else c=i?[]:a;e:for(;++t<r;){var h=o[t],u=i?i(h):h;if(h=e||h!==0?h:0,s&&u===u){for(var M=c.length;M--;)if(c[M]===u)continue e;i&&c.push(u),a.push(h)}else n(c,u,e)||(c!==a&&c.push(u),a.push(h))}return a}var sf=rf,af=OM,cf=QM,Dn=sf;function lf(o,i,e){var t=o.length;if(t<2)return t?Dn(o[0]):[];for(var n=-1,r=Array(t);++n<t;)for(var s=o[n],a=-1;++a<t;)a!=n&&(r[n]=af(r[n]||s,o[a],i,e));return Dn(cf(r,1),i,e)}var uf=lf,hf=Ei,df=it;function gf(o){return df(o)&&hf(o)}var Mf=gf,ff=Xn,pf=hM,yf=uf,If=Mf;pf(function(o){return yf(ff(o,If))});function mf(o,i){if(o&&i){const e=Math.min(o.x,i.x),t=Math.min(o.y,i.y),n=Math.max(o.x+o.w,i.x+i.w),r=Math.max(o.y+o.h,i.y+i.h),s=n-e,a=r-t;return{x:e,y:t,w:s,h:a}}return i||o}function Fi(o,i){if(o&&i){const e=Math.min(o.originX,i.originX),t=Math.min(o.originY,i.originY),n=Math.max(o.originX+o.width,i.originX+i.width),r=Math.max(o.originY+o.height,i.originY+i.height),s=n-e,a=r-t;return{originX:e,originY:t,width:s,height:a}}return i||o}function Qi(o,i=0){const e={x:0,y:0,w:0,h:0};let t=1/0,n=1/0,r=-1/0,s=-1/0;return o.forEach(a=>{const[c,l]=a.XY;t=Math.min(t,c-i),n=Math.min(n,l-i),r=Math.max(r,c+i),s=Math.max(s,l+i)}),e.x=t,e.y=n,e.w=r-t,e.h=s-n,e}function wf(o,i){return!(o.x+o.w<i.x||o.x>i.x+i.w||o.y+o.h<i.y||o.y>i.y+i.h)}function Nf(o,i=10){return{x:Math.floor(o.x-i),y:Math.floor(o.y-i),w:Math.ceil(o.w+i*2),h:Math.ceil(o.h+i*2)}}function Tf(o,i){return{x:o.x+i[0],y:o.y+i[1],w:o.w,h:o.h}}function vf(o,i){const e=new Y(o.x,o.y),t=new Y(o.x+o.w,o.y),n=new Y(o.x+o.w,o.y+o.h),r=new Y(o.x,o.y+o.h),s=new Y(o.x+o.w/2,o.y+o.h/2),a=Math.PI*i/180,c=Y.RotWith(e,s,a),l=Y.RotWith(t,s,a),h=Y.RotWith(n,s,a),u=Y.RotWith(r,s,a);return[c,l,h,u]}function Cf(o,i){const e=vf(o,i);return Qi(e)}function Sf(o,i,e){const t=new Y(o.x,o.y),n=new Y(o.x+o.w,o.y),r=new Y(o.x+o.w,o.y+o.h),s=new Y(o.x,o.y+o.h),a=new Y(e[0],e[1]),c=new Y(i[0],i[1]),l=Y.ScaleWOrigin(t,c,a),h=Y.ScaleWOrigin(n,c,a),u=Y.ScaleWOrigin(r,c,a),M=Y.ScaleWOrigin(s,c,a);return Qi([l,h,u,M])}function jf(o,i,e){const t=new Y(i[0],i[1]);for(let n=0;n<o.length;n+=3){const r=new Y(o[n],o[n+1]),s=Math.PI*e/180,a=Y.RotWith(r,t,s);o[n]=a.x,o[n+1]=a.y}}function Df(o,i,e){const t=new Y(i[0],i[1]);for(let n=0;n<o.length;n+=2){const r=new Y(o[n],o[n+1]),s=Math.PI*e/180,a=Y.RotWith(r,t,s);o[n]=a.x,o[n+1]=a.y}}function xf(o,i,e,t=[0,0]){const n=new Y(i[0],i[1]);for(let r=0;r<o.length;r+=3){const s=new Y(o[r],o[r+1]),a=new Y(e[0],e[1]),c=Y.ScaleWOrigin(s,a,n);o[r]=c.x+t[0],o[r+1]=c.y+t[1]}}function zf(o,i,e,t=[0,0]){const n=new Y(i[0],i[1]);for(let r=0;r<o.length;r+=2){const s=new Y(o[r],o[r+1]),a=new Y(e[0],e[1]),c=Y.ScaleWOrigin(s,a,n);o[r]=c.x+t[0],o[r+1]=c.y+t[1]}}function Io(o,i){return o[0]>=i.x&&o[0]<=i.x+i.w&&o[1]>=i.y&&o[1]<=i.y+i.h}function Af(o,i){const e=o<=i?1:o/i,t=i<=o?1:i/o;return[e,t]}function bf(o){for(const i of o)if(isNaN(i)||i===1/0||i===-1/0)return!1;return!0}function kf(o){return o!==Math.floor(o)}function Ef(o){const i=o.toString();return i.indexOf(".")!==-1?i.split(".")[1].length:0}function Lf(o,i){for(;i!==0;)[o,i]=[i,o%i];return o}function Pf(o){return`${Vt(o.x)},${Vt(o.y)} `}function Of(o,i){return`${Vt((o.x+i.x)/2)},${Vt((o.y+i.y)/2)} `}function Vt(o){return+o.toFixed(4)}const Ge=async(o,i,e=!1)=>{let t,n;return new Promise(function(r){if(e&&requestIdleCallback)requestIdleCallback(()=>{r(1)},{timeout:i});else{if(typeof window.requestIdleCallback=="function"){const s=typeof i=="number"&&!isNaN(i)&&i>0?i:0;n=window.requestIdleCallback(()=>{clearTimeout(t),r(1)},{timeout:s})}t=setTimeout(()=>{n&&window.cancelIdleCallback(n),r(1)},i||0)}}).then(function(){o()}).catch(function(){o()})},Mt=o=>Math.max(1,(window.devicePixelRatio||1)/1),Rf=(o,i)=>o.x+o.w<i.x||o.x>i.x+i.w||o.y+o.h<i.y||o.y>i.y+i.h?Dt.outside:o.x>=i.x&&o.y>=i.y&&o.x+o.w<=i.x+i.w&&o.y+o.h<=i.y+i.h?Dt.inside:Dt.intersect;function Yf(o){let i=0;for(let e=0;e<o.length;e++){const t=o.charCodeAt(e);t>=1&&t<=126||65376<=t&&t<=65439?i++:i+=2}return i}class Uf{constructor(i,e){m(this,"plugin");m(this,"uid");m(this,"control");this.control=i,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var i;return Q.toJS((i=this.plugin)==null?void 0:i.attributes[this.namespace])||{}}getAuthSpaceData(){var i;return Q.toJS((i=this.plugin)==null?void 0:i.attributes[this.authSpace])||{}}getGlobalUndoRedoStackData(){var i;return Q.toJS((i=this.plugin)==null?void 0:i.attributes[this.globalUndoRedoStackSpace])||{}}getUidFromKey(i){return i.split(Je).length===2&&i.split(Je)[0]||this.uid}isLocalId(i){return i.split(Je).length===1}getLocalId(i){return i.split(Je)[1]}isSelector(i){return this.getLocalId(i)===Z}}const Ae=class Ae extends Uf{constructor(e,t,n){super(e,t);m(this,"namespace");m(this,"authSpace");m(this,"globalUndoRedoStackSpace");m(this,"serviceStorage",{});m(this,"storage",{});m(this,"authStorage",{});m(this,"globalUndoRedoStackStorage",{});m(this,"stateDisposer");m(this,"authDisposer");m(this,"asyncClockState",!1);m(this,"limitNums",new Map);m(this,"syncInterval");m(this,"limitComponents",x.debounce((e,t)=>{var s,a,c,l,h,u,M,y;const n=((a=(s=this.storage)==null?void 0:s[e])==null?void 0:a[t])&&Object.keys(this.storage[e][t]).length||0;if(n===0)return;let r=this.limitNums.get(`${e}/${t}`);if(!r){const g=this.getLimitNum(n);this.limitNums.set(`${e}/${t}`,g),r=g}if(r>0&&n>=r){const g=Ae.componentsLimits.indexOf(r),I=g>=0&&g<Ae.componentsLimits.length-1;if((h=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&h.map.onObjectsLimit&&((M=(u=this.control.room)==null?void 0:u.callbacks)==null||M.dispatch("onObjectsLimit",p=>p(r,I))),!I){this.control.room.logger.error(`exceeds the limit of ${r} components, current: ${n}`),(y=this.control.room)==null||y.disconnect().then(()=>{var p,f,N,S,v;(N=(f=(p=this.control.room)==null?void 0:p.callbacks)==null?void 0:f.listeners)!=null&&N.map.onKickedWithReason&&((v=(S=this.control.room)==null?void 0:S.callbacks)==null||v.dispatch("onKickedWithReason",j=>j("kickByAdmin")))});return}console.warn(`exceeds the limit of ${r} components, current: ${n}`);const w=I?Ae.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${t}`,w)}},2e3,{maxWait:5e3}));m(this,"clearLimitComponents",(e,t)=>{if(t)this.limitNums.delete(`${e}/${t}`);else for(const n of this.limitNums.keys())`${e}/`.indexOf(n)===0&&this.limitNums.delete(n)});this.syncInterval=n,this.namespace=Ae.namespace,this.authSpace=Ae.authSpace,this.globalUndoRedoStackSpace=Ae.globalUndoRedoStackSpace,this.serviceStorage=this.getNamespaceData(),this.storage=x.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.globalUndoRedoStackStorage={},this.getLimitNums()}getLimitNum(e){return e>=Ae.componentsLimits[0]?Ae.componentsLimits[1]:Ae.componentsLimits[0]}getLimitNums(){for(const[e,t]of Object.entries(this.storage))if(e&&t){for(const[n,r]of Object.entries(t))if(n&&r){const s=this.getLimitNum(Object.keys(r).length);this.limitNums.set(`${e}/${n}`,s)}}}getViewIdBySecenPath(e){const t=this.getNamespaceData();for(const[n,r]of Object.entries(t))if(r){for(const s of Object.keys(r))if(s===e)return n}}getScenePathData(e){const t=this.getNamespaceData();for(const n of Object.values(t))if(n){for(const r of Object.keys(n))if(r===e)return x.cloneDeep(n[r])}}getStorageData(e,t){const n=this.getNamespaceData();return n&&n[e]&&x.cloneDeep(n[e][t])||void 0}hasSelector(e,t){const n=this.storage&&this.storage[e]&&this.storage[e][t];return!!(n&&Object.keys(n).find(r=>this.isOwn(r)&&this.getLocalId(r)===Z))}hasIncludeSelector(e,t,n){for(const r of Object.keys(this.storage))if(!(t&&r!==t)){for(const s of Object.keys(this.storage[r]))if(!(n&&s!==n)){for(const a of Object.keys(this.storage[r][s]))if(this.getLocalId(a)===Z){const c=this.storage[r][s][a],l=this.isLocalId(e)?this.transformKey(e):e;if(c&&c.selectIds&&c.selectIds.length&&c.selectIds.includes(l))return!0}}}return!1}addStorageStateListener(e){this.stateDisposer=Q.autorun(async()=>{var c,l,h,u,M,y;const t=this.getNamespaceData(),{diffView:n,diffScenePath:r,diffData:s}=this.diffFunByView(this.serviceStorage,t);this.serviceStorage=t;const a={};if(Object.keys(n).length>0)for(const[g,I]of Object.entries(n))I&&!x.isEqual((c=this.storage)==null?void 0:c[g],I.newValue)&&(a.diffView||(a.diffView={}),a.diffView[g]=I,this.storage||(this.storage={}),I.newValue===void 0?delete this.storage[g]:this.storage[g]=x.cloneDeep(I.newValue));if(Object.keys(r).length>0){for(const[g,I]of Object.entries(r))if(I){const{viewId:w,newValue:p}=I;I&&!x.isEqual((h=(l=this.storage)==null?void 0:l[w])==null?void 0:h[g],p)&&(a.diffScenePath||(a.diffScenePath={}),a.diffScenePath[g]=I,this.storage||(this.storage={}),this.storage[w]||(this.storage[w]={}),I.newValue===void 0?delete this.storage[w][g]:this.storage[w][g]=x.cloneDeep(I.newValue))}}if(Object.keys(s).length>0){for(const[g,I]of Object.entries(s))if(I){const{viewId:w,scenePath:p,newValue:f}=I;I&&!x.isEqual((y=(M=(u=this.storage)==null?void 0:u[w])==null?void 0:M[p])==null?void 0:y[g],f)&&(a.diffData||(a.diffData={}),a.diffData[g]=I,this.storage||(this.storage={}),this.storage[w]||(this.storage[w]={}),this.storage[w][p]||(this.storage[w][p]={}),I.newValue===void 0?delete this.storage[w][p][g]:this.storage[w][p][g]=x.cloneDeep(I.newValue))}}Object.keys(a).length>0&&e(a),this.control.worker.publicMsgEmitter.emit("syncStorageChange",this.serviceStorage)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,t){const n=Ce(e),r=Ce(t),s={},a={},c={};for(const l of r)if(!n.includes(l)||e[l]===void 0){s[l]={newValue:t[l],oldValue:void 0};continue}for(const l of n){if(x.isEqual(e[l],t[l]))continue;if(!r.includes(l)||t[l]===void 0){s[l]={newValue:void 0,oldValue:e[l]};continue}const h=this.diffFunByScenePath(e[l],t[l],l);Object.assign(a,h.diffScenePath),Object.assign(c,h.diffData)}return{diffData:c,diffScenePath:a,diffView:s}}diffFunByScenePath(e,t,n){const r=Ce(e),s=Ce(t),a={},c={};for(const l of s)if(!r.includes(l)||e[l]===void 0){a[l]={newValue:t[l],oldValue:void 0,viewId:n};continue}for(const l of r){if(x.isEqual(e[l],t[l]))continue;if(!s.includes(l)||t[l]===void 0){a[l]={newValue:void 0,oldValue:e[l],viewId:n};continue}const h=this.diffFunByKeys(e[l],t[l],l,n);Object.assign(c,h)}return{diffScenePath:a,diffData:c}}diffFunByKeys(e,t,n,r){const s=Ce(e),a=Ce(t),c={};for(const l of a)(!s.includes(l)||e[l]===void 0)&&(c[l]={oldValue:void 0,newValue:t[l],viewId:r,scenePath:n});for(const l of s)if(!x.isEqual(e[l],t[l])){if(!a.includes(l)||t[l]===void 0){c[l]={newValue:void 0,oldValue:e[l],viewId:r,scenePath:n};continue}a.includes(l)&&(c[l]={oldValue:e[l],newValue:t[l],viewId:r,scenePath:n})}return c}transformKey(e){return this.uid+Je+e}isOwn(e){return e.split(Je)[0]===this.uid}dispatch(e){var w;const{type:t,workId:n,ops:r,index:s,opt:a,toolsType:c,removeIds:l,updateNodeOpt:h,op:u,selectIds:M,isSync:y,scenePath:g,viewId:I}=e;if(I)switch(t){case U.Clear:const p={};g&&this.storage[I]&&this.storage[I][g]?(delete this.storage[I][g],this.setState(p,{isSync:y,viewId:I,scenePath:g})):this.storage[I]&&(delete this.storage[I],this.setState(p,{isSync:y,viewId:I,scenePath:""})),Ge(()=>{var j,C;(j=this.control.pluginManager)==null||j.dispatchPluginEvent("syncStorage",I,g),this.control.isUseSimple||(C=this.control.miniMapManager)==null||C.updateMiniMapCamera(I),this.clearLimitComponents(I,g)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"));break;case U.CreateWork:if(g&&n&&c&&a){const j=this.isLocalId(n.toString())?this.transformKey(n):n;this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.addRenderPageElementId({viewId:I,scenePath:g,elementId:j.toString()}),this.updateValue(j.toString(),{type:U.CreateWork,workId:n,toolsType:c,opt:a},{isSync:y,viewId:I,scenePath:g})}break;case U.DrawWork:if(g&&n&&typeof s=="number"&&(u!=null&&u.length)){const j=this.isLocalId(n.toString())?this.transformKey(n):n,C=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][j]||void 0;if(C!=null&&C.ops||(C==null?void 0:C.type)===U.FullWork)return;const k=s?((C==null?void 0:C.op)||[]).slice(0,s).concat(u):u||(C==null?void 0:C.op),P=c||(C==null?void 0:C.toolsType),L=a||(C==null?void 0:C.opt),O=h||(C==null?void 0:C.updateNodeOpt);n&&P&&L&&k&&(this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.addRenderPageElementId({viewId:I,scenePath:g,elementId:j.toString()}),this.updateValue(j.toString(),{...C,type:U.DrawWork,workId:n,updateNodeOpt:O,toolsType:P,opt:L,op:k,index:s},{isSync:y,viewId:I,scenePath:g}))}break;case U.FullWork:if(g&&n){const j=this.isLocalId(n.toString())?this.transformKey(n):n,C=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][j]||void 0,k=h||(C==null?void 0:C.updateNodeOpt),P=c||(C==null?void 0:C.toolsType),L=a||(C==null?void 0:C.opt),O=r||(C==null?void 0:C.ops);P&&L&&(this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.addRenderPageElementId({viewId:I,scenePath:g,elementId:j.toString()}),this.updateValue(j.toString(),{type:U.FullWork,updateNodeOpt:k,workId:j,toolsType:P,opt:L,ops:O},{isSync:y,viewId:I,scenePath:g}),Ge(()=>{var A,R;(A=this.control.pluginManager)==null||A.dispatchPluginEvent("syncStorage",I,g),this.control.isUseSimple||(R=this.control.miniMapManager)==null||R.updateMiniMapCamera(I),this.limitComponents(I,g)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case U.RemoveNode:if(g&&(l!=null&&l.length)){const j=l.map(C=>this.isLocalId(C+"")?this.transformKey(C):C);this.storage[I]&&this.storage[I][g]&&(Object.keys(this.storage[I][g]).map(C=>{j!=null&&j.includes(C)&&(this.control.renderControl.isUsePageAuth(I)&&this.control.renderControl.delRenderPageElementId({viewId:I,scenePath:g,elementId:C}),this.updateValue(C,void 0,{isSync:y,viewId:I,scenePath:g}))}),(w=this.control.pluginManager)==null||w.dispatchPluginEvent("syncStorage",I,g),this.control.isUseSimple||Ge(()=>{var C;(C=this.control.miniMapManager)==null||C.updateMiniMapCamera(I)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case U.UpdateNode:if(g&&n&&(h||r||a)){const j=this.isLocalId(n.toString())?this.transformKey(n):n,C=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][j]||void 0;C&&(C.updateNodeOpt=h,(r||u)&&(C.ops=r,C.op=u),a&&(C.opt=a),C.type=U.FullWork,this.updateValue(j.toString(),C,{isSync:y,viewId:I,scenePath:g}),this.control.isUseSimple||Ge(()=>{var k;(k=this.control.miniMapManager)==null||k.updateMiniMapCamera(I)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case U.Select:if(!g)return;let f;M!=null&&M.length&&(f=M.map(j=>this.isLocalId(j+"")?this.transformKey(j):j));const N=this.transformKey(Z),S=this.storage[I]&&this.storage[I][g]&&this.storage[I][g][N]||void 0,v=a||(S==null?void 0:S.opt);f&&this.checkOtherSelector(N,f,{isSync:y,viewId:I,scenePath:g}),this.updateValue(N,f&&{type:U.Select,toolsType:T.Selector,opt:v,selectIds:f},{isSync:y,viewId:I,scenePath:g});break}}checkOtherSelector(e,t,n){const{viewId:r,scenePath:s}=n;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===Z){const c=this.storage[r][s][a];if(c&&c.selectIds){const l=c.selectIds.filter(h=>!t.includes(h));l.length>0&&(c.selectIds=l),this.updateValue(a,l.length&&c||void 0,n)}}}setState(e,t){const{viewId:n,scenePath:r}=t,s=Ce(e);for(let a=0;a<s.length;a++){const c=s[a],l=e[c];typeof l<"u"?(this.storage[n]||(this.storage[n]={}),this.storage[n][r]||(this.storage[n][r]={}),this.storage[n][r][c]=l):delete this.storage[n][r][c]}this.runSyncService(t)}updateValue(e,t,n){const{viewId:r,scenePath:s,storage:a}=n,c=a||this.storage;t===void 0?delete c[r][s][e]:(c[r]||(c[r]={}),c[r][s]||(c[r][s]={}),c[r][s][e]=t),this.runSyncService(n)}runSyncService(e){if(!this.control.renderControl.isWritable){this.control.room&&this.control.room.logger?this.control.room.logger.error("The current state is not writable and synchronization cannot be synchronized"):console.error("The current state is not writable and synchronization cannot be synchronized");return}this.asyncClockState||(this.asyncClockState=!0,e.isSync?(this.asyncClockState=!1,this.syncSerivice(e)):Ge(()=>{this.asyncClockState=!1,this.syncSerivice(e)},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}syncSerivice(e={storage:this.storage}){const{storage:t}=e,n=t||this.storage,r=Ce(this.serviceStorage),s=Ce(n),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}x.isEqual(this.serviceStorage[c],n[c])||this.syncViewData(n,c)}for(const c of s)r.includes(c)||a.set(c,n[c]);if(a.size>5)this.syncStorageView(n);else for(const[c,l]of a.entries())this.syncUpdataView(n,c,l)}syncViewData(e,t){const n=Ce(this.serviceStorage[t]),r=Ce(e[t]),s=new Map;for(const a of n){if(!r.includes(a)){s.set(a,void 0);continue}x.isEqual(this.serviceStorage[t][a],e[t][a])||this.syncScenePathData(e,t,a)}for(const a of r)n.includes(a)||s.set(a,e[t][a]);if(s.size>5)this.syncStorageScenePath(t,e[t]);else for(const[a,c]of s.entries())this.syncUpdataScenePath(e,t,a,c)}syncScenePathData(e,t,n){const r=Ce(this.serviceStorage[t][n]),s=Ce(e[t][n]),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}x.isEqual(this.serviceStorage[t][n][c],e[t][n][c])||a.set(c,e[t][n][c])}for(const c of s)r.includes(c)||a.set(c,e[t][n][c]);if(a.size>5)this.syncStorageKey(t,n,e[t][n]);else for(const[c,l]of a.entries())this.syncUpdataKey(e,t,n,c,l)}syncUpdataView(e,t,n){var s;Object.keys(this.serviceStorage).length?(s=this.plugin)==null||s.updateAttributes([this.namespace,t],n):this.syncStorageView(e)}syncStorageView(e){var t;(t=this.plugin)==null||t.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,t,n,r){var a;Object.keys(this.serviceStorage[t]).length?(a=this.plugin)==null||a.updateAttributes([this.namespace,t,n],r):this.syncStorageScenePath(t,e[t])}syncStorageScenePath(e,t){var n;(n=this.plugin)==null||n.updateAttributes([this.namespace,e],t)}syncUpdataKey(e,t,n,r,s){var c;Object.keys(this.serviceStorage[t][n]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,t,n,r],s):this.syncStorageKey(t,n,e[t][n])}syncStorageKey(e,t,n){var r;(r=this.plugin)==null||r.updateAttributes([this.namespace,e,t],n)}keyTransformWorkId(e){const t=e.split(Je);return t.length===2?t[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.removeAuthStateListener(),this.authStorage={},this.globalUndoRedoStackStorage={}}transformToSerializableUndoStackItemData(e){const{data:t,scenePath:n}=e,r={};for(const s of t)r[s.key]={dataType:s.dataType,data:s.data};return{data:r,scenePath:n}}dispatchUndoTicker(e){const{viewId:t,undoTickerId:n,data:r,syncType:s,operation:a}=e,c=a===Te.syncUndoStack?"undoStack":"redoStack",l=s==="delete"?void 0:this.transformToSerializableUndoStackItemData(r);if(this.plugin)if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,t]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,t,c]))this.globalUndoRedoStackStorage[t][c][n]=l,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c,n],l);else{const h={[n]:l};this.globalUndoRedoStackStorage[t][c]=h,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c],h)}else{const h={[c]:{[n]:l}};this.globalUndoRedoStackStorage[t]=h,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t],h)}else{const h={[t]:{[c]:{[n]:l}}};this.globalUndoRedoStackStorage=h,this.plugin.updateAttributes(this.globalUndoRedoStackSpace,h)}}addGlobalUndoRedoStackListener(e){this.authDisposer=Q.autorun(async()=>{const t=this.getGlobalUndoRedoStackData();if(x.isEqual(this.globalUndoRedoStackStorage,t))return;const n=this.diffGlobalUndoRedoStackFun(this.globalUndoRedoStackStorage,t);this.globalUndoRedoStackStorage=t,e(n)})}diffGlobalUndoRedoStackFun(e,t){const n=Ce(e),r=Ce(t),s={};for(const a of r)if(!n.includes(a)||e[a]===void 0){s[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!x.isEqual(e[a],t[a])){if(!r.includes(a)||t[a]===void 0){s[a]={newValue:void 0,oldValue:e[a]};continue}s[a]={newValue:t[a],oldValue:e[a]}}return s}dispatchPageAuth(e,t=!0){var l,h,u,M,y,g,I,w,p,f,N,S,v,j,C,k,P,L,O,A,R,z,V,_,B,J,ie,re,ne,q,$,ue,Fe,Qe,ot,qe,Ve,Ze;const{operation:n,viewId:r,scenePath:s,pageId:a,pageData:c}=e;switch(n){case Te.addPage:{if(!r||!s||!a)return;const H=[this.authSpace];Object.keys(this.authStorage).length&&H.push("pageAuth");const F=this.authStorage.pageAuth||{};this.authStorage.pageAuth=F,Object.keys(F).length&&H.push(r),F[r]=F[r]||{},Object.keys(F[r]).length&&H.push(s),F[r][s]=F[r][s]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(F[r][s].pages).length&&H.push("pages",a);const G={};if(c!=null&&c.elementIds)for(const X of c.elementIds.keys())G[X]=!0;F[r][s].pages[a]=G,t&&(H.length===1?(l=this.plugin)==null||l.updateAttributes(H,x.cloneDeep(this.authStorage)):H.length===2?(h=this.plugin)==null||h.updateAttributes(H,x.cloneDeep(F)):H.length===3?(u=this.plugin)==null||u.updateAttributes(H,x.cloneDeep(F[r])):H.length===4?(M=this.plugin)==null||M.updateAttributes(H,x.cloneDeep(F[r][s])):(y=this.plugin)==null||y.updateAttributes(H,x.cloneDeep(G)));return}case Te.renderPage:{if(!r||!s||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[r]&&this.authStorage.pageAuth[r][s]&&c.render!==this.authStorage.pageAuth[r][s].render&&(this.authStorage.pageAuth[r][s].render=c.render,t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",r,s,"render"],c.render)));return}case Te.deletePage:{if(!r||!s||!a)return;(N=(f=(p=(w=(I=this.authStorage)==null?void 0:I.pageAuth)==null?void 0:w[r])==null?void 0:p[s])==null?void 0:f.pages)!=null&&N[a]&&(delete this.authStorage.pageAuth[r][s].pages[a],t&&((S=this.plugin)==null||S.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a],void 0)));return}case Te.clearPage:{if(!r||!s||!a)return;(P=(k=(C=(j=(v=this.authStorage)==null?void 0:v.pageAuth)==null?void 0:j[r])==null?void 0:C[s])==null?void 0:k.pages)!=null&&P[a]&&(delete this.authStorage.pageAuth[r][s].pages[a],t&&((L=this.plugin)==null||L.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a],{})));return}case Te.addElement:{if(!r||!s||!a||!(c!=null&&c.elementId))return;(V=(z=(R=(A=(O=this.authStorage)==null?void 0:O.pageAuth)==null?void 0:A[r])==null?void 0:R[s])==null?void 0:z.pages)!=null&&V[a]&&(this.authStorage.pageAuth[r][s].pages[a][c.elementId]=!0,t&&((_=this.plugin)==null||_.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a,c.elementId],!0)));return}case Te.deleteElement:{if(!r||!s||!a||!(c!=null&&c.elementId))return;(q=(ne=(re=(ie=(J=(B=this.authStorage)==null?void 0:B.pageAuth)==null?void 0:J[r])==null?void 0:ie[s])==null?void 0:re.pages)==null?void 0:ne[a])!=null&&q[c.elementId]&&(delete this.authStorage.pageAuth[r][s].pages[a][c.elementId],t&&(($=this.plugin)==null||$.updateAttributes([this.authSpace,"pageAuth",r,s,"pages",a,c.elementId],void 0)));return}case Te.clearViewScenePath:{if(!r||!s)return;(Qe=(Fe=(ue=this.authStorage)==null?void 0:ue.pageAuth)==null?void 0:Fe[r])!=null&&Qe[s]&&(delete this.authStorage.pageAuth[r][s],t&&((ot=this.plugin)==null||ot.updateAttributes([this.authSpace,"pageAuth",r,s],void 0)));return}case Te.clearView:{if(!r)return;(Ve=(qe=this.authStorage)==null?void 0:qe.pageAuth)!=null&&Ve[r]&&(delete this.authStorage.pageAuth[r],t&&((Ze=this.plugin)==null||Ze.updateAttributes([this.authSpace,"pageAuth",r],void 0)));return}}}dispatchRenderAuth(e,t=!0){var l,h,u,M,y,g,I,w,p,f,N,S,v,j,C,k,P,L,O,A;const{operation:n,viewId:r,uid:s,renderData:a,isClear:c}=e;if(r)switch(n){case Ue.setAuth:{if(!a||a.render===void 0&&a.hide===void 0&&a.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[r]&&(delete this.authStorage.renderAuth[r],t&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",r],void 0)));return}const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]={},this.authStorage.renderAuth=z;const{render:V,hide:_,clear:B}=a;if(V===!0)z[r].render=!0;else if(x.isSet(V)){z[r].render={};for(const J of V.keys())z[r].render[J]=!0}if(_===!0)z[r].hide=!0;else if(x.isSet(_)){z[r].hide={};for(const J of _.keys())z[r].hide[J]=!0}if(B===!0)z[r].clear=!0;else if(x.isSet(B)){z[r].clear={};for(const J of B.keys())z[r].clear[J]=!0}t&&(R.length===1?(h=this.plugin)==null||h.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(u=this.plugin)==null||u.updateAttributes(R,x.cloneDeep(z)):(M=this.plugin)==null||M.updateAttributes(R,x.cloneDeep(z[r])));return}case Ue.setShow:{if(!s)return;const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]=z[r]||{},this.authStorage.renderAuth=z,Object.keys(z[r]).length&&R.push("render"),z[r].render=z[r].render||{},z[r].render!==!0&&(Object.keys(z[r].render).length&&R.push(s),z[r].render[s]=!0),z[r].hide!==!0&&((y=z[r].hide)!=null&&y[s])&&(delete z[r].hide[s],t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",r,"hide",s],void 0))),t&&(R.length===1?(I=this.plugin)==null||I.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(w=this.plugin)==null||w.updateAttributes(R,x.cloneDeep(z)):R.length===3?(p=this.plugin)==null||p.updateAttributes(R,x.cloneDeep(z[r])):(f=this.plugin)==null||f.updateAttributes(R,!0));return}case Ue.setHide:{if(!s)return;const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]=z[r]||{},this.authStorage.renderAuth=z,Object.keys(z[r]).length&&R.push("hide"),z[r].hide=z[r].hide||{},z[r].hide!==!0&&(Object.keys(z[r].hide).length&&R.push(s),z[r].hide[s]=!0),z[r].render!==!0&&((N=z[r].render)!=null&&N[s])&&(delete z[r].render[s],t&&((S=this.plugin)==null||S.updateAttributes([this.authSpace,"renderAuth",r,"render",s],void 0))),t&&(R.length===1?(v=this.plugin)==null||v.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(j=this.plugin)==null||j.updateAttributes(R,x.cloneDeep(z)):R.length===3?(C=this.plugin)==null||C.updateAttributes(R,x.cloneDeep(z[r])):(k=this.plugin)==null||k.updateAttributes(R,!0));return}case Ue.setClear:{if(!s)return;const R=[this.authSpace];Object.keys(this.authStorage).length&&R.push("renderAuth");const z=this.authStorage.renderAuth||{};Object.keys(z).length&&R.push(r),z[r]=z[r]||{},this.authStorage.renderAuth=z,Object.keys(z[r]).length&&R.push("clear"),z[r].clear=z[r].clear||{},z[r].clear!==!0&&(Object.keys(z[r].clear).length&&R.push(s),c?z[r].clear[s]=!0:delete z[r].clear[s]),t&&(R.length===1?(P=this.plugin)==null||P.updateAttributes(R,x.cloneDeep(this.authStorage)):R.length===2?(L=this.plugin)==null||L.updateAttributes(R,x.cloneDeep(z)):R.length===3?(O=this.plugin)==null||O.updateAttributes(R,x.cloneDeep(z[r])):(A=this.plugin)==null||A.updateAttributes(R,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=Q.autorun(async()=>{const t=this.getAuthSpaceData(),{renderAuth:n,pageAuth:r}=t;let s,a;x.isEqual(n,this.authStorage.renderAuth)||(s=this.diffAuthFun(this.authStorage.renderAuth||{},n||{}),this.authStorage.renderAuth=n),x.isEqual(r,this.authStorage.pageAuth)||(a=this.diffAuthPageFun(this.authStorage.pageAuth||{},r||{}),this.authStorage.pageAuth=r),(s||a)&&e(s,a)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,t){const n=Ce(e),r=Ce(t),s={};for(const a of r)if(!n.includes(a)||e[a]===void 0){s[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!x.isEqual(e[a],t[a])){if(!r.includes(a)||t[a]===void 0){s[a]={newValue:void 0,oldValue:e[a]};continue}s[a]={newValue:t[a],oldValue:e[a]}}return s}diffAuthPageFun(e,t){const n=Ce(e),r=Ce(t),s={};for(const a of r)if(!n.includes(a)||e[a]===void 0){s[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!x.isEqual(e[a],t[a])){if(!r.includes(a)||t[a]===void 0){s[a]={newValue:void 0,oldValue:e[a]};continue}s[a]={newValue:t[a],oldValue:e[a]}}return s}};m(Ae,"namespace","PluginState"),m(Ae,"authSpace","PluginAuth"),m(Ae,"globalUndoRedoStackSpace","GlobalUndoRedoStack"),m(Ae,"componentsLimits",[500,1e3]);let yi=Ae;var Le=(o=>(o[o.Draw=1]="Draw",o[o.Delete=2]="Delete",o[o.Update=3]="Update",o))(Le||{});class Wf{constructor(){m(this,"roomMembers",[]);m(this,"onChangeHooks",new Set)}setRoomMembers(i){this.executChangeUidHook(this.roomMembers,i),this.roomMembers=i}executChangeUidHook(i,e){const t={online:e.map(n=>{var r;return((r=n.payload)==null?void 0:r.uid)||n.session}),offline:i.map(n=>{var r;return((r=n.payload)==null?void 0:r.uid)||n.session})};this.onChangeHooks.forEach(n=>n(t))}getAllRoomMembers(){return this.roomMembers}getRoomMember(i){return this.roomMembers.find(e=>{var t;return((t=e.payload)==null?void 0:t.uid)===i})}isOnLine(i){return!!this.getRoomMember(i)}onUidChangeHook(i){this.onChangeHooks.add(i)}destroy(){this.onChangeHooks.clear()}}class Bf{constructor(i){m(this,"expirationTime",we.cursor.expirationTime);m(this,"isEnableCursor");m(this,"internalMsgEmitter");m(this,"publicMsgEmitter");m(this,"control");m(this,"eventName","applianc-cursor");m(this,"displayer");m(this,"roomMember");m(this,"animationId");m(this,"maxLastSyncTime");m(this,"willSendEventWorkers",[]);m(this,"willConsumeEventWorkers",new Map);m(this,"sendEventTimerId");m(this,"animationDrawWorkers",new Map);m(this,"animationEventWorkers",new Map);m(this,"cursorInfoMap",new Map);m(this,"doneRenderCursorInfoMap",new Map);const{control:e,internalMsgEmitter:t,publicMsgEmitter:n}=i;this.internalMsgEmitter=t,this.publicMsgEmitter=n,this.expirationTime=x.isNumber(e.pluginOptions.extras.cursor.expirationTime)?e.pluginOptions.extras.cursor.expirationTime:this.expirationTime,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.isEnableCursor=this.control.pluginOptions.extras.cursor.enable}activeCollector(){this.control.plugin&&this.isEnableCursor&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(i){var a;const{event:e,payload:t}=i;if(e!==this.eventName)return;const{uid:n,op:r,type:s}=t;if(((a=this.control.collector)==null?void 0:a.uid)!==n&&s===jt.Cursor&&(r!=null&&r.length)){const c=this.willConsumeEventWorkers.get(n)||[];for(const l of r){const{viewId:h}=l;x.isNumber(l.consumPoint[0])&&x.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,h)),this.control.renderControl.isFilterCursor(h)&&c.unshift({...l,timestamp:this.control.worker.now})}this.willConsumeEventWorkers.set(n,c),this.runAnimation()}}onFocusViewChange(){this.isEnableCursor&&(this.checkDrawWorks(),this.runAnimation())}updateRoomMembers(i){const{offline:e}=i;for(const t of this.cursorInfoMap.keys())t&&e.includes(t)&&this.cursorInfoMap.delete(t)}getKey(i,e){return`${i}${Je}${e}`}getUidAndviewId(i){const[e,t]=i.split(Je);return{uid:e,viewId:t}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const i=this.control.viewContainerManager.focuedViewId;for(const[t,n]of this.animationDrawWorkers.entries()){const{viewId:r,uid:s}=this.getUidAndviewId(t);s!==((e=this.control.collector)==null?void 0:e.uid)&&r!==i&&n.workState===D.Done&&(n.consumPoint=[void 0,void 0])}}animationCursor(){this.animationId=void 0;const i=this.control.worker.now;for(const[t,n]of this.animationDrawWorkers.entries()){const{uid:r,viewId:s}=this.getUidAndviewId(t),a=this.roomMember.getRoomMember(r);if(!a){this.animationDrawWorkers.delete(t);continue}const{consumPoint:c,timestamp:l,workState:h}=n,u=this.cursorInfoMap.get(s)||new Map;c&&x.isNumber(c[0])&&x.isNumber(c[1])&&l+this.expirationTime>i?u.set(a.memberId,{x:c[0],y:c[1],roomMember:a,timestamp:l,type:1,workState:h}):u.delete(a.memberId),u.size?this.cursorInfoMap.set(s,u):this.cursorInfoMap.delete(s),this.animationDrawWorkers.delete(t)}const e=new Set;for(const[t,n]of this.cursorInfoMap.entries())if(n)for(const[r,s]of n.entries())s.type===1&&s.workState!==D.Done&&e.add(r);else this.cursorInfoMap.delete(t);for(const[t,n]of this.willConsumeEventWorkers.entries()){const r=this.roomMember.getRoomMember(t);if(x.isNumber(r==null?void 0:r.memberId)&&!e.has(r.memberId)){const s=n.pop();s?this.animationEventWorkers.set(t,s):this.willConsumeEventWorkers.delete(t)}}for(const[t,n]of this.animationEventWorkers.entries()){const r=this.roomMember.getRoomMember(t);if(!r){this.animationEventWorkers.delete(t);continue}const{viewId:s,consumPoint:a,timestamp:c}=n,l=this.cursorInfoMap.get(s)||new Map;a&&x.isNumber(a[0])&&x.isNumber(a[1])&&c+this.expirationTime>i?l.set(r.memberId,{x:a[0],y:a[1],roomMember:r,timestamp:c,type:0}):l.delete(r.memberId),l.size?this.cursorInfoMap.set(s,l):this.cursorInfoMap.delete(s),this.animationEventWorkers.delete(t)}for(const t of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(t)||(this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([ee.Cursor,t],[]));for(const[t,n]of this.cursorInfoMap.entries())if(n!=null&&n.size){const r=[];for(const[a,c]of n.entries()){const{timestamp:l,...h}=c;l+this.expirationTime>i?r.push(h):(n.delete(a),n.size===0&&(this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([ee.Cursor,t],[])))}const s=this.doneRenderCursorInfoMap.get(t);x.isEqual(s,r)||(this.doneRenderCursorInfoMap.set(t,r),this.internalMsgEmitter.emit([ee.Cursor,t],r))}else this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([ee.Cursor,t],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(i,e){if(this.displayer&&Q.isRoom(this.displayer)){const t=x.isNumber(i[0])&&x.isNumber(i[1])&&this.control.viewContainerManager.transformToScenePoint(i,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:t,viewId:e}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var i;this.displayer&&Q.isRoom(this.displayer)&&this.displayer.isWritable&&this.displayer.dispatchMagixEvent(this.eventName,{type:jt.Cursor,op:x.cloneDeep(this.willSendEventWorkers),uid:(i=this.control.collector)==null?void 0:i.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(i){var s;if(!this.isEnableCursor&&!this.control.renderControl.isWritable)return;const{op:e,uid:t,workState:n,viewId:r}=i;if(t&&e&&n&&r){const a=this.roomMember.getRoomMember(t);if(!a||t===((s=this.control.collector)==null?void 0:s.uid))return;const c=this.getKey(t,r);let l=[void 0,void 0];if(x.isNumber(e[0])&&x.isNumber(e[1])){const[u,M]=this.control.viewContainerManager.transformToOriginPoint(e,r);l=[u,M]}if(n===D.Start){for(const u of this.cursorInfoMap.values())if(u!=null&&u.size)for(const M of u.keys())M===a.memberId&&u.delete(M)}const h={consumPoint:l,workState:n,viewId:r,timestamp:this.control.worker.now};if(n===D.Start||n===D.Done){const u=this.willConsumeEventWorkers.get(t);n===D.Start&&u&&this.willConsumeEventWorkers.delete(t),u&&n===D.Done&&(h.timestamp=h.timestamp-this.expirationTime)}this.animationDrawWorkers.set(c,h),this.runAnimation()}}unabled(){var i;this.displayer&&Q.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:jt.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(i=this.control.collector)==null?void 0:i.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)),this.isEnableCursor||this.stopAnimation()}clearViewCursor(i){var e,t,n;for(const[r]of this.animationDrawWorkers.entries()){const{uid:s}=this.getUidAndviewId(r);s===((e=this.control.collector)==null?void 0:e.uid)&&i===i&&this.animationDrawWorkers.delete(r)}for(const[r]of this.willConsumeEventWorkers.entries())r===((t=this.control.collector)==null?void 0:t.uid)&&this.willConsumeEventWorkers.delete(r);for(const[r]of this.animationEventWorkers.entries())r===((n=this.control.collector)==null?void 0:n.uid)&&this.animationEventWorkers.delete(r);for(const[r]of this.cursorInfoMap.entries())r===r&&(this.cursorInfoMap.delete(r),this.doneRenderCursorInfoMap.delete(r),this.internalMsgEmitter.emit([ee.Cursor,r],[]))}stopAnimation(){this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.cursorInfoMap.clear()}destroy(){var i;(i=this.displayer)==null||i.removeMagixEventListener(this.eventName),this.stopAnimation()}}class Re{constructor(){m(this,"useEmtMsg");m(this,"emtType");m(this,"control");m(this,"mainEngine");m(this,"collectListener",(i,e)=>{this.collect(i,e)})}static dispatch(i,e,t){var n;(n=ve.InternalMsgEmitter)==null||n.emit([i,e],t)}get serviceColloctor(){return this.control.collector}registerForMainEngine(i,e){return this.emtType=i,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collectListener),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collectListener)}collectForLocalWorker(i,e){var t,n,r;for(const[s,a]of i)(t=this.mainEngine)==null||t.queryTaskBatchData(a).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(n=this.mainEngine)==null||n.taskBatchData.add(s);if(e){this.mainEngine.consume();return}(r=this.mainEngine)==null||r.runAnimation()}collectForServiceWorker(i){Ge(()=>{i.forEach(e=>{var t;(t=this.serviceColloctor)==null||t.dispatch(e)})},this.mainEngine.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback"))}pause(){var i;if(this.lastEmtData){this.useEmtMsg=!0;const e={...this.lastEmtData,workState:D.Done};this.collect(e,!0),(i=ve.InternalMsgEmitter)==null||i.emit(W.ActiveMethod,!1)}}recover(){var i;this.useEmtMsg&&ve.InternalMsgEmitter.hasListeners(W.ActiveMethod)&&((i=ve.InternalMsgEmitter)==null||i.emit(W.ActiveMethod,!0))}}class Ff extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.CopyNode)}collect(e){var c;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,n);for(const l of t){const h=l.toString(),M=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(l):h,y=(c=this.serviceColloctor.getStorageData(n,s))==null?void 0:c[M];if(y){if(l===Z){const g=y&&this.copySelector({viewId:n,store:y});g&&this.pasteSelector({...g,viewId:n,scenePath:s,undoTickerId:a});break}if(y.toolsType===T.Text&&y.opt&&y.opt.workState&&y.opt.workState!==D.Done){const g=y&&this.copyText({viewId:n,store:y});g&&this.pasteText({...g,viewId:n,scenePath:s,key:M,store:y,undoTickerId:a});break}}}}copyText(e){const{viewId:t,store:n}=e,r=this.control.viewContainerManager.getView(t);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],c=n.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 w,p;const{bgCenter:t,textCenter:n,store:r,key:s,viewId:a,scenePath:c,undoTickerId:l}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const u=Math.floor(Math.random()*30+1),M=((w=h.cameraOpt)==null?void 0:w.scale)||1,y=t&&n&&[t[0]-n[0]+u,t[1]-n[1]+u]||[u/M,u/M],I=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+l;if(r.toolsType===T.Text&&r.opt){const f=r.opt;if(f&&f.boxPoint&&f.text){f.workState=D.Done;const N=f.boxPoint;f.boxPoint=[Math.round(N[0]+y[0]),Math.round(N[1]+y[1])],f.workState=D.Done;const S=this.control.viewContainerManager.transformToOriginPoint(f.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:I,x:S[0],y:S[1],opt:f,scale:((p=h.cameraOpt)==null?void 0:p.scale)||1,type:We.Text,isActive:!1,viewId:a,scenePath:c}),this.collectForServiceWorker([{...r,opt:f,type:U.FullWork,workId:I,viewId:a,scenePath:c}])}}}copySelector(e){var I,w,p,f,N,S,v,j,C;const{viewId:t,store:n}=e,r=this.control.viewContainerManager.getView(t),s=n.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((I=r.cameraOpt)==null?void 0:I.centerX)||0,centerY:((w=r.cameraOpt)==null?void 0:w.centerY)||0,scale:((p=r.cameraOpt)==null?void 0:p.scale)||1}},l=this.control.hasOffscreenCanvas&&((f=r.displayer.canvasBgRef.current)==null?void 0:f.getBoundingClientRect())||((N=r.displayer.canvasContainerRef.current)==null?void 0:N.getBoundingClientRect()),h=(v=(S=r.displayer)==null?void 0:S.floatBarRef.current)==null?void 0:v.getBoundingClientRect(),u=l&&[l.x+l.width/2,l.y+l.height/2],M=h&&[h.x+h.width/2,h.y+h.height/2],y=u&&r.viewData&&r.viewData.convertToPointInWorld({x:u[0],y:u[1]}),g=M&&r.viewData&&r.viewData.convertToPointInWorld({x:M[0],y:M[1]});y&&g&&(c.offset={x:y.x-g.x,y:y.y-g.y});for(const k of s){const P=(C=(j=this.serviceColloctor)==null?void 0:j.getStorageData(r.id,r.focusScenePath))==null?void 0:C[k];P&&a.set(k,P)}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var w,p,f,N;const{copyStores:t,copyCoordInfo:n,viewId:r,scenePath:s,undoTickerId:a}=e,c=this.control.viewContainerManager.getView(r);if(!t.size||!this.serviceColloctor||!c)return;const{offset:l,cameraOpt:h}=n,{scale:u}=h,M=Math.floor(Math.random()*30+1),y=l&&[l.x+M,l.y+M]||[M/u,M/u],g=[],I=[];for(const[S,v]of t.entries()){const C=(this.serviceColloctor.isLocalId(S)?S:this.serviceColloctor.getLocalId(S.toString()))+"-"+a,k={useAnimation:!1};if(v.toolsType===T.Text&&v.opt){const P=v.opt;if(P&&P.boxPoint&&P.text){P.workState=D.Done;const L=P.boxPoint;P.boxPoint=[Math.round(L[0]+y[0]),Math.round(L[1]+y[1])],P.workState=D.Done;const O=this.control.viewContainerManager.transformToOriginPoint(P.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:C,x:O[0],y:O[1],opt:P,scale:((w=c.cameraOpt)==null?void 0:w.scale)||1,type:We.Text,isActive:!1,viewId:r,scenePath:s})}I.push({...v,opt:P,type:U.FullWork,workId:C,viewId:r,scenePath:s});continue}if(v.toolsType===T.Image&&(v.opt.uuid=C,v.opt.centerX=v.opt.centerX+y[0],v.opt.centerY=v.opt.centerY+y[1]),v.ops){const P=ei(v.ops).map((O,A)=>{const R=A%3;return R===0?O+y[0]:R===1?O+y[1]:O}),L=At(P);v.ops=L}if((p=v==null?void 0:v.opt)!=null&&p.eraserlines&&(f=v==null?void 0:v.opt)!=null&&f.eraserlines.length)for(const P of(N=v==null?void 0:v.opt)==null?void 0:N.eraserlines){const{op:L}=P;for(let O=0;O<L.length;O++){const A=L[O].map((R,z)=>z%2?R+y[1]:R+y[0]);P.op[O]=A}}I.push({...v,updateNodeOpt:k,type:U.FullWork,workId:C,viewId:r,scenePath:s}),g.push([{...v,updateNodeOpt:k,workId:C,msgType:U.FullWork,dataType:K.Local,emitEventType:W.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(r)},{workId:C,msgType:U.FullWork,emitEventType:W.CopyNode}])}g.length&&this.collectForLocalWorker(g),I.length&&this.collectForServiceWorker(I)}}class Qf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetColorNode);m(this,"undoTickerId")}setTextColor(e,t,n,r){const{fontColor:s,fontBgColor:a}=n;t.opt&&(s&&(t.opt.fontColor=s),a&&(t.opt.fontBgColor=a),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:t.opt,viewId:r,canSync:!0,canWorker:!0}))}collect(e){var f,N;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,strokeColor:n,fillColor:r,fontColor:s,fontBgColor:a,viewId:c,workState:l,thickness:h,strokeType:u}=e,M=this.control.viewContainerManager.getView(c);if(!(M!=null&&M.displayer))return;const y=M.focusScenePath,g=[...t],I=this.serviceColloctor.storage,w=[],p={};for((l===D.Start||!this.undoTickerId&&l===D.Done)&&(this.undoTickerId=this.mainEngine.now,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,c));g.length;){const S=g.pop();if(!S)continue;const v=S.toString(),j=this.serviceColloctor.isLocalId(v),C=j?this.serviceColloctor.transformKey(S):v;let k=v;!j&&this.serviceColloctor.isOwn(k)&&(k=this.serviceColloctor.getLocalId(k));const P=(N=(f=I==null?void 0:I[c])==null?void 0:f[y])==null?void 0:N[C];if(P){const L=P.updateNodeOpt||{};if(s||a){if(s){L.fontColor=s;const[A,R,z,V]=St(s);p.textColor=[A,R,z],p.textOpacity=V}if(a)if(L.fontBgColor=Rt(a)?"transparent":a,Rt(a))p.textBgColor=void 0,p.textBgOpacity=void 0;else{const[A,R,z,V]=St(a);p.textBgColor=[A,R,z],p.textBgOpacity=V}if(P.toolsType===T.Text&&P.opt&&l!==D.Start){this.setTextColor(k,Et(P),L,c),l===D.Done&&(this.undoTickerId=void 0);continue}}if(n){L.strokeColor=n;const[A,R,z,V]=St(n);p.strokeColor=[A,R,z],p.strokeOpacity=V}if(r)if(L.fillColor=Rt(r)?"transparent":r,Rt(r))p.fillColor=void 0,p.fillOpacity=void 0;else{const[A,R,z,V]=St(r);p.fillColor=[A,R,z],p.fillOpacity=V}h&&(L.thickness=h,p.strokeWidth=h),u&&(L.strokeType=u,p.strokeType=u);const O={workId:k,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:L,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c,needUndoTicker:l===D.Done&&this.control.viewContainerManager.getUndoTickerId(c)||void 0};w.push([O,{workId:k,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}}w.length&&(l===D.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(w)),Object.keys(p).length&&setTimeout(()=>{var S;(S=this.control.room)==null||S.setMemberState(p)},0)}}class Vf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.ZIndexNode);m(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.min)||0}getMaxZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.max)||0}setMaxZIndex(e,t){const n=this.getMinZIndex(t);this.zIndexMap.set(t,{min:n,max:e})}setMinZIndex(e,t){const n=this.getMaxZIndex(t);this.zIndexMap.set(t,{min:e,max:n})}addMaxLayer(e){const t=this.getMaxZIndex(e)+1;this.setMaxZIndex(t,e)}addMinLayer(e){const t=this.getMinZIndex(e)-1;this.setMinZIndex(t,e)}correct(e){const t=e.sort((n,r)=>n[1]-r[1]);for(let n=1;n<t.length;n++){const r=t[n][1],s=t[n-1][1];r<=s&&(t[n][1]=s+1)}return t}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,layer:n,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...t],l=this.serviceColloctor.storage,h=[],u=[];for(;c.length;){const y=c.pop();if(!y)continue;const g=y.toString(),I=this.serviceColloctor.isLocalId(g),w=I?this.serviceColloctor.transformKey(y):g;let p=g;!I&&this.serviceColloctor.isOwn(p)&&(p=this.serviceColloctor.getLocalId(p));const f=Et(l[r][a][w]);let N;if(f&&p===Z){if(f.selectIds){u.push(...f.selectIds),u.sort((C,k)=>{var O,A,R,z;const P=((A=(O=l[M(C,this.serviceColloctor)])==null?void 0:O.opt)==null?void 0:A.zIndex)||0,L=((z=(R=l[M(C,this.serviceColloctor)])==null?void 0:R.opt)==null?void 0:z.zIndex)||0;return P>L?1:C<k?-1:0});const S=f.updateNodeOpt||{};S.zIndexLayer=n;const v={workId:y,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:S,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},j=new Map;n===zt.Top?(this.addMaxLayer(r),N=this.getMaxZIndex(r)):(this.addMinLayer(r),N=this.getMinZIndex(r)),u.forEach(C=>{var O,A,R,z,V;const k=(O=this.serviceColloctor)==null?void 0:O.isLocalId(C);let P=k&&((A=this.serviceColloctor)==null?void 0:A.transformKey(C))||C;const L=(z=(R=l==null?void 0:l[r])==null?void 0:R[a])==null?void 0:z[P];L&&(!k&&((V=this.serviceColloctor)!=null&&V.isOwn(P))&&(P=this.serviceColloctor.getLocalId(P)),S.zIndex=N,L!=null&&L.opt&&(L.opt.zIndex=N),L!=null&&L.opt&&j.set(P,{updateNodeOpt:L.updateNodeOpt,opt:L.opt}))}),v.selectStore=j,v.willSerializeData=!0,h.push([v,{workId:y,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&this.collectForLocalWorker(h);function M(y,g){return g.isLocalId(y)&&g.transformKey(y)||y}}}class Zf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.TranslateNode);m(this,"cachePosition")}collect(e,t){var g,I,w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,position:r,workState:s,viewId:a}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,h=[...n],u=(g=this.serviceColloctor)==null?void 0:g.storage,M=[],y=s===D.Start&&this.mainEngine.now||void 0;for(y&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",y,a);h.length;){const p=h.pop();if(!p)continue;const f=p.toString(),N=this.serviceColloctor.isLocalId(f),S=N&&this.serviceColloctor.transformKey(p)||f;let v=f;!N&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const j=(w=(I=u==null?void 0:u[a])==null?void 0:I[l])==null?void 0:w[S];if(j&&v===Z){if(j.selectIds){const C=this.control.viewContainerManager.transformToScenePoint([r.x,r.y],a);if(s===D.Start&&(this.cachePosition=C),this.cachePosition){const k=j.updateNodeOpt||{};k.translate=[C[0]-this.cachePosition[0],C[1]-this.cachePosition[1]],k.workState=s,this.control.cursor.isEnableCursor?k.useAnimation=!1:(k.uid=this.serviceColloctor.uid,s===D.Start?k.useAnimation=!1:s===D.Done&&(k.useAnimation=!0));const P={workId:p,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a,smoothSync:this.mainEngine.smoothSync};s===D.Done&&(P.textUpdateForWoker=!0,P.willSerializeData=!0,this.cachePosition=void 0,P.needUndoTicker=this.control.viewContainerManager.getUndoTickerId(a)),M.push([P,{workId:p,msgType:U.UpdateNode,emitEventType:this.emitEventType,workState:s}])}}continue}}s===D.Start?this.mainEngine.unWritable():s===D.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),M.length&&this.collectForLocalWorker(M,t)}}class Hf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.DeleteNode)}collect(e){var M,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,c=[...t],l=[],h=[],u=this.mainEngine.now;for(;c.length;){const g=c.pop();if(!g)continue;const I=g.toString(),w=this.serviceColloctor.isLocalId(I),p=w?this.serviceColloctor.transformKey(g):I,f=(y=(M=a==null?void 0:a[n])==null?void 0:M[s])==null?void 0:y[p];if(f){let N=I;if(!w&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N)),f.toolsType===T.Text){this.control.textEditorManager.delete(N,!0,!0);continue}h.push(N)}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,n),l.push([{msgType:U.RemoveNode,emitEventType:W.DeleteNode,removeIds:h,dataType:K.Local,willSyncService:!0,willRefresh:!0,viewId:n,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)},void 0]),this.collectForLocalWorker(l))}}class $f extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.ScaleNode);m(this,"targetText",new Map);m(this,"cacheTextInfo",new Map)}async setTextStyle(e,t,n){const r=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t,viewId:n,canSync:!1,canWorker:!1});return{key:e,textInfo:r}}async collect(e,t){var f,N,S,v,j,C,k;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,workState:r,viewId:s,originPoint:a,scenePoint:c,dir:l,scale:h,translate:u}=e;this.lastEmtData=e;const M=this.control.viewContainerManager.getView(s);if(!(M!=null&&M.displayer))return;const y=M.focusScenePath,g=[...n],I=(f=this.serviceColloctor)==null?void 0:f.storage,w=[],p=r===D.Start&&this.mainEngine.now||void 0;for(p&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",p,s);g.length;){const P=g.pop();if(!P)continue;const L=P.toString(),O=this.serviceColloctor.isLocalId(L),A=O&&this.serviceColloctor.transformKey(P)||L;let R=L;!O&&this.serviceColloctor.isOwn(R)&&(R=this.serviceColloctor.getLocalId(R));const z=(S=(N=I==null?void 0:I[s])==null?void 0:N[y])==null?void 0:S[A];if(z&&R===Z&&z.selectIds){const V=z.updateNodeOpt||{};if(V.dir=l,V.originPoint=a,V.scenePoint=c,V.workState=r,V.scale=h,V.translate=u,r===D.Start){this.cacheTextInfo.clear();for(const B of z.selectIds){const J=(v=this.serviceColloctor)==null?void 0:v.isLocalId(B),ie=J&&((j=this.serviceColloctor)==null?void 0:j.transformKey(B))||B;let re=ie;!J&&((C=this.serviceColloctor)!=null&&C.isOwn(ie))&&(re=this.serviceColloctor.getLocalId(ie));const ne=this.control.textEditorManager.get(re);ne&&r===D.Start&&this.targetText.set(re,Et(ne))}}if(this.targetText.size&&r!==D.Start&&h){const B=[];for(const[ie,re]of this.targetText.entries()){const{opt:ne}=re,q=Math.floor(ne.fontSize*h[0]),$=this.cacheTextInfo.get(ie),ue=!$&&ne.fontSize!==q||$&&$.fontSize!==q||!1,Fe=(k=this.control.textEditorManager.get(ie))==null?void 0:k.opt;if(ue&&Fe&&ne.boxSize&&ne.boxPoint){const Qe=this.setTextStyle(ie,{...Fe,fontSize:q},s);B.push(Qe)}}const J=await Promise.all(B);for(const ie of J)if(ie){const{key:re,textInfo:ne}=ie;this.cacheTextInfo.set(re,{fontSize:ne.opt.fontSize,boxSize:ne.opt.boxSize,boxPoint:ne.opt.boxPoint})}V.textInfos=this.cacheTextInfo}this.control.cursor.isEnableCursor?V.useAnimation=!1:(V.uid=this.serviceColloctor.uid,r===D.Start?V.useAnimation=!1:r===D.Done&&(V.useAnimation=!0));const _={workId:P,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:V,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s,smoothSync:this.mainEngine.smoothSync};r===D.Done&&(_.willSerializeData=!0,this.targetText.clear(),_.needUndoTicker=this.control.viewContainerManager.getUndoTickerId(s)),w.push([_,{workId:P,msgType:U.UpdateNode,emitEventType:this.emitEventType,workState:r}]);continue}}r===D.Start?this.mainEngine.unWritable():r===D.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),w.length&&this.collectForLocalWorker(w,t)}}class Gf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.RotateNode);m(this,"cacheOriginRotate",0)}collect(e,t){var g,I,w,p,f,N,S;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,angle:r,workState:s,viewId:a}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,h=[...n],u=(g=this.serviceColloctor)==null?void 0:g.storage,M=[],y=s===D.Start&&this.mainEngine.now||void 0;for(y&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",y,a);h.length;){const v=h.pop();if(!v)continue;const j=v.toString(),C=this.serviceColloctor.isLocalId(j),k=C&&this.serviceColloctor.transformKey(v)||j;let P=j;!C&&this.serviceColloctor.isOwn(P)&&(P=this.serviceColloctor.getLocalId(P));const L=(w=(I=u==null?void 0:u[a])==null?void 0:I[l])==null?void 0:w[k];if(L&&P===Z){if(((p=L.selectIds)==null?void 0:p.length)===1){const O=L.selectIds[0];if(s===D.Start){const V=((f=this.serviceColloctor)==null?void 0:f.isLocalId(O))&&((N=this.serviceColloctor)==null?void 0:N.transformKey(O))||O,_=u[a][l][V];this.cacheOriginRotate=((S=_==null?void 0:_.opt)==null?void 0:S.rotate)||0}const A=L.updateNodeOpt||{};A.angle=(r+this.cacheOriginRotate)%360,A.workState=s,this.control.cursor.isEnableCursor?A.useAnimation=!1:(A.uid=this.serviceColloctor.uid,s===D.Start?A.useAnimation=!1:s===D.Done&&(A.useAnimation=!0));const R={workId:v,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:A,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a,smoothSync:this.mainEngine.smoothSync};s===D.Done&&(R.willRefreshSelector=!0,R.willSerializeData=!0,this.cacheOriginRotate=0,R.needUndoTicker=this.control.viewContainerManager.getUndoTickerId(a)),M.push([R,{workId:v,msgType:U.UpdateNode,emitEventType:this.emitEventType,workState:s}])}continue}}s===D.Start?this.mainEngine.unWritable():s===D.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),M.length&&this.collectForLocalWorker(M,t)}}function Jf(o){switch(o){case T.Text:return We.Text;case T.SpeechBalloon:case T.Star:case T.Ellipse:case T.Rectangle:case T.Triangle:case T.Rhombus:case T.Polygon:return We.Shape}}class qf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetFontStyle);m(this,"timerId")}async setTextStyle(e,t,n,r){const{bold:s,underline:a,lineThrough:c,italic:l,fontSize:h}=n;if(t.toolsType&&Jf(t.toolsType)===We.Text){t.opt&&(s&&(t.opt.bold=s),x.isBoolean(a)&&(t.opt.underline=a),x.isBoolean(c)&&(t.opt.lineThrough=c),l&&(t.opt.italic=l),h&&(t.opt.fontSize=h));const M=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t.opt,viewId:r,canSync:!1,canWorker:!1});return{key:e,textInfo:M}}}async collect(e){var f,N,S,v,j,C;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,bold:n,italic:r,lineThrough:s,underline:a,viewId:c,fontSize:l}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const u=h.focusScenePath,M=[...t],y=this.serviceColloctor.storage,g={},I=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",I,c),this.control.textEditorManager.UndoTickerId=I;const w=[];for(;M.length;){const k=M.pop();if(!k)continue;const P=k.toString(),L=this.serviceColloctor.isLocalId(P),O=L?this.serviceColloctor.transformKey(k):P;let A=P;!L&&this.serviceColloctor.isOwn(A)&&(A=this.serviceColloctor.getLocalId(A));const R=(N=(f=y==null?void 0:y[c])==null?void 0:f[u])==null?void 0:N[O];if(R){const z=R.updateNodeOpt||{};if(n&&(z.bold=n,g.bold=n==="bold"),r&&(z.italic=r,g.italic=r==="italic"),x.isBoolean(s)&&(z.lineThrough=s,g.lineThrough=s),x.isBoolean(a)&&(z.underline=a,g.underline=a),l&&(z.fontSize=l,g.textSize=l),R.toolsType===T.Text&&R.opt){const V=this.setTextStyle(A,x.cloneDeep(R),z,c);w.push(V);continue}if(R&&A===Z&&((S=R.selectIds)!=null&&S.length))for(const V of R.selectIds){const _=(v=this.serviceColloctor)==null?void 0:v.isLocalId(V);let B=_&&((j=this.serviceColloctor)==null?void 0:j.transformKey(V))||V;const J=y[c][u][B]||void 0;if(!_&&((C=this.serviceColloctor)!=null&&C.isOwn(B))&&(B=this.serviceColloctor.getLocalId(B)),J&&J.toolsType===T.Text&&R.opt){const ie=this.setTextStyle(B,x.cloneDeep(J),z,c);w.push(ie);continue}}}}const p=await Promise.all(w);for(const k of p)if(k){const{key:P,textInfo:L}=k;L&&(L.canSync=!0,L.canWorker=!0,this.control.textEditorManager.updateForViewEdited(P,L))}Object.keys(g).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var k;this.timerId=void 0,(k=this.control.room)==null||k.setMemberState(g)},0))}}class Xf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetPoint);m(this,"undoTickerId")}collect(e){var f,N,S;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:t,pointMap:n,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=(f=this.serviceColloctor)==null?void 0:f.storage,h=[],u=r===D.Start&&this.mainEngine.now||void 0;u&&(this.undoTickerId=u,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,s));const M=t;if(!M)return;const y=M.toString(),g=this.serviceColloctor.isLocalId(y),I=g&&this.serviceColloctor.transformKey(M)||y;let w=y;!g&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const p=(S=(N=l==null?void 0:l[s])==null?void 0:N[c])==null?void 0:S[I];if(p&&w===Z&&p.selectIds){const v=p.updateNodeOpt||{};v.pointMap=n,v.workState=r;const j={workId:M,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:v,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s,needUndoTicker:r===D.Done&&this.control.viewContainerManager.getUndoTickerId(s)||void 0};r===D.Done&&(j.undoTickerId=this.undoTickerId),h.push([j,{workId:M,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}r===D.Start?this.mainEngine.unWritable():r===D.Done&&this.mainEngine.abled(),h.length&&this.collectForLocalWorker(h)}}class Kf extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetLock)}collect(e){var M,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,isLocked:n,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...t],l=this.serviceColloctor.storage,h=[],u=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,r);c.length;){const g=c.pop();if(!g)continue;const I=g.toString(),w=this.serviceColloctor.isLocalId(I),p=w?this.serviceColloctor.transformKey(g):I;let f=I;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const N=(y=(M=l==null?void 0:l[r])==null?void 0:M[a])==null?void 0:y[p];if(N){const S=N.updateNodeOpt||{};S.isLocked=n;const v={workId:f,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:S,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(r)};h.push([v,{workId:f,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}}h.length&&this.collectForLocalWorker(h)}}class _f extends Re{constructor(){super(...arguments);m(this,"lastEmtData");m(this,"emitEventType",W.SetShapeOpt)}collect(e){var M,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n,...r}=e,s=this.control.viewContainerManager.getView(n);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...t],l=this.serviceColloctor.storage,h=[],u=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",u,n);c.length;){const g=c.pop();if(!g)continue;const I=g.toString(),w=this.serviceColloctor.isLocalId(I),p=w?this.serviceColloctor.transformKey(g):I;let f=I;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const N=(y=(M=l==null?void 0:l[n])==null?void 0:M[a])==null?void 0:y[p];if(N){const S={...N.updateNodeOpt,...r,willRefresh:!0};if(N&&f===Z){const v={workId:f,msgType:U.UpdateNode,dataType:K.Local,updateNodeOpt:S,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:n,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)};h.push([v,{workId:f,msgType:U.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&this.collectForLocalWorker(h)}}class oe{constructor(i){m(this,"builders",new Map);this.builders=new Map(i.map(e=>[e,this.build(e)]))}build(i){switch(i){case W.TranslateNode:return new Zf;case W.ZIndexNode:return new Vf;case W.CopyNode:return new Ff;case W.SetColorNode:return new Qf;case W.DeleteNode:return new Hf;case W.ScaleNode:return new $f;case W.RotateNode:return new Gf;case W.SetFontStyle:return new qf;case W.SetPoint:return new Xf;case W.SetLock:return new Kf;case W.SetShapeOpt:return new _f}}getBuilder(i){return this.builders.get(i)}registerForMainEngine(i,e){return this.builders.forEach(t=>{t&&t.registerForMainEngine(i,e)}),this}destroy(){this.builders.forEach(i=>{i&&i.destroy()}),this.builders.clear()}pause(){return this.builders.forEach(i=>{i&&i.pause()}),this}recover(){return this.builders.forEach(i=>{i&&i.recover()}),this}static emitMethod(i,e,t){Re.dispatch(i,e,t)}static activeListener(i){ve.InternalMsgEmitter.on(W.ActiveMethod,i)}static unmountActiveListener(i){ve.InternalMsgEmitter.off(W.ActiveMethod,i)}}const ep=async(o,i)=>{const{src:e,isgl:t,isCache:n}=o;if(typeof Image=="function"){const r=new Image;return typeof e=="string"&&(r.crossOrigin="anonymous"),new Promise(s=>{r.onload=function(){createImageBitmap(r,{imageOrientation:t?"flipY":"none"}).then(a=>{s(a)})},r.onerror=function(){s(void 0)},r.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(r=>r.blob()).then(r=>createImageBitmap(r,{imageOrientation:t?"flipY":"none"}).then(s=>s))},ct=class ct{constructor(){m(this,"fontDB");m(this,"FONT_DB_NAME","__APPLIANCE_PLUGIN_FONT_DB");m(this,"FONT_STORE_NAME","fonts");m(this,"FONT_DB_VERSION",1)}static getInstance(){return ct.instance||(ct.instance=new ct),ct.instance}async initFontDB(){return this.fontDB?this.fontDB:new Promise((i,e)=>{const t=indexedDB.open(this.FONT_DB_NAME,this.FONT_DB_VERSION);t.onerror=()=>{e(new Error(`Failed to open font database: ${t.error}`))},t.onsuccess=()=>{this.fontDB=t.result,i(t.result)},t.onupgradeneeded=n=>{const r=n.target.result;r.objectStoreNames.contains(this.FONT_STORE_NAME)||r.createObjectStore(this.FONT_STORE_NAME,{keyPath:"fontFamily"}).createIndex("url","url",{unique:!1})}})}async getFontFromDB(i){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((e,t)=>{const s=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).get(i);s.onsuccess=()=>{s.result&&s.result.buffer?e(s.result.buffer):e(null)},s.onerror=()=>{t(s.error)}})}catch(e){return console.error(`Failed to get font from database for ${i}:`,e),null}}async saveFontToDB(i,e,t){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((n,r)=>{const a=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME),c={fontFamily:i,url:e,buffer:t,timestamp:Date.now()},l=a.put(c);l.onsuccess=()=>{n(!0)},l.onerror=()=>{r(l.error)}})}catch(n){return console.error(`Failed to save font to database for ${i}:`,n),!1}}async clearFontCache(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((i,e)=>{const r=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME).clear();r.onsuccess=()=>{console.log("Font cache cleared successfully"),i(!0)},r.onerror=()=>{e(r.error)}})}catch(i){return console.error("Failed to clear font cache:",i),!1}}async getFontCacheStatus(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((i,e)=>{const r=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).getAll();r.onsuccess=()=>{const s=r.result||[],a=s.reduce((c,l)=>c+(l.buffer?l.buffer.byteLength:0),0);i({count:s.length,totalSize:a})},r.onerror=()=>{e(r.error)}})}catch(i){return console.error("Failed to get font cache status:",i),{count:0,totalSize:0}}}};m(ct,"instance");let Ii=ct;class tp{get now(){var i;return((i=this.control.room)==null?void 0:i.calibrationTimestamp)||Date.now()}get newWorkId(){return this.now.toString()}setCurrentToolsData(i){this.currentToolsData=i}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(i){this.currentLocalWorkData=i}getWorkId(){return this.currentLocalWorkData.workId}get workState(){return this.currentLocalWorkData.workState}}class ip extends tp{constructor(e){super();m(this,"maxLastSyncTime",we.syncOpt.interval);m(this,"combineUnitTime",we.bezier.combineUnitTime);m(this,"maxCombineEraserTime",we.pencilEraser.maxCombineTime);m(this,"smoothSync",we.syncOpt.smoothSync);m(this,"isActive",!1);m(this,"currentToolsData");m(this,"currentLocalWorkData");m(this,"control");m(this,"internalMsgEmitter");m(this,"publicMsgEmitter");m(this,"taskBatchData",new Set);m(this,"fullWorker");m(this,"subWorker");m(this,"fullWorkerUrl");m(this,"subWorkerUrl");m(this,"methodBuilder");m(this,"zIndexNodeMethod");m(this,"subWorkerDrawCount",0);m(this,"fullWorkerDrawCount",0);m(this,"maxDrawCount",0);m(this,"_consumeCount",0);m(this,"_postCount",0);m(this,"reRenders",new Map);m(this,"localWorkViewId");m(this,"localPointsBatchData",new Map);m(this,"tasksqueue",new Map);m(this,"useTasksqueue",!1);m(this,"useTasksClockId");m(this,"mainTasksqueueCount");m(this,"workerTasksqueueCount");m(this,"snapshotMap",new Map);m(this,"boundingRectMap",new Map);m(this,"clearAllResolveMap",new Map);m(this,"delayWorkStateToDoneResolve");m(this,"animationId");m(this,"tmpImageConfigMap",new Map);m(this,"mainThread");m(this,"willSelectorWorkId");m(this,"isLockSentEventCursor",!1);m(this,"getVNodeInfoResolveMap",new Map);m(this,"setFontFacesResolve",{});m(this,"isLocalWorkActive",!1);m(this,"indexDBUtils",Ii.getInstance());const{control:t,internalMsgEmitter:n,publicMsgEmitter:r}=e;this.control=t,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.combineUnitTime=this.control.pluginOptions.extras.bezier.combineUnitTime||this.combineUnitTime,this.smoothSync=x.isBoolean(this.control.pluginOptions.extras.syncOpt.smoothSync)?this.control.pluginOptions.extras.syncOpt.smoothSync:this.smoothSync,this.maxCombineEraserTime=this.control.pluginOptions.extras.pencilEraser.maxCombineTime||this.maxCombineEraserTime,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl||"",this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl||"",this.internalMsgEmitter=n,this.publicMsgEmitter=r,this.currentLocalWorkData={workState:D.Pending}}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}destroy(){var e,t,n;(e=this.methodBuilder)==null||e.destroy(),this.unWritable(),this.taskBatchData.clear(),this.tasksqueue.clear(),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.isActive=!1,this.clearAllResolveMap.clear(),this.snapshotMap.clear(),this.boundingRectMap.clear(),(t=this.fullWorker)==null||t.terminate(),(n=this.subWorker)==null||n.terminate()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}get postCount(){return this._postCount}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.PencilEraser||e===T.BitMapEraser||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Selector}get isCanDrawWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.BitMapEraser||e===T.PencilEraser}get isUseZIndex(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanRecordUndoRedo(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanSentCursor(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Text||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser||e===T.Selector}get isPostCountType(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser||e===T.Selector}get isCanPostDraw(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Pencil||e===T.PencilEraser||e===T.BitMapEraser}get isCanStartEventConsum(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===T.Selector||e===T.Eraser||e===T.PencilEraser||e===T.BitMapEraser}async init(){this.destroy(),await this.on(),this.internalMsgEmitterListener(),this.isActive=!0}async useMainThread(){console.info("no OffscreenCanvas"),this.control.hasExtendFontFaces&&await document.fonts.ready.then(()=>{this.control.room&&this.control.room.logger.info("set font faces in main thread success")});const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-BVAZlFjO.js"));this.mainThread=new e(this)}async on(){if(!this.control.hasOffscreenCanvas){await this.useMainThread();return}if(!this.fullWorkerUrl||!this.subWorkerUrl){console.error("no worker url config");return}if(this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),this.control.isUseSimple||(this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"})),this.fullWorker.onmessage=e=>{if(e.data){const{render:t,sp:n,fullWorkerDrawCount:r,workerTasksqueueCount:s,viewId:a,consumeCount:c}=e.data;if(c&&(this.consumeCount=c),this.isBusy&&s&&this.setWorkerTasksqueueCount(s),n!=null&&n.length&&this.collectorSyncData(n),this.control.isUseSimple){if(this.control.isUseOffscreenTransfer)return;t&&(t!=null&&t.length)&&this.viewContainerManager.render(t);return}const l=(t==null?void 0:t.length)&&t||[];if(r&&a){if(this.fullWorkerDrawCount=r,this.fullWorkerDrawCount<1/0){const h=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(h),this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.clearReRenders(1/0);if(this.reRenders.size)for(const h of this.reRenders.values())l.push(...h)}l.length&&this.viewContainerManager.render(l)}},this.subWorker&&(this.subWorker.onmessage=e=>{if(e.data){const{render:t,sp:n,subWorkerDrawCount:r,consumeCount:s}=e.data;s&&(this.consumeCount=s),n!=null&&n.length&&this.collectorSyncData(n);const a=(t==null?void 0:t.length)&&t||[];if(x.isNumber(r)){if(this.subWorkerDrawCount=r,this.fullWorkerDrawCount<1/0){const c=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(c)}if(t!=null&&t.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const c=[];for(const l of t)l.imageBitmap&&(l.isUnClose=!0,c.push(l));this.reRenders.set(this.subWorkerDrawCount,c)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}a.length&&this.viewContainerManager.render(a)}}),this.control.hasExtendFontFaces){const e=this.control.extendFontFaces,t=[],n=[];this.control.room&&this.control.room.logger.info(`load before font faces ${JSON.stringify(e)}`),await new Promise(async r=>{this.setFontFacesResolve.resolve=r,this.setFontFacesResolve.timer=setTimeout(()=>{this.setFontFacesResolve.resolve&&(this.control.room?this.control.room.logger.error("set font faces timeout"):console.warn("set font faces timeout"),this.setFontFacesResolve.resolve(!1))},this.control.loadFontFacesTimeout);try{for(const s of e){let a;a=await this.indexDBUtils.getFontFromDB(s.fontFamily)||void 0,a||(a=await this.loadFontInMainThread(s.src),a&&a.byteLength>0&&(await this.indexDBUtils.saveFontToDB(s.fontFamily,s.src,a)||(this.control.room?this.control.room.logger.warn(`Failed to save font ${s.fontFamily} to IndexedDB, but continuing with font loading`):console.warn(`Failed to save font ${s.fontFamily} to IndexedDB, but continuing with font loading`)))),a&&a.byteLength>0?(n.push({fontFamily:s.fontFamily,buffer:a}),t.push(a)):this.control.room?this.control.room.logger.warn(`Font ${s.fontFamily} could not be loaded from any source`):console.warn(`Font ${s.fontFamily} could not be loaded from any source`)}this.control.room&&this.control.room.logger.info("load end font faces"),n.length?this.fullWorker.postMessage(new Set([{type:U.SetFontFace,fontBuffers:n}]),t):this.setFontFacesResolve.resolve(!0)}catch(s){this.setFontFacesResolve.timer&&(clearTimeout(this.setFontFacesResolve.timer),this.setFontFacesResolve.timer=void 0),this.setFontFacesResolve.resolve&&(this.setFontFacesResolve.resolve(!1),this.control.room?this.control.room.logger.error(`set font faces error: ${s}`):console.error(`set font faces error: ${s}`))}}).then(r=>{this.setFontFacesResolve.resolve=void 0,this.setFontFacesResolve.timer=void 0,this.control.room?r?this.control.room.logger.info("set font faces in web worker success"):this.control.room.logger.error("set font faces in web worker error"):r||console.error("set font faces in web worker error")})}}async clearFontCache(){return await this.indexDBUtils.clearFontCache()}async getFontCacheStatus(){return await this.indexDBUtils.getFontCacheStatus()}async loadFontInMainThread(e){try{const t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);const n=await t.arrayBuffer();if(!n||n.byteLength===0)throw new Error("Empty font data received");const r=new Uint8Array(n);if(!this.validateFontData(r))throw new Error("Invalid font data format: not a valid font file");return n}catch(t){this.control.room?this.control.room.logger.error(`Failed to load font from ${e}: ${t}`):console.error(`Failed to load font from ${e}: ${t}`);return}}validateFontData(e){return e.length<4?!1:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===50||e[0]===119&&e[1]===79&&e[2]===70&&e[3]===70||e[0]===0&&e[1]===1&&e[2]===0&&e[3]===0||e[0]===79&&e[1]===84&&e[2]===84&&e[3]===79||e.length>36&&e[36]===0&&e[37]===1&&e[38]===0&&e[39]===0}clearReRenders(e=1/0){for(const t of this.reRenders.keys())if(x.isNumber(Number(t))&&Number(t)<=e){const n=this.reRenders.get(Number(t));n==null||n.forEach(r=>{var s;(s=r.imageBitmap)==null||s.close()}),this.reRenders.delete(t)}}get isBusy(){return this.getTasksqueueState()===D.Doing}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.useTasksqueue&&D.Doing||D.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e){this.consumeCount=e}getConsumeCount(){return this.consumeCount}setWorkerTasksqueueCount(e){const t=Math.max(this.workerTasksqueueCount||0,e);this.workerTasksqueueCount=t}collectorSyncData(e){var n,r,s,a;let t=!1;for(const c of e){const{type:l,selectIds:h,opt:u,selectRect:M,strokeColor:y,fillColor:g,willSyncService:I,isSync:w,imageBitmap:p,canvasHeight:f,canvasWidth:N,rect:S,op:v,canTextEdit:j,points:C,selectorColor:k,canRotate:P,scaleType:L,textOpt:O,toolsType:A,workId:R,viewId:z,dataType:V,canLock:_,isLocked:B,shapeOpt:J,toolsTypes:ie,thickness:re,strokeType:ne,useStroke:q,isgl:$,imageSrc:ue,isSubWorker:Fe,updateNodeOpt:Qe,setFontFaceResult:ot,failedFonts:qe,reportString:Ve}=c;if(l===U.SetFontFace){ot&&this.setFontFacesResolve.resolve&&(qe&&qe.length>0&&(this.control.room?this.control.room.logger.info("set font face has failed fonts: "+qe.join(", ")):console.info("set font face has failed fonts: "+qe.join(", "))),this.setFontFacesResolve.resolve(ot));return}if(!z)return;const Ze=c.scenePath||this.viewContainerManager.getCurScenePath(z);switch(l){case U.Select:{const H=h!=null&&h.length?{...M,selectIds:h,canvasHeight:f,canvasWidth:N,points:C}:void 0;H&&(u!=null&&u.strokeColor)&&(H.selectorColor=u.strokeColor),H&&k&&(H.selectorColor=k),H&&y&&(H.strokeColor=y),H&&(u!=null&&u.fillColor)&&(H.fillColor=u.fillColor),H&&g&&(H.fillColor=g),H&&x.isBoolean(P)&&(H.canRotate=P),H&&L&&(H.scaleType=L),H&&j&&(H.canTextEdit=j),H&&O&&(H.textOpt=O),H&&x.isBoolean(_)&&(H.canLock=_),H&&x.isBoolean(B)&&(H.isLocked=B),H&&J&&(H.shapeOpt=J),H&&ie&&(H.toolsTypes=ie),H&&re&&(H.thickness=re),H&&ne&&(H.strokeType=ne),H&&x.isBoolean(q)&&(H.useStroke=q),z&&this.viewContainerManager.showFloatBar(z,!!H,H),I&&((n=this.collector)==null||n.dispatch({type:l,selectIds:h,opt:u,isSync:w,viewId:z,scenePath:Ze}));break}case U.Snapshot:if(p&&Ze){const H=this.snapshotMap.get(Ze);H&&H(p)}break;case U.BoundingBox:if(S&&Ze){const H=this.boundingRectMap.get(Ze);H&&H(S)}break;case U.Cursor:v&&this.control.cursor.collectServiceCursor({...c});break;case U.Clear:if(z){this.viewContainerManager.showFloatBar(z,!1);const H=(r=this.clearAllResolveMap.get(z))==null?void 0:r.resolve;H&&H(z)}break;case U.TextUpdate:if(A===T.Text&&R&&z){const H=this.viewContainerManager.transformToOriginPoint((u==null?void 0:u.boxPoint)||[0,0],z),F=(u==null?void 0:u.boxSize)||[0,0],G=(s=this.viewContainerManager.getView(z))==null?void 0:s.cameraOpt;u?this.control.textEditorManager.updateTextForWorker({x:H[0],y:H[1],w:F[0],h:F[1],scale:(G==null?void 0:G.scale)||1,workId:R,opt:u,dataType:V,viewId:z,canSync:I||!1,canWorker:!1,updateNodeOpt:Qe}):this.control.textEditorManager.delete(R,I||!1,!1)}break;case U.GetTextActive:A===T.Text&&R&&z&&this.control.textEditorManager.updateTextForWorker({workId:R,isActive:!0,viewId:z,dataType:K.Local,canWorker:!1,canSync:!0},this.now);break;case U.GetImageBitMap:ue&&z&&R&&ep({src:ue,isgl:$}).then(H=>{var G;const F=new Set;if(F.add({msgType:U.GetImageBitMap,dataType:K.Local,workId:R,viewId:z,imageSrc:ue,isSubWorker:Fe,imageBitmap:H}),!this.control.hasOffscreenCanvas)(G=this.mainThread)==null||G.consume(F);else{const X=Fe&&this.subWorker?this.subWorker:this.fullWorker;H?X.postMessage(F,[H]):X.postMessage(F)}});break;case U.GetVNodeInfo:if(R){const H=R.toString(),F=(a=this.getVNodeInfoResolveMap.get(H))==null?void 0:a.resolve,G={...c,uuid:H};F&&F(G)}break;case U.ReportError:case U.ReportLog:Ve&&(l===U.ReportError?this.control.room?this.control.room.logger.error(Ve):console.error("[MasterControlForWorker] reportError",Ve):this.control.room?this.control.room.logger.info(Ve):console.log("[MasterControlForWorker] reportLog",Ve));break;default:t=!0;break}}t&&this.collectorAsyncData(e)}foceUndoTickerEnd(e,t){this.internalMsgEmitter.emit("forceUndoTickerEnd",e,t)}collectorAsyncData(e){var t,n,r,s;for(const a of e){const{type:c,op:l,workId:h,index:u,removeIds:M,ops:y,opt:g,updateNodeOpt:I,toolsType:w,isSync:p,viewId:f,isLockSentEventCursor:N,nextTasks:S,needUndoTicker:v}=a;if(!f){console.error("[MasterControlForWorker] collectorAsyncData on viewId in",a);return}const j=a.scenePath||this.viewContainerManager.getCurScenePath(f);switch(c){case U.None:{N&&Ge(()=>{this.setLockSentEventCursor(!1)},this.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback")),v&&Number(v)&&Ge(()=>{this.foceUndoTickerEnd(Number(v),f)},0,this.control.hasPolyfillMethod("requestIdleCallback"));break}case U.DrawWork:{(t=this.collector)==null||t.dispatch({type:c,op:l,opt:g,toolsType:w,workId:h,index:u,isSync:p,viewId:f,scenePath:j,updateNodeOpt:I});break}case U.FullWork:{(n=this.collector)==null||n.dispatch({type:c,ops:y,workId:h,updateNodeOpt:I,opt:g,toolsType:w,isSync:p,viewId:f,scenePath:j}),this.willSelectorWorkId&&h&&h.toString()===this.willSelectorWorkId&&this.control.runEffectWork(()=>{this.setShapeSelectorByWorkId(this.willSelectorWorkId,f),this.willSelectorWorkId=void 0});break}case U.UpdateNode:{(r=this.collector)==null||r.dispatch({type:c,updateNodeOpt:I,workId:h,opt:g,ops:y,op:l,isSync:p,viewId:f,scenePath:j});break}case U.RemoveNode:{M&&this.control.textEditorManager.deleteBatch(M,!1,!1),(s=this.collector)==null||s.dispatch({type:c,removeIds:M,isSync:p,viewId:f,scenePath:j}),this.willSelectorWorkId&&(M!=null&&M.includes(this.willSelectorWorkId))&&(this.willSelectorWorkId=void 0);break}}S&&this.collectorAsyncData(S)}}async onLocalEventEnd(e,t){var l;const n=this.viewContainerManager.getView(t);if(!n)return;const{focusScenePath:r,cameraOpt:s}=n,a=this.viewContainerManager.transformToScenePoint(e,t),c=[];for(const h of this.localPointsBatchData.keys())if(((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Text){const u=this.getLocalPointInfo(h),M=u==null?void 0:u.state;if(M&&M===D.Start){const y=this.currentLocalWorkData.toolsOpt;y.workState=D.Doing,y.boxPoint=[Math.round(a[0]),Math.round(a[1])],y.boxSize=[y.fontSize,y.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:this.newWorkId,x:e[0],y:e[1],scale:(s==null?void 0:s.scale)||1,opt:y,type:We.Text,isActive:!0,viewId:t,scenePath:r},this.now)}this.deleteLocalPoint(h);continue}else this.pushLocalPoint(h,a,D.Done,t),c.push(h);if(c.length){try{if(await new Promise(u=>{setTimeout(async()=>{c.forEach(M=>{this.setLocalPointIsFullWork(M)}),this.delayWorkStateToDoneResolve=u,this.consume()},0)})&&c[0]){const u=c[0];c.forEach(M=>{this.deleteLocalPoint(M)}),this.willSelectorWorkId=u.toString()}}catch(h){console.error("[MasterControlForWorker] onLocalEventEnd error:",h)}this.delayWorkStateToDoneResolve=void 0,c.length=0}}onLocalEventDoing(e,t){var r;if(((r=this.currentToolsData)==null?void 0:r.toolsType)===T.Text)return;this.currentLocalWorkData.workState===D.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:D.Doing});let n=!1;for(const[s,{state:a}]of this.localPointsBatchData.entries())if(this.isAbled()&&a!==D.Pending){const c=this.viewContainerManager.transformToScenePoint(e,t);this.pushLocalPoint(s,c,a===D.Start?D.Doing:a,t),n=!0}if(n){this.runAnimation();return}}onLocalEventStart(e,t){var c,l;this.viewContainerManager.focuedViewId!==t&&this.viewContainerManager.setFocuedViewId(t),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const n=(c=this.currentToolsData)==null?void 0:c.toolsType,r=n===T.Selector?Z:this.newWorkId,s=this.setZIndex(t);this.setCurrentLocalWorkData({workState:D.Start,toolsOpt:s,viewId:t});const a=this.viewContainerManager.transformToScenePoint(e,t);if(this.pushLocalPoint(r,a,D.Start,t,s),n!==T.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",this.now,t),r&&s&&n&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:r,toolsOpt:s,viewId:t},n),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(t);h&&((l=this.collector)!=null&&l.hasSelector(t,h))&&this.blurSelector(t,h)}this.consume()}}setLocalPointIsFullWork(e){const t=this.getLocalPointInfo(e);t&&(t.isFullWork=!0,this.localPointsBatchData.set(e,t))}pushLocalPoint(e,t,n,r,s){let a=this.getLocalPointInfo(e);n===D.Start?a={state:D.Start,points:t,opt:s||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:r}:a&&(a.state=n,a.points.push(t[0],t[1])),a&&this.localPointsBatchData.set(e,a)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}correctStorage(e,t,n){var c;const r=new Map,s=[];Object.keys(e).forEach(l=>{var u,M;const h=(M=(u=e[l])==null?void 0:u.opt)==null?void 0:M.zIndex;x.isNumber(h)&&s.push([l,h])});const a=s.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,t),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,t));for(const[l,h]of a){if(!e[l])continue;const u=e[l];u.opt&&x.isNumber(u.opt.zIndex)&&u.opt.zIndex!==h&&(u.opt.zIndex=h,r.set(l,u))}return r.size&&r.forEach((l,h)=>{var u;(u=this.collector)==null||u.updateValue(h,l,{viewId:t,scenePath:n,isSync:!0}),e[h]=l}),e}async originalEventLintener(e,t,n){var c,l,h;if(!this.isAbled())return;const r=(c=this.collector)==null?void 0:c.uid,s=this.viewContainerManager.getCurScenePath(n);if(r&&!this.control.renderControl.isWritable)return;const a=((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Selector;switch((h=this.currentToolsData)==null?void 0:h.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(r&&!this.control.renderControl.isClearAble({uid:r,viewId:n,scenePath:s}))return;break}default:{if(r&&!this.control.renderControl.isRenderAble({uid:r,viewId:n,scenePath:s}))return;break}}switch(e){case D.Start:this.isLocalWorkActive=!0,this.setLocalWorkViewId(n),n&&this.onLocalEventStart(t,n),a&&this.viewContainerManager.showFloatBarBtn(n,!1);break;case D.Doing:n&&n===this.getLocalWorkViewId()&&this.onLocalEventDoing(t,n);break;case D.Done:n&&n===this.getLocalWorkViewId()&&(this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:D.Done}),await this.onLocalEventEnd(t,n),setTimeout(()=>{this.isLocalWorkActive=!1,this.setCurrentLocalWorkData({workState:D.Pending}),a&&this.viewContainerManager.showFloatBarBtn(n,!0),this.setLocalWorkViewId(void 0)},0));break}this.isLocalWorkActive&&this.viewContainerManager.focuedViewId===n&&this.publicMsgEmitter.emit("workState",e,n),Ge(()=>{var u;(u=this.control.pluginManager)==null||u.dispatchPluginEvent("localEvent",n,e,t)},Di,this.control.hasPolyfillMethod("requestIdleCallback"))}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var r,s,a;const t=e.toolsType,n=((r=this.currentToolsData)==null?void 0:r.toolsType)!==e.toolsType;if(super.setCurrentToolsData(e),n){const c=(s=this.viewContainerManager)==null?void 0:s.getAllViews();for(const l of c)if(l){const{id:h,focusScenePath:u}=l;n&&h&&u&&((a=this.collector)!=null&&a.hasSelector(h,u)&&this.blurSelector(h,u),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:U.UpdateTools,dataType:K.Local,toolsType:t,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,isRunSubWork:this.isRunSubWork,viewId:ho}),this.runAnimation()}}prepareOnceWork(e,t){const{workId:n,toolsOpt:r,viewId:s}=e,a={msgType:U.CreateWork,dataType:K.Local,viewId:s,toolsType:t};this.queryTaskBatchData(a).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...a,workId:n,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:K.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,t,n){const{offscreenCanvasOpt:r,layerOpt:s,dpr:a,cameraOpt:c}=t,l={msgType:U.Init,dataType:K.Local,viewId:e,offscreenCanvasOpt:r,layerOpt:s,dpr:a,cameraOpt:c,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1,combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,syncUnitTime:this.maxLastSyncTime,isUseSimple:this.control.isUseSimple,offscreenCanvas:n.transferControlToOffscreenCanvas};this.taskBatchData.add(l),this.isBusy&&this.destroyTaskQueue(),this.consume()}destroyViewWorker(e,t=!1){var n;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:U.Destroy,dataType:K.Local,viewId:e,isRunSubWork:!0}),this.consume(),t||(n=this.collector)==null||n.dispatch({type:U.Clear,viewId:e}),this.control.renderControl.destoryByViewId(e,t)}onServiceDerive(e,t){var y,g,I,w,p,f,N,S;const{newValue:n,oldValue:r,viewId:s,scenePath:a}=t,c=x.cloneDeep(n)||{},l=e;let h=c.type;if(!n&&r){if(l&&((y=this.collector)==null?void 0:y.getLocalId(l))===Z){this.collector.isOwn(l)?this.blurSelector(s,a):this.blurSelector(s,a,l);return}if(h=U.RemoveNode,r.toolsType===T.LaserPen)return}const u=(g=this.viewContainerManager.getView(s))==null?void 0:g.focusScenePath;if(u&&u!==a)return;if((I=this.collector)!=null&&I.isSelector(e)){const v=(w=this.collector)==null?void 0:w.getUidFromKey(e);if(v&&!this.control.roomMember.isOnLine(v))return}if(h&&l){if(!this.control.renderControl.isFilterAble({viewId:s,elementId:e,scenePath:a},h))return;const v=c;if(v.workId=(p=this.collector)!=null&&p.isOwn(l)?(f=this.collector)==null?void 0:f.getLocalId(l):l,v.msgType=h,v.toolsType===T.LaserPen&&(v.isRunSubWork=!0),v.dataType=K.Service,v.viewId=s,v.scenePath=a,v.useAnimation=this.smoothSync&&((N=v.updateNodeOpt)==null?void 0:N.useAnimation)||!1,v.selectIds&&(v.selectIds=v.selectIds.map(j=>{var C,k;return(C=this.collector)!=null&&C.isOwn(j)?(k=this.collector)==null?void 0:k.getLocalId(j):j})),v&&v.toolsType===T.Text||(r==null?void 0:r.toolsType)===T.Text){this.control.textEditorManager.onServiceDerive(v);return}v.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(v)}this.runAnimation();const M=t.newValue&&((S=t.newValue.opt)==null?void 0:S.zIndex);if(this.zIndexNodeMethod&&x.isNumber(M)){const v=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<M&&this.zIndexNodeMethod.setMaxZIndex(M,s),v>M&&this.zIndexNodeMethod.setMinZIndex(M,s)}}pullServiceData(e,t,n={isAsync:!1,useAnimation:!1}){var c,l,h,u,M,y,g;let r=(c=this.collector)==null?void 0:c.getStorageData(e,t);const{isAsync:s,useAnimation:a}=n;if(r){this.control.renderControl.isWritable&&(r=this.correctStorage(r,e,t));const I=Object.keys(r);for(const w of I){if((l=this.collector)!=null&&l.isSelector(w)){const f=(h=this.collector)==null?void 0:h.getUidFromKey(w);if(f&&!this.control.roomMember.isOnLine(f))continue}const p=(u=r[w])==null?void 0:u.type;if(p&&w){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:w,scenePath:t},p))continue;const f=r[w];if(f.workId=(M=this.collector)!=null&&M.isOwn(w)?(y=this.collector)==null?void 0:y.getLocalId(w):w,f.msgType=p,f.dataType=K.Service,f.viewId=e,f.scenePath=t,f.useAnimation=this.smoothSync&&(f.ops?!!a:(g=f.updateNodeOpt)==null?void 0:g.useAnimation)||!1,f.selectIds&&(f.selectIds=f.selectIds.map(N=>{var S,v;return(S=this.collector)!=null&&S.isOwn(N)?(v=this.collector)==null?void 0:v.getLocalId(N):N})),f.toolsType===T.Text){this.control.textEditorManager.onServiceDerive(f);continue}s&&f.updateNodeOpt&&f.updateNodeOpt.useAnimation&&(f.updateNodeOpt.useAnimation=!1),f.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(f)}this.internalMsgEmitter.emit("excludeIds",I,e)}s?this.consume():this.runAnimation()}}runAnimation(){!this.animationId&&!this.isBusy&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var t;this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const n=this.consumeQueue(),r=!!n.size;if(this.taskBatchData.size)for(const s of this.taskBatchData.values())s.dataType===K.Service&&(n.add(s),this.taskBatchData.delete(s));n.size?(this.post(n),r&&this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[n,{state:r,isFullWork:s,points:a,opt:c}]of this.localPointsBatchData.entries()){if(r===D.Done&&!s||r===D.Start&&!this.isCanStartEventConsum)continue;const l=a.map(h=>h);if(l.length){if(this.isPostCountType&&r===D.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}this.delayWorkStateToDoneResolve&&r===D.Done&&(this.delayWorkStateToDoneResolve(!0),this.setLockSentEventCursor(!0)),this.taskBatchData.add({op:l,workState:r,workId:n,dataType:K.Local,msgType:U.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(t=this.currentToolsData)==null?void 0:t.toolsType,viewId:e,scenePath:e&&this.viewContainerManager.getCurScenePath(e),opt:c,smoothSync:this.smoothSync,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0,needUndoTicker:r===D.Done&&this.viewContainerManager.getUndoTickerId(e)||void 0}),a.length=0}}this.taskBatchData.size&&(this.post(this.taskBatchData),this.taskBatchData.clear()),this.taskBatchData.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}unWritable(){this.setCurrentLocalWorkData({workState:D.Unwritable}),this.setLockSentEventCursor(!0)}abled(){this.setCurrentLocalWorkData({workState:D.Pending}),this.setLockSentEventCursor(!1)}isAbled(){return this.currentLocalWorkData.workState!==D.Unwritable}post(e){if(!this.control.hasOffscreenCanvas){if(!this.mainThread){let t=[];t=x.cloneDeep([...e]),setTimeout(()=>{for(const n of t)this.taskBatchData.add(n)},0);return}this.mainThread.consume(e);return}if(this.control.isUseSimple){const t=[...e].find(n=>n.msgType===U.Init&&n.offscreenCanvas);t!=null&&t.offscreenCanvas?this.fullWorker.postMessage(e,[t.offscreenCanvas.bgCanvas,t.offscreenCanvas.localCanvas,t.offscreenCanvas.serviceCanvas]):this.fullWorker.postMessage(e);return}else if(this.subWorker){this.fullWorker.postMessage(e);const t=new Set;for(const n of e.values()){const r=n.msgType;(r===U.Init||r===U.Clear||r===U.Destroy||r===U.UpdateCamera||n.isRunSubWork)&&t.add(n)}t.size&&this.subWorker.postMessage(t)}}updateNode(e,t,n,r){this.taskBatchData.add({msgType:U.UpdateNode,workId:e,updateNodeOpt:t,viewId:n,scenePath:r,dataType:K.Local}),this.runAnimation()}destroyTaskQueue(){this.useTasksqueue=!1,this.useTasksClockId&&(clearTimeout(this.useTasksClockId),this.useTasksClockId=void 0),this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0}updateDpr(e,t){this.queryTaskBatchData({msgType:U.UpdateDpr,dataType:K.Local,viewId:e}).forEach(n=>{this.taskBatchData.delete(n)}),this.taskBatchData.add({dataType:K.Local,msgType:U.UpdateDpr,viewId:e,dpr:t,isRunSubWork:!0}),this.runAnimation()}updateCamera(e,t){var n;this.useTasksqueue||((n=this.methodBuilder)==null||n.pause(),this.blurCursor(e),this.checkDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:U.UpdateCamera,dataType:K.Local,cameraOpt:{...t,width:t.width,height:t.height},scenePath:this.viewContainerManager.getCurScenePath(e),isRunSubWork:!0,viewId:e}),this.consume(),this.useTasksClockId&&clearTimeout(this.useTasksClockId),this.updateCameraDone())}updateCameraDone(){this.useTasksClockId=setTimeout(()=>{var e;this.useTasksClockId=void 0,this.mainTasksqueueCount===this.workerTasksqueueCount?(this.tasksqueue.size&&this.consume(),this.useTasksqueue=!1,this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0,(e=this.methodBuilder)==null||e.recover(),this.runAnimation()):this.updateCameraDone()},this.maxLastSyncTime)}consumeQueue(){const e=new Set;let t=!this.isBusy;if(this.isBusy&&this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount<=this.workerTasksqueueCount&&(t=!0),t){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:U.TasksQueue,dataType:K.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[n,r]of this.tasksqueue.entries())r.cameraOpt&&this.control.textEditorManager.onCameraChange(r.cameraOpt,n)}return e}async clearViewScenePath(e,t,n){var s,a;const r=this.viewContainerManager.getCurScenePath(e);if(n){const c=(s=this.collector)==null?void 0:s.uid;if(c&&!this.control.renderControl.isClearAble({uid:c,viewId:e,scenePath:r}))return}this.control.textEditorManager.clear(e,t),this.queryTaskBatchData({msgType:U.Clear,dataType:K.Local,viewId:e}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({dataType:K.Local,msgType:U.Clear,viewId:e}),this.runAnimation(),t||(this.control.renderControl.isUsePageAuth(e)&&r?this.control.renderControl.clearRenderPage(e,r):(a=this.collector)==null||a.dispatch({type:U.Clear,viewId:e,scenePath:r})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e);for(const[c,l]of this.localPointsBatchData.entries())l.viewId===e&&this.localPointsBatchData.delete(c);await new Promise(c=>{const l=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};l.timer&&clearTimeout(l.timer),l.resolve=c,l.timer=setTimeout(()=>{const h=this.clearAllResolveMap.get(e);h!=null&&h.resolve&&h.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,l)}).then(c=>{this.clearAllResolveMap.delete(c)})}internalMsgEmitterListener(){var e;this.methodBuilder=new oe([W.CopyNode,W.SetColorNode,W.DeleteNode,W.RotateNode,W.ScaleNode,W.TranslateNode,W.ZIndexNode,W.SetFontStyle,W.SetPoint,W.SetLock,W.SetShapeOpt]).registerForMainEngine(ee.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(W.ZIndexNode)}setZIndex(e){const t=this.currentToolsData&&x.cloneDeep(this.currentToolsData.toolsOpt);return t&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),t.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),t}checkDrawingWork(e){var r,s,a;let t=!1;const n=[];for(const[c,{state:l,viewId:h,points:u,opt:M}]of this.localPointsBatchData.entries())if(e===h&&l===D.Start||l===D.Doing){if(l===D.Doing&&this.isCanDrawWork){Number(c)&&Number(c)+60>this.now&&(n.push(c.toString()),this.taskBatchData.add({msgType:U.RemoveNode,workId:c,viewId:h,dataType:K.Local,isRunSubWork:!0}));const y=u.map(g=>g);this.taskBatchData.add({op:y,workState:D.Done,workId:c,dataType:K.Local,msgType:U.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(r=this.currentToolsData)==null?void 0:r.toolsType,viewId:h,opt:M,scenePath:h&&this.viewContainerManager.getCurScenePath(h)}),t=!0}this.deleteLocalPoint(c)}if((t||n.length)&&(this.consume(),n.length)){const c=(s=this.viewContainerManager.getView(e))==null?void 0:s.focusScenePath;(a=this.collector)==null||a.dispatch({type:U.RemoveNode,removeIds:n,viewId:e,scenePath:c})}}removeDrawingWork(e){var n,r;const t=[];for(const[s,{state:a,viewId:c}]of this.localPointsBatchData.entries())(e===c&&a===D.Start||a===D.Doing)&&(this.deleteLocalPoint(s),a===D.Doing&&this.isCanDrawWork&&(t.push(s.toString()),this.taskBatchData.add({msgType:U.RemoveNode,workId:s,viewId:c,dataType:K.Local,isRunSubWork:!0})));if(t.length){this.consume();const s=(n=this.viewContainerManager.getView(e))==null?void 0:n.focusScenePath;(r=this.collector)==null||r.dispatch({type:U.RemoveNode,removeIds:t,viewId:e,scenePath:s})}}removeNodes(e,t){var r,s;const n=(r=this.viewContainerManager.getView(e))==null?void 0:r.focusScenePath;if(n&&t.length){for(const a of t)this.taskBatchData.add({msgType:U.RemoveNode,workId:a,viewId:e,dataType:K.Local,isRunSubWork:!1});this.consume(),(s=this.collector)==null||s.dispatch({type:U.RemoveNode,removeIds:t,viewId:e,scenePath:n})}}hoverCursor(e,t){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)===T.Selector&&!this.isBusy){const r=this.viewContainerManager.getView(t);if(r&&r.displayer&&r.displayer.vDom){const c=r.displayer.vDom.state.floatBarData;if(c){const{x:l,y:h,w:u,h:M}=c;if(Io(e,{x:l,y:h,w:u,h:M}))return}}const s=this.viewContainerManager.transformToScenePoint(e,t),a={msgType:U.CursorHover,dataType:K.Local,point:s,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:t};this.queryTaskBatchData({msgType:U.CursorHover,dataType:K.Local,toolsType:this.currentToolsData.toolsType,viewId:t}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==T.Selector)return;const t={msgType:U.CursorBlur,dataType:K.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:U.CursorHover,dataType:K.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add(t),this.consume()}sendCursorEvent(e,t){var c,l,h;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===D.Unwritable||this.isBusy)return;const n=(c=this.currentToolsData)==null?void 0:c.toolsType;if(!this.useTasksqueue&&this.workState===D.Pending&&n===T.Selector&&(x.isNumber(e[0])&&x.isNumber(e[1])?this.hoverCursor(e,t):e[0]===void 0&&e[1]===void 0&&this.blurCursor(t)),!this.currentToolsData||!this.isCanSentCursor||!this.control.pluginOptions.extras.cursor.enable)return;const r=(l=this.collector)==null?void 0:l.uid,s=this.viewContainerManager.getCurScenePath(t);switch((h=this.currentToolsData)==null?void 0:h.toolsType){case T.Eraser:case T.PencilEraser:case T.BitMapEraser:{if(r&&!this.control.renderControl.isClearAble({uid:r,viewId:t,filterLocalSelf:!1,scenePath:s}))return;break}default:if(r&&!this.control.renderControl.isWritable||r&&!this.control.renderControl.isRenderAble({uid:r,viewId:t,filterLocalSelf:!1,scenePath:s}))return;break}let a=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(a=e,this.control.cursor.sendEvent(a,t))}getBoundingRect(e){var n,r;if(!((n=this.boundingRectMap)==null?void 0:n.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))===Z&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:U.BoundingBox,dataType:K.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,t,n,r){var a,c,l,h,u;if(!((a=this.snapshotMap)==null?void 0:a.get(e))){const M=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!M)return;const y=(l=this.collector)==null?void 0:l.getStorageData(M,e);if(!y)return;if(Object.keys(y).forEach(g=>{var I;((I=this.collector)==null?void 0:I.getLocalId(g))===Z&&delete y[g]}),Object.keys(y).length){const g=this.viewContainerManager.mainView;if(!g)return;const I=t||((h=g.cameraOpt)==null?void 0:h.width),w=n||((u=g.cameraOpt)==null?void 0:u.height),p={msgType:U.Snapshot,dataType:K.Local,scenePath:e,scenes:y,w:I,h:w,cameraOpt:r&&{...r,width:I,height:w}||g.cameraOpt,isRunSubWork:!0,viewId:M};return this.taskBatchData.add(p),this.runAnimation(),new Promise(f=>{this.snapshotMap.set(e,f)}).then(f=>(this.snapshotMap.delete(e),f))}}}queryTaskBatchData(e){const t=[];if(e)for(const n of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(n[s]!==a){r=!1;break}r&&t.push(n)}return t}insertIconify(e,t){var a;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertIconify viewId is not exist");if(!t.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(t.src))throw new Error("iconify src must be http or https");t.strokeColor||(t.strokeColor=(a=this.currentLocalWorkData.toolsOpt)==null?void 0:a.strokeColor);const s=n==null?void 0:n.focusScenePath;if(e&&s){const c=this.now;ve.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:xt.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:U.FullWork,dataType:K.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}insertImage(e,t){const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertImage viewId is not exist");if(t.src&&!/^(http|https):\/\//.test(t.src))throw new Error("Image src must be http or https");const r=n==null?void 0:n.focusScenePath;if(e&&r){const{src:s,uuid:a}=t;if(a&&!s){this.tmpImageConfigMap.set(a,t);return}const c=this.now;ve.InternalMsgEmitter.emit("addUndoTicker",c,e);const l={...t,type:xt.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:U.FullWork,dataType:K.Local,toolsType:T.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}lockImage(e,t,n){var a,c;const r=this.viewContainerManager.getView(e);if(!r)throw new Error("insertImage viewId is not exist");const s=r==null?void 0:r.focusScenePath;if(e&&s&&this.collector){const l=this.collector.getStorageData(e,s);if(!l)return;for(const[h,u]of Object.entries(l))if(u&&u.toolsType===T.Image&&u.opt.uuid===t){const M=this.now;ve.InternalMsgEmitter.emit("addUndoTicker",M,e);const y=(a=this.collector)!=null&&a.isOwn(h)?(c=this.collector)==null?void 0:c.getLocalId(h):h,g={...u.opt,locked:n,type:xt.Image};this.taskBatchData.add({msgType:U.FullWork,dataType:K.Local,toolsType:T.Image,workId:y,opt:g,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:M}),this.runAnimation();return}}}completeImageUpload(e,t,n){const r=this.viewContainerManager.getView(e);if(!r)throw new Error("insertImage viewId is not exist");const s=r==null?void 0:r.focusScenePath;if(e&&s){const a=this.tmpImageConfigMap.get(t);a&&(a.src=n,this.insertImage(e,a),this.tmpImageConfigMap.delete(t));return}}getImagesInformation(e){const t=[];if(this.collector){const n=this.collector.getScenePathData(e);if(!n)return t;for(const r of Object.values(n))if(r&&r.toolsType===T.Image){const s=r.opt;t.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 t}setShapeSelectorByWorkId(e,t){this.taskBatchData.add({workId:Z,selectIds:[e],msgType:U.Select,dataType:K.Local,viewId:t,willSyncService:!0}),this.runAnimation()}blurSelector(e,t,n){this.taskBatchData.add({workId:n||Z,selectIds:[],msgType:U.Select,dataType:K.Service,viewId:e,scenePath:t}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:U.Console,dataType:K.Local,isRunSubWork:!0,viewId:""}),this.consume()}sendClearUids(e,t){var r,s;const n=new Set;n.add({msgType:U.AuthClear,dataType:K.Local,viewId:e,clearUids:t,localUid:(r=this.collector)==null?void 0:r.uid}),this.control.hasOffscreenCanvas?this.fullWorker.postMessage(n):(s=this.mainThread)==null||s.consume(n)}async getVNodeInfo(e,t,n){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:U.GetVNodeInfo,dataType:K.Local,isRunSubWork:!0,viewId:t,workIds:n,workId:e}),this.consume(),await new Promise(r=>{const s=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};s.timer&&clearTimeout(s.timer),s.resolve=r,s.timer=setTimeout(()=>{const a=this.getVNodeInfoResolveMap.get(e);a!=null&&a.resolve&&a.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,s)}).then(r=>{const{uuid:s}=r;return this.getVNodeInfoResolveMap.delete(s),r})}}class np{constructor(i){m(this,"internalMsgEmitter");m(this,"control");m(this,"roomHotkeyCheckers");m(this,"tmpCopyStore",new Map);m(this,"tmpCopyCoordInfo");var n;const{control:e,internalMsgEmitter:t}=i;this.control=e,this.internalMsgEmitter=t,this.roomHotkeyCheckers=((n=this.control.room)==null?void 0:n.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var i,e;return((e=(i=this.control)==null?void 0:i.room)==null?void 0:e.disableDeviceInputs)||!1}get isSelector(){var i;return((i=this.control.worker.currentToolsData)==null?void 0:i.toolsType)===T.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(i){switch(i.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(i){var n,r,s;const e=this.control.viewContainerManager.focuedViewId,t=(n=this.control.viewContainerManager.focuedView)==null?void 0:n.focusScenePath;if(e&&t)switch(i){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,t))&&oe.emitMethod(ee.MainEngine,W.DeleteNode,{workIds:[Z],viewId:e});break;case"copy":this.isSelector&&((s=this.collector)!=null&&s.hasSelector(e,t))&&this.copySelectorToTemp(e,t);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,t);break}(i==="changeToPencil"||i==="redo"||i==="undo")&&this.onSelfActiveHotkey(i)}colloctHotkey(i){if(this.isUseSelf){const e=this.checkHotkey(i);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(i){switch(i){case"changeToPencil":this.setMemberState({currentApplianceName:te.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:te.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:te.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:te.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:te.eraser});break;case"changeToHand":this.setMemberState({currentApplianceName:te.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:te.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:te.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:te.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:te.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:te.text});break;case"changeToPencilEraser":this.setMemberState({currentApplianceName:te.pencilEraser});break;case"delete":case"copy":case"paste":this.onActiveHotkey(i);break}}checkHotkey(i){for(const e of this.roomHotkeyCheckers){const{kind:t,checker:n}=e;if(n({nativeEvent:i,kind:this.getEventKey(i),key:i.key,altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey},this.keyboardKind))return t}}copySelectorToTemp(i,e){var l,h;const t=this.control.viewContainerManager.getView(i),n=(h=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:h.getBuilder(W.CopyNode);if(!t||!this.collector||!n)return;const r=this.collector.transformKey(Z),s=this.collector.getStorageData(i,e);if(!s)return;const a=s[r],c=a&&n.copySelector({viewId:i,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(i,e){var r,s;const t=this.control.viewContainerManager.getView(i),n=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(W.CopyNode);if(!(!t||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!n)&&t.viewData&&this.tmpCopyCoordInfo){const a=x.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=t.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY;const h=this.control.worker.now;this.control.worker.internalMsgEmitter.emit("addUndoTicker",h,i),n.pasteSelector({viewId:i,scenePath:e,copyStores:x.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l},undoTickerId:h})}}setMemberState(i){var e;(e=this.control.room)==null||e.setMemberState(i)}}class op{constructor(i){m(this,"control");m(this,"roomMemberManager");m(this,"worker");m(this,"publicMsgEmitter");m(this,"renderUids",new Map);m(this,"pageAuth",new Map);m(this,"isLocalRender",!1);m(this,"isCurWritable",!1);var n;const{control:e,publicMsgEmitter:t}=i;this.control=e,this.publicMsgEmitter=t,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((n=this.control.room)==null?void 0:n.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(i){this.isCurWritable=i}addPage(i,e=!0){var l,h;const{viewId:t,render:n="localSelf",elementIds:r,pageId:s=(l=this.control.collector)==null?void 0:l.uid}=i,a=this.pageAuth.get(t)||new Map,c=this.control.viewContainerManager.getCurScenePath(t);if(c&&s){const u=a.get(c)||{render:"localSelf",pages:new Map};e&&(u.render=n);const M=r&&this.cloneElementIds(t,c,r,s)||new Set;u.pages.set(s,M),a.set(c,u),this.pageAuth.set(t,a),e&&this.pageAuthEffect(t),this.isLocalRender=!1,(h=this.control.collector)==null||h.dispatchPageAuth({operation:Te.addPage,viewId:t,scenePath:c,pageId:s,pageData:{render:n,elementIds:M}},!0)}}delPage(i,e){var s,a;const t=this.pageAuth.get(e);if(!t)return;const n=[...t.keys()].find(c=>{const l=t.get(c);return!!(l&&l.pages.has(i))});if(!n)return;const r=t.get(n);if(r){const{render:c,pages:l}=r,h=c==="localSelf"?(s=this.control.collector)==null?void 0:s.uid:c,u=l.get(i);u!=null&&u.size&&this.delElementIds(e,n,u),l.delete(i),h===i&&this.pageAuthEffect(e)}(a=this.control.collector)==null||a.dispatchPageAuth({operation:Te.deletePage,viewId:e,scenePath:n,pageId:i},!0)}delViewPage(i,e=!0){var n;this.pageAuth.get(i)&&(this.pageAuth.delete(i),e&&((n=this.control.collector)==null||n.dispatchPageAuth({operation:Te.clearView,viewId:i},e)))}clearRenderPage(i,e,t=!0){var a,c;const n=this.pageAuth.get(i);if(!n)return;const r=n.get(e);let s;if(r){const{render:l,pages:h}=r,u=l==="localSelf"?(a=this.control.collector)==null?void 0:a.uid:l;if(u){if(t){const M=h.get(u);M&&this.delElementIds(i,e,M)}h.set(u,new Set),s=u}}t&&s&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:Te.clearPage,viewId:i,scenePath:e,pageId:s},t))}hasPage(i,e,t){const n=this.pageAuth.get(e);if(!n)return!1;const r=n.get(t);return r?r.pages.has(i):!1}getPageInfo(i,e,t){const n=this.pageAuth.get(e);if(!n)return;const r=n.get(t);if(r)return r.pages.get(i)}addRenderPageElementId(i,e=!0,t=!1){var h,u;const{viewId:n,elementId:r,scenePath:s}=i,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(s);let l;if(c){const{render:M,pages:y}=c,g=M==="localSelf"?(h=this.control.collector)==null?void 0:h.uid:M;if(g&&y.has(g)){const I=y.get(g)||new Set;I.add(r),y.set(g,I),l=g}}t&&this.pageAuthEffect(n),e&&l&&((u=this.control.collector)==null||u.dispatchPageAuth({operation:Te.addElement,viewId:n,scenePath:s,pageId:l,pageData:{elementId:r}},e))}delRenderPageElementId(i,e=!0,t=!1){var h,u;const{viewId:n,elementId:r,scenePath:s}=i,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(s);let l;if(c){const{render:M,pages:y}=c,g=M==="localSelf"?(h=this.control.collector)==null?void 0:h.uid:M;if(g&&y.has(g)){const I=y.get(g);I&&(I.delete(r),y.set(g,I),l=g)}}t&&this.pageAuthEffect(n),e&&l&&((u=this.control.collector)==null||u.dispatchPageAuth({operation:Te.deleteElement,viewId:n,scenePath:s,pageId:l,pageData:{elementId:r}},e))}setPageRender(i,e,t,n=!0){var a;const r=this.pageAuth.get(i);if(!r)throw new Error(`no view info in viewId: ${i}`);const s=r.get(e);s&&(s.render=t),e===this.control.viewContainerManager.getCurScenePath(i)&&this.pageAuthEffect(i),n||(this.isLocalRender=!0),n&&(this.isLocalRender=!1,(a=this.control.collector)==null||a.dispatchPageAuth({operation:Te.renderPage,viewId:i,scenePath:e,pageData:{render:t}},n))}isRenderAble(i){var c,l;const{uid:e,viewId:t,filterLocalSelf:n=!0,scenePath:r}=i,s=this.renderUids.get(t);if(s){const{render:h,hide:u}=s;if(h===void 0&&u===void 0)return!0;if(x.isSet(h)){if(h.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&h.has("localSelf"))return!0}else if(h===!0&&(!u||x.isSet(u)&&!u.has(e)&&!(n&&u.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const a=this.pageAuth.get(t);if(a&&r){const h=a.get(r);if(h){const{render:u}=h;if(u)return!(u==="localSelf"&&!n)}}return!0}isClearAble(i){var c;const{uid:e,viewId:t,filterLocalSelf:n=!0,scenePath:r}=i,s=this.renderUids.get(t);if(s){const{clear:l}=s;return!!(l===void 0||l===!0||x.isSet(l)&&(l.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const a=this.pageAuth.get(t);if(a&&r){const l=a.get(r);if(l){const{render:h}=l;if(h)return!(h==="localSelf"&&!n)}}return!0}isFilterAble(i,e){var c,l,h,u;const{viewId:t,scenePath:n,elementId:r}=i,s=this.renderUids.get(t);if(s&&r){const{render:M,hide:y}=s;if(M===void 0&&y===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(r);return g?!!(x.isSet(M)&&(M.has(g)||M.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||M===!0&&(!y||x.isSet(y)&&!y.has(g)&&!(y.has("localSelf")&&((h=this.control.collector)==null?void 0:h.uid)===g))):!1}const a=this.pageAuth.get(t);if(a&&n&&r){const M=a.get(n);if(M){const{render:y,pages:g}=M;if(!y)return!0;const I=(u=this.control.collector)==null?void 0:u.uid,w=y==="localSelf"?I:y,p=w&&g.get(w)||void 0;if(p)switch(e){case U.RemoveNode:return!0;default:return p.has(r)}return!1}}return!0}isFilterCursor(i){if(this.isUsePageAuth(i)){const e=this.control.viewContainerManager.getCurScenePath(i),t=this.pageAuth.get(i);if(e&&t){const n=t.get(e);if(n){const{render:r}=n;return r!=="localSelf"}}}return!0}isUsePageAuth(i){var n;if(!this.pageAuth.has(i))return!1;const t=this.control.viewContainerManager.getCurScenePath(i);return t&&((n=this.pageAuth.get(i))==null?void 0:n.has(t))||!1}publishRender(i){var s;const{viewId:e,option:t,isSync:n=!0}=i,r={};if(t){const{render:a,hide:c,clear:l}=t;a&&(r.render=a===!0&&!0||new Set(a)),c&&(r.hide=c===!0&&!0||new Set(c)),l&&(r.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,r)}else this.renderUids.delete(e);n&&((s=this.control.collector)==null||s.dispatchRenderAuth({operation:Ue.setAuth,viewId:e,renderData:r},n)),this.renderEffect(e)}publishOneRender(i,e,t,n=!0){var a;const r=this.renderUids.get(i);let s;switch(t){case"show":r?(r.render||(r.render=new Set),x.isSet(r.render)&&r.render.add(e),x.isSet(r.hide)&&r.hide.delete(e)):this.renderUids.set(i,{render:new Set([e])}),s=Ue.setShow;break;case"hide":r?(r.hide||(r.hide=new Set),x.isSet(r.hide)&&r.hide.add(e),x.isSet(r.render)&&r.render.delete(e)):this.renderUids.set(i,{hide:new Set([e])}),s=Ue.setHide;break}r?this.renderUids.set(i,r):this.renderUids.delete(i),n&&s&&((a=this.control.collector)==null||a.dispatchRenderAuth({operation:s,viewId:i,uid:e},n)),this.renderEffect(i)}publishOneClear(i,e,t,n=!0){var s;const r=this.renderUids.get(i);t?r?(r.clear||(r.clear=new Set),x.isSet(r.clear)&&r.clear.add(e)):this.renderUids.set(i,{clear:new Set([e])}):r&&x.isSet(r.clear)&&r.clear.has(e)&&r.clear.delete(e),r?this.renderUids.set(i,r):this.renderUids.delete(i),n&&((s=this.control.collector)==null||s.dispatchRenderAuth({operation:Ue.setClear,viewId:i,uid:e,isClear:t},n)),this.renderEffect(i)}syncRenderUids(i,e,t,n){const r=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,s=t===!0?!0:t&&Object.keys(t)?new Set(Object.keys(t)):void 0,a=n===!0?!0:n&&Object.keys(n)?new Set(Object.keys(n)):void 0;r||s||a?this.renderUids.set(i,{render:r,hide:s,clear:a}):this.renderUids.delete(i),this.renderEffect(i),this.publicMsgEmitter.emit("syncRenderUids",i,{render:r,hide:s,clear:a})}syncPageAuth(i,e,t=!1){let n=!1;if(!e)this.pageAuth.delete(i);else{const r=this.pageAuth.get(i)||new Map;for(const[s,a]of Object.entries(e)){const{render:c,pages:l}=a,h=r.get(s),u=this.isLocalRender?h==null?void 0:h.render:c;if(u){u!==(h==null?void 0:h.render)&&(n=!0);const M=new Map;for(const[g,I]of Object.entries(l))M.set(g,new Set(Object.keys(I)));const y={render:u,pages:M};M.size&&r.set(s,y)}}r.size&&(this.pageAuth.set(i,r),this.publicMsgEmitter.emit("syncPageAuth",i,r))}(t||n)&&this.pageAuthEffect(i)}destoryByViewId(i,e=!1){var t;this.renderUids.has(i)&&(this.renderUids.delete(i),e||(t=this.control.collector)==null||t.dispatchRenderAuth({operation:Ue.setAuth,viewId:i})),this.pageAuth.has(i)&&this.control.renderControl.delViewPage(i,!e)}renderEffect(i){var t;const e=(t=this.control.viewContainerManager.getView(i))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(i,!0).then(()=>{var n;this.worker.pullServiceData(i,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(i,(n=this.renderUids.get(i))==null?void 0:n.clear)})}pageAuthEffect(i){var t;const e=(t=this.control.viewContainerManager.getView(i))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(i,!0).then(()=>{this.worker.pullServiceData(i,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(i,!0)})}cloneElementIds(i,e,t,n){var a,c;const r=(a=this.control.collector)==null?void 0:a.getStorageData(i,e),s=new Set;if(r){for(const l of Object.keys(r))if(t.has(l)){const h=`${l}_${n}`;if(s.add(h),!Object.keys(r).includes(h)){const u=x.cloneDeep(r[l]);(c=this.control.collector)==null||c.updateValue(h,{type:U.FullWork,...u,workId:h},{isSync:!0,viewId:i,scenePath:e})}}}return s}delElementIds(i,e,t){var r,s;const n=(r=this.control.collector)==null?void 0:r.getStorageData(i,e);if(n)for(const a of Object.keys(n))t.has(a)&&Object.keys(n).includes(a)&&((s=this.control.collector)==null||s.updateValue(a,void 0,{isSync:!0,viewId:i,scenePath:e}))}}class rp{constructor(i){m(this,"internalMsgEmitter");m(this,"control");m(this,"maps",new Map);m(this,"showId");m(this,"color");m(this,"timer");m(this,"updateMiniMapCamera",x.debounce(async i=>{const e=this.maps.get(i);if(e){const t=await this.getMiniMapCamera(i);if(t){const n=t.width/t.scale,r=t.height/t.scale,s=e.miniMapCamera.width/e.miniMapCamera.scale,a=e.miniMapCamera.height/e.miniMapCamera.scale;(n>=s||r>=a)&&(e.miniMapCamera=t);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const h=this.control.viewContainerManager.getView(i);if(!(h!=null&&h.focusScenePath))return;const{miniMapCamera:u,contianer:M}=e,{width:y,height:g}=M.getBoundingClientRect(),I=Math.min(y/u.width,g/u.height);l.clearRect(0,0,c.width,c.height),c.width=u.width,c.height=u.height,c.style.width=`${u.width*I}px`,c.style.height=`${u.height*I}px`,await this.control.screenshotToCanvas(l,h.focusScenePath,u.width,u.height,u),this.listener.emitAsync([i,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var n;const{control:e,internalMsgEmitter:t}=i;this.control=e,this.internalMsgEmitter=t,this.color=((n=this.control.worker.currentToolsData)==null?void 0:n.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(i){this.color=i}async createMiniMap(i,e,t){const n=this.control.viewContainerManager.getView(i);if(!n)throw new Error("view not found");const r=n.cameraOpt;if(!r)throw new Error("view camera not found");const{width:s,height:a}=e.getBoundingClientRect();if(!s||!a)throw new Error("contianer width or height is 0");const c=d.createRef();this.maps.set(i,{contianer:e,miniMapCanvas:c,miniMapCamera:t,viewCamera:r}),this.showId=i,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(s/t.width,a/t.height),h=await new Promise(u=>{this.listener.once([i,"miniMapCreate"],()=>{const M=c.current;M&&(M.width=t.width,M.height=t.height,M.style.width=`${t.width*l}px`,M.style.height=`${t.height*l}px`),u(!0)}),this.timer=setTimeout(()=>{u(!1)},2e3)});return this.timer&&clearTimeout(this.timer),h}async getMiniMapCamera(i){const e=this.control.viewContainerManager.getView(i);if(!e)return;const{cameraOpt:t,focusScenePath:n}=e;if(!t||!n)return;const r={originX:t.centerX-t.width/t.scale/2,originY:t.centerY-t.height/t.scale/2,width:t.width/t.scale,height:t.height/t.scale};let s=await this.control.getBoundingRect(n)||r;s=Fi(s,r)||r;let a=s.width,c=s.height,l=1;const h=a>t.width&&Math.min(t.width/a,l)||l,u=c>t.height&&Math.min(t.height/c,l)||l;return h<=u?(a=h<1&&t.width||a,c=Math.floor(c*h)+1,l=h):h>u&&(c=u<1&&t.height||c,a=Math.floor(a*u)+1,l=u),{scale:l,centerX:s.originX+s.width/2,centerY:s.originY+s.height/2,width:a,height:c}}getMiniMapCanvas(i){const e=this.maps.get(i);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(i,e){const t=this.maps.get(i);t&&(t.viewCamera=e,this.listener.emitAsync([i,"viewCameraUpate"],1))}destroyMiniMap(i){const e=i||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}class sp{constructor(){m(this,"control");m(this,"_listeners",{})}_inject(i){this.control=i}_onEvent(i,e){this._listeners[i]&&this._listeners[i](...e)}callbacks(i,e){this._listeners[i]=e}removeCallback(i){delete this._listeners[i]}}class ap{constructor(i){m(this,"control");m(this,"worker");m(this,"publicMsgEmitter");m(this,"plugins",new Map);const{control:e,publicMsgEmitter:t}=i;this.control=e,this.publicMsgEmitter=t,this.worker=e.worker}use(i){this.plugins.set(i.kind,i),i._inject(this.control),i.onCreate()}destroy(){this.plugins.forEach(i=>{this.plugins.delete(i.kind),i.onDestroy()})}dispatchPluginEvent(i,...e){this.plugins.forEach(t=>{t._onEvent(i,e)})}}const tt=class tt{constructor(i){m(this,"version",uo);m(this,"plugin");m(this,"room");m(this,"play");m(this,"collector");m(this,"hasSwitchToSelectorEffect");m(this,"snapshootStateMap");m(this,"_disableDeviceInputs");m(this,"_disableEraseImage");m(this,"_disableEraseText");m(this,"_disableCameraTransform");m(this,"_disableUseWorker",!1);m(this,"effectResolve");m(this,"hotkeyManager");m(this,"pluginOptions");m(this,"roomMember");m(this,"cursor");m(this,"textEditorManager");m(this,"worker");m(this,"renderControl");m(this,"miniMapManager");m(this,"pluginManager");m(this,"_isPolyfill",{requestIdleCallback:!1,cancelIdleCallback:!1});m(this,"onSceneChange",async(i,e)=>{var s;const t=this.viewContainerManager.getView(e);t!=null&&t.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,t.focusScenePath)&&this.worker.blurSelector(e,t.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const n=t==null?void 0:t.displayer;n&&(n.setActive(!1),await n.stopEventHandler());const r=i;r&&this.viewContainerManager.setViewScenePath(e,r),n==null||n.setActive(!0)});m(this,"onRoomMembersChange",i=>{this.roomMember.setRoomMembers(Q.toJS(i))});m(this,"onMemberChange",x.throttle(i=>{var s,a;if(!this.room||!this.worker||!i||!this.room.isWritable)return;const e=this.getToolsKey(i),t=(s=this.worker.getCurrentToolsData())==null?void 0:s.toolsType,n=this.viewContainerManager.focuedViewId;n&&t===T.Selector&&e!==T.Selector&&this.worker.blurCursor(n);const r=this.getToolsOpt(e,i);this.worker.setCurrentToolsData(r),(a=this.pluginManager)==null||a.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));m(this,"internalSceneChange",(i,e)=>{var t,n,r,s;this.isUseSimple||((t=this.miniMapManager)==null?void 0:t.activeViewId)===i&&((n=this.miniMapManager)==null||n.destroyMiniMap(i)),(r=this.pluginManager)==null||r.dispatchPluginEvent("sceneChange",i,e),(s=this.worker)==null||s.clearViewScenePath(i,!0).then(()=>{var a;(a=this.worker)==null||a.pullServiceData(i,e,{isAsync:!0,useAnimation:!1})})});m(this,"internalCameraChange",(i,e)=>{var t,n;(t=this.worker)==null||t.updateCamera(i,e),this.isUseSimple||(n=this.miniMapManager)==null||n.updateViewCamera(i,e)});var s;const{displayer:e,plugin:t,options:n}=i;this.plugin=t,this.room=Q.isRoom(e)?e:void 0,this.play=Q.isPlayer(e)?e:void 0,this.room&&(this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1),this.pluginOptions=n,((s=n.extras)==null?void 0:s.useWorker)==="mainThread"?this._disableUseWorker=!0:this._disableUseWorker=mn!=="worker",this.roomMember=new Wf;const r={control:this,internalMsgEmitter:tt.InternalMsgEmitter,publicMsgEmitter:tt.PublicMsgEmitter};this.cursor=new Bf(r),this.textEditorManager=new Ug(r),this.worker=new ip(r),this.hotkeyManager=new np(r),this.renderControl=new op(r),this.pluginManager=new ap(r),this.isUseSimple||(this.miniMapManager=new rp(r))}hasPolyfillMethod(i){return this._isPolyfill[i]}registerPolyfillMethod(i){this._isPolyfill[i]=!0}get hasExtendFontFaces(){return this.extendFontFaces.length>0}get extendFontFaces(){var i;return((i=this.pluginOptions.extras.textEditor)==null?void 0:i.extendFontFaces)??we.textEditor.extendFontFaces}get loadFontFacesTimeout(){var i;return((i=this.pluginOptions.extras.textEditor)==null?void 0:i.loadFontFacesTimeout)??we.textEditor.loadFontFacesTimeout}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(i){this._disableEraseText=i}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(i){this._disableEraseImage=i}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(i){var t;this._disableDeviceInputs=i;const e=(t=this.worker.getCurrentToolsData())==null?void 0:t.toolsType;e&&this.effectViewContainer(e)}get disableCameraTransform(){return this._disableCameraTransform||!1}set disableCameraTransform(i){this._disableCameraTransform=i}get disableUseWorker(){return this._disableUseWorker||!1}set disableUseWorker(i){this._disableUseWorker=i}get hasOffscreenCanvas(){return this._disableUseWorker?!1:mn==="worker"}get canUseTransferControlToOffscreen(){return this._disableUseWorker?!1:!!HTMLCanvasElement.prototype.transferControlToOffscreen}get isUseOffscreenTransfer(){return this.isUseSimple&&this.hasOffscreenCanvas&&this.canUseTransferControlToOffscreen}get isUseSimple(){return this.pluginOptions.extras.useSimple}bindPlugin(i){this.plugin=i,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new yi(this,i,this.pluginOptions.extras.syncOpt.interval),this.activePlugin()}destroy(){var i,e,t,n,r,s,a;this.roomMember.destroy(),(i=this.collector)==null||i.destroy(),(e=this.worker)==null||e.destroy(),(t=this.viewContainerManager)==null||t.destroy(),(n=this.cursor)==null||n.destroy(),(r=this.textEditorManager)==null||r.destory(),(s=this.pluginManager)==null||s.destroy(),(a=this.miniMapManager)==null||a.destroyMiniMap()}cleanCurrentScene(){const i=this.worker.now,e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(tt.InternalMsgEmitter.emit("addUndoTicker",i,e),this.worker.clearViewScenePath(e,!1,!0).then(()=>{tt.InternalMsgEmitter.emit("forceUndoTickerEnd",i,e)}))}async setWritable(i){var e,t;if(!i){(e=this.cursor)==null||e.unabled(),this.textEditorManager.checkEmptyTextBlur();const n=this.viewContainerManager.getAllViews();for(const r of n){r!=null&&r.focusScenePath&&(t=this.collector)!=null&&t.hasSelector(r.id,r.focusScenePath)&&this.worker.blurSelector(r.id,r.focusScenePath);const s=r==null?void 0:r.displayer;s&&(s.setActive(!1),await s.stopEventHandler())}}await new Promise(n=>{setTimeout(()=>{n()},500)})}onWritableChange(i){var n;i?this.worker.abled():this.worker.unWritable(),((n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType)===T.Text&&this.viewContainerManager.focuedViewId&&(i?this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId):this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId)),this.renderControl.onWritableChange(i),this.viewContainerManager.getAllViews().forEach(r=>{const s=r==null?void 0:r.displayer;s&&(s.bindToolsClass(),i?s.setActive(!0):s.setActive(!1))})}getToolsKey(i){const e=i.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case te.text:return i.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Text;case te.pencil:return i.useLaserPen?T.LaserPen:T.Pencil;case te.eraser:return T.Eraser;case te.pencilEraser:return this.pluginOptions.extras.pencilEraser.useBitMap===!1?T.PencilEraser:T.BitMapEraser;case te.selector:return T.Selector;case te.arrow:return i.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Arrow;case te.straight:return i.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Straight;case te.ellipse:return i.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Ellipse;case te.rectangle:return i.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Rectangle;case te.shape:if(i.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),i.shapeType===Ye.Pentagram||i.shapeType===Ye.Star)return T.Star;if(i.shapeType===Ye.Polygon||i.shapeType===Ye.Triangle||i.shapeType===Ye.Rhombus)return T.Polygon;if(i.shapeType===Ye.SpeechBalloon)return T.SpeechBalloon;break}return T.Clicker}getToolsOpt(i,e){if(i===T.Clicker)return{toolsType:i,toolsOpt:{}};const t={strokeColor:ht(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(i){case T.Text:t.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),t.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),t.textAlign=(e==null?void 0:e.textAlign)||"left",t.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",t.fontColor=(e==null?void 0:e.textColor)&&ht(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||t.strokeColor||"rgba(0,0,0,1)",t.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&ht(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",t.bold=(e==null?void 0:e.bold)&&"bold"||void 0,t.italic=(e==null?void 0:e.italic)&&"italic"||void 0,t.underline=(e==null?void 0:e.underline)||void 0,t.lineThrough=(e==null?void 0:e.lineThrough)||void 0,t.text="",t.strokeColor=void 0;break;case T.Pencil:{const n=(e==null?void 0:e.strokeType)||fe.Normal;t.strokeType=n,t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case T.PencilEraser:case T.BitMapEraser:case T.Eraser:t.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1;break;case T.LaserPen:{t.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===fe.Stroke?t.strokeType=fe.Normal:t.strokeType=(e==null?void 0:e.strokeType)||fe.Normal;const n=t.strokeType;t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case T.Arrow:case T.Straight:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===fe.Stroke?t.strokeType=fe.Normal:t.strokeType=(e==null?void 0:e.strokeType)||fe.Normal;const n=t.strokeType;t.strokeType=n,t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case T.Ellipse:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===fe.Stroke?t.strokeType=fe.Normal:t.strokeType=(e==null?void 0:e.strokeType)||fe.Normal;const n=t.strokeType;t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n),i===T.Star&&(e.shapeType===Ye.Pentagram?(t.vertices=10,t.innerVerticeStep=2,t.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(t.vertices=e.vertices,t.innerVerticeStep=e.innerVerticeStep,t.innerRatio=e.innerRatio)),i===T.Polygon&&(e.shapeType===Ye.Triangle?t.vertices=3:e.shapeType===Ye.Rhombus?t.vertices=4:e.vertices&&(t.vertices=e.vertices)),t.fillColor=(e==null?void 0:e.fillColor)&&ht(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",i===T.SpeechBalloon&&(t.placement=e.placement||"bottomLeft");break}}return{toolsType:i,toolsOpt:t}}getLineCap(i){switch(i){case fe.Normal:return this.pluginOptions.extras.normalStroke.lineCap||we.normalStroke.lineCap;case fe.Dotted:return this.pluginOptions.extras.dottedStroke.lineCap||we.dottedStroke.lineCap;case fe.LongDotted:return this.pluginOptions.extras.longDottedStroke.lineCap||we.longDottedStroke.lineCap;default:return}}getLineDash(i){switch(i){case fe.Normal:return;case fe.Dotted:{const{segment:e,gap:t}=this.pluginOptions.extras.dottedStroke||we.dottedStroke;return[e,t]}case fe.LongDotted:{const{segment:e,gap:t}=this.pluginOptions.extras.longDottedStroke||we.longDottedStroke;return[e,t]}default:return}}effectViewContainer(i){var e,t,n,r,s;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.unWritable(),(t=this.cursor)==null||t.unabled();else switch(i!==T.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId),i){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Triangle:case T.Rhombus:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:case T.Selector:this.room.disableDeviceInputs=!0,(n=this.worker)==null||n.abled(),i===T.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId);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(i){var t,n,r,s,a;const e=await((t=this.worker)==null?void 0:t.getBoundingRect(i));if(e){const c=((r=(n=this.viewContainerManager.mainView)==null?void 0:n.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(i,e,t,n,r,s,a){const c=await this.worker.getSnapshot(e,t,n,r);c&&(i.drawImage(c,s||0,a||0),c.close())}async scenePreview(i,e){var s,a,c,l;const t=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(i);if(!t)return;const n=this.viewContainerManager.getView(t);if(!n||!((a=n.cameraOpt)!=null&&a.width)||!((c=n.cameraOpt)!=null&&c.height))return;const r=await((l=this.worker)==null?void 0:l.getSnapshot(i));if(r&&this.worker){const h=document.createElement("canvas"),u=h.getContext("2d"),{width:M,height:y}=n.cameraOpt;h.width=M,h.height=y,u&&(u.drawImage(r,0,0),e.crossOrigin="anonymous",e.src=h.toDataURL(),e.onload=()=>{h.remove()},e.onerror=()=>{h.remove(),e.remove()}),r.close()}}switchToText(){var i;(i=this.room)==null||i.setMemberState({currentApplianceName:te.text})}switchToSelector(){var i;(i=this.room)==null||i.setMemberState({currentApplianceName:te.selector})}async runEffectWork(i){if(this.hasSwitchToSelectorEffect){const e=await new Promise(t=>{this.switchToSelector(),this.effectResolve=t});this.effectResolve=void 0,e&&i&&i()}}setSnapshootData(){var i;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(i=this.room)==null?void 0:i.state.memberState))}getSnapshootData(i){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(i)}clearSnapshootData(){var i;(i=this.snapshootStateMap)==null||i.clear(),this.snapshootStateMap=void 0}useBitMapEraser(i){this.pluginOptions.extras.pencilEraser.useBitMap=i}consoleWorkerInfo(){var i;(i=this.worker)==null||i.consoleWorkerInfo()}filterRenderByUid(i,e,t=!0){var r;this.viewContainerManager.getView(i)&&((r=this.renderControl)==null||r.publishRender({viewId:i,option:e,isSync:t}))}cancelFilterRender(i,e=!0){var t;(t=this.renderControl)==null||t.publishRender({viewId:i,isSync:e})}async createMiniMap(i,e){var n,r,s;if(this.isUseSimple)throw new Error("simple mode not support createMiniMap");const t=await((n=this.miniMapManager)==null?void 0:n.getMiniMapCamera(i));if(t&&await((r=this.miniMapManager)==null?void 0:r.createMiniMap(i,e,t))){const c=(s=this.miniMapManager)==null?void 0:s.getMiniMapCanvas(i);if(c){const l=c.getContext("2d");if(l){const h=this.viewContainerManager.getView(i);h!=null&&h.focusScenePath&&this.screenshotToCanvas(l,h.focusScenePath,t.width,t.height,t)}}}}async destroyMiniMap(i){var e;(e=this.miniMapManager)==null||e.destroyMiniMap(i)}insertIconify(i,e){var n;if(this.viewContainerManager.getView(i)&&this.room){const r=this.room.state.memberState,s=ht(r.strokeColor[0],r.strokeColor[1],r.strokeColor[2],r.strokeOpacity||1);(n=this.worker)==null||n.insertIconify(i,{...e,strokeColor:s})}}usePlugin(i){var e;return(e=this.pluginManager)==null?void 0:e.use(i)}async stopDraw(i){var t;const e=this.viewContainerManager.getView(i);e&&await((t=e.displayer)==null?void 0:t.stopEventHandler())}async setViewLocalScenePathChange(i,e){this.viewContainerManager.getView(i)&&await this.onSceneChange(e,i)}};m(tt,"InternalMsgEmitter",new ui),m(tt,"PublicMsgEmitter",new ui);let ve=tt;var mi=(o=>(o.Undo="undo",o.Redo="redo",o))(mi||{});const se=class se{createProxy(i,e,t){const n=new Proxy(i,{get(r,s,a){if(typeof s=="string"&&/^\d+$/.test(s))return Reflect.get(r,s,a);const c=se.interceptors.hasOwnProperty(s)?se.interceptors:r,l=Reflect.get(c,s,a);return typeof l=="function"&&c===se.interceptors?l.bind(n):l},set(r,s,a,c){const l=se.proxyCallbacks.get(c),h=(l==null?void 0:l.arrayType)||"undo";if(s==="length"){const u=r.length,M=[];if(a<u)for(let g=a;g<u;g++)M.push(r[g]);const y=Reflect.set(r,s,a,c);if(l!=null&&l.callback)for(let g=0;g<M.length;g++)l.callback({operation:"delete",index:a+g,oldValue:M[g],arrayType:h});return y}return typeof s=="string"&&/^\d+$/.test(s),Reflect.set(r,s,a,c)},deleteProperty(r,s){const a=se.proxyCallbacks.get(n),c=(a==null?void 0:a.arrayType)||"undo";if(typeof s=="string"&&/^\d+$/.test(s)){const l=parseInt(s,10),h=r[l],u=Reflect.deleteProperty(r,s);return a!=null&&a.callback&&h!==void 0&&a.callback({operation:"delete",index:l,oldValue:h,arrayType:c}),u}return Reflect.deleteProperty(r,s)}});return se.proxyToRaw.set(n,i),se.proxyCallbacks.set(n,{callback:e,arrayType:t}),n}};m(se,"proxyToRaw",new WeakMap),m(se,"proxyCallbacks",new WeakMap),m(se,"interceptors",{entries(...i){return se.proxyToRaw.get(this).entries(...i)},forEach(...i){return se.proxyToRaw.get(this).forEach(...i)},map(...i){return se.proxyToRaw.get(this).map(...i)},filter(...i){return se.proxyToRaw.get(this).filter(...i)},find(...i){return se.proxyToRaw.get(this).find(...i)},findIndex(...i){return se.proxyToRaw.get(this).findIndex(...i)},includes(...i){return se.proxyToRaw.get(this).includes(...i)},indexOf(...i){return se.proxyToRaw.get(this).indexOf(...i)},slice(...i){return se.proxyToRaw.get(this).slice(...i)},concat(...i){return se.proxyToRaw.get(this).concat(...i)},push(...i){const e=se.proxyToRaw.get(this),t=this,n=se.proxyCallbacks.get(t),r=(n==null?void 0:n.arrayType)||"undo",s=e.length,a=e.push(...i);if(n!=null&&n.callback)for(let c=s;c<e.length;c++)n.callback({operation:"add",index:c,newValue:e[c],arrayType:r});return a},customPush(...i){return se.proxyToRaw.get(this).push(...i)},pop(){const i=se.proxyToRaw.get(this),e=this,t=se.proxyCallbacks.get(e),n=(t==null?void 0:t.arrayType)||"undo",r=i.length,s=i[r-1],a=i.pop();return t!=null&&t.callback&&r>0&&t.callback({operation:"delete",index:r-1,oldValue:s,arrayType:n}),a},shift(){const i=se.proxyToRaw.get(this),e=this,t=se.proxyCallbacks.get(e),n=(t==null?void 0:t.arrayType)||"undo",r=i[0],s=i.shift();return t!=null&&t.callback&&i.length>0&&t.callback({operation:"delete",index:0,oldValue:r,arrayType:n}),s},unshift(...i){const e=se.proxyToRaw.get(this),t=this,n=se.proxyCallbacks.get(t),r=(n==null?void 0:n.arrayType)||"undo",s=e.unshift(...i);if(n!=null&&n.callback)for(let a=0;a<i.length;a++)n.callback({operation:"add",index:a,newValue:e[a],arrayType:r});return s},splice(i,e,...t){const n=se.proxyToRaw.get(this),r=this,s=se.proxyCallbacks.get(r),a=(s==null?void 0:s.arrayType)||"undo",c=e??n.length-i,l=n.slice(i,i+c),h=n.splice(i,c,...t);if(s!=null&&s.callback){for(let u=0;u<l.length;u++)s.callback({operation:"delete",index:i+u,oldValue:l[u],arrayType:a});for(let u=0;u<t.length;u++)s.callback({operation:"add",index:i+u,newValue:n[i+u],arrayType:a})}return h},customSplice(i,e,...t){const n=se.proxyToRaw.get(this),r=e??n.length-i;return n.splice(i,r,...t)},get length(){return se.proxyToRaw.get(this).length},set length(i){const e=se.proxyToRaw.get(this),t=this,n=se.proxyCallbacks.get(t),r=(n==null?void 0:n.arrayType)||"undo",s=e.length,a=[];if(i<s)for(let c=i;c<s;c++)a.push(e[c]);if(e.length=i,n!=null&&n.callback)for(let c=0;c<a.length;c++)n.callback({operation:"delete",index:i+c,oldValue:a[c],arrayType:r})}});let wi=se;const Ke=class Ke{constructor(i){m(this,"emitter",new ui);m(this,"undoStack");m(this,"redoStack");m(this,"worker");m(this,"control");m(this,"room");m(this,"viewId");m(this,"enableGlobal");m(this,"isTicking");m(this,"_undoTickerId");m(this,"scenePath");m(this,"tickStartStorerCache");m(this,"excludeIds",new Set);m(this,"onChangeScene",x.debounce(()=>{const i=this.control.viewContainerManager.getCurScenePath(this.viewId);if(i){const e=this.undoStack.filter(n=>n.scenePath===i).length,t=this.redoStack.filter(n=>n.scenePath===i).length;this.emitter.emitAsync("onCanUndoStepsUpdate",e,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",t,this.viewId)}},Ke.waitTime));const{control:e,internalMsgEmitter:t,viewId:n,enableGlobal:r}=i;this.control=e,this.emitter=t,Ke.MaxStackLength=this.control.pluginOptions.extras.undoRedo.maxStackLength||we.undoRedo.maxStackLength;const s=new wi,a=[],c=[];this.undoStack=s.createProxy(a,l=>{this.control.renderControl.isWritable&&this.handleArrayChange(l,Te.syncUndoStack)},mi.Undo),this.redoStack=s.createProxy(c,l=>{this.control.renderControl.isWritable&&this.handleArrayChange(l,Te.syncRedoStack)},mi.Redo),this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=n,this.enableGlobal=r}handleArrayChange(i,e){if(!this.collector||!this.enableGlobal)return;const{operation:t,oldValue:n,newValue:r}=i;let s,a;t==="delete"&&n?(s=n,a=n.id):t==="add"&&r&&(s=r,a=r.id),s&&a&&this.collector.dispatchUndoTicker({operation:e,syncType:t,viewId:this.viewId,undoTickerId:a,data:s})}get collector(){return this.control.collector}get undoTickerId(){return this._undoTickerId}get tmpTickStartStorerCache(){return this.tickStartStorerCache}get uid(){var i;return((i=this.control.collector)==null?void 0:i.uid)||""}addExcludeIds(i){if(this.isTicking)for(const e of i)this.excludeIds.add(e)}undoTickerStart(i,e){var t,n;if(this.collector&&(this.undoTickerId!==i||this.scenePath!==e)){this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const r=this.collector.transformKey(Z);this.excludeIds.add(r),this._undoTickerId=i,this.scenePath=e;const s=((t=this.collector)==null?void 0:t.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(x.cloneDeep(s)))}}undoTickerEnd(i,e){this.undoTickerId&&i===this.undoTickerId&&e===this.scenePath?this.undoTickerEndSync(i,this.viewId,e):(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear())}undoTickerEndSync(i,e,t,n=!0){var r,s;if(i===this.undoTickerId&&t===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][t])||{},c=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)),!0);c.size&&(this.undoStack.push({id:`${i}-${this.uid}`,data:x.cloneDeep(c),scenePath:t}),this.undoStack.length>Ke.MaxStackLength&&this.undoStack.shift(),n&&this.emitter.emitAsync("onCanUndoStepsUpdate",this.undoStack.length,this.viewId),this.redoStack.length&&(this.redoStack.length=0,n&&this.emitter.emitAsync("onCanRedoStepsUpdate",this.redoStack.length,this.viewId))),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}}transformToUndoStackItem(i){const e=[];for(const[t,n]of Object.entries(i)){const r=new Set;for(const[s,a]of Object.entries(n.data))r.add({key:s,dataType:a.dataType,data:a.data});e.push({id:t,scenePath:n.scenePath,data:r})}return e}pullServiceData(i){if(i){const{undoStack:e,redoStack:t}=i;if(e){const n=this.transformToUndoStackItem(e);for(let r=this.undoStack.length-1;r>=0;r--){const s=this.undoStack[r];n.findIndex(c=>c.id===s.id)===-1&&this.undoStack.customSplice(r,1)}for(const r of n){const s=this.undoStack.findIndex(a=>a.id===r.id);s!==-1?this.undoStack[s]=r:this.undoStack.customPush(r)}this.undoStack.sort((r,s)=>{const a=parseInt(r.id.split("-")[0]),c=parseInt(s.id.split("-")[0]);return a-c}),this.emitter.emitAsync("onCanUndoStepsUpdate",this.undoStack.length,this.viewId)}if(t){const n=this.transformToUndoStackItem(t);for(let r=this.redoStack.length-1;r>=0;r--){const s=this.redoStack[r];n.findIndex(c=>c.id===s.id)===-1&&this.redoStack.customSplice(r,1)}for(const r of n){const s=this.redoStack.findIndex(a=>a.id===r.id);s!==-1?this.redoStack[s]=r:this.redoStack.customPush(r)}this.redoStack.sort((r,s)=>{const a=parseInt(r.id.split("-")[0]);return parseInt(s.id.split("-")[0])-a}),this.emitter.emitAsync("onCanRedoStepsUpdate",this.redoStack.length,this.viewId)}}else this.clear()}undo(i){var r,s;let e;if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=((r=this.collector)==null?void 0:r.storage[this.viewId])&&((s=this.collector)==null?void 0:s.storage[this.viewId][i])||{},c=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)),!1),l=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(a)),!0);c.size===l.size?(this.undoStack.push({id:`${this.undoTickerId}-${this.uid}`,data:x.cloneDeep(c),scenePath:i}),this.undoStack.length>Ke.MaxStackLength&&this.undoStack.shift()):c.size&&!l.size&&(e={id:`${this.undoTickerId}-${this.uid}`,data:x.cloneDeep(c),scenePath:i}),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}if(e)this.refreshPlugin(e);else{let a=this.undoStack.length-1;for(;a>=0;){if(this.undoStack[a].scenePath===i){const l=this.undoStack[a];l&&(this.redoStack.push(l),l.data&&this.refreshPlugin(l)),this.undoStack.splice(a,1);break}a--}}const t=this.undoStack.filter(a=>a.scenePath===i).length,n=this.redoStack.filter(a=>a.scenePath===i).length;return this.emitter.emitAsync("onCanUndoStepsUpdate",t,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",n,this.viewId),t}redo(i){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===i){const s=this.redoStack[e];s&&(this.undoStack.push(s),s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const t=this.undoStack.filter(r=>r.scenePath===i).length,n=this.redoStack.filter(r=>r.scenePath===i).length;return this.emitter.emitAsync("onCanUndoStepsUpdate",t,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",n,this.viewId),n}clear(){this.clearUndo(),this.clearRedo()}clearUndo(){this.undoStack.length=0,this.emitter.emitAsync("onCanUndoStepsUpdate",this.undoStack.length,this.viewId)}clearRedo(){this.redoStack.length=0,this.emitter.emitAsync("onCanRedoStepsUpdate",this.redoStack.length,this.viewId)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){const i=this.control.viewContainerManager.getCurScenePath(this.viewId);if(i){const e=this.undoStack.filter(n=>n.scenePath===i).length,t=this.redoStack.filter(n=>n.scenePath===i).length;this.emitter.emitAsync("onCanUndoStepsUpdate",e,this.viewId),this.emitter.emitAsync("onCanRedoStepsUpdate",t,this.viewId)}}especialDiff(i,e,t,n){if(e===Le.Update)switch(t==null?void 0:t.toolsType){case T.Text:{if(n!=null&&n.opt&&(t!=null&&t.opt)){const{uid:s,workState:a,...c}=n==null?void 0:n.opt,{uid:l,workState:h,...u}=t==null?void 0:t.opt;if(i&&x.isEqual(c,u))return!0;n.opt.workState!==D.Done&&(n.opt.workState=D.Done),t.opt.workState!==D.Done&&(t.opt.workState=D.Done)}break}}else if(e===Le.Draw||e===Le.Delete)switch(t==null?void 0:t.toolsType){case T.Text:{if(t!=null&&t.opt){const s=t.opt.text;if(i&&!s)return!0;t.opt.workState!==D.Done&&(t.opt.workState=D.Done)}break}}return!1}diffFun(i,e,t=!0){const n=new Set,r=i.keys(),s=e.keys();for(const a of r){if(this.excludeIds.has(a))continue;const c=i.get(a),l=x.cloneDeep(e.get(a));if(c&&l){if(x.isEqual(l,c)||this.especialDiff(t,Le.Update,l,c))continue;n.add({dataType:Le.Update,key:a,data:[c,l]});continue}this.especialDiff(t,Le.Delete,c)||c&&n.add({dataType:Le.Delete,key:a,data:c})}for(const a of s){if(this.excludeIds.has(a))continue;const c=x.cloneDeep(e.get(a));if(c&&!i.has(a)){if(this.especialDiff(t,Le.Draw,c))continue;n.add({dataType:Le.Draw,key:a,data:c})}}return n}isDrawEffectiveScene(i,e){const{key:t}=i;return!e.includes(t)}isDeleteEffectiveScene(i,e){const{key:t}=i;return!!e.includes(t)}isOldEffectiveScene(i,e){const{key:t}=i;return!!e.includes(t)}isNewEffectiveScene(i,e){const{key:t}=i;return!!e.includes(t)}refreshPlugin(i,e=!1){var a,c,l,h,u,M,y,g,I,w,p,f,N,S,v,j,C,k,P,L,O;let t;const{scenePath:n}=i,r=i.data;if(!r||!this.collector)return;const s=x.cloneDeep(this.collector.storage);for(const A of r.values()){const{dataType:R,data:z,key:V}=A,_=this.collector.getStorageData(this.viewId,n),B=_&&Object.keys(_)||[];switch(R){case Le.Draw:if(t=e?this.isDrawEffectiveScene(A,B):this.isDeleteEffectiveScene(A,B),t)if(e&&!Array.isArray(z)){if((a=z.updateNodeOpt)!=null&&a.useAnimation&&(z.updateNodeOpt.useAnimation=!1),((c=this.collector)==null?void 0:c.getLocalId(V))===Z&&((l=this.collector)!=null&&l.isOwn(A.key))){const J=z.selectIds;if(J){const ie=B.filter(ne=>{var q,$;return((q=this.collector)==null?void 0:q.getLocalId(ne))===Z&&!(($=this.collector)!=null&&$.isOwn(ne))}).map(ne=>{var q;return(q=this.collector)==null?void 0:q.storage[this.viewId][n][ne]});let re=!1;for(const ne of ie)for(let q=0;q<J.length;q++)(h=ne==null?void 0:ne.selectIds)!=null&&h.includes(J[q])&&(delete J[q],re=!0);re&&(z.selectIds=J.filter(ne=>!!ne))}}(u=this.collector)==null||u.updateValue(A.key,z,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}else!e&&!Array.isArray(A.data)&&((M=this.collector)==null||M.updateValue(A.key,void 0,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s}));break;case Le.Delete:if(t=e?this.isDeleteEffectiveScene(A,B):this.isDrawEffectiveScene(A,B),t){if(e&&!Array.isArray(z))(y=this.collector)==null||y.updateValue(V,void 0,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s});else if(!e&&!Array.isArray(z)){if((g=z.updateNodeOpt)!=null&&g.useAnimation&&(z.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(A.key))===Z&&((w=this.collector)!=null&&w.isOwn(A.key))){const J=z.selectIds;if(J){const ie=B.filter(ne=>{var q,$;return((q=this.collector)==null?void 0:q.getLocalId(ne))===Z&&!(($=this.collector)!=null&&$.isOwn(ne))}).map(ne=>{var q;return(q=this.collector)==null?void 0:q.storage[this.viewId][n][ne]});let re=!1;for(const ne of ie)for(let q=0;q<J.length;q++)(p=ne==null?void 0:ne.selectIds)!=null&&p.includes(J[q])&&(delete J[q],re=!0);re&&(z.selectIds=J.filter(ne=>!!ne))}}(f=this.collector)==null||f.updateValue(A.key,A.data,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}}break;case Le.Update:if(t=e?this.isNewEffectiveScene(A,B):this.isOldEffectiveScene(A,B),t){if(e&&Array.isArray(z)&&z.length===2){const J=z[1];if((N=J.updateNodeOpt)!=null&&N.useAnimation&&(J.updateNodeOpt.useAnimation=!1),((S=this.collector)==null?void 0:S.getLocalId(A.key))===Z&&((v=this.collector)!=null&&v.isOwn(A.key))){const ie=J.selectIds;if(ie){const re=B.filter(q=>{var $,ue;return(($=this.collector)==null?void 0:$.getLocalId(q))===Z&&!((ue=this.collector)!=null&&ue.isOwn(q))}).map(q=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][n][q]});let ne=!1;for(const q of re)for(let $=0;$<ie.length;$++)q!=null&&q.selectIds&&((j=q.selectIds)!=null&&j.includes(ie[$]))&&(delete ie[$],ne=!0);ne&&(J.selectIds=ie.filter(q=>!!q))}}(C=this.collector)==null||C.updateValue(V,J,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}else if(!e&&Array.isArray(z)&&z.length===2){const J=z[0];if((k=J.updateNodeOpt)!=null&&k.useAnimation&&(J.updateNodeOpt.useAnimation=!1),((P=this.collector)==null?void 0:P.getLocalId(A.key))===Z&&((L=this.collector)!=null&&L.isOwn(A.key))){const ie=J.selectIds;if(ie){const re=B.filter(q=>{var $,ue;return(($=this.collector)==null?void 0:$.getLocalId(q))===Z&&!((ue=this.collector)!=null&&ue.isOwn(q))}).map(q=>{var $;return($=this.collector)==null?void 0:$.storage[this.viewId][n][q]});let ne=!1;for(const q of re)for(let $=0;$<ie.length;$++)q!=null&&q.selectIds&&q.selectIds.includes(ie[$])&&(delete ie[$],ne=!0);ne&&(J.selectIds=ie.filter(q=>!!q))}}(O=this.collector)==null||O.updateValue(A.key,J,{viewId:this.viewId,scenePath:n,isSync:!0,storage:s})}}break}}}};m(Ke,"sdkCallBack"),m(Ke,"MaxStackLength",we.undoRedo.maxStackLength),m(Ke,"waitTime",100);let Ni=Ke;function cp(o){return o instanceof TouchEvent||o instanceof window.TouchEvent||(o==null?void 0:o.touches)&&(o==null?void 0:o.touches.length)||(o==null?void 0:o.changedTouches)&&(o==null?void 0:o.changedTouches.length)}function Ut(o){return cp(o)&&(o.touches&&o.touches.length===1||o.changedTouches&&o.changedTouches.length===1)}function mo(o){return o.touches&&o.touches.length?{x:o.touches[0].pageX,y:o.touches[0].pageY}:o.changedTouches&&o.changedTouches.length?{x:o.changedTouches[0].pageX,y:o.changedTouches[0].pageY}:{x:o.pageX,y:o.pageY}}class gt{constructor(i){m(this,"internalMsgEmitter");m(this,"control");m(this,"mainView");m(this,"appViews",new Map);m(this,"undoTickerStart",(i,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.undoTickerStart(i,t.focusScenePath)});m(this,"undoTickerEnd",(i,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.undoTickerEnd(i,t.focusScenePath)});m(this,"addExcludeIds",(i,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.addExcludeIds(i)});const{control:e,internalMsgEmitter:t}=i;this.control=e,this.internalMsgEmitter=t,this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.on("forceUndoTickerEnd",this.undoTickerEnd),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds)}get worker(){return this.control.worker}getUndoTickerId(i){const e=this.getView(i);if(e&&e.displayer&&e.focusScenePath)return e.displayer.commiter.undoTickerId}undo(){const i=this.focuedView;let e=0;if(i){const t=i.focusScenePath;e=i.displayer.commiter.undo(t)||0}return e}redo(){const i=this.focuedView;let e=0;if(i){const t=i.focusScenePath;e=i.displayer.commiter.redo(t)||0}return e}validator(i,e,t){var s;const n=x.clone(i[e]),r=x.clone(t);e==="focusScenePath"&&t&&!x.isEqual(n,r)&&(this.control.internalSceneChange(i.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!x.isEqual(n,r)&&this.control.internalCameraChange(i.id,r)}destroyAppView(i,e=!1){const t=this.appViews.get(i);t&&(this.control.textEditorManager.clear(i,e),t.displayer.destroy(),this.appViews.delete(i))}createMianView(i){this.mainView=new Proxy(i,{set:(e,t,n)=>(this.worker.isActive&&this.validator(e,t,n),e[t]=n,!0)})}createAppView(i){const e=i.id,t=new Proxy(i,{set:(n,r,s)=>(this.worker.isActive&&this.validator(n,r,s),n[r]=s,!0)});this.appViews.set(e,t)}isAppView(i){return i!==he&&this.appViews.has(i)}getView(i){var e;return i===he?this.mainView:(e=this.appViews)==null?void 0:e.get(i)}getCurScenePath(i){const e=this.getView(i);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(i,e){var t;if(i===he&&this.mainView)this.mainView.focusScenePath=e;else{const n=i&&((t=this.appViews)==null?void 0:t.get(i))||void 0;n&&(n.focusScenePath=e)}}setViewData(i,e){var t;if(i===he&&this.mainView)this.mainView.viewData=e;else{const n=i&&((t=this.appViews)==null?void 0:t.get(i))||void 0;n&&(n.viewData=e)}}setFocuedViewId(i){var e;this.focuedViewId=i,i===he?this.focuedView=this.mainView:this.focuedView=i&&((e=this.appViews)==null?void 0:e.get(i))||void 0,this.worker.currentToolsData&&this.worker.currentToolsData.toolsType===T.Text&&this.activeTextEditor(i),this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(i,e){var n;let t;i===he?t=this.mainView:t=(n=this.appViews)==null?void 0:n.get(i),t&&(t.focusScenePath=e)}destroy(){var i;this.internalMsgEmitter.off("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.off("excludeIds",this.addExcludeIds),this.internalMsgEmitter.off("forceUndoTickerEnd",this.undoTickerEnd),(i=this.mainView)==null||i.displayer.destroy(),this.control.destroyMiniMap(he),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.worker.destroyViewWorker(e.id),this.control.destroyMiniMap(e.id)})}setFocuedViewCameraOpt(i){if(this.focuedView){const e=this.focuedView.cameraOpt;x.isEqual(e,i)||(this.focuedView.cameraOpt=i)}}transformToOriginPoint(i,e){const t=this.getView(e);if(t!=null&&t.viewData){const n=t.viewData.convertToPointOnScreen(i[0],i[1]);return[n.x,n.y]}return i}transformToScenePoint(i,e){const t=this.getView(e);if(t!=null&&t.viewData){const n=t.viewData.convertToPointInWorld({x:i[0],y:i[1]});return[n.x,n.y]}return i}render(i){var e,t,n,r,s,a,c,l,h,u,M,y,g,I,w,p,f;for(const N of i){const{rect:S,imageBitmap:v,isClear:j,isUnClose:C,drawCanvas:k,clearCanvas:P,viewId:L}=N,O=(e=this.getView(L))==null?void 0:e.displayer;if(O&&S){const{dpr:A,canvasBgRef:R,canvasFloatRef:z,canvasServiceFloatRef:V,canvasTopRef:_}=O,B=Math.floor(S.w*A),J=Math.floor(S.h*A),ie=S.x*A,re=S.y*A;if(j){switch(P){case $e.TopFloat:(n=(t=_==null?void 0:_.current)==null?void 0:t.getContext("2d"))==null||n.clearRect(ie,re,B,J);break;case $e.Float:(s=(r=z.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(ie,re,B,J);break;case $e.ServiceFloat:(c=(a=V.current)==null?void 0:a.getContext("2d"))==null||c.clearRect(ie,re,B,J);break;case $e.Bg:(h=(l=R.current)==null?void 0:l.getContext("2d"))==null||h.clearRect(ie,re,B,J);break}continue}if(k&&v)switch(k){case $e.TopFloat:(M=(u=_==null?void 0:_.current)==null?void 0:u.getContext("2d"))==null||M.drawImage(v,0,0,B,J,ie,re,B,J);break;case $e.Float:{(g=(y=z.current)==null?void 0:y.getContext("2d"))==null||g.drawImage(v,0,0,B,J,ie,re,B,J);break}case $e.ServiceFloat:{(w=(I=V.current)==null?void 0:I.getContext("2d"))==null||w.drawImage(v,0,0,B,J,ie,re,B,J);break}case $e.Bg:{(f=(p=R.current)==null?void 0:p.getContext("2d"))==null||f.drawImage(v,0,0,B,J,ie,re,B,J);break}}if(C)continue;v==null||v.close()}}}showFloatBar(i,e,t){const n=this.getView(i),r=n==null?void 0:n.displayer.vDom;r&&r.showFloatBar(e,t)}activeTextEditor(i){const e=this.getView(i),t=e==null?void 0:e.displayer.vDom;t&&t.activeTextEditor()}unActiveTextEditor(i){const e=this.getView(i),t=e==null?void 0:e.displayer.vDom;t&&t.unActiveTextEditor()}showFloatBarBtn(i,e){const t=this.getView(i),n=t==null?void 0:t.displayer.vDom;n&&n.showFloatBarBtn(e)}updateTextEditorInfo(i,e){const t=this.getView(i),n=t==null?void 0:t.displayer.vDom;n&&n.updateTextEditorInfo(e)}setActiveMiniMap(i,e){const t=this.getView(i),n=t==null?void 0:t.displayer.vDom;n&&n.setActiveMiniMap(e&&i||void 0)}}m(gt,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),m(gt,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"webgl2"}),m(gt,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class wo{constructor(i,e,t){m(this,"control");m(this,"internalMsgEmitter");m(this,"commiter");m(this,"cachePoint");m(this,"cacheCursorPoint");m(this,"active",!0);m(this,"toolsKey");m(this,"activePointers",new Set);m(this,"currentDrawingPointerId");m(this,"cursorMouseMove");m(this,"cursorMouseMoveDebounced");m(this,"cursorMouseMoveThrottled");m(this,"cursorMouseMoveFun");m(this,"_transferControlToOffscreenCanvas");m(this,"cursorMouseLeave",()=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled.cancel():this.cursorMouseMoveDebounced.cancel(),this.cacheCursorPoint=[void 0,void 0],this.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)});m(this,"mousedown",i=>{var e;if(this.active&&i.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(i);this.cachePoint=t,t&&(this.worker.originalEventLintener(D.Start,t,this.viewId),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseleave",this.mouseup,!1),document.addEventListener("mouseup",this.mouseup,!1))}});m(this,"mousemove",i=>{if(this.active&&this.viewId){const e=this.getPoint(i);if(this.cachePoint=e,this.checkConsumeCount())return;e&&this.worker.originalEventLintener(D.Doing,e,this.viewId)}});m(this,"mouseup",i=>{if(this.active&&i.button===0&&this.viewId){const e=this.getPoint(i)||this.cachePoint;e?(this.worker.originalEventLintener(D.Done,e,this.viewId).finally(()=>{document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1)}),this.cachePoint=void 0):(document.removeEventListener("mouseleave",this.mouseup,!1),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1))}});m(this,"touchstart",i=>{var e;if(this.active){if(!Ut(i)){this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId);return}if(this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(i);this.cachePoint=t,t&&(this.worker.originalEventLintener(D.Start,t,this.viewId),document.addEventListener("touchmove",this.touchmove,!1),document.addEventListener("touchend",this.touchend,!1))}}});m(this,"touchmove",i=>{if(this.active){if(!Ut(i)){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(i);if(this.cachePoint=e,this.checkConsumeCount())return;e&&this.worker.originalEventLintener(D.Doing,e,this.viewId)}}});m(this,"touchend",i=>{if(this.active){if(!Ut(i)||!this.worker.isAbled()){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(i)||this.cachePoint;e?(this.worker.originalEventLintener(D.Done,e,this.viewId).finally(()=>{document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1)}),this.cachePoint=void 0):(document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1))}}});m(this,"keydown",i=>{i.stopPropagation(),i.stopImmediatePropagation(),this.control.hotkeyManager.colloctHotkey(i)});m(this,"pointerdown",i=>{var e;if(this.active){if(i.pointerType==="touch"&&(this.activePointers.add(i.pointerId),this.activePointers.size>1)){this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId),document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1),this.currentDrawingPointerId=void 0,this.cachePoint=void 0,this.activePointers.clear();return}if(i.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(i);this.cachePoint=t,t&&(this.currentDrawingPointerId=i.pointerId,this.worker.originalEventLintener(D.Start,t,this.viewId),document.addEventListener("pointermove",this.pointermove,!1),document.addEventListener("pointerup",this.pointerup,!1),document.addEventListener("pointercancel",this.pointerup,!1))}}});m(this,"pointermove",i=>{if(this.active){if(i.pointerType==="touch"){if(this.activePointers.size>1){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}if(this.currentDrawingPointerId!==void 0&&i.pointerId!==this.currentDrawingPointerId)return;if(!this.worker.isAbled()){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId);return}}if(this.viewId){const e=this.getPoint(i);if(this.cachePoint=e,this.checkConsumeCount())return;e&&this.worker.originalEventLintener(D.Doing,e,this.viewId)}}});m(this,"pointerup",i=>{if(this.active&&(i.pointerType==="touch"&&this.activePointers.delete(i.pointerId),!(this.currentDrawingPointerId!==void 0&&i.pointerId!==this.currentDrawingPointerId))){if(this.currentDrawingPointerId===void 0){document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1);return}if(i.pointerType==="touch"&&(this.activePointers.size>0||!this.worker.isAbled())){this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId),document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1),this.cachePoint=void 0,this.currentDrawingPointerId=void 0;return}if(i.button===0&&this.viewId){const e=this.getPoint(i)||this.cachePoint;e?(this.worker.originalEventLintener(D.Done,e,this.viewId).finally(()=>{document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1)}),this.cachePoint=void 0,this.currentDrawingPointerId=void 0):(document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1),this.currentDrawingPointerId=void 0)}i.pointerType==="touch"&&this.activePointers.size===0&&this.activePointers.clear()}});this.control=i,this.internalMsgEmitter=e;const n={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:t,enableGlobal:!!this.control.pluginOptions.extras.undoRedo.enableGlobal};this.commiter=new Ni(n),this.cursorMouseMoveFun=r=>{const s=this.getPoint(r);this.cacheCursorPoint&&x.isEqual(s,this.cacheCursorPoint)||(this.cacheCursorPoint=s,s&&this.worker.sendCursorEvent(s,this.viewId))},this.cursorMouseMoveDebounced=x.debounce(this.cursorMouseMoveFun,this.moveDelayTime,{trailing:!0}),this.cursorMouseMoveThrottled=x.throttle(this.cursorMouseMoveFun,this.moveDelayTime,{leading:!0}),this.cursorMouseMove=r=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled(r):this.cursorMouseMoveDebounced(r)}}get moveDelayTime(){var i,e;return((e=(i=this.control.pluginOptions.extras)==null?void 0:i.cursor)==null?void 0:e.moveDelayTime)??we.cursor.moveDelayTime}setTransferControlToOffscreenCanvas(i){this._transferControlToOffscreenCanvas={bgCanvas:i.bgCanvas.transferControlToOffscreen(),serviceCanvas:i.serviceCanvas.transferControlToOffscreen(),localCanvas:i.localCanvas.transferControlToOffscreen()}}get transferControlToOffscreenCanvas(){return this._transferControlToOffscreenCanvas}get worker(){return this.control.worker}bindToolsClass(){var n,r;const i=(r=(n=this.worker)==null?void 0:n.currentToolsData)==null?void 0:r.toolsType,e=this.control.renderControl.isWritable,t=this.worker.isAbled();switch(i){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Eraser:case T.PencilEraser:case T.BitMapEraser:case T.Selector:this.eventTragetElement&&(this.eventTragetElement.className=e&&t?`netless-whiteboard ${i===T.Selector?"cursor-selector":i===T.Text?"cursor-text":i===T.Eraser||i===T.PencilEraser||i===T.BitMapEraser?"cursor-eraser":i===T.Pencil||i===T.LaserPen?"cursor-pencil":"cursor-arrow"}`:"netless-whiteboard");break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}get parentElement(){var i;return(i=this.eventTragetElement)==null?void 0:i.parentElement}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([ee.Cursor,this.viewId])}getPoint(i){const e=mo(i);if(e&&x.isNumber(e.x)&&x.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}getActive(){return this.active}setActive(i){this.active=i}focusElement(){var i;(i=this.eventTragetElement)==null||i.focus()}async stopEventHandler(){this.cachePoint&&(await this.worker.originalEventLintener(D.Done,this.cachePoint,this.viewId).finally(()=>{document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointerup,!1)}),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0)}getTranslate(i){const t=(i.style.WebkitTransform||getComputedStyle(i,"").getPropertyValue("-webkit-transform")||i.style.transform||getComputedStyle(i,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=t&&parseInt(t[0])||0,r=t&&parseInt(t[1])||0;return[n,r]}getContainerOffset(i,e){var r;const t=this.getTranslate(i);let n={x:e.x+i.offsetLeft-i.scrollLeft+t[0],y:e.y+i.offsetTop-i.scrollTop+t[1]};return(r=i.offsetParent)!=null&&r.nodeName&&i.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(i.offsetParent,n)),n}bindDisplayerEvent(i){i.addEventListener("pointerdown",this.pointerdown,!1),i.addEventListener("mousemove",this.cursorMouseMove,!1),i.addEventListener("mouseleave",this.cursorMouseLeave,!1),i.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(i){i.removeEventListener("pointerdown",this.pointerdown,!1),document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointerleave",this.pointerup,!1),i.removeEventListener("mousemove",this.cursorMouseMove,!1),i.removeEventListener("mouseleave",this.cursorMouseLeave,!1),i.removeEventListener("keydown",this.keydown,!0)}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get maxDrawCount(){return this.control.pluginOptions.extras.bezier.maxDrawCount||we.bezier.maxDrawCount}checkConsumeCount(){const i=this.worker.getConsumeCount();return this.cachePoint&&this.toolsKey&&this.toolsKey===T.Pencil&&i>this.maxDrawCount?(this.stopEventHandler().finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",ji.longPencil,this.viewId)}),!0):!1}}class lp extends wo{constructor(e,t,n){super(t,n,e);m(this,"_viewId");this._viewId=e}get viewId(){return this._viewId}setViewId(e){this._viewId=e}}class No extends wo{constructor(i,e){super(i,e,he)}get viewId(){return he}updateSize(){this.setCanvassStyle()}destroy(){super.destroy(),this.control.cursor.destroy()}}const up="index-module__Container__nLsM3",hp="index-module__CanvasBox__j2Xe-",dp="index-module__FloatCanvas__d1YR7",gp="index-module__TopFloatCanvas__7IaCw",Mp="index-module__CanvasBoxSub__hcMeK",fp="index-module__SnapshotBox__--eeE",pp="index-module__FloatBar__cm-EL",yp="index-module__RotateBtn__HSSkf",Ip="index-module__ResizeBtn__yjvda",mp="index-module__CursorBox__2UHvI",wp="index-module__TextEditorContainer__Qm8KC",Np="index-module__ResizeTowBox__HOllX",Tp="index-module__FloatBarBtn__FJrOG",ze={Container:up,CanvasBox:hp,FloatCanvas:dp,TopFloatCanvas:gp,CanvasBoxSub:Mp,SnapshotBox:fp,FloatBar:pp,RotateBtn:yp,ResizeBtn:Ip,CursorBox:mp,TextEditorContainer:wp,ResizeTowBox:Np,FloatBarBtn:Tp},vp={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 je(o){return vp[o]}const Cp=o=>{const{workIds:i,mananger:e}=o;return d.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:t=>{t.cancelable&&t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation(),oe.emitMethod(ee.MainEngine,W.DeleteNode,{workIds:i||[Z],viewId:e.viewId})}},d.createElement("img",{alt:"icon",src:je("delete")}))},Sp=o=>{const{workIds:i,viewId:e}=o;return d.createElement("div",{className:"button normal-button",onPointerUp:t=>{t.stopPropagation(),oe.emitMethod(ee.MainEngine,W.CopyNode,{workIds:i||[Z],viewId:e})}},d.createElement("img",{alt:"icon",src:je("duplicate")}))},xn=o=>{const{icon:i,onPointerUpHandler:e}=o;return d.createElement("div",{className:"button normal-button",onPointerUp:e},d.createElement("img",{src:je(i)}))},jp=o=>{const{open:i,setOpen:e,floatBarRef:t}=o,{floatBarData:n,mananger:r}=d.useContext(Ie),[s,a]=d.useState([]),c=d.useMemo(()=>{if(t!=null&&t.current&&x.isNumber(n==null?void 0:n.y)&&(r!=null&&r.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>180){const u={};return u.top="inherit",u.bottom=50,u}else if(!t.current.offsetTop&&(r==null?void 0:r.height)-t.current.offsetTop-n.y<120){const u={};return u.top="inherit",u.bottom=50,u}}},[t==null?void 0:t.current,n,r]),l=d.useMemo(()=>i?d.createElement("div",{className:"image-layer-menu",style:c},d.createElement(xn,{icon:"to-top",onPointerUpHandler:u=>{u.stopPropagation(),oe.emitMethod(ee.MainEngine,W.ZIndexNode,{workIds:[Z],layer:zt.Top,viewId:r==null?void 0:r.viewId})}}),d.createElement(xn,{icon:"to-bottom",onPointerUpHandler:u=>{u.stopPropagation(),oe.emitMethod(ee.MainEngine,W.ZIndexNode,{workIds:[Z],layer:zt.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[i,c]),h=u=>{u.stopPropagation(),u.nativeEvent.stopImmediatePropagation(),e(!i)};return d.useEffect(()=>{x.isEqual(n==null?void 0:n.selectIds,s)||n!=null&&n.selectIds&&!x.isEqual(n==null?void 0:n.selectIds,s)&&(a(n==null?void 0:n.selectIds),e(!1))},[i,n,s,e]),d.createElement("div",{className:`button normal-button ${i&&"active"}`,onPointerUp:h},l,d.createElement("img",{alt:"icon",src:je(i?"layer-pressed":"layer")}))},Pt=o=>{o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()},Dp=()=>d.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},d.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),To=o=>{const{activeColor:i,onPointerUpHandler:e}=o;return d.createElement("div",{className:`font-color-button ${i==="transparent"?"active":""}`,onPointerUp:e},d.createElement("div",{className:"circle none"}))},ii=o=>{const{color:i,activeColor:e,onPointerUpHandler:t}=o;return d.createElement("div",{className:`font-color-button ${i===e?"active":""}`,onPointerUp:t},d.createElement("div",{className:"circle",style:{backgroundColor:Se(i,1)}}))},ni=o=>{const{opacity:i,activeColor:e,setCurOpacity:t}=o,[n,r]=d.useState({x:108,y:0}),s=d.useRef(0);if(d.useEffect(()=>{r({x:i*100+8,y:0})},[]),!e)return null;const a=(u,M)=>{const y=Math.min(Math.max(u-8,0),100)/100;(i!==y||M===D.Done)&&t(y,e,M)},c=(u,M)=>{M.x!==(n==null?void 0:n.x)&&r({x:M.x,y:0}),!s.current&&(s.current=setTimeout(()=>{s.current=0,a(M.x,D.Doing)},100))},l=()=>{t(i,e,D.Start)},h=(u,M)=>{M.x!==(n==null?void 0:n.x)&&r({x:M.x,y:0}),s.current&&(clearTimeout(s.current),s.current=0),a(M.x,D.Done)};return d.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:u=>{s.current&&(clearTimeout(s.current),s.current=0);const M=u.nativeEvent.offsetX,y=Math.min(Math.max(M-12,0),100)/100;r({x:y*100+8,y:0}),t(y,e,D.Done)}},d.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Se(e,0)}, ${Se(e,1)})`}}),d.createElement("div",{className:"range-opacity"},d.createElement(ft,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:h},d.createElement("div",{className:"circle",style:{backgroundColor:Se(e,i)},onPointerUp:Pt}))))},xp=o=>{const{min:i,max:e,activeNumber:t,setActiveNumber:n,color:r}=o,[s,a]=d.useState({x:108,y:0}),c=d.useRef(0);if(d.useEffect(()=>{const y=Math.ceil((t-i)/(e-i)*100)+8;a({x:y,y:0})},[]),!t)return null;const l=(y,g)=>{const I=Math.ceil(Math.max(y-8,0)/100*(e-i)+i);(t!==I||g===D.Done)&&n(I,g)},h=(y,g)=>{g.x!==(s==null?void 0:s.x)&&a({x:g.x,y:0}),!c.current&&(c.current=setTimeout(()=>{c.current=0,l(g.x,D.Doing)},100))},u=()=>{n(t,D.Start)},M=(y,g)=>{g.x!==(s==null?void 0:s.x)&&a({x:g.x,y:0}),c.current&&(clearTimeout(c.current),c.current=0),l(g.x,D.Done)};return d.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:y=>{c.current&&(clearTimeout(c.current),c.current=0);const g=y.nativeEvent.offsetX,I=Math.ceil(Math.max(g-12,0)/100*(e-i)+i),w=Math.ceil((I-i)/(e-i)*100)+8;a({x:w,y:0}),n(I,D.Done)}},d.createElement("div",{className:"range-color",style:{backgroundColor:r}}),d.createElement("div",{className:"range-opacity"},d.createElement(ft,{bounds:"parent",axis:"x",position:s,onDrag:h,onStart:u,onStop:M},d.createElement("div",{className:"circle",style:{backgroundColor:r},onPointerUp:Pt},d.createElement("div",{className:"range-opacity-data-icon"},t)))))},zp=o=>{const{useStroke:i,color:e,activeStrokeType:t,setStrokeType:n}=o;return d.createElement("div",{className:"stroke-type-box"},!!i&&d.createElement("div",{className:`stroke-type-box-item Stroke ${t===fe.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{n(fe.Stroke)}}),d.createElement("div",{className:`stroke-type-box-item Normal ${t===fe.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(fe.Normal)}}),d.createElement("div",{className:`stroke-type-box-item Dotted ${t===fe.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(fe.Dotted)}}),d.createElement("div",{className:`stroke-type-box-item LongDotted ${t===fe.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(fe.LongDotted)}}))},Ap=o=>{const{open:i,setOpen:e,floatBarRef:t}=o,{floatBarData:n,floatBarColors:r,mananger:s,setFloatBarData:a}=d.useContext(Ie),[c,l]=d.useState(),[h,u]=d.useState(1);d.useEffect(()=>{if(n!=null&&n.strokeColor){const[f,N]=ti(n.strokeColor);l(f),u(N)}},[n]);const M=d.useMemo(()=>{if(t!=null&&t.current&&n&&x.isNumber(n==null?void 0:n.y)&&(s!=null&&s.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!t.current.offsetTop&&(s==null?void 0:s.height)-t.current.offsetTop-n.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[n,t,s==null?void 0:s.height]),y=d.useMemo(()=>d.createElement(ni,{key:"strokeColors",opacity:h,activeColor:c,setCurOpacity:(f,N,S)=>{u(f);const v=Se(N,f);n!=null&&n.strokeColor&&a({strokeColor:v}),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],strokeColor:v,workState:S,viewId:s==null?void 0:s.viewId})}}),[h,c,n==null?void 0:n.strokeColor,s==null?void 0:s.viewId,a]),g=d.useMemo(()=>c&&n&&n.thickness?d.createElement(xp,{key:"strokeThickness",min:Math.min(n.thickness,(s==null?void 0:s.control.pluginOptions.extras.strokeWidth.min)||we.strokeWidth.min),max:Math.max(n.thickness,(s==null?void 0:s.control.pluginOptions.extras.strokeWidth.max)||we.strokeWidth.max),activeNumber:n.thickness,setActiveNumber:(f,N)=>{n!=null&&n.thickness&&a({thickness:f}),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],thickness:f,workState:N,viewId:s==null?void 0:s.viewId})},color:c}):null,[c,n,s==null?void 0:s.control.pluginOptions.extras.strokeWidth.max,s==null?void 0:s.control.pluginOptions.extras.strokeWidth.min,s==null?void 0:s.viewId,a]),I=d.useMemo(()=>c&&n&&(n!=null&&n.strokeType)?d.createElement(zp,{key:"strokeType",useStroke:n==null?void 0:n.useStroke,activeStrokeType:n.strokeType,setStrokeType:f=>{n.strokeType&&a({strokeType:f}),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],strokeType:f,workState:D.Done,viewId:s==null?void 0:s.viewId})},color:c}):null,[c,n,s==null?void 0:s.viewId,a]),w=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:M,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},I,g,d.createElement("div",{className:"font-colors-line"}),r.concat().map((f,N)=>{const S=Lt(...f);return d.createElement(ii,{key:N,color:S,activeColor:c,onPointerUpHandler:v=>{v.stopPropagation(),l(S);const j=Se(S,h);n!=null&&n.strokeColor&&(n.strokeColor=j,a({strokeColor:j})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],workState:D.Done,strokeColor:j,viewId:s==null?void 0:s.viewId})}})}),y):null,[i,M,I,g,r,y,c,h,n,s==null?void 0:s.viewId,a]),p=d.useMemo(()=>c?d.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Se(c,h)}},d.createElement("div",{className:"circle"})):null,[c,h]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!i)}},p,w)},bp=o=>{const{open:i,setOpen:e,floatBarRef:t}=o,{floatBarData:n,floatBarColors:r,mananger:s,setFloatBarData:a}=d.useContext(Ie),[c,l]=d.useState(),[h,u]=d.useState(1);d.useEffect(()=>{if(n!=null&&n.fillColor){const[w,p]=(n==null?void 0:n.fillColor)==="transparent"&&["transparent",1]||ti(n.fillColor);l(w),u(p)}},[n]);const M=d.useMemo(()=>{if(t!=null&&t.current&&x.isNumber(n==null?void 0:n.y)&&(s!=null&&s.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>200){const w={};return w.top="inherit",w.bottom=50,w}else if(!t.current.offsetTop&&(s==null?void 0:s.height)-t.current.offsetTop-n.y<140){const w={};return w.top="inherit",w.bottom=50,w}}},[t,n,s==null?void 0:s.height]),y=d.useMemo(()=>c&&c!=="transparent"?d.createElement(ni,{key:"fillColors",opacity:h||0,activeColor:c,setCurOpacity:(w,p,f)=>{u(w);const N=Se(p,w);n!=null&&n.fillColor&&(n.fillColor=N,a({fillColor:N})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],fillColor:c&&Se(p,w),workState:f,viewId:s==null?void 0:s.viewId})}}):null,[c,h,n,s==null?void 0:s.viewId,a]),g=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:M,onPointerUp:w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation()}},d.createElement(To,{activeColor:c,onPointerUpHandler:w=>{w.stopPropagation(),l("transparent");const p="transparent";n!=null&&n.fillColor&&(n.fillColor=p,a({fillColor:p})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],workState:D.Done,fillColor:p,viewId:s==null?void 0:s.viewId})}}),r.map((w,p)=>{const f=Lt(...w);return d.createElement(ii,{key:p,color:f,activeColor:c,onPointerUpHandler:N=>{N.cancelable&&N.preventDefault(),N.stopPropagation(),l(f);const S=Se(f,h);n!=null&&n.fillColor&&(n.fillColor=S,a({fillColor:S})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:[Z],workState:D.Done,fillColor:S,viewId:s==null?void 0:s.viewId})}})}),y):null,[i,M,c,r,y,n,s==null?void 0:s.viewId,a,h]),I=d.useMemo(()=>{const w=c&&c!=="transparent"&&Se(c,h)||"transparent";return d.createElement("div",{className:"color-bar-fill"},d.createElement("div",{className:"circle",style:{backgroundColor:w}}))},[c,h]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),e(!i)}},I,g)},kp=o=>{const{open:i,setOpen:e,textOpt:t,workIds:n,floatBarRef:r}=o,{floatBarColors:s,mananger:a,setFloatBarData:c,floatBarData:l}=d.useContext(Ie),[h,u]=d.useState(),[M,y]=d.useState(1);d.useEffect(()=>{if(t!=null&&t.fontColor){const[f,N]=(t==null?void 0:t.fontColor)==="transparent"&&["transparent",0]||ti(t.fontColor);u(f),y(N)}},[t==null?void 0:t.fontColor]);const g=d.useMemo(()=>{if(r!=null&&r.current&&l&&x.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+l.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-l.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[r,l,a==null?void 0:a.height]),I=d.useMemo(()=>h&&h!=="transparent"?d.createElement(ni,{key:"fontColors",opacity:M,activeColor:h,setCurOpacity:(f,N,S)=>{y(f);const v=Se(N,f);l!=null&&l.textOpt&&(l.textOpt.fontColor=v,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],fontColor:h&&v,workState:S,viewId:a==null?void 0:a.viewId})}}):null,[c,h,M,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,n]),w=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},s.map((f,N)=>{const S=Lt(...f);return d.createElement(ii,{key:N,color:S,activeColor:h,onPointerUpHandler:v=>{v.stopPropagation(),u(S);const j=Se(S,M);l!=null&&l.textOpt&&(l.textOpt.fontColor=j,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],workState:D.Done,fontColor:j,viewId:a==null?void 0:a.viewId})}})}),I):null,[c,i,s,I,h,M,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),p=d.useMemo(()=>{const f=h&&h!=="transparent"&&Se(h,M)||"transparent";return d.createElement("div",{className:"color-bar"},d.createElement("div",{className:"color-bar-color",style:{backgroundColor:f}}))},[h,M]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!i)}},d.createElement("img",{alt:"icon",src:je("font-colors")}),p,w)},Ep=o=>{const{open:i,setOpen:e,textOpt:t,workIds:n,floatBarRef:r}=o,{floatBarColors:s,mananger:a,setFloatBarData:c,floatBarData:l}=d.useContext(Ie),[h,u]=d.useState(),[M,y]=d.useState(1);d.useEffect(()=>{if(t!=null&&t.fontBgColor){const[f,N]=(t==null?void 0:t.fontBgColor)==="transparent"&&["transparent",1]||ti(t.fontBgColor);u(f),y(N)}},[t==null?void 0:t.fontBgColor]);const g=d.useMemo(()=>{if(r!=null&&r.current&&l&&x.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+l.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-l.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[r,l,a==null?void 0:a.height]),I=d.useMemo(()=>h&&h!=="transparent"?d.createElement(ni,{key:"fontBgColor",opacity:M||0,activeColor:h,setCurOpacity:(f,N,S)=>{y(f);const v=Se(N,f);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=v,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],fontBgColor:h&&Se(N,f),workState:S,viewId:a==null?void 0:a.viewId})}}):null,[h,M,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,c]),w=d.useMemo(()=>i?d.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},d.createElement(To,{activeColor:h,onPointerUpHandler:f=>{f.stopPropagation();const N="transparent";u(N),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=N,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],workState:D.Done,fontBgColor:N,viewId:a==null?void 0:a.viewId})}}),s.map((f,N)=>{const S=Lt(...f);return d.createElement(ii,{key:N,color:S,activeColor:h,onPointerUpHandler:v=>{v.stopPropagation(),u(S);const j=Se(S,M);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=j,c({textOpt:l.textOpt})),oe.emitMethod(ee.MainEngine,W.SetColorNode,{workIds:n||[Z],workState:D.Done,fontBgColor:Se(S,M),viewId:a==null?void 0:a.viewId})}})}),I):null,[c,i,s,I,M,h,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),p=d.useMemo(()=>{const f=h&&h!=="transparent"&&Se(h,M)||"transparent";return d.createElement("div",{className:"color-bar",style:{marginTop:0}},d.createElement("div",{className:"color-bar-color",style:{backgroundColor:f}}))},[h,M]);return d.createElement("div",{className:`button normal-button font-colors-icon ${i&&"active"}`,onPointerUp:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!i)}},d.createElement(Dp,null),p,w)},Lp=o=>{const{bold:i,setBold:e,workIds:t,viewId:n}=o,r=s=>{const a=i==="bold"?"normal":"bold";s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,bold:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i==="bold"?"bold-active":"bold")}))},Pp=o=>{const{underline:i,setUnderline:e,workIds:t,viewId:n}=o,r=s=>{const a=!i;s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,underline:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i?"underline-active":"underline")}))},Op=o=>{const{lineThrough:i,setLineThrough:e,workIds:t,viewId:n}=o,r=s=>{const a=!i;s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,lineThrough:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i?"line-through-active":"line-through")}))},Rp=o=>{const{italic:i,setItalic:e,workIds:t,viewId:n}=o,r=s=>{const a=i==="italic"?"normal":"italic";s==null||s.stopPropagation(),e(a),oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:t,viewId:n,italic:a})};return d.createElement("div",{className:"font-style-button",onPointerUp:r},d.createElement("img",{alt:"icon",src:je(i==="italic"?"italic-active":"italic")}))},Yp=o=>{const{open:i,setOpen:e,textOpt:t,workIds:n,style:r,floatBarRef:s}=o,{mananger:a,floatBarData:c}=d.useContext(Ie),[l,h]=d.useState("normal"),[u,M]=d.useState("normal"),[y,g]=d.useState(!1),[I,w]=d.useState(!1);d.useEffect(()=>{t!=null&&t.bold&&h(t.bold),x.isBoolean(t==null?void 0:t.underline)&&g(t.underline||!1),x.isBoolean(t==null?void 0:t.lineThrough)&&w(t.lineThrough||!1),t!=null&&t.italic&&M(t.italic)},[t]);const p=d.useMemo(()=>{if(r&&(s!=null&&s.current)&&x.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>180){const N={};return N.top="inherit",N.bottom=50,N}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<120){const N={};return N.top="inherit",N.bottom=50,N}}},[r,s==null?void 0:s.current,c,a]),f=d.useMemo(()=>i?d.createElement("div",{className:"font-style-menu",style:p,onPointerUp:N=>{N.stopPropagation(),N.nativeEvent.stopImmediatePropagation()}},d.createElement(Lp,{workIds:n||[Z],bold:l,setBold:h,viewId:a==null?void 0:a.viewId}),d.createElement(Pp,{workIds:n||[Z],underline:y,setUnderline:g,viewId:a==null?void 0:a.viewId}),d.createElement(Op,{workIds:n||[Z],lineThrough:I,setLineThrough:w,viewId:a==null?void 0:a.viewId}),d.createElement(Rp,{workIds:n||[Z],italic:u,setItalic:M,viewId:a==null?void 0:a.viewId})):null,[i,n,l,a==null?void 0:a.viewId,y,I,u,p]);return d.createElement("div",{className:`button normal-button ${i&&"active"}`,onPointerUp:N=>{N.stopPropagation(),N.nativeEvent.stopImmediatePropagation(),e(!i)}},d.createElement("img",{alt:"icon",src:je(i?"font-style-active":"font-style")}),f)},He=Object.freeze([12,14,18,24,36,48,64,80,144,288]),ut=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Up=new Map([["selector","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKeSURBVHgB3VTLi1JhFD86zlQ4ysxSXAy1GWYZzMxmYAhHagRB/QN8FLqPFq4FIQhXkS6kTQ4t2ilIKEWgSS0SmVpIm0BdaBJSaOP78XU+PXey6+saburAD+73uL/feX0H4H81GQdj7D7ilrCGFRonk3c6nXvhcJiFQiGWy+Xy/X7/WbPZ1K1KkBOsl0qlO36/n+3t7Q1hs9kYF+WC3W73MTpxc1lBmej7KuJaoVDInZ6eqsWXDw4OwGKxwPHx8Se1Wn1Wr9cjW1tbOTxi9D9bJCJHXEFslsvlR263+246nYZZptPpQK/Xg8lkSvZ6vbNGo5EgQRCLiSPhIqpoNHobo3keCARgkalUKjg5ORlGuL+/n8T6PVAqlefjYmKRdYQSsZ3P5z8aDAYVLGFarRbi8fhbhUKhx2VPEJGP3eEbfTrs4MUwr4EU49FYrVbweDy1SqXyipy95FaI7g8QXS6SyWReHx4e2ubVBc+HtTk6OjqvVqtvvF7vi0gkUiSByyyJ21BGwpswJ2Vmsxlw/0Kj0bxMJBJJl8vFPWkhGogLQoeyMhEJo2jGUzYRjcPh+Op0Oq2pVOoHkXE0SahF/w+E+3KYNEaX2pSyiSiKxeJTFPiGyyriO6FKEUgSESLp4ht4bzQaf4pFYrHYO/ysEXGNyJtjKRqM/zNNhFuf0B7vst3dXdjZ2Yn4fL4vRFwn8jaMGqYPU179LBEGf3bZcNNutwPOtScwKnCLPJ9KLMWEh7mNuIFdVsNXzbBNP+D6Ou1vwAqm8hqMWlmbzWYf4mz6HAwGzbjWwGgqrEklmucJT+UGCfG3wiPjueeNwGvB0zkAid7OMmF8CyOck/I6NJcR4KZYcM6J2vCbUGhvyQIA0gonzCEZkQud9Fcd9W/bL57cJu3lkjuNAAAAAElFTkSuQmCC"],["pencil","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ2SURBVHgB7ZXPqxJRFMfvjI4F+cqkTcrjge9B+B+0LJQ27lq4ijZprly6DaF1COKPjYRrVy0CF/aof6Baa6ChOPkLFcdMm1+dM93RafzxZuptgnfgC3ecO+dzz497JOTKNsZMp9OAoihvZFku4xp/I5dsbL/fP221Wl/D4bCKwnWn0znDd+SSDE/N6ZBgMKjJBNuKzC4dHTgQ5PF4bququn7R7XZJPB4/kSTpHcBOiQlmJ6cMpCvAcdz5ZDJhF4tF1u12v4jFYkc8z683+f1+Uq1W38K+x/AogVQ7ETF4SnB+Ho1GTxKJxDFC2u32q1KpJPh8vvVGjHK5XM4xahv+tYgRcranJrNarfay2WwKoVBIRTUajW42m70P390EOYmFrOEGdhfECEMIwur1Og+p5VOp1CP47piCOB3EXBBJAIuLRcZi7zKsSaVSEbxe70N4FEEL0AyE6VuBZEJD2wmyAkHDmoxGIwGW36ljBP2gUEXf5/wXCDZBsVjky+XyUwpCyBL0k0ai7gNp3WUVUigUvgHoWSaTaRoi2YJojk1r52q1eh2JRJ5YgUB3Pc/n83WyXRPV/A1rWrtgSAZsQL6Q3ynTI1F2QdCMqXNQEGsDMqMgrMt6ChwCaXcGYdBFjA3InELkQxBCtkcEI4riHyPFCMnlcnEKMbYzQhRi0TCKa6A76XT6wWAweD8ejz8Oh8PPcEc+9Xq9D8lkMgLv74Hugo5ALmJzlumG4+IG6BZ1dJ06wtPqN14gmza2FYljD1SljrCTsAaYpjnZFP7CmpADEel/ai4qffLiqSUKFSlEP8xfgYwwlmzyr1KYHoUtgBU4Y9D/Y78AxCeE/aWoyrkAAAAASUVORK5CYII="],["eraser","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANKSURBVHgB1VTdS5NhFD/7iuXa8KNw7SK/IjBYo13soqvEITENtj9AwZiCOCTvQrNWF9rFFPGLrC1iF10Oiy68mBSUF2KB4YabhKKyTfFCc+3Lzb2ds72LsfbxCkZ04Mf7Puc5z/k95+M5AP+R8OAvCW9nZ6cyHo8/SSaTc4RQKKQ+S0JyxFtbW6va39//ZjKZmMbGRkar1TJOp5MhYtwXwBkQkgMROnyXIcmGw+FgYrHY00JkQm4cqYPCaDQ6ZrFY7i4sLPxhMDg4SJ8hTOOWRCJ5jf8npyUiEgE6eGy1Wk12u72gIZHJZDLr4eHhVnl5+YdsslL5pH1+JBIx22y2h9PT01BKpFIpLC4ufhKJRFpcxhEM6fmlSMLh8P35+XlOJCTBYBC2t7dr8fdctv+iRHjI4HK5LAMDA8BVFAoFyOVyH/6KIKsxCtVIgC188+Dg4CV2GJxGpqamYHR09AHklEWQY5d6K/gg67HD3huNRrlKpYLNzU3gIsPDw8Dn84fa29s/4zIK6Rol8xIhSUMikXB2dXXV4AHo6en5KhaLFcvLy0VJent7QaPRzKrV6le4DCEi2UTCnGgE1dXVj3Q6XY1er08drKiosK2urnbjnrFQQxBJU1PTC3y4kyxJGHEMWe2dTUSNIcLZVXl0dAStra3BiYmJOTqgVCqfu91uull3LhlFjbZv6urqiCTIElHaEsC2dq4QqXRlZeUePsrUDFtfX/eZzebbqL+GuIFks1js32OHRtHu7u5H3FMiahFViPNQYuZRO8oQVzY2NibJocFgYAKBgLuzs/M66hsQKuzELx0dHak9rKe3paXlFurrERdZEiGUGARkcAFxmSJAJ/aRkRGGnOKwdPn9/rG9vT0HXaC5uZnxer3+vr4+HdpeRVxClBWLJFuZqhF7gAjL0PGz8fFxvcfjSY0WevVUv5mZmQDWyog1/I52PyBdlxgUqUu+qMSQznVtW1ubBlP3dmlpicnA5/N5+vv770C6bhS9lEu6eHnWFP45NioJS5xxRLdNsrenKH5CusNOWH1BEeTRMTnI6MgZpYYeYhhOmS5eEX0mMhELPktGoBd/zCWSUkTAOs4QZqZ8JsokS8Kp8KWICtlwdv5P5BchBHaEIRURoQAAAABJRU5ErkJggg=="],["text","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4="],["shape","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"]]),Wp=o=>{const{style:i,onClickHandler:e}=o;return d.createElement("div",{className:"font-size-menu",style:i,onPointerUp:t=>{t.stopPropagation(),t.nativeEvent.stopImmediatePropagation()}},He.map(t=>d.createElement("div",{className:"font-size-btn",key:t,onPointerUp:()=>{e(t)}},t)))},Bp=o=>{const i=d.useRef(null),{open:e,setOpen:t,textOpt:n,workIds:r,floatBarRef:s}=o,{mananger:a,floatBarData:c}=d.useContext(Ie),[l,h]=d.useState(0),u=He.length-1;d.useEffect(()=>{n!=null&&n.fontSize&&(h(n.fontSize),i.current&&(i.current.value=n.fontSize.toString()))},[n==null?void 0:n.fontSize]);const M=d.useMemo(()=>{if(s!=null&&s.current&&x.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>180){const p={};return p.top="inherit",p.bottom=35,p}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<120){const p={};return p.top="inherit",p.bottom=35,p}}},[s==null?void 0:s.current,c,a]);function y(p){h(p),p&&p>=He[0]&&p<=He[u]&&oe.emitMethod(ee.MainEngine,W.SetFontStyle,{workIds:r||[Z],fontSize:p,viewId:a==null?void 0:a.viewId})}const g=p=>{var f;(f=i.current)==null||f.blur(),t(!1),w(p)},I=d.useMemo(()=>e?d.createElement(Wp,{onClickHandler:g,style:M}):null,[e,g,M]),w=p=>{p>He[u]&&(p=He[u]),p<He[0]&&(p=He[0]),y(p)};return d.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()}},d.createElement("input",{className:"font-size-input",ref:i,onTouchEnd:()=>{i.current&&i.current.focus()},onClick:()=>{t(!e),i.current&&i.current.focus()},onKeyDown:p=>{if(p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),p.key==="Backspace"){const f=window.getSelection(),N=f==null?void 0:f.getRangeAt(0);if(N!=null&&N.collapsed)return p.cancelable&&p.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:p=>{var f;if(p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),i.current){const N=i.current.value,S=parseInt(N);isNaN(S)?i.current.value="0":i.current.value=S.toString(),S&&p.key==="Enter"&&(w(S),(f=i.current)==null||f.blur(),t(!1))}}}),d.createElement("div",{className:"font-size-btns"},d.createElement("div",{className:"font-size-add",onPointerUp:()=>{w(l+He[0])}}),d.createElement("div",{className:"font-size-cut",onPointerUp:()=>{w(l-He[0])}})),I)},Fp=o=>{const{workIds:i,mananger:e,islocked:t}=o;return d.createElement("div",{className:"button normal-button",onPointerUp:n=>{n.stopPropagation(),oe.emitMethod(ee.MainEngine,W.SetLock,{workIds:i||[Z],isLocked:!t,viewId:e==null?void 0:e.viewId})}},d.createElement("img",{alt:"icon",src:je(t?"unlock-new":"lock-new")}))},Ti=o=>{const{icon:i,min:e,max:t,step:n,value:r,onInputHandler:s}=o,[a,c]=d.useState(0),l=d.useRef(null),h=u=>{u>t&&(u=t),u<e&&(u=e),c(u),s(u),l.current&&(l.current.value=u.toString())};return d.useEffect(()=>{r&&(c(r),l.current&&(l.current.value=r.toString()))},[r]),d.createElement("div",{className:"button input-button"},d.createElement("img",{src:je(i)}),d.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:u=>{if(u.stopPropagation(),u.nativeEvent.stopImmediatePropagation(),u.key==="Backspace"){const M=window.getSelection(),y=M==null?void 0:M.getRangeAt(0);if(y!=null&&y.collapsed)return u.cancelable&&u.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:u=>{if(u.stopPropagation(),u.nativeEvent.stopImmediatePropagation(),l.current){const M=l.current.value,y=parseInt(M);isNaN(y)?l.current.value="0":l.current.value=y.toString()}},onChange:u=>{const M=u.target.value,y=parseInt(M);y&&y&&y>=e&&y<=t&&h(y)}}),d.createElement("div",{className:"input-number-btns"},d.createElement("div",{className:"input-number-add",onPointerUp:()=>{h(a+n)}}),d.createElement("div",{className:"input-number-cut",onPointerUp:()=>{h(a-n)}})))},Qp=o=>{const{icon:i,min:e,max:t,step:n,value:r,onInputHandler:s}=o;return d.createElement("div",{className:"button input-button"},d.createElement("img",{src:je(i)}),d.createElement(Vp,{min:e,max:t,step:n,value:r,onInputHandler:s}))},Vp=o=>{const{value:i,min:e,max:t,onInputHandler:n}=o,[r,s]=d.useState({x:0,y:0});d.useEffect(()=>{s({x:i*100,y:0})},[]);const a=(h,u)=>{let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,t*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const y=M/100;i!==y&&n(y)},c=()=>{},l=(h,u)=>{let M=Math.floor(Math.max(u.x,e*100));M=Math.floor(Math.min(M,t*100)),u.x!==(r==null?void 0:r.x)&&s({x:M,y:0});const y=M/100;i!==y&&n(y)};return d.createElement("div",{className:"range-number-container",onPointerUp:h=>{const u=h.nativeEvent.offsetX-6;let M=Math.floor(Math.max(u,e*100));M=Math.floor(Math.min(M,t*100)),s({x:M,y:0});const y=M/100;i!==y&&n(y)}},d.createElement("div",{className:"range-number-color"}),d.createElement("div",{className:"range-number"},d.createElement(ft,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:c,onStop:l},d.createElement("div",{className:"circle",onPointerUp:Pt}))))},Zp=o=>{const{icon:i,value:e,onChangeHandler:t,style:n}=o,[r,s]=d.useState(0),[a,c]=d.useState(),l=d.useRef(null),h=d.useCallback(y=>{y>=ut.length&&(y=0),y<0&&(y=ut.length-1),s(y),t(ut[y]),c(!1),l.current&&(l.current.value=ut[y])},[t]),u=d.useMemo(()=>{if(n&&n.bottom){const y={};return y.top="inherit",y.bottom=50,y}},[n]);d.useEffect(()=>{e&&(s(ut.indexOf(e)),l.current&&(l.current.value=e))},[e]);const M=d.useMemo(()=>a?d.createElement(Hp,{options:ut,onClickHandler:h,style:u}):null,[a,h,u]);return d.createElement("div",{className:"button input-button"},d.createElement("img",{src:je(i)}),d.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&(l.current.focus(),c(!a))}}),d.createElement("div",{className:"input-number-btns"},d.createElement("div",{className:"input-number-add",onPointerUp:()=>{h(r+1)}}),d.createElement("div",{className:"input-number-cut",onPointerUp:()=>{h(r-1)}})),M)},Hp=o=>{const{options:i,style:e,onClickHandler:t}=o;return d.createElement("div",{className:"select-option-menu",style:e},i.map((n,r)=>d.createElement("div",{className:"select-option-btn",key:n,onPointerUp:()=>{t(r)}},n)))},$p=o=>{const{innerRatio:i,innerVerticeStep:e,vertices:t,mananger:n,setShapeOpt:r}=o,s=l=>{r({vertices:l}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Star,viewId:n.viewId,vertices:l})},a=l=>{r({innerVerticeStep:l}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Star,viewId:n.viewId,innerVerticeStep:l})},c=l=>{r({innerRatio:l}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Star,viewId:n.viewId,innerRatio:l})};return d.createElement(d.Fragment,null,d.createElement(Ti,{value:t,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:s}),d.createElement(Ti,{value:e,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:a}),d.createElement(Qp,{value:i,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:c}))},Gp=o=>{const{mananger:i,vertices:e,setShapeOpt:t}=o,n=r=>{t({vertices:r}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.Polygon,viewId:i.viewId,vertices:r})};return d.createElement(Ti,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:n})},Jp=o=>{const{mananger:i,placement:e,setShapeOpt:t}=o,n=r=>{t({placement:r}),oe.emitMethod(ee.MainEngine,W.SetShapeOpt,{workIds:[Z],toolsType:T.SpeechBalloon,viewId:i.viewId,placement:r})};return d.createElement(Zp,{value:e,icon:"speechBallon-placement",onChangeHandler:n})},ai=o=>{const{icon:i,isActive:e,onPointerUpHandler:t}=o;return d.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:t},d.createElement("img",{src:je(i)}))},qp=o=>{const{toolsTypes:i,style:e,mananger:t,shapeOpt:n,setShapeOpt:r}=o,[s,a]=d.useState();d.useEffect(()=>{i.includes(T.Polygon)?a(T.Polygon):i.includes(T.Star)?a(T.Star):a(T.SpeechBalloon)},[i]);const c=M=>{a(M)},l=d.useMemo(()=>s===T.Polygon&&t&&n.vertices?d.createElement(Gp,{vertices:n.vertices,mananger:t,setShapeOpt:r}):null,[t,s,n,r]),h=d.useMemo(()=>s===T.Star&&t&&n.vertices&&n.innerVerticeStep&&n.innerRatio?d.createElement($p,{mananger:t,vertices:n.vertices,innerVerticeStep:n.innerVerticeStep,innerRatio:n.innerRatio,setShapeOpt:r}):null,[t,s,n,r]),u=d.useMemo(()=>s===T.SpeechBalloon&&t&&n.placement?d.createElement(Jp,{mananger:t,placement:n.placement,setShapeOpt:r}):null,[s,t,n.placement,r]);return d.createElement("div",{className:"shapeOpt-sub-menu",style:e,onPointerUp:Pt},d.createElement("div",{className:"shapeOpt-sub-menu-tabs"},i.includes(T.Polygon)&&d.createElement(ai,{isActive:s===T.Polygon,icon:s===T.Polygon?"polygon-active":"polygon",onPointerUpHandler:c.bind(void 0,T.Polygon)})||null,i.includes(T.Star)&&d.createElement(ai,{isActive:s===T.Star,icon:s===T.Star?"star-active":"star",onPointerUpHandler:c.bind(void 0,T.Star)})||null,i.includes(T.SpeechBalloon)&&d.createElement(ai,{isActive:s===T.SpeechBalloon,icon:s===T.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:c.bind(void 0,T.SpeechBalloon)})||null),d.createElement("div",{className:"shapeOpt-sub-menu-content"},l,h,u))},Xp=o=>{const{open:i,setOpen:e,floatBarRef:t,toolsTypes:n,shapeOpt:r}=o,{floatBarData:s,mananger:a,setFloatBarData:c}=d.useContext(Ie),l=d.useRef(null),h=d.useMemo(()=>{if(t!=null&&t.current&&x.isNumber(s==null?void 0:s.x)&&x.isNumber(s==null?void 0:s.y)&&(a!=null&&a.height)){if(t.current.offsetTop&&t.current.offsetTop+s.y>200){const g={};return g.top="inherit",g.bottom=50,g}else if(!t.current.offsetTop&&(a==null?void 0:a.height)-t.current.offsetTop-(s==null?void 0:s.y)<140){const g={};return g.top="inherit",g.bottom=50,g}}},[t,s==null?void 0:s.x,s==null?void 0:s.y,a==null?void 0:a.height]),u=d.useCallback(g=>{c({shapeOpt:{...r,...g}})},[c,r]),M=d.useMemo(()=>i&&n&&a&&r?d.createElement(qp,{shapeOpt:r,style:h,toolsTypes:n,mananger:a,setShapeOpt:u}):null,[i,h,n,a,r,u]),y=()=>{e(!i)};return d.createElement("div",{ref:l,className:`button normal-button ${i&&"active"}`,onPointerUp:y},M,d.createElement("img",{alt:"icon",src:je(i?"shapes-active":"shapes")}))},vo=d.memo(o=>{const{textOpt:i,workIds:e,noLayer:t,position:n,noDelete:r,noCopy:s}=o,{floatBarData:a,mananger:c}=d.useContext(Ie),[l,h]=d.useState(0),[u,M]=d.useState(),y=d.useRef(null);d.useEffect(()=>{var L,O,A,R;const C={},k=(a==null?void 0:a.w)||((L=i==null?void 0:i.boxSize)==null?void 0:L[0])||0,P=(a==null?void 0:a.h)||((O=i==null?void 0:i.boxSize)==null?void 0:O[1])||0;if(n&&k&&P&&(c!=null&&c.width)&&(c!=null&&c.height)){if(n.y<60?n.y+P<c.height-60?C.bottom=-120:n.y+P<c.height?C.bottom=-58:n.y>0?C.top=62:C.top=-n.y+62:C.top=0,n.x<0)C.left=-n.x+3;else if(n.x+(((A=y.current)==null?void 0:A.offsetWidth)||k)>c.width){const z=c.width-(((R=y.current)==null?void 0:R.offsetWidth)||k)-n.x;C.left=z}M(C);return}M(void 0)},[y,n,a==null?void 0:a.w,a==null?void 0:a.h,c==null?void 0:c.width,c==null?void 0:c.height,i==null?void 0:i.boxSize]);const g=d.useMemo(()=>a!=null&&a.fillColor?d.createElement(bp,{floatBarRef:y,open:l===3,setOpen:C=>{h(C===!0?3:0)}}):null,[a==null?void 0:a.fillColor,l,y]),I=d.useMemo(()=>a!=null&&a.strokeColor?d.createElement(Ap,{floatBarRef:y,open:l===2,setOpen:C=>{h(C===!0?2:0)}}):null,[a==null?void 0:a.strokeColor,l,y]),w=d.useMemo(()=>i!=null&&i.fontColor&&(c!=null&&c.viewId)?d.createElement(kp,{floatBarRef:y,open:l===4,setOpen:C=>{h(C===!0?4:0)},textOpt:i,workIds:e}):null,[i,l,e,c,y]),p=d.useMemo(()=>i!=null&&i.fontBgColor&&(c!=null&&c.viewId)?d.createElement(Ep,{floatBarRef:y,open:l===5,setOpen:C=>{h(C===!0?5:0)},textOpt:i,workIds:e}):null,[i,l,e,c,y]),f=d.useMemo(()=>i&&(c!=null&&c.viewId)?d.createElement(Yp,{floatBarRef:y,open:l===6,setOpen:C=>{h(C===!0?6:0)},textOpt:i,workIds:e,style:u}):null,[i,l,e,c,u,y]),N=d.useMemo(()=>i&&(c!=null&&c.viewId)?d.createElement(Bp,{open:l===7,setOpen:C=>{h(C===!0?7:0)},textOpt:i,workIds:e,floatBarRef:y}):null,[i,l,e,c,y]),S=d.useMemo(()=>t?null:d.createElement(jp,{open:l===1,setOpen:C=>{h(C===!0?1:0)},floatBarRef:y}),[t,l,y]),v=d.useMemo(()=>a!=null&&a.canLock&&c?d.createElement(Fp,{workIds:e,mananger:c,islocked:a.isLocked}):null,[a,c,e]),j=d.useMemo(()=>c&&(c!=null&&c.viewId)&&u&&(a!=null&&a.shapeOpt)&&(a!=null&&a.toolsTypes)?d.createElement(Xp,{open:l===8,setOpen:C=>{h(C===!0?8:0)},floatBarRef:y,workIds:e,toolsTypes:a.toolsTypes,shapeOpt:a.shapeOpt}):null,[a,c,l,u,e,y]);return d.createElement("div",{className:"appliance-plugin-floatbtns",style:u,ref:y},c&&!r&&d.createElement(Cp,{workIds:e,mananger:c}),S,v,!!(c!=null&&c.viewId)&&!s&&d.createElement(Sp,{workIds:e,viewId:c.viewId}),j,f,N,w,p,I,g)}),Kp=o=>{const{data:i,workId:e,updateOptInfo:t,handlePointerDown:n,handlePointerUp:r}=o,{opt:s,scale:a,translate:c,x:l,y:h}=i,u=d.useRef(null),{floatBarData:M}=d.useContext(Ie),y=d.useMemo(()=>{const{fontSize:w,fontFamily:p,underline:f,fontColor:N,lineThrough:S,textAlign:v,strokeColor:j,lineHeight:C,bold:k,italic:P}=s,L=C||w*1.2,O={fontSize:`${w}px`,lineHeight:`${L}px`,color:"transparent",caretColor:N,borderColor:j,minHeight:`${L}px`,pointerEvents:"none",paddingRight:`${P==="italic"?Math.round(w*.3):5}px`};return p&&(O.fontFamily=`${p}`),(S||f)&&(O.textDecoration=`${S&&"line-through"||""}${f&&" underline"||""}`),v&&(O.textAlign=`${v}`),k&&(O.fontWeight=`${k}`),P&&(O.fontStyle=`${P}`),O},[s]),g=d.useMemo(()=>{const w=[];if(s.text){const p=ei(s.text);for(let f=0;f<p.length;f++){const N=p[f];N===""?w.push(d.createElement("div",{key:f})):w.push(d.createElement("div",{key:f},N))}}return w.length?w:d.createElement("div",null)},[s.text]),I=d.useMemo(()=>{if(!M)return{};const w=`scale(${a||1}) ${c&&"translate("+c[0]+"px,"+c[1]+"px)"||""}`;return{left:`${l-M.x}px`,top:`${h-M.y}px`,zIndex:1,transform:w,transformOrigin:"left top",opacity:0,pointerEvents:"auto"}},[a,c,l,h,M]);return d.useEffect(()=>{var w,p;if((w=u.current)!=null&&w.offsetWidth&&((p=u.current)!=null&&p.offsetHeight)){const f=s.boxSize;if((f==null?void 0:f[0])!==u.current.offsetWidth||f[1]!==u.current.offsetHeight||!f){const N=[u.current.offsetWidth,u.current.offsetHeight];t({activeTextId:e,update:{boxSize:N,workState:D.Done}})}}},[s.fontSize,s.italic,s.bold,s.boxSize,e,t]),d.createElement("div",{className:"editor-box readonly",style:I,onPointerDown:()=>{n(e)},onPointerUp:()=>{r()}},d.createElement("div",{className:"editor",ref:u,style:y},g))},_p=o=>{const{mananger:i}=d.useContext(Ie),e=d.useMemo(()=>{var n;const t=r=>{var h,u;if(!i)return;const{activeTextId:s,update:a,syncData:c}=r,l=s&&x.cloneDeep(((h=i.control.textEditorManager)==null?void 0:h.get(s))||((u=o.editors)==null?void 0:u.get(s)));l&&l.opt&&(l.opt={...l.opt,...a},c&&(l.canSync=Object.keys(c).includes("canSync")&&c.canSync||l.canSync,l.canWorker=Object.keys(c).includes("canWorker")&&c.canWorker||l.canWorker),i.control.textEditorManager.updateForViewEdited(s,l))};if((n=o.editors)!=null&&n.size){const r=[];return o.editors.forEach((s,a)=>{if(o.selectIds&&o.selectIds.includes(a)){const c=d.createElement(Kp,{key:a,workId:a,data:s,updateOptInfo:t,handlePointerDown:o.handleTextEditorPointerDown,handlePointerUp:o.handleTextEditorPointerUp});r.push(c)}}),r}return null},[o.editors,o.selectIds,i]);return d.createElement(d.Fragment,null,e)},ey=o=>{const{position:i,textOpt:e,workIds:t,noLayer:n,noCopy:r,noDelete:s,style:a}=o,c=d.useRef(null);return d.createElement("div",{className:ze.FloatBarBtn,ref:c,style:a},d.createElement(vo,{position:i,textOpt:e,workIds:t,noLayer:n,noCopy:r,noDelete:s}))},ty=o=>{const{data:i,workId:e,showFloatBtns:t,handleKeyUp:n,handleFocus:r,runAnimation:s,updateSize:a,rightBoundBreak:c}=o,{activeTextEditor:l,activeTextId:h,mananger:u}=d.useContext(Ie),{opt:M,scale:y,translate:g,x:I,y:w}=i,{fontSize:p,fontFamily:f,underline:N,fontColor:S,lineThrough:v,textAlign:j,lineHeight:C,bold:k,italic:P}=M,L=d.useRef(null),O=d.useMemo(()=>{const F=p,G=C||F*1.2,X={fontSize:`${F}px`,lineHeight:`${G}px`,caretColor:S,color:"transparent",minHeight:`${G}px`,paddingRight:`${P==="italic"?Math.round(F*.3):5}px`,borderWidth:0};return f&&(X.fontFamily=`${f}`),(v||N)&&(X.textDecoration=`${v&&"line-through"||""} ${N&&" underline"||""}`),j&&(X.textAlign=`${j}`),k&&(X.fontWeight=`${k}`),P&&(X.fontStyle=`${P}`),X},[k,S,f,p,P,C,v,y,j,N]),A=d.useRef(!1),R=d.useRef(6),z=d.useRef({fontSize:O.fontSize,lineHeight:O.lineHeight,fontStyle:O.fontStyle,fontWeight:O.fontWeight,fontFamily:O.fontFamily}),V=d.useMemo(()=>h===e?"hover":M.workState===D.Doing||M.workState===D.Start?"editing":l?"active":"none",[h,e,M.workState,l]);function _(F){if(L.current){const G=window==null?void 0:window.getSelection(),X=L.current,ae=(le,de)=>{var ce;const ge=document.createRange();if(de.childNodes.length>0){const Ne=de.lastChild;if(Ne){const De=Ne.lastChild;De&&De.nodeType===Node.TEXT_NODE?ge.setStart(De,((ce=De.textContent)==null?void 0:ce.length)||0):ge.setStart(Ne,0)}else ge.setStart(de,0)}else ge.setStart(de,0);ge.collapse(!0),le.removeAllRanges(),le.addRange(ge)};if(G&&X)if(F&&Ut(F.nativeEvent)){const{x:le,y:de}=mo(F.nativeEvent);if(document.caretPositionFromPoint){const ge=document.caretPositionFromPoint(le,de);if(ge){const ce=document.createRange();ce.setStart(ge.offsetNode,ge.offset),ce.collapse(!0),G.removeAllRanges(),G.addRange(ce)}else ae(G,X)}else if(document.caretRangeFromPoint){const ge=document.caretRangeFromPoint(le,de);ge?(G.removeAllRanges(),G.addRange(ge)):ae(G,X)}else ae(G,X)}else ae(G,X);L.current.focus()}}const B=d.useMemo(()=>{const F=`scale(${y||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`;return{left:`${I-pi*(y||1)}px`,top:`${w-pi*(y||1)}px`,zIndex:2,transform:F,transformOrigin:"left top",borderColor:V==="editing"||V==="hover"?S:"transparent"}},[y,g,I,w,S,V]),J=d.useMemo(()=>{let F="";const G="<div></div>";if(M.text){const X=ei(M.text);for(let ae=0;ae<X.length;ae++){const le=X[ae];if(le==="")F=F+G;else{const de=le.replace(/[<>&]/g,ge=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[ge]);F=F+`<div>${de}</div>`}}}else F=G;return F},[M.fontBgColor,M.text]),ie=d.useMemo(()=>{var F,G;if(V==="hover"){if(y&&t&&x.isNumber(I)&&x.isNumber(w)&&M.boxSize&&x.isNumber((F=M.boxSize)==null?void 0:F[0])&&x.isNumber((G=M.boxSize)==null?void 0:G[1])){const X={x:I,y:w},ae={left:I,top:w,width:M.boxSize[0]*y,height:M.boxSize[1]*y};return d.createElement(ey,{position:X,style:ae,textOpt:M,workIds:[e],noLayer:!0,noCopy:!0,noDelete:!0})}return null}return null},[M,t,e,I,w,y,V]);d.useEffect(()=>{h===e&&L.current&&(document.activeElement!==L.current&&_(),r(L.current))},[h,r,e]),d.useEffect(()=>{if(L.current){const F=parseInt(getComputedStyle(L.current).paddingRight,10)+parseInt(getComputedStyle(L.current).borderWidth,10);R.current=Number(F)}},[]),d.useEffect(()=>{if(L.current){const F={fontSize:O.fontSize,lineHeight:O.lineHeight,fontStyle:O.fontStyle,fontWeight:O.fontWeight,fontFamily:O.fontFamily};if(!x.isEqual(z.current,F)){z.current=F;const G=[L.current.offsetWidth,L.current.offsetHeight];a(e,G)}}},[O,e,a]);const re=d.useCallback(F=>{var de,ge;const G=u==null?void 0:u.parentElement;if(!G||!L.current||!c)return!1;const X=L.current.lastChild;if(!X||X instanceof Text)return!1;const ae=X==null?void 0:X.getBoundingClientRect(),le=G==null?void 0:G.getBoundingClientRect();if(!ae||!le)return!1;if(ae.right+F>le.right){const ce=X.lastChild;if(!(ce instanceof Text))return!1;const Ne=ce.length||0;let De=0,me=0,ke=Ne;for(;me<ke;){const xe=Math.floor((me+ke)/2),_e=document.createRange();_e.setStart(ce,0),_e.setEnd(ce,xe);const Tt=_e.getBoundingClientRect(),Zi=le.right-Tt.right;if(Zi<F){if(xe>0){const rt=document.createRange();rt.setStart(ce,0),rt.setEnd(ce,xe-1);const vt=rt.getBoundingClientRect();if(le.right-vt.right>=F){De=xe-1;break}}ke=xe}else{const rt=xe+1;if(rt<Ne){const vt=document.createRange();vt.setStart(ce,0),vt.setEnd(ce,rt);const Hi=vt.getBoundingClientRect();if(le.right-Hi.right<=F&&Zi>F){De=xe;break}}me=rt}}if(!De){const xe=document.createRange();xe.setStart(ce,0),xe.setEnd(ce,me);const _e=xe.getBoundingClientRect();le.right-_e.right>F?De=me:me>0&&(De=me-1)}if(De>0){const xe=((de=ce.textContent)==null?void 0:de.slice(0,De))||"",_e=((ge=ce.textContent)==null?void 0:ge.slice(De))||"";ce.textContent=xe;const Tt=document.createElement("div");return _e&&(Tt.textContent=_e),L.current.appendChild(Tt),re(F),!0}}return!1},[u==null?void 0:u.parentElement,M.fontBgColor,c]);function ne(F){if(F.stopPropagation(),F.nativeEvent.stopImmediatePropagation(),F.key==="Backspace"){const G=window.getSelection(),X=G==null?void 0:G.getRangeAt(0);if(X!=null&&X.collapsed)return F.cancelable&&F.preventDefault(),document.execCommand("delete",!1),!1}return!1}function q(F,G){const X=window==null?void 0:window.getSelection();if(X!=null&&X.rangeCount&&F&&X&&X.anchorNode){const ae=X.anchorOffset,le=X.anchorNode.textContent||"",de=le.slice(0,ae)||"",ge=le.slice(ae)||"",ce=de.concat(F)||"";$(ce,ge,G)}}function $(F,G,X){const ae=window==null?void 0:window.getSelection();if(!(ae!=null&&ae.rangeCount)||!ae.anchorNode)return;const le=F.split(/\n/);let de=ae.anchorNode.parentNode;de===X&&(de=ae.anchorNode);const ge=[...X.childNodes],ce=[];let Ne,De=ae.anchorOffset;for(;ge.length;){const me=ge.pop();if(me){if(me===de){let ke=le[0];le.length===1&&(De=le[0].length,ke=le[0].concat(G)),de.nodeName==="#text"?(de.textContent=ke,Ne=de):de.nodeName==="DIV"&&(de.innerText=ke,Ne=de.childNodes[0]);break}ce.push(me),X.removeChild(me)}}if(le.length>1)for(let me=1;me<le.length;me++){let ke=le[me];const xe=document.createElement("div");me===le.length-1&&(De=ke.length,ke=ke.concat(G)),xe.innerText=ke,X.appendChild(xe),me===le.length-1&&(Ne=xe.childNodes[0])}if(ce.length){ce.reverse();for(const me of ce)X.appendChild(me)}if(Ne&&Ne.nodeName==="#text"){ae.deleteFromDocument();const me=document.createRange(),ke=Math.min(De,(Ne==null?void 0:Ne.length)||0);me.setStart(Ne,ke),me.collapse(!0),ae.removeAllRanges(),ae.addRange(me)}}function ue(F){if(F.cancelable&&F.preventDefault(),F.stopPropagation(),F.nativeEvent.stopImmediatePropagation(),L.current){const G=(F.clipboardData||window.clipboardData).getData("text"),X=window==null?void 0:window.getSelection();if(!(X!=null&&X.rangeCount))return;if(G&&X&&X.anchorNode){const ae=li(G,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]});q(ae,L.current),re((y||1)*R.current),n(L.current)}s()}return!1}function Fe(F){var X;const G=F.querySelector("div");if(G){const ae=document.createTreeWalker(F,NodeFilter.SHOW_TEXT,null);let le;const de=[];for(;(le=ae.nextNode())!==null;)le.parentNode===F&&de.push(le);if(de.length>0){for(const ce of de)G.appendChild(ce);const ge=window.getSelection();if(ge){const ce=document.createRange(),Ne=G.lastChild;Ne&&Ne.nodeType===Node.TEXT_NODE&&(ce.setStart(Ne,((X=Ne.textContent)==null?void 0:X.length)||0),ce.collapse(!0),ge.removeAllRanges(),ge.addRange(ce))}}}}const Qe=d.useCallback(()=>{const F=L.current;s(()=>{if(F){if(Fe(F),!A.current&&re((y||1)*R.current)){const G=window.getSelection();if(!(G!=null&&G.rangeCount))return!1;const X=document.createRange(),ae=L.current.lastChild;X.selectNodeContents(ae),X.collapse(!1),G.removeAllRanges(),G.addRange(X)}n(F)}})},[s,n,re,y]);function ot(){A.current=!0,s()}function qe(){A.current=!1,Qe()}function Ve(){Qe(),s()}const Ze=d.useCallback(()=>{if(V==="active"&&L.current&&L.current.parentElement){const F=L.current.parentElement;F.style.borderColor=S}},[V,S]),H=d.useCallback(()=>{if(V==="active"&&L.current&&L.current.parentElement){const F=L.current.parentElement;F.style.borderColor="transparent"}},[V]);return d.createElement(d.Fragment,null,ie,d.createElement("div",{className:`editor-box ${V}`,style:B,onPointerUp:()=>{var F;if(V==="editing"){s(()=>{var G;(G=document.activeElement)==null||G.blur(),u==null||u.control.textEditorManager.checkEmptyTextBlur()});return}if(V==="active"&&u){if((F=u.control.collector)!=null&&F.hasIncludeSelector(e)){s(()=>{var G;(G=document.activeElement)==null||G.blur(),u==null||u.control.textEditorManager.checkEmptyTextBlur()});return}if(u&&h!==e){u.control.textEditorManager.checkEmptyTextBlur(),u.control.textEditorManager.active(e,u.worker.now);return}}},onMouseOver:Ze,onMouseLeave:H},d.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:L,style:O,onKeyDown:ne,onPaste:ue,onTouchEnd:_,onInput:Qe,onCompositionStart:ot,onCompositionUpdate:Ve,onCompositionEnd:qe,dangerouslySetInnerHTML:{__html:J}})))},iy=o=>{const i=d.useRef(null),{mananger:e}=d.useContext(Ie),t=d.useRef(),n=d.useCallback(s=>{var u,M;const{activeTextId:a,update:c,syncData:l}=s;if(!e)return;const h=a&&x.cloneDeep(((u=e.control.textEditorManager)==null?void 0:u.get(a))||((M=o.editors)==null?void 0:M.get(a)));h&&h.opt&&(h.opt={...h.opt,...c},l&&(h.canSync=Object.keys(l).includes("canSync")&&l.canSync||h.canSync,h.canWorker=Object.keys(l).includes("canWorker")&&l.canWorker||h.canWorker),e.control.textEditorManager.updateForViewEdited(a,h))},[e,o.editors]),r=d.useMemo(()=>{var u;const s=M=>{const y=[];for(let g=0;g<M.childNodes.length;g++){const I=M.childNodes[g];if(I.nodeName==="#text"&&g===0){const w=I.textContent.split(/\n/),p=w.pop();y.push(...w),p&&y.push(p)}else if(I.nodeName==="DIV"){const w=I.innerText.split(/\n/);if(w.length===2&&w[0]===""&&w[1]==="")y.push("");else{const p=w.shift();(p||p==="")&&y.push(p);const f=w.pop();y.push(...w),f&&y.push(f)}}}return y},a=M=>{if(!e)return;const y=M.id,g=e.control.textEditorManager.get(y),I=D.Doing,w=[M.offsetWidth,M.offsetHeight];(!g||g&&(!x.isEqual(g.opt.boxSize,w)||!x.isEqual(g.opt.workState,I)))&&n({activeTextId:y,update:{boxSize:w,workState:I},syncData:{canSync:!0,canWorker:!0}})},c=M=>{var N,S;if(!e)return;const y=s(M),g=M.id,I=e.control.textEditorManager.get(g),w=At(y),p=D.Doing,f=[M.offsetWidth,M.offsetHeight];if(!I||I&&(I.opt.text!==w||!x.isEqual(I.opt.boxSize,f)||!x.isEqual(I.opt.workState,p))){const v=g&&x.cloneDeep(((N=e.control.textEditorManager)==null?void 0:N.get(g))||((S=o.editors)==null?void 0:S.get(g)));v&&v.opt&&(v.opt={...v.opt,text:w,boxSize:f,workState:p},v.canSync=!0,v.canWorker=!0,e.control.textEditorManager.updateForViewEdited(g,v)),e.control.textEditorManager.publicMsgEmitter.emit("textChange",g,M,y,v)}},l=(M,y)=>{if(!e)return;const g=M,I=e.control.textEditorManager.get(g);if(I&&!x.isEqual(I.opt.boxSize,y)){const w=x.cloneDeep(I);w.opt={...w.opt,boxSize:y},w.canSync=!1,w.canWorker=!1,e.control.textEditorManager.updateForViewEdited(g,w)}},h=M=>{t.current&&cancelAnimationFrame(t.current),t.current=requestAnimationFrame(()=>{i!=null&&i.current&&(i==null||i.current.scrollTo({left:0,behavior:"instant"}),M&&M(),t.current=void 0)})};if((u=o.editors)!=null&&u.size){const M=[];return o.editors.forEach((y,g)=>{M.push(d.createElement(ty,{key:g,workId:g,data:y,showFloatBtns:o.showFloatBtns||!1,handleFocus:a,handleKeyUp:c,updateSize:l,runAnimation:h,rightBoundBreak:o.rightBoundBreak||!1}))}),M}return null},[o.editors,o.showFloatBtns,o.rightBoundBreak,e,n]);return d.createElement("div",{className:`${o.className}`,ref:i},r)},ny=()=>{const{floatBarData:o}=d.useContext(Ie);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},d.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}))},oy=()=>{const{floatBarData:o,mananger:i}=d.useContext(Ie),[e,t]=d.useState(),[n,r]=d.useState();d.useEffect(()=>{const c=[];if(i&&x.isNumber(o==null?void 0:o.x)&&x.isNumber(o==null?void 0:o.y)&&(o!=null&&o.points)){const l=i.viewId;if(i.control.viewContainerManager.getView(l))for(const u of o.points){const M=i.control.viewContainerManager.transformToOriginPoint(u,l);c.push(M)}c[0]&&t({x:c[0][0]-((o==null?void 0:o.x)||0),y:c[0][1]-((o==null?void 0:o.y)||0)}),c[1]&&r({x:c[1][0]-((o==null?void 0:o.x)||0),y:c[1][1]-((o==null?void 0:o.y)||0)})}},[i,o==null?void 0:o.points,o==null?void 0:o.x,o==null?void 0:o.y]);const s=d.useMemo(()=>e?d.createElement("div",{className:"point point-dot",style:{borderColor:o==null?void 0:o.selectorColor,left:e.x,top:e.y}}):null,[o==null?void 0:o.selectorColor,e]),a=d.useMemo(()=>n?d.createElement("div",{className:"point point-dot",style:{borderColor:o==null?void 0:o.selectorColor,left:n.x,top:n.y}}):null,[n,o==null?void 0:o.selectorColor]);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},s,a)},ry=()=>{const{floatBarData:o}=d.useContext(Ie);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},d.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),d.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}))},sy=()=>{const{floatBarData:o}=d.useContext(Ie);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},d.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},ay=o=>{const{className:i}=o,{floatBarData:e,angle:t,setAngle:n,setOperationType:r,mananger:s}=d.useContext(Ie),[a,c]=d.useState(D.Pending),[l,h]=d.useState(),[u,M]=d.useState(!1),[y,g]=d.useState(new ye),[I,w]=d.useState(new ye),[p,f]=d.useState(!1),N=d.useRef(0),S=d.useRef(null),v=L=>{if(!L){f(!0),M(!1),r(W.None),c(D.Pending);return}f(!1)},j=(L,O)=>{N.current&&(clearTimeout(N.current),N.current=0),c(D.Done),M(!1);const A=Math.round(ye.GetAngleByPoints(y,I,new ye(O.x,O.y)))||0;n(A),r(W.None),oe.emitMethod(ee.MainEngine,W.RotateNode,{workIds:[Z],angle:A,workState:D.Done,viewId:s==null?void 0:s.viewId}),s==null||s.focusElement()};d.useEffect(()=>(oe.activeListener(v),()=>{oe.unmountActiveListener(v)}),[]),d.useEffect(()=>{if(e&&(a===D.Pending||a===D.Done)){const L={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},O={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};w(new ye(O.x,O.y)),g(new ye(L.x,L.y)),h({x:L.x,y:L.y})}},[e,a]);const C=(L,O)=>{if(s!=null&&s.control.worker.isBusy){f(!0),c(D.Pending);return}N.current&&(clearTimeout(N.current),N.current=0),c(D.Start),M(!0);const A=Math.round(ye.GetAngleByPoints(y,I,new ye(O.x,O.y)))||0;n(A),r(W.RotateNode),oe.emitMethod(ee.MainEngine,W.RotateNode,{workIds:[Z],angle:0,workState:D.Start,viewId:s==null?void 0:s.viewId})},k=(L,O)=>{if(s!=null&&s.control.worker.isBusy){f(!0),j(L,O);return}j(L,O)},P=(L,O)=>{if(s!=null&&s.control.worker.isBusy){f(!0),j(L,O);return}N.current||(h({x:O.x,y:O.y}),M(!0),N.current=setTimeout(()=>{N.current=0;const A=Math.round(ye.GetAngleByPoints(y,I,new ye(O.x,O.y)))||0;n(A),r(W.RotateNode),c(D.Doing),oe.emitMethod(ee.MainEngine,W.RotateNode,{workIds:[Z],angle:A,workState:D.Doing,viewId:s==null?void 0:s.viewId})},60))};return d.createElement(ft,{disabled:p,position:l,onStart:C,onDrag:P,onStop:k},d.createElement("div",{className:`${i}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!u&&d.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},d.createElement("img",{alt:"icon",src:je("rotation-button")})),d.createElement("div",{ref:S,className:`appliance-plugin-rotate-mouse-pointer ${u?"active":""}`},d.createElement("img",{alt:"icon",src:je("rotation")}),d.createElement("div",{className:"angle-icon"},t,"°"))))},cy=d.memo(o=>{const{editors:i,canSelectorSwitch:e}=o,{floatBarData:t,setOperationType:n,mananger:r,isNoPointerEvents:s}=d.useContext(Ie),[a,c]=d.useState(),[l,h]=d.useState(!1),u=d.useRef(0),M=d.useRef(),y=d.useRef(D.Pending),g=d.useMemo(()=>!!((t==null?void 0:t.scaleType)===be.none&&(t!=null&&t.canLock)),[t]),I=d.useMemo(()=>t&&t.w&&t.h?{position:"absolute",left:0,top:0,width:t.w,height:t.h,zIndex:2,pointerEvents:g||s?"none":"auto",touchAction:"none"}:{display:"none",pointerEvents:"none"},[t,g,s]),w=C=>{if(!C||t!=null&&t.isLocked){h(!0),y.current=D.Pending,n(W.None);return}h(!1)},p=(C,k)=>{u.current&&(clearTimeout(u.current),u.current=0);const P={x:k.x,y:k.y};n(W.None),y.current=D.Done,c(P),oe.emitMethod(ee.MainEngine,W.TranslateNode,{workIds:[Z],position:P,workState:D.Done,viewId:r==null?void 0:r.viewId})};d.useEffect(()=>(oe.activeListener(w),()=>{oe.unmountActiveListener(w)}),[]),d.useEffect(()=>{if(t&&(t!=null&&t.isLocked)||r!=null&&r.control.worker.isBusy){h(!0);return}h(!1)},[t,r==null?void 0:r.control.worker.isBusy]),d.useEffect(()=>{(y.current===D.Pending||y.current===D.Done)&&x.isNumber(t==null?void 0:t.x)&&x.isNumber(t==null?void 0:t.y)&&c({x:t==null?void 0:t.x,y:t==null?void 0:t.y})},[t==null?void 0:t.x,t==null?void 0:t.y]);const f=()=>{if(r!=null&&r.control.worker.isBusy){h(!0);return}u.current&&(clearTimeout(u.current),u.current=0),x.isNumber(t==null?void 0:t.x)&&x.isNumber(t==null?void 0:t.y)&&(n(W.TranslateNode),y.current=D.Start,oe.emitMethod(ee.MainEngine,W.TranslateNode,{workIds:[Z],position:{x:t==null?void 0:t.x,y:t==null?void 0:t.y},workState:D.Start,viewId:r==null?void 0:r.viewId}))},N=(C,k)=>{var O;r!=null&&r.control.worker.isBusy&&h(!0);const P=y.current,L=M.current;if(p(C,k),M.current&&(M.current=void 0),P===D.Start&&(i!=null&&i.size)&&L){const A=(O=r==null?void 0:r.control.viewContainerManager.getView(r.viewId))==null?void 0:O.focusScenePath;A&&(r==null||r.control.worker.blurSelector(r.viewId,A))}r==null||r.focusElement()},S=(C,k)=>{if(r!=null&&r.control.worker.isBusy){h(!0),p(C,k);return}if(u.current)return;const P={x:k.x,y:k.y};c(P),u.current=setTimeout(()=>{u.current=0,(P.x!==(a==null?void 0:a.x)||P.y!==(a==null?void 0:a.y))&&(M.current&&(M.current=void 0),y.current=D.Doing,oe.emitMethod(ee.MainEngine,W.TranslateNode,{workIds:[Z],position:P,workState:D.Doing,viewId:r==null?void 0:r.viewId}))},60)},v=C=>{e&&(M.current=C)},j=()=>{r&&e&&y.current===D.Start&&M.current&&r.control.textEditorManager.active(M.current)};return d.createElement(ft,{disabled:l,position:a,onStart:f,onDrag:S,onStop:N},d.createElement("div",{style:I},d.createElement(ly,{editors:i,selectIds:(t==null?void 0:t.selectIds)||[],handleTextEditorPointerDown:v,handleTextEditorPointerUp:j})))},(o,i)=>!!x.isEqual(o,i)),ly=d.memo(o=>{const{editors:i,selectIds:e,handleTextEditorPointerDown:t,handleTextEditorPointerUp:n}=o;return i?d.createElement(_p,{editors:i,selectIds:e||[],handleTextEditorPointerDown:t,handleTextEditorPointerUp:n}):null},(o,i)=>!(!x.isEqual(o.editors,i.editors)||!x.isEqual(o.selectIds,i.selectIds))),uy=o=>{const{className:i}=o,[e,t]=d.useState({x:0,y:0,h:0,w:0}),[n,r]=d.useState(),[s,a]=d.useState(),[c,l]=d.useState(),{floatBarData:h,mananger:u,isNoPointerEvents:M,setOperationType:y}=d.useContext(Ie),[g,I]=d.useState(),[w,p]=d.useState(!1),f=d.useRef(0);d.useEffect(()=>{if(h&&u){const O={x:h.x,y:h.y,w:h.w,h:h.h};t(O)}return oe.activeListener(S),()=>{oe.unmountActiveListener(S)}},[]),d.useEffect(()=>{if(u!=null&&u.control.worker.isBusy){p(!0);return}p(!1)},[u==null?void 0:u.control.worker.isBusy]);const N=()=>{if(f.current&&(clearTimeout(f.current),f.current=0),g){const{scale:O,translate:A}=g;y(W.None),oe.emitMethod(ee.MainEngine,W.ScaleNode,{workIds:[Z],scale:O,dir:c,translate:A,originPoint:n,scenePoint:s,workState:D.Done,viewId:u==null?void 0:u.viewId})}u==null||u.focusElement()},S=O=>{if(!O){p(!0);return}p(!1)},v=O=>[[O.x,O.y],[O.x+O.w,O.y],[O.x+O.w,O.y+O.h],[O.x,O.y+O.h]],j=(O,A)=>{switch(A){case"top":case"topLeft":case"left":return O[2];case"topRight":return O[3];case"right":case"bottomRight":case"bottom":return O[0];case"bottomLeft":return O[1]}},C=(O,A,R,z)=>{let V=!1,_=!1;const B={x:e.x,y:e.y,w:e.w,h:e.h},J=[1,1],ie=[0,0];switch(O){case"top":{const $=A.height+e.h;$<0?(_=!0,B.y=e.y+e.h,B.h=Math.abs($)):(B.y=e.y-A.height,B.h=e.h+A.height);break}case"topLeft":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+e.w,B.w=Math.abs($)):(B.x=e.x-A.width,B.w=e.w+A.width);const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+e.h,B.h=Math.abs(ue)):(B.y=e.y-A.height,B.h=e.h+A.height);break}case"topRight":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+$,B.w=Math.abs($)):B.w=e.w+A.width;const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+e.h,B.h=Math.abs(ue)):(B.y=e.y-A.height,B.h=e.h+A.height);break}case"bottom":{const $=A.height+e.h;$<0?(_=!0,B.y=e.y+$,B.h=Math.abs($)):B.h=e.h+A.height;break}case"bottomLeft":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+e.w,B.w=Math.abs($)):(B.x=e.x-A.width,B.w=e.w+A.width);const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+ue,B.h=Math.abs(ue)):B.h=e.h+A.height;break}case"left":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+e.w,B.w=Math.abs($)):(B.x=e.x-A.width,B.w=e.w+A.width);break}case"bottomRight":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+$,B.w=Math.abs($)):B.w=e.w+A.width;const ue=A.height+e.h;ue<0?(_=!0,B.y=e.y+ue,B.h=Math.abs(ue)):B.h=e.h+A.height;break}case"right":{const $=A.width+e.w;$<0?(V=!0,B.x=e.x+$,B.w=Math.abs($)):B.w=e.w+A.width;break}}J[0]=B.w/e.w,J[1]=B.h/e.h;const ne=v(B).map($=>R.control.viewContainerManager.transformToScenePoint($,R.viewId)),q=j(ne,O);return _&&(ie[1]=q[1]-z[1]),V&&(ie[0]=q[0]-z[0]),{scale:J,translate:ie}},k=(O,A)=>{if(f.current&&(clearTimeout(f.current),f.current=0),u!=null&&u.control.worker.isBusy){p(!0);return}if(h!=null&&h.w&&(h!=null&&h.h)&&u){const R={x:h.x,y:h.y,w:h.w,h:h.h},z=v(R),V=z.map(J=>u.control.viewContainerManager.transformToScenePoint(J,u.viewId)),_=j(z,A),B=j(V,A);t(R),r(_),a(B),l(A),y(W.ScaleNode),oe.emitMethod(ee.MainEngine,W.ScaleNode,{workIds:[Z],originPoint:_,scenePoint:B,workState:D.Start,viewId:u.viewId})}},P=(O,A,R,z)=>{if(!(!u||!n||!s)){if(u!=null&&u.control.worker.isBusy){p(!0),N();return}f.current||(f.current=setTimeout(()=>{f.current=0;const{scale:V,translate:_}=C(A,z,u,s);(!x.isEqual(V,g==null?void 0:g.scale)||!x.isEqual(_,g==null?void 0:g.translate))&&(I({scale:V,translate:_}),y(W.ScaleNode),oe.emitMethod(ee.MainEngine,W.ScaleNode,{workIds:[Z],scale:V,dir:A,translate:_,originPoint:n,scenePoint:s,workState:D.Doing,viewId:u.viewId}))},60))}},L=()=>{u!=null&&u.control.worker.isBusy&&p(!0),N()};return d.createElement(jo.Resizable,{className:`${i}`,boundsByDirection:!0,minWidth:-(((h==null?void 0:h.x)||0)+((h==null?void 0:h.w)||0)),minHeight:-(((h==null?void 0:h.y)||0)+((h==null?void 0:h.h)||0)),size:{width:(h==null?void 0:h.w)||0,height:(h==null?void 0:h.h)||0},style:{position:"absolute",left:h==null?void 0:h.x,top:h==null?void 0:h.y,pointerEvents:M?"none":"auto"},enable:w?!1:{top:(h==null?void 0:h.scaleType)===be.all&&!0||!1,right:(h==null?void 0:h.scaleType)===be.all&&!0||!1,bottom:(h==null?void 0:h.scaleType)===be.all&&!0||!1,left:(h==null?void 0:h.scaleType)===be.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(h==null?void 0:h.scaleType)===be.proportional,onResizeStart:k,onResize:P,onResizeStop:L})},zn=o=>{const{id:i,pos:e,pointMap:t,type:n}=o,{setOperationType:r,mananger:s,floatBarData:a}=d.useContext(Ie),[c,l]=d.useState({x:0,y:0}),[h,u]=d.useState(D.Pending),[M,y]=d.useState(!1),g=d.useRef(0),I=d.useMemo(()=>a?{left:0,top:0}:{},[a]),w=v=>{if(!v||a!=null&&a.isLocked){y(!0),u(D.Pending),r(W.None);return}y(!1)};d.useEffect(()=>(oe.activeListener(w),()=>{oe.unmountActiveListener(w)}),[]),d.useEffect(()=>{x.isNumber(e.x)&&x.isNumber(e.y)&&(h===D.Pending||h===D.Done)&&l({x:e.x,y:e.y})},[e,h]),d.useEffect(()=>{if(a&&(a!=null&&a.isLocked)||s!=null&&s.control.worker.isBusy){y(!0);return}y(!1)},[a,s==null?void 0:s.control.worker.isBusy]);const p=(v,j)=>{g.current&&(clearTimeout(g.current),g.current=0),r(W.None),u(D.Done);const C={x:j.x,y:j.y};if(l(C),s!=null&&s.control.viewContainerManager){const k=s.control.viewContainerManager.transformToScenePoint([C.x,C.y],s.viewId),P=t.get(i);P&&n==="start"?P[0]=k:P&&n==="end"&&(P[1]=k),oe.emitMethod(ee.MainEngine,W.SetPoint,{workId:Z,pointMap:t,workState:D.Done,viewId:s==null?void 0:s.viewId})}s==null||s.focusElement()},f=()=>{if(g.current&&(clearTimeout(g.current),g.current=0),s!=null&&s.control.worker.isBusy){y(!0);return}x.isNumber(e.x)&&x.isNumber(e.y)&&(r(W.SetPoint),u(D.Start),oe.emitMethod(ee.MainEngine,W.SetPoint,{workId:Z,pointMap:t,workState:D.Start,viewId:s==null?void 0:s.viewId}))},N=(v,j)=>{if(s!=null&&s.control.worker.isBusy){y(!0),p(v,j);return}if(g.current)return;const C={x:j.x,y:j.y};l(C),g.current=setTimeout(()=>{if(g.current=0,(C.x!==(j==null?void 0:j.x)||C.y!==(j==null?void 0:j.y))&&(s!=null&&s.control.viewContainerManager)){const k=s.control.viewContainerManager.transformToScenePoint([C.x,C.y],s.viewId),P=t.get(i);P&&n==="start"?P[0]=k:P&&n==="end"&&(P[1]=k),u(D.Doing),oe.emitMethod(ee.MainEngine,W.SetPoint,{workId:Z,pointMap:t,workState:D.Doing,viewId:s==null?void 0:s.viewId})}},60)},S=(v,j)=>{s!=null&&s.control.worker.isBusy&&y(!0),p(v,j)};return d.createElement(ft,{disabled:M,position:c,onStart:f,onDrag:N,onStop:S},d.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:I}))},hy=o=>{const{className:i}=o,{floatBarData:e,mananger:t}=d.useContext(Ie),[n,r]=d.useState(),[s,a]=d.useState(),[c,l]=d.useState(new Map);d.useEffect(()=>{const M=[];if(t&&(e!=null&&e.points)){const y=t.viewId;if(t.control.viewContainerManager.getView(y))for(const I of e.points){const w=t.control.viewContainerManager.transformToOriginPoint(I,y);M.push(w)}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]})},[t,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const h=d.useMemo(()=>n&&(e!=null&&e.selectIds)?d.createElement(zn,{pos:n,type:"start",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]),u=d.useMemo(()=>s&&(e!=null&&e.selectIds)?d.createElement(zn,{pos:s,type:"end",id:e.selectIds[0],pointMap:c}):null,[s,e==null?void 0:e.selectIds,c]);return d.createElement("div",{className:`${i}`},h,u)},dy=d.forwardRef((o,i)=>{const{floatBarData:e,operationType:t}=d.useContext(Ie),n=d.useMemo(()=>(e==null?void 0:e.scaleType)!==be.all||t===W.RotateNode?null:d.createElement(ny,null),[e,t]),r=d.useMemo(()=>(e==null?void 0:e.scaleType)!==be.both||t===W.RotateNode?null:d.createElement(oy,null),[e,t]),s=d.useMemo(()=>(e==null?void 0:e.scaleType)!==be.proportional||t===W.RotateNode?null:d.createElement(ry,null),[e,t]),a=d.useMemo(()=>(e==null?void 0:e.scaleType)===be.none&&(e!=null&&e.canLock)?d.createElement(sy,null):null,[e]);return d.createElement("div",{ref:i,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},a,n,r,s,o.children)}),gy=d.memo(o=>{const{isHide:i,operationType:e,floatBarData:t}=o;return i&&e===W.None&&x.isNumber(t==null?void 0:t.x)&&x.isNumber(t==null?void 0:t.y)&&x.isNumber(t==null?void 0:t.w)&&x.isNumber(t==null?void 0:t.h)?d.createElement("div",{className:ze.FloatBarBtn,style:{left:t==null?void 0:t.x,top:t==null?void 0:t.y,width:t.w,height:t.h}},d.createElement(vo,{position:{x:t.x,y:t.y},textOpt:t==null?void 0:t.textOpt,noLayer:t==null?void 0:t.isLocked})):null},(o,i)=>!!x.isEqual(o,i)),My=d.forwardRef((o,i)=>{const{floatBarData:e,operationType:t,mananger:n}=d.useContext(Ie),{editors:r,isHide:s,canSelectorSwitch:a}=o,c=d.useMemo(()=>{var u;return e!=null&&e.canRotate&&((u=e==null?void 0:e.selectIds)==null?void 0:u.length)===1&&(t===W.None||t===W.RotateNode)?d.createElement(ay,{className:ze.RotateBtn}):null},[e,t]),l=d.useMemo(()=>((e==null?void 0:e.scaleType)===be.all||(e==null?void 0:e.scaleType)===be.proportional)&&(t===W.None||t===W.ScaleNode)&&x.isNumber(e==null?void 0:e.x)&&x.isNumber(e==null?void 0:e.y)?d.createElement(uy,{className:ze.ResizeBtn}):null,[e==null?void 0:e.scaleType,t,e==null?void 0:e.x,e==null?void 0:e.y]),h=d.useMemo(()=>(e==null?void 0:e.scaleType)===be.both&&(t===W.None||t===W.SetPoint)?d.createElement(hy,{className:ze.ResizeTowBox}):null,[e==null?void 0:e.scaleType,t]);return d.createElement("div",{className:ze.FloatBar,onPointerOver:u=>(Pt(u),n==null||n.control.worker.blurCursor(n.viewId),!1)},d.createElement(dy,{ref:i}),d.createElement(cy,{editors:r,canSelectorSwitch:a}),c,l,h,d.createElement(gy,{isHide:s,operationType:t,floatBarData:e}))}),fy=d.memo(My,(o,i)=>!!x.isEqual(o,i));class py extends d.Component{constructor(e){super(e);m(this,"renderAvatar",e=>{var n;const t=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.getCursorName(e);return d.createElement("img",{className:"cursor-selector-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":t,marginRight:r?4:0},src:(n=e.payload)==null?void 0:n.avatar,alt:"avatar"})}else return null});m(this,"getOpacity",e=>{const t=this.getCursorName(e),n=this.detectAvatar(e);return t===void 0&&n===void 0?0:1});m(this,"getCursorName",e=>{if(e.payload)return e.payload.nickName||e.payload.cursorName||e.payload.uid});m(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");m(this,"getCursorBackgroundColor",e=>{const t=this.getCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:t?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});m(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");m(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));m(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));m(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return d.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)});m(this,"renderCursor",e=>{const t=Up.get(e);return t&&this.props.isEnableCursor?d.createElement("img",{className:`cursor-${e}-image`,src:t,alt:`${e}Cursor`}):null})}render(){const{roomMember:e}=this.props,t=this.getCursorName(e);switch(e.memberState.currentApplianceName){case te.pencil:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"5px",marginTop:"4px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("pencil"))));case te.selector:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-selector-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"3px",marginTop:"17px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("selector"))));case te.eraser:case te.pencilEraser:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-eraser-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"2px",marginTop:"8px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("eraser"))));case te.text:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-text-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"0px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("text"))));case te.rectangle:case te.arrow:case te.straight:case te.shape:case te.ellipse:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-shape-offset",style:{transform:"translate(-50%, -100%)",marginLeft:"-3px",marginTop:"19px"}},d.createElement("div",{className:"cursor-name"},d.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),d.createElement("span",{className:"cursor-name-text"},t),this.renderTag(e))),d.createElement("div",null,this.renderCursor("shape"))));default:return null}}}const yy=o=>{var s;const{className:i,info:e,isEnableCursor:t}=o,{roomMember:n,...r}=e||{};return d.createElement("div",{"data-cursor-uid":(s=n==null?void 0:n.payload)==null?void 0:s.uid,className:`${i}`,style:r?{transform:`translate(${r.x}px, ${r.y}px)`}:{display:"none"}},n&&d.createElement(py,{roomMember:n,isEnableCursor:t}))},Iy=o=>{const{className:i,manager:e}=o,[t,n]=d.useState();d.useEffect(()=>(e.internalMsgEmitter.on([ee.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([ee.Cursor,e.viewId],r)}),[e]);function r(a){n(a)}return d.useMemo(()=>{if(t!=null&&t.length){const a=t.map(c=>{var l;return c.roomMember?d.createElement(yy,{key:(l=c.roomMember)==null?void 0:l.memberId,className:i,info:c,isEnableCursor:e.control.cursor.isEnableCursor}):null});return d.createElement(d.Fragment,null,a)}return null},[t])},my=o=>{const{viewId:i,miniMapCanvas:e,highlightColor:t,miniMapManager:n,contianer:r}=o,[s,a]=d.useState();d.useEffect(()=>(c(),n.listener.addListener([i,"viewCameraUpate"],c),n.listener.emitAsync([i,"miniMapCreate"],!0),()=>{n.listener.removeListener([i,"viewCameraUpate"],c)}),[]);const c=()=>{const u=n.maps.get(i);u&&l(u.miniMapCamera,u.viewCamera)},l=(u,M)=>{const{width:y,height:g}=r.getBoundingClientRect(),I=Math.min(y/u.width,g/u.height),w=M.width/M.scale,p=M.height/M.scale,f=[M.centerX,M.centerY],N=[u.centerX,u.centerY],S=[f[0]-N[0],f[1]-N[1]],v=Math.min(u.scale*I,u.scale*I),j=[S[0]*v,S[1]*v,w,p,v];a(j)},h=u=>{var M;if(n.control.renderControl.isWritable){const y=u.nativeEvent.target||u.nativeEvent.srcElement;if(y&&u.nativeEvent&&s){const{width:g,height:I}=y.getBoundingClientRect(),[w,p]=[g/2,I/2],[f,N]=[(u.nativeEvent.offsetX-w)/s[4],(u.nativeEvent.offsetY-p)/s[4]],S=n.maps.get(i);if(S!=null&&S.viewCamera){const[v,j]=[S.miniMapCamera.centerX+f,S.miniMapCamera.centerY+N];(M=n.control.room)==null||M.moveCamera({centerX:v,centerY:j,animationMode:"immediately"})}}}};return d.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:h},d.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),s&&d.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:s[2]*s[4],height:s[3]*s[4],boxSizing:"content-box",border:`2px solid ${t}`,transform:`translate(calc(-50% + ${s[0]}px), calc(-50% + ${s[1]}px))`,pointerEvents:"none"}}))},wy=o=>{const{miniMapManager:i,active:e,className:t}=o,n=d.useMemo(()=>{const r=i.maps;if(e){const s=r.get(e);if(s){const{miniMapCamera:a,viewCamera:c,...l}=s;if(l.contianer&&a&&c){const h=i.highlightColor;return Zt.createPortal(d.createElement(my,{viewId:e,...l,highlightColor:h,miniMapManager:i}),l.contianer)}}}return null},[e,i]);return d.createElement("div",{className:t},n)},Ie=d.createContext({viewId:"",mananger:void 0,floatBarColors:[],floatBarData:void 0,dpr:1,angle:0,operationType:W.None,scale:[1,1],isNoPointerEvents:!1,activeTextEditor:!1,activeTextId:void 0,setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class Vi extends d.Component{constructor(e){var n,r;super(e);m(this,"showTextFloatBar");m(this,"canSelectorSwitch");m(this,"rightBoundBreak");m(this,"setAngle",e=>{this.setState({angle:e})});m(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,showFloatBarBtn:!0,dpr:1,angle:0,operationType:W.None,scale:[1,1],editors:this.editors,activeTextId:(n=this.props.mananger.control.textEditorManager)==null?void 0:n.activeId,activeMiniMapViewId:(r=this.props.mananger.control.miniMapManager)==null?void 0:r.activeViewId};const t=this.props.mananger.control.pluginOptions.extras.textEditor;this.showTextFloatBar=x.isBoolean(t.showFloatBar)?t.showFloatBar:we.textEditor.showFloatBar,this.canSelectorSwitch=x.isBoolean(t==null?void 0:t.canSelectorSwitch)?t.canSelectorSwitch:we.textEditor.canSelectorSwitch,this.rightBoundBreak=x.isBoolean(t==null?void 0:t.rightBoundBreak)?t.rightBoundBreak:we.textEditor.rightBoundBreak}get editors(){return Et(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBarBtn(e){this.setState({showFloatBarBtn:e})}showFloatBar(e,t){const n=e&&t&&{...this.state.floatBarData,...t}||void 0;this.setState({showFloatBar:e,floatBarData:n,angle:0})}activeTextEditor(){this.setState({activeTextEditor:!0})}unActiveTextEditor(){this.setState({activeTextEditor:!1})}updateTextEditorInfo(e){this.setState({activeTextId:e,editors:this.editors})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var t,n,r,s,a,c;const e=!!((n=(t=this.props.mananger.control)==null?void 0:t.room)!=null&&n.floatBarOptions);return d.createElement("div",{className:ze.Container},!this.props.mananger.control.hasOffscreenCanvas&&d.createElement("div",{className:ze.CanvasBox,ref:this.props.refs.canvasContainerRef})||d.createElement("div",{className:ze.CanvasBox},d.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"serviceCanvas",className:ze.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"localCanvas",className:ze.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),!this.props.mananger.control.isUseSimple&&d.createElement("div",{id:"subLocalCanvas",className:ze.CanvasBoxSub,ref:this.props.refs.subLocalCanvasContainerRef}),!this.props.mananger.control.isUseSimple&&d.createElement("canvas",{id:"topCanvas",className:ze.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.mananger.control.hasOffscreenCanvas&&this.props.refs.snapshotContainerRef&&d.createElement("div",{className:ze.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,d.createElement(Ie.Provider,{value:{viewId:this.props.viewId,mananger:this.props.mananger,floatBarColors:e&&((a=(s=(r=this.props.mananger.control)==null?void 0:r.room)==null?void 0:s.floatBarOptions)==null?void 0:a.colors)||[],isNoPointerEvents:!this.state.showFloatBarBtn,floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,activeTextEditor:this.state.activeTextEditor,activeTextId:this.state.activeTextId,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&d.createElement(fy,{ref:this.props.refs.floatBarRef,editors:this.state.editors,isHide:e&&this.state.showFloatBarBtn,canSelectorSwitch:this.canSelectorSwitch})||null,((c=this.state.editors)==null?void 0:c.size)&&d.createElement(iy,{className:ze.TextEditorContainer,showFloatBtns:this.showTextFloatBar&&e&&this.state.showFloatBarBtn||!1,editors:this.state.editors,rightBoundBreak:this.rightBoundBreak})||null),d.createElement(Iy,{className:ze.CursorBox,manager:this.props.mananger}),!this.props.mananger.control.isUseSimple&&d.createElement(wy,{className:ze.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class Ny extends No{constructor(e,t){super(e,t);m(this,"width",1e3);m(this,"height",1e3);m(this,"dpr",Mt());m(this,"vDom");m(this,"eventTragetElement");m(this,"snapshotContainerRef");m(this,"canvasContainerRef",d.createRef());m(this,"subLocalCanvasContainerRef");m(this,"canvasTopRef");m(this,"canvasServiceFloatRef",d.createRef());m(this,"canvasFloatRef",d.createRef());m(this,"canvasBgRef",d.createRef());m(this,"floatBarRef",d.createRef());m(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=d.createRef()),this.control.isUseSimple||(this.canvasTopRef=d.createRef(),this.subLocalCanvasContainerRef=d.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=this.eventTragetElement.offsetWidth||this.width,n=this.eventTragetElement.offsetHeight||this.height,r=Mt();r!==this.dpr&&(this.dpr=r,this.control.worker.updateDpr(this.viewId,this.dpr)),t&&n&&this.canvasContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.canvasContainerRef.current.style.width=`${t}px`,this.canvasContainerRef.current.style.height=`${n}px`),t&&n&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n),t&&n&&this.canvasBgRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.control.isUseOffscreenTransfer||(this.canvasBgRef.current.width=t*this.dpr,this.canvasBgRef.current.height=n*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=t*this.dpr,this.canvasFloatRef.current.height=n*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=t*this.dpr,this.canvasServiceFloatRef.current.height=n*this.dpr),(e=this.canvasTopRef)!=null&&e.current&&(this.canvasTopRef.current.width=t*this.dpr,this.canvasTopRef.current.height=n*this.dpr)))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const t=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const n of t)n.remove()}}}createMainViewDisplayer(e){const t=document.createElement("div");return t.className="appliance-plugin-main-view-displayer",e.appendChild(t),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Zt.render(d.createElement(Vi,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),t),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Ty extends lp{constructor(e,t,n){super(e,t,n);m(this,"dpr",Mt());m(this,"width",1e3);m(this,"height",1e3);m(this,"vDom");m(this,"eventTragetElement");m(this,"canvasContainerRef",d.createRef());m(this,"subLocalCanvasContainerRef");m(this,"canvasTopRef");m(this,"canvasServiceFloatRef",d.createRef());m(this,"canvasFloatRef",d.createRef());m(this,"canvasBgRef",d.createRef());m(this,"floatBarRef",d.createRef());m(this,"containerOffset",{x:0,y:0});this.control.isUseSimple||(this.canvasTopRef=d.createRef(),this.subLocalCanvasContainerRef=d.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=Mt();if(t!==this.dpr&&(this.dpr=t,this.control.worker.updateDpr(this.viewId,this.dpr)),this.canvasContainerRef.current){const n=this.eventTragetElement.offsetWidth||this.width,r=this.eventTragetElement.offsetHeight||this.height;n&&r&&(n!==this.width||r!==this.height)&&(this.width=n,this.height=r,this.canvasContainerRef.current.style.width=`${n}px`,this.canvasContainerRef.current.style.height=`${r}px`)}if(this.canvasBgRef.current){const n=this.eventTragetElement.offsetWidth||this.width,r=this.eventTragetElement.offsetHeight||this.height;n&&r&&(n!==this.width||r!==this.height)&&(this.width=n,this.height=r,this.control.isUseOffscreenTransfer||(this.canvasBgRef.current.width=n*this.dpr,this.canvasBgRef.current.height=r*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=n*this.dpr,this.canvasFloatRef.current.height=r*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=n*this.dpr,this.canvasServiceFloatRef.current.height=r*this.dpr),(e=this.canvasTopRef)!=null&&e.current&&(this.canvasTopRef.current.width=n*this.dpr,this.canvasTopRef.current.height=r*this.dpr)))}}}createAppViewDisplayer(e,t){const n=document.createElement("div");return n.className="appliance-plugin-app-view-displayer",t.appendChild(n),this.eventTragetElement=t.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Zt.render(d.createElement(Vi,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),n),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Pe extends gt{constructor(e){super(e);m(this,"focuedViewId");m(this,"focuedView");m(this,"control");m(this,"tmpFocusedViewId");m(this,"checkScaleTimer");m(this,"onMainViewRelease",async e=>{this.control.textEditorManager.clear(he,!0),this.mainViewDestroy(e),await new Promise(n=>{setTimeout(()=>{n(!0)},0)}),this.onMainViewMounted(e);const t=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(t),this.control.clearSnapshootData()});m(this,"mainViewDestroy",e=>{var t;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const n=e.divElement;if(n){const r=n.getElementsByClassName("appliance-plugin-main-view-displayer");for(const s of r)s.remove()}if(this.mainView.container&&n!==this.mainView.container){const r=this.mainView.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const s of r)s.remove()}(t=this.control.worker)==null||t.destroyViewWorker(this.mainView.id,!0),this.mainView.displayer.destroy(),this.mainView=void 0}});m(this,"onMainViewMounted",e=>{const t=e.divElement;if(!t||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const r=new Ny(this.control,ve.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,l={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...Pe.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...Pe.defaultLayerOpt,width:s,height:a},cameraOpt:{...Pe.defaultCameraOpt,width:s,height:a}},{scale:h,...u}=e.camera;l.cameraOpt={...l.cameraOpt,...u,scale:h===1/0?1:h},this.createMianView({id:he,container:t,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.setFocuedViewId(he),r.createMainViewDisplayer(t),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});m(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData&&this.updateMainViewCamera()});m(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.updateMainViewCamera()});m(this,"updateMainViewCamera",()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera;if(!x.isNumber(e.scale)||e.scale===1/0)return;const t=this.mainView.cameraOpt;if(t){const n=t.width,r=t.height,{width:s,height:a}=this.mainView.viewData.size;(s!==n||a!==r)&&this.mainView.displayer.updateSize();const c=e.scale===1/0?1:e.scale,l=e.centerX||0,h=e.centerY||0,u={...t,scale:c,centerX:l,centerY:h,width:s,height:a};x.isEqual(t,u)||(this.mainView.cameraOpt=u),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 M,y;(y=(M=this.mainView)==null?void 0:M.viewData)==null||y.moveCamera({scale:c,centerX:l,centerY:h,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});m(this,"onAppViewMounted",async e=>{var M;const{appId:t,view:n}=e,r=n.divElement;if(!r||!n.focusScenePath)return;const s=this.appViews.get(t);if(s&&s.displayer){let y=r.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of y)g.remove();if(s.container&&s.container!==r){y=s.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const g of y)g.remove()}this.destroyAppView(e.appId,!0),(M=this.control.worker)==null||M.destroyViewWorker(t,!0),await new Promise(g=>{setTimeout(()=>{g(!0)},0)})}const a=new Ty(t,this.control,ve.InternalMsgEmitter),c=n.size.width||a.width,l=n.size.height||a.height,u={dpr:a.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...Pe.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...Pe.defaultLayerOpt,width:c,height:l},cameraOpt:{...Pe.defaultCameraOpt,...n.camera,width:c,height:l}};if(this.createAppView({id:t,container:r,displayer:a,cameraOpt:u.cameraOpt,focusScenePath:n.focusScenePath,viewData:n}),a.createAppViewDisplayer(t,r),n.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,t)),n.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,t)),n.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===t){const y=this.control.worker.getLocalWorkViewId();y&&y!==t?this.setFocuedViewId(y):this.setFocuedViewId(t),this.tmpFocusedViewId=void 0}setTimeout(()=>{this.onAppViewCameraUpdated(t)},0)});m(this,"onAppViewSizeUpdated",async e=>{await new Promise(n=>{setTimeout(()=>{n(!0)},0)});const t=this.appViews.get(e);t&&t.viewData&&this.updateAppCamera(e)});m(this,"onAppViewCameraUpdated",async e=>{await new Promise(t=>{setTimeout(()=>{t(!0)},0)}),this.updateAppCamera(e)});m(this,"updateAppCamera",e=>{const t=this.appViews.get(e);if(t&&t.viewData){const n=t.viewData.camera,r=t.cameraOpt;if(r){const{width:s,height:a}=t.viewData.size,c=r.width,l=r.height;(s!==c||a!==l)&&t.displayer.updateSize();const h=n.scale===1/0?1:n.scale,u=n.centerX||0,M=n.centerY||0,y={...r,scale:h,centerX:u,centerY:M,width:s,height:a};x.isEqual(y,r)||(t.cameraOpt=y)}}});this.control=e.control}getViewInitData(e){var n;const t=this.getView(e);if(t){const{width:r,height:s,dpr:a}=t.displayer;(n=this.control.pluginOptions.extras.canvasOpt)!=null&&n.contextType&&(Pe.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.extras.canvasOpt.contextType);const c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Pe.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Pe.defaultLayerOpt,width:r,height:s},cameraOpt:{...Pe.defaultCameraOpt,width:r,height:s}};if(t.viewData){const{scale:l,...h}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...h,scale:l===1/0?1:l}}return c}}async mountView(e){var n,r,s;const t=this.getView(e);if(t){e===((n=this.mainView)==null?void 0:n.id)&&(this.control.cursor.activeCollector(),await this.control.activeWorker()),this.control.isUseOffscreenTransfer&&t.displayer.canvasBgRef.current&&t.displayer.canvasServiceFloatRef.current&&t.displayer.canvasFloatRef.current&&t.displayer.setTransferControlToOffscreenCanvas({bgCanvas:t.displayer.canvasBgRef.current,serviceCanvas:t.displayer.canvasServiceFloatRef.current,localCanvas:t.displayer.canvasFloatRef.current});const a=this.getViewInitData(e);if(a&&((r=this.control.worker)==null||r.createViewWorker(e,a,t.displayer)),t.focusScenePath&&this.control.collector){if(this.control.collector.authStorage){const{renderAuth:c,pageAuth:l}=this.control.collector.authStorage;if(c){const h=c[e];if(h){const{render:u,hide:M,clear:y}=h;this.control.renderControl.syncRenderUids(e,u,M,y);return}}if(l){const h=l[e];if(h){this.control.renderControl.syncPageAuth(e,h,!0);return}}}this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1}),this.control.pluginOptions.extras.undoRedo.enableGlobal&&t.displayer.commiter&&((s=this.control.collector)!=null&&s.globalUndoRedoStackStorage[t.id])&&t.displayer.commiter.pullServiceData(this.control.collector.globalUndoRedoStackStorage[t.id])}}}listenerWindowManager(e){e.emitter.on("focusedChange",t=>{const n=t||he;if(this.focuedViewId!==n)if(this.getView(n)){const s=this.control.worker.getLocalWorkViewId();s&&s!==n?this.setFocuedViewId(s):this.setFocuedViewId(n)}else this.tmpFocusedViewId=n}),e.emitter.on("mainViewScenePathChange",t=>{this.control.onSceneChange(t,he)}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",t=>{this.appViews.get(t.appId)&&(this.destroyAppView(t.appId),this.control.worker.destroyViewWorker(t.appId))}),e.emitter.on("onAppScenePathChange",t=>{const{appId:n,view:r}=t;this.control.onSceneChange(r.focusScenePath,n)}),e.emitter.on("appsChange",t=>{for(const n of this.appViews.keys())t.includes(n)||(this.destroyAppView(n),this.control.worker.destroyViewWorker(n,!0))})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class et extends ve{constructor(e){super(e);m(this,"windowManager");m(this,"viewContainerManager");const t={control:this,internalMsgEmitter:ve.InternalMsgEmitter,publicMsgEmitter:ve.PublicMsgEmitter};this.viewContainerManager=new Pe(t)}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,t)=>{e&&Object.keys(e).forEach(n=>{var s;const r=(s=e[n])==null?void 0:s.newValue;this.renderControl.syncRenderUids(n,r==null?void 0:r.render,r==null?void 0:r.hide,r==null?void 0:r.clear)}),t&&Object.keys(t).forEach(n=>{var s;const r=(s=t[n])==null?void 0:s.newValue;this.renderControl.syncPageAuth(n,r)})}),this.collector.addStorageStateListener(e=>{var a,c;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(he,!0);return}const{diffView:t,diffScenePath:n,diffData:r}=e,s=new Map;if(t){let l;Object.keys(t).forEach(h=>{var M;const u=t[h];if(u&&!u.newValue)(M=this.worker)==null||M.clearViewScenePath(h,!0),u.oldValue&&(l=u.oldValue);else if(u&&u.newValue){for(const y of Object.keys(u.newValue))this.worker.pullServiceData(h,y,{isAsync:!1,useAnimation:!1});l=u.newValue}if(l)for(const y of Object.values(l)){const g=new Set;for(const I of Object.keys(y))I&&g.add(I);s.set(h,g)}})}if(n){let l;Object.keys(n).forEach(h=>{var M;const u=n[h];if(u&&u.viewId&&!u.newValue?((M=this.worker)==null||M.clearViewScenePath(u.viewId,!0),u.oldValue&&(l=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!1}),l=u.newValue),u!=null&&u.viewId&&l){const y=new Set;for(const g of Object.keys(l))g&&y.add(g),s.set(u.viewId,y)}})}r&&Object.keys(r).forEach(l=>{var u,M;const h=r[l];if(h){const{viewId:y}=h,g=s.get(y)||new Set;g.add(l),s.set(y,g),(u=this.worker)==null||u.onServiceDerive(l,h),(M=this.miniMapManager)==null||M.updateMiniMapCamera(y)}});for(const[l,h]of s.entries())ve.InternalMsgEmitter.emit("excludeIds",[...h],l)}),this.pluginOptions.extras.undoRedo.enableGlobal&&this.collector.addGlobalUndoRedoStackListener(e=>{Object.keys(e).forEach(t=>{var s;const n=e[t],r=(s=this.viewContainerManager.getView(t))==null?void 0:s.displayer.commiter;r&&r.pullServiceData(n==null?void 0:n.newValue)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var t,n;(t=this.collector)!=null&&t.serviceStorage&&this.viewContainerManager.getAllViews().forEach(r=>{var s,a,c,l;if(r&&r.focusScenePath&&((s=this.collector)!=null&&s.serviceStorage[r.id])&&this.collector.serviceStorage[r.id][r.focusScenePath]){const h=Object.keys(this.collector.serviceStorage[r.id][r.focusScenePath]);for(const u of h){const M=(a=this.collector)==null?void 0:a.getUidFromKey(u);if(M&&!e.online.includes(M))if((c=this.collector)!=null&&c.isSelector(u))this.renderControl.isWritable&&((l=this.collector)==null||l.updateValue(u,void 0,{viewId:r.id,scenePath:r.focusScenePath,isSync:!0})),this.worker.blurSelector(r.id,r.focusScenePath,u);else{const y=this.textEditorManager.editors.get(u);y&&y.opt&&(y.opt.workState===D.Doing||y.opt.workState===D.Start)&&(y.opt.text&&y.opt.text.replace(/\s*,/g,"")?this.textEditorManager.unActive(u):this.textEditorManager.delete(u))}}}}),(n=this.cursor)==null||n.updateRoomMembers(e)}))}async activeWorker(){await this.worker.init()}setWindowManager(e){var t,n,r,s,a;this.windowManager=e,(n=(t=this.windowManager)==null?void 0:t.mainView)!=null&&n.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 E=class E extends Q.InvisiblePlugin{constructor(){super(...arguments);m(this,"onPhaseChanged",e=>{var t;e===Q.RoomPhase.Reconnecting&&((t=E.currentManager)==null||t.setSnapshootData())});m(this,"updateRoomWritable",()=>{var e;(e=E.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});m(this,"roomStateChangeListener",async e=>{var t,n;e!=null&&e.roomMembers&&((t=E.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(Q.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((n=E.currentManager)==null||n.onMemberChange(e.memberState))})}static async getInstance(e,t){var w;t.options&&(((w=t.options.extras)==null?void 0:w.useWorker)==="mainThread"&&(t.options.cdn.fullWorkerUrl="",t.options.cdn.subWorkerUrl=""),(t.options.extras&&t.options.extras.useWorker!=="mainThread"||!t.options.extras)&&!t.options.cdn.fullWorkerUrl&&!t.options.cdn.subWorkerUrl&&E.logger.error("[ApplianceMultiPlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl"));const n=e.displayer,r=n.callbacks.on,s=n.callbacks.off,a=n.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState;let h;Q.isRoom(n)&&(h=n.setWritable),t!=null&&t.logger&&(E.logger=t.logger);let u=n.getInvisiblePlugin(E.kind);u||(u=await E.createApplianceMultiPlugin(n,E.kind)),n&&u&&E.createCurrentManager(e,{cdn:t.options.cdn,extras:{...we,...t.options.extras}},u);const M={displayer:n,windowManager:e,currentManager:E.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(p){var S;E.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const f=(e.mainView||n).getBoundingRect(p),N=await((S=E.currentManager)==null?void 0:S.getBoundingRect(p));return!f.width||!f.height?N:Fi(f,N)},screenshotToCanvasAsync:async function(p,f,N,S,v,j){var A;E.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let C=N,k=S,P=v.scale;C>this.maxScreenshotWidth&&(P=this.maxScreenshotWidth/C*P,C=this.maxScreenshotWidth),k>this.maxScreenshotHeight&&(P=Math.min(this.maxScreenshotHeight/k*P,P),k=this.maxScreenshotHeight),v.scale=P;const L=document.createElement("canvas"),O=L.getContext("2d");L.width=C*(j||1),L.height=k*(j||1),O&&((e.mainView||n).screenshotToCanvas(O,f,C,k,v,j),p.drawImage(L,Math.floor((N-C)/2),Math.floor((S-k)/2),C*(j||1),k*(j||1),0,0,C,k),L.remove()),E.currentManager&&await((A=E.currentManager)==null?void 0:A.screenshotToCanvas(p,f,C,k,v,Math.floor((N-C)/2),Math.floor((S-k)/2)))},scenePreviewAsync:async function(p,f,N,S,v){E.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||n).scenePreview(p,f,N,S,v);const j=document.createElement("img");j.className="appliance-plugin-fill-scene-snapshot-img",f.append(j),getComputedStyle(f).position||(f.style.position="relative"),E.currentManager&&await E.currentManager.scenePreview(p,j)},fillSceneSnapshotAsync:async function(p,f,N,S,v){E.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),f.innerHTML="",(e.mainView||n).fillSceneSnapshot(p,f,N,S,v);const j=N||e.mainView.size.width,C=S||e.mainView.size.height;let k=await this.getBoundingRectAsync(p);k||(k={originX:0,originY:0,width:j,height:C});let P=Math.max(k==null?void 0:k.width,j),L=Math.max(k==null?void 0:k.height,C),O=1;const A=P>j&&Math.min(j/P,O)||O,R=L>C&&Math.min(C/L,O)||O;A<=R?(P=A<1&&j||P,L=Math.floor(L*A)+1,O=A):A>R&&(L=R<1&&C||L,P=Math.floor(P*R)+1,O=R);const z={scale:O,centerX:k.originX+k.width/2,centerY:k.originY+k.height/2},V=document.createElement("canvas"),_=V.getContext("2d");V.width=P,V.height=L,_&&await this.screenshotToCanvasAsync(_,p,P,L,z,devicePixelRatio);const B=document.createElement("img");B.className="appliance-plugin-fill-scene-snapshot-img",B.src=V.toDataURL(),B.onload=()=>{V.remove()},B.onerror=()=>{V.remove(),B.remove()},f.append(B),getComputedStyle(f).position||(f.style.position="relative")},_callbacksOn:function(p,f){E.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&Q.isRoom(n)&&n.isWritable?et.InternalMsgEmitter.on(p,f):r.call(n.callbacks,p,f)},_callbacksOnce:function(p,f){E.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&Q.isRoom(n)&&n.isWritable?et.InternalMsgEmitter.on(p,f):a.call(n.callbacks,p,f)},_callbacksOff:function(p,f){E.logger.info(`[ApplianceMultiPlugin] callbacks ${p}`),(p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&Q.isRoom(n)&&n.isWritable?et.InternalMsgEmitter.off(p,f):s.call(n.callbacks,p,f)},canRedoSteps(){if(E.logger.info("[ApplianceMultiPlugin] canRedoSteps"),E.currentManager&&Q.isRoom(n)&&!n.disableSerialization){const p=E.currentManager.viewContainerManager.focuedView,f=p==null?void 0:p.focusScenePath;if(p&&f)return p.displayer.commiter.redoStack.filter(N=>N.scenePath===f).length}return 0},canUndoSteps(){if(E.logger.info("[ApplianceMultiPlugin] canUndoSteps"),E.currentManager&&Q.isRoom(n)&&!n.disableSerialization){const p=E.currentManager.viewContainerManager.focuedView,f=p==null?void 0:p.focusScenePath;if(p&&f)return p.displayer.commiter.undoStack.filter(v=>v.scenePath===f).length}return 0},undo:function(){return E.logger.info("[ApplianceMultiPlugin] undo"),E.currentManager&&Q.isRoom(n)&&!n.disableSerialization&&n.isWritable?E.currentManager.viewContainerManager.undo():0},redo:function(){return E.logger.info("[ApplianceMultiPlugin] redo"),E.currentManager&&Q.isRoom(n)&&!n.disableSerialization&&n.isWritable?E.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){E.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),E.currentManager&&Q.isRoom(n)&&n.isWritable&&(E.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(p){if(E.logger.info("[ApplianceMultiPlugin] insertImage"),E.currentManager&&Q.isRoom(n)&&n.isWritable){const f=E.currentManager.viewContainerManager.focuedViewId||he;E.currentManager.worker.insertImage(f,p)}},lockImage:function(p,f){if(E.logger.info("[ApplianceMultiPlugin] lockImage"),E.currentManager&&Q.isRoom(n)&&n.isWritable){const N=E.currentManager.viewContainerManager.focuedViewId||he;E.currentManager.worker.lockImage(N,p,f)}},completeImageUpload:function(p,f){if(E.logger.info("[ApplianceMultiPlugin] completeImageUpload"),E.currentManager&&Q.isRoom(n)&&n.isWritable){const N=E.currentManager.viewContainerManager.focuedViewId||he;E.currentManager.worker.completeImageUpload(N,p,f)}},getImagesInformation:function(p){return E.logger.info("[ApplianceMultiPlugin] completeImageUpload"),E.currentManager&&Q.isRoom(n)&&n.isWritable?E.currentManager.worker.getImagesInformation(p):[]},insertText:function(p,f,N){if(E.logger.info("[ApplianceMultiPlugin] insertText"),E.currentManager&&Q.isRoom(n)&&n.isWritable){const S=E.currentManager.viewContainerManager.focuedViewId||he;return E.currentManager.textEditorManager.insertText(S,p,f,N)}},updateText:function(p,f){E.logger.info("[ApplianceMultiPlugin] updateText"),E.currentManager&&Q.isRoom(n)&&n.isWritable&&E.currentManager.textEditorManager.updateText(p,f)},callbacks:()=>(E.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...n.callbacks,on:M._callbacksOn.bind(M),once:M._callbacksOnce.bind(M),off:M._callbacksOff.bind(M)}),destroy(){E.currentManager&&(E.logger.info("[ApplianceMultiPlugin] destroy"),E.currentManager.destroy(),E.currentManager=void 0)},setMemberState(p){var N;E.logger.info(`[ApplianceMultiPlugin] setMemberState ${JSON.stringify(p)}`);const f=Object.keys(p);if(Q.isRoom(n)&&n.isWritable){if(f.includes("currentApplianceName"))if(p.currentApplianceName&&p.currentApplianceName===te.laserPen){if((N=E.currentManager)!=null&&N.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");p.currentApplianceName=te.pencil,p.useLaserPen=!0}else p.currentApplianceName&&p.currentApplianceName===te.pencil&&(p.useLaserPen=!1);l.call(e.mainView,p);return}throw new Error("[ApplianceMultiPlugin] setMemberState must be called in writable room")},createMiniMap:async function(p,f){if(E.logger.info("[ApplianceMultiPlugin] createMiniMap"),E.currentManager&&Q.isRoom(n)&&n.isWritable)return E.currentManager.createMiniMap(p,f)},destroyMiniMap:async function(p){if(E.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),E.currentManager&&Q.isRoom(n)&&n.isWritable)return E.currentManager.destroyMiniMap(p)},filterRenderByUid(p,f,N){if(E.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),E.currentManager&&Q.isRoom(n)&&n.isWritable)return E.currentManager.filterRenderByUid(p,f,N)},cancelFilterRender(p,f){if(E.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),E.currentManager&&Q.isRoom(n)&&n.isWritable)return E.currentManager.cancelFilterRender(p,f)},addListener:(p,f)=>{E.logger.info(`[ApplianceMultiPlugin] addListener ${p}`),et.PublicMsgEmitter.on(p,f)},removeListener:(p,f)=>{E.logger.info(`[ApplianceMultiPlugin] removeListener ${p}`),et.PublicMsgEmitter.off(p,f)},usePlugin:p=>{var f;E.logger.info("[ApplianceMultiPlugin] usePlugin",p.kind),(f=E.currentManager)==null||f.usePlugin(p)},getDisableDeviceInputs(){if(E.currentManager&&Q.isRoom(n))return E.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){E.logger.info(`[ApplianceMultiPlugin] setDisableDeviceInputs ${p}`),E.currentManager&&Q.isRoom(n)&&(E.currentManager.disableDeviceInputs=p)},getDisableCameraTransform(){if(E.currentManager&&Q.isRoom(n))return E.currentManager.disableCameraTransform},setDisableCameraTransform(p){E.logger.info(`[ApplianceMultiPlugin] setDisableCameraTransform ${p}`),E.currentManager&&Q.isRoom(n)&&(E.currentManager.disableCameraTransform=p)},getDisableEraseImage(){if(E.currentManager&&Q.isRoom(n))return E.currentManager.disableEraseImage},setDisableEraseImage(p){E.logger.info(`[ApplianceMultiPlugin] setDisableEraseImage ${p}`),E.currentManager&&Q.isRoom(n)&&(E.currentManager.disableEraseImage=p)},setWritable:async function(p){var f;E.logger.info(`[ApplianceMultiPlugin] setWritable ${p}`),Q.isRoom(n)&&h&&(await((f=E.currentManager)==null?void 0:f.setWritable(p)),await h.call(n,p))},requestIdleCallback:(p,f)=>{const N=(f==null?void 0:f.timeout)||0,S=performance.now();let v;const j=new MessageChannel;let C;const k=P=>{try{p({didTimeout:P,timeRemaining:()=>{const O=performance.now()-S;return Math.max(0,N-O)}})}catch(L){E.logger.error("[ApplianceMultiPlugin] requestIdleCallback error:",L)}finally{j.port1.close(),j.port2.close(),v!==void 0&&cancelAnimationFrame(v),C!==void 0&&clearTimeout(C)}};return j.port1.onmessage=()=>{v=requestAnimationFrame(()=>{N>0&&performance.now()-S>=N?k(!0):k(!1)})},j.port2.postMessage(null),N>0&&(C=setTimeout(()=>{k(!0)},N)),C||v||0},cancelIdleCallback:p=>{try{clearTimeout(p),cancelAnimationFrame(p)}catch(f){E.logger.error("[ApplianceMultiPlugin] cancelIdleCallback error:",f)}},injectMethodToObject:(p,f)=>{if(E.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${f}`),typeof p[f]=="function"||typeof p[f]>"u"){(f==="requestIdleCallback"||f==="cancelIdleCallback")&&E.currentManager&&E.currentManager.registerPolyfillMethod(f),p[f]=M[f];return}f==="callbacks"&&(p.callbacks.on=M._callbacksOn.bind(M),p.callbacks.off=M._callbacksOff.bind(M),p.callbacks.once=M._callbacksOnce.bind(M))},blurText:()=>{E.logger.info("[ApplianceMultiPlugin] blurText"),E.currentManager&&Q.isRoom(n)&&n.isWritable&&E.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(p,f)=>{var N;if(E.logger.info(`[ApplianceMultiPlugin] hasElements ${p}`),E.currentManager&&Q.isRoom(n)&&n.isWritable){let S=p;if(!S){const v=E.currentManager.viewContainerManager.focuedView;S=v==null?void 0:v.focusScenePath}if(S){const v=(N=E.currentManager.collector)==null?void 0:N.getScenePathData(S);if(v){const j=Object.values(v);return j.length>0?f?j.some(C=>f(C.toolsType)):!0:!1}return!1}return!1}},getElements:(p,f)=>{var N;if(E.logger.info(`[ApplianceMultiPlugin] getElements ${p}`),E.currentManager&&Q.isRoom(n)&&n.isWritable){let S=p;if(!S){const v=E.currentManager.viewContainerManager.focuedView;S=v==null?void 0:v.focusScenePath}if(S){const v=(N=E.currentManager.collector)==null?void 0:N.getScenePathData(S),j=v&&Object.values(v)||[];return v&&j.length>0&&f?j.filter(C=>f(C.toolsType)):j}return[]}},stopDraw:p=>{if(E.logger.info(`[ApplianceMultiPlugin] stopDraw ${p}`),E.currentManager&&Q.isRoom(n))return E.currentManager.stopDraw(p)},setViewLocalScenePathChange:async(p,f)=>{E.logger.info(`[ApplianceMultiPlugin] setViewLocalScenePathChange ${p} ${f}`),E.currentManager&&await E.currentManager.setViewLocalScenePathChange(f,p)}};M.injectMethodToObject(e,"undo"),M.injectMethodToObject(e,"redo"),M.injectMethodToObject(e,"cleanCurrentScene"),M.injectMethodToObject(e,"insertImage"),M.injectMethodToObject(e,"completeImageUpload"),M.injectMethodToObject(e,"lockImage"),M.injectMethodToObject(e,"insertText"),M.injectMethodToObject(e,"updateText"),M.injectMethodToObject(n,"getImagesInformation"),M.injectMethodToObject(n,"callbacks"),M.injectMethodToObject(n,"screenshotToCanvasAsync"),M.injectMethodToObject(n,"getBoundingRectAsync"),M.injectMethodToObject(n,"scenePreviewAsync"),M.injectMethodToObject(n,"fillSceneSnapshotAsync"),M.injectMethodToObject(e.mainView,"setMemberState"),Q.isRoom(n)&&M.injectMethodToObject(n,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return M.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return M.canRedoSteps()}});const y=(p,f,N=3)=>{const S=e.focused||he;N>0&&S!==p?setTimeout(()=>{y(p,f,N-1)},100):e.emitter.emit("canUndoStepsChange",f)};et.InternalMsgEmitter.on("onCanUndoStepsUpdate",(p,f)=>{y(f,p)});const g=(p,f,N=3)=>{const S=e.focused||he;N>0&&S!==p?setTimeout(()=>{g(p,f,N-1)},100):e.emitter.emit("canRedoStepsChange",f)};et.InternalMsgEmitter.on("onCanRedoStepsUpdate",(p,f)=>{g(f,p)});const I={...M,callbacks:M.callbacks()};return Object.defineProperty(I,"disableDeviceInputs",{set(p){M.setDisableDeviceInputs(p)},get(){return M.getDisableDeviceInputs()}}),Object.defineProperty(I,"disableCameraTransform",{set(p){M.setDisableCameraTransform(p)},get(){return M.getDisableCameraTransform()}}),Object.defineProperty(I,"disableEraseImage",{set(p){M.setDisableEraseImage(p)},get(){return M.getDisableEraseImage()}}),u&&E.currentManager&&(E.currentManager.bindPlugin(u),u.init(n)),e._appliancePlugin=I,e._appliancePlugin}static onCreate(e){e&&E.currentManager&&(E.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,t){try{await e.createInvisiblePlugin(E,{})}catch(r){if(!e.isWritable){await e.setWritable(!0);const s=await this.createApplianceMultiPlugin(e,t);return await e.setWritable(!1),s}throw r}let n=e.getInvisiblePlugin(t);return n||(n=await E.createApplianceMultiPlugin(e,t)),n}get isReplay(){return Q.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var n,r;const t=e.state;(n=E.currentManager)==null||n.onRoomMembersChange(t.roomMembers),Q.isRoom(e)&&((r=E.currentManager)==null||r.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;E.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=E.currentManager)==null||e.destroy(),E.currentManager=void 0}};m(E,"kind","appliance-multi-plugin"),m(E,"currentManager"),m(E,"logger",{info:console.log,warn:console.warn,error:console.error}),m(E,"createCurrentManager",(e,t,n)=>{E.currentManager&&E.currentManager.destroy();const r={plugin:n,displayer:e.displayer,options:t},s=new et(r);if(E.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),E.currentManager=s,e.room){const a=s.hasOffscreenCanvas;e.room.logger.info(`[ApplianceMultiPlugin] use ${a?"worker":"mainThread"}`)}});let vi=E;var vy=Be,Cy=function(){return vy.Date.now()},Sy=Cy,jy=/\s/;function Dy(o){for(var i=o.length;i--&&jy.test(o.charAt(i)););return i}var xy=Dy,zy=xy,Ay=/^\s+/;function by(o){return o&&o.slice(0,zy(o)+1).replace(Ay,"")}var ky=by,Ey=pt,Ly=it,Py="[object Symbol]";function Oy(o){return typeof o=="symbol"||Ly(o)&&Ey(o)==Py}var Ry=Oy,Yy=ky,An=nt,Uy=Ry,bn=NaN,Wy=/^[-+]0x[0-9a-f]+$/i,By=/^0b[01]+$/i,Fy=/^0o[0-7]+$/i,Qy=parseInt;function Vy(o){if(typeof o=="number")return o;if(Uy(o))return bn;if(An(o)){var i=typeof o.valueOf=="function"?o.valueOf():o;o=An(i)?i+"":i}if(typeof o!="string")return o===0?o:+o;o=Yy(o);var e=By.test(o);return e||Fy.test(o)?Qy(o.slice(2),e?2:8):Wy.test(o)?bn:+o}var Zy=Vy,Hy=nt,ci=Sy,kn=Zy,$y="Expected a function",Gy=Math.max,Jy=Math.min;function qy(o,i,e){var t,n,r,s,a,c,l=0,h=!1,u=!1,M=!0;if(typeof o!="function")throw new TypeError($y);i=kn(i)||0,Hy(e)&&(h=!!e.leading,u="maxWait"in e,r=u?Gy(kn(e.maxWait)||0,i):r,M="trailing"in e?!!e.trailing:M);function y(j){var C=t,k=n;return t=n=void 0,l=j,s=o.apply(k,C),s}function g(j){return l=j,a=setTimeout(p,i),h?y(j):s}function I(j){var C=j-c,k=j-l,P=i-C;return u?Jy(P,r-k):P}function w(j){var C=j-c,k=j-l;return c===void 0||C>=i||C<0||u&&k>=r}function p(){var j=ci();if(w(j))return f(j);a=setTimeout(p,I(j))}function f(j){return a=void 0,M&&t?y(j):(t=n=void 0,s)}function N(){a!==void 0&&clearTimeout(a),l=0,t=c=n=a=void 0}function S(){return a===void 0?s:f(ci())}function v(){var j=ci(),C=w(j);if(t=arguments,n=this,c=j,C){if(a===void 0)return g(c);if(u)return clearTimeout(a),a=setTimeout(p,i),y(c)}return a===void 0&&(a=setTimeout(p,i)),s}return v.cancel=N,v.flush=S,v}var Xy=qy,Ky=Xy,_y=nt,eI="Expected a function";function tI(o,i,e){var t=!0,n=!0;if(typeof o!="function")throw new TypeError(eI);return _y(e)&&(t="leading"in e?!!e.leading:t,n="trailing"in e?!!e.trailing:n),Ky(o,i,{leading:t,maxWait:i,trailing:n})}var iI=tI;const nI=Ht(iI);class oI extends No{constructor(e,t){super(e,t);m(this,"width",1e3);m(this,"height",1e3);m(this,"dpr",Mt());m(this,"vDom");m(this,"eventTragetElement");m(this,"snapshotContainerRef");m(this,"canvasContainerRef",d.createRef());m(this,"subLocalCanvasContainerRef");m(this,"canvasTopRef");m(this,"canvasServiceFloatRef",d.createRef());m(this,"canvasFloatRef",d.createRef());m(this,"canvasBgRef",d.createRef());m(this,"floatBarRef",d.createRef());m(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=d.createRef()),this.control.isUseSimple||(this.canvasTopRef=d.createRef(),this.subLocalCanvasContainerRef=d.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=this.eventTragetElement.offsetWidth,n=this.eventTragetElement.offsetHeight,r=Mt();r!==this.dpr&&(this.dpr=r,this.control.worker.updateDpr(this.viewId,this.dpr)),t&&n&&this.canvasContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n),t&&n&&this.canvasBgRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.control.isUseOffscreenTransfer||(this.canvasBgRef.current.width=t*this.dpr,this.canvasBgRef.current.height=n*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=t*this.dpr,this.canvasFloatRef.current.height=n*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=t*this.dpr,this.canvasServiceFloatRef.current.height=n*this.dpr),(e=this.canvasTopRef)!=null&&e.current&&(this.canvasTopRef.current.width=t*this.dpr,this.canvasTopRef.current.height=n*this.dpr)))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",Zt.render(d.createElement(Vi,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Xe extends gt{constructor(e){super(e);m(this,"focuedViewId");m(this,"control");m(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new oI(this.control,ve.InternalMsgEmitter),{width:t,height:n,dpr:r}=e,s={dpr:r,originalPoint:[t/2,n/2],offscreenCanvasOpt:{...Xe.defaultScreenCanvasOpt,width:t,height:n},layerOpt:{...Xe.defaultLayerOpt,width:t,height:n},cameraOpt:{...Xe.defaultCameraOpt,width:t,height:n}},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:he,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:s.cameraOpt,viewData:a}),this.setFocuedViewId(he),e.createMainViewDisplayer(this.control.divMainView)}}getViewInitData(e){var n;const t=this.getView(e);if(t){const{width:r,height:s,dpr:a}=t.displayer;(n=this.control.pluginOptions.extras.canvasOpt)!=null&&n.contextType&&(Xe.defaultScreenCanvasOpt.contextType=this.control.pluginOptions.extras.canvasOpt.contextType);const c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Xe.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Xe.defaultLayerOpt,width:r,height:s},cameraOpt:{...Xe.defaultCameraOpt,width:r,height:s}};if(t.viewData){const{scale:l,...h}=t.viewData.camera;c.cameraOpt={...c.cameraOpt,...h,scale:l===1/0?1:l}}return c}}async mountView(e){var n;const t=this.getView(e);if(t){this.control.worker.isActive||(this.control.cursor.activeCollector(),this.control.isUseOffscreenTransfer&&t.displayer.canvasBgRef.current&&t.displayer.canvasServiceFloatRef.current&&t.displayer.canvasFloatRef.current&&t.displayer.setTransferControlToOffscreenCanvas({bgCanvas:t.displayer.canvasBgRef.current,serviceCanvas:t.displayer.canvasServiceFloatRef.current,localCanvas:t.displayer.canvasFloatRef.current}),await this.control.activeWorker());const r=this.getViewInitData(e);r&&((n=this.control.worker)==null||n.createViewWorker(e,r,t.displayer)),t.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,t.focusScenePath,{isAsync:!0,useAnimation:!1})}}}class Oe extends ve{constructor(e){super(e);m(this,"viewContainerManager");m(this,"divMainView");m(this,"onCameraChange",nI(e=>{var n;const t=this.viewContainerManager.mainView;t&&t.cameraOpt&&(t.cameraOpt.width!==e.width||t.cameraOpt.height!==e.height)&&((n=this.viewContainerManager.mainView)==null||n.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},Di,{leading:!1}));const t={control:this,internalMsgEmitter:Oe.InternalMsgEmitter,publicMsgEmitter:Oe.PublicMsgEmitter};this.viewContainerManager=new Xe(t)}init(){Oe.InternalMsgEmitter.on(ee.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 a,c;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){(c=this.worker)==null||c.clearViewScenePath(he,!0);return}const{diffView:t,diffScenePath:n,diffData:r}=e,s=new Map;if(t){let l;Object.keys(t).forEach(h=>{var M;const u=t[h];if(u&&!u.newValue)(M=this.worker)==null||M.clearViewScenePath(h,!0),u.oldValue&&(l=u.oldValue);else if(u&&u.newValue){for(const y of Object.keys(u.newValue))this.worker.pullServiceData(h,y,{isAsync:!1,useAnimation:!0});l=u.newValue}if(l)for(const y of Object.values(l)){const g=new Set;for(const I of Object.keys(y))I&&g.add(I);s.set(h,g)}})}if(n){let l;Object.keys(n).forEach(h=>{var M;const u=n[h];if(u&&u.viewId&&!u.newValue?((M=this.worker)==null||M.clearViewScenePath(u.viewId,!0),u.oldValue&&(l=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!0}),l=u.newValue),u!=null&&u.viewId&&l){const y=new Set;for(const g of Object.keys(l))g&&y.add(g),s.set(u.viewId,y)}})}r&&Object.keys(r).forEach(l=>{var u,M;const h=r[l];if(h){const{viewId:y}=h,g=s.get(y)||new Set;g.add(l),s.set(y,g),(u=this.worker)==null||u.onServiceDerive(l,h),(M=this.miniMapManager)==null||M.updateMiniMapCamera(y)}});for(const[l,h]of s.entries())ve.InternalMsgEmitter.emit("excludeIds",[...h],l)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var t;(t=this.collector)!=null&&t.serviceStorage&&this.viewContainerManager.getAllViews().forEach(n=>{var r,s,a,c,l,h;if(n&&n.focusScenePath&&((r=this.collector)!=null&&r.serviceStorage[n.id])&&((s=this.collector)!=null&&s.serviceStorage[n.id][n.focusScenePath])){const u=Object.keys((a=this.collector)==null?void 0:a.serviceStorage[n.id][n.focusScenePath]);for(const M of u){const y=(c=this.collector)==null?void 0:c.getUidFromKey(M);if(y&&!e.online.includes(y))if((l=this.collector)!=null&&l.isSelector(M))this.renderControl.isWritable&&((h=this.collector)==null||h.updateValue(M,void 0,{viewId:n.id,scenePath:n.focusScenePath,isSync:!0})),this.worker.blurSelector(n.id,n.focusScenePath,M);else{const g=this.textEditorManager.editors.get(M);g&&g.opt&&(g.opt.workState===D.Doing||g.opt.workState===D.Start)&&(g.opt.text&&g.opt.text.replace(/\s*,/g,"")?this.textEditorManager.unActive(M):this.textEditorManager.delete(M))}}}})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.worker.init()}}const b=class b extends Q.InvisiblePlugin{constructor(){super(...arguments);m(this,"onPhaseChanged",e=>{var t;e===Q.RoomPhase.Reconnecting&&((t=b.currentManager)==null||t.setSnapshootData())});m(this,"updateRoomWritable",()=>{var e;(e=b.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});m(this,"roomStateChangeListener",async e=>{var t,n;b.currentManager instanceof Oe&&(e.cameraState&&b.currentManager.onCameraChange(e.cameraState),e.sceneState&&b.currentManager.onSceneChange(e.sceneState.scenePath,he)),e!=null&&e.roomMembers&&((t=b.currentManager)==null||t.onRoomMembersChange(e.roomMembers)),!(Q.isRoom(this.displayer)&&!this.displayer.isWritable)&&e.memberState&&((n=b.currentManager)==null||n.onMemberChange(e.memberState))})}static async getInstance(e,t){var y;t.options&&(((y=t.options.extras)==null?void 0:y.useWorker)==="mainThread"&&(t.options.cdn.fullWorkerUrl="",t.options.cdn.subWorkerUrl=""),(t.options.extras&&t.options.extras.useWorker!=="mainThread"||!t.options.extras)&&!t.options.cdn.fullWorkerUrl&&!t.options.cdn.subWorkerUrl&&b.logger.error("[ApplianceSinglePlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl"));const n=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene.bind(e),c=e.setMemberState.bind(e);let l;Q.isRoom(e)&&(l=e.setWritable),t!=null&&t.logger&&(b.logger=t.logger);let h=e.getInvisiblePlugin(b.kind);h||(h=await b.createAppliancePlugin(e,b.kind)),e&&h&&b.createCurrentManager(e,{cdn:t.options.cdn,extras:{...we,...t.options.extras}},h),h&&b.currentManager&&(b.currentManager.bindPlugin(h),h.init(e)),t!=null&&t.cursorAdapter&&(b.cursorAdapter=t.cursorAdapter),b.effectInstance();const u={displayer:e,currentManager:b.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var p;b.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const I=e.getBoundingRect(g),w=await((p=b.currentManager)==null?void 0:p.getBoundingRect(g));return!I.width||!I.height?w:Fi(I,w)},screenshotToCanvasAsync:async function(g,I,w,p,f,N){var P;b.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let S=w,v=p,j=f.scale;S>this.maxScreenshotWidth&&(j=this.maxScreenshotWidth/S*j,S=this.maxScreenshotWidth),v>this.maxScreenshotHeight&&(j=Math.min(this.maxScreenshotHeight/v*j,j),v=this.maxScreenshotHeight),f.scale=j;const C=document.createElement("canvas"),k=C.getContext("2d");C.width=S*(N||1),C.height=v*(N||1),k&&(e.screenshotToCanvas(k,I,S,v,f,N),g.drawImage(C,Math.floor((w-S)/2),Math.floor((p-v)/2),S*(N||1),v*(N||1),0,0,S,v),C.remove()),b.currentManager&&await((P=b.currentManager)==null?void 0:P.screenshotToCanvas(g,I,S,v,f,Math.floor((w-S)/2),Math.floor((p-v)/2)))},scenePreviewAsync:async function(g,I,w,p,f){b.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(g,I,w,p,f);const N=document.createElement("img");N.className="appliance-plugin-fill-scene-snapshot-img",I.append(N),getComputedStyle(I).position||(I.style.position="relative"),b.currentManager&&await b.currentManager.scenePreview(g,N)},fillSceneSnapshotAsync:async function(g,I,w,p,f){var V,_;b.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),I.innerHTML="",e.fillSceneSnapshot(g,I,w,p,f);const N=w||((V=e.state.cameraState)==null?void 0:V.width)||0,S=p||((_=e.state.cameraState)==null?void 0:_.height)||0;let v=await this.getBoundingRectAsync(g);v||(v={originX:0,originY:0,width:N,height:S});let j=Math.max(v==null?void 0:v.width,N),C=Math.max(v==null?void 0:v.height,S),k=1;const P=j>N&&Math.min(N/j,k)||k,L=C>S&&Math.min(S/C,k)||k;P<=L?(j=P<1&&N||j,C=Math.floor(C*P)+1,k=P):P>L&&(C=L<1&&S||C,j=Math.floor(j*L)+1,k=L);const O={scale:k,centerX:v.originX+v.width/2,centerY:v.originY+v.height/2},A=document.createElement("canvas"),R=A.getContext("2d");A.width=j,A.height=C,R&&await this.screenshotToCanvasAsync(R,g,j,C,O,devicePixelRatio);const z=document.createElement("img");z.className="appliance-plugin-fill-scene-snapshot-img",z.src=A.toDataURL(),z.onload=()=>{A.remove()},z.onerror=()=>{A.remove(),z.remove()},I.append(z),getComputedStyle(I).position||(I.style.position="relative")},_callbacksOn:function(g,I){b.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&Q.isRoom(e)&&e.isWritable?Oe.InternalMsgEmitter.on(g,I):n.call(e.callbacks,g,I)},_callbacksOnce:function(g,I){b.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&Q.isRoom(e)&&e.isWritable?Oe.InternalMsgEmitter.on(g,I):s.call(e.callbacks,g,I)},_callbacksOff:function(g,I){b.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&Q.isRoom(e)&&e.isWritable?Oe.InternalMsgEmitter.off(g,I):r.call(e.callbacks,g,I)},canRedoSteps(){if(b.logger.info("[ApplianceSinglePlugin] canRedoSteps"),b.currentManager&&Q.isRoom(e)&&!e.disableSerialization){const g=b.currentManager.viewContainerManager.focuedView,I=g==null?void 0:g.focusScenePath;if(g&&I)return g.displayer.commiter.redoStack.filter(w=>w.scenePath===I).length}return 0},canUndoSteps(){if(b.logger.info("[ApplianceSinglePlugin] canUndoSteps"),b.currentManager&&Q.isRoom(e)&&!e.disableSerialization){const g=b.currentManager.viewContainerManager.focuedView,I=g==null?void 0:g.focusScenePath;if(g&&I)return g.displayer.commiter.undoStack.filter(w=>w.scenePath===I).length}return 0},undo:function(){return b.logger.info("[ApplianceSinglePlugin] undo"),b.currentManager&&Q.isRoom(e)&&!e.disableSerialization?b.currentManager.viewContainerManager.undo():0},redo:function(){return b.logger.info("[ApplianceSinglePlugin] redo"),b.currentManager&&Q.isRoom(e)&&!e.disableSerialization?b.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(g){b.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),b.currentManager&&Q.isRoom(e)&&e.isWritable&&(b.currentManager.cleanCurrentScene(),a.call(e,g))},insertImage:function(g){b.logger.info("[ApplianceSinglePlugin] insertImage"),b.currentManager&&Q.isRoom(e)&&e.isWritable&&b.currentManager.worker.insertImage(he,g)},lockImage:function(g,I){b.logger.info("[ApplianceSinglePlugin] lockImage"),b.currentManager&&Q.isRoom(e)&&e.isWritable&&b.currentManager.worker.lockImage(he,g,I)},completeImageUpload:function(g,I){b.logger.info("[ApplianceSinglePlugin] completeImageUpload"),b.currentManager&&Q.isRoom(e)&&e.isWritable&&b.currentManager.worker.completeImageUpload(he,g,I)},getImagesInformation:function(g){return b.logger.info("[ApplianceSinglePlugin] completeImageUpload"),b.currentManager&&Q.isRoom(e)&&e.isWritable?b.currentManager.worker.getImagesInformation(g):[]},insertText:function(g,I,w){if(b.logger.info("[ApplianceSinglePlugin] insertText"),b.currentManager&&Q.isRoom(e)&&e.isWritable)return b.currentManager.textEditorManager.insertText(he,g,I,w)},updateText:function(g,I){b.logger.info("[ApplianceMultiPlugin] updateText"),b.currentManager&&Q.isRoom(e)&&e.isWritable&&b.currentManager.textEditorManager.updateText(g,I)},callbacks:()=>({...e.callbacks,on:u._callbacksOn.bind(u),once:u._callbacksOnce.bind(u),off:u._callbacksOff.bind(u)}),destroy(){b.currentManager&&(b.logger.info("[ApplianceSinglePlugin] destroy"),b.currentManager.destroy(),b.currentManager=void 0,b.cursorAdapter=void 0)},setMemberState(g){var w;b.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(g)}`);const I=Object.keys(g);if(Q.isRoom(e)&&e.isWritable){if(I.includes("currentApplianceName"))if(g.currentApplianceName&&g.currentApplianceName===te.laserPen){if((w=b.currentManager)!=null&&w.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");g.currentApplianceName=te.pencil,g.useLaserPen=!0}else g.currentApplianceName&&g.currentApplianceName===te.pencil&&(g.useLaserPen=!1);c(g);return}throw new Error("setMemberState must be called in writable room")},createMiniMap:async function(g,I){if(b.logger.info("[ApplianceSinglePlugin] createMiniMap"),b.currentManager&&Q.isRoom(e)&&e.isWritable)return b.currentManager.createMiniMap(g,I)},destroyMiniMap:async function(g){if(b.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),b.currentManager&&Q.isRoom(e)&&e.isWritable)return b.currentManager.destroyMiniMap(g)},filterRenderByUid(g,I,w){if(b.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),b.currentManager&&Q.isRoom(e)&&e.isWritable)return b.currentManager.filterRenderByUid(g,I,w)},cancelFilterRender(g,I){if(b.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),b.currentManager&&Q.isRoom(e)&&e.isWritable)return b.currentManager.cancelFilterRender(g,I)},addListener:(g,I)=>{b.logger.info(`[ApplianceSinglePlugin] addListener ${g}`),Oe.PublicMsgEmitter.on(g,I)},removeListener:(g,I)=>{b.logger.info(`[ApplianceSinglePlugin] removeListener ${g}`),Oe.PublicMsgEmitter.off(g,I)},usePlugin:g=>{var I;b.logger.info("[ApplianceSinglePlugin] usePlugin",g.kind),(I=b.currentManager)==null||I.usePlugin(g)},getDisableDeviceInputs(){if(b.currentManager&&Q.isRoom(e))return b.currentManager.disableDeviceInputs},setDisableDeviceInputs(g){b.logger.info(`[ApplianceSinglePlugin] setDisableDeviceInputs ${g}`),b.currentManager&&Q.isRoom(e)&&(b.currentManager.disableDeviceInputs=g)},getDisableCameraTransform(){if(b.currentManager&&Q.isRoom(e))return b.currentManager.disableCameraTransform},setDisableCameraTransform(g){b.logger.info(`[ApplianceSinglePlugin] setDisableCameraTransform ${g}`),b.currentManager&&Q.isRoom(e)&&(b.currentManager.disableCameraTransform=g)},getDisableEraseImage(){if(b.currentManager&&Q.isRoom(e))return b.currentManager.disableEraseImage},setDisableEraseImage(g){b.logger.info(`[ApplianceSinglePlugin] setDisableEraseImage ${g}`),b.currentManager&&Q.isRoom(e)&&(b.currentManager.disableEraseImage=g)},setWritable:async function(g){var I;b.logger.info(`[ApplianceSinglePlugin] setWritable ${g}`),Q.isRoom(e)&&l&&(await((I=b.currentManager)==null?void 0:I.setWritable(g)),await l.call(e,g))},requestIdleCallback:(g,I)=>{const w=(I==null?void 0:I.timeout)||0,p=performance.now();let f;const N=new MessageChannel;let S;const v=j=>{try{g({didTimeout:j,timeRemaining:()=>{const k=performance.now()-p;return Math.max(0,w-k)}})}catch(C){b.logger.error("[ApplianceSinglePlugin] requestIdleCallback error:",C)}finally{N.port1.close(),N.port2.close(),f!==void 0&&cancelAnimationFrame(f),S!==void 0&&clearTimeout(S)}};return N.port1.onmessage=()=>{f=requestAnimationFrame(()=>{w>0&&performance.now()-p>=w?v(!0):v(!1)})},N.port2.postMessage(null),w>0&&(S=setTimeout(()=>{v(!0)},w)),S||f||0},cancelIdleCallback:g=>{try{clearTimeout(g),cancelAnimationFrame(g)}catch(I){b.logger.error("[ApplianceSinglePlugin] cancelIdleCallback error:",I)}},injectMethodToObject:(g,I)=>{if(b.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${I}`),typeof g[I]=="function"||typeof g[I]>"u"){g[I]=u[I];return}I==="callbacks"&&(g.callbacks.on=u._callbacksOn.bind(u),g.callbacks.off=u._callbacksOff.bind(u),g.callbacks.once=u._callbacksOnce.bind(u))},blurText:()=>{b.logger.info("[ApplianceSinglePlugin] blurText"),b.currentManager&&Q.isRoom(e)&&e.isWritable&&b.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(g,I)=>{var w;if(b.logger.info(`[ApplianceSinglePlugin] hasElements ${g}`),b.currentManager&&Q.isRoom(e)&&e.isWritable){let p=g;if(!p){const f=b.currentManager.viewContainerManager.focuedView;p=f==null?void 0:f.focusScenePath}if(p){const f=(w=b.currentManager.collector)==null?void 0:w.getScenePathData(p);if(f){const N=Object.values(f);return N.length>0?I?N.some(S=>I(S.toolsType)):!0:!1}return!1}return!1}},getElements:(g,I)=>{var w;if(b.logger.info(`[ApplianceSinglePlugin] getElements ${g}`),b.currentManager&&Q.isRoom(e)&&e.isWritable){let p=g;if(!p){const f=b.currentManager.viewContainerManager.focuedView;p=f==null?void 0:f.focusScenePath}if(p){const f=(w=b.currentManager.collector)==null?void 0:w.getScenePathData(p),N=f&&Object.values(f)||[];return f&&N.length>0&&I?N.filter(S=>I(S.toolsType)):N}return[]}},stopDraw:g=>{if(b.logger.info(`[ApplianceSinglePlugin] stopDraw ${g}`),b.currentManager&&Q.isRoom(e))return b.currentManager.stopDraw(g)},setViewLocalScenePathChange:async(g,I)=>{b.logger.info(`[ApplianceSinglePlugin] setViewLocalScenePathChange ${g} ${I}`),b.currentManager&&await b.currentManager.setViewLocalScenePathChange(g,I)}};u.injectMethodToObject(e,"undo"),u.injectMethodToObject(e,"redo"),u.injectMethodToObject(e,"cleanCurrentScene"),u.injectMethodToObject(e,"insertImage"),u.injectMethodToObject(e,"completeImageUpload"),u.injectMethodToObject(e,"lockImage"),u.injectMethodToObject(e,"getImagesInformation"),u.injectMethodToObject(e,"insertText"),u.injectMethodToObject(e,"updateText"),u.injectMethodToObject(e,"callbacks"),u.injectMethodToObject(e,"screenshotToCanvasAsync"),u.injectMethodToObject(e,"getBoundingRectAsync"),u.injectMethodToObject(e,"scenePreviewAsync"),u.injectMethodToObject(e,"fillSceneSnapshotAsync"),u.injectMethodToObject(e,"setMemberState"),Q.isRoom(e)&&u.injectMethodToObject(e,"setWritable"),Object.defineProperty(e,"canUndoSteps",{get(){return u.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return u.canRedoSteps()}});const M={...u,callbacks:u.callbacks()};return Object.defineProperty(M,"disableDeviceInputs",{set(g){u.setDisableDeviceInputs(g)},get(){return u.getDisableDeviceInputs()}}),Object.defineProperty(M,"disableEraseImage",{set(g){u.setDisableEraseImage(g)},get(){return u.getDisableEraseImage()}}),Object.defineProperty(M,"disableCameraTransform",{set(g){u.setDisableCameraTransform(g)},get(){return u.getDisableCameraTransform()}}),e._appliancePlugin=M,e._appliancePlugin}static onCreate(e){e&&b.currentManager&&(b.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,t){try{await e.createInvisiblePlugin(b,{})}catch(r){if(!e.isWritable){await e.setWritable(!0);const s=await this.createAppliancePlugin(e,t);return await e.setWritable(!1),s}throw r}let n=e.getInvisiblePlugin(t);return n||(n=await b.createAppliancePlugin(e,t)),n}static effectInstance(){if(b.cursorAdapter){const e=b.cursorAdapter.onAddedCursor;b.cursorAdapter.onAddedCursor=function(t){t.onCursorMemberChanged=n=>{try{n.appliance===te.pencil||n.appliance===te.shape||n.appliance===te.text||n.appliance===te.arrow||n.appliance===te.straight||n.appliance===te.rectangle||n.appliance===te.ellipse||n.appliance===te.eraser||n.appliance===te.selector?t!=null&&t.divElement&&(t.divElement.style.display="none"):t!=null&&t.divElement&&(t.divElement.style.display="block")}catch(r){throw r}},e.call(b.cursorAdapter,t)}}}get isReplay(){return Q.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var n,r;const t=e.state;(n=b.currentManager)==null||n.onRoomMembersChange(t.roomMembers),Q.isRoom(e)&&t!=null&&t.memberState&&((r=b.currentManager)==null||r.onMemberChange(t.memberState)),this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;b.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=b.currentManager)==null||e.destroy(),b.currentManager=void 0,b.cursorAdapter=void 0}};m(b,"kind","appliance-single-plugin"),m(b,"cursorAdapter"),m(b,"currentManager"),m(b,"logger",{info:console.log,warn:console.warn,error:console.error}),m(b,"createCurrentManager",(e,t,n)=>{b.currentManager&&b.currentManager.destroy();const r={plugin:n,displayer:e,options:t},s=new Oe(r);if(s.init(),b.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),b.currentManager=s,Q.isRoom(e)){const a=s.hasOffscreenCanvas,c=s.isUseOffscreenTransfer,l=s.pluginOptions,h=s.isUseSimple;e.logger.info(`[ApplianceSinglePlugin] use ${a?"worker":"mainThread"}, isUseSimple: ${h} ${c?"offscreenTransfer":""}, options: ${JSON.stringify(l)}`)}});let Ci=b;const dt=class dt extends d.Component{constructor(){super(...arguments);m(this,"mainViewRef",null)}componentDidMount(){dt.emiter||(dt.emiter=Oe.InternalMsgEmitter),dt.emiter.emit(ee.BindMainView,this.mainViewRef)}render(){return d.createElement(d.Fragment,null,this.props.children,d.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};m(dt,"emiter");let Si=dt;exports.ActiveContainerType=Ln;exports.ApplianceMultiPlugin=vi;exports.ApplianceNames=te;exports.ApplianceSigleWrapper=Si;exports.ApplianceSinglePlugin=Ci;exports.Cursor_Hover_Id=zo;exports.DefaultAppliancePluginExtrasOptions=we;exports.ECanvasShowType=$e;exports.EDataType=K;exports.EForceStopReason=ji;exports.EImageType=xt;exports.EMatrixrRelationType=Dt;exports.EOperationType=Te;exports.EPostMessageType=U;exports.ERenderFilterType=Ue;exports.EScaleType=be;exports.EStrokeType=fe;exports.EToolsKey=T;exports.ElayerType=zt;exports.EmitEventType=W;exports.EventMessageType=jt;exports.EvevtWorkState=D;exports.EvevtWorkType=Pn;exports.InternalMsgEmitterType=ee;exports.Main_View_Id=he;exports.Plugin=sp;exports.Point2d=ye;exports.ShapeType=Ye;exports.Storage_Selector_key=Z;exports.Storage_Splitter=Je;exports.Storage_ViewId_ALL=ho;exports.Task_Time_Interval=Di;exports.TextBoxPadding=pi;exports.Vec2d=Y;exports.ViewContainerManager=gt;exports._Stack=Bn;exports._baseGetTag=pt;exports._equalArrays=go;exports._equalByTag=Yg;exports._getAllKeys=io;exports._getTag=_t;exports.average=Of;exports.checkOp=bf;exports.cloneDeep=Et;exports.colorRGBA2Array=St;exports.computRect=mf;exports.decimalPlaces=Ef;exports.fullWorker=Do;exports.gcd=Lf;exports.getDefaultExportFromCjs=Ht;exports.getRectFromPoints=Qi;exports.getRectMatrixrRelation=Rf;exports.getRectRotated=Cf;exports.getRectScaleWPoint=Sf;exports.getRectTranslated=Tf;exports.getSafetyRect=Nf;exports.getWHRatio=Af;exports.isArray_1=kt;exports.isBufferExports=Ai;exports.isDecimal=kf;exports.isIntersect=wf;exports.isIntersectForPoint=Io;exports.isObjectLike_1=it;exports.isSet=Kh;exports.isTypedArray_1=Gn;exports.precise=Pf;exports.requestAsyncCallBack=Ge;exports.rgbToRgba=ht;exports.rotateLitePoints=Df;exports.rotatePoints=jf;exports.scaleLitePoints=zf;exports.scalePoints=xf;exports.strlen=Yf;exports.subWorker=xo;exports.transformToNormalData=ei;exports.transformToSerializableData=At;