@netless/appliance-plugin 1.0.4 → 1.0.6
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.
- package/cdn/cdn.js +1 -1
- package/cdn/{fullWorker-DRJe2Z.js → fullWorker-B41ROv.js} +32 -32
- package/cdn/{subWorker-BCicGG.js → subWorker-D3x__X.js} +32 -32
- package/dist/appliance-plugin.js +1 -1
- package/dist/appliance-plugin.mjs +1 -1
- package/dist/collector/utils/color.d.ts +1 -1
- package/dist/core/mainEngine.d.ts +1 -1
- package/dist/core/mainThread/subTopThread.d.ts +1 -1
- package/dist/core/utils/spriteNode.d.ts +1 -1
- package/dist/core/worker/subWorkerTopLayer.d.ts +1 -1
- package/dist/displayer/floatBar/index.d.ts +2 -2
- package/dist/displayer/floatBar/resizable/index.d.ts +1 -1
- package/dist/displayer/types.d.ts +0 -1
- package/dist/fullWorker.js +32 -32
- package/dist/index-BUV3AIdR.js +1 -0
- package/dist/index-BwY-Y-lK.js +1 -0
- package/dist/{index-Bj242vt1.mjs → index-DDd3tlz2.mjs} +134 -133
- package/dist/{index-BJWcnp2n.mjs → index-D_EDUBFF.mjs} +20 -28
- package/dist/plugin/baseApplianceManager.d.ts +0 -1
- package/dist/plugin/baseViewContainerManager.d.ts +0 -2
- package/dist/plugin/const.d.ts +3 -0
- package/dist/plugin/displayerView.d.ts +1 -1
- package/dist/plugin/single/applianceSingleManager.d.ts +0 -1
- package/dist/subWorker.js +32 -32
- package/dist/undo/index.d.ts +0 -1
- package/package.json +6 -7
- package/dist/index-C_jpLx3X.js +0 -1
- package/dist/index-D6FsYoIf.js +0 -1
package/dist/index-C_jpLx3X.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var Ei=Object.defineProperty;var Ai=(n,t,e)=>t in n?Ei(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var f=(n,t,e)=>(Ai(n,typeof t!="symbol"?t+"":t,e),e);const X=require("white-web-sdk");require("spritejs");const Bo=require("lz-string");require("lineclip");const Zo=require("eventemitter2"),k=require("lodash"),_t=require("react-dom"),d=require("react"),qe=require("react-draggable"),Oi=require("re-resizable"),Pi="/fullWorker.js",Yi="/subWorker.js";var J=(n=>(n.selector="selector",n.clicker="clicker",n.laserPointer="laserPointer",n.pencil="pencil",n.rectangle="rectangle",n.ellipse="ellipse",n.shape="shape",n.eraser="eraser",n.pencilEraser="pencilEraser",n.text="text",n.straight="straight",n.arrow="arrow",n.hand="hand",n.laserPen="laserPen",n))(J||{}),le=(n=>(n.Normal="Normal",n.Stroke="Stroke",n.Dotted="Dotted",n.LongDotted="LongDotted",n))(le||{}),ze=(n=>(n.Triangle="triangle",n.Rhombus="rhombus",n.Pentagram="pentagram",n.SpeechBalloon="speechBalloon",n.Star="star",n.Polygon="polygon",n))(ze||{}),L=(n=>(n.None="None",n.ShowFloatBar="ShowFloatBar",n.ZIndexFloatBar="ZIndexFloatBar",n.DeleteNode="DeleteNode",n.CopyNode="CopyNode",n.ZIndexActive="ZIndexActive",n.ZIndexNode="ZIndexNode",n.RotateNode="RotateNode",n.SetColorNode="SetColorNode",n.TranslateNode="TranslateNode",n.ScaleNode="ScaleNode",n.OriginalEvent="OriginalEvent",n.CreateScene="CreateScene",n.ActiveCursor="ActiveCursor",n.MoveCursor="MoveCursor",n.CommandEditor="CommandEditor",n.SetEditorData="SetEditorData",n.SetFontStyle="SetFontStyle",n.SetPoint="SetPoint",n.SetLock="SetLock",n.SetShapeOpt="SetShapeOpt",n.CameraChange="CameraChange",n.ActiveMethod="ActiveMethod",n))(L||{}),Q=(n=>(n.DisplayState="DisplayState",n.MainEngine="MainEngine",n.Cursor="Cursor",n.BindMainView="BindMainView",n))(Q||{}),Go=(n=>(n[n.MainView=0]="MainView",n[n.Plugin=1]="Plugin",n[n.Both=2]="Both",n))(Go||{}),N=(n=>(n[n.Pencil=1]="Pencil",n[n.Eraser=2]="Eraser",n[n.Selector=3]="Selector",n[n.Clicker=4]="Clicker",n[n.Arrow=5]="Arrow",n[n.Hand=6]="Hand",n[n.LaserPen=7]="LaserPen",n[n.Text=8]="Text",n[n.Straight=9]="Straight",n[n.Rectangle=10]="Rectangle",n[n.Ellipse=11]="Ellipse",n[n.Star=12]="Star",n[n.Triangle=13]="Triangle",n[n.Rhombus=14]="Rhombus",n[n.Polygon=15]="Polygon",n[n.SpeechBalloon=16]="SpeechBalloon",n[n.Image=17]="Image",n))(N||{}),G=(n=>(n[n.Local=1]="Local",n[n.Service=2]="Service",n[n.Worker=3]="Worker",n))(G||{}),j=(n=>(n[n.Pending=0]="Pending",n[n.Start=1]="Start",n[n.Doing=2]="Doing",n[n.Done=3]="Done",n[n.Unwritable=4]="Unwritable",n))(j||{}),O=(n=>(n[n.None=0]="None",n[n.Init=1]="Init",n[n.UpdateCamera=2]="UpdateCamera",n[n.UpdateTools=3]="UpdateTools",n[n.CreateWork=4]="CreateWork",n[n.DrawWork=5]="DrawWork",n[n.FullWork=6]="FullWork",n[n.UpdateNode=7]="UpdateNode",n[n.RemoveNode=8]="RemoveNode",n[n.Clear=9]="Clear",n[n.Select=10]="Select",n[n.Destroy=11]="Destroy",n[n.Snapshot=12]="Snapshot",n[n.BoundingBox=13]="BoundingBox",n[n.Cursor=14]="Cursor",n[n.TextUpdate=15]="TextUpdate",n[n.GetTextActive=16]="GetTextActive",n[n.TasksQueue=17]="TasksQueue",n[n.CursorHover=18]="CursorHover",n[n.CursorBlur=19]="CursorBlur",n[n.Console=20]="Console",n))(O||{}),zt=(n=>(n.Webgl2="webgl2",n.Webgl="webgl",n.Canvas2d="2d",n))(zt||{}),ke=(n=>(n[n.None=0]="None",n[n.Bg=1]="Bg",n[n.ServiceFloat=2]="ServiceFloat",n[n.Float=3]="Float",n[n.TopFloat=4]="TopFloat",n))(ke||{}),st=(n=>(n[n.Cursor=1]="Cursor",n[n.TextCreate=2]="TextCreate",n))(st||{}),He=(n=>(n[n.Top=1]="Top",n[n.Bottom=2]="Bottom",n))(He||{}),Ie=(n=>(n[n.none=1]="none",n[n.all=2]="all",n[n.both=3]="both",n[n.proportional=4]="proportional",n))(Ie||{}),Jo=(n=>(n[n.Pending=0]="Pending",n[n.Start=1]="Start",n[n.Doing=2]="Doing",n[n.Done=3]="Done",n[n.Unwritable=4]="Unwritable",n))(Jo||{}),rt=(n=>(n[n.inside=0]="inside",n[n.outside=1]="outside",n[n.intersect=2]="intersect",n))(rt||{});const Ri={linear:n=>n,easeInQuad:n=>n*n,easeOutQuad:n=>n*(2-n),easeInOutQuad:n=>n<.5?2*n*n:-1+(4-2*n)*n,easeInCubic:n=>n*n*n,easeOutCubic:n=>--n*n*n+1,easeInOutCubic:n=>n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1,easeInQuart:n=>n*n*n*n,easeOutQuart:n=>1- --n*n*n*n,easeInOutQuart:n=>n<.5?8*n*n*n*n:1-8*--n*n*n*n,easeInQuint:n=>n*n*n*n*n,easeOutQuint:n=>1+--n*n*n*n*n,easeInOutQuint:n=>n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n,easeInSine:n=>1-Math.cos(n*Math.PI/2),easeOutSine:n=>Math.sin(n*Math.PI/2),easeInOutSine:n=>-(Math.cos(Math.PI*n)-1)/2,easeInExpo:n=>n<=0?0:Math.pow(2,10*n-10),easeOutExpo:n=>n>=1?1:1-Math.pow(2,-10*n),easeInOutExpo:n=>n<=0?0:n>=1?1:n<.5?Math.pow(2,20*n-10)/2:(2-Math.pow(2,-20*n+10))/2};class E{constructor(t=0,e=0,o=1){this.x=t,this.y=e,this.z=o}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,o=this.z){return this.x=t,this.y=e,this.z=o,this}setTo({x:t=0,y:e=0,z:o=1}){return this.x=t,this.y=e,this.z=o,this}rot(t){if(t===0)return this;const{x:e,y:o}=this,i=Math.sin(t),r=Math.cos(t);return this.x=e*r-o*i,this.y=e*i+o*r,this}rotWith(t,e){if(e===0)return this;const o=this.x-t.x,i=this.y-t.y,r=Math.sin(e),s=Math.cos(e);return this.x=t.x+(o*s-i*r),this.y=t.y+(o*r+i*s),this}clone(){const{x:t,y:e,z:o}=this;return new E(t,e,o)}sub(t){return this.x-=t.x,this.y-=t.y,this}subXY(t,e){return this.x-=t,this.y-=e,this}subScalar(t){return this.x-=t,this.y-=t,this}add(t){return this.x+=t.x,this.y+=t.y,this}addXY(t,e){return this.x+=t,this.y+=e,this}addScalar(t){return this.x+=t,this.y+=t,this}clamp(t,e){return this.x=Math.max(this.x,t),this.y=Math.max(this.y,t),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(t){return this.x/=t,this.y/=t,this}divV(t){return this.x/=t.x,this.y/=t.y,this}mul(t){return this.x*=t,this.y*=t,this}mulV(t){return this.x*=t.x,this.y*=t.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(t,e){const o=E.Tan(t,this);return this.add(o.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(t){return this.x=this.y*t.z-this.z*t.y,this.y=this.z*t.x-this.x*t.z,this}dpr(t){return E.Dpr(this,t)}cpr(t){return E.Cpr(this,t)}len2(){return E.Len2(this)}len(){return E.Len(this)}pry(t){return E.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return E.Uni(this)}tan(t){return E.Tan(this,t)}dist(t){return E.Dist(this,t)}distanceToLineSegment(t,e){return E.DistanceToLineSegment(t,e,this)}slope(t){return E.Slope(this,t)}snapToGrid(t){return this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this}angle(t){return E.Angle(this,t)}toAngle(){return E.ToAngle(this)}lrp(t,e){return this.x=this.x+(t.x-this.x)*e,this.y=this.y+(t.y-this.y)*e,this}equals(t,e){return E.Equals(this,t,e)}equalsXY(t,e){return E.EqualsXY(this,t,e)}norm(){const t=this.len();return this.x=t===0?0:this.x/t,this.y=t===0?0:this.y/t,this}toFixed(){return E.ToFixed(this)}toString(){return E.ToString(E.ToFixed(this))}toJson(){return E.ToJson(this)}toArray(){return E.ToArray(this)}static Add(t,e){return new E(t.x+e.x,t.y+e.y)}static AddXY(t,e,o){return new E(t.x+e,t.y+o)}static Sub(t,e){return new E(t.x-e.x,t.y-e.y)}static SubXY(t,e,o){return new E(t.x-e,t.y-o)}static AddScalar(t,e){return new E(t.x+e,t.y+e)}static SubScalar(t,e){return new E(t.x-e,t.y-e)}static Div(t,e){return new E(t.x/e,t.y/e)}static Mul(t,e){return new E(t.x*e,t.y*e)}static DivV(t,e){return new E(t.x/e.x,t.y/e.y)}static MulV(t,e){return new E(t.x*e.x,t.y*e.y)}static Neg(t){return new E(-t.x,-t.y)}static Per(t){return new E(t.y,-t.x)}static Dist2(t,e){return E.Sub(t,e).len2()}static Abs(t){return new E(Math.abs(t.x),Math.abs(t.y))}static Dist(t,e){return Math.hypot(t.y-e.y,t.x-e.x)}static Dpr(t,e){return t.x*e.x+t.y*e.y}static Cross(t,e){return new E(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z)}static Cpr(t,e){return t.x*e.y-e.x*t.y}static Len2(t){return t.x*t.x+t.y*t.y}static Len(t){return Math.hypot(t.x,t.y)}static Pry(t,e){return E.Dpr(t,e)/E.Len(e)}static Uni(t){return E.Div(t,E.Len(t))}static Tan(t,e){return E.Uni(E.Sub(t,e))}static Min(t,e){return new E(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new E(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new E().add(t)}static FromArray(t){return new E(t[0],t[1])}static Rot(t,e=0){const o=Math.sin(e),i=Math.cos(e);return new E(t.x*i-t.y*o,t.x*o+t.y*i)}static RotWith(t,e,o){const i=t.x-e.x,r=t.y-e.y,s=Math.sin(o),a=Math.cos(o);return new E(e.x+(i*a-r*s),e.y+(i*s+r*a))}static NearestPointOnLineThroughPoint(t,e,o){return E.Mul(e,E.Sub(o,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,o,i=!0){const r=E.Tan(e,t),s=E.Add(t,E.Mul(r,E.Sub(o,t).pry(r)));if(i){if(s.x<Math.min(t.x,e.x))return E.Cast(t.x<e.x?t:e);if(s.x>Math.max(t.x,e.x))return E.Cast(t.x>e.x?t:e);if(s.y<Math.min(t.y,e.y))return E.Cast(t.y<e.y?t:e);if(s.y>Math.max(t.y,e.y))return E.Cast(t.y>e.y?t:e)}return s}static DistanceToLineThroughPoint(t,e,o){return E.Dist(o,E.NearestPointOnLineThroughPoint(t,e,o))}static DistanceToLineSegment(t,e,o,i=!0){return E.Dist(o,E.NearestPointOnLineSegment(t,e,o,i))}static Snap(t,e=1){return new E(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof E?t:E.From(t)}static Slope(t,e){return t.x===e.y?NaN:(t.y-e.y)/(t.x-e.x)}static Angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static Lrp(t,e,o){return E.Sub(e,t).mul(o).add(t)}static Med(t,e){return new E((t.x+e.x)/2,(t.y+e.y)/2)}static Equals(t,e,o=1e-4){return Math.abs(t.x-e.x)<o&&Math.abs(t.y-e.y)<o}static EqualsXY(t,e,o){return t.x===e&&t.y===o}static EqualsXYZ(t,e,o=1e-4){return E.Equals(t,e,o)&&Math.abs((t.z||0)-(e.z||0))<o}static Clockwise(t,e,o){return(o.x-t.x)*(e.y-t.y)-(e.x-t.x)*(o.y-t.y)<0}static Rescale(t,e){const o=E.Len(t);return new E(e*t.x/o,e*t.y/o)}static ScaleWithOrigin(t,e,o){return E.Sub(t,o).mul(e).add(o)}static ScaleWOrigin(t,e,o){return E.Sub(t,o).mulV(e).add(o)}static ToFixed(t,e=2){return new E(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,o){return E.Add(t,E.Tan(e,t).mul(o))}static ToString(t){return`${t.x}, ${t.y}`}static ToAngle(t){let e=Math.atan2(t.y,t.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(t,e=1){return new E(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:o,z:i}=t;return{x:e,y:o,z:i}}static Average(t){const e=t.length,o=new E(0,0);for(let i=0;i<e;i++)o.add(t[i]);return o.div(e)}static Clamp(t,e,o){return o===void 0?new E(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new E(Math.min(Math.max(t.x,e),o),Math.min(Math.max(t.y,e),o))}static PointsBetween(t,e,o=6){const i=[];for(let r=0;r<o;r++){const s=Ri.easeInQuad(r/(o-1)),a=E.Lrp(t,e,s);a.z=Math.min(1,.5+Math.abs(.5-Wi(s))*.65),i.push(a)}return i}static SnapToGrid(t,e=8){return new E(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const Wi=n=>n<.5?2*n*n:-1+(4-2*n)*n;var gt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Xt(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Ui=typeof gt=="object"&>&>.Object===Object&>,qo=Ui,Hi=qo,Qi=typeof self=="object"&&self&&self.Object===Object&&self,Fi=Hi||Qi||Function("return this")(),xe=Fi,$i=xe,Vi=$i.Symbol,jt=Vi,go=jt,Ko=Object.prototype,Bi=Ko.hasOwnProperty,Zi=Ko.toString,nt=go?go.toStringTag:void 0;function Gi(n){var t=Bi.call(n,nt),e=n[nt];try{n[nt]=void 0;var o=!0}catch{}var i=Zi.call(n);return o&&(t?n[nt]=e:delete n[nt]),i}var Ji=Gi,qi=Object.prototype,Ki=qi.toString;function _i(n){return Ki.call(n)}var Xi=_i,Mo=jt,en=Ji,tn=Xi,on="[object Null]",nn="[object Undefined]",po=Mo?Mo.toStringTag:void 0;function sn(n){return n==null?n===void 0?nn:on:po&&po in Object(n)?en(n):tn(n)}var Ke=sn;function rn(n){return n!=null&&typeof n=="object"}var Qe=rn;function an(){this.__data__=[],this.size=0}var cn=an;function ln(n,t){return n===t||n!==n&&t!==t}var eo=ln,un=eo;function hn(n,t){for(var e=n.length;e--;)if(un(n[e][0],t))return e;return-1}var St=hn,dn=St,gn=Array.prototype,Mn=gn.splice;function pn(n){var t=this.__data__,e=dn(t,n);if(e<0)return!1;var o=t.length-1;return e==o?t.pop():Mn.call(t,e,1),--this.size,!0}var fn=pn,yn=St;function In(n){var t=this.__data__,e=yn(t,n);return e<0?void 0:t[e][1]}var wn=In,vn=St;function mn(n){return vn(this.__data__,n)>-1}var Nn=mn,Tn=St;function Cn(n,t){var e=this.__data__,o=Tn(e,n);return o<0?(++this.size,e.push([n,t])):e[o][1]=t,this}var zn=Cn,jn=cn,Sn=fn,xn=wn,kn=Nn,Dn=zn;function _e(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var o=n[t];this.set(o[0],o[1])}}_e.prototype.clear=jn;_e.prototype.delete=Sn;_e.prototype.get=xn;_e.prototype.has=kn;_e.prototype.set=Dn;var xt=_e,Ln=xt;function bn(){this.__data__=new Ln,this.size=0}var En=bn;function An(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var On=An;function Pn(n){return this.__data__.get(n)}var Yn=Pn;function Rn(n){return this.__data__.has(n)}var Wn=Rn;function Un(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Ye=Un,Hn=Ke,Qn=Ye,Fn="[object AsyncFunction]",$n="[object Function]",Vn="[object GeneratorFunction]",Bn="[object Proxy]";function Zn(n){if(!Qn(n))return!1;var t=Hn(n);return t==$n||t==Vn||t==Fn||t==Bn}var _o=Zn,Gn=xe,Jn=Gn["__core-js_shared__"],qn=Jn,Rt=qn,fo=function(){var n=/[^.]+$/.exec(Rt&&Rt.keys&&Rt.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Kn(n){return!!fo&&fo in n}var _n=Kn,Xn=Function.prototype,es=Xn.toString;function ts(n){if(n!=null){try{return es.call(n)}catch{}try{return n+""}catch{}}return""}var Xo=ts,os=_o,is=_n,ns=Ye,ss=Xo,rs=/[\\^$.*+?()[\]{}|]/g,as=/^\[object .+?Constructor\]$/,cs=Function.prototype,ls=Object.prototype,us=cs.toString,hs=ls.hasOwnProperty,ds=RegExp("^"+us.call(hs).replace(rs,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function gs(n){if(!ns(n)||is(n))return!1;var t=os(n)?ds:as;return t.test(ss(n))}var Ms=gs;function ps(n,t){return n==null?void 0:n[t]}var fs=ps,ys=Ms,Is=fs;function ws(n,t){var e=Is(n,t);return ys(e)?e:void 0}var Fe=ws,vs=Fe,ms=xe,Ns=vs(ms,"Map"),to=Ns,Ts=Fe,Cs=Ts(Object,"create"),kt=Cs,yo=kt;function zs(){this.__data__=yo?yo(null):{},this.size=0}var js=zs;function Ss(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var xs=Ss,ks=kt,Ds="__lodash_hash_undefined__",Ls=Object.prototype,bs=Ls.hasOwnProperty;function Es(n){var t=this.__data__;if(ks){var e=t[n];return e===Ds?void 0:e}return bs.call(t,n)?t[n]:void 0}var As=Es,Os=kt,Ps=Object.prototype,Ys=Ps.hasOwnProperty;function Rs(n){var t=this.__data__;return Os?t[n]!==void 0:Ys.call(t,n)}var Ws=Rs,Us=kt,Hs="__lodash_hash_undefined__";function Qs(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Us&&t===void 0?Hs:t,this}var Fs=Qs,$s=js,Vs=xs,Bs=As,Zs=Ws,Gs=Fs;function Xe(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var o=n[t];this.set(o[0],o[1])}}Xe.prototype.clear=$s;Xe.prototype.delete=Vs;Xe.prototype.get=Bs;Xe.prototype.has=Zs;Xe.prototype.set=Gs;var Js=Xe,Io=Js,qs=xt,Ks=to;function _s(){this.size=0,this.__data__={hash:new Io,map:new(Ks||qs),string:new Io}}var Xs=_s;function er(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var tr=er,or=tr;function ir(n,t){var e=n.__data__;return or(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dt=ir,nr=Dt;function sr(n){var t=nr(this,n).delete(n);return this.size-=t?1:0,t}var rr=sr,ar=Dt;function cr(n){return ar(this,n).get(n)}var lr=cr,ur=Dt;function hr(n){return ur(this,n).has(n)}var dr=hr,gr=Dt;function Mr(n,t){var e=gr(this,n),o=e.size;return e.set(n,t),this.size+=e.size==o?0:1,this}var pr=Mr,fr=Xs,yr=rr,Ir=lr,wr=dr,vr=pr;function et(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var o=n[t];this.set(o[0],o[1])}}et.prototype.clear=fr;et.prototype.delete=yr;et.prototype.get=Ir;et.prototype.has=wr;et.prototype.set=vr;var ei=et,mr=xt,Nr=to,Tr=ei,Cr=200;function zr(n,t){var e=this.__data__;if(e instanceof mr){var o=e.__data__;if(!Nr||o.length<Cr-1)return o.push([n,t]),this.size=++e.size,this;e=this.__data__=new Tr(o)}return e.set(n,t),this.size=e.size,this}var jr=zr,Sr=xt,xr=En,kr=On,Dr=Yn,Lr=Wn,br=jr;function tt(n){var t=this.__data__=new Sr(n);this.size=t.size}tt.prototype.clear=xr;tt.prototype.delete=kr;tt.prototype.get=Dr;tt.prototype.has=Lr;tt.prototype.set=br;var ti=tt;function Er(n,t){for(var e=-1,o=n==null?0:n.length;++e<o&&t(n[e],e,n)!==!1;);return n}var Ar=Er,Or=Fe,Pr=function(){try{var n=Or(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Yr=Pr,wo=Yr;function Rr(n,t,e){t=="__proto__"&&wo?wo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var oi=Rr,Wr=oi,Ur=eo,Hr=Object.prototype,Qr=Hr.hasOwnProperty;function Fr(n,t,e){var o=n[t];(!(Qr.call(n,t)&&Ur(o,e))||e===void 0&&!(t in n))&&Wr(n,t,e)}var ii=Fr,$r=ii,Vr=oi;function Br(n,t,e,o){var i=!e;e||(e={});for(var r=-1,s=t.length;++r<s;){var a=t[r],l=o?o(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),i?Vr(e,a,l):$r(e,a,l)}return e}var Lt=Br;function Zr(n,t){for(var e=-1,o=Array(n);++e<n;)o[e]=t(e);return o}var Gr=Zr,Jr=Ke,qr=Qe,Kr="[object Arguments]";function _r(n){return qr(n)&&Jr(n)==Kr}var Xr=_r,vo=Xr,ea=Qe,ni=Object.prototype,ta=ni.hasOwnProperty,oa=ni.propertyIsEnumerable,ia=vo(function(){return arguments}())?vo:function(n){return ea(n)&&ta.call(n,"callee")&&!oa.call(n,"callee")},na=ia,sa=Array.isArray,bt=sa,wt={exports:{}};function ra(){return!1}var aa=ra;wt.exports;(function(n,t){var e=xe,o=aa,i=t&&!t.nodeType&&t,r=i&&!0&&n&&!n.nodeType&&n,s=r&&r.exports===i,a=s?e.Buffer:void 0,l=a?a.isBuffer:void 0,c=l||o;n.exports=c})(wt,wt.exports);var oo=wt.exports,ca=9007199254740991,la=/^(?:0|[1-9]\d*)$/;function ua(n,t){var e=typeof n;return t=t??ca,!!t&&(e=="number"||e!="symbol"&&la.test(n))&&n>-1&&n%1==0&&n<t}var ha=ua,da=9007199254740991;function ga(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=da}var si=ga,Ma=Ke,pa=si,fa=Qe,ya="[object Arguments]",Ia="[object Array]",wa="[object Boolean]",va="[object Date]",ma="[object Error]",Na="[object Function]",Ta="[object Map]",Ca="[object Number]",za="[object Object]",ja="[object RegExp]",Sa="[object Set]",xa="[object String]",ka="[object WeakMap]",Da="[object ArrayBuffer]",La="[object DataView]",ba="[object Float32Array]",Ea="[object Float64Array]",Aa="[object Int8Array]",Oa="[object Int16Array]",Pa="[object Int32Array]",Ya="[object Uint8Array]",Ra="[object Uint8ClampedArray]",Wa="[object Uint16Array]",Ua="[object Uint32Array]",re={};re[ba]=re[Ea]=re[Aa]=re[Oa]=re[Pa]=re[Ya]=re[Ra]=re[Wa]=re[Ua]=!0;re[ya]=re[Ia]=re[Da]=re[wa]=re[La]=re[va]=re[ma]=re[Na]=re[Ta]=re[Ca]=re[za]=re[ja]=re[Sa]=re[xa]=re[ka]=!1;function Ha(n){return fa(n)&&pa(n.length)&&!!re[Ma(n)]}var Qa=Ha;function Fa(n){return function(t){return n(t)}}var io=Fa,vt={exports:{}};vt.exports;(function(n,t){var e=qo,o=t&&!t.nodeType&&t,i=o&&!0&&n&&!n.nodeType&&n,r=i&&i.exports===o,s=r&&e.process,a=function(){try{var l=i&&i.require&&i.require("util").types;return l||s&&s.binding&&s.binding("util")}catch{}}();n.exports=a})(vt,vt.exports);var no=vt.exports,$a=Qa,Va=io,mo=no,No=mo&&mo.isTypedArray,Ba=No?Va(No):$a,ri=Ba,Za=Gr,Ga=na,Ja=bt,qa=oo,Ka=ha,_a=ri,Xa=Object.prototype,ec=Xa.hasOwnProperty;function tc(n,t){var e=Ja(n),o=!e&&Ga(n),i=!e&&!o&&qa(n),r=!e&&!o&&!i&&_a(n),s=e||o||i||r,a=s?Za(n.length,String):[],l=a.length;for(var c in n)(t||ec.call(n,c))&&!(s&&(c=="length"||i&&(c=="offset"||c=="parent")||r&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ka(c,l)))&&a.push(c);return a}var ai=tc,oc=Object.prototype;function ic(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||oc;return n===e}var so=ic;function nc(n,t){return function(e){return n(t(e))}}var ci=nc,sc=ci,rc=sc(Object.keys,Object),ac=rc,cc=so,lc=ac,uc=Object.prototype,hc=uc.hasOwnProperty;function dc(n){if(!cc(n))return lc(n);var t=[];for(var e in Object(n))hc.call(n,e)&&e!="constructor"&&t.push(e);return t}var gc=dc,Mc=_o,pc=si;function fc(n){return n!=null&&pc(n.length)&&!Mc(n)}var li=fc,yc=ai,Ic=gc,wc=li;function vc(n){return wc(n)?yc(n):Ic(n)}var ro=vc,mc=Lt,Nc=ro;function Tc(n,t){return n&&mc(t,Nc(t),n)}var Cc=Tc;function zc(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var jc=zc,Sc=Ye,xc=so,kc=jc,Dc=Object.prototype,Lc=Dc.hasOwnProperty;function bc(n){if(!Sc(n))return kc(n);var t=xc(n),e=[];for(var o in n)o=="constructor"&&(t||!Lc.call(n,o))||e.push(o);return e}var Ec=bc,Ac=ai,Oc=Ec,Pc=li;function Yc(n){return Pc(n)?Ac(n,!0):Oc(n)}var ao=Yc,Rc=Lt,Wc=ao;function Uc(n,t){return n&&Rc(t,Wc(t),n)}var Hc=Uc,mt={exports:{}};mt.exports;(function(n,t){var e=xe,o=t&&!t.nodeType&&t,i=o&&!0&&n&&!n.nodeType&&n,r=i&&i.exports===o,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function l(c,u){if(u)return c.slice();var h=c.length,g=a?a(h):new c.constructor(h);return c.copy(g),g}n.exports=l})(mt,mt.exports);var Qc=mt.exports;function Fc(n,t){var e=-1,o=n.length;for(t||(t=Array(o));++e<o;)t[e]=n[e];return t}var $c=Fc;function Vc(n,t){for(var e=-1,o=n==null?0:n.length,i=0,r=[];++e<o;){var s=n[e];t(s,e,n)&&(r[i++]=s)}return r}var Bc=Vc;function Zc(){return[]}var ui=Zc,Gc=Bc,Jc=ui,qc=Object.prototype,Kc=qc.propertyIsEnumerable,To=Object.getOwnPropertySymbols,_c=To?function(n){return n==null?[]:(n=Object(n),Gc(To(n),function(t){return Kc.call(n,t)}))}:Jc,co=_c,Xc=Lt,el=co;function tl(n,t){return Xc(n,el(n),t)}var ol=tl;function il(n,t){for(var e=-1,o=t.length,i=n.length;++e<o;)n[i+e]=t[e];return n}var hi=il,nl=ci,sl=nl(Object.getPrototypeOf,Object),di=sl,rl=hi,al=di,cl=co,ll=ui,ul=Object.getOwnPropertySymbols,hl=ul?function(n){for(var t=[];n;)rl(t,cl(n)),n=al(n);return t}:ll,gi=hl,dl=Lt,gl=gi;function Ml(n,t){return dl(n,gl(n),t)}var pl=Ml,fl=hi,yl=bt;function Il(n,t,e){var o=t(n);return yl(n)?o:fl(o,e(n))}var Mi=Il,wl=Mi,vl=co,ml=ro;function Nl(n){return wl(n,ml,vl)}var pi=Nl,Tl=Mi,Cl=gi,zl=ao;function jl(n){return Tl(n,zl,Cl)}var Sl=jl,xl=Fe,kl=xe,Dl=xl(kl,"DataView"),Ll=Dl,bl=Fe,El=xe,Al=bl(El,"Promise"),Ol=Al,Pl=Fe,Yl=xe,Rl=Pl(Yl,"Set"),Wl=Rl,Ul=Fe,Hl=xe,Ql=Ul(Hl,"WeakMap"),Fl=Ql,Qt=Ll,Ft=to,$t=Ol,Vt=Wl,Bt=Fl,fi=Ke,ot=Xo,Co="[object Map]",$l="[object Object]",zo="[object Promise]",jo="[object Set]",So="[object WeakMap]",xo="[object DataView]",Vl=ot(Qt),Bl=ot(Ft),Zl=ot($t),Gl=ot(Vt),Jl=ot(Bt),Re=fi;(Qt&&Re(new Qt(new ArrayBuffer(1)))!=xo||Ft&&Re(new Ft)!=Co||$t&&Re($t.resolve())!=zo||Vt&&Re(new Vt)!=jo||Bt&&Re(new Bt)!=So)&&(Re=function(n){var t=fi(n),e=t==$l?n.constructor:void 0,o=e?ot(e):"";if(o)switch(o){case Vl:return xo;case Bl:return Co;case Zl:return zo;case Gl:return jo;case Jl:return So}return t});var Et=Re,ql=Object.prototype,Kl=ql.hasOwnProperty;function _l(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Kl.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Xl=_l,eu=xe,tu=eu.Uint8Array,yi=tu,ko=yi;function ou(n){var t=new n.constructor(n.byteLength);return new ko(t).set(new ko(n)),t}var lo=ou,iu=lo;function nu(n,t){var e=t?iu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var su=nu,ru=/\w*$/;function au(n){var t=new n.constructor(n.source,ru.exec(n));return t.lastIndex=n.lastIndex,t}var cu=au,Do=jt,Lo=Do?Do.prototype:void 0,bo=Lo?Lo.valueOf:void 0;function lu(n){return bo?Object(bo.call(n)):{}}var uu=lu,hu=lo;function du(n,t){var e=t?hu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var gu=du,Mu=lo,pu=su,fu=cu,yu=uu,Iu=gu,wu="[object Boolean]",vu="[object Date]",mu="[object Map]",Nu="[object Number]",Tu="[object RegExp]",Cu="[object Set]",zu="[object String]",ju="[object Symbol]",Su="[object ArrayBuffer]",xu="[object DataView]",ku="[object Float32Array]",Du="[object Float64Array]",Lu="[object Int8Array]",bu="[object Int16Array]",Eu="[object Int32Array]",Au="[object Uint8Array]",Ou="[object Uint8ClampedArray]",Pu="[object Uint16Array]",Yu="[object Uint32Array]";function Ru(n,t,e){var o=n.constructor;switch(t){case Su:return Mu(n);case wu:case vu:return new o(+n);case xu:return pu(n,e);case ku:case Du:case Lu:case bu:case Eu:case Au:case Ou:case Pu:case Yu:return Iu(n,e);case mu:return new o;case Nu:case zu:return new o(n);case Tu:return fu(n);case Cu:return new o;case ju:return yu(n)}}var Wu=Ru,Uu=Ye,Eo=Object.create,Hu=function(){function n(){}return function(t){if(!Uu(t))return{};if(Eo)return Eo(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Qu=Hu,Fu=Qu,$u=di,Vu=so;function Bu(n){return typeof n.constructor=="function"&&!Vu(n)?Fu($u(n)):{}}var Zu=Bu,Gu=Et,Ju=Qe,qu="[object Map]";function Ku(n){return Ju(n)&&Gu(n)==qu}var _u=Ku,Xu=_u,eh=io,Ao=no,Oo=Ao&&Ao.isMap,th=Oo?eh(Oo):Xu,oh=th,ih=Et,nh=Qe,sh="[object Set]";function rh(n){return nh(n)&&ih(n)==sh}var ah=rh,ch=ah,lh=io,Po=no,Yo=Po&&Po.isSet,uh=Yo?lh(Yo):ch,hh=uh,dh=ti,gh=Ar,Mh=ii,ph=Cc,fh=Hc,yh=Qc,Ih=$c,wh=ol,vh=pl,mh=pi,Nh=Sl,Th=Et,Ch=Xl,zh=Wu,jh=Zu,Sh=bt,xh=oo,kh=oh,Dh=Ye,Lh=hh,bh=ro,Eh=ao,Ah=1,Oh=2,Ph=4,Ii="[object Arguments]",Yh="[object Array]",Rh="[object Boolean]",Wh="[object Date]",Uh="[object Error]",wi="[object Function]",Hh="[object GeneratorFunction]",Qh="[object Map]",Fh="[object Number]",vi="[object Object]",$h="[object RegExp]",Vh="[object Set]",Bh="[object String]",Zh="[object Symbol]",Gh="[object WeakMap]",Jh="[object ArrayBuffer]",qh="[object DataView]",Kh="[object Float32Array]",_h="[object Float64Array]",Xh="[object Int8Array]",ed="[object Int16Array]",td="[object Int32Array]",od="[object Uint8Array]",id="[object Uint8ClampedArray]",nd="[object Uint16Array]",sd="[object Uint32Array]",se={};se[Ii]=se[Yh]=se[Jh]=se[qh]=se[Rh]=se[Wh]=se[Kh]=se[_h]=se[Xh]=se[ed]=se[td]=se[Qh]=se[Fh]=se[vi]=se[$h]=se[Vh]=se[Bh]=se[Zh]=se[od]=se[id]=se[nd]=se[sd]=!0;se[Uh]=se[wi]=se[Gh]=!1;function It(n,t,e,o,i,r){var s,a=t&Ah,l=t&Oh,c=t&Ph;if(e&&(s=i?e(n,o,i,r):e(n)),s!==void 0)return s;if(!Dh(n))return n;var u=Sh(n);if(u){if(s=Ch(n),!a)return Ih(n,s)}else{var h=Th(n),g=h==wi||h==Hh;if(xh(n))return yh(n,a);if(h==vi||h==Ii||g&&!i){if(s=l||g?{}:jh(n),!a)return l?vh(n,fh(s,n)):wh(n,ph(s,n))}else{if(!se[h])return i?n:{};s=zh(n,h,a)}}r||(r=new dh);var M=r.get(n);if(M)return M;r.set(n,s),Lh(n)?n.forEach(function(w){s.add(It(w,t,e,w,n,r))}):kh(n)&&n.forEach(function(w,z){s.set(z,It(w,t,e,z,n,r))});var I=c?l?Nh:mh:l?Eh:bh,m=u?void 0:I(n);return gh(m||n,function(w,z){m&&(z=w,w=n[z]),Mh(s,z,It(w,t,e,z,n,r))}),s}var rd=It,ad=rd,cd=1,ld=4;function ud(n){return ad(n,cd|ld)}var hd=ud;const lt=Xt(hd),mi="1.0.4",dd="@netless/appliance-plugin",Ni=typeof OffscreenCanvas=="function"?"worker":"mainThread";if(typeof window<"u"){let n=window.__netlessUA||"";n+=` ${dd}@${mi}_${Ni}`,window.__netlessUA=n}const Pe={syncOpt:{interval:200},canvasOpt:{contextType:zt.Canvas2d},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:1e3}};class ae extends E{constructor(t=0,e=0,o=0,i={x:0,y:0},r=0,s=0){super(t,e,o),this.x=t,this.y=e,this.z=o,this.v=i,this.t=r,this.a=s}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,o=this.z,i=this.v,r=this.t,s=this.a){return this.x=t,this.y=e,this.z=o,this.v=i,this.t=r,this.a=s,this}clone(){const{x:t,y:e,z:o,v:i,t:r,a:s}=this,a={x:i.x,y:i.y};return new ae(t,e,o,a,r,s)}distance(t){return ae.GetDistance(this,t)}isNear(t,e){return ae.IsNear(this,t,e)}getAngleByPoints(t,e){return ae.GetAngleByPoints(t,this,e)}static Sub(t,e){return new ae(t.x-e.x,t.y-e.y)}static Add(t,e){return new ae(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return ae.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,o){const i=e.x-t.x,r=o.x-e.x,s=e.y-t.y,a=o.y-e.y;let l=0;const c=Math.sqrt(i*i+s*s),u=Math.sqrt(r*r+a*a);if(c&&u){const h=i*r+s*a;l=Math.acos(h/(c*u)),l=l/Math.PI*180;let g=i*a-s*r;g=g>0?1:-1,l=180+g*l}return l}static IsNear(t,e,o){return ae.Len(t.clone().sub(e))<o}static RotWith(t,e,o,i=2){const r=t.x-e.x,s=t.y-e.y,a=Math.sin(o),l=Math.cos(o),c=Math.pow(10,i),u=Math.floor((e.x+(r*l-s*a))*c)/c,h=Math.floor((e.y+(r*a+s*l))*c)/c;return new ae(u,h)}static GetDotStroke(t,e,o=16){const i=new E(1,1),r=Math.PI+.001,s=ae.Add(t,ae.Sub(t,i).uni().per().mul(-e)),a=[];for(let l=1/o,c=l;c<=1;c+=l)a.push(ae.RotWith(s,t,r*2*c));return a}static GetSemicircleStroke(t,e,o=-1,i=8){const r=o*(Math.PI+.001),s=[];for(let a=1/i,l=a;l<=1;l+=a)s.push(ae.RotWith(e,t,r*l));return s}}function ut(n){return JSON.parse(Bo.decompress(n))}function uo(n){return Bo.compress(JSON.stringify(n))}const ve=Object.keys,De="++",Y="selector",Ti="all";var gd="__lodash_hash_undefined__";function Md(n){return this.__data__.set(n,gd),this}var pd=Md;function fd(n){return this.__data__.has(n)}var yd=fd,Id=ei,wd=pd,vd=yd;function Nt(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Id;++t<e;)this.add(n[t])}Nt.prototype.add=Nt.prototype.push=wd;Nt.prototype.has=vd;var md=Nt;function Nd(n,t){for(var e=-1,o=n==null?0:n.length;++e<o;)if(t(n[e],e,n))return!0;return!1}var Td=Nd;function Cd(n,t){return n.has(t)}var zd=Cd,jd=md,Sd=Td,xd=zd,kd=1,Dd=2;function Ld(n,t,e,o,i,r){var s=e&kd,a=n.length,l=t.length;if(a!=l&&!(s&&l>a))return!1;var c=r.get(n),u=r.get(t);if(c&&u)return c==t&&u==n;var h=-1,g=!0,M=e&Dd?new jd:void 0;for(r.set(n,t),r.set(t,n);++h<a;){var I=n[h],m=t[h];if(o)var w=s?o(m,I,h,t,n,r):o(I,m,h,n,t,r);if(w!==void 0){if(w)continue;g=!1;break}if(M){if(!Sd(t,function(z,p){if(!xd(M,p)&&(I===z||i(I,z,e,o,r)))return M.push(p)})){g=!1;break}}else if(!(I===m||i(I,m,e,o,r))){g=!1;break}}return r.delete(n),r.delete(t),g}var Ci=Ld;function bd(n){var t=-1,e=Array(n.size);return n.forEach(function(o,i){e[++t]=[i,o]}),e}var Ed=bd;function Ad(n){var t=-1,e=Array(n.size);return n.forEach(function(o){e[++t]=o}),e}var Od=Ad,Ro=jt,Wo=yi,Pd=eo,Yd=Ci,Rd=Ed,Wd=Od,Ud=1,Hd=2,Qd="[object Boolean]",Fd="[object Date]",$d="[object Error]",Vd="[object Map]",Bd="[object Number]",Zd="[object RegExp]",Gd="[object Set]",Jd="[object String]",qd="[object Symbol]",Kd="[object ArrayBuffer]",_d="[object DataView]",Uo=Ro?Ro.prototype:void 0,Wt=Uo?Uo.valueOf:void 0;function Xd(n,t,e,o,i,r,s){switch(e){case _d:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case Kd:return!(n.byteLength!=t.byteLength||!r(new Wo(n),new Wo(t)));case Qd:case Fd:case Bd:return Pd(+n,+t);case $d:return n.name==t.name&&n.message==t.message;case Zd:case Jd:return n==t+"";case Vd:var a=Rd;case Gd:var l=o&Ud;if(a||(a=Wd),n.size!=t.size&&!l)return!1;var c=s.get(n);if(c)return c==t;o|=Hd,s.set(n,t);var u=Yd(a(n),a(t),o,i,r,s);return s.delete(n),u;case qd:if(Wt)return Wt.call(n)==Wt.call(t)}return!1}var eg=Xd;function tg(n,t){if(n&&t){const e=Math.min(n.x,t.x),o=Math.min(n.y,t.y),i=Math.max(n.x+n.w,t.x+t.w),r=Math.max(n.y+n.h,t.y+t.h),s=i-e,a=r-o;return{x:e,y:o,w:s,h:a}}return t||n}function zi(n,t){if(n&&t){const e=Math.min(n.originX,t.originX),o=Math.min(n.originY,t.originY),i=Math.max(n.originX+n.width,t.originX+t.width),r=Math.max(n.originY+n.height,t.originY+t.height),s=i-e,a=r-o;return{originX:e,originY:o,width:s,height:a}}return t||n}function ji(n,t=0){const e={x:0,y:0,w:0,h:0};let o=1/0,i=1/0,r=-1/0,s=-1/0;return n.forEach(a=>{const[l,c]=a.XY;o=Math.min(o,l-t),i=Math.min(i,c-t),r=Math.max(r,l+t),s=Math.max(s,c+t)}),e.x=o,e.y=i,e.w=r-o,e.h=s-i,e}function og(n,t){return!(n.x+n.w<t.x||n.x>t.x+t.w||n.y+n.h<t.y||n.y>t.y+t.h)}function ig(n,t){return{x:n.x+t[0],y:n.y+t[1],w:n.w,h:n.h}}function ng(n,t){const e=new E(n.x,n.y),o=new E(n.x+n.w,n.y),i=new E(n.x+n.w,n.y+n.h),r=new E(n.x,n.y+n.h),s=new E(n.x+n.w/2,n.y+n.h/2),a=Math.PI*t/180,l=E.RotWith(e,s,a),c=E.RotWith(o,s,a),u=E.RotWith(i,s,a),h=E.RotWith(r,s,a);return[l,c,u,h]}function sg(n,t){const e=ng(n,t);return ji(e)}function rg(n,t,e){const o=new E(t[0],t[1]);for(let i=0;i<n.length;i+=3){const r=new E(n[i],n[i+1]),s=Math.PI*e/180,a=E.RotWith(r,o,s);n[i]=a.x,n[i+1]=a.y}}function ag(n,t,e,o=[0,0]){const i=new E(t[0],t[1]);for(let r=0;r<n.length;r+=3){const s=new E(n[r],n[r+1]),a=new E(e[0],e[1]),l=E.ScaleWOrigin(s,a,i);n[r]=l.x+o[0],n[r+1]=l.y+o[1]}}function Si(n,t){return n[0]>=t.x&&n[0]<=t.x+t.w&&n[1]>=t.y&&n[1]<=t.y+t.h}function cg(n,t){const e=n<=t?1:n/t,o=t<=n?1:t/n;return[e,o]}function lg(n){for(const t of n)if(isNaN(t)||t===1/0||t===-1/0)return!1;return!0}function ug(n){return`${Tt(n.x)},${Tt(n.y)} `}function hg(n,t){return`${Tt((n.x+t.x)/2)},${Tt((n.y+t.y)/2)} `}function Tt(n){return+n.toFixed(4)}const Je=(n,t)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:t}):setTimeout(()=>{e(2)},t)}).then(function(){n()},()=>{n()}),Oe=n=>{const t=(n==null?void 0:n.webkitBackingStorePixelRatio)||(n==null?void 0:n.mozBackingStorePixelRatio)||(n==null?void 0:n.msBackingStorePixelRatio)||(n==null?void 0:n.oBackingStorePixelRatio)||(n==null?void 0:n.backingStorePixelRatio)||1;return Math.max(1,(window.devicePixelRatio||1)/t)},dg=(n,t)=>n.x+n.w<t.x||n.x>t.x+t.w||n.y+n.h<t.y||n.y>t.y+t.h?rt.outside:n.x>=t.x&&n.y>=t.y&&n.x+n.w<=t.x+t.w&&n.y+n.h<=t.y+t.h?rt.inside:rt.intersect;function gg(n){let t=0;for(let e=0;e<n.length;e++){const o=n.charCodeAt(e);o>=1&&o<=126||65376<=o&&o<=65439?t++:t+=2}return t}class Mg{constructor(t,e){f(this,"plugin");f(this,"uid");f(this,"control");this.control=t,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var t;return X.toJS((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getUidFromKey(t){return t.split(De).length===2&&t.split(De)[0]||this.uid}isLocalId(t){return t.split(De).length===1}getLocalId(t){return t.split(De)[1]}isSelector(t){return this.getLocalId(t)===Y}}const be=class be extends Mg{constructor(e,o,i){super(e,o);f(this,"namespace");f(this,"serviceStorage",{});f(this,"storage",{});f(this,"stateDisposer");f(this,"asyncClockState",!1);be.syncInterval=(i||be.syncInterval)*.5,this.namespace=be.namespace,this.serviceStorage=this.getNamespaceData(),this.storage=k.cloneDeep(this.serviceStorage)}getViewIdBySecenPath(e){const o=this.getNamespaceData();for(const[i,r]of Object.entries(o))if(r){for(const s of Object.keys(r))if(s===e)return i}}getScenePathData(e){const o=this.getNamespaceData();for(const i of Object.values(o))if(i){for(const r of Object.keys(i))if(r===e)return k.cloneDeep(i[r])}}getStorageData(e,o){const i=this.getNamespaceData();return i&&i[e]&&k.cloneDeep(i[e][o])||void 0}hasSelector(e,o){const i=this.storage&&this.storage[e]&&this.storage[e][o];return!!(i&&Object.keys(i).find(r=>this.isOwn(r)&&this.getLocalId(r)===Y))}addStorageStateListener(e){this.stateDisposer=X.autorun(async()=>{var l;const o=this.getNamespaceData(),{diffView:i,diffScenePath:r,diffData:s}=this.diffFunByView(this.serviceStorage,o);this.serviceStorage=o;const a={};if(Object.keys(i).length>0){a.diffView=i;for(const[c,u]of Object.entries(i)){if(u&&u.newValue===void 0&&this.storage[c]){delete this.storage[c];continue}if(u&&u.newValue){this.storage[c]=k.cloneDeep(u.newValue);continue}}}if(Object.keys(r).length>0){a.diffScenePath=r;for(const[c,u]of Object.entries(r))if(u){const{viewId:h,newValue:g}=u;let M=this.storage[h];if(M&&M[c]&&g===void 0){delete M[c];continue}if(g&&h){M===void 0&&(this.storage[h]={},M=this.storage[h]),M[c]=k.cloneDeep(g);continue}}}if(Object.keys(s).length>0){a.diffData=s;for(const[c,u]of Object.entries(s))if(u){const{viewId:h,scenePath:g,newValue:M}=u;if(h&&g){let I=this.storage[h],m=(l=this.storage[h])==null?void 0:l[g];if(I||(this.storage[h]={},I=this.storage[h],I[g]={},m=I[g]),m){if(m[c]&&M===void 0){delete m[c];continue}if(M&&h){m[c]=k.cloneDeep(M);continue}}}}}Object.keys(a).length>0&&e(a)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,o){const i=ve(e),r=ve(o),s={},a={},l={};for(const c of r)if(!i.includes(c)||e[c]===void 0){s[c]={newValue:o[c],oldValue:void 0};continue}for(const c of i){if(k.isEqual(e[c],o[c]))continue;if(!r.includes(c)||o[c]===void 0){s[c]={newValue:void 0,oldValue:e[c]};continue}const u=this.diffFunByScenePath(e[c],o[c],c);Object.assign(a,u.diffScenePath),Object.assign(l,u.diffData)}return{diffData:l,diffScenePath:a,diffView:s}}diffFunByScenePath(e,o,i){const r=ve(e),s=ve(o),a={},l={};for(const c of s)if(!r.includes(c)||e[c]===void 0){a[c]={newValue:o[c],oldValue:void 0,viewId:i};continue}for(const c of r){if(k.isEqual(e[c],o[c]))continue;if(!s.includes(c)||o[c]===void 0){a[c]={newValue:void 0,oldValue:e[c],viewId:i};continue}const u=this.diffFunByKeys(e[c],o[c],c,i);Object.assign(l,u)}return{diffScenePath:a,diffData:l}}diffFunByKeys(e,o,i,r){const s=ve(e),a=ve(o),l={};for(const c of a)(!s.includes(c)||e[c]===void 0)&&(l[c]={oldValue:void 0,newValue:o[c],viewId:r,scenePath:i});for(const c of s)if(!k.isEqual(e[c],o[c])){if(!a.includes(c)||o[c]===void 0){l[c]={newValue:void 0,oldValue:e[c],viewId:r,scenePath:i};continue}a.includes(c)&&(l[c]={oldValue:e[c],newValue:o[c],viewId:r,scenePath:i})}return l}transformKey(e){return this.uid+De+e}isOwn(e){return e.split(De)[0]===this.uid}dispatch(e){const{type:o,workId:i,ops:r,index:s,opt:a,toolsType:l,removeIds:c,updateNodeOpt:u,op:h,selectIds:g,isSync:M,scenePath:I,viewId:m}=e;if(m)switch(o){case O.Clear:const w={};I&&this.storage[m]&&this.storage[m][I]?(delete this.storage[m][I],this.setState(w,{isSync:M,viewId:m,scenePath:I})):this.storage[m]&&(delete this.storage[m],this.setState(w,{isSync:M,viewId:m,scenePath:""}));break;case O.CreateWork:if(I&&i&&l&&a){const v=this.isLocalId(i.toString())?this.transformKey(i):i;this.updateValue(v.toString(),{type:O.CreateWork,workId:i,toolsType:l,opt:a},{isSync:M,viewId:m,scenePath:I})}break;case O.DrawWork:if(I&&i&&typeof s=="number"&&(h!=null&&h.length)){const v=this.isLocalId(i.toString())?this.transformKey(i):i,T=this.storage[m]&&this.storage[m][I]&&this.storage[m][I][v]||void 0;if(T!=null&&T.ops||(T==null?void 0:T.type)===O.FullWork)return;const S=s?((T==null?void 0:T.op)||[]).slice(0,s).concat(h):h||(T==null?void 0:T.op),D=l||(T==null?void 0:T.toolsType),R=a||(T==null?void 0:T.opt),W=u||(T==null?void 0:T.updateNodeOpt);i&&D&&R&&S&&this.updateValue(v.toString(),{...T,type:O.DrawWork,workId:i,updateNodeOpt:W,toolsType:D,opt:R,op:S,index:s},{isSync:M,viewId:m,scenePath:I})}break;case O.FullWork:if(I&&i){const v=this.isLocalId(i.toString())?this.transformKey(i):i,T=this.storage[m]&&this.storage[m][I]&&this.storage[m][I][v]||void 0,S=u||(T==null?void 0:T.updateNodeOpt),D=l||(T==null?void 0:T.toolsType),R=a||(T==null?void 0:T.opt),W=r||(T==null?void 0:T.ops);D&&R&&this.updateValue(v.toString(),{type:O.FullWork,updateNodeOpt:S,workId:v,toolsType:D,opt:R,ops:W},{isSync:M,viewId:m,scenePath:I})}break;case O.RemoveNode:if(I&&(c!=null&&c.length)){const v=c.map(T=>this.isLocalId(T+"")?this.transformKey(T):T);this.storage[m]&&this.storage[m][I]&&Object.keys(this.storage[m][I]).map(T=>{v!=null&&v.includes(T)&&this.updateValue(T,void 0,{isSync:M,viewId:m,scenePath:I})})}break;case O.UpdateNode:if(I&&i&&(u||r||a)){const v=this.isLocalId(i.toString())?this.transformKey(i):i,T=this.storage[m]&&this.storage[m][I]&&this.storage[m][I][v]||void 0;T&&(T.updateNodeOpt=u,(r||h)&&(T.ops=r,T.op=h),a&&(T.opt=a),T.type=O.FullWork,this.updateValue(v.toString(),T,{isSync:M,viewId:m,scenePath:I}))}break;case O.Select:if(!I)return;let z;g!=null&&g.length&&(z=g.map(v=>this.isLocalId(v+"")?this.transformKey(v):v));const p=this.transformKey(Y),y=this.storage[m]&&this.storage[m][I]&&this.storage[m][I][p]||void 0,C=a||(y==null?void 0:y.opt);z&&this.checkOtherSelector(p,z,{isSync:M,viewId:m,scenePath:I}),this.updateValue(p,z&&{type:O.Select,toolsType:N.Selector,opt:C,selectIds:z},{isSync:M,viewId:m,scenePath:I});break}}checkOtherSelector(e,o,i){const{viewId:r,scenePath:s}=i;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===Y){const l=this.storage[r][s][a];if(l&&l.selectIds){const c=l.selectIds.filter(u=>!o.includes(u));c.length>0&&(l.selectIds=c),this.updateValue(a,c.length&&l||void 0,i)}}}setState(e,o){const{viewId:i,scenePath:r}=o,s=ve(e);for(let a=0;a<s.length;a++){const l=s[a],c=e[l];typeof c<"u"?(this.storage[i]||(this.storage[i]={}),this.storage[i][r]||(this.storage[i][r]={}),this.storage[i][r][l]=c):delete this.storage[i][r][l]}this.runSyncService(o)}updateValue(e,o,i){const{viewId:r,scenePath:s}=i;o===void 0?delete this.storage[r][s][e]:(this.storage[r]||(this.storage[r]={}),this.storage[r][s]||(this.storage[r][s]={}),this.storage[r][s][e]=o),this.runSyncService(i)}runSyncService(e){this.asyncClockState||(this.asyncClockState=!0,setTimeout(()=>{e.isSync?(this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)):Je(()=>{this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)},be.syncInterval)},e!=null&&e.isSync?0:be.syncInterval))}syncSerivice(e=!1){const o=ve(this.serviceStorage),i=ve(this.storage),r=new Map;for(const s of o){if(!i.includes(s)){r.set(s,void 0);continue}k.isEqual(this.serviceStorage[s],this.storage[s])||this.syncViewData(s,e)}for(const s of i)o.includes(s)||r.set(s,this.storage[s]);if(r.size>5)this.syncStorageView(this.storage,e);else for(const[s,a]of r.entries())this.syncUpdataView(s,a,e)}syncViewData(e,o=!1){const i=ve(this.serviceStorage[e]),r=ve(this.storage[e]),s=new Map;for(const a of i){if(!r.includes(a)){s.set(a,void 0);continue}k.isEqual(this.serviceStorage[e][a],this.storage[e][a])||this.syncScenePathData(e,a,o)}for(const a of r)i.includes(a)||s.set(a,this.storage[e][a]);if(s.size>5)this.syncStorageScenePath(e,this.storage[e],o);else for(const[a,l]of s.entries())this.syncUpdataScenePath(e,a,l,o)}syncScenePathData(e,o,i=!1){const r=ve(this.serviceStorage[e][o]),s=ve(this.storage[e][o]),a=new Map;for(const l of r){if(!s.includes(l)){a.set(l,void 0);continue}k.isEqual(this.serviceStorage[e][o][l],this.storage[e][o][l])||a.set(l,this.storage[e][o][l])}for(const l of s)r.includes(l)||a.set(l,this.storage[e][o][l]);if(a.size>5)this.syncStorageKey(e,o,this.storage[e][o],i);else for(const[l,c]of a.entries())this.syncUpdataKey(e,o,l,c,i)}syncUpdataView(e,o,i=!1){var s;Object.keys(this.serviceStorage).length?(i||(o===void 0?delete this.serviceStorage[e]:this.serviceStorage[e]=k.cloneDeep(o)),(s=this.plugin)==null||s.updateAttributes([this.namespace,e],o)):this.syncStorageView(this.storage,i)}syncStorageView(e,o=!1){var i;o||e&&(this.serviceStorage=k.cloneDeep(e)),(i=this.plugin)==null||i.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,o,i,r=!1){var a;Object.keys(this.serviceStorage[e]).length?(r||(i===void 0?delete this.serviceStorage[e][o]:this.serviceStorage[e][o]=i),(a=this.plugin)==null||a.updateAttributes([this.namespace,e,o],i)):this.syncStorageScenePath(e,this.storage[e],r)}syncStorageScenePath(e,o,i=!1){var r;i||o&&(this.serviceStorage[e]=o),(r=this.plugin)==null||r.updateAttributes([this.namespace,e],o)}syncUpdataKey(e,o,i,r,s=!1){var l;Object.keys(this.serviceStorage[e][o]).length?(s||(r===void 0?delete this.serviceStorage[e][o][i]:this.serviceStorage[e][o][i]=r),(l=this.plugin)==null||l.updateAttributes([this.namespace,e,o,i],r)):this.syncStorageKey(e,o,this.storage[e][o],s)}syncStorageKey(e,o,i,r=!1){var s;r||(this.serviceStorage[e][o]=i),(s=this.plugin)==null||s.updateAttributes([this.namespace,e,o],i)}keyTransformWorkId(e){const o=e.split(De);return o.length===2?o[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={}}};f(be,"namespace","PluginState"),f(be,"syncInterval",500);let Zt=be;class pg{constructor(){f(this,"roomMembers",[]);f(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const o={online:e.map(i=>{var r;return((r=i.payload)==null?void 0:r.uid)||i.session}),offline:t.map(i=>{var r;return((r=i.payload)==null?void 0:r.uid)||i.session})};this.onChangeHooks.forEach(i=>i(o))}getRoomMember(t){return this.roomMembers.find(e=>{var o;return((o=e.payload)==null?void 0:o.uid)===t})}isOnLine(t){return!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}var Se=(n=>(n[n.Text=1]="Text",n[n.Shape=2]="Shape",n))(Se||{});const fg="cursorhover",yg=20,ge="mainView",we=class we{createProxy(t){const e=new Proxy(t,{get(o,i,r){const s=we.interceptors.hasOwnProperty(i)?we.interceptors:o;return Reflect.get(s,i,r)}});return we.proxyToRaw.set(e,t),e}};f(we,"proxyToRaw",new WeakMap),f(we,"interceptors",{entries(...t){return we.proxyToRaw.get(this).entries(...t)},forEach(...t){return we.proxyToRaw.get(this).forEach(...t)},size(){return we.proxyToRaw.get(this).size},get(t){return we.proxyToRaw.get(this).get(t)},set(t,e){return we.proxyToRaw.get(this).set(t,e)},delete(t,e){return we.proxyToRaw.get(this).delete(t)},clear(){return we.proxyToRaw.get(this).clear()}});let We=we;class Ig{constructor(t){f(this,"internalMsgEmitter");f(this,"control");f(this,"editors");f(this,"activeId");f(this,"proxyMap");f(this,"taskqueue",new Map);const{control:e,internalMsgEmitter:o}=t;this.control=e,this.internalMsgEmitter=o;const i=new Map;this.proxyMap=new We;const r=this,s=We.interceptors.set;We.interceptors.set=function(l,c){return r.interceptors.set(l,c),s.call(this,l,c)};const a=We.interceptors.delete;We.interceptors.delete=function(l,c){return r.interceptors.delete(l,c),a.call(this,l)},this.editors=this.proxyMap.createProxy(i)}get collector(){return this.control.collector}filterEditor(t){const e=new Map;return this.editors.forEach((o,i)=>{o.viewId===t&&e.set(i,o)}),e}get interceptors(){return{set:(t,e)=>{var M,I,m,w,z,p,y,C;if(!this.collector)return!0;const{viewId:o,scenePath:i,canSync:r,canWorker:s,type:a,opt:l,dataType:c}=e;if(!s&&!r)return!0;const h=((M=this.collector)==null?void 0:M.isLocalId(t))?(I=this.collector)==null?void 0:I.transformKey(t):t,g=((m=this.collector)==null?void 0:m.storage[o])&&this.collector.storage[o][i]&&this.collector.storage[o][i][h]||void 0;g?g.toolsType===N.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:t,msgType:O.UpdateNode}).forEach(v=>{var T;(T=this.control.worker)==null||T.taskBatchData.delete(v)}),(y=this.control.worker)==null||y.taskBatchData.add({workId:t,msgType:O.UpdateNode,dataType:c||G.Local,toolsType:N.Text,opt:l,viewId:o,scenePath:i,willRefresh:!0}),(C=this.control.worker)==null||C.runAnimation()),r&&Je(()=>{var v;(v=this.collector)==null||v.dispatch({type:O.UpdateNode,workId:t,toolsType:N.Text,opt:l,viewId:o,scenePath:i})},this.control.worker.maxLastSyncTime)):a===Se.Text&&(r&&((w=this.collector)==null||w.dispatch({type:l.text&&O.FullWork||O.CreateWork,workId:t,toolsType:N.Text,opt:l,isSync:!0,viewId:o,scenePath:i})),s&&((z=this.control.worker)==null||z.taskBatchData.add({workId:t,msgType:l.text&&O.FullWork||O.CreateWork,dataType:c||G.Local,toolsType:N.Text,opt:l,viewId:o,scenePath:i,willRefresh:!0}),(p=this.control.worker)==null||p.runAnimation()))},delete:t=>{var a,l;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:o,scenePath:i,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:t,toolsType:N.Text,msgType:O.RemoveNode,dataType:G.Local,viewId:o,scenePath:i,willRefresh:!0}),(l=this.control.worker)==null||l.runAnimation()),r&&Je(()=>{var c;(c=this.collector)==null||c.dispatch({type:O.RemoveNode,removeIds:[t],toolsType:N.Text,viewId:o,scenePath:i})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(t,e){var r,s,a,l;const o=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(t,e),i=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&i&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:O.GetTextActive,dataType:G.Local,op:o,viewId:e,scenePath:i}),(l=this.control.worker)==null||l.runAnimation())}checkEmptyTextBlur(){var e;let t=this.activeId;for(const[o,i]of this.editors.entries())if(i.opt.uid&&i.opt.uid===((e=this.collector)==null?void 0:e.uid)){t=o;break}if(t){const o=this.editors.get(t);(o==null?void 0:o.opt.text)&&(o==null?void 0:o.opt.text.replace(/\s*,/g,""))?this.unActive(t):this.delete(t,!0,!0)}}onCameraChange(t,e){var o,i;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:l}=s.opt,c=a&&((o=this.control.viewContainerManager)==null?void 0:o.transformToOriginPoint(a,s.viewId)),u=(i=this.control.viewContainerManager)==null?void 0:i.getCurScenePath(e);if(u&&e){const h={x:c&&c[0]||0,y:c&&c[1]||0,w:l&&l[0]||0,h:l&&l[1]||0,opt:s.opt,scale:t.scale,type:Se.Text,viewId:e,scenePath:u,canWorker:!1,canSync:!1};this.editors.set(r,h),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(t){var I,m;const{workId:e,opt:o,msgType:i,viewId:r,scenePath:s,dataType:a}=t;if(!e||!r||!s)return;const l=e.toString();if(i===O.RemoveNode){this.delete(l,!0,!0);return}const{boxPoint:c,boxSize:u}=o,h=c&&((I=this.control.viewContainerManager)==null?void 0:I.transformToOriginPoint(c,r)),g=this.control.viewContainerManager.getView(r),M={x:h&&h[0]||0,y:h&&h[1]||0,w:u&&u[0]||0,h:u&&u[1]||0,opt:o,type:Se.Text,canWorker:!0,canSync:!1,dataType:a,scale:((m=g==null?void 0:g.cameraOpt)==null?void 0:m.scale)||1,viewId:r,scenePath:s};this.editors.set(l,M),a===G.Service&&o.workState===j.Done&&this.activeId===l&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}updateForViewEdited(t,e){var i;this.editors.set(t,e);const o=(i=this.taskqueue.get(t))==null?void 0:i.resolve;o&&o(e)}active(t){var o;const e=this.editors.get(t);e&&e.viewId&&(e.opt.workState=j.Start,e.opt.uid=(o=this.collector)==null?void 0:o.uid,this.activeId=t,e.canWorker=!0,e.canSync=!0,this.editors.set(t,e),this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}unActive(t){const e=this.editors.get(t);e&&e.viewId&&(e.opt.workState=j.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(t,e),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(e.viewId,this.activeId))}createTextForMasterController(t,e){var s;const{workId:o,isActive:i,...r}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,r.viewId),r.opt.uid=(s=this.collector)==null?void 0:s.uid,i&&(this.activeId=o),r.dataType=G.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(o,r),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}updateTextForMasterController(t,e){var s;const{workId:o,...i}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,i.viewId);const r=this.editors.get(o)||{};i.opt&&(i.opt.uid=(s=this.collector)==null?void 0:s.uid),i.dataType=G.Local,this.editors.set(o,{...r,...i}),this.control.viewContainerManager.setActiveTextEditor(i.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var u;const{workId:o,...i}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,i.viewId);const r=this.editors.get(o)||{};i.opt&&(i.opt.uid=(u=this.collector)==null?void 0:u.uid),i.dataType=G.Local;const s={...r,...i};if(this.editors.set(o,s),this.control.viewContainerManager.setActiveTextEditor(i.viewId,this.activeId),this.taskqueue.has(o)){const h=this.taskqueue.get(o);return h&&(h.clocker&&clearTimeout(h.clocker),this.taskqueue.delete(o)),await this.updateTextControllerWithEffectAsync(t)}const a=setTimeout(()=>{var g;const h=(g=this.taskqueue.get(o))==null?void 0:g.resolve;h&&h(s)},50),l=await new Promise(h=>{this.taskqueue.set(o,{resolve:h,clocker:a})}),c=this.taskqueue.get(o);return c&&(c.clocker&&clearTimeout(c.clocker),this.taskqueue.delete(o)),l}updateTextForWorker(t,e){const{workId:o,isActive:i,...r}=t,a={...this.editors.get(o)||{},...r};if(i){a.canWorker=!1,a.canSync=!1,this.editors.set(o,a),this.active(o);return}this.editors.set(o,a),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId),e&&this.internalMsgEmitter.emit("addUndoTicker",e,r.viewId)}get(t){return this.editors.get(t)}delete(t,e,o){const i=this.editors.get(t);if(i){const r=i.viewId;i.canSync=e,i.canWorker=o,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}}deleteBatch(t,e,o){const i=new Set;for(const r of t){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=o,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),i.add(a)}}for(const r of i)this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}clear(t,e){this.editors.forEach((o,i)=>{o.viewId===t&&(e&&(o.canSync=!1),o.canWorker=!1,this.editors.delete(i))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}}class wg{constructor(t){f(this,"expirationTime",Pe.cursor.expirationTime);f(this,"internalMsgEmitter");f(this,"control");f(this,"eventName","applianc-cursor");f(this,"displayer");f(this,"roomMember");f(this,"animationId");f(this,"maxLastSyncTime",Pe.syncOpt.interval);f(this,"willSendEventWorkers",[]);f(this,"willConsumeEventWorkers",new Map);f(this,"sendEventTimerId");f(this,"animationDrawWorkers",new Map);f(this,"animationEventWorkers",new Map);f(this,"cursorInfoMap",new Map);f(this,"doneRenderCursorInfoMap",new Map);f(this,"eventCollector");var i,r;const{control:e,internalMsgEmitter:o}=t;this.internalMsgEmitter=o,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=((r=(i=this.control.pluginOptions)==null?void 0:i.syncOpt)==null?void 0:r.interval)||this.maxLastSyncTime}activeCollector(){this.control.plugin&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(t){var a;const{event:e,payload:o}=t;if(e!==this.eventName)return;const{uid:i,op:r,type:s}=o;if(((a=this.control.collector)==null?void 0:a.uid)!==i&&s===st.Cursor&&(r!=null&&r.length)){const l=this.willConsumeEventWorkers.get(i)||[];for(const c of r){const{viewId:u}=c;k.isNumber(c.consumPoint[0])&&k.isNumber(c.consumPoint[1])&&(c.consumPoint=this.control.viewContainerManager.transformToOriginPoint(c.consumPoint,u)),l.unshift({...c,timestamp:Date.now()})}this.willConsumeEventWorkers.set(i,l),this.runAnimation()}}onFocusViewChange(){this.checkDrawWorks(),this.runAnimation()}updateRoomMembers(t){const{offline:e}=t;for(const o of this.cursorInfoMap.keys())o&&e.includes(o)&&this.cursorInfoMap.delete(o)}getKey(t,e){return`${t}${De}${e}`}getUidAndviewId(t){const[e,o]=t.split(De);return{uid:e,viewId:o}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const t=this.control.viewContainerManager.focuedViewId;for(const[o,i]of this.animationDrawWorkers.entries()){const{viewId:r,uid:s}=this.getUidAndviewId(o);s!==((e=this.control.collector)==null?void 0:e.uid)&&r!==t&&i.workState===j.Done&&(i.consumPoint=[void 0,void 0])}}animationCursor(){this.animationId=void 0;const t=Date.now();for(const[o,i]of this.animationDrawWorkers.entries()){const{uid:r,viewId:s}=this.getUidAndviewId(o),a=this.roomMember.getRoomMember(r);if(!a){this.animationDrawWorkers.delete(o);continue}const{consumPoint:l,timestamp:c,workState:u}=i,h=this.cursorInfoMap.get(s)||new Map;l&&k.isNumber(l[0])&&k.isNumber(l[1])&&c+this.expirationTime>t?h.set(a.memberId,{x:l[0],y:l[1],roomMember:a,timestamp:c,type:1,workState:u}):h.delete(a.memberId),h.size?this.cursorInfoMap.set(s,h):this.cursorInfoMap.delete(s),this.animationDrawWorkers.delete(o)}const e=new Set;for(const[o,i]of this.cursorInfoMap.entries())if(i)for(const[r,s]of i.entries())s.type===1&&s.workState!==j.Done&&e.add(r);else this.cursorInfoMap.delete(o);for(const[o,i]of this.willConsumeEventWorkers.entries()){const r=this.roomMember.getRoomMember(o);if(r!=null&&r.memberId&&!e.has(r.memberId)){const s=i.pop();s?this.animationEventWorkers.set(o,s):this.willConsumeEventWorkers.delete(o)}}for(const[o,i]of this.animationEventWorkers.entries()){const r=this.roomMember.getRoomMember(o);if(!r){this.animationEventWorkers.delete(o);continue}const{viewId:s,consumPoint:a,timestamp:l}=i,c=this.cursorInfoMap.get(s)||new Map;a&&k.isNumber(a[0])&&k.isNumber(a[1])&&l+this.expirationTime>t?c.set(r.memberId,{x:a[0],y:a[1],roomMember:r,timestamp:l,type:0}):c.delete(r.memberId),c.size?this.cursorInfoMap.set(s,c):this.cursorInfoMap.delete(s),this.animationEventWorkers.delete(o)}for(const o of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(o)||(this.doneRenderCursorInfoMap.delete(o),this.internalMsgEmitter.emit([Q.Cursor,o],[]));for(const[o,i]of this.cursorInfoMap.entries())if(i!=null&&i.size){const r=[];for(const[a,l]of i.entries()){const{timestamp:c,...u}=l;c+this.expirationTime>t?r.push(u):(i.delete(a),i.size===0&&(this.cursorInfoMap.delete(o),this.doneRenderCursorInfoMap.delete(o),this.internalMsgEmitter.emit([Q.Cursor,o],[])))}const s=this.doneRenderCursorInfoMap.get(o);k.isEqual(s,r)||(this.doneRenderCursorInfoMap.set(o,r),this.internalMsgEmitter.emit([Q.Cursor,o],r))}else this.cursorInfoMap.delete(o),this.doneRenderCursorInfoMap.delete(o),this.internalMsgEmitter.emit([Q.Cursor,o],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(t,e){if(this.displayer&&X.isRoom(this.displayer)){const o=k.isNumber(t[0])&&k.isNumber(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:o,viewId:e}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var t;this.displayer.dispatchMagixEvent(this.eventName,{type:st.Cursor,op:k.cloneDeep(this.willSendEventWorkers),uid:(t=this.control.collector)==null?void 0:t.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(t){var s;const{op:e,uid:o,workState:i,viewId:r}=t;if(o&&e&&i&&r){const a=this.roomMember.getRoomMember(o);if(!a||o===((s=this.control.collector)==null?void 0:s.uid))return;const l=this.getKey(o,r);let c=[void 0,void 0];if(k.isNumber(e[0])&&k.isNumber(e[1])){const[h,g]=this.control.viewContainerManager.transformToOriginPoint(e,r);c=[h,g]}if(i===j.Start){for(const h of this.cursorInfoMap.values())if(h!=null&&h.size)for(const g of h.keys())g===a.memberId&&h.delete(g)}const u={consumPoint:c,workState:i,viewId:r,timestamp:Date.now()};if(i===j.Start||i===j.Done){const h=this.willConsumeEventWorkers.get(o);i===j.Start&&h&&this.willConsumeEventWorkers.delete(o),h&&i===j.Done&&(u.timestamp=u.timestamp-this.expirationTime)}this.animationDrawWorkers.set(l,u),this.runAnimation()}}unabled(){var t;this.displayer&&X.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:st.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(t=this.control.collector)==null?void 0:t.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0))}clearViewCursor(t){var e,o,i;for(const[r]of this.animationDrawWorkers.entries()){const{uid:s}=this.getUidAndviewId(r);s===((e=this.control.collector)==null?void 0:e.uid)&&t===t&&this.animationDrawWorkers.delete(r)}for(const[r]of this.willConsumeEventWorkers.entries())r===((o=this.control.collector)==null?void 0:o.uid)&&this.willConsumeEventWorkers.delete(r);for(const[r]of this.animationEventWorkers.entries())r===((i=this.control.collector)==null?void 0:i.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([Q.Cursor,r],[]))}stopAnimation(){this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.cursorInfoMap.clear()}destroy(){var t;(t=this.displayer)==null||t.removeMagixEventListener(this.eventName),this.stopAnimation()}}class Ne{constructor(){f(this,"useEmtMsg");f(this,"emtType");f(this,"control");f(this,"mainEngine")}static dispatch(t,e,o){var i;(i=Me.InternalMsgEmitter)==null||i.emit([t,e],o)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collect.bind(this)),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collect.bind(this))}collectForLocalWorker(t,e){var o,i,r;for(const[s,a]of t)(o=this.mainEngine)==null||o.queryTaskBatchData(a).forEach(l=>{var c;(c=this.mainEngine)==null||c.taskBatchData.delete(l)}),(i=this.mainEngine)==null||i.taskBatchData.add(s);if(e){this.mainEngine.consume();return}(r=this.mainEngine)==null||r.runAnimation()}collectForServiceWorker(t){Je(()=>{t.forEach(e=>{var o;(o=this.serviceColloctor)==null||o.dispatch(e)})},this.mainEngine.maxLastSyncTime)}pause(){var t;if(this.lastEmtData){this.useEmtMsg=!0;const e={...this.lastEmtData,workState:j.Done};this.collect(e,!0),(t=Me.InternalMsgEmitter)==null||t.emit(L.ActiveMethod,!1)}}recover(){var t;this.useEmtMsg&&Me.InternalMsgEmitter.hasListeners(L.ActiveMethod)&&((t=Me.InternalMsgEmitter)==null||t.emit(L.ActiveMethod,!0))}}class vg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.CopyNode)}collect(e){var l;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,viewId:i}=e,r=this.control.viewContainerManager.getView(i);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,i);for(const c of o){const u=c.toString(),g=this.serviceColloctor.isLocalId(u)?this.serviceColloctor.transformKey(c):u,M=(l=this.serviceColloctor.getStorageData(i,s))==null?void 0:l[g];if(M){if(c===Y){const I=M&&this.copySelector({viewId:i,store:M});I&&this.pasteSelector({...I,viewId:i,scenePath:s,undoTickerId:a});break}if(M.toolsType===N.Text&&M.opt&&M.opt.workState&&M.opt.workState!==j.Done){const I=M&&this.copyText({viewId:i,store:M});I&&this.pasteText({...I,viewId:i,scenePath:s,key:g,store:M,undoTickerId:a});break}}}}copyText(e){const{viewId:o,store:i}=e,r=this.control.viewContainerManager.getView(o);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],l=i.opt,c=l.boxPoint&&l.boxSize&&[l.boxPoint[0]+l.boxSize[0]/2,l.boxPoint[1]+l.boxSize[1]/2];return{bgCenter:a,textCenter:c}}pasteText(e){var w,z;const{bgCenter:o,textCenter:i,store:r,key:s,viewId:a,scenePath:l,undoTickerId:c}=e,u=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!u)return;const h=Math.floor(Math.random()*30+1),g=((w=u.cameraOpt)==null?void 0:w.scale)||1,M=o&&i&&[o[0]-i[0]+h,o[1]-i[1]+h]||[h/g,h/g],m=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+c;if(r.toolsType===N.Text&&r.opt){const p=r.opt;if(p&&p.boxPoint&&p.text){p.workState=j.Done;const y=p.boxPoint;p.boxPoint=[y[0]+M[0],y[1]+M[1]],p.workState=j.Done;const C=this.control.viewContainerManager.transformToOriginPoint(p.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:m,x:C[0],y:C[1],opt:p,scale:((z=u.cameraOpt)==null?void 0:z.scale)||1,type:Se.Text,isActive:!1,viewId:a,scenePath:l}),this.collectForServiceWorker([{...r,opt:p,type:O.FullWork,workId:m,viewId:a,scenePath:l}])}}}copySelector(e){var m,w,z,p,y,C,v,T,S;const{viewId:o,store:i}=e,r=this.control.viewContainerManager.getView(o),s=i.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,l={offset:{x:0,y:0},cameraOpt:{centerX:((m=r.cameraOpt)==null?void 0:m.centerX)||0,centerY:((w=r.cameraOpt)==null?void 0:w.centerY)||0,scale:((z=r.cameraOpt)==null?void 0:z.scale)||1}},c=this.control.hasOffscreenCanvas()&&((p=r.displayer.canvasBgRef.current)==null?void 0:p.getBoundingClientRect())||((y=r.displayer.canvasContainerRef.current)==null?void 0:y.getBoundingClientRect()),u=(v=(C=r.displayer)==null?void 0:C.floatBarRef.current)==null?void 0:v.getBoundingClientRect(),h=c&&[c.x+c.width/2,c.y+c.height/2],g=u&&[u.x+u.width/2,u.y+u.height/2],M=h&&r.viewData&&r.viewData.convertToPointInWorld({x:h[0],y:h[1]}),I=g&&r.viewData&&r.viewData.convertToPointInWorld({x:g[0],y:g[1]});M&&I&&(l.offset={x:M.x-I.x,y:M.y-I.y});for(const D of s){const R=(S=(T=this.serviceColloctor)==null?void 0:T.getStorageData(r.id,r.focusScenePath))==null?void 0:S[D];R&&a.set(D,R)}return{copyStores:a,copyCoordInfo:l}}pasteSelector(e){var m;const{copyStores:o,copyCoordInfo:i,viewId:r,scenePath:s,undoTickerId:a}=e,l=this.control.viewContainerManager.getView(r);if(!o.size||!this.serviceColloctor||!l)return;const{offset:c,cameraOpt:u}=i,h=Math.floor(Math.random()*30+1),g=[c.x+h,c.y+h],M=[],I=[];for(const[w,z]of o.entries()){const y=(this.serviceColloctor.isLocalId(w)?w:this.serviceColloctor.getLocalId(w.toString()))+"-"+a,C={useAnimation:!1};if(z.toolsType===N.Text&&z.opt){const v=z.opt;if(v&&v.boxPoint&&v.text){v.workState=j.Done;const T=v.boxPoint;v.boxPoint=[T[0]+g[0],T[1]+g[1]],v.workState=j.Done;const S=this.control.viewContainerManager.transformToOriginPoint(v.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:y,x:S[0],y:S[1],opt:v,scale:((m=l.cameraOpt)==null?void 0:m.scale)||1,type:Se.Text,isActive:!1,viewId:r,scenePath:s})}I.push({...z,opt:v,type:O.FullWork,workId:y,viewId:r,scenePath:s});continue}if(z.toolsType===N.Image&&(z.opt.uuid=y,z.opt.centerX=z.opt.centerX+g[0],z.opt.centerY=z.opt.centerY+g[1]),z.ops){const v=ut(z.ops).map((S,D)=>{const R=D%3;return R===0?S+g[0]:R===1?S+g[1]:S}),T=uo(v);z.ops=T}I.push({...z,updateNodeOpt:C,type:O.FullWork,workId:y,viewId:r,scenePath:s}),M.push([{...z,updateNodeOpt:C,workId:y,msgType:O.FullWork,dataType:G.Local,emitEventType:L.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r},{workId:y,msgType:O.FullWork,emitEventType:L.CopyNode}])}M.length&&this.collectForLocalWorker(M),I.length&&this.collectForServiceWorker(I)}}function ht(n,t,e){return"#"+((n<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function ue(n,t=1){return"rgba("+parseInt("0x"+n.slice(1,3))+","+parseInt("0x"+n.slice(3,5))+","+parseInt("0x"+n.slice(5,7))+","+t+")"}function Mt(n,t,e,o=1){return`rgba(${n},${t},${e},${o})`}function At(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),o=parseInt(t[1]),i=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[ht(e,o,i),r]}function pt(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),o=parseInt(t[1]),i=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[e,o,i,r]}function ft(n){return n==="transparent"}class mg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.SetColorNode);f(this,"undoTickerId")}setTextColor(e,o,i,r){const{fontColor:s,fontBgColor:a}=i;o.opt&&(s&&(o.opt.fontColor=s),a&&(o.opt.fontBgColor=a),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:o.opt,viewId:r,canSync:!0,canWorker:!0}))}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,strokeColor:i,fillColor:r,fontColor:s,fontBgColor:a,viewId:l,workState:c,thickness:u,strokeType:h}=e,g=this.control.viewContainerManager.getView(l);if(!(g!=null&&g.displayer))return;const M=g.focusScenePath,I=[...o],m=this.serviceColloctor.storage,w=[],z={};for((c===j.Start||!this.undoTickerId&&c===j.Done)&&(this.undoTickerId=Date.now(),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,l));I.length;){const p=I.pop();if(!p)continue;const y=p.toString(),C=this.serviceColloctor.isLocalId(y),v=C?this.serviceColloctor.transformKey(p):y;let T=y;!C&&this.serviceColloctor.isOwn(T)&&(T=this.serviceColloctor.getLocalId(T));const S=m[l][M][v]||void 0;if(S){const D=S.updateNodeOpt||{};if(s||a){if(s){D.fontColor=s;const[W,b,A,x]=pt(s);z.textColor=[W,b,A],z.textOpacity=x}if(a)if(D.fontBgColor=ft(a)?"transparent":a,ft(a))z.textBgColor=void 0,z.textBgOpacity=void 0;else{const[W,b,A,x]=pt(a);z.textBgColor=[W,b,A],z.textBgOpacity=x}if(S.toolsType===N.Text&&S.opt&&c!==j.Start){this.setTextColor(T,lt(S),D,l),c===j.Done&&(this.undoTickerId=void 0);continue}}if(i){D.strokeColor=i;const[W,b,A,x]=pt(i);z.strokeColor=[W,b,A],z.strokeOpacity=x}if(r)if(D.fillColor=ft(r)?"transparent":r,ft(r))z.fillColor=void 0,z.fillOpacity=void 0;else{const[W,b,A,x]=pt(r);z.fillColor=[W,b,A],z.fillOpacity=x}u&&(D.thickness=u,z.strokeWidth=u),h&&(D.strokeType=h,z.strokeType=h);const R={workId:T,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:D,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:l};w.push([R,{workId:T,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}}w.length&&(c===j.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(w)),Object.keys(z).length&&setTimeout(()=>{var p;(p=this.control.room)==null||p.setMemberState(z)},0)}}class Ng extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.ZIndexNode);f(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var o;return((o=this.zIndexMap.get(e))==null?void 0:o.min)||0}getMaxZIndex(e){var o;return((o=this.zIndexMap.get(e))==null?void 0:o.max)||0}setMaxZIndex(e,o){const i=this.getMinZIndex(o);this.zIndexMap.set(o,{min:i,max:e})}setMinZIndex(e,o){const i=this.getMaxZIndex(o);this.zIndexMap.set(o,{min:e,max:i})}addMaxLayer(e){const o=this.getMaxZIndex(e)+1;this.setMaxZIndex(o,e)}addMinLayer(e){const o=this.getMinZIndex(e)-1;this.setMinZIndex(o,e)}correct(e){const o=e.sort((i,r)=>i[1]-r[1]);for(let i=1;i<o.length;i++){const r=o[i][1],s=o[i-1][1];r<=s&&(o[i][1]=s+1)}return o}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,layer:i,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,l=[...o],c=this.serviceColloctor.storage,u=[],h=[];for(;l.length;){const M=l.pop();if(!M)continue;const I=M.toString(),m=this.serviceColloctor.isLocalId(I),w=m?this.serviceColloctor.transformKey(M):I;let z=I;!m&&this.serviceColloctor.isOwn(z)&&(z=this.serviceColloctor.getLocalId(z));const p=lt(c[r][a][w]);let y;if(p&&z===Y){if(p.selectIds){h.push(...p.selectIds),h.sort((S,D)=>{var b,A,x,ee;const R=((A=(b=c[g(S,this.serviceColloctor)])==null?void 0:b.opt)==null?void 0:A.zIndex)||0,W=((ee=(x=c[g(S,this.serviceColloctor)])==null?void 0:x.opt)==null?void 0:ee.zIndex)||0;return R>W?1:S<D?-1:0});const C=p.updateNodeOpt||{};C.zIndexLayer=i;const v={workId:M,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:C,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},T=new Map;i===He.Top?(this.addMaxLayer(r),y=this.getMaxZIndex(r)):(this.addMinLayer(r),y=this.getMinZIndex(r)),h.forEach(S=>{var b,A,x;const D=(b=this.serviceColloctor)==null?void 0:b.isLocalId(S);let R=D&&((A=this.serviceColloctor)==null?void 0:A.transformKey(S))||S;const W=c[r][a][R];!D&&((x=this.serviceColloctor)!=null&&x.isOwn(R))&&(R=this.serviceColloctor.getLocalId(R)),C.zIndex=y,W!=null&&W.opt&&(W.opt.zIndex=y),W!=null&&W.opt&&T.set(R,{updateNodeOpt:W.updateNodeOpt,opt:W.opt})}),v.selectStore=T,v.willSerializeData=!0,u.push([v,{workId:M,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}continue}}u.length&&this.collectForLocalWorker(u);function g(M,I){return I.isLocalId(M)&&I.transformKey(M)||M}}}class Tg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.TranslateNode);f(this,"cachePosition")}collect(e,o){var I;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,position:r,workState:s,viewId:a}=e;this.lastEmtData=e;const l=this.control.viewContainerManager.getView(a);if(!(l!=null&&l.displayer))return;const c=l.focusScenePath,u=[...i],h=(I=this.serviceColloctor)==null?void 0:I.storage,g=[],M=s===j.Start&&Date.now()||void 0;for(M&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",M,a);u.length;){const m=u.pop();if(!m)continue;const w=m.toString(),z=this.serviceColloctor.isLocalId(w),p=z&&this.serviceColloctor.transformKey(m)||w;let y=w;!z&&this.serviceColloctor.isOwn(y)&&(y=this.serviceColloctor.getLocalId(y));const C=h[a][c][p];if(C&&y===Y){if(C.selectIds){const v=this.control.viewContainerManager.transformToScenePoint([r.x,r.y],a);if(s===j.Start&&(this.cachePosition=v),this.cachePosition){const T=C.updateNodeOpt||{};T.translate=[v[0]-this.cachePosition[0],v[1]-this.cachePosition[1]],T.workState=s;const S={workId:m,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:T,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a};s===j.Done&&(S.textUpdateForWoker=!0,S.willSerializeData=!0,this.cachePosition=void 0),g.push([S,{workId:m,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}}continue}}s===j.Start?this.mainEngine.unWritable():s===j.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),g.length&&this.collectForLocalWorker(g,o)}}class Cg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.DeleteNode)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,viewId:i}=e,r=this.control.viewContainerManager.getView(i);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,l=[...o],c=[],u=[],h=Date.now();for(;l.length;){const g=l.pop();if(!g)continue;const M=g.toString(),I=this.serviceColloctor.isLocalId(M),m=I?this.serviceColloctor.transformKey(g):M,w=a[i][s][m];if(w){let z=M;if(!I&&this.serviceColloctor.isOwn(z)&&(z=this.serviceColloctor.getLocalId(z)),w.toolsType===N.Text){this.control.textEditorManager.delete(z,!0,!0);continue}u.push(z)}}u.length&&(c.push([{msgType:O.RemoveNode,emitEventType:L.DeleteNode,removeIds:u,dataType:G.Local,willSyncService:!0,willRefresh:!0,viewId:i},void 0]),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,i),this.collectForLocalWorker(c))}}class zg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.ScaleNode);f(this,"targetText",new Map);f(this,"cacheTextInfo",new Map)}async setTextStyle(e,o,i){const r=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:o,viewId:i,canSync:!1,canWorker:!1});return{key:e,textInfo:r}}async collect(e,o){var p,y,C,v,T;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,workState:r,viewId:s,originPoint:a,scenePoint:l,dir:c,scale:u,translate:h}=e;this.lastEmtData=e;const g=this.control.viewContainerManager.getView(s);if(!(g!=null&&g.displayer))return;const M=g.focusScenePath,I=[...i],m=(p=this.serviceColloctor)==null?void 0:p.storage,w=[],z=r===j.Start&&Date.now()||void 0;for(z&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",z,s);I.length;){const S=I.pop();if(!S)continue;const D=S.toString(),R=this.serviceColloctor.isLocalId(D),W=R&&this.serviceColloctor.transformKey(S)||D;let b=D;!R&&this.serviceColloctor.isOwn(b)&&(b=this.serviceColloctor.getLocalId(b));const A=m[s][M][W];if(A&&b===Y&&A.selectIds){const x=A.updateNodeOpt||{};if(x.dir=c,x.originPoint=a,x.scenePoint=l,x.workState=r,x.scale=u,x.translate=h,r===j.Start){this.cacheTextInfo.clear();for(const ie of A.selectIds){const ne=(y=this.serviceColloctor)==null?void 0:y.isLocalId(ie),F=ne&&((C=this.serviceColloctor)==null?void 0:C.transformKey(ie))||ie;let q=F;!ne&&((v=this.serviceColloctor)!=null&&v.isOwn(F))&&(q=this.serviceColloctor.getLocalId(F));const H=this.control.textEditorManager.get(q);H&&r===j.Start&&this.targetText.set(q,lt(H))}}if(this.targetText.size&&r!==j.Start&&u){const ie=[];for(const[F,q]of this.targetText.entries()){const{opt:H}=q,V=Math.floor(H.fontSize*u[0]),Z=this.cacheTextInfo.get(F),te=!Z&&H.fontSize!==V||Z&&Z.fontSize!==V||!1,B=(T=this.control.textEditorManager.get(F))==null?void 0:T.opt;if(te&&B&&H.boxSize&&H.boxPoint){const _=this.setTextStyle(F,{...B,fontSize:V},s);ie.push(_)}}const ne=await Promise.all(ie);for(const F of ne)if(F){const{key:q,textInfo:H}=F;this.cacheTextInfo.set(q,{fontSize:H.opt.fontSize,boxSize:H.opt.boxSize,boxPoint:H.opt.boxPoint})}x.textInfos=this.cacheTextInfo}const ee={workId:S,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:x,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===j.Done&&(ee.willSerializeData=!0,this.targetText.clear()),w.push([ee,{workId:S,msgType:O.UpdateNode,emitEventType:this.emitEventType}]);continue}}r===j.Start?this.mainEngine.unWritable():r===j.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),w.length&&this.collectForLocalWorker(w,o)}}class jg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.RotateNode);f(this,"cacheOriginRotate",0)}collect(e,o){var I,m,w,z,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,angle:r,workState:s,viewId:a}=e;this.lastEmtData=e;const l=this.control.viewContainerManager.getView(a);if(!(l!=null&&l.displayer))return;const c=l.focusScenePath,u=[...i],h=(I=this.serviceColloctor)==null?void 0:I.storage,g=[],M=s===j.Start&&Date.now()||void 0;for(M&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",M,a);u.length;){const y=u.pop();if(!y)continue;const C=y.toString(),v=this.serviceColloctor.isLocalId(C),T=v&&this.serviceColloctor.transformKey(y)||C;let S=C;!v&&this.serviceColloctor.isOwn(S)&&(S=this.serviceColloctor.getLocalId(S));const D=h[a][c][T];if(D&&S===Y){if(((m=D.selectIds)==null?void 0:m.length)===1){const R=D.selectIds[0];if(s===j.Start){const x=((w=this.serviceColloctor)==null?void 0:w.isLocalId(R))&&((z=this.serviceColloctor)==null?void 0:z.transformKey(R))||R,ee=h[a][c][x];this.cacheOriginRotate=((p=ee==null?void 0:ee.opt)==null?void 0:p.rotate)||0}const W=D.updateNodeOpt||{};W.angle=(r+this.cacheOriginRotate)%360,W.workState=s;const b={workId:y,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:W,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a};s===j.Done&&(b.willRefreshSelector=!0,b.willSerializeData=!0,this.cacheOriginRotate=0),g.push([b,{workId:y,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}continue}}s===j.Start?this.mainEngine.unWritable():s===j.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),g.length&&this.collectForLocalWorker(g,o)}}function Sg(n){switch(n){case N.Text:return Se.Text;case N.SpeechBalloon:case N.Star:case N.Ellipse:case N.Rectangle:case N.Triangle:case N.Rhombus:case N.Polygon:return Se.Shape}}class xg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.SetFontStyle);f(this,"timerId")}async setTextStyle(e,o,i,r){const{bold:s,underline:a,lineThrough:l,italic:c,fontSize:u}=i;if(o.toolsType){const h=Sg(o.toolsType);if(h===Se.Text){o.opt&&(s&&(o.opt.bold=s),k.isBoolean(a)&&(o.opt.underline=a),k.isBoolean(l)&&(o.opt.lineThrough=l),c&&(o.opt.italic=c),u&&(o.opt.fontSize=u));const g=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:o.opt,viewId:r,canSync:!1,canWorker:!1});return{key:e,textInfo:g}}Se.Shape}}async collect(e){var p,y,C,v;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,bold:i,italic:r,lineThrough:s,underline:a,viewId:l,fontSize:c}=e,u=this.control.viewContainerManager.getView(l);if(!(u!=null&&u.displayer))return;const h=u.focusScenePath,g=[...o],M=this.serviceColloctor.storage,I={},m=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",m,l);const w=[];for(;g.length;){const T=g.pop();if(!T)continue;const S=T.toString(),D=this.serviceColloctor.isLocalId(S),R=D?this.serviceColloctor.transformKey(T):S;let W=S;!D&&this.serviceColloctor.isOwn(W)&&(W=this.serviceColloctor.getLocalId(W));const b=M[l][h][R]||void 0;if(b){const A=b.updateNodeOpt||{};if(i&&(A.bold=i,I.bold=i==="bold"),r&&(A.italic=r,I.italic=r==="italic"),k.isBoolean(s)&&(A.lineThrough=s,I.lineThrough=s),k.isBoolean(a)&&(A.underline=a,I.underline=a),c&&(A.fontSize=c,I.textSize=c),b.toolsType===N.Text&&b.opt){const x=this.setTextStyle(W,k.cloneDeep(b),A,l);w.push(x);continue}if(b&&W===Y&&((p=b.selectIds)!=null&&p.length))for(const x of b.selectIds){const ee=(y=this.serviceColloctor)==null?void 0:y.isLocalId(x);let ie=ee&&((C=this.serviceColloctor)==null?void 0:C.transformKey(x))||x;const ne=M[l][h][ie]||void 0;if(!ee&&((v=this.serviceColloctor)!=null&&v.isOwn(ie))&&(ie=this.serviceColloctor.getLocalId(ie)),ne&&ne.toolsType===N.Text&&b.opt){const F=this.setTextStyle(ie,k.cloneDeep(ne),A,l);w.push(F);continue}}}}const z=await Promise.all(w);for(const T of z)if(T){const{key:S,textInfo:D}=T;D&&(D.canSync=!0,D.canWorker=!0,this.control.textEditorManager.updateForViewEdited(S,D))}Object.keys(I).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var T;this.timerId=void 0,(T=this.control.room)==null||T.setMemberState(I)},0))}}class kg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.SetPoint);f(this,"undoTickerId")}collect(e){var p;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:o,pointMap:i,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const l=a.focusScenePath,c=(p=this.serviceColloctor)==null?void 0:p.storage,u=[],h=r===j.Start&&Date.now()||void 0;h&&(this.undoTickerId=h,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,s));const g=o;if(!g)return;const M=g.toString(),I=this.serviceColloctor.isLocalId(M),m=I&&this.serviceColloctor.transformKey(g)||M;let w=M;!I&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const z=c[s][l][m];if(z&&w===Y&&z.selectIds){const y=z.updateNodeOpt||{};y.pointMap=i,y.workState=r;const C={workId:g,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:y,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===j.Done&&(C.undoTickerId=this.undoTickerId),u.push([C,{workId:g,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}r===j.Start?this.mainEngine.unWritable():r===j.Done&&this.mainEngine.abled(),u.length&&this.collectForLocalWorker(u)}}class Dg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.SetLock)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,isLocked:i,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,l=[...o],c=this.serviceColloctor.storage,u=[],h=Date.now();for(;l.length;){const g=l.pop();if(!g)continue;const M=g.toString(),I=this.serviceColloctor.isLocalId(M),m=I?this.serviceColloctor.transformKey(g):M;let w=M;!I&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const z=c[r][a][m]||void 0;if(z){const p=z.updateNodeOpt||{};p.isLocked=i;const y={workId:w,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r};u.push([y,{workId:w,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,r),u.length&&this.collectForLocalWorker(u)}}class Lg extends Ne{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",L.SetShapeOpt)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,viewId:i,...r}=e,s=this.control.viewContainerManager.getView(i);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,l=[...o],c=this.serviceColloctor.storage,u=[],h=Date.now();for(;l.length;){const g=l.pop();if(!g)continue;const M=g.toString(),I=this.serviceColloctor.isLocalId(M),m=I?this.serviceColloctor.transformKey(g):M;let w=M;!I&&this.serviceColloctor.isOwn(w)&&(w=this.serviceColloctor.getLocalId(w));const z=c[i][a][m]||void 0;if(z){const p={...z.updateNodeOpt,...r,willRefresh:!0};if(z&&w===Y){const y={workId:w,msgType:O.UpdateNode,dataType:G.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:i};u.push([y,{workId:w,msgType:O.UpdateNode,emitEventType:this.emitEventType}])}}}u.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",h,i),this.collectForLocalWorker(u))}}class ${constructor(t){f(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case L.TranslateNode:return new Tg;case L.ZIndexNode:return new Ng;case L.CopyNode:return new vg;case L.SetColorNode:return new mg;case L.DeleteNode:return new Cg;case L.ScaleNode:return new zg;case L.RotateNode:return new jg;case L.SetFontStyle:return new xg;case L.SetPoint:return new kg;case L.SetLock:return new Dg;case L.SetShapeOpt:return new Lg}}getBuilder(t){return this.builders.get(t)}registerForMainEngine(t,e){return this.builders.forEach(o=>{o&&o.registerForMainEngine(t,e)}),this}destroy(){this.builders.forEach(t=>{t&&t.destroy()}),this.builders.clear()}pause(){return this.builders.forEach(t=>{t&&t.pause()}),this}recover(){return this.builders.forEach(t=>{t&&t.recover()}),this}static emitMethod(t,e,o){Ne.dispatch(t,e,o)}static activeListener(t){Me.InternalMsgEmitter.on(L.ActiveMethod,t)}static unmountActiveListener(t){Me.InternalMsgEmitter.off(L.ActiveMethod,t)}}class bg{constructor(){f(this,"maxLastSyncTime",Pe.syncOpt.interval)}setCurrentToolsData(t){this.currentToolsData=t}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(t){this.currentLocalWorkData=t}getWorkId(){return this.currentLocalWorkData.workId}getWorkState(){return this.currentLocalWorkData.workState}}class Eg extends bg{constructor(e){var r,s;super();f(this,"isActive",!1);f(this,"currentToolsData");f(this,"currentLocalWorkData");f(this,"control");f(this,"internalMsgEmitter");f(this,"taskBatchData",new Set);f(this,"fullWorker");f(this,"subWorker");f(this,"fullWorkerUrl");f(this,"subWorkerUrl");f(this,"methodBuilder");f(this,"zIndexNodeMethod");f(this,"subWorkerDrawCount",0);f(this,"wokerDrawCount",0);f(this,"maxDrawCount",0);f(this,"reRenders",[]);f(this,"localWorkViewId");f(this,"localPointsBatchData",new Map);f(this,"tasksqueue",new Map);f(this,"useTasksqueue",!1);f(this,"useTasksClockId");f(this,"mainTasksqueueCount");f(this,"workerTasksqueueCount");f(this,"snapshotMap",new Map);f(this,"boundingRectMap",new Map);f(this,"clearAllResolveMap",new Map);f(this,"delayWorkStateToDoneResolve");f(this,"animationId");f(this,"tmpImageConfigMap",new Map);f(this,"mainThread");f(this,"willSelectorWorkId");f(this,"isLockSentEventCursor",!1);const{control:o,internalMsgEmitter:i}=e;this.control=o,this.maxLastSyncTime=((s=(r=this.control.pluginOptions)==null?void 0:r.syncOpt)==null?void 0:s.interval)||this.maxLastSyncTime,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl,this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl,this.internalMsgEmitter=i,this.currentLocalWorkData={workState:j.Pending}}destroy(){var e;(e=this.methodBuilder)==null||e.destroy(),this.unWritable(),this.taskBatchData.clear(),this.tasksqueue.clear(),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.fullWorker.terminate(),this.subWorker.terminate(),this.isActive=!1,this.clearAllResolveMap.clear(),this.snapshotMap.clear(),this.boundingRectMap.clear(),this.fullWorker.terminate(),this.subWorker.terminate()}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var o;const e=(o=this.currentToolsData)==null?void 0:o.toolsType;return e===N.Pencil||e===N.LaserPen||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon}get isCanDrawWork(){var o;const e=(o=this.currentToolsData)==null?void 0:o.toolsType;return e===N.Pencil||e===N.LaserPen||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Triangle||e===N.Rhombus}get isUseZIndex(){var o;const e=(o=this.currentToolsData)==null?void 0:o.toolsType;return e===N.Pencil||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Text||e===N.Image}get isCanRecordUndoRedo(){var o;const e=(o=this.currentToolsData)==null?void 0:o.toolsType;return e===N.Pencil||e===N.Eraser||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Text||e===N.Image}get isCanSentCursor(){var o;const e=(o=this.currentToolsData)==null?void 0:o.toolsType;return e===N.Pencil||e===N.Text||e===N.LaserPen||e===N.Arrow||e===N.Straight||e===N.Ellipse||e===N.Rectangle||e===N.Star||e===N.Polygon||e===N.SpeechBalloon||e===N.Triangle||e===N.Rhombus}get isCanStartEventConsum(){var o;const e=(o=this.currentToolsData)==null?void 0:o.toolsType;return e===N.Selector||e===N.Eraser}async init(){await this.on(),this.internalMsgEmitterListener(),this.isActive=!0}async on(){if(!this.control.hasOffscreenCanvas()){console.info("no OffscreenCanvas");const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-D6FsYoIf.js"));this.mainThread=new e(this);return}if(!this.fullWorkerUrl||!this.subWorkerUrl){console.error("no worker url config");return}this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"}),this.fullWorker.onmessage=e=>{if(e.data){const{render:o,sp:i,drawCount:r,workerTasksqueueCount:s}=e.data;if(this.isBusy&&s&&this.setWorkerTasksqueueCount(s),i!=null&&i.length&&this.collectorSyncData(i),!r&&(o!=null&&o.length)){this.viewContainerManager.render(o);return}r&&(this.wokerDrawCount=r,this.wokerDrawCount<1/0?this.maxDrawCount=Math.max(this.maxDrawCount,this.wokerDrawCount):(this.maxDrawCount=0,this.clearReRenders()),o!=null&&o.length&&(this.viewContainerManager.render(o),this.wokerDrawCount<=this.subWorkerDrawCount&&this.reRenders.length&&(this.viewContainerManager.render(this.reRenders.map(a=>({...a,isUnClose:!1}))),this.reRenders.length=0)))}},this.subWorker.onmessage=e=>{if(e.data){const{render:o,drawCount:i,sp:r}=e.data;if(r!=null&&r.length&&this.collectorSyncData(r),!i&&(o!=null&&o.length)){this.viewContainerManager.render(o);return}i&&(this.subWorkerDrawCount=i,this.wokerDrawCount<1/0&&(this.maxDrawCount=Math.max(this.maxDrawCount,this.subWorkerDrawCount)),o!=null&&o.length&&(this.subWorkerDrawCount>this.wokerDrawCount?o.forEach(s=>{s.imageBitmap&&(s.isUnClose=!0,this.reRenders.push(s))}):this.reRenders.length&&this.clearReRenders(),this.wokerDrawCount<1/0&&this.viewContainerManager.render(o)))}}}clearReRenders(){this.reRenders.length&&(this.reRenders.forEach(e=>{var o;e.imageBitmap&&((o=e.imageBitmap)==null||o.close())}),this.reRenders.length=0)}get isBusy(){return this.getTasksqueueState()===j.Doing}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.useTasksqueue&&j.Doing||j.Done}setMaxDrawCount(e){this.maxDrawCount=e}setWorkerTasksqueueCount(e){const o=Math.max(this.workerTasksqueueCount||0,e);this.workerTasksqueueCount=o}collectorSyncData(e){var i,r,s;let o=!1;for(const a of e){const{type:l,selectIds:c,opt:u,selectRect:h,strokeColor:g,fillColor:M,willSyncService:I,isSync:m,imageBitmap:w,canvasHeight:z,canvasWidth:p,rect:y,op:C,canTextEdit:v,points:T,selectorColor:S,canRotate:D,scaleType:R,textOpt:W,toolsType:b,workId:A,viewId:x,dataType:ee,canLock:ie,isLocked:ne,shapeOpt:F,toolsTypes:q,thickness:H,strokeType:V,useStroke:Z}=a;if(!x)return;const te=a.scenePath||this.viewContainerManager.getCurScenePath(x);switch(l){case O.Select:{const B=c!=null&&c.length?{...h,selectIds:c,canvasHeight:z,canvasWidth:p,points:T}:void 0;B&&(u!=null&&u.strokeColor)&&(B.selectorColor=u.strokeColor),B&&S&&(B.selectorColor=S),B&&g&&(B.strokeColor=g),B&&(u!=null&&u.fillColor)&&(B.fillColor=u.fillColor),B&&M&&(B.fillColor=M),B&&k.isBoolean(D)&&(B.canRotate=D),B&&R&&(B.scaleType=R),B&&v&&(B.canTextEdit=v),B&&W&&(B.textOpt=W),B&&k.isBoolean(ie)&&(B.canLock=ie),B&&k.isBoolean(ne)&&(B.isLocked=ne),B&&F&&(B.shapeOpt=F),B&&q&&(B.toolsTypes=q),B&&H&&(B.thickness=H),B&&V&&(B.strokeType=V),B&&k.isBoolean(Z)&&(B.useStroke=Z),x&&this.viewContainerManager.showFloatBar(x,!!B,B),I&&((i=this.collector)==null||i.dispatch({type:l,selectIds:c,opt:u,isSync:m,viewId:x,scenePath:te}));break}case O.Snapshot:if(w&&te){const B=this.snapshotMap.get(te);B&&B(w)}break;case O.BoundingBox:if(y&&te){const B=this.boundingRectMap.get(te);B&&B(y)}break;case O.Cursor:C&&this.control.cursor.collectServiceCursor({...a});break;case O.Clear:if(x){this.viewContainerManager.showFloatBar(x,!1);const B=(r=this.clearAllResolveMap.get(x))==null?void 0:r.resolve;B&&B(x)}break;case O.TextUpdate:if(b===N.Text&&A&&x){const B=this.viewContainerManager.transformToOriginPoint((u==null?void 0:u.boxPoint)||[0,0],x),_=(u==null?void 0:u.boxSize)||[0,0],oe=(s=this.viewContainerManager.getView(x))==null?void 0:s.cameraOpt;u?this.control.textEditorManager.updateTextForWorker({x:B[0],y:B[1],w:_[0],h:_[1],scale:(oe==null?void 0:oe.scale)||1,workId:A,opt:u,dataType:ee,viewId:x,canSync:I||!1,canWorker:!1}):this.control.textEditorManager.delete(A,I||!1,!1)}break;case O.GetTextActive:b===N.Text&&A&&x&&this.control.textEditorManager.updateTextForWorker({workId:A,isActive:!0,viewId:x,dataType:G.Local,canWorker:!1,canSync:!0},Date.now());break;default:o=!0;break}}o&&Je(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var o,i,r,s;for(const a of e){const{type:l,op:c,workId:u,index:h,removeIds:g,ops:M,opt:I,updateNodeOpt:m,toolsType:w,isSync:z,viewId:p,isLockSentEventCursor:y}=a;if(!p){console.error("collectorAsyncData",a);return}const C=a.scenePath||this.viewContainerManager.getCurScenePath(p);switch(l){case O.DrawWork:{(o=this.collector)==null||o.dispatch({type:l,op:c,opt:I,toolsType:w,workId:u,index:h,isSync:z,viewId:p,scenePath:C,updateNodeOpt:m});break}case O.FullWork:{(i=this.collector)==null||i.dispatch({type:l,ops:M,workId:u,updateNodeOpt:m,opt:I,toolsType:w,isSync:z,viewId:p,scenePath:C}),this.willSelectorWorkId&&u&&u.toString()===this.willSelectorWorkId&&this.control.runEffectWork(()=>{this.setShapeSelectorByWorkId(this.willSelectorWorkId,p),this.willSelectorWorkId=void 0}),y&&Je(()=>{this.setLockSentEventCursor(!1)},this.maxLastSyncTime);break}case O.UpdateNode:{(r=this.collector)==null||r.dispatch({type:l,updateNodeOpt:m,workId:u,opt:I,ops:M,op:c,isSync:z,viewId:p,scenePath:C});break}case O.RemoveNode:{g&&this.control.textEditorManager.deleteBatch(g,!1,!1),(s=this.collector)==null||s.dispatch({type:l,removeIds:g,isSync:z,viewId:p,scenePath:C}),this.willSelectorWorkId&&(g!=null&&g.includes(this.willSelectorWorkId))&&(this.willSelectorWorkId=void 0);break}}}}async onLocalEventEnd(e,o){var c;const i=this.viewContainerManager.getView(o);if(!i)return;const{focusScenePath:r,cameraOpt:s}=i,a=this.viewContainerManager.transformToScenePoint(e,o),l=[];for(const u of this.localPointsBatchData.keys())if(((c=this.currentToolsData)==null?void 0:c.toolsType)===N.Text){const h=this.getLocalPointInfo(u),g=h==null?void 0:h.state;if(g&&g===j.Start){const M=this.currentLocalWorkData.toolsOpt;M.workState=j.Doing,M.boxPoint=a,M.boxSize=[M.fontSize,M.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:Date.now().toString(),x:e[0],y:e[1],scale:(s==null?void 0:s.scale)||1,opt:M,type:Se.Text,isActive:!0,viewId:o,scenePath:r},Date.now())}this.deleteLocalPoint(u);continue}else this.pushLocalPoint(u,a,j.Done,o),l.push(u);if(l.length){try{if(await new Promise(h=>{setTimeout(async()=>{l.forEach(g=>{this.setLocalPointIsFullWork(g)}),this.delayWorkStateToDoneResolve=h,this.consume()},0)})&&l[0]){const h=l[0];l.forEach(g=>{this.deleteLocalPoint(g)}),this.willSelectorWorkId=h.toString()}}catch(u){console.log("error",u)}this.delayWorkStateToDoneResolve=void 0,l.length=0}}onLocalEventDoing(e,o){var r;if(((r=this.currentToolsData)==null?void 0:r.toolsType)===N.Text)return;this.currentLocalWorkData.workState===j.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:j.Doing});let i=!1;for(const[s,{state:a}]of this.localPointsBatchData.entries())if(this.isAbled()&&a!==j.Pending){const l=this.viewContainerManager.transformToScenePoint(e,o);this.pushLocalPoint(s,l,a===j.Start?j.Doing:a,o),i=!0}if(i){this.runAnimation();return}this.useTasksqueue||this.hoverCursor(e,o)}onLocalEventStart(e,o){var a,l,c,u,h;this.viewContainerManager.focuedViewId!==o&&this.viewContainerManager.setFocuedViewId(o),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const i=((a=this.currentToolsData)==null?void 0:a.toolsType)===N.Selector?Y:Date.now(),r=this.setZIndex(o);this.setCurrentLocalWorkData({workState:j.Start,toolsOpt:r,viewId:o});const s=this.viewContainerManager.transformToScenePoint(e,o);if(this.pushLocalPoint(i,s,j.Start,o,r),((l=this.currentToolsData)==null?void 0:l.toolsType)!==N.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",i,o),i&&r&&((c=this.currentToolsData)!=null&&c.toolsType)&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:i,toolsOpt:r,viewId:o},(u=this.currentToolsData)==null?void 0:u.toolsType),this.maxDrawCount=0,this.wokerDrawCount=0,this.subWorkerDrawCount=0,this.reRenders.length=0,this.isCanDrawWork){const g=this.viewContainerManager.getCurScenePath(o);g&&((h=this.collector)!=null&&h.hasSelector(o,g))&&this.blurSelector(o,g)}this.consume()}}setLocalPointIsFullWork(e){const o=this.getLocalPointInfo(e);o&&(o.isFullWork=!0,this.localPointsBatchData.set(e,o))}pushLocalPoint(e,o,i,r,s){let a=this.getLocalPointInfo(e);i===j.Start?a={state:j.Start,points:o,opt:s||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:r}:a&&(a.state=i,a.points.push(o[0],o[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,o,i){var l;const r=new Map,s=[];Object.keys(e).forEach(c=>{var h,g;const u=(g=(h=e[c])==null?void 0:h.opt)==null?void 0:g.zIndex;k.isNumber(u)&&s.push([c,u])});const a=s.length&&((l=this.zIndexNodeMethod)==null?void 0:l.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,o),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,o));for(const[c,u]of a){if(!e[c])continue;const h=e[c];h.opt&&k.isNumber(h.opt.zIndex)&&h.opt.zIndex!==u&&(h.opt.zIndex=u,r.set(c,h))}return r.size&&r.forEach((c,u)=>{var h;(h=this.collector)==null||h.updateValue(u,c,{viewId:o,scenePath:i,isSync:!0}),e[u]=c}),e}async originalEventLintener(e,o,i){if(this.isAbled())switch(e){case j.Start:this.setLocalWorkViewId(i),i&&this.onLocalEventStart(o,i);break;case j.Doing:i&&i===this.getLocalWorkViewId()&&this.onLocalEventDoing(o,i);break;case j.Done:i&&i===this.getLocalWorkViewId()&&await this.onLocalEventEnd(o,i);break}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var r,s,a;const o=e.toolsType,i=((r=this.currentToolsData)==null?void 0:r.toolsType)!==e.toolsType;if(super.setCurrentToolsData(e),i){const l=(s=this.viewContainerManager)==null?void 0:s.getAllViews();for(const c of l)if(c){const{id:u,focusScenePath:h}=c;i&&u&&h&&((a=this.collector)!=null&&a.hasSelector(u,h)&&this.blurSelector(u,h),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:O.UpdateTools,dataType:G.Local,toolsType:o,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:Ti}),this.runAnimation()}}prepareOnceWork(e,o){const{workId:i,toolsOpt:r,viewId:s}=e;this.queryTaskBatchData({msgType:O.CreateWork,dataType:G.Local,viewId:s,toolsType:o}).forEach(a=>{this.taskBatchData.delete(a)}),this.taskBatchData.add({msgType:O.CreateWork,workId:i,toolsType:o,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:G.Local,isRunSubWork:this.isRunSubWork,viewId:s}),this.runAnimation()}createViewWorker(e,o){const{offscreenCanvasOpt:i,layerOpt:r,dpr:s,cameraOpt:a}=o;this.taskBatchData.add({msgType:O.Init,dataType:G.Local,viewId:e,offscreenCanvasOpt:i,layerOpt:r,dpr:s,cameraOpt:a,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}),this.isBusy&&this.destroyTaskQueue(),this.consume()}destroyViewWorker(e,o=!1){var i;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:O.Destroy,dataType:G.Local,viewId:e,isRunSubWork:!0}),this.consume(),o||(i=this.collector)==null||i.dispatch({type:O.Clear,viewId:e})}onServiceDerive(e,o){var M,I,m,w,z;const{newValue:i,oldValue:r,viewId:s,scenePath:a}=o,l=k.cloneDeep(i)||{},c=e;let u=l.type;if(!i&&r){if(c&&((M=this.collector)==null?void 0:M.getLocalId(c))===Y){this.collector.isOwn(c)?this.blurSelector(s,a):this.blurSelector(s,a,c);return}if(u=O.RemoveNode,r.toolsType===N.LaserPen)return}const h=(I=this.viewContainerManager.getView(s))==null?void 0:I.focusScenePath;if(h&&h!==a)return;if(u&&c){const p=l;if(p.workId=(m=this.collector)!=null&&m.isOwn(c)?(w=this.collector)==null?void 0:w.getLocalId(c):c,p.msgType=u,p.toolsType===N.LaserPen&&(p.isRunSubWork=!0),p.dataType=G.Service,p.viewId=s,p.scenePath=a,p.selectIds&&(p.selectIds=p.selectIds.map(y=>{var C,v;return(C=this.collector)!=null&&C.isOwn(y)?(v=this.collector)==null?void 0:v.getLocalId(y):y})),p&&p.toolsType===N.Text||(r==null?void 0:r.toolsType)===N.Text){this.control.textEditorManager.onServiceDerive(p);return}this.taskBatchData.add(p)}this.runAnimation();const g=o.newValue&&((z=o.newValue.opt)==null?void 0:z.zIndex);if(this.zIndexNodeMethod&&k.isNumber(g)){const p=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<g&&this.zIndexNodeMethod.setMaxZIndex(g,s),p>g&&this.zIndexNodeMethod.setMinZIndex(g,s)}}pullServiceData(e,o,i={isAsync:!1,useAnimation:!1}){var l,c,u,h;let r=(l=this.collector)==null?void 0:l.getStorageData(e,o);const{isAsync:s,useAnimation:a}=i;if(r){r=this.correctStorage(r,e,o);const g=Object.keys(r);for(const M of g){const I=(c=r[M])==null?void 0:c.type;if(I&&M){const m=r[M];if(m.workId=(u=this.collector)!=null&&u.isOwn(M)?(h=this.collector)==null?void 0:h.getLocalId(M):M,m.msgType=I,m.dataType=G.Service,m.viewId=e,m.scenePath=o,m.useAnimation=!!a,m.selectIds&&(m.selectIds=m.selectIds.map(w=>{var z,p;return(z=this.collector)!=null&&z.isOwn(w)?(p=this.collector)==null?void 0:p.getLocalId(w):w})),m.toolsType===N.Text){this.control.textEditorManager.onServiceDerive(m);continue}this.taskBatchData.add(m)}this.internalMsgEmitter.emit("excludeIds",g,e)}s?this.consume():this.runAnimation()}}runAnimation(){!this.animationId&&!this.isBusy&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var o;this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const i=this.consumeQueue(),r=!!i.size;if(this.taskBatchData.size)for(const s of this.taskBatchData.values())s.dataType===G.Service&&(i.add(s),this.taskBatchData.delete(s));i.size?(this.post(i),r&&this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[i,{state:r,isFullWork:s,points:a,opt:l}]of this.localPointsBatchData.entries()){if(r===j.Done&&!s||r===j.Start&&!this.isCanStartEventConsum)continue;const c=a.map(u=>u);c.length&&(this.delayWorkStateToDoneResolve&&r===j.Done&&(this.delayWorkStateToDoneResolve(!0),this.setLockSentEventCursor(!0)),this.taskBatchData.add({op:c,workState:r,workId:i,dataType:G.Local,msgType:O.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(o=this.currentToolsData)==null?void 0:o.toolsType,viewId:e,scenePath:e&&this.viewContainerManager.getCurScenePath(e),opt:l,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime}),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:j.Unwritable,workId:void 0})}abled(){this.setCurrentLocalWorkData({workState:j.Pending,workId:void 0})}isAbled(){return this.currentLocalWorkData.workState!==j.Unwritable}post(e){if(!this.control.hasOffscreenCanvas()){if(!this.mainThread){let i=[];i=k.cloneDeep([...e]),setTimeout(()=>{for(const r of i)this.taskBatchData.add(r)},0);return}this.mainThread.consume(e);return}this.fullWorker.postMessage(e);const o=new Set;for(const i of e.values()){const r=i.msgType;(r===O.Init||r===O.Clear||r===O.Destroy||r===O.UpdateCamera||i.isRunSubWork)&&o.add(i)}o.size&&this.subWorker.postMessage(o)}updateNode(e,o,i,r){this.taskBatchData.add({msgType:O.UpdateNode,workId:e,updateNodeOpt:o,viewId:i,scenePath:r,dataType:G.Local}),this.runAnimation()}destroyTaskQueue(){this.useTasksqueue=!1,this.useTasksClockId&&(clearTimeout(this.useTasksClockId),this.useTasksClockId=void 0),this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0}updateCamera(e,o){var i;this.useTasksqueue||((i=this.methodBuilder)==null||i.pause(),this.blurCursor(e),this.checkDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:O.UpdateCamera,dataType:G.Local,cameraOpt:{...o,width:o.width,height:o.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 o=!this.isBusy;if(this.isBusy&&this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount<=this.workerTasksqueueCount&&(o=!0),o){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:O.TasksQueue,dataType:G.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[i,r]of this.tasksqueue.entries())r.cameraOpt&&this.control.textEditorManager.onCameraChange(r.cameraOpt,i)}return e}async clearViewScenePath(e,o){var i;if(this.control.textEditorManager.clear(e,o),this.queryTaskBatchData({msgType:O.Clear,dataType:G.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add({dataType:G.Local,msgType:O.Clear,viewId:e}),this.runAnimation(),!o){const r=this.viewContainerManager.getCurScenePath(e);(i=this.collector)==null||i.dispatch({type:O.Clear,viewId:e,scenePath:r})}this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.localPointsBatchData.clear(),await new Promise(r=>{const s=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};s.timer&&clearTimeout(s.timer),s.resolve=r,s.timer=setTimeout(()=>{const a=this.clearAllResolveMap.get(e);a!=null&&a.resolve&&a.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,s)}).then(r=>{this.clearAllResolveMap.delete(r)})}internalMsgEmitterListener(){var e;this.methodBuilder=new $([L.CopyNode,L.SetColorNode,L.DeleteNode,L.RotateNode,L.ScaleNode,L.TranslateNode,L.ZIndexNode,L.RotateNode,L.SetFontStyle,L.SetPoint,L.SetLock,L.SetShapeOpt]).registerForMainEngine(Q.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(L.ZIndexNode)}setZIndex(e){const o=this.currentToolsData&&k.cloneDeep(this.currentToolsData.toolsOpt);return o&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),o.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),o}checkDrawingWork(e){var r,s,a;let o=!1;const i=[];for(const[l,{state:c,viewId:u,points:h,opt:g}]of this.localPointsBatchData.entries())if(e===u&&c===j.Start||c===j.Doing){if(c===j.Doing&&this.isCanDrawWork){Number(l)&&Number(l)+60>Date.now()&&(i.push(l.toString()),this.taskBatchData.add({msgType:O.RemoveNode,workId:l,viewId:u,dataType:G.Local,isRunSubWork:!0}));const M=h.map(I=>I);this.taskBatchData.add({op:M,workState:j.Done,workId:l,dataType:G.Local,msgType:O.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(r=this.currentToolsData)==null?void 0:r.toolsType,viewId:u,opt:g,scenePath:u&&this.viewContainerManager.getCurScenePath(u)}),o=!0}this.deleteLocalPoint(l)}if((o||i.length)&&(this.consume(),i.length)){const l=(s=this.viewContainerManager.getView(e))==null?void 0:s.focusScenePath;(a=this.collector)==null||a.dispatch({type:O.RemoveNode,removeIds:i,viewId:e,scenePath:l})}}removeDrawingWork(e){var i,r;const o=[];for(const[s,{state:a,viewId:l}]of this.localPointsBatchData.entries())(e===l&&a===j.Start||a===j.Doing)&&(this.deleteLocalPoint(s),a===j.Doing&&this.isCanDrawWork&&(o.push(s.toString()),this.taskBatchData.add({msgType:O.RemoveNode,workId:s,viewId:l,dataType:G.Local,isRunSubWork:!0})));if(o.length){this.consume();const s=(i=this.viewContainerManager.getView(e))==null?void 0:i.focusScenePath;(r=this.collector)==null||r.dispatch({type:O.RemoveNode,removeIds:o,viewId:e,scenePath:s})}}hoverCursor(e,o){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)===N.Selector){const r=this.viewContainerManager.getView(o);if(r&&r.displayer&&r.displayer.vDom){const l=r.displayer.vDom.state.floatBarData;if(l){const{x:c,y:u,w:h,h:g}=l;if(Si(e,{x:c,y:u,w:h,h:g}))return}}const s=this.viewContainerManager.transformToScenePoint(e,o),a={msgType:O.CursorHover,dataType:G.Local,point:s,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:o};this.queryTaskBatchData({msgType:O.CursorHover,dataType:G.Local,toolsType:this.currentToolsData.toolsType,viewId:o}).forEach(l=>{this.taskBatchData.delete(l)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)!==N.Selector)return;const o={msgType:O.CursorBlur,dataType:G.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:O.CursorHover,dataType:G.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add(o),this.consume()}sendCursorEvent(e,o){if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===j.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;let i=[void 0,void 0];this.currentToolsData&&(this.isCanDrawWork||this.currentToolsData.toolsType===N.Text)&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(i=e,this.control.cursor.sendEvent(i,o))}getBoundingRect(e){var i,r;if(!((i=this.boundingRectMap)==null?void 0:i.get(e))){const s=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!s)return;if(Object.keys(s).forEach(a=>{var l;((l=this.collector)==null?void 0:l.getLocalId(a))===Y&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:O.BoundingBox,dataType:G.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(l=>{this.boundingRectMap.set(e,l)}).then(l=>(this.boundingRectMap.delete(e),l))}}}getSnapshot(e,o,i,r){var a,l,c,u,h;if(!((a=this.snapshotMap)==null?void 0:a.get(e))){const g=(l=this.collector)==null?void 0:l.getViewIdBySecenPath(e);if(!g)return;const M=(c=this.collector)==null?void 0:c.getStorageData(g,e);if(!M)return;if(Object.keys(M).forEach(I=>{var m;((m=this.collector)==null?void 0:m.getLocalId(I))===Y&&delete M[I]}),Object.keys(M).length){const I=this.viewContainerManager.mainView;if(!I)return;const m=o||((u=I.cameraOpt)==null?void 0:u.width),w=i||((h=I.cameraOpt)==null?void 0:h.height),z={msgType:O.Snapshot,dataType:G.Local,scenePath:e,scenes:M,w:m,h:w,cameraOpt:r&&{...r,width:m,height:w}||I.cameraOpt,isRunSubWork:!0,viewId:I.id};return this.taskBatchData.add(z),this.runAnimation(),new Promise(p=>{this.snapshotMap.set(e,p)}).then(p=>(this.snapshotMap.delete(e),p))}}}queryTaskBatchData(e){const o=[];if(e)for(const i of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(i[s]!==a){r=!1;break}r&&o.push(i)}return o}insertImage(e){const o=this.viewContainerManager.mainView,i=o==null?void 0:o.id,r=o==null?void 0:o.focusScenePath;if(i&&r){const{src:s,uuid:a}=e;if(a&&!s){this.tmpImageConfigMap.set(a,e);return}const l=Date.now();Me.InternalMsgEmitter.emit("addUndoTicker",l,i);const c={...e};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(i),c.zIndex=this.zIndexNodeMethod.getMaxZIndex(i)),this.taskBatchData.add({msgType:O.FullWork,dataType:G.Local,toolsType:N.Image,workId:e.uuid,opt:c,viewId:i,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,o){var a,l;const i=this.viewContainerManager.mainView,r=i==null?void 0:i.id,s=i==null?void 0:i.focusScenePath;if(r&&s&&this.collector){const c=this.collector.getStorageData(r,s);if(!c)return;for(const[u,h]of Object.entries(c))if(h&&h.toolsType===N.Image&&h.opt.uuid===e){const g=Date.now();Me.InternalMsgEmitter.emit("addUndoTicker",g,r);const M=(a=this.collector)!=null&&a.isOwn(u)?(l=this.collector)==null?void 0:l.getLocalId(u):u,I={...h.opt,locked:o};this.taskBatchData.add({msgType:O.FullWork,dataType:G.Local,toolsType:N.Image,workId:M,opt:I,viewId:r,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,o){const i=this.viewContainerManager.mainView,r=i==null?void 0:i.id,s=i==null?void 0:i.focusScenePath;if(r&&s){const a=this.tmpImageConfigMap.get(e);a&&(a.src=o,this.insertImage(a),this.tmpImageConfigMap.delete(e));return}}getImagesInformation(e){const o=[];if(this.collector){const i=this.collector.getScenePathData(e);if(!i)return o;for(const r of Object.values(i))if(r&&r.toolsType===N.Image){const s=r.opt;o.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 o}setShapeSelectorByWorkId(e,o){this.taskBatchData.add({workId:Y,selectIds:[e],msgType:O.Select,dataType:G.Local,viewId:o,willSyncService:!0}),this.runAnimation()}blurSelector(e,o,i){this.taskBatchData.add({workId:i||Y,selectIds:[],msgType:O.Select,dataType:G.Service,viewId:e,scenePath:o}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:O.Console,dataType:G.Local,isRunSubWork:!0,viewId:""}),this.consume()}}var Ag=xe,Og=function(){return Ag.Date.now()},Pg=Og,Yg=/\s/;function Rg(n){for(var t=n.length;t--&&Yg.test(n.charAt(t)););return t}var Wg=Rg,Ug=Wg,Hg=/^\s+/;function Qg(n){return n&&n.slice(0,Ug(n)+1).replace(Hg,"")}var Fg=Qg,$g=Ke,Vg=Qe,Bg="[object Symbol]";function Zg(n){return typeof n=="symbol"||Vg(n)&&$g(n)==Bg}var Gg=Zg,Jg=Fg,Ho=Ye,qg=Gg,Qo=NaN,Kg=/^[-+]0x[0-9a-f]+$/i,_g=/^0b[01]+$/i,Xg=/^0o[0-7]+$/i,eM=parseInt;function tM(n){if(typeof n=="number")return n;if(qg(n))return Qo;if(Ho(n)){var t=typeof n.valueOf=="function"?n.valueOf():n;n=Ho(t)?t+"":t}if(typeof n!="string")return n===0?n:+n;n=Jg(n);var e=_g.test(n);return e||Xg.test(n)?eM(n.slice(2),e?2:8):Kg.test(n)?Qo:+n}var oM=tM,iM=Ye,Ut=Pg,Fo=oM,nM="Expected a function",sM=Math.max,rM=Math.min;function aM(n,t,e){var o,i,r,s,a,l,c=0,u=!1,h=!1,g=!0;if(typeof n!="function")throw new TypeError(nM);t=Fo(t)||0,iM(e)&&(u=!!e.leading,h="maxWait"in e,r=h?sM(Fo(e.maxWait)||0,t):r,g="trailing"in e?!!e.trailing:g);function M(T){var S=o,D=i;return o=i=void 0,c=T,s=n.apply(D,S),s}function I(T){return c=T,a=setTimeout(z,t),u?M(T):s}function m(T){var S=T-l,D=T-c,R=t-S;return h?rM(R,r-D):R}function w(T){var S=T-l,D=T-c;return l===void 0||S>=t||S<0||h&&D>=r}function z(){var T=Ut();if(w(T))return p(T);a=setTimeout(z,m(T))}function p(T){return a=void 0,g&&o?M(T):(o=i=void 0,s)}function y(){a!==void 0&&clearTimeout(a),c=0,o=l=i=a=void 0}function C(){return a===void 0?s:p(Ut())}function v(){var T=Ut(),S=w(T);if(o=arguments,i=this,l=T,S){if(a===void 0)return I(l);if(h)return clearTimeout(a),a=setTimeout(z,t),M(l)}return a===void 0&&(a=setTimeout(z,t)),s}return v.cancel=y,v.flush=C,v}var cM=aM,lM=cM,uM=Ye,hM="Expected a function";function dM(n,t,e){var o=!0,i=!0;if(typeof n!="function")throw new TypeError(hM);return uM(e)&&(o="leading"in e?!!e.leading:o,i="trailing"in e?!!e.trailing:i),lM(n,t,{leading:o,maxWait:t,trailing:i})}var gM=dM;const ct=Xt(gM);class MM{constructor(t){f(this,"internalMsgEmitter");f(this,"control");f(this,"roomHotkeyCheckers");f(this,"tmpCopyStore",new Map);f(this,"tmpCopyCoordInfo");var i;const{control:e,internalMsgEmitter:o}=t;this.control=e,this.internalMsgEmitter=o,this.roomHotkeyCheckers=((i=this.control.room)==null?void 0:i.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var t;return((t=this.control.room)==null?void 0:t.disableDeviceInputs)||!1}get isSelector(){var t;return((t=this.control.worker.currentToolsData)==null?void 0:t.toolsType)===N.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(t){switch(t.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(t){var i,r,s;const e=this.control.viewContainerManager.focuedViewId,o=(i=this.control.viewContainerManager.focuedView)==null?void 0:i.focusScenePath;if(e&&o)switch(t){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,o))&&$.emitMethod(Q.MainEngine,L.DeleteNode,{workIds:[Y],viewId:e});break;case"copy":this.isSelector&&((s=this.collector)!=null&&s.hasSelector(e,o))&&this.copySelectorToTemp(e,o);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,o);break}(t==="changeToPencil"||t==="redo"||t==="undo")&&this.onSelfActiveHotkey(t)}colloctHotkey(t){if(this.isUseSelf){const e=this.checkHotkey(t);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(t){switch(t){case"changeToPencil":this.setMemberState({currentApplianceName:J.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:J.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:J.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:J.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:J.eraser,isLine:!0});break;case"changeToHand":this.setMemberState({currentApplianceName:J.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:J.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:J.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:J.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:J.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:J.text});break}}checkHotkey(t){for(const e of this.roomHotkeyCheckers){const{kind:o,checker:i}=e;if(i({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return o}}copySelectorToTemp(t,e){var c,u;const o=this.control.viewContainerManager.getView(t),i=(u=(c=this.mainEngine)==null?void 0:c.methodBuilder)==null?void 0:u.getBuilder(L.CopyNode);if(!o||!this.collector||!i)return;const r=this.collector.transformKey(Y),s=this.collector.getStorageData(t,e);if(!s)return;const a=s[r],l=a&&i.copySelector({viewId:t,store:a});l&&(this.tmpCopyCoordInfo=l==null?void 0:l.copyCoordInfo,this.tmpCopyStore=l==null?void 0:l.copyStores)}pasteTempToFocusView(t,e){var r,s;const o=this.control.viewContainerManager.getView(t),i=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(L.CopyNode);if(!(!o||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!i)&&o.viewData&&this.tmpCopyCoordInfo){const a=k.cloneDeep(this.tmpCopyCoordInfo.offset),l=this.tmpCopyCoordInfo.cameraOpt,c=o.viewData.camera;a.x=a.x+c.centerX-l.centerX,a.y=a.y+c.centerY-l.centerY;const u=Date.now();this.control.worker.internalMsgEmitter.emit("addUndoTicker",u,t),i.pasteSelector({viewId:t,scenePath:e,copyStores:k.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:c},undoTickerId:u})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const at=class at{constructor(t){f(this,"version",mi);f(this,"plugin");f(this,"room");f(this,"play");f(this,"collector");f(this,"hasSwitchToSelectorEffect");f(this,"snapshootStateMap");f(this,"effectResolve");f(this,"hotkeyManager");f(this,"pluginOptions");f(this,"roomMember");f(this,"cursor");f(this,"textEditorManager");f(this,"worker");f(this,"onSceneChange",async(t,e)=>{var s;const o=this.viewContainerManager.getView(e);o!=null&&o.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,o.focusScenePath)&&this.worker.blurSelector(e,o.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const i=o==null?void 0:o.displayer;i&&(i.setActive(!1),await i.stopEventHandler());const r=t;r&&this.viewContainerManager.setViewScenePath(e,r),i==null||i.setActive(!0)});f(this,"onRoomMembersChange",t=>{this.roomMember.setRoomMembers(X.toJS(t))});f(this,"onMemberChange",ct(t=>{if(!this.room||!this.worker||!t)return;const e=this.getToolsKey(t),o=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(o),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));f(this,"internalSceneChange",(t,e)=>{var o;(o=this.worker)==null||o.clearViewScenePath(t,!0).then(()=>{var i;(i=this.worker)==null||i.pullServiceData(t,e,{isAsync:!0,useAnimation:!1})})});f(this,"internalCameraChange",(t,e)=>{var o;(o=this.worker)==null||o.updateCamera(t,e)});const{displayer:e,plugin:o,options:i}=t;this.plugin=o,this.room=X.isRoom(e)?e:void 0,this.play=X.isPlayer(e)?e:void 0,this.pluginOptions=i,this.roomMember=new pg;const r={control:this,internalMsgEmitter:at.InternalMsgEmitter};this.cursor=new wg(r),this.textEditorManager=new Ig(r),this.worker=new Eg(r),this.hotkeyManager=new MM(r)}hasOffscreenCanvas(){return Ni==="worker"}bindPlugin(t){var e,o;this.plugin=t,this.collector&&this.collector.removeStorageStateListener(),this.collector=new Zt(this,t,(o=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:o.interval),this.activePlugin()}destroy(){var t,e,o,i,r;this.roomMember.destroy(),(t=this.collector)==null||t.destroy(),(e=this.worker)==null||e.destroy(),(o=this.viewContainerManager)==null||o.destroy(),(i=this.cursor)==null||i.destroy(),(r=this.textEditorManager)==null||r.destory()}cleanCurrentScene(){const t=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(at.InternalMsgEmitter.emit("addUndoTicker",t,e),this.worker.clearViewScenePath(e))}onWritableChange(t){var e,o;t?(o=this.worker)==null||o.abled():(e=this.worker)==null||e.unWritable()}getToolsKey(t){const e=t.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case J.text:return t.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Text;case J.pencil:return t.useLaserPen?N.LaserPen:N.Pencil;case J.eraser:case J.pencilEraser:return N.Eraser;case J.selector:return N.Selector;case J.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Arrow;case J.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Straight;case J.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Ellipse;case J.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),N.Rectangle;case J.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===ze.Pentagram||t.shapeType===ze.Star)return N.Star;if(t.shapeType===ze.Polygon||t.shapeType===ze.Triangle||t.shapeType===ze.Rhombus)return N.Polygon;if(t.shapeType===ze.SpeechBalloon)return N.SpeechBalloon;break}return N.Clicker}getToolsOpt(t,e){if(t===N.Clicker)return{toolsType:t,toolsOpt:{}};const o=e.currentApplianceName,i={strokeColor:Mt(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(t){case N.Text:i.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),i.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),i.textAlign=(e==null?void 0:e.textAlign)||"left",i.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",i.fontColor=(e==null?void 0:e.textColor)&&Mt(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||i.strokeColor||"rgba(0,0,0,1)",i.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&Mt(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",i.bold=(e==null?void 0:e.bold)&&"bold"||void 0,i.italic=(e==null?void 0:e.italic)&&"italic"||void 0,i.underline=(e==null?void 0:e.underline)||void 0,i.lineThrough=(e==null?void 0:e.lineThrough)||void 0,i.text="",i.strokeColor=void 0;break;case N.Pencil:i.strokeType=(e==null?void 0:e.strokeType)||le.Normal;break;case N.Eraser:i.thickness=Math.min(3,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,i.isLine=o===J.eraser&&!0;break;case N.LaserPen:i.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===le.Stroke?i.strokeType=le.Normal:i.strokeType=(e==null?void 0:e.strokeType)||le.Normal;break;case N.Arrow:case N.Straight:e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===le.Stroke?i.strokeType=le.Normal:i.strokeType=(e==null?void 0:e.strokeType)||le.Normal;break;case N.Ellipse:case N.Rectangle:case N.Star:case N.Polygon:case N.SpeechBalloon:e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===le.Stroke?i.strokeType=le.Normal:i.strokeType=(e==null?void 0:e.strokeType)||le.Normal,t===N.Star&&(e.shapeType===ze.Pentagram?(i.vertices=10,i.innerVerticeStep=2,i.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(i.vertices=e.vertices,i.innerVerticeStep=e.innerVerticeStep,i.innerRatio=e.innerRatio)),t===N.Polygon&&(e.shapeType===ze.Triangle?i.vertices=3:e.shapeType===ze.Rhombus?i.vertices=4:e.vertices&&(i.vertices=e.vertices)),i.fillColor=(e==null?void 0:e.fillColor)&&Mt(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===N.SpeechBalloon&&(i.placement=e.placement||"bottomLeft");break}return{toolsType:t,toolsOpt:i}}effectViewContainer(t){var e,o,i,r,s;switch(t){case N.Text:case N.Pencil:case N.LaserPen:case N.Arrow:case N.Straight:case N.Rectangle:case N.Ellipse:case N.Star:case N.Polygon:case N.SpeechBalloon:case N.Triangle:case N.Rhombus:this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.abled();break;case N.Eraser:case N.Selector:this.room.disableDeviceInputs=!1,(o=this.cursor)==null||o.unabled(),(i=this.worker)==null||i.abled();break;default:this.room.disableDeviceInputs=!1,(r=this.worker)==null||r.unWritable(),(s=this.cursor)==null||s.unabled();break}setTimeout(()=>{this.viewContainerManager.getAllViews().forEach(l=>{l!=null&&l.displayer&&l.displayer.bindToolsClass()})},0)}async getBoundingRect(t){var o,i,r,s,a;const e=await((o=this.worker)==null?void 0:o.getBoundingRect(t));if(e){const l=((r=(i=this.viewContainerManager.mainView)==null?void 0:i.viewData)==null?void 0:r.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},c=((a=(s=this.viewContainerManager.mainView)==null?void 0:s.viewData)==null?void 0:a.camera.scale)||1;return{width:Math.floor(e.w/c)+1,height:Math.floor(e.h/c)+1,originX:l.x,originY:l.y}}}async screenshotToCanvas(t,e,o,i,r,s,a){const l=await this.worker.getSnapshot(e,o,i,r);l&&(t.drawImage(l,s||0,a||0),l.close())}async scenePreview(t,e){var s,a,l,c;const o=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(t);if(!o)return;const i=this.viewContainerManager.getView(o);if(!i||!((a=i.cameraOpt)!=null&&a.width)||!((l=i.cameraOpt)!=null&&l.height))return;const r=await((c=this.worker)==null?void 0:c.getSnapshot(t));if(r&&this.worker){const u=document.createElement("canvas"),h=u.getContext("2d"),{width:g,height:M}=i.cameraOpt;u.width=g,u.height=M,h&&(h.drawImage(r,0,0),e.src=u.toDataURL(),e.onload=()=>{u.remove()},e.onerror=()=>{u.remove(),e.remove()}),r.close()}}switchToText(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:J.text})}switchToSelector(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:J.selector})}async runEffectWork(t){if(this.hasSwitchToSelectorEffect){const e=await new Promise(o=>{this.switchToSelector(),this.effectResolve=o});this.effectResolve=void 0,e&&t&&t()}}setSnapshootData(){var t;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(t=this.room)==null?void 0:t.state.memberState))}getSnapshootData(t){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(t)}clearSnapshootData(){var t;(t=this.snapshootStateMap)==null||t.clear(),this.snapshootStateMap=void 0}consoleWorkerInfo(){var t;(t=this.worker)==null||t.consoleWorkerInfo()}};f(at,"InternalMsgEmitter",new Zo);let Me=at;const Ue=class Ue{constructor(t){f(this,"emitter",new Zo);f(this,"undoStack");f(this,"redoStack");f(this,"worker");f(this,"control");f(this,"room");f(this,"isTicking");f(this,"undoTickerId");f(this,"viewId");f(this,"scenePath");f(this,"tickStartStorerCache");f(this,"excludeIds",new Set);f(this,"onChangeScene",k.debounce(()=>{const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){let e=this.undoStack.filter(i=>i.scenePath===t).length;const o=this.redoStack.filter(i=>i.scenePath===t).length;e===0&&o===0&&this.tickStartStorerCache&&this.scenePath===t&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",o)}},Ue.waitTime));const{control:e,internalMsgEmitter:o,viewId:i}=t;this.control=e,this.emitter=o,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=i}get collector(){return this.control.collector}addExcludeIds(t){if(this.isTicking)for(const e of t)this.excludeIds.add(e)}undoTickerStart(t,e){if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){!this.undoTickerId&&!this.tickStartStorerCache&&!this.scenePath&&this.emitter.emit("onCanUndoStepsUpdate",1),this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const o=this.collector.transformKey(Y);this.excludeIds.add(o),this.undoTickerId=t,this.scenePath=e;const i=this.collector.getStorageData(this.viewId,e)||{};this.tickStartStorerCache=new Map(Object.entries(k.cloneDeep(i)))}}undoTickerEndSync(t,e,o){var i,r;if(t===this.undoTickerId&&o===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const s=((i=this.collector)==null?void 0:i.storage[e])&&((r=this.collector)==null?void 0:r.storage[e][o])||{},a=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(s)));a.size&&(this.undoStack.push({id:t,type:2,data:k.cloneDeep(a),scenePath:o}),this.undoStack.length>Ue.MaxStackLength&&this.undoStack.shift(),this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)),this.redoStack.length&&(this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.undoTickerId=void 0,this.excludeIds.clear()}}undo(t){this.undoTickerId&&this.tickStartStorerCache&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath);let e=this.undoStack.length-1;for(;e>=0;){if(this.undoStack[e].scenePath===t){const s=this.undoStack[e];s&&(this.redoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s)),this.undoStack.splice(e,1);break}e--}const o=this.undoStack.filter(r=>r.scenePath===t).length,i=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",o),this.emitter.emit("onCanRedoStepsUpdate",i),o}redo(t){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===t){const s=this.redoStack[e];s&&(!this.undoTickerId&&s.tickStartStorerCache?(this.undoTickerId=s.id,this.tickStartStorerCache=s.tickStartStorerCache,this.scenePath=s.scenePath):this.undoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const o=this.undoStack.filter(r=>r.scenePath===t).length,i=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",o),this.emitter.emit("onCanRedoStepsUpdate",i),i}clear(){this.clearUndo(),this.clearRedo()}clearUndo(){this.undoStack.length=0,this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){let e=this.undoStack.filter(i=>i.scenePath===t).length;const o=this.redoStack.filter(i=>i.scenePath===t).length;e===0&&o===0&&this.tickStartStorerCache&&this.scenePath===t&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",o)}}diffFun(t,e){const o=new Set,i=t.keys(),r=e.keys();for(const s of i){if(this.excludeIds.has(s))continue;const a=t.get(s),l=e.get(s);if(a&&l){if(k.isEqual(l,a))continue;o.add({dataType:3,key:s,data:[a,l]});continue}a&&o.add({dataType:2,key:s,data:a})}for(const s of r){if(this.excludeIds.has(s))continue;const a=e.get(s);a&&!t.has(s)&&o.add({dataType:1,key:s,data:a})}return o}isDrawEffectiveScene(t,e){const{key:o}=t;return!e.includes(o)}isDeleteEffectiveScene(t,e,o){var s;const{key:i}=t;if(!e.includes(i))return!1;const r=e.filter(a=>{var l,c;return((l=this.collector)==null?void 0:l.getLocalId(a))===Y&&!((c=this.collector)!=null&&c.isOwn(a))}).map(a=>{var l;return(l=this.collector)==null?void 0:l.storage[this.viewId][o][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(i))return!1;return!0}isOldEffectiveScene(t,e,o){var s;const{key:i}=t;if(!e.includes(i))return!1;const r=e.filter(a=>{var l,c;return((l=this.collector)==null?void 0:l.getLocalId(a))===Y&&!((c=this.collector)!=null&&c.isOwn(a))}).map(a=>{var l;return(l=this.collector)==null?void 0:l.storage[this.viewId][o][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(i))return!1;return!0}isNewEffectiveScene(t,e){const{key:o}=t;return!!e.includes(o)}refreshPlugin(t,e=!1){var s,a,l,c,u,h,g,M,I,m,w,z,p,y,C,v,T,S,D,R,W;let o;const{scenePath:i}=t,r=t.data;if(!(!r||!this.collector))for(const b of r.values()){const{dataType:A,data:x,key:ee}=b,ie=this.collector.getStorageData(this.viewId,i),ne=ie&&Object.keys(ie)||[];switch(A){case 1:if(o=e?this.isDrawEffectiveScene(b,ne):this.isDeleteEffectiveScene(b,ne,i),o)if(e&&!Array.isArray(x)){if((s=x.updateNodeOpt)!=null&&s.useAnimation&&(x.updateNodeOpt.useAnimation=!1),((a=this.collector)==null?void 0:a.getLocalId(ee))===Y&&((l=this.collector)!=null&&l.isOwn(b.key))){const F=x.selectIds;if(F){const q=ne.filter(V=>{var Z,te;return((Z=this.collector)==null?void 0:Z.getLocalId(V))===Y&&!((te=this.collector)!=null&&te.isOwn(V))}).map(V=>{var Z;return(Z=this.collector)==null?void 0:Z.storage[this.viewId][i][V]});let H=!1;for(const V of q)for(let Z=0;Z<F.length;Z++)(c=V==null?void 0:V.selectIds)!=null&&c.includes(F[Z])&&(delete F[Z],H=!0);H&&(x.selectIds=F.filter(V=>!!V))}}(u=this.collector)==null||u.updateValue(b.key,x,{isAfterUpdate:!0,viewId:this.viewId,scenePath:i,isSync:!0})}else!e&&!Array.isArray(b.data)&&((h=this.collector)==null||h.updateValue(b.key,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:i,isSync:!0}));break;case 2:if(o=e?this.isDeleteEffectiveScene(b,ne,i):this.isDrawEffectiveScene(b,ne),o){if(e&&!Array.isArray(x))(g=this.collector)==null||g.updateValue(ee,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:i,isSync:!0});else if(!e&&!Array.isArray(x)){if((M=x.updateNodeOpt)!=null&&M.useAnimation&&(x.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(b.key))===Y&&((m=this.collector)!=null&&m.isOwn(b.key))){const F=x.selectIds;if(F){const q=ne.filter(V=>{var Z,te;return((Z=this.collector)==null?void 0:Z.getLocalId(V))===Y&&!((te=this.collector)!=null&&te.isOwn(V))}).map(V=>{var Z;return(Z=this.collector)==null?void 0:Z.storage[this.viewId][i][V]});let H=!1;for(const V of q)for(let Z=0;Z<F.length;Z++)(w=V==null?void 0:V.selectIds)!=null&&w.includes(F[Z])&&(delete F[Z],H=!0);H&&(x.selectIds=F.filter(V=>!!V))}}(z=this.collector)==null||z.updateValue(b.key,b.data,{isAfterUpdate:!0,viewId:this.viewId,scenePath:i,isSync:!0})}}break;case 3:if(o=e?this.isNewEffectiveScene(b,ne):this.isOldEffectiveScene(b,ne,i),o){if(e&&Array.isArray(x)&&x.length===2){const F=x[1];if((p=F.updateNodeOpt)!=null&&p.useAnimation&&(F.updateNodeOpt.useAnimation=!1),((y=this.collector)==null?void 0:y.getLocalId(b.key))===Y&&((C=this.collector)!=null&&C.isOwn(b.key))){const q=F.selectIds;if(q){const H=ne.filter(Z=>{var te,B;return((te=this.collector)==null?void 0:te.getLocalId(Z))===Y&&!((B=this.collector)!=null&&B.isOwn(Z))}).map(Z=>{var te;return(te=this.collector)==null?void 0:te.storage[this.viewId][i][Z]});let V=!1;for(const Z of H)for(let te=0;te<q.length;te++)Z!=null&&Z.selectIds&&((v=Z.selectIds)!=null&&v.includes(q[te]))&&(delete q[te],V=!0);V&&(F.selectIds=q.filter(Z=>!!Z))}}(T=this.collector)==null||T.updateValue(ee,F,{isAfterUpdate:!0,viewId:this.viewId,scenePath:i,isSync:!0})}else if(!e&&Array.isArray(x)&&x.length===2){const F=x[0];if((S=F.updateNodeOpt)!=null&&S.useAnimation&&(F.updateNodeOpt.useAnimation=!1),((D=this.collector)==null?void 0:D.getLocalId(b.key))===Y&&((R=this.collector)!=null&&R.isOwn(b.key))){const q=F.selectIds;if(q){const H=ne.filter(Z=>{var te,B;return((te=this.collector)==null?void 0:te.getLocalId(Z))===Y&&!((B=this.collector)!=null&&B.isOwn(Z))}).map(Z=>{var te;return(te=this.collector)==null?void 0:te.storage[this.viewId][i][Z]});let V=!1;for(const Z of H)for(let te=0;te<q.length;te++)Z!=null&&Z.selectIds&&Z.selectIds.includes(q[te])&&(delete q[te],V=!0);V&&(F.selectIds=q.filter(Z=>!!Z))}}(W=this.collector)==null||W.updateValue(b.key,F,{isAfterUpdate:!0,viewId:this.viewId,scenePath:i,isSync:!0})}}break}}}};f(Ue,"sdkCallBack"),f(Ue,"MaxStackLength",20),f(Ue,"waitTime",100);let Ct=Ue;function pM(n){return n instanceof TouchEvent||n instanceof window.TouchEvent||(n==null?void 0:n.touches)&&(n==null?void 0:n.touches.length)||(n==null?void 0:n.changedTouches)&&(n==null?void 0:n.changedTouches.length)}function Ze(n){return pM(n)&&(n.touches&&n.touches.length===1||n.changedTouches&&n.changedTouches.length===1)}function xi(n){return n.touches&&n.touches.length?{x:n.touches[0].pageX,y:n.touches[0].pageY}:n.changedTouches&&n.changedTouches.length?{x:n.changedTouches[0].pageX,y:n.changedTouches[0].pageY}:{x:n.pageX,y:n.pageY}}class Ge{constructor(t){f(this,"internalMsgEmitter");f(this,"control");f(this,"mainView");f(this,"appViews",new Map);const{control:e,internalMsgEmitter:o}=t;this.control=e,this.internalMsgEmitter=o,this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart.bind(this)),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds.bind(this))}undoTickerStart(t,e){const o=this.getView(e);o&&o.displayer&&o.focusScenePath&&o.displayer.commiter.undoTickerStart(t,o.focusScenePath)}addExcludeIds(t,e){const o=this.getView(e);o&&o.displayer&&o.focusScenePath&&o.displayer.commiter.addExcludeIds(t)}undo(){const t=this.focuedView;let e=0;if(t){const o=t.focusScenePath;e=t.displayer.commiter.undo(o)||0}return e}redo(){const t=this.focuedView;let e=0;if(t){const o=t.focusScenePath;e=t.displayer.commiter.redo(o)||0}return e}validator(t,e,o){var s;const i=k.clone(t[e]),r=k.clone(o);e==="focusScenePath"&&o&&!k.isEqual(i,r)&&(this.control.internalSceneChange(t.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!k.isEqual(i,r)&&this.control.internalCameraChange(t.id,r)}destroyAppView(t,e=!1){const o=this.appViews.get(t);o&&(this.control.textEditorManager.clear(t,e),o.displayer.destroy(),this.appViews.delete(t))}createMianView(t){this.mainView=new Proxy(t,{set:(e,o,i)=>(this.control.worker.isActive&&this.validator(e,o,i),e[o]=i,!0)})}createAppView(t){const e=t.id,o=new Proxy(t,{set:(i,r,s)=>(this.control.worker.isActive&&this.validator(i,r,s),i[r]=s,!0)});this.appViews.set(e,o)}isAppView(t){return t!==ge&&this.appViews.has(t)}getView(t){var e;return t===ge?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var o;if(t===ge&&this.mainView)this.mainView.focusScenePath=e;else{const i=t&&((o=this.appViews)==null?void 0:o.get(t))||void 0;i&&(i.focusScenePath=e)}}setViewData(t,e){var o;if(t===ge&&this.mainView)this.mainView.viewData=e;else{const i=t&&((o=this.appViews)==null?void 0:o.get(t))||void 0;i&&(i.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===ge?this.focuedView=this.mainView:this.focuedView=t&&((e=this.appViews)==null?void 0:e.get(t))||void 0,this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(t,e){var i;let o;t===ge?o=this.mainView:o=(i=this.appViews)==null?void 0:i.get(t),o&&(o.focusScenePath=e)}destroy(){var t;this.internalMsgEmitter.removeAllListeners("addUndoTicker"),this.internalMsgEmitter.removeAllListeners("excludeIds"),(t=this.mainView)==null||t.displayer.destroy(),this.appViews.forEach(e=>{this.destroyAppView(e.id,!0),this.control.worker.destroyViewWorker(e.id)})}setFocuedViewCameraOpt(t){if(this.focuedView){const e=this.focuedView.cameraOpt;k.isEqual(e,t)||(this.focuedView.cameraOpt=t)}}transformToOriginPoint(t,e){const o=this.getView(e);if(o!=null&&o.viewData){const i=o.viewData.convertToPointOnScreen(t[0],t[1]);return[i.x,i.y]}return t}transformToScenePoint(t,e){const o=this.getView(e);if(o!=null&&o.viewData){const i=o.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[i.x,i.y]}return t}render(t){var e,o,i,r,s,a,l,c,u,h,g,M,I,m,w,z,p;for(const y of t){const{rect:C,imageBitmap:v,isClear:T,isUnClose:S,drawCanvas:D,clearCanvas:R,viewId:W}=y,b=(e=this.getView(W))==null?void 0:e.displayer;if(b&&C){const{dpr:A,canvasBgRef:x,canvasFloatRef:ee,canvasServiceFloatRef:ie,canvasTopRef:ne}=b,F=Math.floor(C.w*A),q=Math.floor(C.h*A),H=Math.ceil(C.x*A),V=Math.ceil(C.y*A);if(T){switch(R){case ke.TopFloat:(i=(o=ne.current)==null?void 0:o.getContext("2d"))==null||i.clearRect(H,V,F,q);break;case ke.Float:(s=(r=ee.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(H,V,F,q);break;case ke.ServiceFloat:(l=(a=ie.current)==null?void 0:a.getContext("2d"))==null||l.clearRect(H,V,F,q);break;case ke.Bg:(u=(c=x.current)==null?void 0:c.getContext("2d"))==null||u.clearRect(H,V,F,q);break}continue}if(D&&v)switch(D){case ke.TopFloat:(g=(h=ne.current)==null?void 0:h.getContext("2d"))==null||g.drawImage(v,0,0,F,q,H,V,F,q);break;case ke.Float:{(I=(M=ee.current)==null?void 0:M.getContext("2d"))==null||I.drawImage(v,0,0,F,q,H,V,F,q);break}case ke.ServiceFloat:{(w=(m=ie.current)==null?void 0:m.getContext("2d"))==null||w.drawImage(v,0,0,F,q,H,V,F,q);break}case ke.Bg:{(p=(z=x.current)==null?void 0:z.getContext("2d"))==null||p.drawImage(v,0,0,F,q,H,V,F,q);break}}if(S)continue;v==null||v.close()}}}showFloatBar(t,e,o){const i=this.getView(t),r=i==null?void 0:i.displayer.vDom;r&&r.showFloatBar(e,o)}setActiveTextEditor(t,e){const o=this.getView(t),i=o==null?void 0:o.displayer.vDom;i&&i.setActiveTextEditor(e)}}f(Ge,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),f(Ge,"defaultScreenCanvasOpt",{autoRender:!1,contextType:zt.Canvas2d}),f(Ge,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class fM{constructor(t,e,o){f(this,"viewId");f(this,"control");f(this,"internalMsgEmitter");f(this,"commiter");f(this,"cachePoint");f(this,"cacheCursorPoint");f(this,"active",!0);f(this,"mousedown",t=>{if(this.active&&t.button===0&&this.viewId){this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Start,e,this.viewId)}});f(this,"mousemove",t=>{if(this.active&&this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Doing,e,this.viewId)}});f(this,"mouseup",t=>{if(this.active&&t.button===0&&this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(j.Done,e,this.viewId),this.cachePoint=void 0}});f(this,"touchstart",t=>{var e;if(this.active){if(!Ze(t)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){if(!this.control.worker.isAbled()){const i=(e=this.control.worker.getCurrentToolsData())==null?void 0:e.toolsType;i&&this.control.effectViewContainer(i)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const o=this.getPoint(t);this.cachePoint=o,o&&this.control.worker.originalEventLintener(j.Start,o,this.viewId)}}});f(this,"touchmove",t=>{if(this.active){if(!Ze(t)){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Doing,e,this.viewId)}}});f(this,"touchend",t=>{if(this.active){if(!Ze(t)||!this.control.worker.isAbled()){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}if(this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(j.Done,e,this.viewId),this.cachePoint=void 0}}});f(this,"cursorMouseMove",k.throttle(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&k.isEqual(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));f(this,"cursorMouseLeave",k.throttle(()=>{this.viewId&&(this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId))},30,{leading:!1}));f(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.viewId=t,this.control=e,this.internalMsgEmitter=o;const i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new Ct(i)}bindToolsClass(){var e,o;const t=(o=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:o.toolsType;switch(t){case N.Text:case N.Pencil:case N.LaserPen:case N.Arrow:case N.Straight:case N.Rectangle:case N.Ellipse:case N.Star:case N.Polygon:case N.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===N.Text?"cursor-text":t===N.Pencil||t===N.LaserPen?"cursor-pencil":"cursor-arrow"}`);break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}setViewId(t){this.viewId=t}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([Q.Cursor,this.viewId])}getPoint(t){const e=xi(t);if(e&&k.isNumber(e.x)&&k.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(j.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const o=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),i=o&&parseInt(o[0])||0,r=o&&parseInt(o[1])||0;return[i,r]}getContainerOffset(t,e){var r;const o=this.getTranslate(t);let i={x:e.x+t.offsetLeft+o[0],y:e.y+t.offsetTop+o[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(i=this.getContainerOffset(t.offsetParent,i)),i}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,{capture:!0,passive:!1}),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,{capture:!0,passive:!1}),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,{capture:!0,passive:!1}),window.addEventListener("touchend",this.touchend,{capture:!0,passive:!1}),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}class ki{constructor(t,e){f(this,"viewId",ge);f(this,"control");f(this,"internalMsgEmitter");f(this,"commiter");f(this,"cachePoint");f(this,"cacheCursorPoint");f(this,"active",!0);f(this,"mousedown",t=>{if(this.active&&t.button===0){this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Start,e,this.viewId)}});f(this,"mousemove",t=>{if(!this.active)return;const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Doing,e,this.viewId)});f(this,"mouseup",t=>{if(this.active&&t.button===0){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(j.Done,e,this.viewId),this.cachePoint=void 0}});f(this,"touchstart",t=>{var o;if(!this.active)return;if(!Ze(t)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}if(!this.control.worker.isAbled()){const i=(o=this.control.worker.getCurrentToolsData())==null?void 0:o.toolsType;i&&this.control.effectViewContainer(i)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Start,e,this.viewId)});f(this,"touchmove",t=>{if(!this.active)return;if(!Ze(t)){this.control.worker.unWritable(),this.viewId&&this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(j.Doing,e,this.viewId)});f(this,"touchend",t=>{if(!this.active)return;if(!Ze(t)||!this.control.worker.isAbled()){this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(j.Done,e,this.viewId),this.cachePoint=void 0});f(this,"cursorMouseMove",k.throttle(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&k.isEqual(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));f(this,"cursorMouseLeave",k.throttle(()=>{this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)},30,{leading:!1}));f(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.control=t,this.internalMsgEmitter=e;const o={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new Ct(o)}bindToolsClass(){var e,o;const t=(o=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:o.toolsType;switch(t){case N.Text:case N.Pencil:case N.LaserPen:case N.Arrow:case N.Straight:case N.Rectangle:case N.Ellipse:case N.Star:case N.Polygon:case N.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===N.Text?"cursor-text":t===N.Pencil||t===N.LaserPen?"cursor-pencil":"cursor-arrow"}`);break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}updateSize(){this.setCanvassStyle()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.destroy(),this.internalMsgEmitter.removeAllListeners([Q.Cursor,this.viewId])}getPoint(t){const e=xi(t);if(e&&k.isNumber(e.x)&&k.isNumber(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(j.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const o=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),i=o&&parseInt(o[0])||0,r=o&&parseInt(o[1])||0;return[i,r]}getContainerOffset(t,e){var r;const o=this.getTranslate(t);let i={x:e.x+t.offsetLeft+o[0],y:e.y+t.offsetTop+o[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(i=this.getContainerOffset(t.offsetParent,i)),i}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,{capture:!1,passive:!1}),window.addEventListener("mouseup",this.mouseup,!1),t.addEventListener("touchstart",this.touchstart,{capture:!0,passive:!1}),window.addEventListener("touchmove",this.touchmove,{capture:!0,passive:!1}),window.addEventListener("touchend",this.touchend,{capture:!0,passive:!1}),t.addEventListener("mousemove",this.cursorMouseMove,!0),t.addEventListener("mouseleave",this.cursorMouseLeave,!0),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}const yM="index-module__Container__nLsM3",IM="index-module__CanvasBox__j2Xe-",wM="index-module__FloatCanvas__d1YR7",vM="index-module__TopFloatCanvas__7IaCw",mM="index-module__SnapshotBox__--eeE",NM="index-module__FloatBar__cm-EL",TM="index-module__RotateBtn__HSSkf",CM="index-module__ResizeBtn__yjvda",zM="index-module__CursorBox__2UHvI",jM="index-module__TextEditorContainer__Qm8KC",SM="index-module__ResizeTowBox__HOllX",xM="index-module__FloatBarBtn__FJrOG",ye={Container:yM,CanvasBox:IM,FloatCanvas:wM,TopFloatCanvas:vM,SnapshotBox:mM,FloatBar:NM,RotateBtn:TM,ResizeBtn:CM,CursorBox:zM,TextEditorContainer:jM,ResizeTowBox:SM,FloatBarBtn:xM},kM={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 pe(n){return kM[n]}const DM=n=>{const{workIds:t,mananger:e}=n;return d.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onClick:o=>{o.cancelable&&o.preventDefault(),o.stopPropagation(),$.emitMethod(Q.MainEngine,L.DeleteNode,{workIds:t||[Y],viewId:e.viewId})},onTouchEnd:o=>{o.cancelable&&o.preventDefault(),o.stopPropagation(),$.emitMethod(Q.MainEngine,L.DeleteNode,{workIds:t||[Y],viewId:e.viewId})}},d.createElement("img",{alt:"icon",src:pe("delete")}))},LM=n=>{const{workIds:t,viewId:e}=n;return d.createElement("div",{className:"button normal-button",onClick:o=>{o.cancelable&&o.preventDefault(),o.stopPropagation(),$.emitMethod(Q.MainEngine,L.CopyNode,{workIds:t||[Y],viewId:e})},onTouchEnd:o=>{o.stopPropagation(),$.emitMethod(Q.MainEngine,L.CopyNode,{workIds:t||[Y],viewId:e})}},d.createElement("img",{alt:"icon",src:pe("duplicate")}))},$o=n=>{const{icon:t,onClickHandler:e,onTouchEndHandler:o}=n;return d.createElement("div",{className:"button normal-button",onClick:e,onTouchEnd:o},d.createElement("img",{src:pe(t)}))},bM=n=>{const{open:t,setOpen:e,floatBarRef:o}=n,{floatBarData:i,mananger:r}=d.useContext(he),[s,a]=d.useState([]),l=d.useMemo(()=>{if(o!=null&&o.current&&k.isNumber(i==null?void 0:i.y)&&(r!=null&&r.height)){if(o.current.offsetTop&&o.current.offsetTop+i.y>180){const g={};return g.top="inherit",g.bottom=50,g}else if(!o.current.offsetTop&&(r==null?void 0:r.height)-o.current.offsetTop-i.y<120){const g={};return g.top="inherit",g.bottom=50,g}}},[o==null?void 0:o.current,i,r]),c=d.useMemo(()=>t?d.createElement("div",{className:"image-layer-menu",style:l},d.createElement($o,{icon:"to-top",onClickHandler:g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),$.emitMethod(Q.MainEngine,L.ZIndexNode,{workIds:[Y],layer:He.Top,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:g=>{g.stopPropagation(),$.emitMethod(Q.MainEngine,L.ZIndexNode,{workIds:[Y],layer:He.Top,viewId:r==null?void 0:r.viewId})}}),d.createElement($o,{icon:"to-bottom",onClickHandler:g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),$.emitMethod(Q.MainEngine,L.ZIndexNode,{workIds:[Y],layer:He.Bottom,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:g=>{g.stopPropagation(),$.emitMethod(Q.MainEngine,L.ZIndexNode,{workIds:[Y],layer:He.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[t,l]),u=g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),e(!t)},h=g=>{g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),e(!t)};return d.useEffect(()=>{k.isEqual(i==null?void 0:i.selectIds,s)||i!=null&&i.selectIds&&!k.isEqual(i==null?void 0:i.selectIds,s)&&(a(i==null?void 0:i.selectIds),e(!1))},[t,i,s,e]),d.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:u,onTouchEnd:h},c,d.createElement("img",{alt:"icon",src:pe(t?"layer-pressed":"layer")}))},EM=()=>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"})),Di=n=>{const{activeColor:t,onClickHandler:e,onTouchEndHandler:o}=n;return d.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onClick:e,onTouchEnd:o},d.createElement("div",{className:"circle none"}))},Ot=n=>{const{color:t,activeColor:e,onClickHandler:o,onTouchEndHandler:i}=n;return d.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onClick:o,onTouchEnd:i},d.createElement("div",{className:"circle",style:{backgroundColor:ue(t,1)}}))},Pt=n=>{const{opacity:t,activeColor:e,setCurOpacity:o}=n,[i,r]=d.useState({x:108,y:0});if(d.useEffect(()=>{r({x:t*100+8,y:0})},[]),!e)return null;const s=k.throttle((c,u)=>{c.cancelable&&c.preventDefault(),c.stopPropagation(),u.x!==(i==null?void 0:i.x)&&r({x:u.x,y:0});const h=Math.min(Math.max(u.x-8,0),100)/100;t!==h&&o(h,e,j.Doing)},100,{leading:!1}),a=c=>{c.cancelable&&c.preventDefault(),c.stopPropagation(),o(t,e,j.Start)},l=k.throttle((c,u)=>{c.cancelable&&c.preventDefault(),c.stopPropagation(),u.x!==(i==null?void 0:i.x)&&r({x:u.x,y:0});const h=Math.min(Math.max(u.x-8,0),100)/100;o(h,e,j.Done)},100,{leading:!1});return d.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:c=>{const u=c.nativeEvent.offsetX,h=Math.min(Math.max(u-12,0),100)/100;r({x:h*100+8,y:0}),o(h,e,j.Done)}},d.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${ue(e,0)}, ${ue(e,1)})`}}),d.createElement("div",{className:"range-opacity"},d.createElement(qe,{bounds:"parent",axis:"x",position:i,onDrag:s,onStart:a,onStop:l},d.createElement("div",{className:"circle",style:{backgroundColor:ue(e,t)},onClick:c=>{c.cancelable&&c.preventDefault(),c.stopPropagation()}}))))},AM=n=>{const{min:t,max:e,activeNumber:o,setActiveNumber:i,color:r}=n,[s,a]=d.useState({x:108,y:0});if(d.useEffect(()=>{const h=Math.ceil((o-t)/(e-t)*100)+8;a({x:h,y:0})},[]),!o)return null;const l=k.throttle((h,g)=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),g.x!==(s==null?void 0:s.x)&&a({x:g.x,y:0});const M=Math.ceil(Math.max(g.x-8,0)/100*(e-t)+t);o!==M&&i(M,j.Doing)},100,{leading:!1}),c=h=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),i(o,j.Start)},u=k.throttle((h,g)=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),g.x!==(s==null?void 0:s.x)&&a({x:g.x,y:0});const M=Math.ceil(Math.max(g.x-8,0)/100*(e-t)+t);i(M,j.Done)},100,{leading:!1});return d.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:h=>{const g=h.nativeEvent.offsetX,M=Math.ceil(Math.max(g-12,0)/100*(e-t)+t),I=Math.ceil((M-t)/(e-t)*100)+8;a({x:I,y:0}),i(M,j.Done)}},d.createElement("div",{className:"range-color",style:{backgroundColor:r}}),d.createElement("div",{className:"range-opacity"},d.createElement(qe,{bounds:"parent",axis:"x",position:s,onDrag:l,onStart:c,onStop:u},d.createElement("div",{className:"circle",style:{backgroundColor:r},onClick:h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()}},d.createElement("div",{className:"range-opacity-data-icon"},o)))))},OM=n=>{const{useStroke:t,color:e,activeStrokeType:o,setStrokeType:i}=n;return d.createElement("div",{className:"stroke-type-box"},!!t&&d.createElement("div",{className:`stroke-type-box-item Stroke ${o===le.Stroke&&"active"}`,style:{backgroundColor:e},onClick:()=>{i(le.Stroke)},onTouchEnd:()=>{i(le.Stroke)}}),d.createElement("div",{className:`stroke-type-box-item Normal ${o===le.Normal&&"active"}`,style:{borderColor:e},onClick:()=>{i(le.Normal)},onTouchEnd:()=>{i(le.Normal)}}),d.createElement("div",{className:`stroke-type-box-item Dotted ${o===le.Dotted&&"active"}`,style:{borderColor:e},onClick:()=>{i(le.Dotted)},onTouchEnd:()=>{i(le.Dotted)}}),d.createElement("div",{className:`stroke-type-box-item LongDotted ${o===le.LongDotted&&"active"}`,style:{borderColor:e},onClick:()=>{i(le.LongDotted)},onTouchEnd:()=>{i(le.LongDotted)}}))},PM=n=>{const{open:t,setOpen:e,floatBarRef:o}=n,{floatBarData:i,floatBarColors:r,mananger:s,setFloatBarData:a}=d.useContext(he),[l,c]=d.useState(),[u,h]=d.useState(1);d.useEffect(()=>{if(i!=null&&i.strokeColor){const[p,y]=At(i.strokeColor);c(p),h(y)}},[i]);const g=d.useMemo(()=>{if(o!=null&&o.current&&k.isNumber(i==null?void 0:i.y)&&(s!=null&&s.height)){if(o.current.offsetTop&&o.current.offsetTop+i.y>180){const p={};return p.top="inherit",p.bottom=50,p}else if(!o.current.offsetTop&&(s==null?void 0:s.height)-o.current.offsetTop-i.y<120){const p={};return p.top="inherit",p.bottom=50,p}}},[(o==null?void 0:o.current)&&i,s==null?void 0:s.height]),M=d.useMemo(()=>d.createElement(Pt,{key:"strokeColors",opacity:u,activeColor:l,setCurOpacity:(p,y,C)=>{C===j.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),C===j.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),h(p);const v=ue(y,p);i!=null&&i.strokeColor&&a({strokeColor:v}),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],strokeColor:v,workState:C,viewId:s==null?void 0:s.viewId})}}),[u,l,s==null?void 0:s.control.room,s==null?void 0:s.viewId,i]),I=d.useMemo(()=>l&&(i!=null&&i.thickness)?d.createElement(AM,{key:"strokeThickness",min:1,max:10,activeNumber:i.thickness,setActiveNumber:(p,y)=>{y===j.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),y===j.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),i!=null&&i.thickness&&a({thickness:p}),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],thickness:p,workState:y,viewId:s==null?void 0:s.viewId})},color:l}):null,[l,i==null?void 0:i.thickness,s==null?void 0:s.control.room,s==null?void 0:s.viewId]),m=d.useMemo(()=>l&&(i!=null&&i.strokeType)?d.createElement(OM,{key:"strokeType",useStroke:i==null?void 0:i.useStroke,activeStrokeType:i.strokeType,setStrokeType:p=>{i.strokeType&&a({strokeType:p}),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],strokeType:p,workState:j.Done,viewId:s==null?void 0:s.viewId})},color:l}):null,[l,i==null?void 0:i.strokeType,s==null?void 0:s.control.room,s==null?void 0:s.viewId,i==null?void 0:i.useStroke]),w=d.useMemo(()=>t?d.createElement("div",{className:"font-colors-menu",style:g,onTouchEnd:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()},onClick:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()}},m,I,d.createElement("div",{className:"font-colors-line"}),r.concat().map((p,y)=>{const C=ht(...p);return d.createElement(Ot,{key:y,color:C,activeColor:l,onTouchEndHandler:v=>{v.stopPropagation(),c(C);const T=ue(C,u);i!=null&&i.strokeColor&&(i.strokeColor=T,a({strokeColor:T})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],workState:j.Done,strokeColor:T,viewId:s==null?void 0:s.viewId})},onClickHandler:v=>{v.cancelable&&v.preventDefault(),v.stopPropagation(),c(C);const T=ue(C,u);i!=null&&i.strokeColor&&(i.strokeColor=T,a({strokeColor:T})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],workState:j.Done,strokeColor:T,viewId:s==null?void 0:s.viewId})}})}),M):null,[t,r,M,l,u,i,s==null?void 0:s.viewId,g]),z=d.useMemo(()=>l?d.createElement("div",{className:"color-bar-ring",style:{backgroundColor:ue(l,u)}},d.createElement("div",{className:"circle"})):null,[l,u]);return d.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)}},z,w)},YM=n=>{const{open:t,setOpen:e,floatBarRef:o}=n,{floatBarData:i,floatBarColors:r,mananger:s,setFloatBarData:a}=d.useContext(he),[l,c]=d.useState(),[u,h]=d.useState(1);d.useEffect(()=>{if(i!=null&&i.fillColor){const[w,z]=(i==null?void 0:i.fillColor)==="transparent"&&["transparent",1]||At(i.fillColor);c(w),h(z)}},[i]);const g=d.useMemo(()=>{if(o!=null&&o.current&&k.isNumber(i==null?void 0:i.y)&&(s!=null&&s.height)){if(o.current.offsetTop&&o.current.offsetTop+i.y>200){const w={};return w.top="inherit",w.bottom=50,w}else if(!o.current.offsetTop&&(s==null?void 0:s.height)-o.current.offsetTop-i.y<140){const w={};return w.top="inherit",w.bottom=50,w}}},[o==null?void 0:o.current,i,s==null?void 0:s.height]),M=d.useMemo(()=>l&&l!=="transparent"?d.createElement(Pt,{key:"fillColors",opacity:u||0,activeColor:l,setCurOpacity:(w,z,p)=>{p===j.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),p===j.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),h(w);const y=ue(z,w);i!=null&&i.fillColor&&(i.fillColor=y,a({fillColor:y})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],fillColor:l&&ue(z,w),workState:p,viewId:s==null?void 0:s.viewId})}}):null,[l,u,s==null?void 0:s.control.room,s==null?void 0:s.viewId,i]),I=d.useMemo(()=>t?d.createElement("div",{className:"font-colors-menu",style:g,onTouchEnd:w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation()},onClick:w=>{w.cancelable&&w.preventDefault(),w.stopPropagation(),w.nativeEvent.stopImmediatePropagation()}},d.createElement(Di,{activeColor:l,onTouchEndHandler:w=>{w.stopPropagation(),c("transparent");const z="transparent";i!=null&&i.fillColor&&(i.fillColor=z,a({fillColor:z})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],workState:j.Done,fillColor:z,viewId:s==null?void 0:s.viewId})},onClickHandler:w=>{w.cancelable&&w.preventDefault(),w.stopPropagation(),c("transparent");const z="transparent";i!=null&&i.fillColor&&(i.fillColor=z,a({fillColor:z})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],workState:j.Done,fillColor:z,viewId:s==null?void 0:s.viewId})}}),r.map((w,z)=>{const p=ht(...w);return d.createElement(Ot,{key:z,color:p,activeColor:l,onTouchEndHandler:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),c(p);const C=ue(p,u);i!=null&&i.fillColor&&(i.fillColor=C,a({fillColor:C})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],workState:j.Done,fillColor:C,viewId:s==null?void 0:s.viewId})},onClickHandler:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),c(p);const C=ue(p,u);i!=null&&i.fillColor&&(i.fillColor=C,a({fillColor:C})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:[Y],workState:j.Done,fillColor:C,viewId:s==null?void 0:s.viewId})}})}),M):null,[t,l,r,M,i,s==null?void 0:s.viewId,u,g]),m=d.useMemo(()=>{const w=l&&l!=="transparent"&&ue(l,u)||"transparent";return d.createElement("div",{className:"color-bar-fill"},d.createElement("div",{className:"circle",style:{backgroundColor:w}}))},[l,u]);return d.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:w=>{w.cancelable&&w.preventDefault(),w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),e(!t)}},m,I)},RM=n=>{const{open:t,setOpen:e,textOpt:o,workIds:i,floatBarRef:r}=n,{floatBarColors:s,mananger:a,setFloatBarData:l,floatBarData:c}=d.useContext(he),[u,h]=d.useState(),[g,M]=d.useState(1);d.useEffect(()=>{if(o!=null&&o.fontColor){const[p,y]=(o==null?void 0:o.fontColor)==="transparent"&&["transparent",0]||At(o.fontColor);h(p),M(y)}},[o==null?void 0:o.fontColor]);const I=d.useMemo(()=>{if(r!=null&&r.current&&k.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+c.y>180){const p={};return p.top="inherit",p.bottom=50,p}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-c.y<120){const p={};return p.top="inherit",p.bottom=50,p}}},[r==null?void 0:r.current,c,a]),m=d.useMemo(()=>u&&u!=="transparent"?d.createElement(Pt,{key:"fontColors",opacity:g,activeColor:u,setCurOpacity:(p,y,C)=>{C===j.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),C===j.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),M(p);const v=ue(y,p);c!=null&&c.textOpt&&(c.textOpt.fontColor=v,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],fontColor:u&&v,workState:C,viewId:a==null?void 0:a.viewId})}}):null,[u,g,a==null?void 0:a.control.room,a==null?void 0:a.viewId,c==null?void 0:c.textOpt,i]),w=d.useMemo(()=>t?d.createElement("div",{className:"font-colors-menu",style:I,onTouchEnd:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()},onClick:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()}},s.map((p,y)=>{const C=ht(...p);return d.createElement(Ot,{key:y,color:C,activeColor:u,onTouchEndHandler:v=>{v.stopPropagation(),h(C);const T=ue(C,g);c!=null&&c.textOpt&&(c.textOpt.fontColor=T,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],workState:j.Done,fontColor:T,viewId:a==null?void 0:a.viewId})},onClickHandler:v=>{v.cancelable&&v.preventDefault(),v.stopPropagation(),h(C);const T=ue(C,g);c!=null&&c.textOpt&&(c.textOpt.fontColor=T,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],workState:j.Done,fontColor:T,viewId:a==null?void 0:a.viewId})}})}),m):null,[t,s,m,u,g,c==null?void 0:c.textOpt,i,a==null?void 0:a.viewId,I]),z=d.useMemo(()=>{const p=u&&u!=="transparent"&&ue(u,g)||"transparent";return d.createElement("div",{className:"color-bar"},d.createElement("div",{className:"color-bar-color",style:{backgroundColor:p}}))},[u,g]);return d.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)}},d.createElement("img",{alt:"icon",src:pe("font-colors")}),z,w)},WM=n=>{const{open:t,setOpen:e,textOpt:o,workIds:i,floatBarRef:r}=n,{floatBarColors:s,mananger:a,setFloatBarData:l,floatBarData:c}=d.useContext(he),[u,h]=d.useState(),[g,M]=d.useState(1);d.useEffect(()=>{if(o!=null&&o.fontBgColor){const[p,y]=(o==null?void 0:o.fontBgColor)==="transparent"&&["transparent",1]||At(o.fontBgColor);h(p),M(y)}},[o==null?void 0:o.fontBgColor]);const I=d.useMemo(()=>{if(r!=null&&r.current&&k.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+c.y>180){const p={};return p.top="inherit",p.bottom=50,p}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-c.y<120){const p={};return p.top="inherit",p.bottom=50,p}}},[r==null?void 0:r.current,c,a]),m=d.useMemo(()=>u&&u!=="transparent"?d.createElement(Pt,{key:"fontBgColor",opacity:g||0,activeColor:u,setCurOpacity:(p,y,C)=>{C===j.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),C===j.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),M(p);const v=ue(y,p);c!=null&&c.textOpt&&(c.textOpt.fontBgColor=v,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],fontBgColor:u&&ue(y,p),workState:C,viewId:a==null?void 0:a.viewId})}}):null,[u,g,a==null?void 0:a.control.room,a==null?void 0:a.viewId,c==null?void 0:c.textOpt,i]),w=d.useMemo(()=>t?d.createElement("div",{className:"font-colors-menu",style:I,onTouchEnd:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()},onClick:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation()}},d.createElement(Di,{activeColor:u,onTouchEndHandler:p=>{p.stopPropagation();const y="transparent";h(y),c!=null&&c.textOpt&&(c.textOpt.fontBgColor=y,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],workState:j.Done,fontBgColor:y,viewId:a==null?void 0:a.viewId})},onClickHandler:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation();const y="transparent";h(y),c!=null&&c.textOpt&&(c.textOpt.fontBgColor=y,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],workState:j.Done,fontBgColor:y,viewId:a==null?void 0:a.viewId})}}),s.map((p,y)=>{const C=ht(...p);return d.createElement(Ot,{key:y,color:C,activeColor:u,onTouchEndHandler:v=>{v.stopPropagation(),h(C);const T=ue(C,g);c!=null&&c.textOpt&&(c.textOpt.fontBgColor=T,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],workState:j.Done,fontBgColor:ue(C,g),viewId:a==null?void 0:a.viewId})},onClickHandler:v=>{v.cancelable&&v.preventDefault(),v.stopPropagation(),h(C);const T=ue(C,g);c!=null&&c.textOpt&&(c.textOpt.fontBgColor=T,l({textOpt:c.textOpt})),$.emitMethod(Q.MainEngine,L.SetColorNode,{workIds:i||[Y],workState:j.Done,fontBgColor:ue(C,g),viewId:a==null?void 0:a.viewId})}})}),m):null,[t,s,m,g,u,c==null?void 0:c.textOpt,i,a==null?void 0:a.viewId,I]),z=d.useMemo(()=>{const p=u&&u!=="transparent"&&ue(u,g)||"transparent";return d.createElement("div",{className:"color-bar",style:{marginTop:0}},d.createElement("div",{className:"color-bar-color",style:{backgroundColor:p}}))},[u,g]);return d.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)}},d.createElement(EM,null),z,w)},UM=n=>{const{bold:t,setBold:e,workIds:o,viewId:i}=n,r=s=>{const a=t==="bold"?"normal":"bold";s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),$.emitMethod(Q.MainEngine,L.SetFontStyle,{workIds:o,viewId:i,bold:a})};return d.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},d.createElement("img",{alt:"icon",src:pe(t==="bold"?"bold-active":"bold")}))},HM=n=>{const{underline:t,setUnderline:e,workIds:o,viewId:i}=n,r=s=>{const a=!t;s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),$.emitMethod(Q.MainEngine,L.SetFontStyle,{workIds:o,viewId:i,underline:a})};return d.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},d.createElement("img",{alt:"icon",src:pe(t?"underline-active":"underline")}))},QM=n=>{const{lineThrough:t,setLineThrough:e,workIds:o,viewId:i}=n,r=s=>{const a=!t;s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),$.emitMethod(Q.MainEngine,L.SetFontStyle,{workIds:o,viewId:i,lineThrough:a})};return d.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},d.createElement("img",{alt:"icon",src:pe(t?"line-through-active":"line-through")}))},FM=n=>{const{italic:t,setItalic:e,workIds:o,viewId:i}=n,r=s=>{const a=t==="italic"?"normal":"italic";s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),$.emitMethod(Q.MainEngine,L.SetFontStyle,{workIds:o,viewId:i,italic:a})};return d.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},d.createElement("img",{alt:"icon",src:pe(t==="italic"?"italic-active":"italic")}))},$M=n=>{const{open:t,setOpen:e,textOpt:o,workIds:i,style:r,floatBarRef:s}=n,{mananger:a,floatBarData:l}=d.useContext(he),[c,u]=d.useState("normal"),[h,g]=d.useState("normal"),[M,I]=d.useState(!1),[m,w]=d.useState(!1);d.useEffect(()=>{o!=null&&o.bold&&u(o.bold),k.isBoolean(o==null?void 0:o.underline)&&I(o.underline||!1),k.isBoolean(o==null?void 0:o.lineThrough)&&w(o.lineThrough||!1),o!=null&&o.italic&&g(o.italic)},[o]);const z=d.useMemo(()=>{if(r&&(s!=null&&s.current)&&k.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+l.y>180){const y={};return y.top="inherit",y.bottom=50,y}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-l.y<120){const y={};return y.top="inherit",y.bottom=50,y}}},[r,s==null?void 0:s.current,l,a]),p=d.useMemo(()=>t?d.createElement("div",{className:"font-style-menu",style:z,onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()}},d.createElement(UM,{workIds:i||[Y],bold:c,setBold:u,viewId:a==null?void 0:a.viewId}),d.createElement(HM,{workIds:i||[Y],underline:M,setUnderline:I,viewId:a==null?void 0:a.viewId}),d.createElement(QM,{workIds:i||[Y],lineThrough:m,setLineThrough:w,viewId:a==null?void 0:a.viewId}),d.createElement(FM,{workIds:i||[Y],italic:h,setItalic:g,viewId:a==null?void 0:a.viewId})):null,[t,i,c,a==null?void 0:a.viewId,M,m,h,z]);return d.createElement("div",{className:`button normal-button ${t&&"active"}`,onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation(),e(!t)}},d.createElement("img",{alt:"icon",src:pe(t?"font-style-active":"font-style")}),p)},me=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Ve=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],VM=n=>{const{style:t,onClickHandler:e}=n;return d.createElement("div",{className:"font-size-menu",style:t,onTouchEnd:o=>{o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()},onClick:o=>{o.cancelable&&o.preventDefault(),o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()}},me.map(o=>d.createElement("div",{className:"font-size-btn",key:o,onClick:()=>{e(o)},onTouchEnd:()=>{e(o)}},o)))},BM=n=>{const t=d.useRef(null),{open:e,setOpen:o,textOpt:i,workIds:r,floatBarRef:s}=n,{mananger:a,floatBarData:l}=d.useContext(he),[c,u]=d.useState(0),[h,g]=d.useState(),M=me.length-1;d.useEffect(()=>{i!=null&&i.fontSize&&(u(i.fontSize),t.current&&(t.current.value=i.fontSize.toString()))},[i==null?void 0:i.fontSize]);const I=d.useMemo(()=>{if(s!=null&&s.current&&k.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+l.y>180){const y={};return y.top="inherit",y.bottom=35,y}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-l.y<120){const y={};return y.top="inherit",y.bottom=35,y}}},[s==null?void 0:s.current,l,a]);function m(y){u(y),y&&y>=me[0]&&y<=me[M]&&$.emitMethod(Q.MainEngine,L.SetFontStyle,{workIds:r||[Y],fontSize:y,viewId:a==null?void 0:a.viewId})}const w=y=>{var C;(C=t.current)==null||C.blur(),o(!1),p(y)},z=d.useMemo(()=>e?d.createElement(VM,{onClickHandler:w,style:I}):null,[e,w,I]),p=y=>{y>me[M]&&(y=me[M]),y<me[0]&&(y=me[0]),m(y)};return d.useEffect(()=>()=>{a!=null&&a.control.room&&k.isBoolean(h)&&(a.control.room.disableDeviceInputs=h)},[a,h]),d.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()}},d.createElement("input",{className:"font-size-input",ref:t,onTouchEnd:()=>{t.current&&t.current.focus()},onClick:()=>{o(!e),t.current&&t.current.focus()},onKeyDown:y=>{if(y.key==="Backspace"){const C=window.getSelection(),v=C==null?void 0:C.getRangeAt(0);if(v!=null&&v.collapsed)return y.cancelable&&y.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:y=>{var C;if(t.current){const v=t.current.value,T=parseInt(v);isNaN(T)?t.current.value="0":t.current.value=T.toString(),T&&y.key==="Enter"&&(p(T),(C=t.current)==null||C.blur(),o(!1))}},onFocus:()=>{a!=null&&a.control.room&&!a.control.room.disableDeviceInputs&&(g(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0)},onBlur:()=>{a!=null&&a.control.room&&k.isBoolean(h)&&(a.control.room.disableDeviceInputs=h)}}),d.createElement("div",{className:"font-size-btns"},d.createElement("div",{className:"font-size-add",onClick:()=>{p(c+me[0])},onTouchEnd:()=>{p(c+me[0])}}),d.createElement("div",{className:"font-size-cut",onClick:()=>{p(c-me[0])},onTouchEnd:()=>{p(c-me[0])}})),z)},ZM=n=>{const{workIds:t,mananger:e,islocked:o}=n;return d.createElement("div",{className:"button normal-button",onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),$.emitMethod(Q.MainEngine,L.SetLock,{workIds:t||[Y],isLocked:!o,viewId:e==null?void 0:e.viewId})},onTouchEnd:i=>{i.stopPropagation(),$.emitMethod(Q.MainEngine,L.SetLock,{workIds:t||[Y],isLocked:!o,viewId:e==null?void 0:e.viewId})}},d.createElement("img",{alt:"icon",src:pe(o?"unlock-new":"lock-new")}))},Gt=n=>{const{icon:t,min:e,max:o,step:i,value:r,onInputHandler:s}=n,[a,l]=d.useState(0),c=d.useRef(null),u=h=>{h>o&&(h=o),h<e&&(h=e),l(h),s(h),c.current&&(c.current.value=h.toString())};return d.useEffect(()=>{r&&(l(r),c.current&&(c.current.value=r.toString()))},[r]),d.createElement("div",{className:"button input-button",onTouchEnd:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation()},onClick:h=>{h.cancelable&&h.preventDefault(),h.stopPropagation(),h.nativeEvent.stopImmediatePropagation()}},d.createElement("img",{src:pe(t)}),d.createElement("input",{className:"input-number",type:"text",ref:c,onTouchEnd:()=>{c.current&&c.current.focus()},onClick:()=>{c.current&&c.current.focus()},onKeyDown:h=>{if(h.key==="Backspace"){const g=window.getSelection(),M=g==null?void 0:g.getRangeAt(0);if(M!=null&&M.collapsed)return h.cancelable&&h.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(c.current){const h=c.current.value,g=parseInt(h);isNaN(g)?c.current.value="0":c.current.value=g.toString()}},onChange:h=>{const g=h.target.value,M=parseInt(g);M&&M&&M>=e&&M<=o&&u(M)}}),d.createElement("div",{className:"input-number-btns"},d.createElement("div",{className:"input-number-add",onClick:()=>{u(a+i)},onTouchEnd:()=>{u(a+i)}}),d.createElement("div",{className:"input-number-cut",onClick:()=>{u(a-i)},onTouchEnd:()=>{u(a-i)}})))},GM=n=>{const{icon:t,min:e,max:o,step:i,value:r,onInputHandler:s}=n;return d.createElement("div",{className:"button input-button"},d.createElement("img",{src:pe(t)}),d.createElement(JM,{min:e,max:o,step:i,value:r,onInputHandler:s}))},JM=n=>{const{value:t,min:e,max:o,onInputHandler:i}=n,[r,s]=d.useState({x:0,y:0});d.useEffect(()=>{s({x:t*100,y:0})},[]);const a=k.throttle((u,h)=>{u.cancelable&&u.preventDefault(),u.stopPropagation();let g=Math.floor(Math.max(h.x,e*100));g=Math.floor(Math.min(g,o*100)),h.x!==(r==null?void 0:r.x)&&s({x:g,y:0});const M=g/100;t!==M&&i(M)},100,{leading:!1}),l=u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},c=k.throttle((u,h)=>{u.cancelable&&u.preventDefault(),u.stopPropagation();let g=Math.floor(Math.max(h.x,e*100));g=Math.floor(Math.min(g,o*100)),h.x!==(r==null?void 0:r.x)&&s({x:g,y:0});const M=g/100;t!==M&&i(M)},100,{leading:!1});return d.createElement("div",{className:"range-number-container",onClick:u=>{const h=u.nativeEvent.offsetX-6;let g=Math.floor(Math.max(h,e*100));g=Math.floor(Math.min(g,o*100)),s({x:g,y:0});const M=g/100;t!==M&&i(M)}},d.createElement("div",{className:"range-number-color"}),d.createElement("div",{className:"range-number"},d.createElement(qe,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:l,onStop:c},d.createElement("div",{className:"circle",onClick:l}))))},qM=n=>{const{icon:t,value:e,onChangeHandler:o,style:i}=n,[r,s]=d.useState(0),[a,l]=d.useState(),c=d.useRef(null),u=d.useCallback(M=>{M>=Ve.length&&(M=0),M<0&&(M=Ve.length-1),s(M),o(Ve[M]),l(!1),c.current&&(c.current.value=Ve[M])},[o]),h=d.useMemo(()=>{if(i&&i.bottom){const M={};return M.top="inherit",M.bottom=50,M}},[i]);d.useEffect(()=>{e&&(s(Ve.indexOf(e)),c.current&&(c.current.value=e))},[e]);const g=d.useMemo(()=>a?d.createElement(KM,{options:Ve,onClickHandler:u,style:h}):null,[a,u,h]);return d.createElement("div",{className:"button input-button"},d.createElement("img",{src:pe(t)}),d.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:c,onTouchEnd:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),c.current&&c.current.focus()},onClick:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),c.current&&(c.current.focus(),l(!a))}}),d.createElement("div",{className:"input-number-btns"},d.createElement("div",{className:"input-number-add",onClick:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),u(r+1)},onTouchEnd:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),u(r+1)}}),d.createElement("div",{className:"input-number-cut",onClick:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),u(r-1)},onTouchEnd:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),u(r-1)}})),g)},KM=n=>{const{options:t,style:e,onClickHandler:o}=n;return d.createElement("div",{className:"select-option-menu",style:e,onTouchEnd:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()},onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}},t.map((i,r)=>d.createElement("div",{className:"select-option-btn",key:i,onClick:s=>{s.cancelable&&s.preventDefault(),s.stopPropagation(),o(r)},onTouchEnd:s=>{s.cancelable&&s.preventDefault(),s.stopPropagation(),o(r)}},i)))},_M=n=>{const{mananger:t,innerRatio:e,innerVerticeStep:o,vertices:i}=n,r=l=>{$.emitMethod(Q.MainEngine,L.SetShapeOpt,{workIds:[Y],toolsType:N.Star,viewId:t.viewId,vertices:l})},s=l=>{$.emitMethod(Q.MainEngine,L.SetShapeOpt,{workIds:[Y],toolsType:N.Star,viewId:t.viewId,innerVerticeStep:l})},a=l=>{$.emitMethod(Q.MainEngine,L.SetShapeOpt,{workIds:[Y],toolsType:N.Star,viewId:t.viewId,innerRatio:l})};return d.createElement(d.Fragment,null,d.createElement(Gt,{value:i,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:r}),d.createElement(Gt,{value:o,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:s}),d.createElement(GM,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:a}))},XM=n=>{const{mananger:t,vertices:e}=n,o=i=>{$.emitMethod(Q.MainEngine,L.SetShapeOpt,{workIds:[Y],toolsType:N.Polygon,viewId:t.viewId,vertices:i})};return d.createElement(Gt,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:o})},ep=n=>{const{mananger:t,placement:e}=n,o=i=>{$.emitMethod(Q.MainEngine,L.SetShapeOpt,{workIds:[Y],toolsType:N.SpeechBalloon,viewId:t.viewId,placement:i})};return d.createElement(qM,{value:e,icon:"speechBallon-placement",onChangeHandler:o})},Ht=n=>{const{icon:t,isActive:e,onClickHandler:o,onTouchEndHandler:i}=n;return d.createElement("div",{className:`button tab-button ${e?"active":""}`,onClick:o,onTouchEnd:i},d.createElement("img",{src:pe(t)}))},tp=n=>{const{toolsTypes:t,style:e,mananger:o,shapeOpt:i}=n,[r,s]=d.useState();d.useEffect(()=>{t.includes(N.Polygon)?s(N.Polygon):t.includes(N.Star)?s(N.Star):s(N.SpeechBalloon)},[t]);const a=(h,g)=>{g.cancelable&&g.preventDefault(),g==null||g.stopPropagation(),s(h)},l=d.useMemo(()=>r===N.Polygon&&o&&i.vertices?d.createElement(XM,{vertices:i.vertices,mananger:o}):null,[o,r,i]),c=d.useMemo(()=>r===N.Star&&o&&i.vertices&&i.innerVerticeStep&&i.innerRatio?d.createElement(_M,{mananger:o,vertices:i.vertices,innerVerticeStep:i.innerVerticeStep,innerRatio:i.innerRatio}):null,[o,r,i]),u=d.useMemo(()=>r===N.SpeechBalloon&&o&&i.placement?d.createElement(ep,{mananger:o,placement:i.placement}):null,[o,r,i]);return d.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.cancelable&&h.preventDefault()}},d.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(N.Polygon)&&d.createElement(Ht,{isActive:r===N.Polygon,icon:r===N.Polygon?"polygon-active":"polygon",onClickHandler:a.bind(void 0,N.Polygon),onTouchEndHandler:a.bind(void 0,N.Polygon)})||null,t.includes(N.Star)&&d.createElement(Ht,{isActive:r===N.Star,icon:r===N.Star?"star-active":"star",onClickHandler:a.bind(void 0,N.Star),onTouchEndHandler:a.bind(void 0,N.Star)})||null,t.includes(N.SpeechBalloon)&&d.createElement(Ht,{isActive:r===N.SpeechBalloon,icon:r===N.SpeechBalloon?"speechBallon-active":"speechBallon",onClickHandler:a.bind(void 0,N.SpeechBalloon),onTouchEndHandler:a.bind(void 0,N.SpeechBalloon)})||null),d.createElement("div",{className:"shapeOpt-sub-menu-content"},l,c,u))},op=n=>{const{open:t,setOpen:e,floatBarRef:o,toolsTypes:i,shapeOpt:r}=n,{floatBarData:s,mananger:a}=d.useContext(he),[l,c]=d.useState([]),[u,h]=d.useState(),g=d.useMemo(()=>{if(o!=null&&o.current&&k.isNumber(s==null?void 0:s.x)&&k.isNumber(s==null?void 0:s.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+s.y>200){const w={};return w.top="inherit",w.bottom=50,w}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-(s==null?void 0:s.y)<140){const w={};return w.top="inherit",w.bottom=50,w}}},[o,s==null?void 0:s.x,s==null?void 0:s.y,a==null?void 0:a.height]),M=d.useMemo(()=>t&&i&&a&&r?(a.control.room&&!a.control.room.disableDeviceInputs&&(h(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0),d.createElement(tp,{shapeOpt:r,style:g,toolsTypes:i,mananger:a})):(a!=null&&a.control.room&&k.isBoolean(u)&&(a.control.room.disableDeviceInputs=u),null),[t,g,i,a,r]),I=w=>{w.cancelable&&w.preventDefault(),w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),e(!t)},m=w=>{w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),e(!t)};return d.useEffect(()=>{k.isEqual(s==null?void 0:s.selectIds,l)||s!=null&&s.selectIds&&!k.isEqual(s==null?void 0:s.selectIds,l)&&(c(s==null?void 0:s.selectIds),e(!1))},[t,s,l,e]),d.useEffect(()=>()=>{t&&a!=null&&a.control.room&&k.isBoolean(u)&&(a.control.room.disableDeviceInputs=u)},[t,a,u]),d.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:I,onTouchEnd:m},M,d.createElement("img",{alt:"icon",src:pe(t?"shapes-active":"shapes")}))},Li=d.memo(n=>{const{textOpt:t,workIds:e,noLayer:o,position:i}=n,{floatBarData:r,mananger:s}=d.useContext(he),[a,l]=d.useState(0),[c,u]=d.useState(),h=d.useRef(null);d.useEffect(()=>{var D,R,W,b;const v={},T=(r==null?void 0:r.w)||((D=t==null?void 0:t.boxSize)==null?void 0:D[0])||0,S=(r==null?void 0:r.h)||((R=t==null?void 0:t.boxSize)==null?void 0:R[1])||0;if(i&&T&&S&&(s!=null&&s.width)&&(s!=null&&s.height)){if(i.y<60?i.y+S<s.height-60?v.bottom=-120:i.y+S<s.height?v.bottom=-58:i.y>0?v.top=62:v.top=-i.y+62:v.top=0,i.x<0)v.left=-i.x+3;else if(i.x+(((W=h.current)==null?void 0:W.offsetWidth)||T)>s.width){const A=s.width-(((b=h.current)==null?void 0:b.offsetWidth)||T)-i.x;v.left=A}u(v);return}u(void 0)},[h,i,r==null?void 0:r.w,r==null?void 0:r.h,s==null?void 0:s.width,s==null?void 0:s.height,t==null?void 0:t.boxSize]);const g=d.useMemo(()=>r!=null&&r.fillColor?d.createElement(YM,{floatBarRef:h,open:a===3,setOpen:v=>{l(v===!0?3:0)}}):null,[r==null?void 0:r.fillColor,a,h]),M=d.useMemo(()=>r!=null&&r.strokeColor?d.createElement(PM,{floatBarRef:h,open:a===2,setOpen:v=>{l(v===!0?2:0)}}):null,[r==null?void 0:r.strokeColor,a,h]),I=d.useMemo(()=>t!=null&&t.fontColor&&(s!=null&&s.viewId)?d.createElement(RM,{floatBarRef:h,open:a===4,setOpen:v=>{l(v===!0?4:0)},textOpt:t,workIds:e}):null,[t,a,e,s,h]),m=d.useMemo(()=>t!=null&&t.fontBgColor&&(s!=null&&s.viewId)?d.createElement(WM,{floatBarRef:h,open:a===5,setOpen:v=>{l(v===!0?5:0)},textOpt:t,workIds:e}):null,[t,a,e,s,h]),w=d.useMemo(()=>t&&(s!=null&&s.viewId)?d.createElement($M,{floatBarRef:h,open:a===6,setOpen:v=>{l(v===!0?6:0)},textOpt:t,workIds:e,style:c}):null,[t,a,e,s,c,h]),z=d.useMemo(()=>t&&(s!=null&&s.viewId)?d.createElement(BM,{open:a===7,setOpen:v=>{l(v===!0?7:0)},textOpt:t,workIds:e,floatBarRef:h}):null,[t,a,e,s,h]),p=d.useMemo(()=>o?null:d.createElement(bM,{open:a===1,setOpen:v=>{l(v===!0?1:0)},floatBarRef:h}),[o,a,h]),y=d.useMemo(()=>r!=null&&r.canLock&&s?d.createElement(ZM,{workIds:e,mananger:s,islocked:r.isLocked}):null,[r,s,e]),C=d.useMemo(()=>s&&(s!=null&&s.viewId)&&c&&(r!=null&&r.shapeOpt)&&(r!=null&&r.toolsTypes)?d.createElement(op,{open:a===8,setOpen:v=>{l(v===!0?8:0)},floatBarRef:h,workIds:e,toolsTypes:r.toolsTypes,shapeOpt:r.shapeOpt}):null,[r,s,a,c,e,h]);return d.createElement("div",{className:"appliance-plugin-floatbtns",style:c,ref:h,onMouseOver:v=>(v.stopPropagation(),v.cancelable&&v.preventDefault(),s==null||s.control.worker.blurCursor(s.viewId),!1),onMouseMove:v=>(v.stopPropagation(),v.cancelable&&v.preventDefault(),!1)},s&&d.createElement(DM,{workIds:e,mananger:s}),p,y,!!(s!=null&&s.viewId)&&d.createElement(LM,{workIds:e,viewId:s.viewId}),C,z,w,I,m,M,g)}),ip=n=>{const{data:t,isActive:e,manager:o,workId:i}=n,{opt:r,scale:s,translate:a,x:l,y:c}=t,u=`scale(${s||1}) ${a&&"translate("+a[0]+"px,"+a[1]+"px)"||""}`,{fontSize:h,fontFamily:g,underline:M,fontColor:I,lineThrough:m,textAlign:w,strokeColor:z,lineHeight:p,bold:y,italic:C,uid:v,workState:T}=r,S=h,D=p||S*1.2,R={fontSize:`${S}px`,lineHeight:`${D}px`,color:I,borderColor:z,minHeight:`${D}px`,paddingRight:`${C==="italic"?Math.round(S*.3):5}px`};g&&(R.fontFamily=`${g}`),(m||M)&&(R.textDecoration=`${m&&"line-through"||""}${M&&" underline"||""}`),y&&(R.fontWeight=`${y}`),C&&(R.fontStyle=`${C}`),w&&(R.textAlign=`${w}`);function W(){var A;e&&(v&&v===((A=o.control.collector)==null?void 0:A.uid)||!v)&&o.control.textEditorManager.active(i)}const b=d.useMemo(()=>{const A=[];if(r.text){const x=ut(r.text);for(let ee=0;ee<x.length;ee++){const ie=x[ee];ie===""?A.push(d.createElement("div",{style:{backgroundColor:r.fontBgColor},key:ee},d.createElement("br",null))):A.push(d.createElement("div",{style:{backgroundColor:r.fontBgColor},key:ee},ie))}}return A.length?A:null},[r.fontBgColor,r.text]);return d.createElement("div",{className:"editor-box",style:{left:`${l}px`,top:`${c}px`,transform:u,transformOrigin:"left top",pointerEvents:"none",opacity:T===j.Done?0:1}},d.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:R,onClick:W},b))},np=d.memo(n=>{const{data:t,left:e,top:o,workId:i,updateOptInfo:r}=n,{opt:s,scale:a,translate:l}=t,c=d.useRef(null);d.useEffect(()=>{var R,W;if((R=c.current)!=null&&R.offsetWidth&&((W=c.current)!=null&&W.offsetHeight)){const b=s.boxSize;if((b==null?void 0:b[0])!==c.current.offsetWidth||b[1]!==c.current.offsetHeight||!b){const A=[c.current.offsetWidth,c.current.offsetHeight];r({activeTextId:i,update:{boxSize:A,workState:j.Done}})}}},[s.fontSize,s.italic,s.bold,s.boxSize,i]);const u=`scale(${a||1}) ${l&&"translate("+l[0]+"px,"+l[1]+"px)"||""}`,{fontSize:h,fontFamily:g,underline:M,fontColor:I,lineThrough:m,textAlign:w,strokeColor:z,lineHeight:p,bold:y,italic:C}=s,v=h,T=p||v*1.2,S={fontSize:`${v}px`,lineHeight:`${T}px`,color:I,borderColor:z,minHeight:`${T}px`,pointerEvents:"none",paddingRight:`${C==="italic"?Math.round(v*.3):5}px`};g&&(S.fontFamily=`${g}`),(m||M)&&(S.textDecoration=`${m&&"line-through"||""}${M&&" underline"||""}`),w&&(S.textAlign=`${w}`),y&&(S.fontWeight=`${y}`),C&&(S.fontStyle=`${C}`);const D=d.useMemo(()=>{const R=[];if(s.text){const W=ut(s.text);for(let b=0;b<W.length;b++){const A=W[b];A===""?R.push(d.createElement("div",{key:b},d.createElement("br",null))):R.push(d.createElement("div",{key:b},A))}}return R.length?R:null},[s.text]);return d.createElement("div",{className:"editor-box",style:{left:`${e}`,top:`${o}`,transform:u,transformOrigin:"left top",zIndex:1,pointerEvents:"none",opacity:0}},d.createElement("div",{className:"editor readOnly",ref:c,style:S},D))},(n,t)=>!(n.workId!==t.workId||n.left!==t.left||n.top!==t.top||!k.isEqual(n.data,t.data))),sp=n=>{const{data:t,workId:e,isSelect:o,showFloatBtns:i,handleKeyUp:r,handleFocus:s,updateOptInfo:a,manager:l,runAnimation:c}=n,[u,h]=d.useState(),{opt:g,scale:M,translate:I,x:m,y:w}=t,{fontSize:z,fontFamily:p,underline:y,fontColor:C,lineThrough:v,textAlign:T,strokeColor:S,lineHeight:D,bold:R,italic:W,boxSize:b}=g,A=d.useRef(null),x=d.useMemo(()=>{const _=z,oe=D||_*1.2,K={fontSize:`${_}px`,lineHeight:`${oe}px`,color:C,borderColor:S,minHeight:`${oe}px`,paddingRight:`${W==="italic"?Math.round(_*.3):5}px`,borderWidth:`${Math.max(Math.round(1/(M||1)),1)}px`};return p&&(K.fontFamily=`${p}`),(v||y)&&(K.textDecoration=`${v&&"line-through"||""} ${y&&" underline"||""}`),T&&(K.textAlign=`${T}`),R&&(K.fontWeight=`${R}`),W&&(K.fontStyle=`${W}`),K},[R,C,p,z,W,D,v,M,S,T,y]),ee=d.useMemo(()=>{const _=`scale(${M||1}) ${I&&"translate("+I[0]+"px,"+I[1]+"px)"||""}`;return{left:`${m}px`,top:`${w}px`,zIndex:2,pointerEvents:"none",transform:_,transformOrigin:"left top"}},[M,I,m,w]),ie=d.useMemo(()=>{var _,oe;return!o&&M&&i&&k.isNumber(m)&&k.isNumber(w)&&g.boxSize&&k.isNumber((_=g.boxSize)==null?void 0:_[0])&&k.isNumber((oe=g.boxSize)==null?void 0:oe[1])?d.createElement("div",{className:ye.FloatBarBtn,style:{left:m,top:w,width:g.boxSize[0]*M,height:g.boxSize[1]*M}},d.createElement(Li,{position:{x:m,y:w},textOpt:g,workIds:[e],noLayer:!0})):null},[o,g,i,e,m,w,M]),ne=d.useMemo(()=>{let _="";if(g.text){const oe=ut(g.text);for(let K=0;K<oe.length;K++){const ce=oe[K];ce===""?_=_+"<div><br/></div>":_=_+`<div style="background-color:${g.fontBgColor}">${ce}</div>`}}else _=`<div style="background-color:${g.fontBgColor}"></div>`;return _},[g.fontBgColor,g.text]),F=d.useMemo(()=>typeof ne=="string"?d.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:A,style:x,onKeyDown:H,onKeyUp:r,onClick:q,onTouchEnd:q,onFocus:s,onPaste:te,onInput:B,dangerouslySetInnerHTML:{__html:ne}}):null,[ne,x,e]);d.useEffect(()=>{F&&A.current&&(A.current.click(),setTimeout(()=>{var _;if(A.current){const oe=window==null?void 0:window.getSelection(),K=A.current.lastChild;if(oe&&K){const ce=document.createRange(),de=((_=K.textContent)==null?void 0:_.length)||0;(K==null?void 0:K.nodeName)==="#text"?ce.setStart(K,de):ce.setStart(K,de&&1||0),ce.collapse(!0),oe.removeAllRanges(),oe.addRange(ce)}}},20))},[F,A.current]),d.useEffect(()=>{var _,oe,K,ce;if(F&&((_=A.current)!=null&&_.offsetWidth||(oe=A.current)!=null&&oe.offsetHeight||(K=A.current)!=null&&K.offsetLeft||(ce=A.current)!=null&&ce.offsetTop)){const de=[A.current.offsetWidth,A.current.offsetHeight];(b&&b[0]!==de[0]&&b[1]!==de[1]||!b)&&a({activeTextId:e,update:{boxSize:de,workState:j.Doing}})}},[b,F,x,e]);function q(){A.current&&A.current.focus(),c()}function H(_){if(_.key==="Backspace"){const oe=window.getSelection(),K=oe==null?void 0:oe.getRangeAt(0);if(K!=null&&K.collapsed)return _.cancelable&&_.preventDefault(),document.execCommand("delete",!1),!1}return c(),!1}function V(_,oe){const K=window==null?void 0:window.getSelection();if(K!=null&&K.rangeCount&&_&&K&&K.anchorNode){const ce=K.anchorOffset,de=K.anchorNode.textContent||"",Te=de.slice(0,ce)||"",dt=de.slice(ce)||"",$e=Te.concat(_)||"";Z($e,dt,oe)}}function Z(_,oe,K){const ce=window==null?void 0:window.getSelection();if(!(ce!=null&&ce.rangeCount)||!ce.anchorNode)return;const de=_.split(/\n/);let Te=ce.anchorNode.parentNode;Te===K&&(Te=ce.anchorNode);const dt=[...K.childNodes],$e=[];let Le,Yt=ce.anchorOffset;for(;dt.length;){const fe=dt.pop();if(fe){if(fe===Te){let Ce=de[0];de.length===1&&(Yt=de[0].length,Ce=de[0].concat(oe)),Te.nodeName==="#text"?(Te.textContent=Ce,Le=Te):Te.nodeName==="DIV"&&(Te.innerText=Ce,Le=Te.childNodes[0]);break}$e.push(fe),K.removeChild(fe)}}if(de.length>1)for(let fe=1;fe<de.length;fe++){let Ce=de[fe];const it=document.createElement("div");g.fontBgColor&&(it.style.backgroundColor=g.fontBgColor),fe===de.length-1&&(Yt=Ce.length,Ce=Ce.concat(oe)),Ce===""?it.innerHTML="<br/>":it.innerText=Ce,K.appendChild(it),fe===de.length-1&&(Le=it.childNodes[0])}if($e.length){$e.reverse();for(const fe of $e)K.appendChild(fe)}if(Le&&Le.nodeName==="#text"){ce.deleteFromDocument();const fe=document.createRange(),Ce=Math.min(Yt,(Le==null?void 0:Le.length)||0);fe.setStart(Le,Ce),fe.collapse(!0),ce.removeAllRanges(),ce.addRange(fe)}}function te(_){if(_.cancelable&&_.preventDefault(),_.stopPropagation(),A.current){const oe=(_.clipboardData||window.clipboardData).getData("text"),K=window==null?void 0:window.getSelection();if(!(K!=null&&K.rangeCount))return;oe&&K&&K.anchorNode&&V(oe,A.current),c()}}function B(_){r(_),c()}return d.createElement(d.Fragment,null,ie,d.createElement("div",{className:"editor-box",style:ee,onFocus:()=>{l.control.room&&!l.control.room.disableDeviceInputs&&(h(l.control.room.disableDeviceInputs),l.control.room.disableDeviceInputs=!0)},onBlur:()=>{l!=null&&l.control.room&&k.isBoolean(u)&&(l.control.room.disableDeviceInputs=u)}},F))};class bi extends d.Component{constructor(t){super(t)}getInnerText(t){const e=[];for(let o=0;o<t.childNodes.length;o++){const i=t.childNodes[o];if(i.nodeName==="#text"&&o===0){const r=i.textContent.split(/\n/),s=r.pop();e.push(...r),s&&e.push(s)}else if(i.nodeName==="DIV"){const r=i.innerText.split(/\n/);if(r.length===2&&r[0]===""&&r[1]==="")e.push("");else{const s=r.shift();s&&e.push(s);const a=r.pop();e.push(...r),a&&e.push(a)}}}return e}updateOptInfo(t){var s,a;const{activeTextId:e,update:o,syncData:i}=t,r=e&&k.cloneDeep(((s=this.props.manager.control.textEditorManager)==null?void 0:s.get(e))||((a=this.props.editors)==null?void 0:a.get(e)));r&&r.opt&&(r.opt={...r.opt,...o},i&&(r.canSync=Object.keys(i).includes("canSync")&&i.canSync||r.canSync,r.canWorker=Object.keys(i).includes("canWorker")&&i.canWorker||r.canWorker),this.props.manager.control.textEditorManager.updateForViewEdited(e,r))}get editorUI(){var t;if((t=this.props.editors)!=null&&t.size){const e=[];return this.props.editors.forEach((o,i)=>{if(this.props.selectIds.includes(i)&&!(this.props.activeTextId==i)&&this.props.box){const{x:s,y:a}=this.props.box,{x:l,y:c}=o,u=`${l-s}px`,h=`${c-a}px`,g=d.createElement(np,{left:u,top:h,key:i,data:o,workId:i,isSelect:!0,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(g)}}),e}return null}render(){return d.createElement(d.Fragment,null,this.editorUI)}}class rp extends bi{constructor(e){super(e);f(this,"ref");f(this,"isRunAnimation");this.ref=d.createRef(),this.isRunAnimation=void 0}runAnimation(){this.isRunAnimation||(this.isRunAnimation=requestAnimationFrame(()=>{var e,o;(e=this.ref)!=null&&e.current&&((o=this.ref)==null||o.current.scrollTo({left:0,behavior:"instant"})),this.isRunAnimation=void 0}))}handleKeyUp(e){const o=this.getInnerText(e.nativeEvent.target),i=this.props.activeTextId;if(i){const r=this.props.manager.control.textEditorManager.get(i),s=uo(o),a=j.Doing,l=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!r||r&&(r.opt.text!==s||!k.isEqual(r.opt.boxSize,l)||!k.isEqual(r.opt.workState,a)))&&this.updateOptInfo({activeTextId:i,update:{text:s,boxSize:l,workState:a},syncData:{canSync:!0,canWorker:!0}})}}handleFocus(e){const o=this.props.activeTextId;if(o){const i=this.props.manager.control.textEditorManager.get(o),r=j.Doing,s=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!i||i&&(!k.isEqual(i.opt.boxSize,s)||!k.isEqual(i.opt.workState,r)))&&this.updateOptInfo({activeTextId:o,update:{boxSize:s,workState:r},syncData:{canSync:!0,canWorker:!0}})}}get editorUI(){var e;if((e=this.props.editors)!=null&&e.size){const o=[];return this.props.editors.forEach((i,r)=>{if(!(this.props.selectIds.includes(r)&&this.props.activeTextId!==r)){const l=this.props.activeTextId==r?d.createElement(sp,{key:r,data:i,workId:r,showFloatBtns:this.props.showFloatBtns||!1,handleFocus:this.handleFocus.bind(this),handleKeyUp:this.handleKeyUp.bind(this),updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager,runAnimation:this.runAnimation.bind(this)}):d.createElement(ip,{manager:this.props.manager,isActive:i.opt.workState===j.Doing||i.opt.workState===j.Start||!1,key:r,data:i,workId:r});o.push(l)}}),o}return null}render(){return d.createElement("div",{className:`${this.props.className}`,ref:this.ref},this.editorUI)}}const ap=()=>{const{floatBarData:n}=d.useContext(he);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},d.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},cp=()=>{const{floatBarData:n,mananger:t}=d.useContext(he),[e,o]=d.useState(),[i,r]=d.useState();d.useEffect(()=>{const l=[];if(t&&k.isNumber(n==null?void 0:n.x)&&k.isNumber(n==null?void 0:n.y)&&(n!=null&&n.points)){const c=t.viewId;if(t.control.viewContainerManager.getView(c))for(const h of n.points){const g=t.control.viewContainerManager.transformToOriginPoint(h,c);l.push(g)}l[0]&&o({x:l[0][0]-((n==null?void 0:n.x)||0),y:l[0][1]-((n==null?void 0:n.y)||0)}),l[1]&&r({x:l[1][0]-((n==null?void 0:n.x)||0),y:l[1][1]-((n==null?void 0:n.y)||0)})}},[t,n==null?void 0:n.points,n==null?void 0:n.x,n==null?void 0:n.y]);const s=d.useMemo(()=>e?d.createElement("div",{className:"point point-dot",style:{borderColor:n==null?void 0:n.selectorColor,left:e.x,top:e.y}}):null,[n==null?void 0:n.selectorColor,e]),a=d.useMemo(()=>i?d.createElement("div",{className:"point point-dot",style:{borderColor:n==null?void 0:n.selectorColor,left:i.x,top:i.y}}):null,[i,n==null?void 0:n.selectorColor]);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},s,a)},lp=()=>{const{floatBarData:n}=d.useContext(he);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},d.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),d.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},up=()=>{const{floatBarData:n}=d.useContext(he);return d.createElement("div",{className:"appliance-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},d.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},hp=n=>{const{className:t}=n,{floatBarData:e,angle:o,setAngle:i,setOperationType:r,mananger:s}=d.useContext(he),[a,l]=d.useState(!1),[c,u]=d.useState(new ae),[h,g]=d.useState(new ae),[M,I]=d.useState(!1);d.useEffect(()=>($.activeListener(m),()=>{$.unmountActiveListener(m)}),[]);const m=y=>{var C;if(!y){I(!0),l(!1),r(L.None);return}I(!1),(C=s==null?void 0:s.control.room)!=null&&C.disableDeviceInputs&&(s.control.room.disableDeviceInputs=!1)};d.useEffect(()=>{if(e){const y=Math.floor(e.w/2),C=Math.floor(-e.h/2);g(new ae(y,C)),u(new ae)}},[e]);const w=(y,C)=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),s!=null&&s.control.worker.isBusy){I(!0);return}l(!0);const v=Math.round(ae.GetAngleByPoints(c,h,new ae(C.x,C.y)))||0;i(v),r(L.RotateNode),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),$.emitMethod(Q.MainEngine,L.RotateNode,{workIds:[Y],angle:v,workState:j.Start,viewId:s==null?void 0:s.viewId})},z=ct((y,C)=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),s!=null&&s.control.worker.isBusy){I(!0);return}l(!1);const v=Math.round(ae.GetAngleByPoints(c,h,new ae(C.x,C.y)))||0;i(v),r(L.None),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),$.emitMethod(Q.MainEngine,L.RotateNode,{workIds:[Y],angle:v,workState:j.Done,viewId:s==null?void 0:s.viewId})},100,{leading:!1}),p=ct((y,C)=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),s!=null&&s.control.worker.isBusy){I(!0);return}l(!0);const v=Math.round(ae.GetAngleByPoints(c,h,new ae(C.x,C.y)))||0;i(v),r(L.RotateNode),$.emitMethod(Q.MainEngine,L.RotateNode,{workIds:[Y],angle:v,workState:j.Doing,viewId:s==null?void 0:s.viewId})},100,{leading:!1});return d.createElement(qe,{disabled:M,handle:".appliance-plugin-rotate-mouse-pointer",onStart:w,onDrag:p,onStop:z},d.createElement("div",{className:`${t}`,style:e?{left:e.x-30,top:e.y+e.h+20,touchAction:"none"}:void 0},!a&&d.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},d.createElement("img",{alt:"icon",src:pe("rotation-button")})),d.createElement("div",{className:`appliance-plugin-rotate-mouse-pointer ${a?"active":""}`},d.createElement("img",{alt:"icon",src:pe("rotation")}),d.createElement("div",{className:"angle-icon"},o,"°"))))},dp=n=>{const{floatBarData:t,setOperationType:e,mananger:o}=d.useContext(he),{onClickHandle:i}=n,[r,s]=d.useState(j.Pending),[a,l]=d.useState(),[c,u]=d.useState(),[h,g]=d.useState(!1);d.useEffect(()=>($.activeListener(M),()=>{$.unmountActiveListener(M)}),[]);const M=p=>{var y;if(!p||t!=null&&t.isLocked){g(!0),s(j.Pending),e(L.None);return}g(!1),(y=o==null?void 0:o.control.room)!=null&&y.disableDeviceInputs&&(o.control.room.disableDeviceInputs=!1)};d.useEffect(()=>{if(t!=null&&t.isLocked||o!=null&&o.control.worker.isBusy){g(!0),s(j.Pending);return}g(!1)},[t==null?void 0:t.isLocked]),d.useEffect(()=>{k.isNumber(t==null?void 0:t.x)&&k.isNumber(t==null?void 0:t.y)&&(r===j.Pending||r===j.Done)&&u({x:t==null?void 0:t.x,y:t==null?void 0:t.y})},[r,t==null?void 0:t.x,t==null?void 0:t.y]);const I=p=>{if(p.cancelable&&p.preventDefault(),p.stopPropagation(),o!=null&&o.control.worker.isBusy){g(!0),s(j.Pending);return}k.isNumber(t==null?void 0:t.x)&&k.isNumber(t==null?void 0:t.y)&&(e(L.TranslateNode),s(j.Start),l({x:t==null?void 0:t.x,y:t==null?void 0:t.y}),o!=null&&o.control.room&&(o.control.room.disableDeviceInputs=!0),$.emitMethod(Q.MainEngine,L.TranslateNode,{workIds:[Y],position:{x:t==null?void 0:t.x,y:t==null?void 0:t.y},workState:j.Start,viewId:o==null?void 0:o.viewId}))},m=k.throttle((p,y)=>{if(p.cancelable&&p.preventDefault(),o!=null&&o.control.worker.isBusy){g(!0),s(j.Pending);return}p.stopPropagation();const C={x:y.x,y:y.y};e(L.None),s(j.Done),o!=null&&o.control.room&&(o.control.room.disableDeviceInputs=!1),$.emitMethod(Q.MainEngine,L.TranslateNode,{workIds:[Y],position:C,workState:j.Done,viewId:o==null?void 0:o.viewId})},100,{leading:!1}),w=k.throttle((p,y)=>{if(p.cancelable&&p.preventDefault(),p.stopPropagation(),o!=null&&o.control.worker.isBusy){g(!0),s(j.Pending);return}const C={x:y.x,y:y.y};(y.x!==(t==null?void 0:t.x)||y.y!==(t==null?void 0:t.y))&&(s(j.Doing),$.emitMethod(Q.MainEngine,L.TranslateNode,{workIds:[Y],position:C,workState:j.Doing,viewId:o==null?void 0:o.viewId}))},100,{leading:!1}),z=d.useMemo(()=>!!((t==null?void 0:t.scaleType)===Ie.none&&(t!=null&&t.canLock)),[t]);return d.createElement(qe,{disabled:h,position:c,onStart:I,onDrag:w,onStop:m},d.createElement("div",{style:t?{position:"absolute",left:0,top:0,width:t.w,height:t.h,zIndex:2,pointerEvents:z?"none":"auto",touchAction:"none"}:void 0,onClick:k.throttle(p=>(p.stopPropagation(),p.cancelable&&p.preventDefault(),(a==null?void 0:a.x)===(t==null?void 0:t.x)&&(a==null?void 0:a.y)===(t==null?void 0:t.y)&&i(p),!1),100,{leading:!1}),onTouchEndCapture:k.throttle(p=>(p.stopPropagation(),p.cancelable&&p.preventDefault(),o&&r!==j.Doing&&i(p),!1),100,{leading:!1})}))},gp=n=>{const{className:t}=n,[e,o]=d.useState({x:0,y:0,h:0,w:0}),[i,r]=d.useState(),[s,a]=d.useState(),[l,c]=d.useState(),{floatBarData:u,mananger:h}=d.useContext(he),[g,M]=d.useState(),[I,m]=d.useState(!1);d.useEffect(()=>{if(u&&h){const S={x:u.x,y:u.y,w:u.w,h:u.h};o(S)}return $.activeListener(w),()=>{$.unmountActiveListener(w)}},[]);const w=S=>{var D;if(!S){m(!0);return}m(!1),(D=h==null?void 0:h.control.room)!=null&&D.disableDeviceInputs&&(h.control.room.disableDeviceInputs=!1)},z=S=>[[S.x,S.y],[S.x+S.w,S.y],[S.x+S.w,S.y+S.h],[S.x,S.y+S.h]],p=(S,D)=>{switch(D){case"top":case"topLeft":case"left":return S[2];case"topRight":return S[3];case"right":case"bottomRight":case"bottom":return S[0];case"bottomLeft":return S[1]}},y=(S,D,R,W)=>{let b=!1,A=!1;const x={x:e.x,y:e.y,w:e.w,h:e.h},ee=[1,1],ie=[0,0];switch(S){case"top":{const H=D.height+e.h;H<0?(A=!0,x.y=e.y+e.h,x.h=Math.abs(H)):(x.y=e.y-D.height,x.h=e.h+D.height);break}case"topLeft":{const H=D.width+e.w;H<0?(b=!0,x.x=e.x+e.w,x.w=Math.abs(H)):(x.x=e.x-D.width,x.w=e.w+D.width);const V=D.height+e.h;V<0?(A=!0,x.y=e.y+e.h,x.h=Math.abs(V)):(x.y=e.y-D.height,x.h=e.h+D.height);break}case"topRight":{const H=D.width+e.w;H<0?(b=!0,x.x=e.x+H,x.w=Math.abs(H)):x.w=e.w+D.width;const V=D.height+e.h;V<0?(A=!0,x.y=e.y+e.h,x.h=Math.abs(V)):(x.y=e.y-D.height,x.h=e.h+D.height);break}case"bottom":{const H=D.height+e.h;H<0?(A=!0,x.y=e.y+H,x.h=Math.abs(H)):x.h=e.h+D.height;break}case"bottomLeft":{const H=D.width+e.w;H<0?(b=!0,x.x=e.x+e.w,x.w=Math.abs(H)):(x.x=e.x-D.width,x.w=e.w+D.width);const V=D.height+e.h;V<0?(A=!0,x.y=e.y+V,x.h=Math.abs(V)):x.h=e.h+D.height;break}case"left":{const H=D.width+e.w;H<0?(b=!0,x.x=e.x+e.w,x.w=Math.abs(H)):(x.x=e.x-D.width,x.w=e.w+D.width);break}case"bottomRight":{const H=D.width+e.w;H<0?(b=!0,x.x=e.x+H,x.w=Math.abs(H)):x.w=e.w+D.width;const V=D.height+e.h;V<0?(A=!0,x.y=e.y+V,x.h=Math.abs(V)):x.h=e.h+D.height;break}case"right":{const H=D.width+e.w;H<0?(b=!0,x.x=e.x+H,x.w=Math.abs(H)):x.w=e.w+D.width;break}}ee[0]=x.w/e.w,ee[1]=x.h/e.h;const F=z(x).map(H=>R.control.viewContainerManager.transformToScenePoint(H,R.viewId)),q=p(F,S);return A&&(ie[1]=q[1]-W[1]),b&&(ie[0]=q[0]-W[0]),{scale:ee,translate:ie}},C=(S,D)=>{if(S.cancelable&&S.preventDefault(),S.stopPropagation(),h!=null&&h.control.worker.isBusy){m(!0);return}if(u!=null&&u.w&&(u!=null&&u.h)&&h){const R={x:u.x,y:u.y,w:u.w,h:u.h},W=z(R),b=W.map(ee=>h.control.viewContainerManager.transformToScenePoint(ee,h.viewId)),A=p(W,D),x=p(b,D);o(R),r(A),a(x),c(D),h!=null&&h.control.room&&(h.control.room.disableDeviceInputs=!0),$.emitMethod(Q.MainEngine,L.ScaleNode,{workIds:[Y],originPoint:A,scenePoint:x,workState:j.Start,viewId:h.viewId})}},v=k.throttle((S,D,R,W)=>{if(S.cancelable&&S.preventDefault(),S.stopPropagation(),!h||!i||!s)return;if(h!=null&&h.control.worker.isBusy){m(!0);return}const{scale:b,translate:A}=y(D,W,h,s);(!k.isEqual(b,g==null?void 0:g.scale)||!k.isEqual(A,g==null?void 0:g.translate))&&(M({scale:b,translate:A}),$.emitMethod(Q.MainEngine,L.ScaleNode,{workIds:[Y],scale:b,dir:D,translate:A,originPoint:i,scenePoint:s,workState:j.Doing,viewId:h.viewId}))},100,{leading:!1}),T=k.throttle(S=>{if(S.cancelable&&S.preventDefault(),S.stopPropagation(),!(!h||!i||!s)){if(h!=null&&h.control.worker.isBusy){m(!0);return}if(h!=null&&h.control.room&&(h.control.room.disableDeviceInputs=!1),g){const{scale:D,translate:R}=g;$.emitMethod(Q.MainEngine,L.ScaleNode,{workIds:[Y],scale:D,dir:l,translate:R,originPoint:i,scenePoint:s,workState:j.Done,viewId:h.viewId})}}},100,{leading:!1});return d.createElement(Oi.Resizable,{className:`${t}`,boundsByDirection:!0,minWidth:-(((u==null?void 0:u.x)||0)+((u==null?void 0:u.w)||0)),minHeight:-(((u==null?void 0:u.y)||0)+((u==null?void 0:u.h)||0)),size:{width:(u==null?void 0:u.w)||0,height:(u==null?void 0:u.h)||0},style:{position:"absolute",pointerEvents:"auto",left:u==null?void 0:u.x,top:u==null?void 0:u.y},enable:I?!1:{top:(u==null?void 0:u.scaleType)===Ie.all&&!0||!1,right:(u==null?void 0:u.scaleType)===Ie.all&&!0||!1,bottom:(u==null?void 0:u.scaleType)===Ie.all&&!0||!1,left:(u==null?void 0:u.scaleType)===Ie.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(u==null?void 0:u.scaleType)===Ie.proportional,onResizeStart:C,onResize:v,onResizeStop:T})},Vo=n=>{const{id:t,pos:e,pointMap:o,type:i}=n,{setOperationType:r,mananger:s,floatBarData:a}=d.useContext(he),[l,c]=d.useState({x:0,y:0}),[u,h]=d.useState(j.Pending),[g,M]=d.useState(!1);d.useEffect(()=>($.activeListener(I),()=>{$.unmountActiveListener(I)}),[]);const I=p=>{var y;if(!p||a!=null&&a.isLocked){M(!0),h(j.Pending),r(L.None);return}M(!1),(y=s==null?void 0:s.control.room)!=null&&y.disableDeviceInputs&&(s.control.room.disableDeviceInputs=!1)};d.useEffect(()=>{k.isNumber(e.x)&&k.isNumber(e.y)&&(u===j.Pending||u===j.Done)&&c({x:e.x,y:e.y})},[e,u]);const m=p=>{if(p.cancelable&&p.preventDefault(),p.stopPropagation(),s!=null&&s.control.worker.isBusy){M(!0),h(j.Pending);return}k.isNumber(e.x)&&k.isNumber(e.y)&&(r(L.SetPoint),h(j.Start),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),$.emitMethod(Q.MainEngine,L.SetPoint,{workId:Y,pointMap:o,workState:j.Start,viewId:s==null?void 0:s.viewId}))},w=k.throttle((p,y)=>{if(p.cancelable&&p.preventDefault(),p.stopPropagation(),s!=null&&s.control.worker.isBusy){M(!0),h(j.Pending);return}const C={x:y.x,y:y.y};if((C.x!==(e==null?void 0:e.x)||C.y!==(e==null?void 0:e.y))&&(s!=null&&s.control.viewContainerManager)){const v=s.control.viewContainerManager.transformToScenePoint([C.x,C.y],s.viewId),T=o.get(t);T&&i==="start"?T[0]=v:T&&i==="end"&&(T[1]=v),h(j.Doing),$.emitMethod(Q.MainEngine,L.SetPoint,{workId:Y,pointMap:o,workState:j.Doing,viewId:s==null?void 0:s.viewId})}},100,{leading:!1}),z=k.throttle((p,y)=>{if(p.cancelable&&p.preventDefault(),s!=null&&s.control.worker.isBusy){M(!0),h(j.Pending);return}p.stopPropagation(),r(L.None),h(j.Done);const C={x:y.x,y:y.y};if(s!=null&&s.control.viewContainerManager){const v=s.control.viewContainerManager.transformToScenePoint([C.x,C.y],s.viewId),T=o.get(t);T&&i==="start"?T[0]=v:T&&i==="end"&&(T[1]=v),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),$.emitMethod(Q.MainEngine,L.SetPoint,{workId:Y,pointMap:o,workState:j.Done,viewId:s==null?void 0:s.viewId})}},100,{leading:!1});return d.createElement(qe,{disabled:g,position:l,onStart:m,onDrag:w,onStop:z},d.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:a?{left:0,top:0}:void 0}))},Mp=n=>{const{className:t}=n,{floatBarData:e,mananger:o}=d.useContext(he),[i,r]=d.useState(),[s,a]=d.useState(),[l,c]=d.useState(new Map);d.useEffect(()=>{const g=[];if(o&&(e!=null&&e.points)){const M=o.viewId;if(o.control.viewContainerManager.getView(M))for(const m of e.points){const w=o.control.viewContainerManager.transformToOriginPoint(m,M);g.push(w)}e!=null&&e.selectIds&&e.selectIds.length===1&&(l.set(e.selectIds[0],e.points),c(l))}g[0]&&r({x:g[0][0],y:g[0][1]}),g[1]&&a({x:g[1][0],y:g[1][1]})},[o,e==null?void 0:e.points,e==null?void 0:e.selectIds,l]);const u=d.useMemo(()=>i&&(e!=null&&e.selectIds)?d.createElement(Vo,{pos:i,type:"start",id:e.selectIds[0],pointMap:l}):null,[i,e==null?void 0:e.selectIds,l]),h=d.useMemo(()=>s&&(e!=null&&e.selectIds)?d.createElement(Vo,{pos:s,type:"end",id:e.selectIds[0],pointMap:l}):null,[s,e==null?void 0:e.selectIds,l]);return d.createElement("div",{className:`${t}`},u,h)},pp=d.forwardRef((n,t)=>{const{floatBarData:e,operationType:o}=d.useContext(he),i=d.useMemo(()=>(e==null?void 0:e.scaleType)!==Ie.all||o===L.RotateNode?null:d.createElement(ap,null),[e,o]),r=d.useMemo(()=>(e==null?void 0:e.scaleType)!==Ie.both||o===L.RotateNode?null:d.createElement(cp,null),[e,o]),s=d.useMemo(()=>(e==null?void 0:e.scaleType)!==Ie.proportional||o===L.RotateNode?null:d.createElement(lp,null),[e,o]),a=d.useMemo(()=>(e==null?void 0:e.scaleType)===Ie.none&&(e!=null&&e.canLock)?d.createElement(up,null):null,[e]);return d.createElement("div",{ref:t,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},a,i,r,s,n.children)}),fp=d.forwardRef((n,t)=>{var g;const{floatBarData:e,operationType:o,mananger:i}=d.useContext(he),{editors:r,activeTextId:s}=n,a=d.useMemo(()=>{var M;return e!=null&&e.canRotate&&((M=e==null?void 0:e.selectIds)==null?void 0:M.length)===1&&(o===L.None||o===L.RotateNode)?d.createElement(hp,{className:ye.RotateBtn}):null},[e==null?void 0:e.canRotate,(g=e==null?void 0:e.selectIds)==null?void 0:g.length,o]),l=d.useMemo(()=>((e==null?void 0:e.scaleType)===Ie.all||(e==null?void 0:e.scaleType)===Ie.proportional)&&(o===L.None||o===L.ScaleNode)&&k.isNumber(e==null?void 0:e.x)&&k.isNumber(e==null?void 0:e.y)?d.createElement(gp,{className:ye.ResizeBtn}):null,[e==null?void 0:e.scaleType,o,e==null?void 0:e.x,e==null?void 0:e.y]),c=d.useMemo(()=>(e==null?void 0:e.scaleType)===Ie.both&&(o===L.None||o===L.SetPoint)?d.createElement(Mp,{className:ye.ResizeTowBox}):null,[e==null?void 0:e.scaleType,o]),u=d.useMemo(()=>{const M=(e==null?void 0:e.selectIds)||[];return r&&i&&M&&k.isNumber(e==null?void 0:e.x)&&k.isNumber(e==null?void 0:e.y)&&k.isNumber(e==null?void 0:e.w)&&k.isNumber(e==null?void 0:e.h)?d.createElement(bi,{box:{x:e==null?void 0:e.x,y:e==null?void 0:e.y,w:e==null?void 0:e.w,h:e==null?void 0:e.h},manager:i,selectIds:M,activeTextId:s,editors:r}):null},[e==null?void 0:e.selectIds,e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.w,e==null?void 0:e.h,r,i,s]),h=d.useMemo(()=>o===L.None&&k.isNumber(e==null?void 0:e.x)&&k.isNumber(e==null?void 0:e.y)&&k.isNumber(e==null?void 0:e.w)&&k.isNumber(e==null?void 0:e.h)?d.createElement("div",{className:ye.FloatBarBtn,style:{left:e==null?void 0:e.x,top:e==null?void 0:e.y,width:e.w,height:e.h}},d.createElement(Li,{position:{x:e.x,y:e.y},textOpt:e==null?void 0:e.textOpt,noLayer:e==null?void 0:e.isLocked})):null,[e==null?void 0:e.x,e==null?void 0:e.y,e==null?void 0:e.w,e==null?void 0:e.h,e==null?void 0:e.textOpt,e==null?void 0:e.isLocked,o]);return d.createElement("div",{className:ye.FloatBar,onMouseOver:()=>{i==null||i.control.worker.blurCursor(i.viewId)}},d.createElement(pp,{ref:t},d.createElement(d.Fragment,null,u)),d.createElement(dp,{onClickHandle:M=>{if(i&&(r!=null&&r.size)){const I=i.getPoint(M.nativeEvent);I&&i.control.textEditorManager.computeTextActive(I,i.viewId)}}}),a,l,c,h)}),yp=d.memo(fp,(n,t)=>!!k.isEqual(n,t)),Ip="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",wp="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='40px'%20height='40px'%20viewBox='0%200%2040%2040'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3eshape-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-64.6%25'%20y='-59.5%25'%20width='229.3%25'%20height='246.1%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-344.000000,%20-751.000000)'%3e%3cg%20id='shape-cursor'%20transform='translate(344.000000,%20751.000000)'%3e%3crect%20id='矩形备份-44'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M20,21%20C20.4854103,21%2020.898085,21.3479993%2020.9899479,21.8654877%20L21,22%20L21,27%20C21,27.5522847%2020.5522847,28%2020,28%20C19.5145897,28%2019.101915,27.6520007%2019.0100521,27.1345123%20L19,27%20L19,22%20C19,21.4477153%2019.4477153,21%2020,21%20Z%20M27,19%20C27.5522847,19%2028,19.4477153%2028,20%20C28,20.4854103%2027.6520007,20.898085%2027.1345123,20.9899479%20L27,21%20L22,21%20C21.4477153,21%2021,20.5522847%2021,20%20C21,19.5145897%2021.3479993,19.101915%2021.8654877,19.0100521%20L22,19%20L27,19%20Z%20M18,19%20C18.5522847,19%2019,19.4477153%2019,20%20C19,20.4854103%2018.6520007,20.898085%2018.1345123,20.9899479%20L18,21%20L13,21%20C12.4477153,21%2012,20.5522847%2012,20%20C12,19.5145897%2012.3479993,19.101915%2012.8654877,19.0100521%20L13,19%20L18,19%20Z%20M20,12%20C20.4854103,12%2020.898085,12.3479993%2020.9899479,12.8654877%20L21,13%20L21,18%20C21,18.5522847%2020.5522847,19%2020,19%20C19.5145897,19%2019.101915,18.6520007%2019.0100521,18.1345123%20L19,18%20L19,13%20C19,12.4477153%2019.4477153,12%2020,12%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='18.5'%20y='17'%20width='3'%20height='6'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='17'%20y='18.5'%20width='6'%20height='3'%3e%3c/rect%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='形状结合'%20fill='%23212324'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",vp="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='47px'%20height='40px'%20viewBox='0%200%2047%2040'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3etext-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M16,26.5%20C15.7238576,26.5%2015.5,26.2761424%2015.5,26%20C15.5,25.7545401%2015.6768752,25.5503916%2015.9101244,25.5080557%20L16,25.5%20L19.5,25.5%20L19.5,14.5%20L16,14.5%20C15.7238576,14.5%2015.5,14.2761424%2015.5,14%20C15.5,13.7545401%2015.6768752,13.5503916%2015.9101244,13.5080557%20L16,13.5%20L24,13.5%20C24.2761424,13.5%2024.5,13.7238576%2024.5,14%20C24.5,14.2454599%2024.3231248,14.4496084%2024.0898756,14.4919443%20L24,14.5%20L20.5,14.5%20L20.5,25.5%20L24,25.5%20C24.2761424,25.5%2024.5,25.7238576%2024.5,26%20C24.5,26.2454599%2024.3231248,26.4496084%2024.0898756,26.4919443%20L24,26.5%20L16,26.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-284.0%25'%20y='-81.5%25'%20width='668.1%25'%20height='293.9%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-388.000000,%20-672.000000)'%3e%3cg%20id='text-cursor'%20transform='translate(392.000000,%20672.000000)'%3e%3crect%20id='矩形备份-40'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M19,25%20L19,15%20L16,15%20C15.4477153,15%2015,14.5522847%2015,14%20C15,13.5145897%2015.3479993,13.101915%2015.8654877,13.0100521%20L16,13%20L24,13%20C24.5522847,13%2025,13.4477153%2025,14%20C25,14.4854103%2024.6520007,14.898085%2024.1345123,14.9899479%20L24,15%20L21,15%20L21,25%20L24,25%20C24.5522847,25%2025,25.4477153%2025,26%20C25,26.4854103%2024.6520007,26.898085%2024.1345123,26.9899479%20L24,27%20L16,27%20C15.4477153,27%2015,26.5522847%2015,26%20C15,25.5145897%2015.3479993,25.101915%2015.8654877,25.0100521%20L16,25%20L19,25%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e";class mp extends d.Component{constructor(e){super(e);f(this,"renderAvatar",e=>{var i;const o=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.detectCursorName(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":o,marginRight:r?4:0},src:(i=e.payload)==null?void 0:i.avatar,alt:"avatar"})}else return null});f(this,"getOpacity",e=>{const o=this.getCursorName(e),i=this.detectAvatar(e);return o===void 0&&i===void 0?0:1});f(this,"getCursorName",e=>{if(e.payload&&e.payload.cursorName)return e.payload.cursorName});f(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");f(this,"getCursorBackgroundColor",e=>{const o=this.detectCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:o?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});f(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");f(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));f(this,"detectCursorName",e=>!!(e.payload&&e.payload.cursorName));f(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));f(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)})}render(){const{roomMember:e}=this.props,o=this.getCursorName(e);switch(e.memberState.currentApplianceName){case J.pencil:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"10px"}},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),o,this.renderTag(e))),d.createElement("div",null,d.createElement("img",{className:"cursor-pencil-image",src:Ip,alt:"pencilCursor"}))));case J.text:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",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),o,this.renderTag(e))),d.createElement("div",null,d.createElement("img",{className:"cursor-arrow-image",src:vp,alt:"textCursor"}))));case J.rectangle:case J.arrow:case J.straight:case J.shape:case J.ellipse:return d.createElement("div",{className:"cursor-box"},d.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",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),o,this.renderTag(e))),d.createElement("div",null,d.createElement("img",{className:"cursor-arrow-image",src:wp,alt:"shapeCursor"}))));default:return null}}}const Np=n=>{const{className:t,info:e}=n,{roomMember:o,...i}=e||{};return d.createElement("div",{className:`${t}`,style:i?{transform:`translate(${i.x}px, ${i.y}px)`}:{display:"none"}},o&&d.createElement(mp,{roomMember:o}))},Tp=n=>{const{className:t,manager:e}=n,[o,i]=d.useState();d.useEffect(()=>(e.internalMsgEmitter.on([Q.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([Q.Cursor,e.viewId],r)}),[e]);function r(a){i(a)}return d.useMemo(()=>{if(o!=null&&o.length){const a=o.map(l=>{var c;return l.roomMember?d.createElement(Np,{key:(c=l.roomMember)==null?void 0:c.memberId,className:t,info:l}):null});return d.createElement(d.Fragment,null,a)}return null},[o])},he=d.createContext({mananger:void 0,floatBarColors:[],floatBarData:void 0,dpr:1,angle:0,operationType:L.None,scale:[1,1],setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class ho extends d.Component{constructor(e){var o;super(e);f(this,"setAngle",e=>{this.setState({angle:e})});f(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,dpr:1,angle:0,operationType:L.None,scale:[1,1],editors:this.editors,activeTextId:(o=this.props.mananger.control.textEditorManager)==null?void 0:o.activeId}}get editors(){return lt(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(){}showFloatBar(e,o){const i=e&&o&&{...this.state.floatBarData,...o}||void 0;this.setState({showFloatBar:e,floatBarData:i,angle:0})}setActiveTextEditor(e){this.setState({activeTextId:e,editors:this.editors})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var o,i,r,s,a,l,c;const e=!!((i=(o=this.props.mananger.control)==null?void 0:o.room)!=null&&i.floatBarOptions);return d.createElement("div",{className:ye.Container},!this.props.mananger.control.hasOffscreenCanvas()&&d.createElement("div",{className:ye.CanvasBox,ref:this.props.refs.canvasContainerRef})||d.createElement("div",{className:ye.CanvasBox,onMouseDown:u=>{u.cancelable&&u.preventDefault(),u.stopPropagation()},onTouchStart:u=>{u.stopPropagation()},onMouseMove:u=>{this.props.mananger.cursorMouseMove(u)}},d.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"serviceCanvas",className:ye.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"localCanvas",className:ye.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),d.createElement("canvas",{id:"topCanvas",className:ye.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.mananger.control.hasOffscreenCanvas()&&this.props.refs.snapshotContainerRef&&d.createElement("div",{className:ye.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,d.createElement(he.Provider,{value:{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)||[],floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&d.createElement(yp,{ref:this.props.refs.floatBarRef,editors:this.state.editors,activeTextId:this.state.activeTextId})||null,((l=this.state.editors)==null?void 0:l.size)&&d.createElement(rp,{className:ye.TextEditorContainer,showFloatBtns:e,manager:this.props.mananger,selectIds:((c=this.state.floatBarData)==null?void 0:c.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null),d.createElement(Tp,{className:ye.CursorBox,manager:this.props.mananger}))}}class Cp extends ki{constructor(e,o){super(e,o);f(this,"width",1e3);f(this,"height",1e3);f(this,"dpr",1);f(this,"vDom");f(this,"eventTragetElement");f(this,"snapshotContainerRef");f(this,"canvasContainerRef",d.createRef());f(this,"canvasTopRef",d.createRef());f(this,"canvasServiceFloatRef",d.createRef());f(this,"canvasFloatRef",d.createRef());f(this,"canvasBgRef",d.createRef());f(this,"floatBarRef",d.createRef());f(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=d.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth||this.width,o=this.eventTragetElement.offsetHeight||this.height;e&&o&&this.canvasContainerRef.current&&(e!==this.width||o!==this.height)&&(this.dpr=Oe(),this.width=e,this.height=o,this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${o}px`),e&&o&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(e!==this.width||o!==this.height)&&(this.dpr=Oe(),this.width=e,this.height=o),e&&o&&this.canvasBgRef.current&&(e!==this.width||o!==this.height)&&(this.dpr=Oe(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=o,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=o*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=o*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=o*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=o*this.dpr))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const o=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const i of o)i.remove()}}}createMainViewDisplayer(e){const o=document.createElement("div");return o.className="appliance-plugin-main-view-displayer",e.appendChild(o),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),_t.render(d.createElement(ho,{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}}),o),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class zp extends fM{constructor(e,o,i){super(e,o,i);f(this,"dpr",1);f(this,"width",1e3);f(this,"height",1e3);f(this,"vDom");f(this,"eventTragetElement");f(this,"canvasContainerRef",d.createRef());f(this,"canvasTopRef",d.createRef());f(this,"canvasServiceFloatRef",d.createRef());f(this,"canvasFloatRef",d.createRef());f(this,"canvasBgRef",d.createRef());f(this,"floatBarRef",d.createRef());f(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){if(this.canvasContainerRef.current){const e=this.eventTragetElement.offsetWidth||this.width,o=this.eventTragetElement.offsetHeight||this.height;e&&o&&(e!==this.width||o!==this.height)&&(this.width=e,this.height=o,this.dpr=Oe(),this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${o}px`)}if(this.canvasBgRef.current){this.dpr=Oe(this.canvasBgRef.current.getContext("2d"));const e=this.eventTragetElement.offsetWidth||this.width,o=this.eventTragetElement.offsetHeight||this.height;e&&o&&(e!==this.width||o!==this.height)&&(this.width=e,this.height=o,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=o*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=o*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=o*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=o*this.dpr))}}}createAppViewDisplayer(e,o){const i=document.createElement("div");return i.className="appliance-plugin-app-view-displayer",o.appendChild(i),this.eventTragetElement=o.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),_t.render(d.createElement(ho,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef}}),i),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class je extends Ge{constructor(e){super(e);f(this,"focuedViewId");f(this,"focuedView");f(this,"control");f(this,"tmpFocusedViewId");f(this,"checkScaleTimer");f(this,"onMainViewRelease",async e=>{this.control.textEditorManager.clear(ge,!0),this.mainViewDestroy(e),await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),this.onMainViewMounted(e);const o=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(o),this.control.clearSnapshootData()});f(this,"mainViewDestroy",e=>{var o;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const i=e.divElement;if(i){const r=i.getElementsByClassName("appliance-plugin-main-view-displayer");for(const s of r)s.remove()}if(this.mainView.container&&i!==this.mainView.container){const r=this.mainView.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const s of r)s.remove()}(o=this.control.worker)==null||o.destroyViewWorker(this.mainView.id,!0),this.mainView.displayer.destroy(),this.mainView=void 0}});f(this,"onMainViewMounted",e=>{const o=e.divElement;if(!o||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const r=new Cp(this.control,Me.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,c={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...je.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...je.defaultLayerOpt,width:s,height:a},cameraOpt:{...je.defaultCameraOpt,width:s,height:a}},{scale:u,...h}=e.camera;c.cameraOpt={...c.cameraOpt,...h,scale:u===1/0?1:u},this.focuedViewId=ge,this.createMianView({id:ge,container:o,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:c.cameraOpt,viewData:e}),this.focuedView=this.mainView,r.createMainViewDisplayer(o),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});f(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData&&this.updateMainViewCamera()});f(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.updateMainViewCamera()});f(this,"updateMainViewCamera",()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera,o=this.mainView.cameraOpt;if(o){const i=o.width,r=o.height,{width:s,height:a}=this.mainView.viewData.size;(s!==i||a!==r)&&this.mainView.displayer.updateSize();const l=e.scale===1/0?1:e.scale,c=e.centerX||0,u=e.centerY||0,h={...o,scale:l,centerX:c,centerY:u,width:s,height:a};k.isEqual(o,h)||(this.mainView.cameraOpt=h),this.checkScaleTimer&&e.scale==1/0&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),!this.checkScaleTimer&&e.scale===1/0&&this.mainView.viewData&&this.mainView.viewData.camera.scale===1/0&&(this.checkScaleTimer=setTimeout(()=>{var g,M;(M=(g=this.mainView)==null?void 0:g.viewData)==null||M.moveCamera({scale:l,centerX:c,centerY:u,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});f(this,"onAppViewMounted",async e=>{var g;const{appId:o,view:i}=e,r=i.divElement;if(!r||!i.focusScenePath)return;const s=this.appViews.get(o);if(s&&s.displayer){let M=r.getElementsByClassName("appliance-plugin-app-view-displayer");for(const I of M)I.remove();if(s.container&&s.container!==r){M=s.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const I of M)I.remove()}this.destroyAppView(e.appId,!0),(g=this.control.worker)==null||g.destroyViewWorker(o,!0),await new Promise(I=>{setTimeout(()=>{I(!0)},0)})}const a=new zp(o,this.control,Me.InternalMsgEmitter),l=i.size.width||a.width,c=i.size.height||a.height,h={dpr:a.dpr,originalPoint:[l/2,c/2],offscreenCanvasOpt:{...je.defaultScreenCanvasOpt,width:l,height:c},layerOpt:{...je.defaultLayerOpt,width:l,height:c},cameraOpt:{...je.defaultCameraOpt,...i.camera,width:l,height:c}};if(this.createAppView({id:o,container:r,displayer:a,cameraOpt:h.cameraOpt,focusScenePath:i.focusScenePath,viewData:i}),a.createAppViewDisplayer(o,r),i.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,o)),i.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,o)),i.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===o){const M=this.control.worker.getLocalWorkViewId();M&&M!==o?this.setFocuedViewId(M):this.setFocuedViewId(o),this.tmpFocusedViewId=void 0}setTimeout(()=>{this.onAppViewCameraUpdated(o)},0)});f(this,"onAppViewSizeUpdated",async e=>{await new Promise(i=>{setTimeout(()=>{i(!0)},0)});const o=this.appViews.get(e);o&&o.viewData&&this.updateAppCamera(e)});f(this,"onAppViewCameraUpdated",async e=>{await new Promise(o=>{setTimeout(()=>{o(!0)},0)}),this.updateAppCamera(e)});f(this,"updateAppCamera",e=>{const o=this.appViews.get(e);if(o&&o.viewData){const i=o.viewData.camera,r=o.cameraOpt;if(r){const{width:s,height:a}=o.viewData.size,l=r.width,c=r.height;(s!==l||a!==c)&&o.displayer.updateSize();const u=i.scale===1/0?1:i.scale,h=i.centerX||0,g=i.centerY||0,M={...r,scale:u,centerX:h,centerY:g,width:s,height:a};k.isEqual(M,r)||(o.cameraOpt=M)}}});this.control=e.control}async mountView(e){var i,r;const o=this.getView(e);if(o){const{width:s,height:a,dpr:l}=o.displayer,c={dpr:l,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...je.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...je.defaultLayerOpt,width:s,height:a},cameraOpt:{...je.defaultCameraOpt,width:s,height:a}};if(o.viewData){const{scale:u,...h}=o.viewData.camera;c.cameraOpt={...c.cameraOpt,...h,scale:u===1/0?1:u}}e===((i=this.mainView)==null?void 0:i.id)&&(this.control.cursor.activeCollector(),await this.control.activeWorker()),(r=this.control.worker)==null||r.createViewWorker(e,c),o.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,o.focusScenePath,{isAsync:!0,useAnimation:!1})}}listenerWindowManager(e){e.emitter.on("focusedChange",o=>{const i=o||ge;if(this.focuedViewId!==i)if(this.getView(i)){const s=this.control.worker.getLocalWorkViewId();s&&s!==i?this.setFocuedViewId(s):this.setFocuedViewId(i)}else this.tmpFocusedViewId=i}),e.emitter.on("mainViewScenePathChange",o=>{this.control.onSceneChange(o,ge)}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",o=>{this.appViews.get(o.appId)&&(this.destroyAppView(o.appId),this.control.worker.destroyViewWorker(o.appId))}),e.emitter.on("onAppScenePathChange",o=>{const{appId:i,view:r}=o;this.control.onSceneChange(r.focusScenePath,i)}),e.emitter.on("appsChange",o=>{for(const i of this.appViews.keys())o.includes(i)||(this.destroyAppView(i),this.control.worker.destroyViewWorker(i,!0))})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class yt extends Me{constructor(e){super(e);f(this,"windowManager");f(this,"viewContainerManager");const o={control:this,internalMsgEmitter:Me.InternalMsgEmitter};this.viewContainerManager=new je(o)}init(){}destroy(){var e,o,i,r;this.roomMember.destroy(),(e=this.collector)==null||e.destroy(),(o=this.worker)==null||o.destroy(),(i=this.viewContainerManager)==null||i.destroy(),(r=this.cursor)==null||r.destroy()}activePlugin(){this.collector&&(this.collector.addStorageStateListener(e=>{var a,l;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){(l=this.worker)==null||l.clearViewScenePath(ge,!0);return}const{diffView:o,diffScenePath:i,diffData:r}=e,s=new Map;if(o){let c;Object.keys(o).forEach(u=>{var g;const h=o[u];if(h&&!h.newValue)(g=this.worker)==null||g.clearViewScenePath(u,!0),h.oldValue&&(c=h.oldValue);else if(h&&h.newValue){for(const M of Object.keys(h.newValue))this.worker.pullServiceData(u,M,{isAsync:!1,useAnimation:!0});c=h.newValue}if(c)for(const M of Object.values(c)){const I=new Set;for(const m of Object.keys(M))m&&I.add(m);s.set(u,I)}})}if(i){let c;Object.keys(i).forEach(u=>{var g;const h=i[u];if(h&&h.viewId&&!h.newValue?((g=this.worker)==null||g.clearViewScenePath(h.viewId,!0),h.oldValue&&(c=h.oldValue)):h&&h.viewId&&h.newValue&&(this.worker.pullServiceData(h.viewId,u,{isAsync:!1,useAnimation:!0}),c=h.newValue),h!=null&&h.viewId&&c){const M=new Set;for(const I of Object.keys(c))I&&M.add(I),s.set(h.viewId,M)}})}r&&Object.keys(r).forEach(c=>{var h;const u=r[c];if(u){const{viewId:g}=u,M=s.get(g)||new Set;M.add(c),s.set(g,M),(h=this.worker)==null||h.onServiceDerive(c,u)}});for(const[c,u]of s.entries())Me.InternalMsgEmitter.emit("excludeIds",[...u],c)}),this.room&&this.roomMember.onUidChangeHook(e=>{var o,i;if((o=this.collector)!=null&&o.serviceStorage){const r=[];this.viewContainerManager.getAllViews().forEach(s=>{var a;if(s&&s.focusScenePath&&((a=this.collector)!=null&&a.serviceStorage[s.id])&&this.collector.serviceStorage[s.id][s.focusScenePath]){const l=Object.keys(this.collector.serviceStorage[s.id][s.focusScenePath]).filter(c=>{var u;return(u=this.collector)==null?void 0:u.isSelector(c)}).map(c=>({viewId:s.id,scenePath:s.focusScenePath,key:c}));l.length&&r.push(...l)}}),r.forEach(({key:s,viewId:a,scenePath:l})=>{var u,h;const c=(u=this.collector)==null?void 0:u.getUidFromKey(s);c&&!e.online.includes(c)&&((h=this.collector)==null||h.updateValue(s,void 0,{isAfterUpdate:!0,viewId:a,scenePath:l}))})}(i=this.cursor)==null||i.updateRoomMembers(e)}),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()}setWindowManager(e){var o,i,r,s,a;this.windowManager=e,(i=(o=this.windowManager)==null?void 0:o.mainView)!=null&&i.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((l,c)=>{this.viewContainerManager.onAppViewMounted({appId:c,view:l})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const U=class U extends X.InvisiblePlugin{constructor(){super(...arguments);f(this,"onPhaseChanged",e=>{var o;e===X.RoomPhase.Reconnecting&&((o=U.currentManager)==null||o.setSnapshootData())});f(this,"updateRoomWritable",()=>{var e;(e=U.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});f(this,"roomStateChangeListener",async e=>{var o,i;X.isRoom(this.displayer)&&!this.displayer.isWritable||(e.memberState&&((o=U.currentManager)==null||o.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((i=U.currentManager)==null||i.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,o){!o.options.cdn.fullWorkerUrl&&!o.options.cdn.subWorkerUrl&&U.logger.error("[ApplianceMultiPlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl");const i=e.displayer,r=i.callbacks.on,s=i.callbacks.off,a=i.callbacks.once,l=e.cleanCurrentScene,c=e.mainView.setMemberState;o!=null&&o.logger&&(U.logger=o.logger),o.options&&(U.options={...Pe,...o.options});let u=i.getInvisiblePlugin(U.kind);i&&u&&U.createCurrentManager(e,U.options,u),!u&&X.isRoom(i)&&(u=await U.createApplianceMultiPlugin(i,U.kind)),u&&U.currentManager&&(U.currentManager.bindPlugin(u),u.init(i));const h={displayer:i,windowManager:e,currentManager:U.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(M){var w;U.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const I=(e.mainView||i).getBoundingRect(M),m=await((w=U.currentManager)==null?void 0:w.getBoundingRect(M));return!I.width||!I.height?m:zi(I,m)},screenshotToCanvasAsync:async function(M,I,m,w,z,p){var D;U.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let y=m,C=w,v=z.scale;y>this.maxScreenshotWidth&&(v=this.maxScreenshotWidth/y*v,y=this.maxScreenshotWidth),C>this.maxScreenshotHeight&&(v=Math.min(this.maxScreenshotHeight/C*v,v),C=this.maxScreenshotHeight),z.scale=v;const T=document.createElement("canvas"),S=T.getContext("2d");T.width=y*(p||1),T.height=C*(p||1),S&&((e.mainView||i).screenshotToCanvas(S,I,y,C,z,p),M.drawImage(T,Math.floor((m-y)/2),Math.floor((w-C)/2),y*(p||1),C*(p||1),0,0,y,C),T.remove()),U.currentManager&&await((D=U.currentManager)==null?void 0:D.screenshotToCanvas(M,I,y,C,z,Math.floor((m-y)/2),Math.floor((w-C)/2)))},scenePreviewAsync:async function(M,I,m,w,z){U.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||i).scenePreview(M,I,m,w,z);const p=document.createElement("img");p.className="appliance-plugin-fill-scene-snapshot-img",I.append(p),getComputedStyle(I).position||(I.style.position="relative"),U.currentManager&&await U.currentManager.scenePreview(M,p)},fillSceneSnapshotAsync:async function(M,I,m,w,z){U.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),I.innerHTML="",(e.mainView||i).fillSceneSnapshot(M,I,m,w,z);const p=m||e.mainView.size.width,y=w||e.mainView.size.height;let C=await this.getBoundingRectAsync(M);C||(C={originX:0,originY:0,width:p,height:y});let v=Math.max(C==null?void 0:C.width,p),T=Math.max(C==null?void 0:C.height,y),S=1;const D=v>p&&Math.min(p/v,S)||S,R=T>y&&Math.min(y/T,S)||S;D<=R?(v=D<1&&p||v,T=Math.floor(T*D)+1,S=D):D>R&&(T=R<1&&y||T,v=Math.floor(v*R)+1,S=R);const W={scale:S,centerX:C.originX+C.width/2,centerY:C.originY+C.height/2},b=document.createElement("canvas"),A=b.getContext("2d");b.width=v,b.height=T,A&&await this.screenshotToCanvasAsync(A,M,v,T,W,devicePixelRatio);const x=document.createElement("img");x.className="appliance-plugin-fill-scene-snapshot-img",x.src=b.toDataURL(),x.onload=()=>{b.remove()},x.onerror=()=>{b.remove(),x.remove()},I.append(x),getComputedStyle(I).position||(I.style.position="relative")},_callbacksOn:function(M,I){U.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?yt.InternalMsgEmitter.on(M,I):r.call(i.callbacks,M,I)},_callbacksOnce:function(M,I){U.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?yt.InternalMsgEmitter.on(M,I):a.call(i.callbacks,M,I)},_callbacksOff:function(M,I){U.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&X.isRoom(i)&&i.isWritable?yt.InternalMsgEmitter.off(M,I):s.call(i.callbacks,M,I)},undo:function(){return U.logger.info("[ApplianceMultiPlugin] undo"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization?U.currentManager.viewContainerManager.undo():0},redo:function(){return U.logger.info("[ApplianceMultiPlugin] redo"),U.currentManager&&X.isRoom(i)&&!i.disableSerialization?U.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){U.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),U.currentManager&&X.isRoom(i)&&i.isWritable&&(U.currentManager.cleanCurrentScene(),l.call(e))},insertImage:function(M){U.logger.info("[ApplianceMultiPlugin] insertImage"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.insertImage(M)},lockImage:function(M,I){U.logger.info("[ApplianceMultiPlugin] lockImage"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.lockImage(M,I)},completeImageUpload:function(M,I){U.logger.info("[ApplianceMultiPlugin] completeImageUpload"),U.currentManager&&X.isRoom(i)&&i.isWritable&&U.currentManager.worker.completeImageUpload(M,I)},getImagesInformation:function(M){return U.logger.info("[ApplianceMultiPlugin] completeImageUpload"),U.currentManager&&X.isRoom(i)&&i.isWritable?U.currentManager.worker.getImagesInformation(M):[]},callbacks:()=>(U.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...i.callbacks,on:h._callbacksOn.bind(h),once:h._callbacksOnce.bind(h),off:h._callbacksOff.bind(h)}),destroy(){U.currentManager&&(U.logger.info("[ApplianceMultiPlugin] destroy"),U.currentManager.destroy(),U.currentManager=void 0)},setMemberState(M){U.logger.info("[ApplianceMultiPlugin] setMemberState"),Object.keys(M).includes("currentApplianceName")&&(M.currentApplianceName&&M.currentApplianceName===J.laserPen?(M.currentApplianceName=J.pencil,M.useLaserPen=!0):M.currentApplianceName&&M.currentApplianceName===J.pencil&&(M.useLaserPen=!1)),c.call(e.mainView,M)}},g=(M,I)=>{if(U.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${I}`),typeof M[I]=="function"||typeof M[I]>"u"){M[I]=h[I];return}I==="callbacks"&&(M.callbacks.on=h._callbacksOn.bind(h),M.callbacks.off=h._callbacksOff.bind(h),M.callbacks.once=h._callbacksOnce.bind(h))};return g(e,"undo"),g(e,"redo"),g(e,"cleanCurrentScene"),g(e,"insertImage"),g(e,"completeImageUpload"),g(e,"lockImage"),g(i,"getImagesInformation"),g(i,"callbacks"),g(i,"screenshotToCanvasAsync"),g(i,"getBoundingRectAsync"),g(i,"scenePreviewAsync"),g(i,"fillSceneSnapshotAsync"),g(e.mainView,"setMemberState"),{...h,callbacks:h.callbacks()}}static onCreate(e){e&&U.currentManager&&(U.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,o){await e.createInvisiblePlugin(U,{});let i=e.getInvisiblePlugin(o);return i||(i=await U.createApplianceMultiPlugin(e,o)),i}get isReplay(){return X.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var o,i;if(X.isRoom(e)){const r=e.state;(o=U.currentManager)==null||o.onMemberChange(r.memberState),(i=U.currentManager)==null||i.onRoomMembersChange(r.roomMembers)}this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;U.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=U.currentManager)==null||e.destroy(),U.currentManager=void 0}};f(U,"kind","appliance-multi-plugin"),f(U,"currentManager"),f(U,"logger",{info:console.log,warn:console.warn,error:console.error}),f(U,"options",Pe),f(U,"createCurrentManager",(e,o,i)=>{if(U.currentManager&&U.currentManager.destroy(),o&&e){const r={plugin:i,displayer:e.displayer,options:o},s=new yt(r);U.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),U.currentManager=s}});let Jt=U;class jp extends ki{constructor(e,o){super(e,o);f(this,"width",1e3);f(this,"height",1e3);f(this,"dpr",1);f(this,"vDom");f(this,"viewId",ge);f(this,"eventTragetElement");f(this,"snapshotContainerRef");f(this,"canvasContainerRef",d.createRef());f(this,"canvasTopRef",d.createRef());f(this,"canvasServiceFloatRef",d.createRef());f(this,"canvasFloatRef",d.createRef());f(this,"canvasBgRef",d.createRef());f(this,"floatBarRef",d.createRef());f(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=d.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,o=this.eventTragetElement.offsetHeight;e&&o&&this.canvasContainerRef.current&&(e!==this.width||o!==this.height)&&(this.dpr=Oe()),e&&o&&this.canvasContainerRef.current&&(e!==this.width||o!==this.height)&&(this.dpr=Oe(),this.width=e,this.height=o),e&&o&&this.canvasBgRef.current&&(e!==this.width||o!==this.height)&&(this.dpr=Oe(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=o,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=o*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=o*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=o*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=o*this.dpr))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",_t.render(d.createElement(ho,{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}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Ae extends Ge{constructor(e){super(e);f(this,"focuedViewId");f(this,"control");f(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new jp(this.control,Me.InternalMsgEmitter);this.focuedViewId=ge;const{width:o,height:i,dpr:r}=e,s={dpr:r,originalPoint:[o/2,i/2],offscreenCanvasOpt:{...Ae.defaultScreenCanvasOpt,width:o,height:i},layerOpt:{...Ae.defaultLayerOpt,width:o,height:i},cameraOpt:{...Ae.defaultCameraOpt,width:o,height:i}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:l,...c}=a.camera;s.cameraOpt={...s.cameraOpt,...c,scale:l===1/0?1:l},this.createMianView({id:ge,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:s.cameraOpt,viewData:a}),this.focuedView=this.mainView,e.createMainViewDisplayer(this.control.divMainView)}}async mountView(e){var i;const o=this.getView(e);if(o){const{width:r,height:s,dpr:a}=o.displayer,l={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Ae.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Ae.defaultLayerOpt,width:r,height:s},cameraOpt:{...Ae.defaultCameraOpt,width:r,height:s}};if(o.viewData){const{scale:c,...u}=o.viewData.camera;l.cameraOpt={...l.cameraOpt,...u,scale:c===1/0?1:c}}this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.activeWorker()),(i=this.control.worker)==null||i.createViewWorker(e,l),o.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,o.focusScenePath,{isAsync:!0,useAnimation:!1})}}}class Ee extends Me{constructor(e){super(e);f(this,"viewContainerManager");f(this,"divMainView");f(this,"onCameraChange",ct(e=>{var i;const o=this.viewContainerManager.mainView;o&&o.cameraOpt&&(o.cameraOpt.width!==e.width||o.cameraOpt.height!==e.height)&&((i=this.viewContainerManager.mainView)==null||i.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},20,{leading:!1}));const o={control:this,internalMsgEmitter:Ee.InternalMsgEmitter};this.viewContainerManager=new Ae(o)}init(){Ee.InternalMsgEmitter.on(Q.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,l;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){(l=this.worker)==null||l.clearViewScenePath(ge,!0);return}const{diffView:o,diffScenePath:i,diffData:r}=e,s=new Map;if(o){let c;Object.keys(o).forEach(u=>{var g;const h=o[u];if(h&&!h.newValue)(g=this.worker)==null||g.clearViewScenePath(u,!0),h.oldValue&&(c=h.oldValue);else if(h&&h.newValue){for(const M of Object.keys(h.newValue))this.worker.pullServiceData(u,M,{isAsync:!1,useAnimation:!0});c=h.newValue}if(c)for(const M of Object.values(c)){const I=new Set;for(const m of Object.keys(M))m&&I.add(m);s.set(u,I)}})}if(i){let c;Object.keys(i).forEach(u=>{var g;const h=i[u];if(h&&h.viewId&&!h.newValue?((g=this.worker)==null||g.clearViewScenePath(h.viewId,!0),h.oldValue&&(c=h.oldValue)):h&&h.viewId&&h.newValue&&(this.worker.pullServiceData(h.viewId,u,{isAsync:!1,useAnimation:!0}),c=h.newValue),h!=null&&h.viewId&&c){const M=new Set;for(const I of Object.keys(c))I&&M.add(I),s.set(h.viewId,M)}})}r&&Object.keys(r).forEach(c=>{var h;const u=r[c];if(u){const{viewId:g}=u,M=s.get(g)||new Set;M.add(c),s.set(g,M),(h=this.worker)==null||h.onServiceDerive(c,u)}});for(const[c,u]of s.entries())Me.InternalMsgEmitter.emit("excludeIds",[...u],c)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var o,i,r,s;if((o=this.collector)!=null&&o.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(l=>{var c,u,h;if(l&&l.focusScenePath&&((c=this.collector)!=null&&c.serviceStorage[l.id])&&((u=this.collector)!=null&&u.serviceStorage[l.id][l.focusScenePath])){const g=Object.keys((h=this.collector)==null?void 0:h.serviceStorage[l.id][l.focusScenePath]).filter(M=>{var I;return(I=this.collector)==null?void 0:I.isSelector(M)}).map(M=>({viewId:l.id,scenePath:l.focusScenePath,key:M}));g.length&&a.push(...g)}}),a.forEach(({key:l,viewId:c,scenePath:u})=>{var g,M;const h=(g=this.collector)==null?void 0:g.getUidFromKey(l);h&&!e.online.includes(h)&&((M=this.collector)==null||M.updateValue(l,void 0,{isAfterUpdate:!0,viewId:c,scenePath:u}))})}(r=(i=this.cursor)==null?void 0:i.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(l=>{var c,u;e.online.includes(l)||(u=(c=this.cursor)==null?void 0:c.eventCollector)==null||u.clearValue(l)})}),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 P=class P extends X.InvisiblePlugin{constructor(){super(...arguments);f(this,"onPhaseChanged",e=>{var o;e===X.RoomPhase.Reconnecting&&((o=P.currentManager)==null||o.setSnapshootData())});f(this,"updateRoomWritable",()=>{var e;(e=P.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});f(this,"roomStateChangeListener",async e=>{var o,i;P.currentManager instanceof Ee&&(e.cameraState&&P.currentManager.onCameraChange(e.cameraState),e.sceneState&&P.currentManager.onSceneChange(e.sceneState.scenePath,ge)),!(X.isRoom(this.displayer)&&!this.displayer.isWritable)&&(e.memberState&&((o=P.currentManager)==null||o.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((i=P.currentManager)==null||i.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,o){const i=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene.bind(e),l=e.setMemberState.bind(e);o!=null&&o.logger&&(P.logger=o.logger),o.options&&(P.options={...Pe,...o.options});let c=e.getInvisiblePlugin(P.kind);e&&c&&P.createCurrentManager(e,P.options,c),!c&&X.isRoom(e)&&(c=await P.createAppliancePlugin(e,P.kind)),c&&P.currentManager&&(P.currentManager.bindPlugin(c),c.init(e)),o!=null&&o.cursorAdapter&&(P.cursorAdapter=o.cursorAdapter),P.effectInstance();const u={displayer:e,currentManager:P.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var m;P.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const M=e.getBoundingRect(g),I=await((m=P.currentManager)==null?void 0:m.getBoundingRect(g));return!M.width||!M.height?I:zi(M,I)},screenshotToCanvasAsync:async function(g,M,I,m,w,z){var S;P.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let p=I,y=m,C=w.scale;p>this.maxScreenshotWidth&&(C=this.maxScreenshotWidth/p*C,p=this.maxScreenshotWidth),y>this.maxScreenshotHeight&&(C=Math.min(this.maxScreenshotHeight/y*C,C),y=this.maxScreenshotHeight),w.scale=C;const v=document.createElement("canvas"),T=v.getContext("2d");v.width=p*(z||1),v.height=y*(z||1),T&&(e.screenshotToCanvas(T,M,p,y,w,z),g.drawImage(v,Math.floor((I-p)/2),Math.floor((m-y)/2),p*(z||1),y*(z||1),0,0,p,y),v.remove()),P.currentManager&&await((S=P.currentManager)==null?void 0:S.screenshotToCanvas(g,M,p,y,w,Math.floor((I-p)/2),Math.floor((m-y)/2)))},scenePreviewAsync:async function(g,M,I,m,w){P.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(g,M,I,m,w);const z=document.createElement("img");z.className="appliance-plugin-fill-scene-snapshot-img",M.append(z),getComputedStyle(M).position||(M.style.position="relative"),P.currentManager&&await P.currentManager.scenePreview(g,z)},fillSceneSnapshotAsync:async function(g,M,I,m,w){var x,ee;P.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),M.innerHTML="",e.fillSceneSnapshot(g,M,I,m,w);const z=I||((x=e.state.cameraState)==null?void 0:x.width)||0,p=m||((ee=e.state.cameraState)==null?void 0:ee.height)||0;let y=await this.getBoundingRectAsync(g);y||(y={originX:0,originY:0,width:z,height:p});let C=Math.max(y==null?void 0:y.width,z),v=Math.max(y==null?void 0:y.height,p),T=1;const S=C>z&&Math.min(z/C,T)||T,D=v>p&&Math.min(p/v,T)||T;S<=D?(C=S<1&&z||C,v=Math.floor(v*S)+1,T=S):S>D&&(v=D<1&&p||v,C=Math.floor(C*D)+1,T=D);const R={scale:T,centerX:y.originX+y.width/2,centerY:y.originY+y.height/2},W=document.createElement("canvas"),b=W.getContext("2d");W.width=C,W.height=v,b&&await this.screenshotToCanvasAsync(b,g,C,v,R,devicePixelRatio);const A=document.createElement("img");A.className="appliance-plugin-fill-scene-snapshot-img",A.src=W.toDataURL(),A.onload=()=>{W.remove()},A.onerror=()=>{W.remove(),A.remove()},M.append(A),getComputedStyle(M).position||(M.style.position="relative")},_callbacksOn:function(g,M){P.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Ee.InternalMsgEmitter.on(g,M):i.call(e.callbacks,g,M)},_callbacksOnce:function(g,M){P.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Ee.InternalMsgEmitter.on(g,M):s.call(e.callbacks,g,M)},_callbacksOff:function(g,M){P.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&X.isRoom(e)&&e.isWritable?Ee.InternalMsgEmitter.off(g,M):r.call(e.callbacks,g,M)},undo:function(){return P.logger.info("[ApplianceSinglePlugin] undo"),P.currentManager&&X.isRoom(e)&&!e.disableSerialization?P.currentManager.viewContainerManager.undo():0},redo:function(){return P.logger.info("[ApplianceSinglePlugin] redo"),P.currentManager&&X.isRoom(e)&&!e.disableSerialization?P.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(g){P.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),P.currentManager&&X.isRoom(e)&&e.isWritable&&(P.currentManager.cleanCurrentScene(),a.call(e,g))},insertImage:function(g){P.logger.info("[ApplianceSinglePlugin] insertImage"),P.currentManager&&X.isRoom(e)&&e.isWritable&&P.currentManager.worker.insertImage(g)},lockImage:function(g,M){P.logger.info("[ApplianceSinglePlugin] lockImage"),P.currentManager&&X.isRoom(e)&&e.isWritable&&P.currentManager.worker.lockImage(g,M)},completeImageUpload:function(g,M){P.logger.info("[ApplianceSinglePlugin] completeImageUpload"),P.currentManager&&X.isRoom(e)&&e.isWritable&&P.currentManager.worker.completeImageUpload(g,M)},getImagesInformation:function(g){return P.logger.info("[ApplianceSinglePlugin] completeImageUpload"),P.currentManager&&X.isRoom(e)&&e.isWritable?P.currentManager.worker.getImagesInformation(g):[]},callbacks:()=>({...e.callbacks,on:u._callbacksOn.bind(u),once:u._callbacksOnce.bind(u),off:u._callbacksOff.bind(u)}),destroy(){P.currentManager&&(P.logger.info("[ApplianceSinglePlugin] destroy"),P.currentManager.destroy(),P.currentManager=void 0,P.cursorAdapter=void 0)},setMemberState(g){P.logger.info("[ApplianceSinglePlugin] setMemberState"),Object.keys(g).includes("currentApplianceName")&&(g.currentApplianceName&&g.currentApplianceName===J.laserPen?(g.currentApplianceName=J.pencil,g.useLaserPen=!0):g.currentApplianceName&&g.currentApplianceName===J.pencil&&(g.useLaserPen=!1)),l(g)}},h=(g,M)=>{if(P.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${M}`),typeof g[M]=="function"||typeof g[M]>"u"){g[M]=u[M];return}M==="callbacks"&&(g.callbacks.on=u._callbacksOn.bind(u),g.callbacks.off=u._callbacksOff.bind(u),g.callbacks.once=u._callbacksOnce.bind(u))};return h(e,"undo"),h(e,"redo"),h(e,"cleanCurrentScene"),h(e,"insertImage"),h(e,"completeImageUpload"),h(e,"lockImage"),h(e,"getImagesInformation"),h(e,"callbacks"),h(e,"screenshotToCanvasAsync"),h(e,"getBoundingRectAsync"),h(e,"scenePreviewAsync"),h(e,"fillSceneSnapshotAsync"),h(e,"setMemberState"),{...u,callbacks:u.callbacks()}}static onCreate(e){e&&P.currentManager&&(P.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,o){await e.createInvisiblePlugin(P,{});let i=e.getInvisiblePlugin(o);return i||(i=await P.createAppliancePlugin(e,o)),i}static effectInstance(){if(P.cursorAdapter){const e=P.cursorAdapter.onAddedCursor;P.cursorAdapter.onAddedCursor=function(o){o.onCursorMemberChanged=i=>{try{i.appliance===J.pencil||i.appliance===J.shape||i.appliance===J.text||i.appliance===J.arrow||i.appliance===J.straight||i.appliance===J.rectangle||i.appliance===J.ellipse?o!=null&&o.divElement&&(o.divElement.style.display="none"):o!=null&&o.divElement&&(o.divElement.style.display="block")}catch{}},e.call(P.cursorAdapter,o)}}}get isReplay(){return X.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var o,i;if(X.isRoom(e)){const r=e.state;r!=null&&r.memberState&&((o=P.currentManager)==null||o.onMemberChange(r.memberState),(i=P.currentManager)==null||i.onRoomMembersChange(r.roomMembers))}this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;P.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=P.currentManager)==null||e.destroy(),P.currentManager=void 0,P.cursorAdapter=void 0}};f(P,"kind","appliance-aids-single-plugin"),f(P,"cursorAdapter"),f(P,"currentManager"),f(P,"logger",{info:console.log,warn:console.warn,error:console.error}),f(P,"options",Pe),f(P,"createCurrentManager",(e,o,i)=>{P.currentManager&&P.currentManager.destroy();const r={plugin:i,displayer:e,options:o},s=new Ee(r);s.init(),P.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),P.currentManager=s});let qt=P;const Be=class Be extends d.Component{constructor(){super(...arguments);f(this,"mainViewRef",null)}componentDidMount(){Be.emiter||(Be.emiter=Ee.InternalMsgEmitter),Be.emiter.emit(Q.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}))}};f(Be,"emiter");let Kt=Be;exports.ActiveContainerType=Go;exports.ApplianceMultiPlugin=Jt;exports.ApplianceNames=J;exports.ApplianceSigleWrapper=Kt;exports.ApplianceSinglePlugin=qt;exports.Cursor_Hover_Id=fg;exports.DefaultAppliancePluginOptions=Pe;exports.ECanvasContextType=zt;exports.ECanvasShowType=ke;exports.EDataType=G;exports.EMatrixrRelationType=rt;exports.EPostMessageType=O;exports.EScaleType=Ie;exports.EStrokeType=le;exports.EToolsKey=N;exports.ElayerType=He;exports.EmitEventType=L;exports.EventMessageType=st;exports.EvevtWorkState=j;exports.EvevtWorkType=Jo;exports.InternalMsgEmitterType=Q;exports.Main_View_Id=ge;exports.Point2d=ae;exports.ShapeType=ze;exports.Storage_Selector_key=Y;exports.Storage_Splitter=De;exports.Storage_ViewId_ALL=Ti;exports.Task_Time_Interval=yg;exports.Vec2d=E;exports.ViewContainerManager=Ge;exports._Stack=ti;exports._baseGetTag=Ke;exports._equalArrays=Ci;exports._equalByTag=eg;exports._getAllKeys=pi;exports._getTag=Et;exports.average=hg;exports.checkOp=lg;exports.cloneDeep=lt;exports.computRect=tg;exports.fullWorker=Pi;exports.getDefaultExportFromCjs=Xt;exports.getRectFromPoints=ji;exports.getRectMatrixrRelation=dg;exports.getRectRotated=sg;exports.getRectTranslated=ig;exports.getWHRatio=cg;exports.isArray_1=bt;exports.isBufferExports=oo;exports.isIntersect=og;exports.isIntersectForPoint=Si;exports.isObjectLike_1=Qe;exports.isTypedArray_1=ri;exports.precise=ug;exports.rotatePoints=rg;exports.scalePoints=ag;exports.strlen=gg;exports.subWorker=Yi;exports.throttle=ct;exports.transformToNormalData=ut;exports.transformToSerializableData=uo;
|