@netless/appliance-plugin 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -5
- package/cdn/cdn.js +1 -1
- package/cdn/fullWorker-uIttd_.js +437 -0
- package/cdn/subWorker-4wkCzC.js +437 -0
- package/dist/appliance-plugin.js +1 -1
- package/dist/appliance-plugin.mjs +5 -5
- package/dist/core/msgEvent/scaleNode/forMain.d.ts +6 -6
- package/dist/core/msgEvent/translateNode/forMain.d.ts +0 -1
- package/dist/core/tools/selector.d.ts +0 -1
- package/dist/core/tools/utils.d.ts +1 -1
- package/dist/core/types.d.ts +0 -2
- package/dist/core/utils/math.d.ts +8 -2
- package/dist/core/vNodeManager.d.ts +1 -0
- package/dist/displayer/floatBtns/del.d.ts +1 -1
- package/dist/displayer/floatBtns/lock.d.ts +1 -1
- package/dist/fullWorker.js +152 -153
- package/dist/index-BdHH_zhp.js +1 -0
- package/dist/{index-DmkMw23K.mjs → index-RCWmSJU4.mjs} +2663 -2548
- package/dist/{index-CeTiLZdq.mjs → index-RcUgPE7z.mjs} +1405 -1454
- package/dist/index-a-uKt6aD.js +1 -0
- package/dist/plugin/displayerView.d.ts +2 -2
- package/dist/subWorker.js +152 -153
- package/package.json +1 -1
- package/cdn/fullWorker-6Cu08P.js +0 -438
- package/cdn/subWorker-B3CHpe.js +0 -438
- package/dist/index-DHkeFixk.js +0 -1
- package/dist/index-Dmq7rqSP.js +0 -1
package/dist/index-Dmq7rqSP.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var Zo=Object.defineProperty;var Go=(o,t,e)=>t in o?Zo(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var f=(o,t,e)=>(Go(o,typeof t!="symbol"?t+"":t,e),e);const K=require("white-web-sdk");require("spritejs");const no=require("lz-string");require("lineclip");const so=require("eventemitter2"),S=require("lodash"),oi=require("react-dom"),u=require("react"),at=require("react-draggable"),Jo=require("re-resizable"),qo="/fullWorker.js",Ko="/subWorker.js";var Z=(o=>(o.selector="selector",o.clicker="clicker",o.laserPointer="laserPointer",o.pencil="pencil",o.rectangle="rectangle",o.ellipse="ellipse",o.shape="shape",o.eraser="eraser",o.pencilEraser="pencilEraser",o.text="text",o.straight="straight",o.arrow="arrow",o.hand="hand",o.laserPen="laserPen",o))(Z||{}),vt=(o=>(o.Normal="Normal",o.Stroke="Stroke",o.Dotted="Dotted",o.LongDotted="LongDotted",o))(vt||{}),Te=(o=>(o.Triangle="triangle",o.Rhombus="rhombus",o.Pentagram="pentagram",o.SpeechBalloon="speechBalloon",o.Star="star",o.Polygon="polygon",o))(Te||{}),x=(o=>(o.None="None",o.ShowFloatBar="ShowFloatBar",o.ZIndexFloatBar="ZIndexFloatBar",o.DeleteNode="DeleteNode",o.CopyNode="CopyNode",o.ZIndexActive="ZIndexActive",o.ZIndexNode="ZIndexNode",o.RotateNode="RotateNode",o.SetColorNode="SetColorNode",o.TranslateNode="TranslateNode",o.ScaleNode="ScaleNode",o.OriginalEvent="OriginalEvent",o.CreateScene="CreateScene",o.ActiveCursor="ActiveCursor",o.MoveCursor="MoveCursor",o.CommandEditor="CommandEditor",o.SetEditorData="SetEditorData",o.SetFontStyle="SetFontStyle",o.SetPoint="SetPoint",o.SetLock="SetLock",o.SetShapeOpt="SetShapeOpt",o.CameraChange="CameraChange",o.ActiveMethod="ActiveMethod",o))(x||{}),$=(o=>(o.DisplayState="DisplayState",o.MainEngine="MainEngine",o.Cursor="Cursor",o.BindMainView="BindMainView",o))($||{}),ro=(o=>(o[o.MainView=0]="MainView",o[o.Plugin=1]="Plugin",o[o.Both=2]="Both",o))(ro||{}),C=(o=>(o[o.Pencil=1]="Pencil",o[o.Eraser=2]="Eraser",o[o.Selector=3]="Selector",o[o.Clicker=4]="Clicker",o[o.Arrow=5]="Arrow",o[o.Hand=6]="Hand",o[o.LaserPen=7]="LaserPen",o[o.Text=8]="Text",o[o.Straight=9]="Straight",o[o.Rectangle=10]="Rectangle",o[o.Ellipse=11]="Ellipse",o[o.Star=12]="Star",o[o.Triangle=13]="Triangle",o[o.Rhombus=14]="Rhombus",o[o.Polygon=15]="Polygon",o[o.SpeechBalloon=16]="SpeechBalloon",o[o.Image=17]="Image",o))(C||{}),V=(o=>(o[o.Local=1]="Local",o[o.Service=2]="Service",o[o.Worker=3]="Worker",o))(V||{}),j=(o=>(o[o.Pending=0]="Pending",o[o.Start=1]="Start",o[o.Doing=2]="Doing",o[o.Done=3]="Done",o[o.Unwritable=4]="Unwritable",o))(j||{}),D=(o=>(o[o.None=0]="None",o[o.Init=1]="Init",o[o.UpdateCamera=2]="UpdateCamera",o[o.UpdateTools=3]="UpdateTools",o[o.CreateWork=4]="CreateWork",o[o.DrawWork=5]="DrawWork",o[o.FullWork=6]="FullWork",o[o.UpdateNode=7]="UpdateNode",o[o.RemoveNode=8]="RemoveNode",o[o.Clear=9]="Clear",o[o.Select=10]="Select",o[o.Destroy=11]="Destroy",o[o.Snapshot=12]="Snapshot",o[o.BoundingBox=13]="BoundingBox",o[o.Cursor=14]="Cursor",o[o.TextUpdate=15]="TextUpdate",o[o.GetTextActive=16]="GetTextActive",o[o.TasksQueue=17]="TasksQueue",o[o.CursorHover=18]="CursorHover",o[o.CursorBlur=19]="CursorBlur",o[o.Console=20]="Console",o))(D||{}),St=(o=>(o.Webgl2="webgl2",o.Webgl="webgl",o.Canvas2d="2d",o))(St||{}),Se=(o=>(o[o.None=0]="None",o[o.Bg=1]="Bg",o[o.ServiceFloat=2]="ServiceFloat",o[o.Float=3]="Float",o[o.TopFloat=4]="TopFloat",o))(Se||{}),ot=(o=>(o[o.Cursor=1]="Cursor",o[o.TextCreate=2]="TextCreate",o))(ot||{}),$e=(o=>(o[o.Top=1]="Top",o[o.Bottom=2]="Bottom",o))($e||{}),pe=(o=>(o[o.none=1]="none",o[o.all=2]="all",o[o.both=3]="both",o[o.proportional=4]="proportional",o))(pe||{}),ao=(o=>(o[o.Pending=0]="Pending",o[o.Start=1]="Start",o[o.Doing=2]="Doing",o[o.Done=3]="Done",o[o.Unwritable=4]="Unwritable",o))(ao||{}),nt=(o=>(o[o.inside=0]="inside",o[o.outside=1]="outside",o[o.intersect=2]="intersect",o))(nt||{});const _o={linear:o=>o,easeInQuad:o=>o*o,easeOutQuad:o=>o*(2-o),easeInOutQuad:o=>o<.5?2*o*o:-1+(4-2*o)*o,easeInCubic:o=>o*o*o,easeOutCubic:o=>--o*o*o+1,easeInOutCubic:o=>o<.5?4*o*o*o:(o-1)*(2*o-2)*(2*o-2)+1,easeInQuart:o=>o*o*o*o,easeOutQuart:o=>1- --o*o*o*o,easeInOutQuart:o=>o<.5?8*o*o*o*o:1-8*--o*o*o*o,easeInQuint:o=>o*o*o*o*o,easeOutQuint:o=>1+--o*o*o*o*o,easeInOutQuint:o=>o<.5?16*o*o*o*o*o:1+16*--o*o*o*o*o,easeInSine:o=>1-Math.cos(o*Math.PI/2),easeOutSine:o=>Math.sin(o*Math.PI/2),easeInOutSine:o=>-(Math.cos(Math.PI*o)-1)/2,easeInExpo:o=>o<=0?0:Math.pow(2,10*o-10),easeOutExpo:o=>o>=1?1:1-Math.pow(2,-10*o),easeInOutExpo:o=>o<=0?0:o>=1?1:o<.5?Math.pow(2,20*o-10)/2:(2-Math.pow(2,-20*o+10))/2};class k{constructor(t=0,e=0,i=1){this.x=t,this.y=e,this.z=i}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,i=this.z){return this.x=t,this.y=e,this.z=i,this}setTo({x:t=0,y:e=0,z:i=1}){return this.x=t,this.y=e,this.z=i,this}rot(t){if(t===0)return this;const{x:e,y:i}=this,n=Math.sin(t),r=Math.cos(t);return this.x=e*r-i*n,this.y=e*n+i*r,this}rotWith(t,e){if(e===0)return this;const i=this.x-t.x,n=this.y-t.y,r=Math.sin(e),s=Math.cos(e);return this.x=t.x+(i*s-n*r),this.y=t.y+(i*r+n*s),this}clone(){const{x:t,y:e,z:i}=this;return new k(t,e,i)}sub(t){return this.x-=t.x,this.y-=t.y,this}subXY(t,e){return this.x-=t,this.y-=e,this}subScalar(t){return this.x-=t,this.y-=t,this}add(t){return this.x+=t.x,this.y+=t.y,this}addXY(t,e){return this.x+=t,this.y+=e,this}addScalar(t){return this.x+=t,this.y+=t,this}clamp(t,e){return this.x=Math.max(this.x,t),this.y=Math.max(this.y,t),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(t){return this.x/=t,this.y/=t,this}divV(t){return this.x/=t.x,this.y/=t.y,this}mul(t){return this.x*=t,this.y*=t,this}mulV(t){return this.x*=t.x,this.y*=t.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(t,e){const i=k.Tan(t,this);return this.add(i.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(t){return this.x=this.y*t.z-this.z*t.y,this.y=this.z*t.x-this.x*t.z,this}dpr(t){return k.Dpr(this,t)}cpr(t){return k.Cpr(this,t)}len2(){return k.Len2(this)}len(){return k.Len(this)}pry(t){return k.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return k.Uni(this)}tan(t){return k.Tan(this,t)}dist(t){return k.Dist(this,t)}distanceToLineSegment(t,e){return k.DistanceToLineSegment(t,e,this)}slope(t){return k.Slope(this,t)}snapToGrid(t){return this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this}angle(t){return k.Angle(this,t)}toAngle(){return k.ToAngle(this)}lrp(t,e){return this.x=this.x+(t.x-this.x)*e,this.y=this.y+(t.y-this.y)*e,this}equals(t,e){return k.Equals(this,t,e)}equalsXY(t,e){return k.EqualsXY(this,t,e)}norm(){const t=this.len();return this.x=t===0?0:this.x/t,this.y=t===0?0:this.y/t,this}toFixed(){return k.ToFixed(this)}toString(){return k.ToString(k.ToFixed(this))}toJson(){return k.ToJson(this)}toArray(){return k.ToArray(this)}static Add(t,e){return new k(t.x+e.x,t.y+e.y)}static AddXY(t,e,i){return new k(t.x+e,t.y+i)}static Sub(t,e){return new k(t.x-e.x,t.y-e.y)}static SubXY(t,e,i){return new k(t.x-e,t.y-i)}static AddScalar(t,e){return new k(t.x+e,t.y+e)}static SubScalar(t,e){return new k(t.x-e,t.y-e)}static Div(t,e){return new k(t.x/e,t.y/e)}static Mul(t,e){return new k(t.x*e,t.y*e)}static DivV(t,e){return new k(t.x/e.x,t.y/e.y)}static MulV(t,e){return new k(t.x*e.x,t.y*e.y)}static Neg(t){return new k(-t.x,-t.y)}static Per(t){return new k(t.y,-t.x)}static Dist2(t,e){return k.Sub(t,e).len2()}static Abs(t){return new k(Math.abs(t.x),Math.abs(t.y))}static Dist(t,e){return Math.hypot(t.y-e.y,t.x-e.x)}static Dpr(t,e){return t.x*e.x+t.y*e.y}static Cross(t,e){return new k(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z)}static Cpr(t,e){return t.x*e.y-e.x*t.y}static Len2(t){return t.x*t.x+t.y*t.y}static Len(t){return Math.hypot(t.x,t.y)}static Pry(t,e){return k.Dpr(t,e)/k.Len(e)}static Uni(t){return k.Div(t,k.Len(t))}static Tan(t,e){return k.Uni(k.Sub(t,e))}static Min(t,e){return new k(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new k(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new k().add(t)}static FromArray(t){return new k(t[0],t[1])}static Rot(t,e=0){const i=Math.sin(e),n=Math.cos(e);return new k(t.x*n-t.y*i,t.x*i+t.y*n)}static RotWith(t,e,i){const n=t.x-e.x,r=t.y-e.y,s=Math.sin(i),a=Math.cos(i);return new k(e.x+(n*a-r*s),e.y+(n*s+r*a))}static NearestPointOnLineThroughPoint(t,e,i){return k.Mul(e,k.Sub(i,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,i,n=!0){const r=k.Tan(e,t),s=k.Add(t,k.Mul(r,k.Sub(i,t).pry(r)));if(n){if(s.x<Math.min(t.x,e.x))return k.Cast(t.x<e.x?t:e);if(s.x>Math.max(t.x,e.x))return k.Cast(t.x>e.x?t:e);if(s.y<Math.min(t.y,e.y))return k.Cast(t.y<e.y?t:e);if(s.y>Math.max(t.y,e.y))return k.Cast(t.y>e.y?t:e)}return s}static DistanceToLineThroughPoint(t,e,i){return k.Dist(i,k.NearestPointOnLineThroughPoint(t,e,i))}static DistanceToLineSegment(t,e,i,n=!0){return k.Dist(i,k.NearestPointOnLineSegment(t,e,i,n))}static Snap(t,e=1){return new k(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof k?t:k.From(t)}static Slope(t,e){return t.x===e.y?NaN:(t.y-e.y)/(t.x-e.x)}static Angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static Lrp(t,e,i){return k.Sub(e,t).mul(i).add(t)}static Med(t,e){return new k((t.x+e.x)/2,(t.y+e.y)/2)}static Equals(t,e,i=1e-4){return Math.abs(t.x-e.x)<i&&Math.abs(t.y-e.y)<i}static EqualsXY(t,e,i){return t.x===e&&t.y===i}static EqualsXYZ(t,e,i=1e-4){return k.Equals(t,e,i)&&Math.abs((t.z||0)-(e.z||0))<i}static Clockwise(t,e,i){return(i.x-t.x)*(e.y-t.y)-(e.x-t.x)*(i.y-t.y)<0}static Rescale(t,e){const i=k.Len(t);return new k(e*t.x/i,e*t.y/i)}static ScaleWithOrigin(t,e,i){return k.Sub(t,i).mul(e).add(i)}static ScaleWOrigin(t,e,i){return k.Sub(t,i).mulV(e).add(i)}static ToFixed(t,e=2){return new k(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,i){return k.Add(t,k.Tan(e,t).mul(i))}static ToString(t){return`${t.x}, ${t.y}`}static ToAngle(t){let e=Math.atan2(t.y,t.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(t,e=1){return new k(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:i,z:n}=t;return{x:e,y:i,z:n}}static Average(t){const e=t.length,i=new k(0,0);for(let n=0;n<e;n++)i.add(t[n]);return i.div(e)}static Clamp(t,e,i){return i===void 0?new k(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new k(Math.min(Math.max(t.x,e),i),Math.min(Math.max(t.y,e),i))}static PointsBetween(t,e,i=6){const n=[];for(let r=0;r<i;r++){const s=_o.easeInQuad(r/(i-1)),a=k.Lrp(t,e,s);a.z=Math.min(1,.5+Math.abs(.5-Xo(s))*.65),n.push(a)}return n}static SnapToGrid(t,e=8){return new k(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const Xo=o=>o<.5?2*o*o:-1+(4-2*o)*o;class se extends k{constructor(t=0,e=0,i=0,n={x:0,y:0},r=0,s=0){super(t,e,i),this.x=t,this.y=e,this.z=i,this.v=n,this.t=r,this.a=s}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,i=this.z,n=this.v,r=this.t,s=this.a){return this.x=t,this.y=e,this.z=i,this.v=n,this.t=r,this.a=s,this}clone(){const{x:t,y:e,z:i,v:n,t:r,a:s}=this,a={x:n.x,y:n.y};return new se(t,e,i,a,r,s)}distance(t){return se.GetDistance(this,t)}isNear(t,e){return se.IsNear(this,t,e)}getAngleByPoints(t,e){return se.GetAngleByPoints(t,this,e)}static Sub(t,e){return new se(t.x-e.x,t.y-e.y)}static Add(t,e){return new se(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return se.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,i){const n=e.x-t.x,r=i.x-e.x,s=e.y-t.y,a=i.y-e.y;let l=0;const c=Math.sqrt(n*n+s*s),h=Math.sqrt(r*r+a*a);if(c&&h){const d=n*r+s*a;l=Math.acos(d/(c*h)),l=l/Math.PI*180;let g=n*a-s*r;g=g>0?1:-1,l=180+g*l}return l}static IsNear(t,e,i){return se.Len(t.clone().sub(e))<i}static RotWith(t,e,i,n=2){const r=t.x-e.x,s=t.y-e.y,a=Math.sin(i),l=Math.cos(i),c=Math.pow(10,n),h=Math.floor((e.x+(r*l-s*a))*c)/c,d=Math.floor((e.y+(r*a+s*l))*c)/c;return new se(h,d)}static GetDotStroke(t,e,i=16){const n=new k(1,1),r=Math.PI+.001,s=se.Add(t,se.Sub(t,n).uni().per().mul(-e)),a=[];for(let l=1/i,c=l;c<=1;c+=l)a.push(se.RotWith(s,t,r*2*c));return a}static GetSemicircleStroke(t,e,i=-1,n=8){const r=i*(Math.PI+.001),s=[];for(let a=1/n,l=a;l<=1;l+=a)s.push(se.RotWith(e,t,r*l));return s}}var gt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ct(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var en=typeof gt=="object"&>&>.Object===Object&>,co=en,tn=co,on=typeof self=="object"&&self&&self.Object===Object&&self,nn=tn||on||Function("return this")(),je=nn,sn=je,rn=sn.Symbol,xt=rn,yi=xt,lo=Object.prototype,an=lo.hasOwnProperty,cn=lo.toString,it=yi?yi.toStringTag:void 0;function ln(o){var t=an.call(o,it),e=o[it];try{o[it]=void 0;var i=!0}catch{}var n=cn.call(o);return i&&(t?o[it]=e:delete o[it]),n}var un=ln,hn=Object.prototype,dn=hn.toString;function gn(o){return dn.call(o)}var Mn=gn,Ii=xt,fn=un,pn=Mn,yn="[object Null]",In="[object Undefined]",wi=Ii?Ii.toStringTag:void 0;function wn(o){return o==null?o===void 0?In:yn:wi&&wi in Object(o)?fn(o):pn(o)}var Qe=wn;function vn(o){return o!=null&&typeof o=="object"}var Ee=vn;function mn(){this.__data__=[],this.size=0}var Nn=mn;function Tn(o,t){return o===t||o!==o&&t!==t}var ni=Tn,Cn=ni;function zn(o,t){for(var e=o.length;e--;)if(Cn(o[e][0],t))return e;return-1}var kt=zn,jn=kt,Sn=Array.prototype,xn=Sn.splice;function kn(o){var t=this.__data__,e=jn(t,o);if(e<0)return!1;var i=t.length-1;return e==i?t.pop():xn.call(t,e,1),--this.size,!0}var Dn=kn,bn=kt;function Ln(o){var t=this.__data__,e=bn(t,o);return e<0?void 0:t[e][1]}var En=Ln,An=kt;function On(o){return An(this.__data__,o)>-1}var Pn=On,Yn=kt;function Rn(o,t){var e=this.__data__,i=Yn(e,o);return i<0?(++this.size,e.push([o,t])):e[i][1]=t,this}var Wn=Rn,Un=Nn,$n=Dn,Qn=En,Hn=Pn,Bn=Wn;function qe(o){var t=-1,e=o==null?0:o.length;for(this.clear();++t<e;){var i=o[t];this.set(i[0],i[1])}}qe.prototype.clear=Un;qe.prototype.delete=$n;qe.prototype.get=Qn;qe.prototype.has=Hn;qe.prototype.set=Bn;var Dt=qe,Fn=Dt;function Vn(){this.__data__=new Fn,this.size=0}var Zn=Vn;function Gn(o){var t=this.__data__,e=t.delete(o);return this.size=t.size,e}var Jn=Gn;function qn(o){return this.__data__.get(o)}var Kn=qn;function _n(o){return this.__data__.has(o)}var Xn=_n;function es(o){var t=typeof o;return o!=null&&(t=="object"||t=="function")}var Ye=es,ts=Qe,is=Ye,os="[object AsyncFunction]",ns="[object Function]",ss="[object GeneratorFunction]",rs="[object Proxy]";function as(o){if(!is(o))return!1;var t=ts(o);return t==ns||t==ss||t==os||t==rs}var uo=as,cs=je,ls=cs["__core-js_shared__"],us=ls,Ut=us,vi=function(){var o=/[^.]+$/.exec(Ut&&Ut.keys&&Ut.keys.IE_PROTO||"");return o?"Symbol(src)_1."+o:""}();function hs(o){return!!vi&&vi in o}var ds=hs,gs=Function.prototype,Ms=gs.toString;function fs(o){if(o!=null){try{return Ms.call(o)}catch{}try{return o+""}catch{}}return""}var ho=fs,ps=uo,ys=ds,Is=Ye,ws=ho,vs=/[\\^$.*+?()[\]{}|]/g,ms=/^\[object .+?Constructor\]$/,Ns=Function.prototype,Ts=Object.prototype,Cs=Ns.toString,zs=Ts.hasOwnProperty,js=RegExp("^"+Cs.call(zs).replace(vs,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ss(o){if(!Is(o)||ys(o))return!1;var t=ps(o)?js:ms;return t.test(ws(o))}var xs=Ss;function ks(o,t){return o==null?void 0:o[t]}var Ds=ks,bs=xs,Ls=Ds;function Es(o,t){var e=Ls(o,t);return bs(e)?e:void 0}var He=Es,As=He,Os=je,Ps=As(Os,"Map"),si=Ps,Ys=He,Rs=Ys(Object,"create"),bt=Rs,mi=bt;function Ws(){this.__data__=mi?mi(null):{},this.size=0}var Us=Ws;function $s(o){var t=this.has(o)&&delete this.__data__[o];return this.size-=t?1:0,t}var Qs=$s,Hs=bt,Bs="__lodash_hash_undefined__",Fs=Object.prototype,Vs=Fs.hasOwnProperty;function Zs(o){var t=this.__data__;if(Hs){var e=t[o];return e===Bs?void 0:e}return Vs.call(t,o)?t[o]:void 0}var Gs=Zs,Js=bt,qs=Object.prototype,Ks=qs.hasOwnProperty;function _s(o){var t=this.__data__;return Js?t[o]!==void 0:Ks.call(t,o)}var Xs=_s,er=bt,tr="__lodash_hash_undefined__";function ir(o,t){var e=this.__data__;return this.size+=this.has(o)?0:1,e[o]=er&&t===void 0?tr:t,this}var or=ir,nr=Us,sr=Qs,rr=Gs,ar=Xs,cr=or;function Ke(o){var t=-1,e=o==null?0:o.length;for(this.clear();++t<e;){var i=o[t];this.set(i[0],i[1])}}Ke.prototype.clear=nr;Ke.prototype.delete=sr;Ke.prototype.get=rr;Ke.prototype.has=ar;Ke.prototype.set=cr;var lr=Ke,Ni=lr,ur=Dt,hr=si;function dr(){this.size=0,this.__data__={hash:new Ni,map:new(hr||ur),string:new Ni}}var gr=dr;function Mr(o){var t=typeof o;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?o!=="__proto__":o===null}var fr=Mr,pr=fr;function yr(o,t){var e=o.__data__;return pr(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Lt=yr,Ir=Lt;function wr(o){var t=Ir(this,o).delete(o);return this.size-=t?1:0,t}var vr=wr,mr=Lt;function Nr(o){return mr(this,o).get(o)}var Tr=Nr,Cr=Lt;function zr(o){return Cr(this,o).has(o)}var jr=zr,Sr=Lt;function xr(o,t){var e=Sr(this,o),i=e.size;return e.set(o,t),this.size+=e.size==i?0:1,this}var kr=xr,Dr=gr,br=vr,Lr=Tr,Er=jr,Ar=kr;function _e(o){var t=-1,e=o==null?0:o.length;for(this.clear();++t<e;){var i=o[t];this.set(i[0],i[1])}}_e.prototype.clear=Dr;_e.prototype.delete=br;_e.prototype.get=Lr;_e.prototype.has=Er;_e.prototype.set=Ar;var go=_e,Or=Dt,Pr=si,Yr=go,Rr=200;function Wr(o,t){var e=this.__data__;if(e instanceof Or){var i=e.__data__;if(!Pr||i.length<Rr-1)return i.push([o,t]),this.size=++e.size,this;e=this.__data__=new Yr(i)}return e.set(o,t),this.size=e.size,this}var Ur=Wr,$r=Dt,Qr=Zn,Hr=Jn,Br=Kn,Fr=Xn,Vr=Ur;function Xe(o){var t=this.__data__=new $r(o);this.size=t.size}Xe.prototype.clear=Qr;Xe.prototype.delete=Hr;Xe.prototype.get=Br;Xe.prototype.has=Fr;Xe.prototype.set=Vr;var Mo=Xe;function Zr(o,t){for(var e=-1,i=o==null?0:o.length;++e<i&&t(o[e],e,o)!==!1;);return o}var Gr=Zr,Jr=He,qr=function(){try{var o=Jr(Object,"defineProperty");return o({},"",{}),o}catch{}}(),Kr=qr,Ti=Kr;function _r(o,t,e){t=="__proto__"&&Ti?Ti(o,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):o[t]=e}var fo=_r,Xr=fo,ea=ni,ta=Object.prototype,ia=ta.hasOwnProperty;function oa(o,t,e){var i=o[t];(!(ia.call(o,t)&&ea(i,e))||e===void 0&&!(t in o))&&Xr(o,t,e)}var po=oa,na=po,sa=fo;function ra(o,t,e,i){var n=!e;e||(e={});for(var r=-1,s=t.length;++r<s;){var a=t[r],l=i?i(e[a],o[a],a,e,o):void 0;l===void 0&&(l=o[a]),n?sa(e,a,l):na(e,a,l)}return e}var Et=ra;function aa(o,t){for(var e=-1,i=Array(o);++e<o;)i[e]=t(e);return i}var ca=aa,la=Qe,ua=Ee,ha="[object Arguments]";function da(o){return ua(o)&&la(o)==ha}var ga=da,Ci=ga,Ma=Ee,yo=Object.prototype,fa=yo.hasOwnProperty,pa=yo.propertyIsEnumerable,ya=Ci(function(){return arguments}())?Ci:function(o){return Ma(o)&&fa.call(o,"callee")&&!pa.call(o,"callee")},Ia=ya,wa=Array.isArray,At=wa,mt={exports:{}};function va(){return!1}var ma=va;mt.exports;(function(o,t){var e=je,i=ma,n=t&&!t.nodeType&&t,r=n&&!0&&o&&!o.nodeType&&o,s=r&&r.exports===n,a=s?e.Buffer:void 0,l=a?a.isBuffer:void 0,c=l||i;o.exports=c})(mt,mt.exports);var ri=mt.exports,Na=9007199254740991,Ta=/^(?:0|[1-9]\d*)$/;function Ca(o,t){var e=typeof o;return t=t??Na,!!t&&(e=="number"||e!="symbol"&&Ta.test(o))&&o>-1&&o%1==0&&o<t}var za=Ca,ja=9007199254740991;function Sa(o){return typeof o=="number"&&o>-1&&o%1==0&&o<=ja}var Io=Sa,xa=Qe,ka=Io,Da=Ee,ba="[object Arguments]",La="[object Array]",Ea="[object Boolean]",Aa="[object Date]",Oa="[object Error]",Pa="[object Function]",Ya="[object Map]",Ra="[object Number]",Wa="[object Object]",Ua="[object RegExp]",$a="[object Set]",Qa="[object String]",Ha="[object WeakMap]",Ba="[object ArrayBuffer]",Fa="[object DataView]",Va="[object Float32Array]",Za="[object Float64Array]",Ga="[object Int8Array]",Ja="[object Int16Array]",qa="[object Int32Array]",Ka="[object Uint8Array]",_a="[object Uint8ClampedArray]",Xa="[object Uint16Array]",ec="[object Uint32Array]",ne={};ne[Va]=ne[Za]=ne[Ga]=ne[Ja]=ne[qa]=ne[Ka]=ne[_a]=ne[Xa]=ne[ec]=!0;ne[ba]=ne[La]=ne[Ba]=ne[Ea]=ne[Fa]=ne[Aa]=ne[Oa]=ne[Pa]=ne[Ya]=ne[Ra]=ne[Wa]=ne[Ua]=ne[$a]=ne[Qa]=ne[Ha]=!1;function tc(o){return Da(o)&&ka(o.length)&&!!ne[xa(o)]}var ic=tc;function oc(o){return function(t){return o(t)}}var ai=oc,Nt={exports:{}};Nt.exports;(function(o,t){var e=co,i=t&&!t.nodeType&&t,n=i&&!0&&o&&!o.nodeType&&o,r=n&&n.exports===i,s=r&&e.process,a=function(){try{var l=n&&n.require&&n.require("util").types;return l||s&&s.binding&&s.binding("util")}catch{}}();o.exports=a})(Nt,Nt.exports);var ci=Nt.exports,nc=ic,sc=ai,zi=ci,ji=zi&&zi.isTypedArray,rc=ji?sc(ji):nc,wo=rc,ac=ca,cc=Ia,lc=At,uc=ri,hc=za,dc=wo,gc=Object.prototype,Mc=gc.hasOwnProperty;function fc(o,t){var e=lc(o),i=!e&&cc(o),n=!e&&!i&&uc(o),r=!e&&!i&&!n&&dc(o),s=e||i||n||r,a=s?ac(o.length,String):[],l=a.length;for(var c in o)(t||Mc.call(o,c))&&!(s&&(c=="length"||n&&(c=="offset"||c=="parent")||r&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||hc(c,l)))&&a.push(c);return a}var vo=fc,pc=Object.prototype;function yc(o){var t=o&&o.constructor,e=typeof t=="function"&&t.prototype||pc;return o===e}var li=yc;function Ic(o,t){return function(e){return o(t(e))}}var mo=Ic,wc=mo,vc=wc(Object.keys,Object),mc=vc,Nc=li,Tc=mc,Cc=Object.prototype,zc=Cc.hasOwnProperty;function jc(o){if(!Nc(o))return Tc(o);var t=[];for(var e in Object(o))zc.call(o,e)&&e!="constructor"&&t.push(e);return t}var Sc=jc,xc=uo,kc=Io;function Dc(o){return o!=null&&kc(o.length)&&!xc(o)}var No=Dc,bc=vo,Lc=Sc,Ec=No;function Ac(o){return Ec(o)?bc(o):Lc(o)}var ui=Ac,Oc=Et,Pc=ui;function Yc(o,t){return o&&Oc(t,Pc(t),o)}var Rc=Yc;function Wc(o){var t=[];if(o!=null)for(var e in Object(o))t.push(e);return t}var Uc=Wc,$c=Ye,Qc=li,Hc=Uc,Bc=Object.prototype,Fc=Bc.hasOwnProperty;function Vc(o){if(!$c(o))return Hc(o);var t=Qc(o),e=[];for(var i in o)i=="constructor"&&(t||!Fc.call(o,i))||e.push(i);return e}var Zc=Vc,Gc=vo,Jc=Zc,qc=No;function Kc(o){return qc(o)?Gc(o,!0):Jc(o)}var hi=Kc,_c=Et,Xc=hi;function el(o,t){return o&&_c(t,Xc(t),o)}var tl=el,Tt={exports:{}};Tt.exports;(function(o,t){var e=je,i=t&&!t.nodeType&&t,n=i&&!0&&o&&!o.nodeType&&o,r=n&&n.exports===i,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function l(c,h){if(h)return c.slice();var d=c.length,g=a?a(d):new c.constructor(d);return c.copy(g),g}o.exports=l})(Tt,Tt.exports);var il=Tt.exports;function ol(o,t){var e=-1,i=o.length;for(t||(t=Array(i));++e<i;)t[e]=o[e];return t}var nl=ol;function sl(o,t){for(var e=-1,i=o==null?0:o.length,n=0,r=[];++e<i;){var s=o[e];t(s,e,o)&&(r[n++]=s)}return r}var rl=sl;function al(){return[]}var To=al,cl=rl,ll=To,ul=Object.prototype,hl=ul.propertyIsEnumerable,Si=Object.getOwnPropertySymbols,dl=Si?function(o){return o==null?[]:(o=Object(o),cl(Si(o),function(t){return hl.call(o,t)}))}:ll,di=dl,gl=Et,Ml=di;function fl(o,t){return gl(o,Ml(o),t)}var pl=fl;function yl(o,t){for(var e=-1,i=t.length,n=o.length;++e<i;)o[n+e]=t[e];return o}var Co=yl,Il=mo,wl=Il(Object.getPrototypeOf,Object),zo=wl,vl=Co,ml=zo,Nl=di,Tl=To,Cl=Object.getOwnPropertySymbols,zl=Cl?function(o){for(var t=[];o;)vl(t,Nl(o)),o=ml(o);return t}:Tl,jo=zl,jl=Et,Sl=jo;function xl(o,t){return jl(o,Sl(o),t)}var kl=xl,Dl=Co,bl=At;function Ll(o,t,e){var i=t(o);return bl(o)?i:Dl(i,e(o))}var So=Ll,El=So,Al=di,Ol=ui;function Pl(o){return El(o,Ol,Al)}var xo=Pl,Yl=So,Rl=jo,Wl=hi;function Ul(o){return Yl(o,Wl,Rl)}var $l=Ul,Ql=He,Hl=je,Bl=Ql(Hl,"DataView"),Fl=Bl,Vl=He,Zl=je,Gl=Vl(Zl,"Promise"),Jl=Gl,ql=He,Kl=je,_l=ql(Kl,"Set"),Xl=_l,eu=He,tu=je,iu=eu(tu,"WeakMap"),ou=iu,Ft=Fl,Vt=si,Zt=Jl,Gt=Xl,Jt=ou,ko=Qe,et=ho,xi="[object Map]",nu="[object Object]",ki="[object Promise]",Di="[object Set]",bi="[object WeakMap]",Li="[object DataView]",su=et(Ft),ru=et(Vt),au=et(Zt),cu=et(Gt),lu=et(Jt),Re=ko;(Ft&&Re(new Ft(new ArrayBuffer(1)))!=Li||Vt&&Re(new Vt)!=xi||Zt&&Re(Zt.resolve())!=ki||Gt&&Re(new Gt)!=Di||Jt&&Re(new Jt)!=bi)&&(Re=function(o){var t=ko(o),e=t==nu?o.constructor:void 0,i=e?et(e):"";if(i)switch(i){case su:return Li;case ru:return xi;case au:return ki;case cu:return Di;case lu:return bi}return t});var Ot=Re,uu=Object.prototype,hu=uu.hasOwnProperty;function du(o){var t=o.length,e=new o.constructor(t);return t&&typeof o[0]=="string"&&hu.call(o,"index")&&(e.index=o.index,e.input=o.input),e}var gu=du,Mu=je,fu=Mu.Uint8Array,Do=fu,Ei=Do;function pu(o){var t=new o.constructor(o.byteLength);return new Ei(t).set(new Ei(o)),t}var gi=pu,yu=gi;function Iu(o,t){var e=t?yu(o.buffer):o.buffer;return new o.constructor(e,o.byteOffset,o.byteLength)}var wu=Iu,vu=/\w*$/;function mu(o){var t=new o.constructor(o.source,vu.exec(o));return t.lastIndex=o.lastIndex,t}var Nu=mu,Ai=xt,Oi=Ai?Ai.prototype:void 0,Pi=Oi?Oi.valueOf:void 0;function Tu(o){return Pi?Object(Pi.call(o)):{}}var Cu=Tu,zu=gi;function ju(o,t){var e=t?zu(o.buffer):o.buffer;return new o.constructor(e,o.byteOffset,o.length)}var Su=ju,xu=gi,ku=wu,Du=Nu,bu=Cu,Lu=Su,Eu="[object Boolean]",Au="[object Date]",Ou="[object Map]",Pu="[object Number]",Yu="[object RegExp]",Ru="[object Set]",Wu="[object String]",Uu="[object Symbol]",$u="[object ArrayBuffer]",Qu="[object DataView]",Hu="[object Float32Array]",Bu="[object Float64Array]",Fu="[object Int8Array]",Vu="[object Int16Array]",Zu="[object Int32Array]",Gu="[object Uint8Array]",Ju="[object Uint8ClampedArray]",qu="[object Uint16Array]",Ku="[object Uint32Array]";function _u(o,t,e){var i=o.constructor;switch(t){case $u:return xu(o);case Eu:case Au:return new i(+o);case Qu:return ku(o,e);case Hu:case Bu:case Fu:case Vu:case Zu:case Gu:case Ju:case qu:case Ku:return Lu(o,e);case Ou:return new i;case Pu:case Wu:return new i(o);case Yu:return Du(o);case Ru:return new i;case Uu:return bu(o)}}var Xu=_u,eh=Ye,Yi=Object.create,th=function(){function o(){}return function(t){if(!eh(t))return{};if(Yi)return Yi(t);o.prototype=t;var e=new o;return o.prototype=void 0,e}}(),ih=th,oh=ih,nh=zo,sh=li;function rh(o){return typeof o.constructor=="function"&&!sh(o)?oh(nh(o)):{}}var ah=rh,ch=Ot,lh=Ee,uh="[object Map]";function hh(o){return lh(o)&&ch(o)==uh}var dh=hh,gh=dh,Mh=ai,Ri=ci,Wi=Ri&&Ri.isMap,fh=Wi?Mh(Wi):gh,ph=fh,yh=Ot,Ih=Ee,wh="[object Set]";function vh(o){return Ih(o)&&yh(o)==wh}var mh=vh,Nh=mh,Th=ai,Ui=ci,$i=Ui&&Ui.isSet,Ch=$i?Th($i):Nh,zh=Ch,jh=Mo,Sh=Gr,xh=po,kh=Rc,Dh=tl,bh=il,Lh=nl,Eh=pl,Ah=kl,Oh=xo,Ph=$l,Yh=Ot,Rh=gu,Wh=Xu,Uh=ah,$h=At,Qh=ri,Hh=ph,Bh=Ye,Fh=zh,Vh=ui,Zh=hi,Gh=1,Jh=2,qh=4,bo="[object Arguments]",Kh="[object Array]",_h="[object Boolean]",Xh="[object Date]",ed="[object Error]",Lo="[object Function]",td="[object GeneratorFunction]",id="[object Map]",od="[object Number]",Eo="[object Object]",nd="[object RegExp]",sd="[object Set]",rd="[object String]",ad="[object Symbol]",cd="[object WeakMap]",ld="[object ArrayBuffer]",ud="[object DataView]",hd="[object Float32Array]",dd="[object Float64Array]",gd="[object Int8Array]",Md="[object Int16Array]",fd="[object Int32Array]",pd="[object Uint8Array]",yd="[object Uint8ClampedArray]",Id="[object Uint16Array]",wd="[object Uint32Array]",oe={};oe[bo]=oe[Kh]=oe[ld]=oe[ud]=oe[_h]=oe[Xh]=oe[hd]=oe[dd]=oe[gd]=oe[Md]=oe[fd]=oe[id]=oe[od]=oe[Eo]=oe[nd]=oe[sd]=oe[rd]=oe[ad]=oe[pd]=oe[yd]=oe[Id]=oe[wd]=!0;oe[ed]=oe[Lo]=oe[cd]=!1;function wt(o,t,e,i,n,r){var s,a=t&Gh,l=t&Jh,c=t&qh;if(e&&(s=n?e(o,i,n,r):e(o)),s!==void 0)return s;if(!Bh(o))return o;var h=$h(o);if(h){if(s=Rh(o),!a)return Lh(o,s)}else{var d=Yh(o),g=d==Lo||d==td;if(Qh(o))return bh(o,a);if(d==Eo||d==bo||g&&!n){if(s=l||g?{}:Uh(o),!a)return l?Ah(o,Dh(s,o)):Eh(o,kh(s,o))}else{if(!oe[d])return n?o:{};s=Wh(o,d,a)}}r||(r=new jh);var M=r.get(o);if(M)return M;r.set(o,s),Fh(o)?o.forEach(function(p){s.add(wt(p,t,e,p,o,r))}):Hh(o)&&o.forEach(function(p,m){s.set(m,wt(p,t,e,m,o,r))});var w=c?l?Ph:Oh:l?Zh:Vh,v=h?void 0:w(o);return Sh(v||o,function(p,m){v&&(m=p,p=o[m]),xh(s,m,wt(p,t,e,m,o,r))}),s}var vd=wt,md=vd,Nd=1,Td=4;function Cd(o){return md(o,Nd|Td)}var zd=Cd;const lt=ct(zd),Ao="1.0.2",jd="@netless/appliance-plugin",Oo=typeof OffscreenCanvas=="function"?"worker":"mainThread";if(typeof window<"u"){let o=window.__netlessUA||"";o+=` ${jd}@${Ao}_${Oo}`,window.__netlessUA=o}const Pe={syncOpt:{interval:200},canvasOpt:{contextType:St.Canvas2d},cdn:{subWorkerUrl:"",fullWorkerUrl:""},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:1e3}};function ut(o){return JSON.parse(no.decompress(o))}function Mi(o){return no.compress(JSON.stringify(o))}const Ie=Object.keys,xe="++",O="selector",Po="all";var Sd="__lodash_hash_undefined__";function xd(o){return this.__data__.set(o,Sd),this}var kd=xd;function Dd(o){return this.__data__.has(o)}var bd=Dd,Ld=go,Ed=kd,Ad=bd;function Ct(o){var t=-1,e=o==null?0:o.length;for(this.__data__=new Ld;++t<e;)this.add(o[t])}Ct.prototype.add=Ct.prototype.push=Ed;Ct.prototype.has=Ad;var Od=Ct;function Pd(o,t){for(var e=-1,i=o==null?0:o.length;++e<i;)if(t(o[e],e,o))return!0;return!1}var Yd=Pd;function Rd(o,t){return o.has(t)}var Wd=Rd,Ud=Od,$d=Yd,Qd=Wd,Hd=1,Bd=2;function Fd(o,t,e,i,n,r){var s=e&Hd,a=o.length,l=t.length;if(a!=l&&!(s&&l>a))return!1;var c=r.get(o),h=r.get(t);if(c&&h)return c==t&&h==o;var d=-1,g=!0,M=e&Bd?new Ud:void 0;for(r.set(o,t),r.set(t,o);++d<a;){var w=o[d],v=t[d];if(i)var p=s?i(v,w,d,t,o,r):i(w,v,d,o,t,r);if(p!==void 0){if(p)continue;g=!1;break}if(M){if(!$d(t,function(m,y){if(!Qd(M,y)&&(w===m||n(w,m,e,i,r)))return M.push(y)})){g=!1;break}}else if(!(w===v||n(w,v,e,i,r))){g=!1;break}}return r.delete(o),r.delete(t),g}var Yo=Fd;function Vd(o){var t=-1,e=Array(o.size);return o.forEach(function(i,n){e[++t]=[n,i]}),e}var Zd=Vd;function Gd(o){var t=-1,e=Array(o.size);return o.forEach(function(i){e[++t]=i}),e}var Jd=Gd,Qi=xt,Hi=Do,qd=ni,Kd=Yo,_d=Zd,Xd=Jd,eg=1,tg=2,ig="[object Boolean]",og="[object Date]",ng="[object Error]",sg="[object Map]",rg="[object Number]",ag="[object RegExp]",cg="[object Set]",lg="[object String]",ug="[object Symbol]",hg="[object ArrayBuffer]",dg="[object DataView]",Bi=Qi?Qi.prototype:void 0,$t=Bi?Bi.valueOf:void 0;function gg(o,t,e,i,n,r,s){switch(e){case dg:if(o.byteLength!=t.byteLength||o.byteOffset!=t.byteOffset)return!1;o=o.buffer,t=t.buffer;case hg:return!(o.byteLength!=t.byteLength||!r(new Hi(o),new Hi(t)));case ig:case og:case rg:return qd(+o,+t);case ng:return o.name==t.name&&o.message==t.message;case ag:case lg:return o==t+"";case sg:var a=_d;case cg:var l=i⪚if(a||(a=Xd),o.size!=t.size&&!l)return!1;var c=s.get(o);if(c)return c==t;i|=tg,s.set(o,t);var h=Kd(a(o),a(t),i,n,r,s);return s.delete(o),h;case ug:if($t)return $t.call(o)==$t.call(t)}return!1}var Mg=gg,Fi=xo,fg=1,pg=Object.prototype,yg=pg.hasOwnProperty;function Ig(o,t,e,i,n,r){var s=e&fg,a=Fi(o),l=a.length,c=Fi(t),h=c.length;if(l!=h&&!s)return!1;for(var d=l;d--;){var g=a[d];if(!(s?g in t:yg.call(t,g)))return!1}var M=r.get(o),w=r.get(t);if(M&&w)return M==t&&w==o;var v=!0;r.set(o,t),r.set(t,o);for(var p=s;++d<l;){g=a[d];var m=o[g],y=t[g];if(i)var I=s?i(y,m,g,t,o,r):i(m,y,g,o,t,r);if(!(I===void 0?m===y||n(m,y,e,i,r):I)){v=!1;break}p||(p=g=="constructor")}if(v&&!p){var N=o.constructor,T=t.constructor;N!=T&&"constructor"in o&&"constructor"in t&&!(typeof N=="function"&&N instanceof N&&typeof T=="function"&&T instanceof T)&&(v=!1)}return r.delete(o),r.delete(t),v}var wg=Ig,Qt=Mo,vg=Yo,mg=Mg,Ng=wg,Vi=Ot,Zi=At,Gi=ri,Tg=wo,Cg=1,Ji="[object Arguments]",qi="[object Array]",Mt="[object Object]",zg=Object.prototype,Ki=zg.hasOwnProperty;function jg(o,t,e,i,n,r){var s=Zi(o),a=Zi(t),l=s?qi:Vi(o),c=a?qi:Vi(t);l=l==Ji?Mt:l,c=c==Ji?Mt:c;var h=l==Mt,d=c==Mt,g=l==c;if(g&&Gi(o)){if(!Gi(t))return!1;s=!0,h=!1}if(g&&!h)return r||(r=new Qt),s||Tg(o)?vg(o,t,e,i,n,r):mg(o,t,l,e,i,n,r);if(!(e&Cg)){var M=h&&Ki.call(o,"__wrapped__"),w=d&&Ki.call(t,"__wrapped__");if(M||w){var v=M?o.value():o,p=w?t.value():t;return r||(r=new Qt),n(v,p,e,i,r)}}return g?(r||(r=new Qt),Ng(o,t,e,i,n,r)):!1}var Sg=jg,xg=Sg,_i=Ee;function Ro(o,t,e,i,n){return o===t?!0:o==null||t==null||!_i(o)&&!_i(t)?o!==o&&t!==t:xg(o,t,e,i,Ro,n)}var kg=Ro,Dg=kg;function bg(o,t){return Dg(o,t)}var Lg=bg;const qt=ct(Lg);var Eg=Qe,Ag=Ee,Og="[object Boolean]";function Pg(o){return o===!0||o===!1||Ag(o)&&Eg(o)==Og}var Yg=Pg;const Kt=ct(Yg);function Rg(o,t){if(o&&t){const e=Math.min(o.x,t.x),i=Math.min(o.y,t.y),n=Math.max(o.x+o.w,t.x+t.w),r=Math.max(o.y+o.h,t.y+t.h),s=n-e,a=r-i;return{x:e,y:i,w:s,h:a}}return t||o}function Wo(o,t){if(o&&t){const e=Math.min(o.originX,t.originX),i=Math.min(o.originY,t.originY),n=Math.max(o.originX+o.width,t.originX+t.width),r=Math.max(o.originY+o.height,t.originY+t.height),s=n-e,a=r-i;return{originX:e,originY:i,width:s,height:a}}return t||o}function fi(o,t=0){const e={x:0,y:0,w:0,h:0};let i=1/0,n=1/0,r=-1/0,s=-1/0;return o.forEach(a=>{const[l,c]=a.XY;i=Math.min(i,l-t),n=Math.min(n,c-t),r=Math.max(r,l+t),s=Math.max(s,c+t)}),e.x=i,e.y=n,e.w=r-i,e.h=s-n,e}function Wg(o,t){return!(o.x+o.w<t.x||o.x>t.x+t.w||o.y+o.h<t.y||o.y>t.y+t.h)}function Ug(o,t){return{x:o.x+t[0],y:o.y+t[1],w:o.w,h:o.h}}function Uo(o,t){const e=new k(o.x,o.y),i=new k(o.x+o.w,o.y),n=new k(o.x+o.w,o.y+o.h),r=new k(o.x,o.y+o.h),s=new k(o.x+o.w/2,o.y+o.h/2),a=Math.PI*t/180,l=k.RotWith(e,s,a),c=k.RotWith(i,s,a),h=k.RotWith(n,s,a),d=k.RotWith(r,s,a);return[l,c,h,d]}function $g(o,t){const e=Uo(o,t);return fi(e)}function Qg(o,t){const e=new k(o.x,o.y),i=new k(o.x+o.w,o.y),n=new k(o.x+o.w,o.y+o.h),r=new k(o.x,o.y+o.h),s=new k(o.x+o.w/2,o.y+o.h/2),a=new k(t[0],t[1]),l=k.ScaleWOrigin(e,a,s),c=k.ScaleWOrigin(i,a,s),h=k.ScaleWOrigin(n,a,s),d=k.ScaleWOrigin(r,a,s);return fi([l,c,h,d])}function Hg(o,t,e){const i=[];for(let n=0;n<o.length;n++){const r=o[n],s=new k(e[0],e[1]),a=k.ScaleWOrigin(r,s,t);i.push(a)}return i}function Bg(o,t,e){const i=[];for(let n=0;n<o.length;n++){const r=o[n],s=Math.PI*e/180,a=k.RotWith(r,t,s);i.push(a)}return i}function Fg(o,t,e){const i=new k(t[0],t[1]);for(let n=0;n<o.length;n+=3){const r=new k(o[n],o[n+1]),s=Math.PI*e/180,a=k.RotWith(r,i,s);o[n]=a.x,o[n+1]=a.y}}function Vg(o,t,e){const i=new k(t[0],t[1]);for(let n=0;n<o.length;n+=3){const r=new k(o[n],o[n+1]),s=new k(e[0],e[1]),a=k.ScaleWOrigin(r,s,i);o[n]=a.x,o[n+1]=a.y}}function $o(o,t){return o[0]>=t.x&&o[0]<=t.x+t.w&&o[1]>=t.y&&o[1]<=t.y+t.h}function Zg(o,t){const e=o<=t?1:o/t,i=t<=o?1:t/o;return[e,i]}function Gg(o){for(const t of o)if(isNaN(t)||t===1/0||t===-1/0)return!1;return!0}function Jg(o){return`${zt(o.x)},${zt(o.y)} `}function qg(o,t){return`${zt((o.x+t.x)/2)},${zt((o.y+t.y)/2)} `}function zt(o){return+o.toFixed(4)}const Je=(o,t)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:t}):setTimeout(()=>{e(2)},t)}).then(function(){o()},()=>{o()}),Oe=o=>{const t=(o==null?void 0:o.webkitBackingStorePixelRatio)||(o==null?void 0:o.mozBackingStorePixelRatio)||(o==null?void 0:o.msBackingStorePixelRatio)||(o==null?void 0:o.oBackingStorePixelRatio)||(o==null?void 0:o.backingStorePixelRatio)||1;return Math.max(1,(window.devicePixelRatio||1)/t)},Kg=(o,t)=>o.x+o.w<t.x||o.x>t.x+t.w||o.y+o.h<t.y||o.y>t.y+t.h?nt.outside:o.x>=t.x&&o.y>=t.y&&o.x+o.w<=t.x+t.w&&o.y+o.h<=t.y+t.h?nt.inside:nt.intersect;function _g(o){let t=0;for(let e=0;e<o.length;e++){const i=o.charCodeAt(e);i>=1&&i<=126||65376<=i&&i<=65439?t++:t+=2}return t}class Xg{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 K.toJS((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getUidFromKey(t){return t.split(xe).length===2&&t.split(xe)[0]||this.uid}isLocalId(t){return t.split(xe).length===1}getLocalId(t){return t.split(xe)[1]}isSelector(t){return this.getLocalId(t)===O}}const be=class be extends Xg{constructor(e,i,n){super(e,i);f(this,"namespace");f(this,"serviceStorage",{});f(this,"storage",{});f(this,"stateDisposer");f(this,"asyncClockState",!1);be.syncInterval=(n||be.syncInterval)*.5,this.namespace=be.namespace,this.serviceStorage=this.getNamespaceData(),this.storage=S.cloneDeep(this.serviceStorage)}getViewIdBySecenPath(e){const i=this.getNamespaceData();for(const[n,r]of Object.entries(i))if(r){for(const s of Object.keys(r))if(s===e)return n}}getScenePathData(e){const i=this.getNamespaceData();for(const n of Object.values(i))if(n){for(const r of Object.keys(n))if(r===e)return S.cloneDeep(n[r])}}getStorageData(e,i){const n=this.getNamespaceData();return n&&n[e]&&S.cloneDeep(n[e][i])||void 0}hasSelector(e,i){const n=this.storage&&this.storage[e]&&this.storage[e][i];return!!(n&&Object.keys(n).find(r=>this.isOwn(r)&&this.getLocalId(r)===O))}addStorageStateListener(e){this.stateDisposer=K.autorun(async()=>{var l;const i=this.getNamespaceData(),{diffView:n,diffScenePath:r,diffData:s}=this.diffFunByView(this.serviceStorage,i);this.serviceStorage=i;const a={};if(Object.keys(n).length>0){a.diffView=n;for(const[c,h]of Object.entries(n)){if(h&&h.newValue===void 0&&this.storage[c]){delete this.storage[c];continue}if(h&&h.newValue){this.storage[c]=S.cloneDeep(h.newValue);continue}}}if(Object.keys(r).length>0){a.diffScenePath=r;for(const[c,h]of Object.entries(r))if(h){const{viewId:d,newValue:g}=h;let M=this.storage[d];if(M&&M[c]&&g===void 0){delete M[c];continue}if(g&&d){M===void 0&&(this.storage[d]={},M=this.storage[d]),M[c]=S.cloneDeep(g);continue}}}if(Object.keys(s).length>0){a.diffData=s;for(const[c,h]of Object.entries(s))if(h){const{viewId:d,scenePath:g,newValue:M}=h;if(d&&g){let w=this.storage[d],v=(l=this.storage[d])==null?void 0:l[g];if(w||(this.storage[d]={},w=this.storage[d],w[g]={},v=w[g]),v){if(v[c]&&M===void 0){delete v[c];continue}if(M&&d){v[c]=S.cloneDeep(M);continue}}}}}Object.keys(a).length>0&&e(a)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,i){const n=Ie(e),r=Ie(i),s={},a={},l={};for(const c of r)if(!n.includes(c)||e[c]===void 0){s[c]={newValue:i[c],oldValue:void 0};continue}for(const c of n){if(S.isEqual(e[c],i[c]))continue;if(!r.includes(c)||i[c]===void 0){s[c]={newValue:void 0,oldValue:e[c]};continue}const h=this.diffFunByScenePath(e[c],i[c],c);Object.assign(a,h.diffScenePath),Object.assign(l,h.diffData)}return{diffData:l,diffScenePath:a,diffView:s}}diffFunByScenePath(e,i,n){const r=Ie(e),s=Ie(i),a={},l={};for(const c of s)if(!r.includes(c)||e[c]===void 0){a[c]={newValue:i[c],oldValue:void 0,viewId:n};continue}for(const c of r){if(S.isEqual(e[c],i[c]))continue;if(!s.includes(c)||i[c]===void 0){a[c]={newValue:void 0,oldValue:e[c],viewId:n};continue}const h=this.diffFunByKeys(e[c],i[c],c,n);Object.assign(l,h)}return{diffScenePath:a,diffData:l}}diffFunByKeys(e,i,n,r){const s=Ie(e),a=Ie(i),l={};for(const c of a)(!s.includes(c)||e[c]===void 0)&&(l[c]={oldValue:void 0,newValue:i[c],viewId:r,scenePath:n});for(const c of s)if(!S.isEqual(e[c],i[c])){if(!a.includes(c)||i[c]===void 0){l[c]={newValue:void 0,oldValue:e[c],viewId:r,scenePath:n};continue}a.includes(c)&&(l[c]={oldValue:e[c],newValue:i[c],viewId:r,scenePath:n})}return l}transformKey(e){return this.uid+xe+e}isOwn(e){return e.split(xe)[0]===this.uid}dispatch(e){const{type:i,workId:n,ops:r,index:s,opt:a,toolsType:l,removeIds:c,updateNodeOpt:h,op:d,selectIds:g,isSync:M,scenePath:w,viewId:v}=e;if(v)switch(i){case D.Clear:const p={};w&&this.storage[v]&&this.storage[v][w]?(delete this.storage[v][w],this.setState(p,{isSync:M,viewId:v,scenePath:w})):this.storage[v]&&(delete this.storage[v],this.setState(p,{isSync:M,viewId:v,scenePath:""}));break;case D.CreateWork:if(w&&n&&l&&a){const T=this.isLocalId(n.toString())?this.transformKey(n):n;this.updateValue(T.toString(),{type:D.CreateWork,workId:n,toolsType:l,opt:a},{isSync:M,viewId:v,scenePath:w})}break;case D.DrawWork:if(w&&n&&typeof s=="number"&&(d!=null&&d.length)){const T=this.isLocalId(n.toString())?this.transformKey(n):n,z=this.storage[v]&&this.storage[v][w]&&this.storage[v][w][T]||void 0;if(z!=null&&z.ops||(z==null?void 0:z.type)===D.FullWork)return;const b=s?((z==null?void 0:z.op)||[]).slice(0,s).concat(d):d||(z==null?void 0:z.op),Y=l||(z==null?void 0:z.toolsType),R=a||(z==null?void 0:z.opt),U=h||(z==null?void 0:z.updateNodeOpt);n&&Y&&R&&b&&this.updateValue(T.toString(),{...z,type:D.DrawWork,workId:n,updateNodeOpt:U,toolsType:Y,opt:R,op:b,index:s},{isSync:M,viewId:v,scenePath:w})}break;case D.FullWork:if(w&&n){const T=this.isLocalId(n.toString())?this.transformKey(n):n,z=this.storage[v]&&this.storage[v][w]&&this.storage[v][w][T]||void 0,b=h||(z==null?void 0:z.updateNodeOpt),Y=l||(z==null?void 0:z.toolsType),R=a||(z==null?void 0:z.opt),U=r||(z==null?void 0:z.ops);Y&&R&&this.updateValue(T.toString(),{type:D.FullWork,updateNodeOpt:b,workId:T,toolsType:Y,opt:R,ops:U},{isSync:M,viewId:v,scenePath:w})}break;case D.RemoveNode:if(w&&(c!=null&&c.length)){const T=c.map(z=>this.isLocalId(z+"")?this.transformKey(z):z);this.storage[v]&&this.storage[v][w]&&Object.keys(this.storage[v][w]).map(z=>{T!=null&&T.includes(z)&&this.updateValue(z,void 0,{isSync:M,viewId:v,scenePath:w})})}break;case D.UpdateNode:if(w&&n&&(h||r||a)){const T=this.isLocalId(n.toString())?this.transformKey(n):n,z=this.storage[v]&&this.storage[v][w]&&this.storage[v][w][T]||void 0;z&&(z.updateNodeOpt=h,(r||d)&&(z.ops=r,z.op=d),a&&(z.opt=a),z.type=D.FullWork,this.updateValue(T.toString(),z,{isSync:M,viewId:v,scenePath:w}))}break;case D.Select:if(!w)return;let m;g!=null&&g.length&&(m=g.map(T=>this.isLocalId(T+"")?this.transformKey(T):T));const y=this.transformKey(O),I=this.storage[v]&&this.storage[v][w]&&this.storage[v][w][y]||void 0,N=a||(I==null?void 0:I.opt);m&&this.checkOtherSelector(y,m,{isSync:M,viewId:v,scenePath:w}),this.updateValue(y,m&&{type:D.Select,toolsType:C.Selector,opt:N,selectIds:m},{isSync:M,viewId:v,scenePath:w});break}}checkOtherSelector(e,i,n){const{viewId:r,scenePath:s}=n;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===O){const l=this.storage[r][s][a];if(l&&l.selectIds){const c=l.selectIds.filter(h=>!i.includes(h));c.length>0&&(l.selectIds=c),this.updateValue(a,c.length&&l||void 0,n)}}}setState(e,i){const{viewId:n,scenePath:r}=i,s=Ie(e);for(let a=0;a<s.length;a++){const l=s[a],c=e[l];typeof c<"u"?(this.storage[n]||(this.storage[n]={}),this.storage[n][r]||(this.storage[n][r]={}),this.storage[n][r][l]=c):delete this.storage[n][r][l]}this.runSyncService(i)}updateValue(e,i,n){const{viewId:r,scenePath:s}=n;i===void 0?delete this.storage[r][s][e]:(this.storage[r]||(this.storage[r]={}),this.storage[r][s]||(this.storage[r][s]={}),this.storage[r][s][e]=i),this.runSyncService(n)}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 i=Ie(this.serviceStorage),n=Ie(this.storage),r=new Map;for(const s of i){if(!n.includes(s)){r.set(s,void 0);continue}S.isEqual(this.serviceStorage[s],this.storage[s])||this.syncViewData(s,e)}for(const s of n)i.includes(s)||r.set(s,this.storage[s]);if(r.size>5)this.syncStorageView(this.storage,e);else for(const[s,a]of r.entries())this.syncUpdataView(s,a,e)}syncViewData(e,i=!1){const n=Ie(this.serviceStorage[e]),r=Ie(this.storage[e]),s=new Map;for(const a of n){if(!r.includes(a)){s.set(a,void 0);continue}S.isEqual(this.serviceStorage[e][a],this.storage[e][a])||this.syncScenePathData(e,a,i)}for(const a of r)n.includes(a)||s.set(a,this.storage[e][a]);if(s.size>5)this.syncStorageScenePath(e,this.storage[e],i);else for(const[a,l]of s.entries())this.syncUpdataScenePath(e,a,l,i)}syncScenePathData(e,i,n=!1){const r=Ie(this.serviceStorage[e][i]),s=Ie(this.storage[e][i]),a=new Map;for(const l of r){if(!s.includes(l)){a.set(l,void 0);continue}S.isEqual(this.serviceStorage[e][i][l],this.storage[e][i][l])||a.set(l,this.storage[e][i][l])}for(const l of s)r.includes(l)||a.set(l,this.storage[e][i][l]);if(a.size>5)this.syncStorageKey(e,i,this.storage[e][i],n);else for(const[l,c]of a.entries())this.syncUpdataKey(e,i,l,c,n)}syncUpdataView(e,i,n=!1){var s;Object.keys(this.serviceStorage).length?(n||(i===void 0?delete this.serviceStorage[e]:this.serviceStorage[e]=S.cloneDeep(i)),(s=this.plugin)==null||s.updateAttributes([this.namespace,e],i)):this.syncStorageView(this.storage,n)}syncStorageView(e,i=!1){var n;i||e&&(this.serviceStorage=S.cloneDeep(e)),(n=this.plugin)==null||n.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,i,n,r=!1){var a;Object.keys(this.serviceStorage[e]).length?(r||(n===void 0?delete this.serviceStorage[e][i]:this.serviceStorage[e][i]=n),(a=this.plugin)==null||a.updateAttributes([this.namespace,e,i],n)):this.syncStorageScenePath(e,this.storage[e],r)}syncStorageScenePath(e,i,n=!1){var r;n||i&&(this.serviceStorage[e]=i),(r=this.plugin)==null||r.updateAttributes([this.namespace,e],i)}syncUpdataKey(e,i,n,r,s=!1){var l;Object.keys(this.serviceStorage[e][i]).length?(s||(r===void 0?delete this.serviceStorage[e][i][n]:this.serviceStorage[e][i][n]=r),(l=this.plugin)==null||l.updateAttributes([this.namespace,e,i,n],r)):this.syncStorageKey(e,i,this.storage[e][i],s)}syncStorageKey(e,i,n,r=!1){var s;r||(this.serviceStorage[e][i]=n),(s=this.plugin)==null||s.updateAttributes([this.namespace,e,i],n)}keyTransformWorkId(e){const i=e.split(xe);return i.length===2?i[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={}}};f(be,"namespace","PluginState"),f(be,"syncInterval",500);let _t=be;class eM{constructor(){f(this,"roomMembers",[]);f(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const i={online:e.map(n=>{var r;return((r=n.payload)==null?void 0:r.uid)||n.session}),offline:t.map(n=>{var r;return((r=n.payload)==null?void 0:r.uid)||n.session})};this.onChangeHooks.forEach(n=>n(i))}getRoomMember(t){return this.roomMembers.find(e=>{var i;return((i=e.payload)==null?void 0:i.uid)===t})}isOnLine(t){return!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}var ze=(o=>(o[o.Text=1]="Text",o[o.Shape=2]="Shape",o))(ze||{});const tM="cursorhover",iM=20,he="mainView",ye=class ye{createProxy(t){const e=new Proxy(t,{get(i,n,r){const s=ye.interceptors.hasOwnProperty(n)?ye.interceptors:i;return Reflect.get(s,n,r)}});return ye.proxyToRaw.set(e,t),e}};f(ye,"proxyToRaw",new WeakMap),f(ye,"interceptors",{entries(...t){return ye.proxyToRaw.get(this).entries(...t)},forEach(...t){return ye.proxyToRaw.get(this).forEach(...t)},size(){return ye.proxyToRaw.get(this).size},get(t){return ye.proxyToRaw.get(this).get(t)},set(t,e){return ye.proxyToRaw.get(this).set(t,e)},delete(t,e){return ye.proxyToRaw.get(this).delete(t)},clear(){return ye.proxyToRaw.get(this).clear()}});let We=ye;class oM{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:i}=t;this.control=e,this.internalMsgEmitter=i;const n=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(n)}get collector(){return this.control.collector}filterEditor(t){const e=new Map;return this.editors.forEach((i,n)=>{i.viewId===t&&e.set(n,i)}),e}get interceptors(){return{set:(t,e)=>{var M,w,v,p,m,y,I,N;if(!this.collector)return!0;const{viewId:i,scenePath:n,canSync:r,canWorker:s,type:a,opt:l,dataType:c}=e;if(!s&&!r)return!0;const d=((M=this.collector)==null?void 0:M.isLocalId(t))?(w=this.collector)==null?void 0:w.transformKey(t):t,g=((v=this.collector)==null?void 0:v.storage[i])&&this.collector.storage[i][n]&&this.collector.storage[i][n][d]||void 0;g?g.toolsType===C.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:t,msgType:D.UpdateNode}).forEach(T=>{var z;(z=this.control.worker)==null||z.taskBatchData.delete(T)}),(I=this.control.worker)==null||I.taskBatchData.add({workId:t,msgType:D.UpdateNode,dataType:c||V.Local,toolsType:C.Text,opt:l,viewId:i,scenePath:n,willRefresh:!0}),(N=this.control.worker)==null||N.runAnimation()),r&&Je(()=>{var T;(T=this.collector)==null||T.dispatch({type:D.UpdateNode,workId:t,toolsType:C.Text,opt:l,viewId:i,scenePath:n})},this.control.worker.maxLastSyncTime)):a===ze.Text&&(r&&((p=this.collector)==null||p.dispatch({type:l.text&&D.FullWork||D.CreateWork,workId:t,toolsType:C.Text,opt:l,isSync:!0,viewId:i,scenePath:n})),s&&((m=this.control.worker)==null||m.taskBatchData.add({workId:t,msgType:l.text&&D.FullWork||D.CreateWork,dataType:c||V.Local,toolsType:C.Text,opt:l,viewId:i,scenePath:n,willRefresh:!0}),(y=this.control.worker)==null||y.runAnimation()))},delete:t=>{var a,l;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:i,scenePath:n,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:t,toolsType:C.Text,msgType:D.RemoveNode,dataType:V.Local,viewId:i,scenePath:n,willRefresh:!0}),(l=this.control.worker)==null||l.runAnimation()),r&&Je(()=>{var c;(c=this.collector)==null||c.dispatch({type:D.RemoveNode,removeIds:[t],toolsType:C.Text,viewId:i,scenePath:n})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(t,e){var r,s,a,l;const i=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(t,e),n=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&n&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:D.GetTextActive,dataType:V.Local,op:i,viewId:e,scenePath:n}),(l=this.control.worker)==null||l.runAnimation())}checkEmptyTextBlur(){var e;let t=this.activeId;for(const[i,n]of this.editors.entries())if(n.opt.uid&&n.opt.uid===((e=this.collector)==null?void 0:e.uid)){t=i;break}if(t){const i=this.editors.get(t);(i==null?void 0:i.opt.text)&&(i==null?void 0:i.opt.text.replace(/\s*,/g,""))?this.unActive(t):this.delete(t,!0,!0)}}onCameraChange(t,e){var i,n;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:l}=s.opt,c=a&&((i=this.control.viewContainerManager)==null?void 0:i.transformToOriginPoint(a,s.viewId)),h=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);if(h&&e){const d={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:ze.Text,viewId:e,scenePath:h,canWorker:!1,canSync:!1};this.editors.set(r,d),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(t){var w,v;const{workId:e,opt:i,msgType:n,viewId:r,scenePath:s,dataType:a}=t;if(!e||!r||!s)return;const l=e.toString();if(n===D.RemoveNode){this.delete(l,!0,!0);return}const{boxPoint:c,boxSize:h}=i,d=c&&((w=this.control.viewContainerManager)==null?void 0:w.transformToOriginPoint(c,r)),g=this.control.viewContainerManager.getView(r),M={x:d&&d[0]||0,y:d&&d[1]||0,w:h&&h[0]||0,h:h&&h[1]||0,opt:i,type:ze.Text,canWorker:!0,canSync:!1,dataType:a,scale:((v=g==null?void 0:g.cameraOpt)==null?void 0:v.scale)||1,viewId:r,scenePath:s};this.editors.set(l,M),a===V.Service&&i.workState===j.Done&&this.activeId===l&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}updateForViewEdited(t,e){var n;this.editors.set(t,e);const i=(n=this.taskqueue.get(t))==null?void 0:n.resolve;i&&i(e)}active(t){var i;const e=this.editors.get(t);e&&e.viewId&&(e.opt.workState=j.Start,e.opt.uid=(i=this.collector)==null?void 0:i.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:i,isActive:n,...r}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,r.viewId),r.opt.uid=(s=this.collector)==null?void 0:s.uid,n&&(this.activeId=i),r.dataType=V.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(i,r),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}updateTextForMasterController(t,e){var s;const{workId:i,...n}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,n.viewId);const r=this.editors.get(i)||{};n.opt&&(n.opt.uid=(s=this.collector)==null?void 0:s.uid),n.dataType=V.Local,this.editors.set(i,{...r,...n}),this.control.viewContainerManager.setActiveTextEditor(n.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var h;const{workId:i,...n}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,n.viewId);const r=this.editors.get(i)||{};n.opt&&(n.opt.uid=(h=this.collector)==null?void 0:h.uid),n.dataType=V.Local;const s={...r,...n};if(this.editors.set(i,s),this.control.viewContainerManager.setActiveTextEditor(n.viewId,this.activeId),this.taskqueue.has(i)){const d=this.taskqueue.get(i);return d&&(d.clocker&&clearTimeout(d.clocker),this.taskqueue.delete(i)),await this.updateTextControllerWithEffectAsync(t)}const a=setTimeout(()=>{var g;const d=(g=this.taskqueue.get(i))==null?void 0:g.resolve;d&&d(s)},50),l=await new Promise(d=>{this.taskqueue.set(i,{resolve:d,clocker:a})}),c=this.taskqueue.get(i);return c&&(c.clocker&&clearTimeout(c.clocker),this.taskqueue.delete(i)),l}updateTextForWorker(t,e){const{workId:i,isActive:n,...r}=t,a={...this.editors.get(i)||{},...r};if(n){a.canWorker=!1,a.canSync=!1,this.editors.set(i,a),this.active(i);return}this.editors.set(i,a),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId),e&&this.internalMsgEmitter.emit("addUndoTicker",e,r.viewId)}get(t){return this.editors.get(t)}delete(t,e,i){const n=this.editors.get(t);if(n){const r=n.viewId;n.canSync=e,n.canWorker=i,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}}deleteBatch(t,e,i){const n=new Set;for(const r of t){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=i,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),n.add(a)}}for(const r of n)this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}clear(t,e){this.editors.forEach((i,n)=>{i.viewId===t&&(e&&(i.canSync=!1),i.canWorker=!1,this.editors.delete(n))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}}class nM{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 n,r;const{control:e,internalMsgEmitter:i}=t;this.internalMsgEmitter=i,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=((r=(n=this.control.pluginOptions)==null?void 0:n.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:i}=t;if(e!==this.eventName)return;const{uid:n,op:r,type:s}=i;if(((a=this.control.collector)==null?void 0:a.uid)!==n&&s===ot.Cursor&&(r!=null&&r.length)){const l=this.willConsumeEventWorkers.get(n)||[];for(const c of r){const{viewId:h}=c;S.isNumber(c.consumPoint[0])&&S.isNumber(c.consumPoint[1])&&(c.consumPoint=this.control.viewContainerManager.transformToOriginPoint(c.consumPoint,h)),l.unshift({...c,timestamp:Date.now()})}this.willConsumeEventWorkers.set(n,l),this.runAnimation()}}onFocusViewChange(){this.checkDrawWorks(),this.runAnimation()}updateRoomMembers(t){const{offline:e}=t;for(const i of this.cursorInfoMap.keys())i&&e.includes(i)&&this.cursorInfoMap.delete(i)}getKey(t,e){return`${t}${xe}${e}`}getUidAndviewId(t){const[e,i]=t.split(xe);return{uid:e,viewId:i}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const t=this.control.viewContainerManager.focuedViewId;for(const[i,n]of this.animationDrawWorkers.entries()){const{viewId:r,uid:s}=this.getUidAndviewId(i);s!==((e=this.control.collector)==null?void 0:e.uid)&&r!==t&&n.workState===j.Done&&(n.consumPoint=[void 0,void 0])}}animationCursor(){this.animationId=void 0;const t=Date.now();for(const[i,n]of this.animationDrawWorkers.entries()){const{uid:r,viewId:s}=this.getUidAndviewId(i),a=this.roomMember.getRoomMember(r);if(!a){this.animationDrawWorkers.delete(i);continue}const{consumPoint:l,timestamp:c,workState:h}=n,d=this.cursorInfoMap.get(s)||new Map;l&&S.isNumber(l[0])&&S.isNumber(l[1])&&c+this.expirationTime>t?d.set(a.memberId,{x:l[0],y:l[1],roomMember:a,timestamp:c,type:1,workState:h}):d.delete(a.memberId),d.size?this.cursorInfoMap.set(s,d):this.cursorInfoMap.delete(s),this.animationDrawWorkers.delete(i)}const e=new Set;for(const[i,n]of this.cursorInfoMap.entries())if(n)for(const[r,s]of n.entries())s.type===1&&s.workState!==j.Done&&e.add(r);else this.cursorInfoMap.delete(i);for(const[i,n]of this.willConsumeEventWorkers.entries()){const r=this.roomMember.getRoomMember(i);if(r!=null&&r.memberId&&!e.has(r.memberId)){const s=n.pop();s?this.animationEventWorkers.set(i,s):this.willConsumeEventWorkers.delete(i)}}for(const[i,n]of this.animationEventWorkers.entries()){const r=this.roomMember.getRoomMember(i);if(!r){this.animationEventWorkers.delete(i);continue}const{viewId:s,consumPoint:a,timestamp:l}=n,c=this.cursorInfoMap.get(s)||new Map;a&&S.isNumber(a[0])&&S.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(i)}for(const i of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(i)||(this.doneRenderCursorInfoMap.delete(i),this.internalMsgEmitter.emit([$.Cursor,i],[]));for(const[i,n]of this.cursorInfoMap.entries())if(n!=null&&n.size){const r=[];for(const[a,l]of n.entries()){const{timestamp:c,...h}=l;c+this.expirationTime>t?r.push(h):(n.delete(a),n.size===0&&(this.cursorInfoMap.delete(i),this.doneRenderCursorInfoMap.delete(i),this.internalMsgEmitter.emit([$.Cursor,i],[])))}const s=this.doneRenderCursorInfoMap.get(i);S.isEqual(s,r)||(this.doneRenderCursorInfoMap.set(i,r),this.internalMsgEmitter.emit([$.Cursor,i],r))}else this.cursorInfoMap.delete(i),this.doneRenderCursorInfoMap.delete(i),this.internalMsgEmitter.emit([$.Cursor,i],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(t,e){if(this.displayer&&K.isRoom(this.displayer)){const i=S.isNumber(t[0])&&S.isNumber(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:i,viewId:e}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var t;this.displayer.dispatchMagixEvent(this.eventName,{type:ot.Cursor,op:S.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:i,workState:n,viewId:r}=t;if(i&&e&&n&&r){if(!this.roomMember.getRoomMember(i)||i===((s=this.control.collector)==null?void 0:s.uid))return;const l=this.getKey(i,r),c=this.control.viewContainerManager.focuedViewId;let h=[void 0,void 0];if(S.isNumber(e[0])&&S.isNumber(e[1])){const[g,M]=this.control.viewContainerManager.transformToOriginPoint(e,r);h=[g,M]}n===j.Done&&c!==r&&(h=[void 0,void 0]);const d={consumPoint:h,workState:n,viewId:r,timestamp:Date.now()};if(n===j.Start||n===j.Done){const g=this.willConsumeEventWorkers.get(i);n===j.Start&&g&&this.willConsumeEventWorkers.delete(i),g&&n===j.Done&&(d.timestamp=d.timestamp-this.expirationTime)}this.animationDrawWorkers.set(l,d),this.runAnimation()}}unabled(){var t;this.displayer&&K.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:ot.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(t=this.control.collector)==null?void 0:t.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0))}clearViewCursor(t){var e,i,n;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===((i=this.control.collector)==null?void 0:i.uid)&&this.willConsumeEventWorkers.delete(r);for(const[r]of this.animationEventWorkers.entries())r===((n=this.control.collector)==null?void 0:n.uid)&&this.animationEventWorkers.delete(r);for(const[r]of this.cursorInfoMap.entries())r===r&&(this.cursorInfoMap.delete(r),this.doneRenderCursorInfoMap.delete(r),this.internalMsgEmitter.emit([$.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 ve{constructor(){f(this,"useEmtMsg");f(this,"emtType");f(this,"control");f(this,"mainEngine")}static dispatch(t,e,i){var n;(n=de.InternalMsgEmitter)==null||n.emit([t,e],i)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collect.bind(this)),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collect.bind(this))}collectForLocalWorker(t,e){var i,n,r;for(const[s,a]of t)(i=this.mainEngine)==null||i.queryTaskBatchData(a).forEach(l=>{var c;(c=this.mainEngine)==null||c.taskBatchData.delete(l)}),(n=this.mainEngine)==null||n.taskBatchData.add(s);if(e){this.mainEngine.consume();return}(r=this.mainEngine)==null||r.runAnimation()}collectForServiceWorker(t){Je(()=>{t.forEach(e=>{var i;(i=this.serviceColloctor)==null||i.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=de.InternalMsgEmitter)==null||t.emit(x.ActiveMethod,!1)}}recover(){var t;this.useEmtMsg&&de.InternalMsgEmitter.hasListeners(x.ActiveMethod)&&((t=de.InternalMsgEmitter)==null||t.emit(x.ActiveMethod,!0))}}class sM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.CopyNode)}collect(e){var l;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,n);for(const c of i){const h=c.toString(),g=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(c):h,M=(l=this.serviceColloctor.getStorageData(n,s))==null?void 0:l[g];if(M){if(c===O){const w=M&&this.copySelector({viewId:n,store:M});w&&this.pasteSelector({...w,viewId:n,scenePath:s,undoTickerId:a});break}if(M.toolsType===C.Text&&M.opt&&M.opt.workState&&M.opt.workState!==j.Done){const w=M&&this.copyText({viewId:n,store:M});w&&this.pasteText({...w,viewId:n,scenePath:s,key:g,store:M,undoTickerId:a});break}}}}copyText(e){const{viewId:i,store:n}=e,r=this.control.viewContainerManager.getView(i);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],l=n.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 p,m;const{bgCenter:i,textCenter:n,store:r,key:s,viewId:a,scenePath:l,undoTickerId:c}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const d=Math.floor(Math.random()*30+1),g=((p=h.cameraOpt)==null?void 0:p.scale)||1,M=i&&n&&[i[0]-n[0]+d,i[1]-n[1]+d]||[d/g,d/g],v=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+c;if(r.toolsType===C.Text&&r.opt){const y=r.opt;if(y&&y.boxPoint&&y.text){y.workState=j.Done;const I=y.boxPoint;y.boxPoint=[I[0]+M[0],I[1]+M[1]],y.workState=j.Done;const N=this.control.viewContainerManager.transformToOriginPoint(y.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:v,x:N[0],y:N[1],opt:y,scale:((m=h.cameraOpt)==null?void 0:m.scale)||1,type:ze.Text,isActive:!1,viewId:a,scenePath:l}),this.collectForServiceWorker([{...r,opt:y,type:D.FullWork,workId:v,viewId:a,scenePath:l}])}}}copySelector(e){var v,p,m,y,I,N,T,z,b;const{viewId:i,store:n}=e,r=this.control.viewContainerManager.getView(i),s=n.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,l={offset:{x:0,y:0},cameraOpt:{centerX:((v=r.cameraOpt)==null?void 0:v.centerX)||0,centerY:((p=r.cameraOpt)==null?void 0:p.centerY)||0,scale:((m=r.cameraOpt)==null?void 0:m.scale)||1}},c=this.control.hasOffscreenCanvas()&&((y=r.displayer.canvasBgRef.current)==null?void 0:y.getBoundingClientRect())||((I=r.displayer.canvasContainerRef.current)==null?void 0:I.getBoundingClientRect()),h=(T=(N=r.displayer)==null?void 0:N.floatBarRef.current)==null?void 0:T.getBoundingClientRect(),d=c&&[c.x+c.width/2,c.y+c.height/2],g=h&&[h.x+h.width/2,h.y+h.height/2],M=d&&r.viewData&&r.viewData.convertToPointInWorld({x:d[0],y:d[1]}),w=g&&r.viewData&&r.viewData.convertToPointInWorld({x:g[0],y:g[1]});M&&w&&(l.offset={x:M.x-w.x,y:M.y-w.y});for(const Y of s){const R=(b=(z=this.serviceColloctor)==null?void 0:z.getStorageData(r.id,r.focusScenePath))==null?void 0:b[Y];R&&a.set(Y,R)}return{copyStores:a,copyCoordInfo:l}}pasteSelector(e){var v;const{copyStores:i,copyCoordInfo:n,viewId:r,scenePath:s,undoTickerId:a}=e,l=this.control.viewContainerManager.getView(r);if(!i.size||!this.serviceColloctor||!l)return;const{offset:c,cameraOpt:h}=n,d=Math.floor(Math.random()*30+1),g=[c.x+d,c.y+d],M=[],w=[];for(const[p,m]of i.entries()){const I=(this.serviceColloctor.isLocalId(p)?p:this.serviceColloctor.getLocalId(p.toString()))+"-"+a,N={useAnimation:!1};if(m.toolsType===C.Text&&m.opt){const T=m.opt;if(T&&T.boxPoint&&T.text){T.workState=j.Done;const z=T.boxPoint;T.boxPoint=[z[0]+g[0],z[1]+g[1]],T.workState=j.Done;const b=this.control.viewContainerManager.transformToOriginPoint(T.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:I,x:b[0],y:b[1],opt:T,scale:((v=l.cameraOpt)==null?void 0:v.scale)||1,type:ze.Text,isActive:!1,viewId:r,scenePath:s})}w.push({...m,opt:T,type:D.FullWork,workId:I,viewId:r,scenePath:s});continue}if(m.toolsType===C.Image&&(m.opt.uuid=I,m.opt.centerX=m.opt.centerX+g[0],m.opt.centerY=m.opt.centerY+g[1]),m.ops){const T=ut(m.ops).map((b,Y)=>{const R=Y%3;return R===0?b+g[0]:R===1?b+g[1]:b}),z=Mi(T);m.ops=z}w.push({...m,updateNodeOpt:N,type:D.FullWork,workId:I,viewId:r,scenePath:s}),M.push([{...m,updateNodeOpt:N,workId:I,msgType:D.FullWork,dataType:V.Local,emitEventType:x.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r},{workId:I,msgType:D.FullWork,emitEventType:x.CopyNode}])}M.length&&this.collectForLocalWorker(M),w.length&&this.collectForServiceWorker(w)}}function ht(o,t,e){return"#"+((o<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function ce(o,t=1){return"rgba("+parseInt("0x"+o.slice(1,3))+","+parseInt("0x"+o.slice(3,5))+","+parseInt("0x"+o.slice(5,7))+","+t+")"}function ft(o,t,e,i=1){return`rgba(${o},${t},${e},${i})`}function Pt(o){const t=o.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),n=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[ht(e,i,n),r]}function pt(o){const t=o.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),n=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[e,i,n,r]}function yt(o){return o==="transparent"}class rM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.SetColorNode);f(this,"undoTickerId")}setTextColor(e,i,n,r){const{fontColor:s,fontBgColor:a}=n;i.opt&&(s&&(i.opt.fontColor=s),a&&(i.opt.fontBgColor=a),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:i.opt,viewId:r,canSync:!0,canWorker:!0}))}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,strokeColor:n,fillColor:r,fontColor:s,fontBgColor:a,viewId:l,workState:c}=e,h=this.control.viewContainerManager.getView(l);if(!(h!=null&&h.displayer))return;const d=h.focusScenePath,g=[...i],M=this.serviceColloctor.storage,w=[],v={};for((c===j.Start||!this.undoTickerId&&c===j.Done)&&(this.undoTickerId=Date.now(),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,l));g.length;){const p=g.pop();if(!p)continue;const m=p.toString(),y=this.serviceColloctor.isLocalId(m),I=y?this.serviceColloctor.transformKey(p):m;let N=m;!y&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N));const T=M[l][d][I]||void 0;if(T){const z=T.updateNodeOpt||{};if(s||a){if(s){z.fontColor=s;const[Y,R,U,A]=pt(s);v.textColor=[Y,R,U],v.textOpacity=A}if(a)if(z.fontBgColor=yt(a)?"transparent":a,yt(a))v.textBgColor=void 0,v.textBgOpacity=void 0;else{const[Y,R,U,A]=pt(a);v.textBgColor=[Y,R,U],v.textBgOpacity=A}if(T.toolsType===C.Text&&T.opt&&c!==j.Start){this.setTextColor(N,lt(T),z,l),c===j.Done&&(this.undoTickerId=void 0);continue}}if(n){z.strokeColor=n;const[Y,R,U,A]=pt(n);v.strokeColor=[Y,R,U],v.strokeOpacity=A}if(r)if(z.fillColor=yt(r)?"transparent":r,yt(r))v.fillColor=void 0,v.fillOpacity=void 0;else{const[Y,R,U,A]=pt(r);v.fillColor=[Y,R,U],v.fillOpacity=A}const b={workId:N,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:z,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:l};w.push([b,{workId:N,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}w.length&&(c===j.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(w)),Object.keys(v).length&&setTimeout(()=>{var p;(p=this.control.room)==null||p.setMemberState(v)},0)}}class aM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.ZIndexNode);f(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.min)||0}getMaxZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.max)||0}setMaxZIndex(e,i){const n=this.getMinZIndex(i);this.zIndexMap.set(i,{min:n,max:e})}setMinZIndex(e,i){const n=this.getMaxZIndex(i);this.zIndexMap.set(i,{min:e,max:n})}addMaxLayer(e){const i=this.getMaxZIndex(e)+1;this.setMaxZIndex(i,e)}addMinLayer(e){const i=this.getMinZIndex(e)-1;this.setMinZIndex(i,e)}correct(e){const i=e.sort((n,r)=>n[1]-r[1]);for(let n=1;n<i.length;n++){const r=i[n][1],s=i[n-1][1];r<=s&&(i[n][1]=s+1)}return i}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,layer:n,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,l=[...i],c=this.serviceColloctor.storage,h=[],d=[];for(;l.length;){const M=l.pop();if(!M)continue;const w=M.toString(),v=this.serviceColloctor.isLocalId(w),p=v?this.serviceColloctor.transformKey(M):w;let m=w;!v&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const y=lt(c[r][a][p]);let I;if(y&&m===O){if(y.selectIds){d.push(...y.selectIds),d.sort((b,Y)=>{var A,W,Q,X;const R=((W=(A=c[g(b,this.serviceColloctor)])==null?void 0:A.opt)==null?void 0:W.zIndex)||0,U=((X=(Q=c[g(b,this.serviceColloctor)])==null?void 0:Q.opt)==null?void 0:X.zIndex)||0;return R>U?1:b<Y?-1:0});const N=y.updateNodeOpt||{};N.zIndexLayer=n;const T={workId:M,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:N,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},z=new Map;n===$e.Top?(this.addMaxLayer(r),I=this.getMaxZIndex(r)):(this.addMinLayer(r),I=this.getMinZIndex(r)),d.forEach(b=>{var A,W,Q;const Y=(A=this.serviceColloctor)==null?void 0:A.isLocalId(b);let R=Y&&((W=this.serviceColloctor)==null?void 0:W.transformKey(b))||b;const U=c[r][a][R];!Y&&((Q=this.serviceColloctor)!=null&&Q.isOwn(R))&&(R=this.serviceColloctor.getLocalId(R)),N.zIndex=I,U!=null&&U.opt&&(U.opt.zIndex=I),U!=null&&U.opt&&z.set(R,{updateNodeOpt:U.updateNodeOpt,opt:U.opt})}),T.selectStore=z,T.willSerializeData=!0,h.push([T,{workId:M,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&this.collectForLocalWorker(h);function g(M,w){return w.isLocalId(M)&&w.transformKey(M)||M}}}class cM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.TranslateNode);f(this,"undoTickerId");f(this,"cachePosition")}collect(e,i){var w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,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,h=[...n],d=(w=this.serviceColloctor)==null?void 0:w.storage,g=[],M=s===j.Start&&Date.now()||void 0;for(M&&(this.undoTickerId=M,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",M,a));h.length;){const v=h.pop();if(!v)continue;const p=v.toString(),m=this.serviceColloctor.isLocalId(p),y=m&&this.serviceColloctor.transformKey(v)||p;let I=p;!m&&this.serviceColloctor.isOwn(I)&&(I=this.serviceColloctor.getLocalId(I));const N=d[a][c][y];if(N&&I===O){if(N.selectIds){const T=this.control.viewContainerManager.transformToScenePoint([r.x,r.y],a);if(s===j.Start&&(this.cachePosition=T),this.cachePosition){const z=N.updateNodeOpt||{};z.translate=[T[0]-this.cachePosition[0],T[1]-this.cachePosition[1]],z.workState=s;const b={workId:v,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:z,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a};s===j.Done&&(b.textUpdateForWoker=!0,b.willSerializeData=!0,b.undoTickerId=this.undoTickerId,this.cachePosition=void 0),g.push([b,{workId:v,msgType:D.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,i)}}class lM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.DeleteNode)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:n}=e,r=this.control.viewContainerManager.getView(n);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,l=[...i],c=[],h=[],d=Date.now();for(;l.length;){const g=l.pop();if(!g)continue;const M=g.toString(),w=this.serviceColloctor.isLocalId(M),v=w?this.serviceColloctor.transformKey(g):M,p=a[n][s][v];if(p){let m=M;if(!w&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m)),p.toolsType===C.Text){this.control.textEditorManager.delete(m,!0,!0);continue}h.push(m)}}h.length&&(c.push([{msgType:D.RemoveNode,emitEventType:x.DeleteNode,removeIds:h,dataType:V.Local,willSyncService:!0,willRefresh:!0,viewId:n},void 0]),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n),this.collectForLocalWorker(c))}}class uM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.ScaleNode);f(this,"targetBox",new Map);f(this,"targetText",new Map);f(this,"cacheTextInfo",new Map)}async setTextStyle(e,i,n){const r=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:i,viewId:n,canSync:!1,canWorker:!1});return{key:e,textInfo:r}}async collect(e,i){var m,y,I,N,T;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,box:r,workState:s,viewId:a,dir:l,reverseY:c,reverseX:h}=e;this.lastEmtData=e;const d=this.control.viewContainerManager.getView(a);if(!(d!=null&&d.displayer))return;const g=d.focusScenePath,M=[...n],w=(m=this.serviceColloctor)==null?void 0:m.storage,v=[],p=s===j.Start&&Date.now()||void 0;for(p&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",p,a);M.length;){const z=M.pop();if(!z)continue;const b=z.toString(),Y=this.serviceColloctor.isLocalId(b),R=Y&&this.serviceColloctor.transformKey(z)||b;let U=b;!Y&&this.serviceColloctor.isOwn(U)&&(U=this.serviceColloctor.getLocalId(U));const A=w[a][g][R];if(A&&U===O&&A.selectIds){const W=A.updateNodeOpt||{};if(W.dir=l,W.box=r,W.workState=s,W.reverseY=c,W.reverseX=h,s===j.Start&&r){this.cacheTextInfo.clear();for(const X of A.selectIds){const re=(y=this.serviceColloctor)==null?void 0:y.isLocalId(X),ee=re&&((I=this.serviceColloctor)==null?void 0:I.transformKey(X))||X;let F=ee;!re&&((N=this.serviceColloctor)!=null&&N.isOwn(ee))&&(F=this.serviceColloctor.getLocalId(ee));const J=this.control.textEditorManager.get(F);J&&s===j.Start&&this.targetText.set(F,lt(J))}this.targetText.size&&this.targetBox.set(U,r)}if(this.targetText.size&&s!==j.Start){const X=this.targetBox.get(U);if(X){const re=[r.w/X.w,r.h/X.h],ee=[];for(const[J,te]of this.targetText.entries()){const{opt:L}=te,B=Math.floor(L.fontSize*re[0]),_=this.cacheTextInfo.get(J),ke=!_&&L.fontSize!==B||_&&_.fontSize!==B||!1,q=(T=this.control.textEditorManager.get(J))==null?void 0:T.opt;if(ke&&q&&L.boxSize&&L.boxPoint){const ie=this.setTextStyle(J,{...q,fontSize:B},a);ee.push(ie)}}const F=await Promise.all(ee);for(const J of F)if(J){const{key:te,textInfo:L}=J;this.cacheTextInfo.set(te,{fontSize:L.opt.fontSize,boxSize:L.opt.boxSize,boxPoint:L.opt.boxPoint})}W.textInfos=this.cacheTextInfo}}const Q={workId:z,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:W,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:a};s===j.Done&&(Q.willSerializeData=!0,this.targetBox.delete(U),this.targetText.clear()),v.push([Q,{workId:z,msgType:D.UpdateNode,emitEventType:this.emitEventType}]);continue}}s===j.Start?this.mainEngine.unWritable():s===j.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),v.length&&this.collectForLocalWorker(v,i)}}class hM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.RotateNode);f(this,"cacheOriginRotate",0)}collect(e,i){var w,v,p,m,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,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,h=[...n],d=(w=this.serviceColloctor)==null?void 0:w.storage,g=[],M=s===j.Start&&Date.now()||void 0;for(M&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",M,a);h.length;){const I=h.pop();if(!I)continue;const N=I.toString(),T=this.serviceColloctor.isLocalId(N),z=T&&this.serviceColloctor.transformKey(I)||N;let b=N;!T&&this.serviceColloctor.isOwn(b)&&(b=this.serviceColloctor.getLocalId(b));const Y=d[a][c][z];if(Y&&b===O){if(((v=Y.selectIds)==null?void 0:v.length)===1){const R=Y.selectIds[0];if(s===j.Start){const Q=((p=this.serviceColloctor)==null?void 0:p.isLocalId(R))&&((m=this.serviceColloctor)==null?void 0:m.transformKey(R))||R,X=d[a][c][Q];this.cacheOriginRotate=((y=X==null?void 0:X.opt)==null?void 0:y.rotate)||0}const U=Y.updateNodeOpt||{};U.angle=(r+this.cacheOriginRotate)%360,U.workState=s;const A={workId:I,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:U,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a};s===j.Done&&(A.willRefreshSelector=!0,A.willSerializeData=!0,this.cacheOriginRotate=0),g.push([A,{workId:I,msgType:D.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,i)}}function dM(o){switch(o){case C.Text:return ze.Text;case C.SpeechBalloon:case C.Star:case C.Ellipse:case C.Rectangle:case C.Triangle:case C.Rhombus:case C.Polygon:return ze.Shape}}class gM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.SetFontStyle);f(this,"timerId")}async setTextStyle(e,i,n,r){const{bold:s,underline:a,lineThrough:l,italic:c,fontSize:h}=n;if(i.toolsType){const d=dM(i.toolsType);if(d===ze.Text){i.opt&&(s&&(i.opt.bold=s),S.isBoolean(a)&&(i.opt.underline=a),S.isBoolean(l)&&(i.opt.lineThrough=l),c&&(i.opt.italic=c),h&&(i.opt.fontSize=h));const g=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:i.opt,viewId:r,canSync:!1,canWorker:!1});return{key:e,textInfo:g}}ze.Shape}}async collect(e){var y,I,N,T;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,bold:n,italic:r,lineThrough:s,underline:a,viewId:l,fontSize:c}=e,h=this.control.viewContainerManager.getView(l);if(!(h!=null&&h.displayer))return;const d=h.focusScenePath,g=[...i],M=this.serviceColloctor.storage,w={},v=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",v,l);const p=[];for(;g.length;){const z=g.pop();if(!z)continue;const b=z.toString(),Y=this.serviceColloctor.isLocalId(b),R=Y?this.serviceColloctor.transformKey(z):b;let U=b;!Y&&this.serviceColloctor.isOwn(U)&&(U=this.serviceColloctor.getLocalId(U));const A=M[l][d][R]||void 0;if(A){const W=A.updateNodeOpt||{};if(n&&(W.bold=n,w.bold=n==="bold"),r&&(W.italic=r,w.italic=r==="italic"),S.isBoolean(s)&&(W.lineThrough=s,w.lineThrough=s),S.isBoolean(a)&&(W.underline=a,w.underline=a),c&&(W.fontSize=c,w.textSize=c),A.toolsType===C.Text&&A.opt){const Q=this.setTextStyle(U,S.cloneDeep(A),W,l);p.push(Q);continue}if(A&&U===O&&((y=A.selectIds)!=null&&y.length))for(const Q of A.selectIds){const X=(I=this.serviceColloctor)==null?void 0:I.isLocalId(Q);let re=X&&((N=this.serviceColloctor)==null?void 0:N.transformKey(Q))||Q;const ee=M[l][d][re]||void 0;if(!X&&((T=this.serviceColloctor)!=null&&T.isOwn(re))&&(re=this.serviceColloctor.getLocalId(re)),ee&&ee.toolsType===C.Text&&A.opt){const F=this.setTextStyle(re,S.cloneDeep(ee),W,l);p.push(F);continue}}}}const m=await Promise.all(p);for(const z of m)if(z){const{key:b,textInfo:Y}=z;Y&&(Y.canSync=!0,Y.canWorker=!0,this.control.textEditorManager.updateForViewEdited(b,Y))}Object.keys(w).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var z;this.timerId=void 0,(z=this.control.room)==null||z.setMemberState(w)},0))}}class MM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.SetPoint);f(this,"undoTickerId")}collect(e){var y;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:i,pointMap:n,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const l=a.focusScenePath,c=(y=this.serviceColloctor)==null?void 0:y.storage,h=[],d=r===j.Start&&Date.now()||void 0;d&&(this.undoTickerId=d,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,s));const g=i;if(!g)return;const M=g.toString(),w=this.serviceColloctor.isLocalId(M),v=w&&this.serviceColloctor.transformKey(g)||M;let p=M;!w&&this.serviceColloctor.isOwn(p)&&(p=this.serviceColloctor.getLocalId(p));const m=c[s][l][v];if(m&&p===O&&m.selectIds){const I=m.updateNodeOpt||{};I.pointMap=n,I.workState=r;const N={workId:g,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:I,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===j.Done&&(N.undoTickerId=this.undoTickerId),h.push([N,{workId:g,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}r===j.Start?this.mainEngine.unWritable():r===j.Done&&this.mainEngine.abled(),h.length&&this.collectForLocalWorker(h)}}class fM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.SetLock)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,isLocked:n,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,l=[...i],c=this.serviceColloctor.storage,h=[],d=Date.now();for(;l.length;){const g=l.pop();if(!g)continue;const M=g.toString(),w=this.serviceColloctor.isLocalId(M),v=w?this.serviceColloctor.transformKey(g):M;let p=M;!w&&this.serviceColloctor.isOwn(p)&&(p=this.serviceColloctor.getLocalId(p));const m=c[r][a][v]||void 0;if(m){const y=m.updateNodeOpt||{};y.isLocked=n;const I={workId:p,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:y,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r};h.push([I,{workId:p,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,r),h.length&&this.collectForLocalWorker(h)}}class pM extends ve{constructor(){super(...arguments);f(this,"lastEmtData");f(this,"emitEventType",x.SetShapeOpt)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:n,...r}=e,s=this.control.viewContainerManager.getView(n);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,l=[...i],c=this.serviceColloctor.storage,h=[],d=Date.now();for(;l.length;){const g=l.pop();if(!g)continue;const M=g.toString(),w=this.serviceColloctor.isLocalId(M),v=w?this.serviceColloctor.transformKey(g):M;let p=M;!w&&this.serviceColloctor.isOwn(p)&&(p=this.serviceColloctor.getLocalId(p));const m=c[n][a][v]||void 0;if(m){const y={...m.updateNodeOpt,...r,willRefresh:!0};if(m&&p===O){const I={workId:p,msgType:D.UpdateNode,dataType:V.Local,updateNodeOpt:y,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:n};h.push([I,{workId:p,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n),this.collectForLocalWorker(h))}}class H{constructor(t){f(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case x.TranslateNode:return new cM;case x.ZIndexNode:return new aM;case x.CopyNode:return new sM;case x.SetColorNode:return new rM;case x.DeleteNode:return new lM;case x.ScaleNode:return new uM;case x.RotateNode:return new hM;case x.SetFontStyle:return new gM;case x.SetPoint:return new MM;case x.SetLock:return new fM;case x.SetShapeOpt:return new pM}}getBuilder(t){return this.builders.get(t)}registerForMainEngine(t,e){return this.builders.forEach(i=>{i&&i.registerForMainEngine(t,e)}),this}destroy(){this.builders.forEach(t=>{t&&t.destroy()}),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,i){ve.dispatch(t,e,i)}static activeListener(t){de.InternalMsgEmitter.on(x.ActiveMethod,t)}static unmountActiveListener(t){de.InternalMsgEmitter.off(x.ActiveMethod,t)}}class yM{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 IM extends yM{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:i,internalMsgEmitter:n}=e;this.control=i,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=n,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 i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===C.Pencil||e===C.LaserPen||e===C.Arrow||e===C.Straight||e===C.Ellipse||e===C.Rectangle||e===C.Star||e===C.Polygon||e===C.SpeechBalloon}get isCanDrawWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===C.Pencil||e===C.LaserPen||e===C.Arrow||e===C.Straight||e===C.Ellipse||e===C.Rectangle||e===C.Star||e===C.Polygon||e===C.SpeechBalloon||e===C.Triangle||e===C.Rhombus}get isUseZIndex(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===C.Pencil||e===C.Arrow||e===C.Straight||e===C.Ellipse||e===C.Rectangle||e===C.Star||e===C.Polygon||e===C.SpeechBalloon||e===C.Text||e===C.Image}get isCanRecordUndoRedo(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===C.Pencil||e===C.Eraser||e===C.Arrow||e===C.Straight||e===C.Ellipse||e===C.Rectangle||e===C.Star||e===C.Polygon||e===C.SpeechBalloon||e===C.Text||e===C.Image}get isCanSentCursor(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===C.Pencil||e===C.Text||e===C.LaserPen||e===C.Arrow||e===C.Straight||e===C.Ellipse||e===C.Rectangle||e===C.Star||e===C.Polygon||e===C.SpeechBalloon||e===C.Triangle||e===C.Rhombus}get isCanStartEventConsum(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===C.Selector||e===C.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-DHkeFixk.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:i,sp:n,drawCount:r,workerTasksqueueCount:s}=e.data;if(this.isBusy&&s&&this.setWorkerTasksqueueCount(s),n!=null&&n.length&&this.collectorSyncData(n),!r&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}r&&(this.wokerDrawCount=r,this.wokerDrawCount<1/0?this.maxDrawCount=Math.max(this.maxDrawCount,this.wokerDrawCount):(this.maxDrawCount=0,this.clearReRenders()),i!=null&&i.length&&(this.viewContainerManager.render(i),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:i,drawCount:n,sp:r}=e.data;if(r!=null&&r.length&&this.collectorSyncData(r),!n&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}n&&(this.subWorkerDrawCount=n,this.wokerDrawCount<1/0&&(this.maxDrawCount=Math.max(this.maxDrawCount,this.subWorkerDrawCount)),i!=null&&i.length&&(this.subWorkerDrawCount>this.wokerDrawCount?i.forEach(s=>{s.imageBitmap&&(s.isUnClose=!0,this.reRenders.push(s))}):this.reRenders.length&&this.clearReRenders(),this.wokerDrawCount<1/0&&this.viewContainerManager.render(i)))}}}clearReRenders(){this.reRenders.length&&(this.reRenders.forEach(e=>{var i;e.imageBitmap&&((i=e.imageBitmap)==null||i.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 i=Math.max(this.workerTasksqueueCount||0,e);this.workerTasksqueueCount=i}collectorSyncData(e){var n,r,s;let i=!1;for(const a of e){const{type:l,selectIds:c,opt:h,selectRect:d,strokeColor:g,fillColor:M,willSyncService:w,isSync:v,imageBitmap:p,canvasHeight:m,canvasWidth:y,rect:I,op:N,canTextEdit:T,points:z,selectorColor:b,canRotate:Y,scaleType:R,textOpt:U,toolsType:A,workId:W,viewId:Q,dataType:X,canLock:re,isLocked:ee,shapeOpt:F,toolsTypes:J}=a;if(!Q)return;const te=a.scenePath||this.viewContainerManager.getCurScenePath(Q);switch(l){case D.Select:{const L=c!=null&&c.length?{...d,selectIds:c,canvasHeight:m,canvasWidth:y,points:z}:void 0;L&&(h!=null&&h.strokeColor)&&(L.selectorColor=h.strokeColor),L&&b&&(L.selectorColor=b),L&&g&&(L.strokeColor=g),L&&(h!=null&&h.fillColor)&&(L.fillColor=h.fillColor),L&&M&&(L.fillColor=M),L&&S.isBoolean(Y)&&(L.canRotate=Y),L&&R&&(L.scaleType=R),L&&T&&(L.canTextEdit=T),L&&U&&(L.textOpt=U),L&&S.isBoolean(re)&&(L.canLock=re),L&&S.isBoolean(ee)&&(L.isLocked=ee),L&&F&&(L.shapeOpt=F),L&&J&&(L.toolsTypes=J),Q&&this.viewContainerManager.showFloatBar(Q,!!L,L),w&&((n=this.collector)==null||n.dispatch({type:l,selectIds:c,opt:h,isSync:v,viewId:Q,scenePath:te}));break}case D.Snapshot:if(p&&te){const L=this.snapshotMap.get(te);L&&L(p)}break;case D.BoundingBox:if(I&&te){const L=this.boundingRectMap.get(te);L&&L(I)}break;case D.Cursor:N&&this.control.cursor.collectServiceCursor({...a});break;case D.Clear:if(Q){this.viewContainerManager.showFloatBar(Q,!1);const L=(r=this.clearAllResolveMap.get(Q))==null?void 0:r.resolve;L&&L(Q)}break;case D.TextUpdate:if(A===C.Text&&W&&Q){const L=this.viewContainerManager.transformToOriginPoint((h==null?void 0:h.boxPoint)||[0,0],Q),B=(h==null?void 0:h.boxSize)||[0,0],_=(s=this.viewContainerManager.getView(Q))==null?void 0:s.cameraOpt;h?this.control.textEditorManager.updateTextForWorker({x:L[0],y:L[1],w:B[0],h:B[1],scale:(_==null?void 0:_.scale)||1,workId:W,opt:h,dataType:X,viewId:Q,canSync:w||!1,canWorker:!1}):this.control.textEditorManager.delete(W,w||!1,!1)}break;case D.GetTextActive:A===C.Text&&W&&Q&&this.control.textEditorManager.updateTextForWorker({workId:W,isActive:!0,viewId:Q,dataType:V.Local,canWorker:!1,canSync:!0},Date.now());break;default:i=!0;break}}i&&Je(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var i,n,r,s;for(const a of e){const{type:l,op:c,workId:h,index:d,removeIds:g,ops:M,opt:w,updateNodeOpt:v,toolsType:p,isSync:m,viewId:y,isLockSentEventCursor:I}=a;if(!y){console.error("collectorAsyncData",a);return}const N=a.scenePath||this.viewContainerManager.getCurScenePath(y);switch(l){case D.DrawWork:{(i=this.collector)==null||i.dispatch({type:l,op:c,opt:w,toolsType:p,workId:h,index:d,isSync:m,viewId:y,scenePath:N,updateNodeOpt:v});break}case D.FullWork:{(n=this.collector)==null||n.dispatch({type:l,ops:M,workId:h,updateNodeOpt:v,opt:w,toolsType:p,isSync:m,viewId:y,scenePath:N}),this.willSelectorWorkId&&h&&h.toString()===this.willSelectorWorkId&&this.control.runEffectWork(()=>{this.setShapeSelectorByWorkId(this.willSelectorWorkId,y),this.willSelectorWorkId=void 0}),I&&Je(()=>{this.setLockSentEventCursor(!1)},this.maxLastSyncTime);break}case D.UpdateNode:{(r=this.collector)==null||r.dispatch({type:l,updateNodeOpt:v,workId:h,opt:w,ops:M,op:c,isSync:m,viewId:y,scenePath:N});break}case D.RemoveNode:{g&&this.control.textEditorManager.deleteBatch(g,!1,!1),(s=this.collector)==null||s.dispatch({type:l,removeIds:g,isSync:m,viewId:y,scenePath:N}),this.willSelectorWorkId&&(g!=null&&g.includes(this.willSelectorWorkId))&&(this.willSelectorWorkId=void 0);break}}}}async onLocalEventEnd(e,i){var c;const n=this.viewContainerManager.getView(i);if(!n)return;const{focusScenePath:r,cameraOpt:s}=n,a=this.viewContainerManager.transformToScenePoint(e,i),l=[];for(const h of this.localPointsBatchData.keys())if(((c=this.currentToolsData)==null?void 0:c.toolsType)===C.Text){const d=this.getLocalPointInfo(h),g=d==null?void 0:d.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:ze.Text,isActive:!0,viewId:i,scenePath:r},Date.now())}this.deleteLocalPoint(h);continue}else this.pushLocalPoint(h,a,j.Done,i),l.push(h);if(l.length){try{if(await new Promise(d=>{setTimeout(async()=>{l.forEach(g=>{this.setLocalPointIsFullWork(g)}),this.delayWorkStateToDoneResolve=d,this.consume()},0)})&&l[0]){const d=l[0];l.forEach(g=>{this.deleteLocalPoint(g)}),this.willSelectorWorkId=d.toString()}}catch(h){console.log("error",h)}this.delayWorkStateToDoneResolve=void 0,l.length=0}}onLocalEventDoing(e,i){var r;if(((r=this.currentToolsData)==null?void 0:r.toolsType)===C.Text)return;this.currentLocalWorkData.workState===j.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:j.Doing});let n=!1;for(const[s,{state:a}]of this.localPointsBatchData.entries())if(this.isAbled()&&a!==j.Pending){const l=this.viewContainerManager.transformToScenePoint(e,i);this.pushLocalPoint(s,l,a===j.Start?j.Doing:a,i),n=!0}if(n){this.runAnimation();return}this.useTasksqueue||this.hoverCursor(e,i)}onLocalEventStart(e,i){var a,l,c,h,d;this.viewContainerManager.focuedViewId!==i&&this.viewContainerManager.setFocuedViewId(i),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const n=((a=this.currentToolsData)==null?void 0:a.toolsType)===C.Selector?O:Date.now(),r=this.setZIndex(i);this.setCurrentLocalWorkData({workState:j.Start,toolsOpt:r,viewId:i});const s=this.viewContainerManager.transformToScenePoint(e,i);if(this.pushLocalPoint(n,s,j.Start,i,r),((l=this.currentToolsData)==null?void 0:l.toolsType)!==C.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",n,i),n&&r&&((c=this.currentToolsData)!=null&&c.toolsType)&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:n,toolsOpt:r,viewId:i},(h=this.currentToolsData)==null?void 0:h.toolsType),this.maxDrawCount=0,this.wokerDrawCount=0,this.subWorkerDrawCount=0,this.reRenders.length=0,this.isCanDrawWork){const g=this.viewContainerManager.getCurScenePath(i);g&&((d=this.collector)!=null&&d.hasSelector(i,g))&&this.blurSelector(i,g)}this.consume()}}setLocalPointIsFullWork(e){const i=this.getLocalPointInfo(e);i&&(i.isFullWork=!0,this.localPointsBatchData.set(e,i))}pushLocalPoint(e,i,n,r,s){let a=this.getLocalPointInfo(e);n===j.Start?a={state:j.Start,points:i,opt:s||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:r}:a&&(a.state=n,a.points.push(i[0],i[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,i,n){var l;const r=new Map,s=[];Object.keys(e).forEach(c=>{var d,g;const h=(g=(d=e[c])==null?void 0:d.opt)==null?void 0:g.zIndex;S.isNumber(h)&&s.push([c,h])});const a=s.length&&((l=this.zIndexNodeMethod)==null?void 0:l.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,i),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,i));for(const[c,h]of a){if(!e[c])continue;const d=e[c];d.opt&&S.isNumber(d.opt.zIndex)&&d.opt.zIndex!==h&&(d.opt.zIndex=h,r.set(c,d))}return r.size&&r.forEach((c,h)=>{var d;(d=this.collector)==null||d.updateValue(h,c,{viewId:i,scenePath:n,isSync:!0}),e[h]=c}),e}async originalEventLintener(e,i,n){if(this.isAbled())switch(e){case j.Start:this.setLocalWorkViewId(n),n&&this.onLocalEventStart(i,n);break;case j.Doing:n&&n===this.getLocalWorkViewId()&&this.onLocalEventDoing(i,n);break;case j.Done:n&&n===this.getLocalWorkViewId()&&await this.onLocalEventEnd(i,n);break}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var r,s,a;const i=e.toolsType,n=((r=this.currentToolsData)==null?void 0:r.toolsType)!==e.toolsType;if(super.setCurrentToolsData(e),n){const l=(s=this.viewContainerManager)==null?void 0:s.getAllViews();for(const c of l)if(c){const{id:h,focusScenePath:d}=c;n&&h&&d&&((a=this.collector)!=null&&a.hasSelector(h,d)&&this.blurSelector(h,d),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:D.UpdateTools,dataType:V.Local,toolsType:i,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:Po}),this.runAnimation()}}prepareOnceWork(e,i){const{workId:n,toolsOpt:r,viewId:s}=e;this.queryTaskBatchData({msgType:D.CreateWork,dataType:V.Local,viewId:s,toolsType:i}).forEach(a=>{this.taskBatchData.delete(a)}),this.taskBatchData.add({msgType:D.CreateWork,workId:n,toolsType:i,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:V.Local,isRunSubWork:this.isRunSubWork,viewId:s}),this.runAnimation()}createViewWorker(e,i){const{offscreenCanvasOpt:n,layerOpt:r,dpr:s,cameraOpt:a}=i;this.taskBatchData.add({msgType:D.Init,dataType:V.Local,viewId:e,offscreenCanvasOpt:n,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,i=!1){var n;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:D.Destroy,dataType:V.Local,viewId:e,isRunSubWork:!0}),this.consume(),i||(n=this.collector)==null||n.dispatch({type:D.Clear,viewId:e})}onServiceDerive(e,i){var M,w,v,p;const{newValue:n,oldValue:r,viewId:s,scenePath:a}=i,l=S.cloneDeep(n)||{},c=e;let h=l.type;if(!n&&r&&(h=D.RemoveNode,r.toolsType===C.LaserPen))return;const d=(M=this.viewContainerManager.getView(s))==null?void 0:M.focusScenePath;if(d&&d!==a)return;if(h&&c){const m=l;if(m.workId=(w=this.collector)!=null&&w.isOwn(c)?(v=this.collector)==null?void 0:v.getLocalId(c):c,m.msgType=h,m.toolsType===C.LaserPen&&(m.isRunSubWork=!0),m.dataType=V.Service,m.viewId=s,m.scenePath=a,m.selectIds&&(m.selectIds=m.selectIds.map(y=>{var I,N;return(I=this.collector)!=null&&I.isOwn(y)?(N=this.collector)==null?void 0:N.getLocalId(y):y})),m&&m.toolsType===C.Text||(r==null?void 0:r.toolsType)===C.Text){this.control.textEditorManager.onServiceDerive(m);return}this.taskBatchData.add(m)}this.runAnimation();const g=i.newValue&&((p=i.newValue.opt)==null?void 0:p.zIndex);if(this.zIndexNodeMethod&&S.isNumber(g)){const m=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<g&&this.zIndexNodeMethod.setMaxZIndex(g,s),m>g&&this.zIndexNodeMethod.setMinZIndex(g,s)}}pullServiceData(e,i,n={isAsync:!1,useAnimation:!1}){var l,c,h,d;let r=(l=this.collector)==null?void 0:l.getStorageData(e,i);const{isAsync:s,useAnimation:a}=n;if(r){r=this.correctStorage(r,e,i);const g=Object.keys(r);for(const M of g){const w=(c=r[M])==null?void 0:c.type;if(w&&M){const v=r[M];if(v.workId=(h=this.collector)!=null&&h.isOwn(M)?(d=this.collector)==null?void 0:d.getLocalId(M):M,v.msgType=w,v.dataType=V.Service,v.viewId=e,v.scenePath=i,v.useAnimation=!!a,v.selectIds&&(v.selectIds=v.selectIds.map(p=>{var m,y;return(m=this.collector)!=null&&m.isOwn(p)?(y=this.collector)==null?void 0:y.getLocalId(p):p})),v.toolsType===C.Text){this.control.textEditorManager.onServiceDerive(v);continue}this.taskBatchData.add(v)}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 i;this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const n=this.consumeQueue(),r=!!n.size;if(this.taskBatchData.size)for(const s of this.taskBatchData.values())s.dataType===V.Service&&(n.add(s),this.taskBatchData.delete(s));n.size?(this.post(n),r&&this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[n,{state:r,isFullWork:s,points:a,opt:l}]of this.localPointsBatchData.entries()){if(r===j.Done&&!s||r===j.Start&&!this.isCanStartEventConsum)continue;const c=a.map(h=>h);c.length&&(this.delayWorkStateToDoneResolve&&r===j.Done&&(this.delayWorkStateToDoneResolve(!0),this.setLockSentEventCursor(!0)),this.taskBatchData.add({op:c,workState:r,workId:n,dataType:V.Local,msgType:D.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(i=this.currentToolsData)==null?void 0:i.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){const i=[...e].filter(r=>r.msgType!==D.CursorHover);if(i.length&&console.log("post",i.map(r=>r.msgType),i),!this.control.hasOffscreenCanvas()){if(!this.mainThread){let r=[];r=S.cloneDeep([...e]),setTimeout(()=>{for(const s of r)this.taskBatchData.add(s)},0);return}this.mainThread.consume(e);return}this.fullWorker.postMessage(e);const n=new Set;for(const r of e.values()){const s=r.msgType;(s===D.Init||s===D.Clear||s===D.Destroy||s===D.UpdateCamera||r.isRunSubWork)&&n.add(r)}n.size&&this.subWorker.postMessage(n)}updateNode(e,i,n,r){this.taskBatchData.add({msgType:D.UpdateNode,workId:e,updateNodeOpt:i,viewId:n,scenePath:r,dataType:V.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,i){var n;this.useTasksqueue||((n=this.methodBuilder)==null||n.pause(),this.blurCursor(e),this.checkDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:D.UpdateCamera,dataType:V.Local,cameraOpt:{...i,width:i.width,height:i.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 i=!this.isBusy;if(this.isBusy&&this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount<=this.workerTasksqueueCount&&(i=!0),i){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:D.TasksQueue,dataType:V.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[n,r]of this.tasksqueue.entries())r.cameraOpt&&this.control.textEditorManager.onCameraChange(r.cameraOpt,n)}return e}async clearViewScenePath(e,i){var n;if(this.control.textEditorManager.clear(e,i),this.queryTaskBatchData({msgType:D.Clear,dataType:V.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add({dataType:V.Local,msgType:D.Clear,viewId:e}),this.runAnimation(),!i){const r=this.viewContainerManager.getCurScenePath(e);(n=this.collector)==null||n.dispatch({type:D.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 H([x.CopyNode,x.SetColorNode,x.DeleteNode,x.RotateNode,x.ScaleNode,x.TranslateNode,x.ZIndexNode,x.RotateNode,x.SetFontStyle,x.SetPoint,x.SetLock,x.SetShapeOpt]).registerForMainEngine($.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(x.ZIndexNode)}setZIndex(e){const i=this.currentToolsData&&S.cloneDeep(this.currentToolsData.toolsOpt);return i&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),i.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),i}checkDrawingWork(e){var r,s,a;let i=!1;const n=[];for(const[l,{state:c,viewId:h,points:d,opt:g}]of this.localPointsBatchData.entries())if(e===h&&c===j.Start||c===j.Doing){if(c===j.Doing&&this.isCanDrawWork){Number(l)&&Number(l)+60>Date.now()&&(n.push(l.toString()),this.taskBatchData.add({msgType:D.RemoveNode,workId:l,viewId:h,dataType:V.Local,isRunSubWork:!0}));const M=d.map(w=>w);this.taskBatchData.add({op:M,workState:j.Done,workId:l,dataType:V.Local,msgType:D.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:(r=this.currentToolsData)==null?void 0:r.toolsType,viewId:h,opt:g,scenePath:h&&this.viewContainerManager.getCurScenePath(h)}),i=!0}this.deleteLocalPoint(l)}if((i||n.length)&&(this.consume(),n.length)){const l=(s=this.viewContainerManager.getView(e))==null?void 0:s.focusScenePath;(a=this.collector)==null||a.dispatch({type:D.RemoveNode,removeIds:n,viewId:e,scenePath:l})}}removeDrawingWork(e){var n,r;const i=[];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&&(i.push(s.toString()),this.taskBatchData.add({msgType:D.RemoveNode,workId:s,viewId:l,dataType:V.Local,isRunSubWork:!0})));if(i.length){this.consume();const s=(n=this.viewContainerManager.getView(e))==null?void 0:n.focusScenePath;(r=this.collector)==null||r.dispatch({type:D.RemoveNode,removeIds:i,viewId:e,scenePath:s})}}hoverCursor(e,i){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)===C.Selector){const r=this.viewContainerManager.getView(i);if(r&&r.displayer&&r.displayer.vDom){const l=r.displayer.vDom.state.floatBarData;if(l){const{x:c,y:h,w:d,h:g}=l;if($o(e,{x:c,y:h,w:d,h:g}))return}}const s=this.viewContainerManager.transformToScenePoint(e,i),a={msgType:D.CursorHover,dataType:V.Local,point:s,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:i};this.queryTaskBatchData({msgType:D.CursorHover,dataType:V.Local,toolsType:this.currentToolsData.toolsType,viewId:i}).forEach(l=>{this.taskBatchData.delete(l)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==C.Selector)return;const i={msgType:D.CursorBlur,dataType:V.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:D.CursorHover,dataType:V.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add(i),this.consume()}sendCursorEvent(e,i){if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===j.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;let n=[void 0,void 0];this.currentToolsData&&(this.isCanDrawWork||this.currentToolsData.toolsType===C.Text)&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(n=e,this.control.cursor.sendEvent(n,i))}getBoundingRect(e){var n,r;if(!((n=this.boundingRectMap)==null?void 0:n.get(e))){const s=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!s)return;if(Object.keys(s).forEach(a=>{var l;((l=this.collector)==null?void 0:l.getLocalId(a))===O&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:D.BoundingBox,dataType:V.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,i,n,r){var a,l,c,h,d;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(w=>{var v;((v=this.collector)==null?void 0:v.getLocalId(w))===O&&delete M[w]}),Object.keys(M).length){const w=this.viewContainerManager.mainView;if(!w)return;const v=i||((h=w.cameraOpt)==null?void 0:h.width),p=n||((d=w.cameraOpt)==null?void 0:d.height),m={msgType:D.Snapshot,dataType:V.Local,scenePath:e,scenes:M,w:v,h:p,cameraOpt:r&&{...r,width:v,height:p}||w.cameraOpt,isRunSubWork:!0,viewId:w.id};return this.taskBatchData.add(m),this.runAnimation(),new Promise(y=>{this.snapshotMap.set(e,y)}).then(y=>(this.snapshotMap.delete(e),y))}}}queryTaskBatchData(e){const i=[];if(e)for(const n of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(n[s]!==a){r=!1;break}r&&i.push(n)}return i}insertImage(e){const i=this.viewContainerManager.mainView,n=i==null?void 0:i.id,r=i==null?void 0:i.focusScenePath;if(n&&r){const{src:s,uuid:a}=e;if(a&&!s){this.tmpImageConfigMap.set(a,e);return}const l=Date.now();de.InternalMsgEmitter.emit("addUndoTicker",l,n);const c={...e};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(n),c.zIndex=this.zIndexNodeMethod.getMaxZIndex(n)),this.taskBatchData.add({msgType:D.FullWork,dataType:V.Local,toolsType:C.Image,workId:e.uuid,opt:c,viewId:n,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,i){var a,l;const n=this.viewContainerManager.mainView,r=n==null?void 0:n.id,s=n==null?void 0:n.focusScenePath;if(r&&s&&this.collector){const c=this.collector.getStorageData(r,s);if(!c)return;for(const[h,d]of Object.entries(c))if(d&&d.toolsType===C.Image&&d.opt.uuid===e){const g=Date.now();de.InternalMsgEmitter.emit("addUndoTicker",g,r);const M=(a=this.collector)!=null&&a.isOwn(h)?(l=this.collector)==null?void 0:l.getLocalId(h):h,w={...d.opt,locked:i};this.taskBatchData.add({msgType:D.FullWork,dataType:V.Local,toolsType:C.Image,workId:M,opt:w,viewId:r,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,i){const n=this.viewContainerManager.mainView,r=n==null?void 0:n.id,s=n==null?void 0:n.focusScenePath;if(r&&s){const a=this.tmpImageConfigMap.get(e);a&&(a.src=i,this.insertImage(a),this.tmpImageConfigMap.delete(e));return}}getImagesInformation(e){const i=[];if(this.collector){const n=this.collector.getScenePathData(e);if(!n)return i;for(const r of Object.values(n))if(r&&r.toolsType===C.Image){const s=r.opt;i.push({uuid:s.uuid,centerX:s.centerX,centerY:s.centerY,width:s.width,height:s.height,locked:s.locked,uniformScale:s.uniformScale,crossOrigin:s.crossOrigin})}}return i}setShapeSelectorByWorkId(e,i){this.taskBatchData.add({workId:O,selectIds:[e],msgType:D.Select,dataType:V.Local,viewId:i,willSyncService:!0}),this.runAnimation()}blurSelector(e,i){this.taskBatchData.add({workId:O,selectIds:[],msgType:D.Select,dataType:V.Service,viewId:e,scenePath:i}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:D.Console,dataType:V.Local,isRunSubWork:!0,viewId:""}),this.consume()}}var wM=je,vM=function(){return wM.Date.now()},mM=vM,NM=/\s/;function TM(o){for(var t=o.length;t--&&NM.test(o.charAt(t)););return t}var CM=TM,zM=CM,jM=/^\s+/;function SM(o){return o&&o.slice(0,zM(o)+1).replace(jM,"")}var xM=SM,kM=Qe,DM=Ee,bM="[object Symbol]";function LM(o){return typeof o=="symbol"||DM(o)&&kM(o)==bM}var EM=LM,AM=xM,Xi=Ye,OM=EM,eo=NaN,PM=/^[-+]0x[0-9a-f]+$/i,YM=/^0b[01]+$/i,RM=/^0o[0-7]+$/i,WM=parseInt;function UM(o){if(typeof o=="number")return o;if(OM(o))return eo;if(Xi(o)){var t=typeof o.valueOf=="function"?o.valueOf():o;o=Xi(t)?t+"":t}if(typeof o!="string")return o===0?o:+o;o=AM(o);var e=YM.test(o);return e||RM.test(o)?WM(o.slice(2),e?2:8):PM.test(o)?eo:+o}var $M=UM,QM=Ye,Ht=mM,to=$M,HM="Expected a function",BM=Math.max,FM=Math.min;function VM(o,t,e){var i,n,r,s,a,l,c=0,h=!1,d=!1,g=!0;if(typeof o!="function")throw new TypeError(HM);t=to(t)||0,QM(e)&&(h=!!e.leading,d="maxWait"in e,r=d?BM(to(e.maxWait)||0,t):r,g="trailing"in e?!!e.trailing:g);function M(z){var b=i,Y=n;return i=n=void 0,c=z,s=o.apply(Y,b),s}function w(z){return c=z,a=setTimeout(m,t),h?M(z):s}function v(z){var b=z-l,Y=z-c,R=t-b;return d?FM(R,r-Y):R}function p(z){var b=z-l,Y=z-c;return l===void 0||b>=t||b<0||d&&Y>=r}function m(){var z=Ht();if(p(z))return y(z);a=setTimeout(m,v(z))}function y(z){return a=void 0,g&&i?M(z):(i=n=void 0,s)}function I(){a!==void 0&&clearTimeout(a),c=0,i=l=n=a=void 0}function N(){return a===void 0?s:y(Ht())}function T(){var z=Ht(),b=p(z);if(i=arguments,n=this,l=z,b){if(a===void 0)return w(l);if(d)return clearTimeout(a),a=setTimeout(m,t),M(l)}return a===void 0&&(a=setTimeout(m,t)),s}return T.cancel=I,T.flush=N,T}var ZM=VM,GM=ZM,JM=Ye,qM="Expected a function";function KM(o,t,e){var i=!0,n=!0;if(typeof o!="function")throw new TypeError(qM);return JM(e)&&(i="leading"in e?!!e.leading:i,n="trailing"in e?!!e.trailing:n),GM(o,t,{leading:i,maxWait:t,trailing:n})}var _M=KM;const rt=ct(_M);class XM{constructor(t){f(this,"internalMsgEmitter");f(this,"control");f(this,"roomHotkeyCheckers");f(this,"tmpCopyStore",new Map);f(this,"tmpCopyCoordInfo");var n;const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.roomHotkeyCheckers=((n=this.control.room)==null?void 0:n.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)===C.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 n,r,s;const e=this.control.viewContainerManager.focuedViewId,i=(n=this.control.viewContainerManager.focuedView)==null?void 0:n.focusScenePath;if(e&&i)switch(t){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,i))&&H.emitMethod($.MainEngine,x.DeleteNode,{workIds:[O],viewId:e});break;case"copy":this.isSelector&&((s=this.collector)!=null&&s.hasSelector(e,i))&&this.copySelectorToTemp(e,i);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,i);break}(t==="changeToPencil"||t==="redo"||t==="undo")&&this.onSelfActiveHotkey(t)}colloctHotkey(t){if(this.isUseSelf){const e=this.checkHotkey(t);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(t){switch(t){case"changeToPencil":this.setMemberState({currentApplianceName:Z.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:Z.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:Z.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:Z.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:Z.eraser,isLine:!0});break;case"changeToHand":this.setMemberState({currentApplianceName:Z.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:Z.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:Z.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:Z.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:Z.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:Z.text});break}}checkHotkey(t){for(const e of this.roomHotkeyCheckers){const{kind:i,checker:n}=e;if(n({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return i}}copySelectorToTemp(t,e){var c,h;const i=this.control.viewContainerManager.getView(t),n=(h=(c=this.mainEngine)==null?void 0:c.methodBuilder)==null?void 0:h.getBuilder(x.CopyNode);if(!i||!this.collector||!n)return;const r=this.collector.transformKey(O),s=this.collector.getStorageData(t,e);if(!s)return;const a=s[r],l=a&&n.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 i=this.control.viewContainerManager.getView(t),n=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(x.CopyNode);if(!(!i||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!n)&&i.viewData&&this.tmpCopyCoordInfo){const a=S.cloneDeep(this.tmpCopyCoordInfo.offset),l=this.tmpCopyCoordInfo.cameraOpt,c=i.viewData.camera;a.x=a.x+c.centerX-l.centerX,a.y=a.y+c.centerY-l.centerY;const h=Date.now();this.control.worker.internalMsgEmitter.emit("addUndoTicker",h,t),n.pasteSelector({viewId:t,scenePath:e,copyStores:S.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:c},undoTickerId:h})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const st=class st{constructor(t){f(this,"version",Ao);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 i=this.viewContainerManager.getView(e);i!=null&&i.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,i.focusScenePath)&&this.worker.blurSelector(e,i.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const n=i==null?void 0:i.displayer;n&&(n.setActive(!1),await n.stopEventHandler());const r=t;r&&this.viewContainerManager.setViewScenePath(e,r),n==null||n.setActive(!0)});f(this,"onRoomMembersChange",t=>{this.roomMember.setRoomMembers(K.toJS(t))});f(this,"onMemberChange",rt(t=>{if(!this.room||!this.worker||!t)return;const e=this.getToolsKey(t),i=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(i),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));f(this,"internalSceneChange",(t,e)=>{var i;(i=this.worker)==null||i.clearViewScenePath(t,!0).then(()=>{var n;(n=this.worker)==null||n.pullServiceData(t,e,{isAsync:!0,useAnimation:!1})})});f(this,"internalCameraChange",(t,e)=>{var i;(i=this.worker)==null||i.updateCamera(t,e)});const{displayer:e,plugin:i,options:n}=t;this.plugin=i,this.room=K.isRoom(e)?e:void 0,this.play=K.isPlayer(e)?e:void 0,this.pluginOptions=n,this.roomMember=new eM;const r={control:this,internalMsgEmitter:st.InternalMsgEmitter};this.cursor=new nM(r),this.textEditorManager=new oM(r),this.worker=new IM(r),this.hotkeyManager=new XM(r)}hasOffscreenCanvas(){return Oo==="worker"}bindPlugin(t){var e,i;this.plugin=t,this.collector&&this.collector.removeStorageStateListener(),this.collector=new _t(this,t,(i=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:i.interval),this.activePlugin()}destroy(){var t,e,i,n,r;this.roomMember.destroy(),(t=this.collector)==null||t.destroy(),(e=this.worker)==null||e.destroy(),(i=this.viewContainerManager)==null||i.destroy(),(n=this.cursor)==null||n.destroy(),(r=this.textEditorManager)==null||r.destory()}cleanCurrentScene(){const t=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(st.InternalMsgEmitter.emit("addUndoTicker",t,e),this.worker.clearViewScenePath(e))}onWritableChange(t){var e,i;t?(i=this.worker)==null||i.abled():(e=this.worker)==null||e.unWritable()}getToolsKey(t){const e=t.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case Z.text:return t.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),C.Text;case Z.pencil:return t.useLaserPen?C.LaserPen:C.Pencil;case Z.eraser:case Z.pencilEraser:return C.Eraser;case Z.selector:return C.Selector;case Z.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),C.Arrow;case Z.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),C.Straight;case Z.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),C.Ellipse;case Z.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),C.Rectangle;case Z.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===Te.Pentagram||t.shapeType===Te.Star)return C.Star;if(t.shapeType===Te.Polygon||t.shapeType===Te.Triangle||t.shapeType===Te.Rhombus)return C.Polygon;if(t.shapeType===Te.SpeechBalloon)return C.SpeechBalloon;break}return C.Clicker}getToolsOpt(t,e){if(t===C.Clicker)return{toolsType:t,toolsOpt:{}};const i=e.currentApplianceName,n={strokeColor:ft(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 C.Text:n.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),n.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),n.textAlign=(e==null?void 0:e.textAlign)||"left",n.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",n.fontColor=(e==null?void 0:e.textColor)&&ft(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||n.strokeColor||"rgba(0,0,0,1)",n.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&ft(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",n.bold=(e==null?void 0:e.bold)&&"bold"||void 0,n.italic=(e==null?void 0:e.italic)&&"italic"||void 0,n.underline=(e==null?void 0:e.underline)||void 0,n.lineThrough=(e==null?void 0:e.lineThrough)||void 0,n.text="",n.strokeColor=void 0;break;case C.Pencil:n.strokeType=(e==null?void 0:e.strokeType)||vt.Normal;break;case C.Eraser:n.thickness=Math.min(3,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,n.isLine=i===Z.eraser&&!0;break;case C.LaserPen:n.duration=(e==null?void 0:e.duration)||1,n.strokeType=(e==null?void 0:e.strokeType)||vt.Normal;break;case C.Ellipse:case C.Rectangle:case C.Star:case C.Polygon:case C.SpeechBalloon:t===C.Star&&(e.shapeType===Te.Pentagram?(n.vertices=10,n.innerVerticeStep=2,n.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(n.vertices=e.vertices,n.innerVerticeStep=e.innerVerticeStep,n.innerRatio=e.innerRatio)),t===C.Polygon&&(e.shapeType===Te.Triangle?n.vertices=3:e.shapeType===Te.Rhombus?n.vertices=4:e.vertices&&(n.vertices=e.vertices)),n.fillColor=(e==null?void 0:e.fillColor)&&ft(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===C.SpeechBalloon&&(n.placement=e.placement||"bottomLeft");break}return{toolsType:t,toolsOpt:n}}effectViewContainer(t){var e,i,n,r,s;switch(t){case C.Text:case C.Pencil:case C.LaserPen:case C.Arrow:case C.Straight:case C.Rectangle:case C.Ellipse:case C.Star:case C.Polygon:case C.SpeechBalloon:case C.Triangle:case C.Rhombus:this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.abled();break;case C.Eraser:case C.Selector:this.room.disableDeviceInputs=!1,(i=this.cursor)==null||i.unabled(),(n=this.worker)==null||n.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 i,n,r,s,a;const e=await((i=this.worker)==null?void 0:i.getBoundingRect(t));if(e){const l=((r=(n=this.viewContainerManager.mainView)==null?void 0:n.viewData)==null?void 0:r.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},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,i,n,r,s,a){const l=await this.worker.getSnapshot(e,i,n,r);l&&(t.drawImage(l,s||0,a||0),l.close())}async scenePreview(t,e){var s,a,l,c;const i=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(t);if(!i)return;const n=this.viewContainerManager.getView(i);if(!n||!((a=n.cameraOpt)!=null&&a.width)||!((l=n.cameraOpt)!=null&&l.height))return;const r=await((c=this.worker)==null?void 0:c.getSnapshot(t));if(r&&this.worker){const h=document.createElement("canvas"),d=h.getContext("2d"),{width:g,height:M}=n.cameraOpt;h.width=g,h.height=M,d&&(d.drawImage(r,0,0),e.src=h.toDataURL(),e.onload=()=>{h.remove()},e.onerror=()=>{h.remove(),e.remove()}),r.close()}}switchToText(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:Z.text})}switchToSelector(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:Z.selector})}async runEffectWork(t){if(this.hasSwitchToSelectorEffect){const e=await new Promise(i=>{this.switchToSelector(),this.effectResolve=i});this.effectResolve=void 0,e&&t&&t()}}setSnapshootData(){var t;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(t=this.room)==null?void 0:t.state.memberState))}getSnapshootData(t){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(t)}clearSnapshootData(){var t;(t=this.snapshootStateMap)==null||t.clear(),this.snapshootStateMap=void 0}consoleWorkerInfo(){var t;(t=this.worker)==null||t.consoleWorkerInfo()}};f(st,"InternalMsgEmitter",new so);let de=st;const Ue=class Ue{constructor(t){f(this,"emitter",new so);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",S.debounce(()=>{const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){let e=this.undoStack.filter(n=>n.scenePath===t).length;const i=this.redoStack.filter(n=>n.scenePath===t).length;e===0&&i===0&&this.tickStartStorerCache&&this.scenePath===t&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}},Ue.waitTime));const{control:e,internalMsgEmitter:i,viewId:n}=t;this.control=e,this.emitter=i,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=n}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 i=this.collector.transformKey(O);this.excludeIds.add(i),this.undoTickerId=t,this.scenePath=e;const n=this.collector.getStorageData(this.viewId,e)||{};this.tickStartStorerCache=new Map(Object.entries(S.cloneDeep(n)))}}undoTickerEndSync(t,e,i){var n,r;if(t===this.undoTickerId&&i===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const s=((n=this.collector)==null?void 0:n.storage[e])&&((r=this.collector)==null?void 0:r.storage[e][i])||{},a=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(s)));a.size&&(this.undoStack.push({id:t,type:2,data:S.cloneDeep(a),scenePath:i}),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 i=this.undoStack.filter(r=>r.scenePath===t).length,n=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",n),i}redo(t){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===t){const s=this.redoStack[e];s&&(!this.undoTickerId&&s.tickStartStorerCache?(this.undoTickerId=s.id,this.tickStartStorerCache=s.tickStartStorerCache,this.scenePath=s.scenePath):this.undoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const i=this.undoStack.filter(r=>r.scenePath===t).length,n=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",n),n}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(n=>n.scenePath===t).length;const i=this.redoStack.filter(n=>n.scenePath===t).length;e===0&&i===0&&this.tickStartStorerCache&&this.scenePath===t&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}}diffFun(t,e){const i=new Set,n=t.keys(),r=e.keys();for(const s of n){if(this.excludeIds.has(s))continue;const a=t.get(s),l=e.get(s);if(a&&l){if(S.isEqual(l,a))continue;i.add({dataType:3,key:s,data:[a,l]});continue}a&&i.add({dataType:2,key:s,data:a})}for(const s of r){if(this.excludeIds.has(s))continue;const a=e.get(s);a&&!t.has(s)&&i.add({dataType:1,key:s,data:a})}return i}isDrawEffectiveScene(t,e){const{key:i}=t;return!e.includes(i)}isDeleteEffectiveScene(t,e,i){var s;const{key:n}=t;if(!e.includes(n))return!1;const r=e.filter(a=>{var l,c;return((l=this.collector)==null?void 0:l.getLocalId(a))===O&&!((c=this.collector)!=null&&c.isOwn(a))}).map(a=>{var l;return(l=this.collector)==null?void 0:l.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(n))return!1;return!0}isOldEffectiveScene(t,e,i){var s;const{key:n}=t;if(!e.includes(n))return!1;const r=e.filter(a=>{var l,c;return((l=this.collector)==null?void 0:l.getLocalId(a))===O&&!((c=this.collector)!=null&&c.isOwn(a))}).map(a=>{var l;return(l=this.collector)==null?void 0:l.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(n))return!1;return!0}isNewEffectiveScene(t,e){const{key:i}=t;return!!e.includes(i)}refreshPlugin(t,e=!1){var s,a,l,c,h,d,g,M,w,v,p,m,y,I,N,T,z,b,Y,R,U;let i;const{scenePath:n}=t,r=t.data;if(!(!r||!this.collector))for(const A of r.values()){const{dataType:W,data:Q,key:X}=A,re=this.collector.getStorageData(this.viewId,n),ee=re&&Object.keys(re)||[];switch(W){case 1:if(i=e?this.isDrawEffectiveScene(A,ee):this.isDeleteEffectiveScene(A,ee,n),i)if(e&&!Array.isArray(Q)){if((s=Q.updateNodeOpt)!=null&&s.useAnimation&&(Q.updateNodeOpt.useAnimation=!1),((a=this.collector)==null?void 0:a.getLocalId(X))===O&&((l=this.collector)!=null&&l.isOwn(A.key))){const F=Q.selectIds;if(F){const J=ee.filter(L=>{var B,_;return((B=this.collector)==null?void 0:B.getLocalId(L))===O&&!((_=this.collector)!=null&&_.isOwn(L))}).map(L=>{var B;return(B=this.collector)==null?void 0:B.storage[this.viewId][n][L]});let te=!1;for(const L of J)for(let B=0;B<F.length;B++)(c=L==null?void 0:L.selectIds)!=null&&c.includes(F[B])&&(delete F[B],te=!0);te&&(Q.selectIds=F.filter(L=>!!L))}}(h=this.collector)==null||h.updateValue(A.key,Q,{isAfterUpdate:!0,viewId:this.viewId,scenePath:n,isSync:!0})}else!e&&!Array.isArray(A.data)&&((d=this.collector)==null||d.updateValue(A.key,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:n,isSync:!0}));break;case 2:if(i=e?this.isDeleteEffectiveScene(A,ee,n):this.isDrawEffectiveScene(A,ee),i){if(e&&!Array.isArray(Q))(g=this.collector)==null||g.updateValue(X,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:n,isSync:!0});else if(!e&&!Array.isArray(Q)){if((M=Q.updateNodeOpt)!=null&&M.useAnimation&&(Q.updateNodeOpt.useAnimation=!1),((w=this.collector)==null?void 0:w.getLocalId(A.key))===O&&((v=this.collector)!=null&&v.isOwn(A.key))){const F=Q.selectIds;if(F){const J=ee.filter(L=>{var B,_;return((B=this.collector)==null?void 0:B.getLocalId(L))===O&&!((_=this.collector)!=null&&_.isOwn(L))}).map(L=>{var B;return(B=this.collector)==null?void 0:B.storage[this.viewId][n][L]});let te=!1;for(const L of J)for(let B=0;B<F.length;B++)(p=L==null?void 0:L.selectIds)!=null&&p.includes(F[B])&&(delete F[B],te=!0);te&&(Q.selectIds=F.filter(L=>!!L))}}(m=this.collector)==null||m.updateValue(A.key,A.data,{isAfterUpdate:!0,viewId:this.viewId,scenePath:n,isSync:!0})}}break;case 3:if(i=e?this.isNewEffectiveScene(A,ee):this.isOldEffectiveScene(A,ee,n),i){if(e&&Array.isArray(Q)&&Q.length===2){const F=Q[1];if((y=F.updateNodeOpt)!=null&&y.useAnimation&&(F.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(A.key))===O&&((N=this.collector)!=null&&N.isOwn(A.key))){const J=F.selectIds;if(J){const te=ee.filter(B=>{var _,ke;return((_=this.collector)==null?void 0:_.getLocalId(B))===O&&!((ke=this.collector)!=null&&ke.isOwn(B))}).map(B=>{var _;return(_=this.collector)==null?void 0:_.storage[this.viewId][n][B]});let L=!1;for(const B of te)for(let _=0;_<J.length;_++)B!=null&&B.selectIds&&((T=B.selectIds)!=null&&T.includes(J[_]))&&(delete J[_],L=!0);L&&(F.selectIds=J.filter(B=>!!B))}}(z=this.collector)==null||z.updateValue(X,F,{isAfterUpdate:!0,viewId:this.viewId,scenePath:n,isSync:!0})}else if(!e&&Array.isArray(Q)&&Q.length===2){const F=Q[0];if((b=F.updateNodeOpt)!=null&&b.useAnimation&&(F.updateNodeOpt.useAnimation=!1),((Y=this.collector)==null?void 0:Y.getLocalId(A.key))===O&&((R=this.collector)!=null&&R.isOwn(A.key))){const J=F.selectIds;if(J){const te=ee.filter(B=>{var _,ke;return((_=this.collector)==null?void 0:_.getLocalId(B))===O&&!((ke=this.collector)!=null&&ke.isOwn(B))}).map(B=>{var _;return(_=this.collector)==null?void 0:_.storage[this.viewId][n][B]});let L=!1;for(const B of te)for(let _=0;_<J.length;_++)B!=null&&B.selectIds&&B.selectIds.includes(J[_])&&(delete J[_],L=!0);L&&(F.selectIds=J.filter(B=>!!B))}}(U=this.collector)==null||U.updateValue(A.key,F,{isAfterUpdate:!0,viewId:this.viewId,scenePath:n,isSync:!0})}}break}}}};f(Ue,"sdkCallBack"),f(Ue,"MaxStackLength",20),f(Ue,"waitTime",100);let jt=Ue;function ef(o){return o instanceof TouchEvent||o instanceof window.TouchEvent||(o==null?void 0:o.touches)&&(o==null?void 0:o.touches.length)||(o==null?void 0:o.changedTouches)&&(o==null?void 0:o.changedTouches.length)}function Ze(o){return ef(o)&&(o.touches&&o.touches.length===1||o.changedTouches&&o.changedTouches.length===1)}function Qo(o){return o.touches&&o.touches.length?{x:o.touches[0].pageX,y:o.touches[0].pageY}:o.changedTouches&&o.changedTouches.length?{x:o.changedTouches[0].pageX,y:o.changedTouches[0].pageY}:{x:o.pageX,y:o.pageY}}class Ge{constructor(t){f(this,"internalMsgEmitter");f(this,"control");f(this,"mainView");f(this,"appViews",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart.bind(this)),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds.bind(this))}undoTickerStart(t,e){const i=this.getView(e);i&&i.displayer&&i.focusScenePath&&i.displayer.commiter.undoTickerStart(t,i.focusScenePath)}addExcludeIds(t,e){const i=this.getView(e);i&&i.displayer&&i.focusScenePath&&i.displayer.commiter.addExcludeIds(t)}undo(){const t=this.focuedView;let e=0;if(t){const i=t.focusScenePath;e=t.displayer.commiter.undo(i)||0}return e}redo(){const t=this.focuedView;let e=0;if(t){const i=t.focusScenePath;e=t.displayer.commiter.redo(i)||0}return e}validator(t,e,i){var s;const n=S.clone(t[e]),r=S.clone(i);e==="focusScenePath"&&i&&!S.isEqual(n,r)&&(this.control.internalSceneChange(t.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!S.isEqual(n,r)&&this.control.internalCameraChange(t.id,r)}destroyAppView(t,e=!1){const i=this.appViews.get(t);i&&(this.control.textEditorManager.clear(t,e),i.displayer.destroy(),this.appViews.delete(t))}createMianView(t){this.mainView=new Proxy(t,{set:(e,i,n)=>(this.control.worker.isActive&&this.validator(e,i,n),e[i]=n,!0)})}createAppView(t){const e=t.id,i=new Proxy(t,{set:(n,r,s)=>(this.control.worker.isActive&&this.validator(n,r,s),n[r]=s,!0)});this.appViews.set(e,i)}isAppView(t){return t!==he&&this.appViews.has(t)}getView(t){var e;return t===he?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var i;if(t===he&&this.mainView)this.mainView.focusScenePath=e;else{const n=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;n&&(n.focusScenePath=e)}}setViewData(t,e){var i;if(t===he&&this.mainView)this.mainView.viewData=e;else{const n=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;n&&(n.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===he?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 n;let i;t===he?i=this.mainView:i=(n=this.appViews)==null?void 0:n.get(t),i&&(i.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;S.isEqual(e,t)||(this.focuedView.cameraOpt=t)}}transformToOriginPoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const n=i.viewData.convertToPointOnScreen(t[0],t[1]);return[n.x,n.y]}return t}transformToScenePoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const n=i.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[n.x,n.y]}return t}render(t){var e,i,n,r,s,a,l,c,h,d,g,M,w,v,p,m,y;for(const I of t){const{rect:N,imageBitmap:T,isClear:z,isUnClose:b,drawCanvas:Y,clearCanvas:R,viewId:U}=I,A=(e=this.getView(U))==null?void 0:e.displayer;if(A&&N){const{dpr:W,canvasBgRef:Q,canvasFloatRef:X,canvasServiceFloatRef:re,canvasTopRef:ee}=A,F=Math.floor(N.w*W),J=Math.floor(N.h*W),te=Math.ceil(N.x*W),L=Math.ceil(N.y*W);if(z){switch(R){case Se.TopFloat:(n=(i=ee.current)==null?void 0:i.getContext("2d"))==null||n.clearRect(te,L,F,J);break;case Se.Float:(s=(r=X.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(te,L,F,J);break;case Se.ServiceFloat:(l=(a=re.current)==null?void 0:a.getContext("2d"))==null||l.clearRect(te,L,F,J);break;case Se.Bg:(h=(c=Q.current)==null?void 0:c.getContext("2d"))==null||h.clearRect(te,L,F,J);break}continue}if(Y&&T)switch(Y){case Se.TopFloat:(g=(d=ee.current)==null?void 0:d.getContext("2d"))==null||g.drawImage(T,0,0,F,J,te,L,F,J);break;case Se.Float:{(w=(M=X.current)==null?void 0:M.getContext("2d"))==null||w.drawImage(T,0,0,F,J,te,L,F,J);break}case Se.ServiceFloat:{(p=(v=re.current)==null?void 0:v.getContext("2d"))==null||p.drawImage(T,0,0,F,J,te,L,F,J);break}case Se.Bg:{(y=(m=Q.current)==null?void 0:m.getContext("2d"))==null||y.drawImage(T,0,0,F,J,te,L,F,J);break}}if(b)continue;T==null||T.close()}}}showFloatBar(t,e,i){const n=this.getView(t),r=n==null?void 0:n.displayer.vDom;r&&r.showFloatBar(e,i)}setActiveTextEditor(t,e){const i=this.getView(t),n=i==null?void 0:i.displayer.vDom;n&&n.setActiveTextEditor(e)}}f(Ge,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),f(Ge,"defaultScreenCanvasOpt",{autoRender:!1,contextType:St.Canvas2d}),f(Ge,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class tf{constructor(t,e,i){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 n=(e=this.control.worker.getCurrentToolsData())==null?void 0:e.toolsType;n&&this.control.effectViewContainer(n)}this.control.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const i=this.getPoint(t);this.cachePoint=i,i&&this.control.worker.originalEventLintener(j.Start,i,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",S.throttle(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&S.isEqual(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));f(this,"cursorMouseLeave",S.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=i;const n={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new jt(n)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case C.Text:case C.Pencil:case C.LaserPen:case C.Arrow:case C.Straight:case C.Rectangle:case C.Ellipse:case C.Star:case C.Polygon:case C.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===C.Text?"cursor-text":t===C.Pencil||t===C.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([$.Cursor,this.viewId])}getPoint(t){const e=Qo(t);if(e&&S.isNumber(e.x)&&S.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 i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[n,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let n={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(t.offsetParent,n)),n}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 Ho{constructor(t,e){f(this,"viewId",he);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 i;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 n=(i=this.control.worker.getCurrentToolsData())==null?void 0:i.toolsType;n&&this.control.effectViewContainer(n)}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",S.throttle(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&S.isEqual(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));f(this,"cursorMouseLeave",S.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 i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new jt(i)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case C.Text:case C.Pencil:case C.LaserPen:case C.Arrow:case C.Straight:case C.Rectangle:case C.Ellipse:case C.Star:case C.Polygon:case C.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===C.Text?"cursor-text":t===C.Pencil||t===C.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([$.Cursor,this.viewId])}getPoint(t){const e=Qo(t);if(e&&S.isNumber(e.x)&&S.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 i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[n,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let n={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(t.offsetParent,n)),n}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 of="index-module__Container__nLsM3",nf="index-module__CanvasBox__j2Xe-",sf="index-module__FloatCanvas__d1YR7",rf="index-module__TopFloatCanvas__7IaCw",af="index-module__SnapshotBox__--eeE",cf="index-module__FloatBar__cm-EL",lf="index-module__RotateBtn__HSSkf",uf="index-module__ResizeBtn__yjvda",hf="index-module__CursorBox__2UHvI",df="index-module__TextEditorContainer__Qm8KC",gf="index-module__ResizeTowBox__HOllX",Mf="index-module__FloatBarBtn__FJrOG",fe={Container:of,CanvasBox:nf,FloatCanvas:sf,TopFloatCanvas:rf,SnapshotBox:af,FloatBar:cf,RotateBtn:lf,ResizeBtn:uf,CursorBox:hf,TextEditorContainer:df,ResizeTowBox:gf,FloatBarBtn:Mf},ff={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 ge(o){return ff[o]}const pf=o=>{const{workIds:t,maranger:e}=o;return u.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),H.emitMethod($.MainEngine,x.DeleteNode,{workIds:t||[O],viewId:e.viewId})},onTouchEnd:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),H.emitMethod($.MainEngine,x.DeleteNode,{workIds:t||[O],viewId:e.viewId})}},u.createElement("img",{alt:"icon",src:ge("delete")}))},yf=o=>{const{workIds:t,viewId:e}=o;return u.createElement("div",{className:"button normal-button",onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),H.emitMethod($.MainEngine,x.CopyNode,{workIds:t||[O],viewId:e})},onTouchEnd:i=>{i.stopPropagation(),H.emitMethod($.MainEngine,x.CopyNode,{workIds:t||[O],viewId:e})}},u.createElement("img",{alt:"icon",src:ge("duplicate")}))},io=o=>{const{icon:t,onClickHandler:e,onTouchEndHandler:i}=o;return u.createElement("div",{className:"button normal-button",onClick:e,onTouchEnd:i},u.createElement("img",{src:ge(t)}))},If=o=>{const{open:t,setOpen:e,style:i}=o,{floatBarData:n,maranger:r}=u.useContext(le),[s,a]=u.useState([]),l=u.useMemo(()=>{if(i&&i.bottom){const g={};return g.top="inherit",g.bottom=50,g}},[i]),c=u.useMemo(()=>t?u.createElement("div",{className:"image-layer-menu",style:l},u.createElement(io,{icon:"to-top",onClickHandler:g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),H.emitMethod($.MainEngine,x.ZIndexNode,{workIds:[O],layer:$e.Top,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:g=>{g.stopPropagation(),H.emitMethod($.MainEngine,x.ZIndexNode,{workIds:[O],layer:$e.Top,viewId:r==null?void 0:r.viewId})}}),u.createElement(io,{icon:"to-bottom",onClickHandler:g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),H.emitMethod($.MainEngine,x.ZIndexNode,{workIds:[O],layer:$e.Bottom,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:g=>{g.stopPropagation(),H.emitMethod($.MainEngine,x.ZIndexNode,{workIds:[O],layer:$e.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[t,l]),h=g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),e(!t)},d=g=>{g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),e(!t)};return u.useEffect(()=>{qt(n==null?void 0:n.selectIds,s)||n!=null&&n.selectIds&&!qt(n==null?void 0:n.selectIds,s)&&(a(n==null?void 0:n.selectIds),e(!1))},[t,n,s,e]),u.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:h,onTouchEnd:d},c,u.createElement("img",{alt:"icon",src:ge(t?"layer-pressed":"layer")}))},wf=()=>u.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},u.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"})),Bo=o=>{const{activeColor:t,onClickHandler:e,onTouchEndHandler:i}=o;return u.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onClick:e,onTouchEnd:i},u.createElement("div",{className:"circle none"}))},Yt=o=>{const{color:t,activeColor:e,onClickHandler:i,onTouchEndHandler:n}=o;return u.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onClick:i,onTouchEnd:n},u.createElement("div",{className:"circle",style:{backgroundColor:ce(t,1)}}))},Rt=o=>{const{opacity:t,activeColor:e,setCurOpacity:i}=o,[n,r]=u.useState({x:108,y:0});if(u.useEffect(()=>{r({x:t*100+8,y:0})},[]),!e)return null;const s=S.throttle((c,h)=>{c.cancelable&&c.preventDefault(),c.stopPropagation(),h.x!==(n==null?void 0:n.x)&&r({x:h.x,y:0});const d=Math.min(Math.max(h.x-8,0),100)/100;t!==d&&i(d,e,j.Doing)},100,{leading:!1}),a=c=>{c.cancelable&&c.preventDefault(),c.stopPropagation(),i(t,e,j.Start)},l=S.throttle((c,h)=>{c.cancelable&&c.preventDefault(),c.stopPropagation(),h.x!==(n==null?void 0:n.x)&&r({x:h.x,y:0});const d=Math.min(Math.max(h.x-8,0),100)/100;i(d,e,j.Done)},100,{leading:!1});return u.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:c=>{const h=c.nativeEvent.offsetX,d=Math.min(Math.max(h-12,0),100)/100;r({x:d*100+8,y:0}),i(d,e,j.Done)}},u.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${ce(e,0)}, ${ce(e,1)})`}}),u.createElement("div",{className:"range-opacity"},u.createElement(at,{bounds:"parent",axis:"x",position:n,onDrag:s,onStart:a,onStop:l},u.createElement("div",{className:"circle",style:{backgroundColor:ce(e,t)},onClick:c=>{c.cancelable&&c.preventDefault(),c.stopPropagation()}}))))},vf=o=>{const{open:t,setOpen:e,floatBarRef:i}=o,{floatBarData:n,floatBarColors:r,maranger:s,setFloatBarData:a}=u.useContext(le),[l,c]=u.useState(),[h,d]=u.useState(1);u.useEffect(()=>{if(n!=null&&n.strokeColor){const[p,m]=Pt(n.strokeColor);c(p),d(m)}},[n]);const g=u.useMemo(()=>{if(i!=null&&i.current&&S.isNumber(n==null?void 0:n.y)&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+n.y>180){const p={};return p.top="inherit",p.bottom=50,p}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-n.y<120){const p={};return p.top="inherit",p.bottom=50,p}}},[i,n==null?void 0:n.y,s]),M=u.useMemo(()=>u.createElement(Rt,{key:"strokeColors",opacity:h,activeColor:l,setCurOpacity:(p,m,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),d(p);const I=ce(m,p);n!=null&&n.strokeColor&&(n.strokeColor=I,a({strokeColor:I})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],strokeColor:I,workState:y,viewId:s==null?void 0:s.viewId})}}),[h,l,s==null?void 0:s.control.room,s==null?void 0:s.viewId,n]),w=u.useMemo(()=>t?u.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()}},r.concat().map((p,m)=>{const y=ht(...p);return u.createElement(Yt,{key:m,color:y,activeColor:l,onTouchEndHandler:I=>{I.stopPropagation(),c(y);const N=ce(y,h);n!=null&&n.strokeColor&&(n.strokeColor=N,a({strokeColor:N})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],workState:j.Done,strokeColor:N,viewId:s==null?void 0:s.viewId})},onClickHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),c(y);const N=ce(y,h);n!=null&&n.strokeColor&&(n.strokeColor=N,a({strokeColor:N})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],workState:j.Done,strokeColor:N,viewId:s==null?void 0:s.viewId})}})}),M):null,[t,r,M,l,h,n,s==null?void 0:s.viewId,g]),v=u.useMemo(()=>l?u.createElement("div",{className:"color-bar-ring",style:{backgroundColor:ce(l,h)}},u.createElement("div",{className:"circle"})):null,[l,h]);return u.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)}},v,w)},mf=o=>{const{open:t,setOpen:e,floatBarRef:i}=o,{floatBarData:n,floatBarColors:r,maranger:s,setFloatBarData:a}=u.useContext(le),[l,c]=u.useState(),[h,d]=u.useState(1);u.useEffect(()=>{if(n!=null&&n.fillColor){const[p,m]=(n==null?void 0:n.fillColor)==="transparent"&&["transparent",1]||Pt(n.fillColor);c(p),d(m)}},[n]);const g=u.useMemo(()=>{if(i!=null&&i.current&&S.isNumber(n==null?void 0:n.y)&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+n.y>200){const p={};return p.top="inherit",p.bottom=50,p}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-n.y<140){const p={};return p.top="inherit",p.bottom=50,p}}},[i,n==null?void 0:n.y,s]),M=u.useMemo(()=>l&&l!=="transparent"?u.createElement(Rt,{key:"fillColors",opacity:h||0,activeColor:l,setCurOpacity:(p,m,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),d(p);const I=ce(m,p);n!=null&&n.fillColor&&(n.fillColor=I,a({fillColor:I})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],fillColor:l&&ce(m,p),workState:y,viewId:s==null?void 0:s.viewId})}}):null,[l,h,s==null?void 0:s.control.room,s==null?void 0:s.viewId,n]),w=u.useMemo(()=>t?u.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()}},u.createElement(Bo,{activeColor:l,onTouchEndHandler:p=>{p.stopPropagation(),c("transparent");const m="transparent";n!=null&&n.fillColor&&(n.fillColor=m,a({fillColor:m})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],workState:j.Done,fillColor:m,viewId:s==null?void 0:s.viewId})},onClickHandler:p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),c("transparent");const m="transparent";n!=null&&n.fillColor&&(n.fillColor=m,a({fillColor:m})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],workState:j.Done,fillColor:m,viewId:s==null?void 0:s.viewId})}}),r.map((p,m)=>{const y=ht(...p);return u.createElement(Yt,{key:m,color:y,activeColor:l,onTouchEndHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),c(y);const N=ce(y,h);n!=null&&n.fillColor&&(n.fillColor=N,a({fillColor:N})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],workState:j.Done,fillColor:N,viewId:s==null?void 0:s.viewId})},onClickHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),c(y);const N=ce(y,h);n!=null&&n.fillColor&&(n.fillColor=N,a({fillColor:N})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:[O],workState:j.Done,fillColor:N,viewId:s==null?void 0:s.viewId})}})}),M):null,[t,l,r,M,n,s==null?void 0:s.viewId,h,g]),v=u.useMemo(()=>{const p=l&&l!=="transparent"&&ce(l,h)||"transparent";return u.createElement("div",{className:"color-bar-fill"},u.createElement("div",{className:"circle",style:{backgroundColor:p}}))},[l,h]);return u.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)}},v,w)},Nf=o=>{const{open:t,setOpen:e,textOpt:i,workIds:n,floatBarRef:r}=o,{floatBarColors:s,maranger:a,setFloatBarData:l,floatBarData:c}=u.useContext(le),[h,d]=u.useState(),[g,M]=u.useState(1);u.useEffect(()=>{if(i!=null&&i.fontColor){const[y,I]=(i==null?void 0:i.fontColor)==="transparent"&&["transparent",0]||Pt(i.fontColor);d(y),M(I)}},[i==null?void 0:i.fontColor]);const w=u.useMemo(()=>{if(r!=null&&r.current&&S.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+c.y>180){const y={};return y.top="inherit",y.bottom=50,y}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-c.y<120){const y={};return y.top="inherit",y.bottom=50,y}}},[r,c==null?void 0:c.y,a]),v=u.useMemo(()=>h&&h!=="transparent"?u.createElement(Rt,{key:"fontColors",opacity:g,activeColor:h,setCurOpacity:(y,I,N)=>{N===j.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),N===j.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),M(y);const T=ce(I,y);c!=null&&c.textOpt&&(c.textOpt.fontColor=T,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],fontColor:h&&T,workState:N,viewId:a==null?void 0:a.viewId})}}):null,[h,g,a==null?void 0:a.control.room,a==null?void 0:a.viewId,c==null?void 0:c.textOpt,n]),p=u.useMemo(()=>t?u.createElement("div",{className:"font-colors-menu",style:w,onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()}},s.map((y,I)=>{const N=ht(...y);return u.createElement(Yt,{key:I,color:N,activeColor:h,onTouchEndHandler:T=>{T.stopPropagation(),d(N);const z=ce(N,g);c!=null&&c.textOpt&&(c.textOpt.fontColor=z,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],workState:j.Done,fontColor:z,viewId:a==null?void 0:a.viewId})},onClickHandler:T=>{T.cancelable&&T.preventDefault(),T.stopPropagation(),d(N);const z=ce(N,g);c!=null&&c.textOpt&&(c.textOpt.fontColor=z,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],workState:j.Done,fontColor:z,viewId:a==null?void 0:a.viewId})}})}),v):null,[t,s,v,h,g,c==null?void 0:c.textOpt,n,a==null?void 0:a.viewId,w]),m=u.useMemo(()=>{const y=h&&h!=="transparent"&&ce(h,g)||"transparent";return u.createElement("div",{className:"color-bar"},u.createElement("div",{className:"color-bar-color",style:{backgroundColor:y}}))},[h,g]);return u.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation(),e(!t)}},u.createElement("img",{alt:"icon",src:ge("font-colors")}),m,p)},Tf=o=>{const{open:t,setOpen:e,textOpt:i,workIds:n,floatBarRef:r}=o,{floatBarColors:s,maranger:a,setFloatBarData:l,floatBarData:c}=u.useContext(le),[h,d]=u.useState(),[g,M]=u.useState(1);u.useEffect(()=>{if(i!=null&&i.fontBgColor){const[y,I]=(i==null?void 0:i.fontBgColor)==="transparent"&&["transparent",1]||Pt(i.fontBgColor);d(y),M(I)}},[i==null?void 0:i.fontBgColor]);const w=u.useMemo(()=>{if(r!=null&&r.current&&S.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+c.y>180){const y={};return y.top="inherit",y.bottom=50,y}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-c.y<120){const y={};return y.top="inherit",y.bottom=50,y}}},[r,c==null?void 0:c.y,a]),v=u.useMemo(()=>h&&h!=="transparent"?u.createElement(Rt,{key:"fontBgColor",opacity:g||0,activeColor:h,setCurOpacity:(y,I,N)=>{N===j.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),N===j.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),M(y);const T=ce(I,y);c!=null&&c.textOpt&&(c.textOpt.fontBgColor=T,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],fontBgColor:h&&ce(I,y),workState:N,viewId:a==null?void 0:a.viewId})}}):null,[h,g,a==null?void 0:a.control.room,a==null?void 0:a.viewId,c==null?void 0:c.textOpt,n]),p=u.useMemo(()=>t?u.createElement("div",{className:"font-colors-menu",style:w,onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation()}},u.createElement(Bo,{activeColor:h,onTouchEndHandler:y=>{y.stopPropagation();const I="transparent";d(I),c!=null&&c.textOpt&&(c.textOpt.fontBgColor=I,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],workState:j.Done,fontBgColor:I,viewId:a==null?void 0:a.viewId})},onClickHandler:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation();const I="transparent";d(I),c!=null&&c.textOpt&&(c.textOpt.fontBgColor=I,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],workState:j.Done,fontBgColor:I,viewId:a==null?void 0:a.viewId})}}),s.map((y,I)=>{const N=ht(...y);return u.createElement(Yt,{key:I,color:N,activeColor:h,onTouchEndHandler:T=>{T.stopPropagation(),d(N);const z=ce(N,g);c!=null&&c.textOpt&&(c.textOpt.fontBgColor=z,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],workState:j.Done,fontBgColor:ce(N,g),viewId:a==null?void 0:a.viewId})},onClickHandler:T=>{T.cancelable&&T.preventDefault(),T.stopPropagation(),d(N);const z=ce(N,g);c!=null&&c.textOpt&&(c.textOpt.fontBgColor=z,l({textOpt:c.textOpt})),H.emitMethod($.MainEngine,x.SetColorNode,{workIds:n||[O],workState:j.Done,fontBgColor:ce(N,g),viewId:a==null?void 0:a.viewId})}})}),v):null,[t,s,v,g,h,c==null?void 0:c.textOpt,n,a==null?void 0:a.viewId,w]),m=u.useMemo(()=>{const y=h&&h!=="transparent"&&ce(h,g)||"transparent";return u.createElement("div",{className:"color-bar",style:{marginTop:0}},u.createElement("div",{className:"color-bar-color",style:{backgroundColor:y}}))},[h,g]);return u.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:y=>{y.stopPropagation(),y.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation(),y.nativeEvent.stopImmediatePropagation(),e(!t)}},u.createElement(wf,null),m,p)},Cf=o=>{const{bold:t,setBold:e,workIds:i,viewId:n}=o,r=s=>{const a=t==="bold"?"normal":"bold";s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),H.emitMethod($.MainEngine,x.SetFontStyle,{workIds:i,viewId:n,bold:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:ge(t==="bold"?"bold-active":"bold")}))},zf=o=>{const{underline:t,setUnderline:e,workIds:i,viewId:n}=o,r=s=>{const a=!t;s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),H.emitMethod($.MainEngine,x.SetFontStyle,{workIds:i,viewId:n,underline:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:ge(t?"underline-active":"underline")}))},jf=o=>{const{lineThrough:t,setLineThrough:e,workIds:i,viewId:n}=o,r=s=>{const a=!t;s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),H.emitMethod($.MainEngine,x.SetFontStyle,{workIds:i,viewId:n,lineThrough:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:ge(t?"line-through-active":"line-through")}))},Sf=o=>{const{italic:t,setItalic:e,workIds:i,viewId:n}=o,r=s=>{const a=t==="italic"?"normal":"italic";s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),H.emitMethod($.MainEngine,x.SetFontStyle,{workIds:i,viewId:n,italic:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:ge(t==="italic"?"italic-active":"italic")}))},xf=o=>{const{open:t,setOpen:e,textOpt:i,workIds:n,style:r}=o,{maranger:s}=u.useContext(le),[a,l]=u.useState("normal"),[c,h]=u.useState("normal"),[d,g]=u.useState(!1),[M,w]=u.useState(!1);u.useEffect(()=>{i!=null&&i.bold&&l(i.bold),Kt(i==null?void 0:i.underline)&&g(i.underline||!1),Kt(i==null?void 0:i.lineThrough)&&w(i.lineThrough||!1),i!=null&&i.italic&&h(i.italic)},[i]);const v=u.useMemo(()=>{if(r&&r.bottom){const m={};return m.top="inherit",m.bottom=50,m}},[r]),p=u.useMemo(()=>t?u.createElement("div",{className:"font-style-menu",style:v,onTouchEnd:m=>{m.stopPropagation(),m.nativeEvent.stopImmediatePropagation()},onClick:m=>{m.cancelable&&m.preventDefault(),m.stopPropagation(),m.nativeEvent.stopImmediatePropagation()}},u.createElement(Cf,{workIds:n||[O],bold:a,setBold:l,viewId:s==null?void 0:s.viewId}),u.createElement(zf,{workIds:n||[O],underline:d,setUnderline:g,viewId:s==null?void 0:s.viewId}),u.createElement(jf,{workIds:n||[O],lineThrough:M,setLineThrough:w,viewId:s==null?void 0:s.viewId}),u.createElement(Sf,{workIds:n||[O],italic:c,setItalic:h,viewId:s==null?void 0:s.viewId})):null,[t,n,a,s==null?void 0:s.viewId,d,M,c,v]);return u.createElement("div",{className:`button normal-button ${t&&"active"}`,onTouchEnd:m=>{m.stopPropagation(),m.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:m=>{m.cancelable&&m.preventDefault(),m.stopPropagation(),m.nativeEvent.stopImmediatePropagation(),e(!t)}},u.createElement("img",{alt:"icon",src:ge(t?"font-style-active":"font-style")}),p)},we=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Fe=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],kf=o=>{const{style:t,onClickHandler:e}=o;return u.createElement("div",{className:"font-size-menu",style:t,onTouchEnd:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()},onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),i.nativeEvent.stopImmediatePropagation()}},we.map(i=>u.createElement("div",{className:"font-size-btn",key:i,onClick:()=>{e(i)},onTouchEnd:()=>{e(i)}},i)))},Df=o=>{const t=u.useRef(null),{open:e,setOpen:i,textOpt:n,workIds:r,floatBarRef:s}=o,{maranger:a,floatBarData:l}=u.useContext(le),[c,h]=u.useState(0),[d,g]=u.useState(),M=we.length-1;u.useEffect(()=>{n!=null&&n.fontSize&&(h(n.fontSize),t.current&&(t.current.value=n.fontSize.toString()))},[n==null?void 0:n.fontSize]);const w=u.useMemo(()=>{if(s!=null&&s.current&&S.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+l.y>250){const I={};return I.top="inherit",I.bottom=35,I}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-l.y<180){const I={};return I.top="inherit",I.bottom=35,I}}},[s,l==null?void 0:l.y,a]);function v(I){h(I),I&&I>=we[0]&&I<=we[M]&&H.emitMethod($.MainEngine,x.SetFontStyle,{workIds:r||[O],fontSize:I,viewId:a==null?void 0:a.viewId})}const p=I=>{var N;(N=t.current)==null||N.blur(),i(!1),y(I)},m=u.useMemo(()=>e?u.createElement(kf,{onClickHandler:p,style:w}):null,[e,p,w]),y=I=>{I>we[M]&&(I=we[M]),I<we[0]&&(I=we[0]),v(I)};return u.useEffect(()=>()=>{a!=null&&a.control.room&&S.isBoolean(d)&&(a.control.room.disableDeviceInputs=d)},[a,d]),u.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onTouchEnd:I=>{I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()},onClick:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation()}},u.createElement("input",{className:"font-size-input",ref:t,onTouchEnd:()=>{t.current&&t.current.focus()},onClick:()=>{i(!e),t.current&&t.current.focus()},onKeyDown:I=>{if(I.key==="Backspace"){const N=window.getSelection(),T=N==null?void 0:N.getRangeAt(0);if(T!=null&&T.collapsed)return I.cancelable&&I.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:I=>{var N;if(t.current){const T=t.current.value,z=parseInt(T);isNaN(z)?t.current.value="0":t.current.value=z.toString(),z&&I.key==="Enter"&&(y(z),(N=t.current)==null||N.blur(),i(!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&&S.isBoolean(d)&&(a.control.room.disableDeviceInputs=d)}}),u.createElement("div",{className:"font-size-btns"},u.createElement("div",{className:"font-size-add",onClick:()=>{y(c+we[0])},onTouchEnd:()=>{y(c+we[0])}}),u.createElement("div",{className:"font-size-cut",onClick:()=>{y(c-we[0])},onTouchEnd:()=>{y(c-we[0])}})),m)},bf=o=>{const{workIds:t,maranger:e,islocked:i}=o;return u.createElement("div",{className:"button normal-button",onClick:n=>{n.cancelable&&n.preventDefault(),n.stopPropagation(),H.emitMethod($.MainEngine,x.SetLock,{workIds:t||[O],isLocked:!i,viewId:e==null?void 0:e.viewId})},onTouchEnd:n=>{n.stopPropagation(),H.emitMethod($.MainEngine,x.SetLock,{workIds:t||[O],isLocked:!i,viewId:e==null?void 0:e.viewId})}},u.createElement("img",{alt:"icon",src:ge(i?"unlock-new":"lock-new")}))},Xt=o=>{const{icon:t,min:e,max:i,step:n,value:r,onInputHandler:s}=o,[a,l]=u.useState(0),c=u.useRef(null),h=d=>{d>i&&(d=i),d<e&&(d=e),l(d),s(d),c.current&&(c.current.value=d.toString())};return u.useEffect(()=>{r&&(l(r),c.current&&(c.current.value=r.toString()))},[r]),u.createElement("div",{className:"button input-button",onTouchEnd:d=>{d.stopPropagation(),d.nativeEvent.stopImmediatePropagation()},onClick:d=>{d.cancelable&&d.preventDefault(),d.stopPropagation(),d.nativeEvent.stopImmediatePropagation()}},u.createElement("img",{src:ge(t)}),u.createElement("input",{className:"input-number",type:"text",ref:c,onTouchEnd:()=>{c.current&&c.current.focus()},onClick:()=>{c.current&&c.current.focus()},onKeyDown:d=>{if(d.key==="Backspace"){const g=window.getSelection(),M=g==null?void 0:g.getRangeAt(0);if(M!=null&&M.collapsed)return d.cancelable&&d.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(c.current){const d=c.current.value,g=parseInt(d);isNaN(g)?c.current.value="0":c.current.value=g.toString()}},onChange:d=>{const g=d.target.value,M=parseInt(g);M&&M&&M>=e&&M<=i&&h(M)}}),u.createElement("div",{className:"input-number-btns"},u.createElement("div",{className:"input-number-add",onClick:()=>{h(a+n)},onTouchEnd:()=>{h(a+n)}}),u.createElement("div",{className:"input-number-cut",onClick:()=>{h(a-n)},onTouchEnd:()=>{h(a-n)}})))},Lf=o=>{const{icon:t,min:e,max:i,step:n,value:r,onInputHandler:s}=o;return u.createElement("div",{className:"button input-button"},u.createElement("img",{src:ge(t)}),u.createElement(Ef,{min:e,max:i,step:n,value:r,onInputHandler:s}))},Ef=o=>{const{value:t,min:e,max:i,onInputHandler:n}=o,[r,s]=u.useState({x:0,y:0});u.useEffect(()=>{s({x:t*100,y:0})},[]);const a=S.throttle((h,d)=>{h.cancelable&&h.preventDefault(),h.stopPropagation();let g=Math.floor(Math.max(d.x,e*100));g=Math.floor(Math.min(g,i*100)),d.x!==(r==null?void 0:r.x)&&s({x:g,y:0});const M=g/100;t!==M&&n(M)},100,{leading:!1}),l=h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()},c=S.throttle((h,d)=>{h.cancelable&&h.preventDefault(),h.stopPropagation();let g=Math.floor(Math.max(d.x,e*100));g=Math.floor(Math.min(g,i*100)),d.x!==(r==null?void 0:r.x)&&s({x:g,y:0});const M=g/100;t!==M&&n(M)},100,{leading:!1});return u.createElement("div",{className:"range-number-container",onClick:h=>{const d=h.nativeEvent.offsetX-6;let g=Math.floor(Math.max(d,e*100));g=Math.floor(Math.min(g,i*100)),s({x:g,y:0});const M=g/100;t!==M&&n(M)}},u.createElement("div",{className:"range-number-color"}),u.createElement("div",{className:"range-number"},u.createElement(at,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:l,onStop:c},u.createElement("div",{className:"circle",onClick:l}))))},Af=o=>{const{icon:t,value:e,onChangeHandler:i,style:n}=o,[r,s]=u.useState(0),[a,l]=u.useState(),c=u.useRef(null),h=u.useCallback(M=>{M>=Fe.length&&(M=0),M<0&&(M=Fe.length-1),s(M),i(Fe[M]),l(!1),c.current&&(c.current.value=Fe[M])},[i]),d=u.useMemo(()=>{if(n&&n.bottom){const M={};return M.top="inherit",M.bottom=50,M}},[n]);u.useEffect(()=>{e&&(s(Fe.indexOf(e)),c.current&&(c.current.value=e))},[e]);const g=u.useMemo(()=>a?u.createElement(Of,{options:Fe,onClickHandler:h,style:d}):null,[a,h,d]);return u.createElement("div",{className:"button input-button"},u.createElement("img",{src:ge(t)}),u.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))}}),u.createElement("div",{className:"input-number-btns"},u.createElement("div",{className:"input-number-add",onClick:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),h(r+1)},onTouchEnd:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),h(r+1)}}),u.createElement("div",{className:"input-number-cut",onClick:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),h(r-1)},onTouchEnd:M=>{M.cancelable&&M.preventDefault(),M.stopPropagation(),h(r-1)}})),g)},Of=o=>{const{options:t,style:e,onClickHandler:i}=o;return u.createElement("div",{className:"select-option-menu",style:e,onTouchEnd:n=>{n.cancelable&&n.preventDefault(),n.stopPropagation(),n.nativeEvent.stopImmediatePropagation()},onClick:n=>{n.cancelable&&n.preventDefault(),n.stopPropagation(),n.nativeEvent.stopImmediatePropagation()}},t.map((n,r)=>u.createElement("div",{className:"select-option-btn",key:n,onClick:s=>{s.cancelable&&s.preventDefault(),s.stopPropagation(),i(r)},onTouchEnd:s=>{s.cancelable&&s.preventDefault(),s.stopPropagation(),i(r)}},n)))},Pf=o=>{const{maranger:t,innerRatio:e,innerVerticeStep:i,vertices:n}=o,r=l=>{H.emitMethod($.MainEngine,x.SetShapeOpt,{workIds:[O],toolsType:C.Star,viewId:t.viewId,vertices:l})},s=l=>{H.emitMethod($.MainEngine,x.SetShapeOpt,{workIds:[O],toolsType:C.Star,viewId:t.viewId,innerVerticeStep:l})},a=l=>{H.emitMethod($.MainEngine,x.SetShapeOpt,{workIds:[O],toolsType:C.Star,viewId:t.viewId,innerRatio:l})};return u.createElement(u.Fragment,null,u.createElement(Xt,{value:n,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:r}),u.createElement(Xt,{value:i,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:s}),u.createElement(Lf,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:a}))},Yf=o=>{const{maranger:t,vertices:e}=o,i=n=>{H.emitMethod($.MainEngine,x.SetShapeOpt,{workIds:[O],toolsType:C.Polygon,viewId:t.viewId,vertices:n})};return u.createElement(Xt,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:i})},Rf=o=>{const{maranger:t,placement:e}=o,i=n=>{H.emitMethod($.MainEngine,x.SetShapeOpt,{workIds:[O],toolsType:C.SpeechBalloon,viewId:t.viewId,placement:n})};return u.createElement(Af,{value:e,icon:"speechBallon-placement",onChangeHandler:i})},Bt=o=>{const{icon:t,isActive:e,onClickHandler:i,onTouchEndHandler:n}=o;return u.createElement("div",{className:`button tab-button ${e?"active":""}`,onClick:i,onTouchEnd:n},u.createElement("img",{src:ge(t)}))},Wf=o=>{const{toolsTypes:t,style:e,maranger:i,shapeOpt:n}=o,[r,s]=u.useState();u.useEffect(()=>{t.includes(C.Polygon)?s(C.Polygon):t.includes(C.Star)?s(C.Star):s(C.SpeechBalloon)},[t]);const a=(d,g)=>{g.cancelable&&g.preventDefault(),g==null||g.stopPropagation(),s(d)},l=u.useMemo(()=>r===C.Polygon&&i&&n.vertices?u.createElement(Yf,{vertices:n.vertices,maranger:i}):null,[i,r,n]),c=u.useMemo(()=>r===C.Star&&i&&n.vertices&&n.innerVerticeStep&&n.innerRatio?u.createElement(Pf,{maranger:i,vertices:n.vertices,innerVerticeStep:n.innerVerticeStep,innerRatio:n.innerRatio}):null,[i,r,n]),h=u.useMemo(()=>r===C.SpeechBalloon&&i&&n.placement?u.createElement(Rf,{maranger:i,placement:n.placement}):null,[i,r,n]);return u.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:d=>{d.stopPropagation(),d.nativeEvent.stopImmediatePropagation(),d.cancelable&&d.preventDefault()}},u.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(C.Polygon)&&u.createElement(Bt,{isActive:r===C.Polygon,icon:r===C.Polygon?"polygon-active":"polygon",onClickHandler:a.bind(void 0,C.Polygon),onTouchEndHandler:a.bind(void 0,C.Polygon)})||null,t.includes(C.Star)&&u.createElement(Bt,{isActive:r===C.Star,icon:r===C.Star?"star-active":"star",onClickHandler:a.bind(void 0,C.Star),onTouchEndHandler:a.bind(void 0,C.Star)})||null,t.includes(C.SpeechBalloon)&&u.createElement(Bt,{isActive:r===C.SpeechBalloon,icon:r===C.SpeechBalloon?"speechBallon-active":"speechBallon",onClickHandler:a.bind(void 0,C.SpeechBalloon),onTouchEndHandler:a.bind(void 0,C.SpeechBalloon)})||null),u.createElement("div",{className:"shapeOpt-sub-menu-content"},l,c,h))},Uf=o=>{const{open:t,setOpen:e,floatBarRef:i,toolsTypes:n,shapeOpt:r}=o,{floatBarData:s,maranger:a}=u.useContext(le),[l,c]=u.useState([]),[h,d]=u.useState(),g=u.useMemo(()=>{if(i!=null&&i.current&&S.isNumber(s==null?void 0:s.x)&&S.isNumber(s==null?void 0:s.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+s.y>200){const p={};return p.top="inherit",p.bottom=50,p}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-(s==null?void 0:s.y)<140){const p={};return p.top="inherit",p.bottom=50,p}}},[i,s==null?void 0:s.x,s==null?void 0:s.y,a==null?void 0:a.height]),M=u.useMemo(()=>t&&n&&a&&r?(a.control.room&&!a.control.room.disableDeviceInputs&&(d(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0),u.createElement(Wf,{shapeOpt:r,style:g,toolsTypes:n,maranger:a})):(a!=null&&a.control.room&&S.isBoolean(h)&&(a.control.room.disableDeviceInputs=h),null),[t,g,n,a,r]),w=p=>{p.cancelable&&p.preventDefault(),p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)},v=p=>{p.stopPropagation(),p.nativeEvent.stopImmediatePropagation(),e(!t)};return u.useEffect(()=>{S.isEqual(s==null?void 0:s.selectIds,l)||s!=null&&s.selectIds&&!S.isEqual(s==null?void 0:s.selectIds,l)&&(c(s==null?void 0:s.selectIds),e(!1))},[t,s,l,e]),u.useEffect(()=>()=>{t&&a!=null&&a.control.room&&S.isBoolean(h)&&(a.control.room.disableDeviceInputs=h)},[t,a,h]),u.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:w,onTouchEnd:v},M,u.createElement("img",{alt:"icon",src:ge(t?"shapes-active":"shapes")}))},Fo=u.memo(o=>{const{textOpt:t,workIds:e,noLayer:i,position:n}=o,{floatBarData:r,maranger:s}=u.useContext(le),[a,l]=u.useState(0),[c,h]=u.useState(),d=u.useRef(null);u.useEffect(()=>{var Y,R,U,A;const T={},z=(r==null?void 0:r.w)||((Y=t==null?void 0:t.boxSize)==null?void 0:Y[0])||0,b=(r==null?void 0:r.h)||((R=t==null?void 0:t.boxSize)==null?void 0:R[1])||0;if(n&&z&&b&&(s!=null&&s.width)&&(s!=null&&s.height)){if(n.y<60?n.y+b<s.height-60?T.bottom=-120:n.y+b<s.height?T.bottom=-58:n.y>0?T.top=62:T.top=-n.y+62:T.top=0,n.x<0)T.left=-n.x+3;else if(n.x+(((U=d.current)==null?void 0:U.offsetWidth)||z)>s.width){const W=s.width-(((A=d.current)==null?void 0:A.offsetWidth)||z)-n.x;T.left=W}h(T);return}h(void 0)},[d,n,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=u.useMemo(()=>r!=null&&r.fillColor?u.createElement(mf,{floatBarRef:d,open:a===3,setOpen:T=>{l(T===!0?3:0)}}):null,[r==null?void 0:r.fillColor,a,d]),M=u.useMemo(()=>r!=null&&r.strokeColor?u.createElement(vf,{floatBarRef:d,open:a===2,setOpen:T=>{l(T===!0?2:0)}}):null,[r==null?void 0:r.strokeColor,a,d]),w=u.useMemo(()=>t!=null&&t.fontColor&&(s!=null&&s.viewId)?u.createElement(Nf,{floatBarRef:d,open:a===4,setOpen:T=>{l(T===!0?4:0)},textOpt:t,workIds:e}):null,[t,a,e,s,d]),v=u.useMemo(()=>t!=null&&t.fontBgColor&&(s!=null&&s.viewId)?u.createElement(Tf,{floatBarRef:d,open:a===5,setOpen:T=>{l(T===!0?5:0)},textOpt:t,workIds:e}):null,[t,a,e,s,d]),p=u.useMemo(()=>t&&(s!=null&&s.viewId)?u.createElement(xf,{open:a===6,setOpen:T=>{l(T===!0?6:0)},textOpt:t,workIds:e,style:c}):null,[t,a,e,s,c]),m=u.useMemo(()=>t&&(s!=null&&s.viewId)?u.createElement(Df,{open:a===7,setOpen:T=>{l(T===!0?7:0)},textOpt:t,workIds:e,floatBarRef:d}):null,[t,a,e,s,d]),y=u.useMemo(()=>i?null:u.createElement(If,{open:a===1,setOpen:T=>{l(T===!0?1:0)},floatBarRef:d}),[i,a,d]),I=u.useMemo(()=>r!=null&&r.canLock&&s?u.createElement(bf,{workIds:e,maranger:s,islocked:r.isLocked}):null,[r,s,e]),N=u.useMemo(()=>s&&(s!=null&&s.viewId)&&c&&(r!=null&&r.shapeOpt)&&(r!=null&&r.toolsTypes)?u.createElement(Uf,{open:a===8,setOpen:T=>{l(T===!0?8:0)},floatBarRef:d,workIds:e,toolsTypes:r.toolsTypes,shapeOpt:r.shapeOpt}):null,[r,s,a,c,e,d]);return u.createElement("div",{className:"bezier-pencil-plugin-floatbtns",style:c,ref:d,onMouseOver:T=>(T.stopPropagation(),T.cancelable&&T.preventDefault(),s==null||s.control.worker.blurCursor(s.viewId),!1),onMouseMove:T=>(T.stopPropagation(),T.cancelable&&T.preventDefault(),!1)},s&&u.createElement(pf,{workIds:e,maranger:s}),y,I,!!(s!=null&&s.viewId)&&u.createElement(yf,{workIds:e,viewId:s.viewId}),N,m,p,w,v,M,g)}),$f=o=>{const{data:t,isActive:e,manager:i,workId:n}=o,{opt:r,scale:s,translate:a,x:l,y:c}=t,h=`scale(${s||1}) ${a&&"translate("+a[0]+"px,"+a[1]+"px)"||""}`,{fontSize:d,fontFamily:g,underline:M,fontColor:w,lineThrough:v,textAlign:p,strokeColor:m,lineHeight:y,bold:I,italic:N,uid:T,workState:z}=r,b=d,Y=y||b*1.2,R={fontSize:`${b}px`,lineHeight:`${Y}px`,color:w,borderColor:m,minHeight:`${Y}px`,paddingRight:`${N==="italic"?Math.round(b*.3):5}px`};g&&(R.fontFamily=`${g}`),(v||M)&&(R.textDecoration=`${v&&"line-through"||""}${M&&" underline"||""}`),I&&(R.fontWeight=`${I}`),N&&(R.fontStyle=`${N}`),p&&(R.textAlign=`${p}`);function U(){var W;e&&(T&&T===((W=i.control.collector)==null?void 0:W.uid)||!T)&&i.control.textEditorManager.active(n)}const A=u.useMemo(()=>{const W=[];if(r.text){const Q=ut(r.text);for(let X=0;X<Q.length;X++){const re=Q[X];re===""?W.push(u.createElement("div",{style:{backgroundColor:r.fontBgColor},key:X},u.createElement("br",null))):W.push(u.createElement("div",{style:{backgroundColor:r.fontBgColor},key:X},re))}}return W.length?W:null},[r.fontBgColor,r.text]);return u.createElement("div",{className:"editor-box",style:{left:`${l}px`,top:`${c}px`,transform:h,transformOrigin:"left top",pointerEvents:"none",opacity:z===j.Done?0:1}},u.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:R,onClick:U},A))},Qf=u.memo(o=>{const{data:t,left:e,top:i,workId:n,updateOptInfo:r}=o,{opt:s,scale:a,translate:l}=t,c=u.useRef(null);u.useEffect(()=>{var R,U;if((R=c.current)!=null&&R.offsetWidth&&((U=c.current)!=null&&U.offsetHeight)){const A=s.boxSize;if((A==null?void 0:A[0])!==c.current.offsetWidth||A[1]!==c.current.offsetHeight||!A){const W=[c.current.offsetWidth,c.current.offsetHeight];r({activeTextId:n,update:{boxSize:W,workState:j.Done}})}}},[s.fontSize,s.italic,s.bold,s.boxSize,n]);const h=`scale(${a||1}) ${l&&"translate("+l[0]+"px,"+l[1]+"px)"||""}`,{fontSize:d,fontFamily:g,underline:M,fontColor:w,lineThrough:v,textAlign:p,strokeColor:m,lineHeight:y,bold:I,italic:N}=s,T=d,z=y||T*1.2,b={fontSize:`${T}px`,lineHeight:`${z}px`,color:w,borderColor:m,minHeight:`${z}px`,pointerEvents:"none",paddingRight:`${N==="italic"?Math.round(T*.3):5}px`};g&&(b.fontFamily=`${g}`),(v||M)&&(b.textDecoration=`${v&&"line-through"||""}${M&&" underline"||""}`),p&&(b.textAlign=`${p}`),I&&(b.fontWeight=`${I}`),N&&(b.fontStyle=`${N}`);const Y=u.useMemo(()=>{const R=[];if(s.text){const U=ut(s.text);for(let A=0;A<U.length;A++){const W=U[A];W===""?R.push(u.createElement("div",{key:A},u.createElement("br",null))):R.push(u.createElement("div",{key:A},W))}}return R.length?R:null},[s.text]);return u.createElement("div",{className:"editor-box",style:{left:`${e}`,top:`${i}`,transform:h,transformOrigin:"left top",zIndex:1,pointerEvents:"none",opacity:0}},u.createElement("div",{className:"editor readOnly",ref:c,style:b},Y))},(o,t)=>!(o.workId!==t.workId||o.left!==t.left||o.top!==t.top||!S.isEqual(o.data,t.data))),Hf=o=>{const{data:t,workId:e,isSelect:i,showFloatBtns:n,handleKeyUp:r,handleFocus:s,updateOptInfo:a,manager:l,runAnimation:c}=o,[h,d]=u.useState(),{opt:g,scale:M,translate:w,x:v,y:p}=t,{fontSize:m,fontFamily:y,underline:I,fontColor:N,lineThrough:T,textAlign:z,strokeColor:b,lineHeight:Y,bold:R,italic:U,boxSize:A}=g,W=u.useRef(null),Q=u.useMemo(()=>{const q=m,ie=Y||q*1.2,G={fontSize:`${q}px`,lineHeight:`${ie}px`,color:N,borderColor:b,minHeight:`${ie}px`,paddingRight:`${U==="italic"?Math.round(q*.3):5}px`,borderWidth:`${Math.max(Math.round(1/(M||1)),1)}px`};return y&&(G.fontFamily=`${y}`),(T||I)&&(G.textDecoration=`${T&&"line-through"||""} ${I&&" underline"||""}`),z&&(G.textAlign=`${z}`),R&&(G.fontWeight=`${R}`),U&&(G.fontStyle=`${U}`),G},[R,N,y,m,U,Y,T,M,b,z,I]),X=u.useMemo(()=>{const q=`scale(${M||1}) ${w&&"translate("+w[0]+"px,"+w[1]+"px)"||""}`;return{left:`${v}px`,top:`${p}px`,zIndex:2,pointerEvents:"none",transform:q,transformOrigin:"left top"}},[M,w,v,p]),re=u.useMemo(()=>{var q,ie;return!i&&M&&n&&S.isNumber(v)&&S.isNumber(p)&&g.boxSize&&S.isNumber((q=g.boxSize)==null?void 0:q[0])&&S.isNumber((ie=g.boxSize)==null?void 0:ie[1])?u.createElement("div",{className:fe.FloatBarBtn,style:{left:v,top:p,width:g.boxSize[0]*M,height:g.boxSize[1]*M}},u.createElement(Fo,{position:{x:v,y:p},textOpt:g,workIds:[e],noLayer:!0})):null},[i,g,n,e,v,p,M]),ee=u.useMemo(()=>{let q="";if(g.text){const ie=ut(g.text);for(let G=0;G<ie.length;G++){const ae=ie[G];ae===""?q=q+"<div><br/></div>":q=q+`<div style="background-color:${g.fontBgColor}">${ae}</div>`}}else q=`<div style="background-color:${g.fontBgColor}"></div>`;return q},[g.fontBgColor,g.text]),F=u.useMemo(()=>typeof ee=="string"?u.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:W,style:Q,onKeyDown:te,onKeyUp:r,onClick:J,onTouchEnd:J,onFocus:s,onPaste:_,onInput:ke,dangerouslySetInnerHTML:{__html:ee}}):null,[ee,Q,e]);u.useEffect(()=>{F&&W.current&&(W.current.click(),setTimeout(()=>{var q;if(W.current){const ie=window==null?void 0:window.getSelection(),G=W.current.lastChild;if(ie&&G){const ae=document.createRange(),ue=((q=G.textContent)==null?void 0:q.length)||0;(G==null?void 0:G.nodeName)==="#text"?ae.setStart(G,ue):ae.setStart(G,ue&&1||0),ae.collapse(!0),ie.removeAllRanges(),ie.addRange(ae)}}},20))},[F,W.current]),u.useEffect(()=>{var q,ie,G,ae;if(F&&((q=W.current)!=null&&q.offsetWidth||(ie=W.current)!=null&&ie.offsetHeight||(G=W.current)!=null&&G.offsetLeft||(ae=W.current)!=null&&ae.offsetTop)){const ue=[W.current.offsetWidth,W.current.offsetHeight];(A&&A[0]!==ue[0]&&A[1]!==ue[1]||!A)&&a({activeTextId:e,update:{boxSize:ue,workState:j.Doing}})}},[A,F,Q,e]);function J(){W.current&&W.current.focus(),c()}function te(q){if(q.key==="Backspace"){const ie=window.getSelection(),G=ie==null?void 0:ie.getRangeAt(0);if(G!=null&&G.collapsed)return q.cancelable&&q.preventDefault(),document.execCommand("delete",!1),!1}return c(),!1}function L(q,ie){const G=window==null?void 0:window.getSelection();if(G!=null&&G.rangeCount&&q&&G&&G.anchorNode){const ae=G.anchorOffset,ue=G.anchorNode.textContent||"",me=ue.slice(0,ae)||"",dt=ue.slice(ae)||"",Be=me.concat(q)||"";B(Be,dt,ie)}}function B(q,ie,G){const ae=window==null?void 0:window.getSelection();if(!(ae!=null&&ae.rangeCount)||!ae.anchorNode)return;const ue=q.split(/\n/);let me=ae.anchorNode.parentNode;me===G&&(me=ae.anchorNode);const dt=[...G.childNodes],Be=[];let De,Wt=ae.anchorOffset;for(;dt.length;){const Me=dt.pop();if(Me){if(Me===me){let Ne=ue[0];ue.length===1&&(Wt=ue[0].length,Ne=ue[0].concat(ie)),me.nodeName==="#text"?(me.textContent=Ne,De=me):me.nodeName==="DIV"&&(me.innerText=Ne,De=me.childNodes[0]);break}Be.push(Me),G.removeChild(Me)}}if(ue.length>1)for(let Me=1;Me<ue.length;Me++){let Ne=ue[Me];const tt=document.createElement("div");g.fontBgColor&&(tt.style.backgroundColor=g.fontBgColor),Me===ue.length-1&&(Wt=Ne.length,Ne=Ne.concat(ie)),Ne===""?tt.innerHTML="<br/>":tt.innerText=Ne,G.appendChild(tt),Me===ue.length-1&&(De=tt.childNodes[0])}if(Be.length){Be.reverse();for(const Me of Be)G.appendChild(Me)}if(De&&De.nodeName==="#text"){ae.deleteFromDocument();const Me=document.createRange(),Ne=Math.min(Wt,(De==null?void 0:De.length)||0);Me.setStart(De,Ne),Me.collapse(!0),ae.removeAllRanges(),ae.addRange(Me)}}function _(q){if(q.cancelable&&q.preventDefault(),q.stopPropagation(),W.current){const ie=(q.clipboardData||window.clipboardData).getData("text"),G=window==null?void 0:window.getSelection();if(!(G!=null&&G.rangeCount))return;ie&&G&&G.anchorNode&&L(ie,W.current),c()}}function ke(q){r(q),c()}return u.createElement(u.Fragment,null,re,u.createElement("div",{className:"editor-box",style:X,onFocus:()=>{l.control.room&&!l.control.room.disableDeviceInputs&&(d(l.control.room.disableDeviceInputs),l.control.room.disableDeviceInputs=!0)},onBlur:()=>{l!=null&&l.control.room&&S.isBoolean(h)&&(l.control.room.disableDeviceInputs=h)}},F))};class Vo extends u.Component{constructor(t){super(t)}getInnerText(t){const e=[];for(let i=0;i<t.childNodes.length;i++){const n=t.childNodes[i];if(n.nodeName==="#text"&&i===0){const r=n.textContent.split(/\n/),s=r.pop();e.push(...r),s&&e.push(s)}else if(n.nodeName==="DIV"){const r=n.innerText.split(/\n/);if(r.length===2&&r[0]===""&&r[1]==="")e.push("");else{const s=r.shift();s&&e.push(s);const a=r.pop();e.push(...r),a&&e.push(a)}}}return e}updateOptInfo(t){var s,a;const{activeTextId:e,update:i,syncData:n}=t,r=e&&S.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,...i},n&&(r.canSync=Object.keys(n).includes("canSync")&&n.canSync||r.canSync,r.canWorker=Object.keys(n).includes("canWorker")&&n.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((i,n)=>{if(this.props.selectIds.includes(n)&&!(this.props.activeTextId==n)&&this.props.box){const{x:s,y:a}=this.props.box,{x:l,y:c}=i,h=`${l-s}px`,d=`${c-a}px`,g=u.createElement(Qf,{left:h,top:d,key:n,data:i,workId:n,isSelect:!0,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(g)}}),e}return null}render(){return u.createElement(u.Fragment,null,this.editorUI)}}class Bf extends Vo{constructor(e){super(e);f(this,"ref");f(this,"isRunAnimation");this.ref=u.createRef(),this.isRunAnimation=void 0}runAnimation(){this.isRunAnimation||(this.isRunAnimation=requestAnimationFrame(()=>{var e,i;(e=this.ref)!=null&&e.current&&((i=this.ref)==null||i.current.scrollTo({left:0,behavior:"instant"})),this.isRunAnimation=void 0}))}handleKeyUp(e){const i=this.getInnerText(e.nativeEvent.target),n=this.props.activeTextId;if(n){const r=this.props.manager.control.textEditorManager.get(n),s=Mi(i),a=j.Doing,l=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!r||r&&(r.opt.text!==s||!S.isEqual(r.opt.boxSize,l)||!S.isEqual(r.opt.workState,a)))&&this.updateOptInfo({activeTextId:n,update:{text:s,boxSize:l,workState:a},syncData:{canSync:!0,canWorker:!0}})}}handleFocus(e){const i=this.props.activeTextId;if(i){const n=this.props.manager.control.textEditorManager.get(i),r=j.Doing,s=[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight];(!n||n&&(!S.isEqual(n.opt.boxSize,s)||!S.isEqual(n.opt.workState,r)))&&this.updateOptInfo({activeTextId:i,update:{boxSize:s,workState:r},syncData:{canSync:!0,canWorker:!0}})}}get editorUI(){var e;if((e=this.props.editors)!=null&&e.size){const i=[];return this.props.editors.forEach((n,r)=>{if(!(this.props.selectIds.includes(r)&&this.props.activeTextId!==r)){const l=this.props.activeTextId==r?u.createElement(Hf,{key:r,data:n,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)}):u.createElement($f,{manager:this.props.manager,isActive:n.opt.workState===j.Doing||n.opt.workState===j.Start||!1,key:r,data:n,workId:r});i.push(l)}}),i}return null}render(){return u.createElement("div",{className:`${this.props.className}`,ref:this.ref},this.editorUI)}}const Ff=()=>{const{floatBarData:o}=u.useContext(le);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},u.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}))},Vf=()=>{const{floatBarData:o,maranger:t}=u.useContext(le),[e,i]=u.useState(),[n,r]=u.useState();u.useEffect(()=>{const l=[];if(t&&S.isNumber(o==null?void 0:o.x)&&S.isNumber(o==null?void 0:o.y)&&(o!=null&&o.points)){const c=t.viewId;if(t.control.viewContainerManager.getView(c))for(const d of o.points){const g=t.control.viewContainerManager.transformToOriginPoint(d,c);l.push(g)}l[0]&&i({x:l[0][0]-((o==null?void 0:o.x)||0),y:l[0][1]-((o==null?void 0:o.y)||0)}),l[1]&&r({x:l[1][0]-((o==null?void 0:o.x)||0),y:l[1][1]-((o==null?void 0:o.y)||0)})}},[t,o==null?void 0:o.points,o==null?void 0:o.x,o==null?void 0:o.y]);const s=u.useMemo(()=>e?u.createElement("div",{className:"point point-dot",style:{borderColor:o==null?void 0:o.selectorColor,left:e.x,top:e.y}}):null,[o==null?void 0:o.selectorColor,e]),a=u.useMemo(()=>n?u.createElement("div",{className:"point point-dot",style:{borderColor:o==null?void 0:o.selectorColor,left:n.x,top:n.y}}):null,[n,o==null?void 0:o.selectorColor]);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},s,a)},Zf=()=>{const{floatBarData:o}=u.useContext(le);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},u.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}),u.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:o==null?void 0:o.selectorColor}}))},Gf=()=>{const{floatBarData:o}=u.useContext(le);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:o==null?void 0:o.selectorColor}},u.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},Jf=o=>{const{className:t}=o,{floatBarData:e,angle:i,setAngle:n,setOperationType:r,maranger:s}=u.useContext(le),[a,l]=u.useState(!1),[c,h]=u.useState(new se),[d,g]=u.useState(new se),[M,w]=u.useState(!1);u.useEffect(()=>(H.activeListener(v),()=>{H.unmountActiveListener(v)}),[]);const v=I=>{var N;if(!I){w(!0),l(!1),r(x.None);return}w(!1),(N=s==null?void 0:s.control.room)!=null&&N.disableDeviceInputs&&(s.control.room.disableDeviceInputs=!1)};u.useEffect(()=>{if(e){const I=Math.floor(e.w/2),N=Math.floor(-e.h/2);g(new se(I,N)),h(new se)}},[e]);const p=(I,N)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),s!=null&&s.control.worker.isBusy){w(!0);return}l(!0);const T=Math.round(se.GetAngleByPoints(c,d,new se(N.x,N.y)))||0;n(T),r(x.RotateNode),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),H.emitMethod($.MainEngine,x.RotateNode,{workIds:[O],angle:T,workState:j.Start,viewId:s==null?void 0:s.viewId})},m=rt((I,N)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),s!=null&&s.control.worker.isBusy){w(!0);return}l(!1);const T=Math.round(se.GetAngleByPoints(c,d,new se(N.x,N.y)))||0;n(T),r(x.None),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),H.emitMethod($.MainEngine,x.RotateNode,{workIds:[O],angle:T,workState:j.Done,viewId:s==null?void 0:s.viewId})},100,{leading:!1}),y=rt((I,N)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),s!=null&&s.control.worker.isBusy){w(!0);return}l(!0);const T=Math.round(se.GetAngleByPoints(c,d,new se(N.x,N.y)))||0;n(T),r(x.RotateNode),H.emitMethod($.MainEngine,x.RotateNode,{workIds:[O],angle:T,workState:j.Doing,viewId:s==null?void 0:s.viewId})},100,{leading:!1});return u.createElement(at,{disabled:M,handle:".bezier-pencil-plugin-rotate-mouse-pointer",onStart:p,onDrag:y,onStop:m},u.createElement("div",{className:`${t}`,style:e?{left:e.x-30,top:e.y+e.h+20,touchAction:"none"}:void 0},!a&&u.createElement("div",{className:"bezier-pencil-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},u.createElement("img",{alt:"icon",src:ge("rotation-button")})),u.createElement("div",{className:`bezier-pencil-plugin-rotate-mouse-pointer ${a?"active":""}`},u.createElement("img",{alt:"icon",src:ge("rotation")}),u.createElement("div",{className:"angle-icon"},i,"°"))))},qf=o=>{const{floatBarData:t,setOperationType:e,maranger:i}=u.useContext(le),{onClickHandle:n}=o,[r,s]=u.useState(j.Pending),[a,l]=u.useState(),[c,h]=u.useState(),[d,g]=u.useState(!1);u.useEffect(()=>(H.activeListener(M),()=>{H.unmountActiveListener(M)}),[]);const M=y=>{var I;if(!y||t!=null&&t.isLocked){g(!0),s(j.Pending),e(x.None);return}g(!1),(I=i==null?void 0:i.control.room)!=null&&I.disableDeviceInputs&&(i.control.room.disableDeviceInputs=!1)};u.useEffect(()=>{if(t!=null&&t.isLocked||i!=null&&i.control.worker.isBusy){g(!0),s(j.Pending);return}g(!1)},[t==null?void 0:t.isLocked]),u.useEffect(()=>{S.isNumber(t==null?void 0:t.x)&&S.isNumber(t==null?void 0:t.y)&&(r===j.Pending||r===j.Done)&&h({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 w=y=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),i!=null&&i.control.worker.isBusy){g(!0),s(j.Pending);return}S.isNumber(t==null?void 0:t.x)&&S.isNumber(t==null?void 0:t.y)&&(e(x.TranslateNode),s(j.Start),l({x:t==null?void 0:t.x,y:t==null?void 0:t.y}),i!=null&&i.control.room&&(i.control.room.disableDeviceInputs=!0),H.emitMethod($.MainEngine,x.TranslateNode,{workIds:[O],position:{x:t==null?void 0:t.x,y:t==null?void 0:t.y},workState:j.Start,viewId:i==null?void 0:i.viewId}))},v=S.throttle((y,I)=>{if(y.cancelable&&y.preventDefault(),i!=null&&i.control.worker.isBusy){g(!0),s(j.Pending);return}y.stopPropagation();const N={x:I.x,y:I.y};e(x.None),s(j.Done),i!=null&&i.control.room&&(i.control.room.disableDeviceInputs=!1),H.emitMethod($.MainEngine,x.TranslateNode,{workIds:[O],position:N,workState:j.Done,viewId:i==null?void 0:i.viewId})},100,{leading:!1}),p=S.throttle((y,I)=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),i!=null&&i.control.worker.isBusy){g(!0),s(j.Pending);return}const N={x:I.x,y:I.y};(I.x!==(t==null?void 0:t.x)||I.y!==(t==null?void 0:t.y))&&(s(j.Doing),H.emitMethod($.MainEngine,x.TranslateNode,{workIds:[O],position:N,workState:j.Doing,viewId:i==null?void 0:i.viewId}))},100,{leading:!1}),m=u.useMemo(()=>!!((t==null?void 0:t.scaleType)===pe.none&&(t!=null&&t.canLock)),[t]);return u.createElement(at,{disabled:d,position:c,onStart:w,onDrag:p,onStop:v},u.createElement("div",{style:t?{position:"absolute",left:0,top:0,width:t.w,height:t.h,zIndex:2,pointerEvents:m?"none":"auto",touchAction:"none"}:void 0,onClick:S.throttle(y=>(y.stopPropagation(),y.cancelable&&y.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)&&n(y),!1),100,{leading:!1}),onTouchEndCapture:S.throttle(y=>(y.stopPropagation(),y.cancelable&&y.preventDefault(),i&&r!==j.Doing&&n(y),!1),100,{leading:!1})}))},Kf=o=>{const{className:t}=o,[e,i]=u.useState({x:0,y:0,h:0,w:0}),{floatBarData:n,maranger:r}=u.useContext(le),[s,a]=u.useState(),[l,c]=u.useState(!1);u.useEffect(()=>(n&&i({x:n.x,y:n.y,w:n.w,h:n.h}),H.activeListener(h),()=>{H.unmountActiveListener(h)}),[]);const h=v=>{var p;if(!v){c(!0);return}c(!1),(p=r==null?void 0:r.control.room)!=null&&p.disableDeviceInputs&&(r.control.room.disableDeviceInputs=!1)},d=v=>{if(v.cancelable&&v.preventDefault(),v.stopPropagation(),r!=null&&r.control.worker.isBusy){c(!0);return}if(n!=null&&n.w&&(n!=null&&n.h)){const p={x:(n==null?void 0:n.x)||0,y:(n==null?void 0:n.y)||0,w:n.w,h:n.h};i(p),a({box:p}),r!=null&&r.control.room&&(r.control.room.disableDeviceInputs=!0),H.emitMethod($.MainEngine,x.ScaleNode,{workIds:[O],box:p,workState:j.Start,viewId:r==null?void 0:r.viewId})}},g=S.throttle((v,p,m,y)=>{var z,b;if(v.cancelable&&v.preventDefault(),v.stopPropagation(),r!=null&&r.control.worker.isBusy){c(!0);return}const{box:I,reverseY:N,reverseX:T}=w(p,y);I.h!==0&&I.w!==0&&(I.h!==((z=s==null?void 0:s.box)==null?void 0:z.h)||I.w!==((b=s==null?void 0:s.box)==null?void 0:b.w))&&(y.width!==0||y.height!==0)&&(a({box:I,dir:p,reverseY:N,reverseX:T}),H.emitMethod($.MainEngine,x.ScaleNode,{workIds:[O],box:I,dir:p,reverseY:N,reverseX:T,workState:j.Doing,viewId:r==null?void 0:r.viewId}))},100,{leading:!1}),M=S.throttle(v=>{if(v.cancelable&&v.preventDefault(),v.stopPropagation(),r!=null&&r.control.worker.isBusy){c(!0);return}if(r!=null&&r.control.room&&(r.control.room.disableDeviceInputs=!1),s){const{box:p,dir:m,reverseY:y,reverseX:I}=s;H.emitMethod($.MainEngine,x.ScaleNode,{workIds:[O],box:p,dir:m,reverseY:y,reverseX:I,workState:j.Done,viewId:r==null?void 0:r.viewId})}},100,{leading:!1}),w=(v,p)=>{let m=!1,y=!1;const I={x:e.x,y:e.y,w:e.w,h:e.h};switch(v){case"top":{const N=p.height+e.h;N<0?(y=!0,I.y=e.y+e.h,I.h=Math.abs(N)):(I.y=e.y-p.height,I.h=e.h+p.height);break}case"topLeft":{const N=p.width+e.w;N<0?(m=!0,I.x=e.x+e.w,I.w=Math.abs(N)):(I.x=e.x-p.width,I.w=e.w+p.width);const T=p.height+e.h;T<0?(y=!0,I.y=e.y+e.h,I.h=Math.abs(T)):(I.y=e.y-p.height,I.h=e.h+p.height);break}case"topRight":{const N=p.width+e.w;N<0?(m=!0,I.x=e.x+N,I.w=Math.abs(N)):I.w=e.w+p.width;const T=p.height+e.h;T<0?(y=!0,I.y=e.y+e.h,I.h=Math.abs(T)):(I.y=e.y-p.height,I.h=e.h+p.height);break}case"bottom":{const N=p.height+e.h;N<0?(y=!0,I.y=e.y+N,I.h=Math.abs(N)):I.h=e.h+p.height;break}case"bottomLeft":{const N=p.width+e.w;N<0?(m=!0,I.x=e.x+e.w,I.w=Math.abs(N)):(I.x=e.x-p.width,I.w=e.w+p.width);const T=p.height+e.h;T<0?(y=!0,I.y=e.y+T,I.h=Math.abs(T)):I.h=e.h+p.height;break}case"left":{const N=p.width+e.w;N<0?(m=!0,I.x=e.x+e.w,I.w=Math.abs(N)):(I.x=e.x-p.width,I.w=e.w+p.width);break}case"bottomRight":{const N=p.width+e.w;N<0?(m=!0,I.x=e.x+N,I.w=Math.abs(N)):I.w=e.w+p.width;const T=p.height+e.h;T<0?(y=!0,I.y=e.y+T,I.h=Math.abs(T)):I.h=e.h+p.height;break}case"right":{const N=p.width+e.w;N<0?(m=!0,I.x=e.x+N,I.w=Math.abs(N)):I.w=e.w+p.width;break}}return{box:I,reverseX:m,reverseY:y}};return u.createElement(Jo.Resizable,{className:`${t}`,boundsByDirection:!0,minWidth:-(((n==null?void 0:n.x)||0)+((n==null?void 0:n.w)||0)),minHeight:-(((n==null?void 0:n.y)||0)+((n==null?void 0:n.h)||0)),size:{width:(n==null?void 0:n.w)||0,height:(n==null?void 0:n.h)||0},style:{position:"absolute",pointerEvents:"auto",left:n==null?void 0:n.x,top:n==null?void 0:n.y},enable:l?!1:{top:(n==null?void 0:n.scaleType)===pe.all&&!0||!1,right:(n==null?void 0:n.scaleType)===pe.all&&!0||!1,bottom:(n==null?void 0:n.scaleType)===pe.all&&!0||!1,left:(n==null?void 0:n.scaleType)===pe.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(n==null?void 0:n.scaleType)===pe.proportional,onResizeStart:d,onResize:g,onResizeStop:M})},oo=o=>{const{id:t,pos:e,pointMap:i,type:n}=o,{setOperationType:r,maranger:s,floatBarData:a}=u.useContext(le),[l,c]=u.useState({x:0,y:0}),[h,d]=u.useState(j.Pending),[g,M]=u.useState(!1);u.useEffect(()=>(H.activeListener(w),()=>{H.unmountActiveListener(w)}),[]);const w=y=>{var I;if(!y||a!=null&&a.isLocked){M(!0),d(j.Pending),r(x.None);return}M(!1),(I=s==null?void 0:s.control.room)!=null&&I.disableDeviceInputs&&(s.control.room.disableDeviceInputs=!1)};u.useEffect(()=>{S.isNumber(e.x)&&S.isNumber(e.y)&&(h===j.Pending||h===j.Done)&&c({x:e.x,y:e.y})},[e,h]);const v=y=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),s!=null&&s.control.worker.isBusy){M(!0),d(j.Pending);return}S.isNumber(e.x)&&S.isNumber(e.y)&&(r(x.SetPoint),d(j.Start),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),H.emitMethod($.MainEngine,x.SetPoint,{workId:O,pointMap:i,workState:j.Start,viewId:s==null?void 0:s.viewId}))},p=S.throttle((y,I)=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),s!=null&&s.control.worker.isBusy){M(!0),d(j.Pending);return}const N={x:I.x,y:I.y};if((N.x!==(e==null?void 0:e.x)||N.y!==(e==null?void 0:e.y))&&(s!=null&&s.control.viewContainerManager)){const T=s.control.viewContainerManager.transformToScenePoint([N.x,N.y],s.viewId),z=i.get(t);z&&n==="start"?z[0]=T:z&&n==="end"&&(z[1]=T),d(j.Doing),H.emitMethod($.MainEngine,x.SetPoint,{workId:O,pointMap:i,workState:j.Doing,viewId:s==null?void 0:s.viewId})}},100,{leading:!1}),m=S.throttle((y,I)=>{if(y.cancelable&&y.preventDefault(),s!=null&&s.control.worker.isBusy){M(!0),d(j.Pending);return}y.stopPropagation(),r(x.None),d(j.Done);const N={x:I.x,y:I.y};if(s!=null&&s.control.viewContainerManager){const T=s.control.viewContainerManager.transformToScenePoint([N.x,N.y],s.viewId),z=i.get(t);z&&n==="start"?z[0]=T:z&&n==="end"&&(z[1]=T),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),H.emitMethod($.MainEngine,x.SetPoint,{workId:O,pointMap:i,workState:j.Done,viewId:s==null?void 0:s.viewId})}},100,{leading:!1});return u.createElement(at,{disabled:g,position:l,onStart:v,onDrag:p,onStop:m},u.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn",style:a?{left:0,top:0}:void 0}))},_f=o=>{const{className:t}=o,{floatBarData:e,maranger:i}=u.useContext(le),[n,r]=u.useState(),[s,a]=u.useState(),[l,c]=u.useState(new Map);u.useEffect(()=>{const g=[];if(i&&(e!=null&&e.points)){const M=i.viewId;if(i.control.viewContainerManager.getView(M))for(const v of e.points){const p=i.control.viewContainerManager.transformToOriginPoint(v,M);g.push(p)}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]})},[i,e==null?void 0:e.points,e==null?void 0:e.selectIds,l]);const h=u.useMemo(()=>n&&(e!=null&&e.selectIds)?u.createElement(oo,{pos:n,type:"start",id:e.selectIds[0],pointMap:l}):null,[n,e==null?void 0:e.selectIds,l]),d=u.useMemo(()=>s&&(e!=null&&e.selectIds)?u.createElement(oo,{pos:s,type:"end",id:e.selectIds[0],pointMap:l}):null,[s,e==null?void 0:e.selectIds,l]);return u.createElement("div",{className:`${t}`},h,d)},Xf=u.forwardRef((o,t)=>{const{floatBarData:e,operationType:i}=u.useContext(le),n=u.useMemo(()=>(e==null?void 0:e.scaleType)!==pe.all||i===x.RotateNode?null:u.createElement(Ff,null),[e,i]),r=u.useMemo(()=>(e==null?void 0:e.scaleType)!==pe.both||i===x.RotateNode?null:u.createElement(Vf,null),[e,i]),s=u.useMemo(()=>(e==null?void 0:e.scaleType)!==pe.proportional||i===x.RotateNode?null:u.createElement(Zf,null),[e,i]),a=u.useMemo(()=>(e==null?void 0:e.scaleType)===pe.none&&(e!=null&&e.canLock)?u.createElement(Gf,null):null,[e]);return u.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,n,r,s,o.children)}),ep=u.forwardRef((o,t)=>{var g;const{floatBarData:e,operationType:i,maranger:n}=u.useContext(le),{editors:r,activeTextId:s}=o,a=u.useMemo(()=>{var M;return e!=null&&e.canRotate&&((M=e==null?void 0:e.selectIds)==null?void 0:M.length)===1&&(i===x.None||i===x.RotateNode)?u.createElement(Jf,{className:fe.RotateBtn}):null},[e==null?void 0:e.canRotate,(g=e==null?void 0:e.selectIds)==null?void 0:g.length,i]),l=u.useMemo(()=>((e==null?void 0:e.scaleType)===pe.all||(e==null?void 0:e.scaleType)===pe.proportional)&&(i===x.None||i===x.ScaleNode)&&S.isNumber(e==null?void 0:e.x)&&S.isNumber(e==null?void 0:e.y)?u.createElement(Kf,{className:fe.ResizeBtn}):null,[e==null?void 0:e.scaleType,i,e==null?void 0:e.x,e==null?void 0:e.y]),c=u.useMemo(()=>(e==null?void 0:e.scaleType)===pe.both&&(i===x.None||i===x.SetPoint)?u.createElement(_f,{className:fe.ResizeTowBox}):null,[e==null?void 0:e.scaleType,i]),h=u.useMemo(()=>{const M=(e==null?void 0:e.selectIds)||[];return r&&n&&M&&S.isNumber(e==null?void 0:e.x)&&S.isNumber(e==null?void 0:e.y)&&S.isNumber(e==null?void 0:e.w)&&S.isNumber(e==null?void 0:e.h)?u.createElement(Vo,{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:n,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,n,s]),d=u.useMemo(()=>i===x.None&&S.isNumber(e==null?void 0:e.x)&&S.isNumber(e==null?void 0:e.y)&&S.isNumber(e==null?void 0:e.w)&&S.isNumber(e==null?void 0:e.h)?u.createElement("div",{className:fe.FloatBarBtn,style:{left:e==null?void 0:e.x,top:e==null?void 0:e.y,width:e.w,height:e.h}},u.createElement(Fo,{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,i]);return u.createElement("div",{className:fe.FloatBar,onMouseOver:()=>{console.log("onMouseOver"),n==null||n.control.worker.blurCursor(n.viewId)}},u.createElement(Xf,{ref:t},u.createElement(u.Fragment,null,h)),u.createElement(qf,{onClickHandle:M=>{if(n&&(r!=null&&r.size)){const w=n.getPoint(M.nativeEvent);w&&n.control.textEditorManager.computeTextActive(w,n.viewId)}}}),a,l,c,d)}),tp=u.memo(ep,(o,t)=>!!S.isEqual(o,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==",op="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",np="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 sp extends u.Component{constructor(e){super(e);f(this,"renderAvatar",e=>{var n;const i=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.detectCursorName(e);return u.createElement("img",{className:"cursor-selector-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":i,marginRight:r?4:0},src:(n=e.payload)==null?void 0:n.avatar,alt:"avatar"})}else return null});f(this,"getOpacity",e=>{const i=this.getCursorName(e),n=this.detectAvatar(e);return i===void 0&&n===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 i=this.detectCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:i?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});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 u.createElement("span",{className:"cursor-tag-name",style:{backgroundColor:this.getCursorTagBackgroundColor(e)}},e.payload.cursorTagName)})}render(){const{roomMember:e}=this.props,i=this.getCursorName(e);switch(e.memberState.currentApplianceName){case Z.pencil:return u.createElement("div",{className:"cursor-box"},u.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -90%)",marginLeft:"10px"}},u.createElement("div",{className:"cursor-name"},u.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),u.createElement("div",null,u.createElement("img",{className:"cursor-pencil-image",src:ip,alt:"pencilCursor"}))));case Z.text:return u.createElement("div",{className:"cursor-box"},u.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},u.createElement("div",{className:"cursor-name"},u.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),u.createElement("div",null,u.createElement("img",{className:"cursor-arrow-image",src:np,alt:"textCursor"}))));case Z.rectangle:case Z.arrow:case Z.straight:case Z.shape:case Z.ellipse:return u.createElement("div",{className:"cursor-box"},u.createElement("div",{className:"cursor-mid cursor-pencil-offset",style:{transform:"translate(-50%, -65%)",marginLeft:"0px"}},u.createElement("div",{className:"cursor-name"},u.createElement("div",{style:{opacity:this.getOpacity(e),backgroundColor:this.getCursorBackgroundColor(e),color:this.getCursorTextColor(e)},className:this.getThemeClass(e)},this.renderAvatar(e),i,this.renderTag(e))),u.createElement("div",null,u.createElement("img",{className:"cursor-arrow-image",src:op,alt:"shapeCursor"}))));default:return null}}}const rp=o=>{const{className:t,info:e}=o,{roomMember:i,...n}=e||{};return u.createElement("div",{className:`${t}`,style:n?{transform:`translate(${n.x}px, ${n.y}px)`}:{display:"none"}},i&&u.createElement(sp,{roomMember:i}))},ap=o=>{const{className:t,manager:e}=o,[i,n]=u.useState();u.useEffect(()=>(e.internalMsgEmitter.on([$.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([$.Cursor,e.viewId],r)}),[e]);function r(a){n(a)}return u.useMemo(()=>{if(i!=null&&i.length){const a=i.map(l=>{var c;return l.roomMember?u.createElement(rp,{key:(c=l.roomMember)==null?void 0:c.memberId,className:t,info:l}):null});return u.createElement(u.Fragment,null,a)}return null},[i])},le=u.createContext({maranger:void 0,floatBarColors:[],floatBarData:void 0,dpr:1,angle:0,operationType:x.None,scale:[1,1],setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class pi extends u.Component{constructor(e){var i;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:x.None,scale:[1,1],editors:this.editors,activeTextId:(i=this.props.maranger.control.textEditorManager)==null?void 0:i.activeId}}get editors(){return lt(this.props.maranger.control.textEditorManager.filterEditor(this.props.maranger.viewId))}componentDidMount(){this.props.maranger.vDom=this,this.props.maranger.mountView(),this.setState({dpr:this.props.maranger.dpr})}componentWillUnmount(){}showFloatBar(e,i){const n=e&&i&&{...this.state.floatBarData,...i}||void 0;this.setState({showFloatBar:e,floatBarData:n,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 i,n,r,s,a,l,c;const e=!!((n=(i=this.props.maranger.control)==null?void 0:i.room)!=null&&n.floatBarOptions);return u.createElement("div",{className:fe.Container},!this.props.maranger.control.hasOffscreenCanvas()&&u.createElement("div",{className:fe.CanvasBox,ref:this.props.refs.canvasContainerRef})||u.createElement("div",{className:fe.CanvasBox,onMouseDown:h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()},onTouchStart:h=>{h.stopPropagation()},onMouseMove:h=>{this.props.maranger.cursorMouseMove(h)}},u.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),u.createElement("canvas",{id:"serviceCanvas",className:fe.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),u.createElement("canvas",{id:"localCanvas",className:fe.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),u.createElement("canvas",{id:"topCanvas",className:fe.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.maranger.control.hasOffscreenCanvas()&&this.props.refs.snapshotContainerRef&&u.createElement("div",{className:fe.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,u.createElement(le.Provider,{value:{maranger:this.props.maranger,floatBarColors:e&&((a=(s=(r=this.props.maranger.control)==null?void 0:r.room)==null?void 0:s.floatBarOptions)==null?void 0:a.colors)||[],floatBarData:this.state.floatBarData,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&&u.createElement(tp,{ref:this.props.refs.floatBarRef,editors:this.state.editors,activeTextId:this.state.activeTextId})||null,((l=this.state.editors)==null?void 0:l.size)&&u.createElement(Bf,{className:fe.TextEditorContainer,showFloatBtns:e,manager:this.props.maranger,selectIds:((c=this.state.floatBarData)==null?void 0:c.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null),u.createElement(ap,{className:fe.CursorBox,manager:this.props.maranger}))}}class cp extends Ho{constructor(e,i){super(e,i);f(this,"width",1e3);f(this,"height",1e3);f(this,"dpr",1);f(this,"vDom");f(this,"eventTragetElement");f(this,"snapshotContainerRef");f(this,"canvasContainerRef",u.createRef());f(this,"canvasTopRef",u.createRef());f(this,"canvasServiceFloatRef",u.createRef());f(this,"canvasFloatRef",u.createRef());f(this,"canvasBgRef",u.createRef());f(this,"floatBarRef",u.createRef());f(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=u.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&this.canvasContainerRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Oe(),this.width=e,this.height=i,this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${i}px`),e&&i&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Oe(),this.width=e,this.height=i),e&&i&&this.canvasBgRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Oe(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=i,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=i*this.dpr))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const i=e.querySelectorAll(".teaching-aids-plugin-main-view-displayer");for(const n of i)n.remove()}}}createMainViewDisplayer(e){const i=document.createElement("div");return i.className="teaching-aids-plugin-main-view-displayer",e.appendChild(i),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),oi.render(u.createElement(pi,{viewId:this.viewId,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef}}),i),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class lp extends tf{constructor(e,i,n){super(e,i,n);f(this,"dpr",1);f(this,"width",1e3);f(this,"height",1e3);f(this,"vDom");f(this,"eventTragetElement");f(this,"canvasContainerRef",u.createRef());f(this,"canvasTopRef",u.createRef());f(this,"canvasServiceFloatRef",u.createRef());f(this,"canvasFloatRef",u.createRef());f(this,"canvasBgRef",u.createRef());f(this,"floatBarRef",u.createRef());f(this,"containerOffset",{x:0,y:0})}setCanvassStyle(){if(this.eventTragetElement){if(this.canvasContainerRef.current){const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&(e!==this.width||i!==this.height)&&(this.width=e,this.height=i,this.dpr=Oe(),this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){this.dpr=Oe(this.canvasBgRef.current.getContext("2d"));const e=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;e&&i&&(e!==this.width||i!==this.height)&&(this.width=e,this.height=i,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=i*this.dpr))}}}createAppViewDisplayer(e,i){const n=document.createElement("div");return n.className="teaching-aids-plugin-app-view-displayer",i.appendChild(n),this.eventTragetElement=i.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),oi.render(u.createElement(pi,{viewId:e,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef}}),n),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Ce 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(he,!0),this.mainViewDestroy(e),await new Promise(n=>{setTimeout(()=>{n(!0)},0)}),this.onMainViewMounted(e);const i=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(i),this.control.clearSnapshootData()});f(this,"mainViewDestroy",e=>{var i;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const n=e.divElement;if(n){const r=n.getElementsByClassName("teaching-aids-plugin-main-view-displayer");for(const s of r)s.remove()}if(this.mainView.container&&n!==this.mainView.container){const r=this.mainView.container.getElementsByClassName("teaching-aids-plugin-main-view-displayer");for(const s of r)s.remove()}(i=this.control.worker)==null||i.destroyViewWorker(this.mainView.id,!0),this.mainView.displayer.destroy(),this.mainView=void 0}});f(this,"onMainViewMounted",e=>{const i=e.divElement;if(!i||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const r=new cp(this.control,de.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,c={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...Ce.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...Ce.defaultLayerOpt,width:s,height:a},cameraOpt:{...Ce.defaultCameraOpt,width:s,height:a}},{scale:h,...d}=e.camera;c.cameraOpt={...c.cameraOpt,...d,scale:h===1/0?1:h},this.focuedViewId=he,this.createMianView({id:he,container:i,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:c.cameraOpt,viewData:e}),this.focuedView=this.mainView,r.createMainViewDisplayer(i),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});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,i=this.mainView.cameraOpt;if(i){const n=i.width,r=i.height,{width:s,height:a}=this.mainView.viewData.size;(s!==n||a!==r)&&this.mainView.displayer.updateSize();const l=e.scale===1/0?1:e.scale,c=e.centerX||0,h=e.centerY||0,d={...i,scale:l,centerX:c,centerY:h,width:s,height:a};S.isEqual(i,d)||(this.mainView.cameraOpt=d),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:h,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});f(this,"onAppViewMounted",async e=>{var g;const{appId:i,view:n}=e,r=n.divElement;if(!r||!n.focusScenePath)return;const s=this.appViews.get(i);if(s&&s.displayer){let M=r.getElementsByClassName("teaching-aids-plugin-app-view-displayer");for(const w of M)w.remove();if(s.container&&s.container!==r){M=s.container.getElementsByClassName("teaching-aids-plugin-app-view-displayer");for(const w of M)w.remove()}this.destroyAppView(e.appId,!0),(g=this.control.worker)==null||g.destroyViewWorker(i,!0),await new Promise(w=>{setTimeout(()=>{w(!0)},0)})}const a=new lp(i,this.control,de.InternalMsgEmitter),l=n.size.width||a.width,c=n.size.height||a.height,d={dpr:a.dpr,originalPoint:[l/2,c/2],offscreenCanvasOpt:{...Ce.defaultScreenCanvasOpt,width:l,height:c},layerOpt:{...Ce.defaultLayerOpt,width:l,height:c},cameraOpt:{...Ce.defaultCameraOpt,...n.camera,width:l,height:c}};if(this.createAppView({id:i,container:r,displayer:a,cameraOpt:d.cameraOpt,focusScenePath:n.focusScenePath,viewData:n}),a.createAppViewDisplayer(i,r),n.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,i)),n.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,i)),n.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===i){const M=this.control.worker.getLocalWorkViewId();M&&M!==i?this.setFocuedViewId(M):this.setFocuedViewId(i),this.tmpFocusedViewId=void 0}setTimeout(()=>{this.onAppViewCameraUpdated(i)},0)});f(this,"onAppViewSizeUpdated",async e=>{await new Promise(n=>{setTimeout(()=>{n(!0)},0)});const i=this.appViews.get(e);i&&i.viewData&&this.updateAppCamera(e)});f(this,"onAppViewCameraUpdated",async e=>{await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),this.updateAppCamera(e)});f(this,"updateAppCamera",e=>{const i=this.appViews.get(e);if(i&&i.viewData){const n=i.viewData.camera,r=i.cameraOpt;if(r){const{width:s,height:a}=i.viewData.size,l=r.width,c=r.height;(s!==l||a!==c)&&i.displayer.updateSize();const h=n.scale===1/0?1:n.scale,d=n.centerX||0,g=n.centerY||0,M={...r,scale:h,centerX:d,centerY:g,width:s,height:a};S.isEqual(M,r)||(i.cameraOpt=M)}}});this.control=e.control}async mountView(e){var n,r;const i=this.getView(e);if(i){const{width:s,height:a,dpr:l}=i.displayer,c={dpr:l,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...Ce.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...Ce.defaultLayerOpt,width:s,height:a},cameraOpt:{...Ce.defaultCameraOpt,width:s,height:a}};if(i.viewData){const{scale:h,...d}=i.viewData.camera;c.cameraOpt={...c.cameraOpt,...d,scale:h===1/0?1:h}}e===((n=this.mainView)==null?void 0:n.id)&&(this.control.cursor.activeCollector(),await this.control.activeWorker()),(r=this.control.worker)==null||r.createViewWorker(e,c),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath,{isAsync:!0,useAnimation:!1})}}listenerWindowManager(e){e.emitter.on("focusedChange",i=>{const n=i||he;if(this.focuedViewId!==n)if(this.getView(n)){const s=this.control.worker.getLocalWorkViewId();s&&s!==n?this.setFocuedViewId(s):this.setFocuedViewId(n)}else this.tmpFocusedViewId=n}),e.emitter.on("mainViewScenePathChange",i=>{this.control.onSceneChange(i,he)}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",i=>{this.appViews.get(i.appId)&&(this.destroyAppView(i.appId),this.control.worker.destroyViewWorker(i.appId))}),e.emitter.on("onAppScenePathChange",i=>{const{appId:n,view:r}=i;this.control.onSceneChange(r.focusScenePath,n)}),e.emitter.on("appsChange",i=>{for(const n of this.appViews.keys())i.includes(n)||(this.destroyAppView(n),this.control.worker.destroyViewWorker(n,!0))})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class It extends de{constructor(e){super(e);f(this,"windowManager");f(this,"viewContainerManager");const i={control:this,internalMsgEmitter:de.InternalMsgEmitter};this.viewContainerManager=new Ce(i)}init(){}destroy(){var e,i,n,r;this.roomMember.destroy(),(e=this.collector)==null||e.destroy(),(i=this.worker)==null||i.destroy(),(n=this.viewContainerManager)==null||n.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(he,!0);return}const{diffView:i,diffScenePath:n,diffData:r}=e,s=new Map;if(i){let c;Object.keys(i).forEach(h=>{var g;const d=i[h];if(d&&!d.newValue)(g=this.worker)==null||g.clearViewScenePath(h,!0),d.oldValue&&(c=d.oldValue);else if(d&&d.newValue){for(const M of Object.keys(d.newValue))this.worker.pullServiceData(h,M,{isAsync:!1,useAnimation:!0});c=d.newValue}if(c)for(const M of Object.values(c)){const w=new Set;for(const v of Object.keys(M))v&&w.add(v);s.set(h,w)}})}if(n){let c;Object.keys(n).forEach(h=>{var g;const d=n[h];if(d&&d.viewId&&!d.newValue?((g=this.worker)==null||g.clearViewScenePath(d.viewId,!0),d.oldValue&&(c=d.oldValue)):d&&d.viewId&&d.newValue&&(this.worker.pullServiceData(d.viewId,h,{isAsync:!1,useAnimation:!0}),c=d.newValue),d!=null&&d.viewId&&c){const M=new Set;for(const w of Object.keys(c))w&&M.add(w),s.set(d.viewId,M)}})}r&&Object.keys(r).forEach(c=>{var d;const h=r[c];if(h){const{viewId:g}=h,M=s.get(g)||new Set;M.add(c),s.set(g,M),(d=this.worker)==null||d.onServiceDerive(c,h)}});for(const[c,h]of s.entries())de.InternalMsgEmitter.emit("excludeIds",[...h],c)}),this.room&&this.roomMember.onUidChangeHook(e=>{var i,n;if((i=this.collector)!=null&&i.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 h;return(h=this.collector)==null?void 0:h.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 h,d;const c=(h=this.collector)==null?void 0:h.getUidFromKey(s);c&&!e.online.includes(c)&&((d=this.collector)==null||d.updateValue(s,void 0,{isAfterUpdate:!0,viewId:a,scenePath:l}))})}(n=this.cursor)==null||n.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 i,n,r,s,a;this.windowManager=e,(n=(i=this.windowManager)==null?void 0:i.mainView)!=null&&n.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(s=(r=this.windowManager.appManager)==null?void 0:r.viewManager)==null?void 0:s.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((l,c)=>{this.viewContainerManager.onAppViewMounted({appId:c,view:l})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const P=class P extends K.InvisiblePlugin{constructor(){super(...arguments);f(this,"onPhaseChanged",e=>{var i;e===K.RoomPhase.Reconnecting&&((i=P.currentManager)==null||i.setSnapshootData())});f(this,"updateRoomWritable",()=>{var e;(e=P.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});f(this,"roomStateChangeListener",async e=>{var i,n;K.isRoom(this.displayer)&&!this.displayer.isWritable||(e.memberState&&((i=P.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((n=P.currentManager)==null||n.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){!i.options.cdn.fullWorkerUrl&&!i.options.cdn.subWorkerUrl&&P.logger.error("[ApplianceMultiPlugin] you must adaptor options cdn fullWorkerUrl and subWorkerUrl");const n=e.displayer,r=n.callbacks.on,s=n.callbacks.off,a=n.callbacks.once,l=e.cleanCurrentScene,c=e.mainView.setMemberState;i!=null&&i.logger&&(P.logger=i.logger),i.options&&(P.options={...Pe,...i.options});let h=n.getInvisiblePlugin(P.kind);n&&h&&P.createCurrentManager(e,P.options,h),!h&&K.isRoom(n)&&(h=await P.createApplianceMultiPlugin(n,P.kind)),h&&P.currentManager&&(P.currentManager.bindPlugin(h),h.init(n));const d={displayer:n,windowManager:e,currentManager:P.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(M){var p;P.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const w=(e.mainView||n).getBoundingRect(M),v=await((p=P.currentManager)==null?void 0:p.getBoundingRect(M));return!w.width||!w.height?v:Wo(w,v)},screenshotToCanvasAsync:async function(M,w,v,p,m,y){var Y;P.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let I=v,N=p,T=m.scale;I>this.maxScreenshotWidth&&(T=this.maxScreenshotWidth/I*T,I=this.maxScreenshotWidth),N>this.maxScreenshotHeight&&(T=Math.min(this.maxScreenshotHeight/N*T,T),N=this.maxScreenshotHeight),m.scale=T;const z=document.createElement("canvas"),b=z.getContext("2d");z.width=I*(y||1),z.height=N*(y||1),b&&((e.mainView||n).screenshotToCanvas(b,w,I,N,m,y),M.drawImage(z,Math.floor((v-I)/2),Math.floor((p-N)/2),I*(y||1),N*(y||1),0,0,I,N),z.remove()),P.currentManager&&await((Y=P.currentManager)==null?void 0:Y.screenshotToCanvas(M,w,I,N,m,Math.floor((v-I)/2),Math.floor((p-N)/2)))},scenePreviewAsync:async function(M,w,v,p,m){P.logger.info("[ApplianceMultiPlugin] scenePreview"),(e.mainView||n).scenePreview(M,w,v,p,m);const y=document.createElement("img");y.style.position="absolute",y.style.top="0px",y.style.left="0px",y.style.width="100%",y.style.height="100%",y.style.pointerEvents="none",w.append(y),getComputedStyle(w).position||(w.style.position="relative"),P.currentManager&&await P.currentManager.scenePreview(M,y)},_callbacksOn:function(M,w){P.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&K.isRoom(n)&&n.isWritable?It.InternalMsgEmitter.on(M,w):r.call(n.callbacks,M,w)},_callbacksOnce:function(M,w){P.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&K.isRoom(n)&&n.isWritable?It.InternalMsgEmitter.on(M,w):a.call(n.callbacks,M,w)},_callbacksOff:function(M,w){P.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&K.isRoom(n)&&n.isWritable?It.InternalMsgEmitter.off(M,w):s.call(n.callbacks,M,w)},undo:function(){return P.logger.info("[ApplianceMultiPlugin] undo"),P.currentManager&&K.isRoom(n)&&!n.disableSerialization?P.currentManager.viewContainerManager.undo():0},redo:function(){return P.logger.info("[ApplianceMultiPlugin] redo"),P.currentManager&&K.isRoom(n)&&!n.disableSerialization?P.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){P.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),P.currentManager&&K.isRoom(n)&&n.isWritable&&(P.currentManager.cleanCurrentScene(),l.call(e))},insertImage:function(M){P.logger.info("[ApplianceMultiPlugin] insertImage"),P.currentManager&&K.isRoom(n)&&n.isWritable&&P.currentManager.worker.insertImage(M)},lockImage:function(M,w){P.logger.info("[ApplianceMultiPlugin] lockImage"),P.currentManager&&K.isRoom(n)&&n.isWritable&&P.currentManager.worker.lockImage(M,w)},completeImageUpload:function(M,w){P.logger.info("[ApplianceMultiPlugin] completeImageUpload"),P.currentManager&&K.isRoom(n)&&n.isWritable&&P.currentManager.worker.completeImageUpload(M,w)},getImagesInformation:function(M){return P.logger.info("[ApplianceMultiPlugin] completeImageUpload"),P.currentManager&&K.isRoom(n)&&n.isWritable?P.currentManager.worker.getImagesInformation(M):[]},callbacks:()=>(P.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...n.callbacks,on:d._callbacksOn.bind(d),once:d._callbacksOnce.bind(d),off:d._callbacksOff.bind(d)}),destroy(){P.currentManager&&(P.logger.info("[ApplianceMultiPlugin] destroy"),P.currentManager.destroy(),P.currentManager=void 0)},setMemberState(M){P.logger.info("[ApplianceMultiPlugin] setMemberState"),Object.keys(M).includes("currentApplianceName")&&(M.currentApplianceName&&M.currentApplianceName===Z.laserPen?(M.currentApplianceName=Z.pencil,M.useLaserPen=!0):M.currentApplianceName&&M.currentApplianceName===Z.pencil&&(M.useLaserPen=!1)),c.call(e.mainView,M)}},g=(M,w)=>{if(P.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${w}`),typeof M[w]=="function"||typeof M[w]>"u"){M[w]=d[w];return}w==="callbacks"&&(M.callbacks.on=d._callbacksOn.bind(d),M.callbacks.off=d._callbacksOff.bind(d),M.callbacks.once=d._callbacksOnce.bind(d))};return g(e,"undo"),g(e,"redo"),g(e,"cleanCurrentScene"),g(e,"insertImage"),g(e,"completeImageUpload"),g(e,"lockImage"),g(n,"getImagesInformation"),g(n,"callbacks"),g(n,"screenshotToCanvasAsync"),g(n,"getBoundingRectAsync"),g(n,"scenePreviewAsync"),g(e.mainView,"setMemberState"),{...d,callbacks:d.callbacks()}}static onCreate(e){e&&P.currentManager&&(P.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,i){await e.createInvisiblePlugin(P,{});let n=e.getInvisiblePlugin(i);return n||(n=await P.createApplianceMultiPlugin(e,i)),n}get isReplay(){return K.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,n;if(K.isRoom(e)){const r=e.state;(i=P.currentManager)==null||i.onMemberChange(r.memberState),(n=P.currentManager)==null||n.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("[ApplianceMultiPlugin] passive destroy"),(e=P.currentManager)==null||e.destroy(),P.currentManager=void 0}};f(P,"kind","appliance-multi-plugin"),f(P,"currentManager"),f(P,"logger",{info:console.log,warn:console.warn,error:console.error}),f(P,"options",Pe),f(P,"createCurrentManager",(e,i,n)=>{if(P.currentManager&&P.currentManager.destroy(),i&&e){const r={plugin:n,displayer:e.displayer,options:i},s=new It(r);P.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),P.currentManager=s}});let ei=P;class up extends Ho{constructor(e,i){super(e,i);f(this,"width",1e3);f(this,"height",1e3);f(this,"dpr",1);f(this,"vDom");f(this,"viewId",he);f(this,"eventTragetElement");f(this,"snapshotContainerRef");f(this,"canvasContainerRef",u.createRef());f(this,"canvasTopRef",u.createRef());f(this,"canvasServiceFloatRef",u.createRef());f(this,"canvasFloatRef",u.createRef());f(this,"canvasBgRef",u.createRef());f(this,"floatBarRef",u.createRef());f(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas()||(this.snapshotContainerRef=u.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,i=this.eventTragetElement.offsetHeight;e&&i&&this.canvasContainerRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Oe()),e&&i&&this.canvasContainerRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Oe(),this.width=e,this.height=i),e&&i&&this.canvasBgRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Oe(this.canvasBgRef.current.getContext("2d")),this.width=e,this.height=i,this.canvasBgRef.current.width=e*this.dpr,this.canvasBgRef.current.height=i*this.dpr,this.canvasFloatRef.current&&(this.canvasFloatRef.current.width=e*this.dpr,this.canvasFloatRef.current.height=i*this.dpr),this.canvasServiceFloatRef.current&&(this.canvasServiceFloatRef.current.width=e*this.dpr,this.canvasServiceFloatRef.current.height=i*this.dpr),this.canvasTopRef.current&&(this.canvasTopRef.current.width=e*this.dpr,this.canvasTopRef.current.height=i*this.dpr))}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",oi.render(u.createElement(pi,{viewId:this.viewId,maranger: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 up(this.control,de.InternalMsgEmitter);this.focuedViewId=he;const{width:i,height:n,dpr:r}=e,s={dpr:r,originalPoint:[i/2,n/2],offscreenCanvasOpt:{...Ae.defaultScreenCanvasOpt,width:i,height:n},layerOpt:{...Ae.defaultLayerOpt,width:i,height:n},cameraOpt:{...Ae.defaultCameraOpt,width:i,height:n}},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:he,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 n;const i=this.getView(e);if(i){const{width:r,height:s,dpr:a}=i.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(i.viewData){const{scale:c,...h}=i.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:c===1/0?1:c}}this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.activeWorker()),(n=this.control.worker)==null||n.createViewWorker(e,l),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath,{isAsync:!0,useAnimation:!1})}}}class Le extends de{constructor(e){super(e);f(this,"viewContainerManager");f(this,"divMainView");f(this,"onCameraChange",rt(e=>{var n;const i=this.viewContainerManager.mainView;i&&i.cameraOpt&&(i.cameraOpt.width!==e.width||i.cameraOpt.height!==e.height)&&((n=this.viewContainerManager.mainView)==null||n.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},20,{leading:!1}));const i={control:this,internalMsgEmitter:Le.InternalMsgEmitter};this.viewContainerManager=new Ae(i)}init(){Le.InternalMsgEmitter.on($.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(he,!0);return}const{diffView:i,diffScenePath:n,diffData:r}=e,s=new Map;if(i){let c;Object.keys(i).forEach(h=>{var g;const d=i[h];if(d&&!d.newValue)(g=this.worker)==null||g.clearViewScenePath(h,!0),d.oldValue&&(c=d.oldValue);else if(d&&d.newValue){for(const M of Object.keys(d.newValue))this.worker.pullServiceData(h,M,{isAsync:!1,useAnimation:!0});c=d.newValue}if(c)for(const M of Object.values(c)){const w=new Set;for(const v of Object.keys(M))v&&w.add(v);s.set(h,w)}})}if(n){let c;Object.keys(n).forEach(h=>{var g;const d=n[h];if(d&&d.viewId&&!d.newValue?((g=this.worker)==null||g.clearViewScenePath(d.viewId,!0),d.oldValue&&(c=d.oldValue)):d&&d.viewId&&d.newValue&&(this.worker.pullServiceData(d.viewId,h,{isAsync:!1,useAnimation:!0}),c=d.newValue),d!=null&&d.viewId&&c){const M=new Set;for(const w of Object.keys(c))w&&M.add(w),s.set(d.viewId,M)}})}r&&Object.keys(r).forEach(c=>{var d;const h=r[c];if(h){const{viewId:g}=h,M=s.get(g)||new Set;M.add(c),s.set(g,M),(d=this.worker)==null||d.onServiceDerive(c,h)}});for(const[c,h]of s.entries())de.InternalMsgEmitter.emit("excludeIds",[...h],c)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var i,n,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(l=>{var c,h,d;if(l&&l.focusScenePath&&((c=this.collector)!=null&&c.serviceStorage[l.id])&&((h=this.collector)!=null&&h.serviceStorage[l.id][l.focusScenePath])){const g=Object.keys((d=this.collector)==null?void 0:d.serviceStorage[l.id][l.focusScenePath]).filter(M=>{var w;return(w=this.collector)==null?void 0:w.isSelector(M)}).map(M=>({viewId:l.id,scenePath:l.focusScenePath,key:M}));g.length&&a.push(...g)}}),a.forEach(({key:l,viewId:c,scenePath:h})=>{var g,M;const d=(g=this.collector)==null?void 0:g.getUidFromKey(l);d&&!e.online.includes(d)&&((M=this.collector)==null||M.updateValue(l,void 0,{isAfterUpdate:!0,viewId:c,scenePath:h}))})}(r=(n=this.cursor)==null?void 0:n.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(l=>{var c,h;e.online.includes(l)||(h=(c=this.cursor)==null?void 0:c.eventCollector)==null||h.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 E=class E extends K.InvisiblePlugin{constructor(){super(...arguments);f(this,"onPhaseChanged",e=>{var i;e===K.RoomPhase.Reconnecting&&((i=E.currentManager)==null||i.setSnapshootData())});f(this,"updateRoomWritable",()=>{var e;(e=E.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});f(this,"roomStateChangeListener",async e=>{var i,n;E.currentManager instanceof Le&&(e.cameraState&&E.currentManager.onCameraChange(e.cameraState),e.sceneState&&E.currentManager.onSceneChange(e.sceneState.scenePath,he)),!(K.isRoom(this.displayer)&&!this.displayer.isWritable)&&(e.memberState&&((i=E.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((n=E.currentManager)==null||n.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const n=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene.bind(e),l=e.setMemberState.bind(e);i!=null&&i.logger&&(E.logger=i.logger),i.options&&(E.options={...Pe,...i.options});let c=e.getInvisiblePlugin(E.kind);e&&c&&E.createCurrentManager(e,E.options,c),!c&&K.isRoom(e)&&(c=await E.createAppliancePlugin(e,E.kind)),c&&E.currentManager&&(E.currentManager.bindPlugin(c),c.init(e)),i!=null&&i.cursorAdapter&&(E.cursorAdapter=i.cursorAdapter),E.effectInstance();const h={displayer:e,currentManager:E.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(g){var v;E.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const M=e.getBoundingRect(g),w=await((v=E.currentManager)==null?void 0:v.getBoundingRect(g));return!M.width||!M.height?w:Wo(M,w)},screenshotToCanvasAsync:async function(g,M,w,v,p,m){var b;E.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let y=w,I=v,N=p.scale;y>this.maxScreenshotWidth&&(N=this.maxScreenshotWidth/y*N,y=this.maxScreenshotWidth),I>this.maxScreenshotHeight&&(N=Math.min(this.maxScreenshotHeight/I*N,N),I=this.maxScreenshotHeight),p.scale=N;const T=document.createElement("canvas"),z=T.getContext("2d");T.width=y*(m||1),T.height=I*(m||1),z&&(e.screenshotToCanvas(z,M,y,I,p,m),g.drawImage(T,Math.floor((w-y)/2),Math.floor((v-I)/2),y*(m||1),I*(m||1),0,0,y,I),T.remove()),E.currentManager&&await((b=E.currentManager)==null?void 0:b.screenshotToCanvas(g,M,y,I,p,Math.floor((w-y)/2),Math.floor((v-I)/2)))},scenePreviewAsync:async function(g,M,w,v,p){E.logger.info("[ApplianceSinglePlugin] scenePreview"),e.scenePreview(g,M,w,v,p);const m=document.createElement("img");m.style.position="absolute",m.style.top="0px",m.style.left="0px",m.style.width="100%",m.style.height="100%",m.style.pointerEvents="none",M.append(m),getComputedStyle(M).position||(M.style.position="relative"),E.currentManager&&await E.currentManager.scenePreview(g,m)},_callbacksOn:function(g,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&K.isRoom(e)&&e.isWritable?Le.InternalMsgEmitter.on(g,M):n.call(e.callbacks,g,M)},_callbacksOnce:function(g,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&K.isRoom(e)&&e.isWritable?Le.InternalMsgEmitter.on(g,M):s.call(e.callbacks,g,M)},_callbacksOff:function(g,M){E.logger.info(`[ApplianceSinglePlugin] callbacks ${g}`),(g==="onCanUndoStepsUpdate"||g==="onCanRedoStepsUpdate")&&K.isRoom(e)&&e.isWritable?Le.InternalMsgEmitter.off(g,M):r.call(e.callbacks,g,M)},undo:function(){return E.logger.info("[ApplianceSinglePlugin] undo"),E.currentManager&&K.isRoom(e)&&!e.disableSerialization?E.currentManager.viewContainerManager.undo():0},redo:function(){return E.logger.info("[ApplianceSinglePlugin] redo"),E.currentManager&&K.isRoom(e)&&!e.disableSerialization?E.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(g){E.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),E.currentManager&&K.isRoom(e)&&e.isWritable&&(E.currentManager.cleanCurrentScene(),a.call(e,g))},insertImage:function(g){E.logger.info("[ApplianceSinglePlugin] insertImage"),E.currentManager&&K.isRoom(e)&&e.isWritable&&E.currentManager.worker.insertImage(g)},lockImage:function(g,M){E.logger.info("[ApplianceSinglePlugin] lockImage"),E.currentManager&&K.isRoom(e)&&e.isWritable&&E.currentManager.worker.lockImage(g,M)},completeImageUpload:function(g,M){E.logger.info("[ApplianceSinglePlugin] completeImageUpload"),E.currentManager&&K.isRoom(e)&&e.isWritable&&E.currentManager.worker.completeImageUpload(g,M)},getImagesInformation:function(g){return E.logger.info("[ApplianceSinglePlugin] completeImageUpload"),E.currentManager&&K.isRoom(e)&&e.isWritable?E.currentManager.worker.getImagesInformation(g):[]},callbacks:()=>({...e.callbacks,on:h._callbacksOn.bind(h),once:h._callbacksOnce.bind(h),off:h._callbacksOff.bind(h)}),destroy(){E.currentManager&&(E.logger.info("[ApplianceSinglePlugin] destroy"),E.currentManager.destroy(),E.currentManager=void 0,E.cursorAdapter=void 0)},setMemberState(g){E.logger.info("[ApplianceSinglePlugin] setMemberState"),Object.keys(g).includes("currentApplianceName")&&(g.currentApplianceName&&g.currentApplianceName===Z.laserPen?(g.currentApplianceName=Z.pencil,g.useLaserPen=!0):g.currentApplianceName&&g.currentApplianceName===Z.pencil&&(g.useLaserPen=!1)),l(g)}},d=(g,M)=>{if(E.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${M}`),typeof g[M]=="function"||typeof g[M]>"u"){g[M]=h[M];return}M==="callbacks"&&(g.callbacks.on=h._callbacksOn.bind(h),g.callbacks.off=h._callbacksOff.bind(h),g.callbacks.once=h._callbacksOnce.bind(h))};return d(e,"undo"),d(e,"redo"),d(e,"cleanCurrentScene"),d(e,"insertImage"),d(e,"completeImageUpload"),d(e,"lockImage"),d(e,"getImagesInformation"),d(e,"callbacks"),d(e,"screenshotToCanvasAsync"),d(e,"getBoundingRectAsync"),d(e,"scenePreviewAsync"),d(e,"setMemberState"),{...h,callbacks:h.callbacks()}}static onCreate(e){e&&E.currentManager&&(E.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,i){await e.createInvisiblePlugin(E,{});let n=e.getInvisiblePlugin(i);return n||(n=await E.createAppliancePlugin(e,i)),n}static effectInstance(){if(E.cursorAdapter){const e=E.cursorAdapter.onAddedCursor;E.cursorAdapter.onAddedCursor=function(i){i.onCursorMemberChanged=n=>{try{n.appliance===Z.pencil||n.appliance===Z.shape||n.appliance===Z.text||n.appliance===Z.arrow||n.appliance===Z.straight||n.appliance===Z.rectangle||n.appliance===Z.ellipse?i!=null&&i.divElement&&(i.divElement.style.display="none"):i!=null&&i.divElement&&(i.divElement.style.display="block")}catch{}},e.call(E.cursorAdapter,i)}}}get isReplay(){return K.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,n;if(K.isRoom(e)){const r=e.state;r!=null&&r.memberState&&((i=E.currentManager)==null||i.onMemberChange(r.memberState),(n=E.currentManager)==null||n.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;E.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=E.currentManager)==null||e.destroy(),E.currentManager=void 0,E.cursorAdapter=void 0}};f(E,"kind","appliance-aids-single-plugin"),f(E,"cursorAdapter"),f(E,"currentManager"),f(E,"logger",{info:console.log,warn:console.warn,error:console.error}),f(E,"options",Pe),f(E,"createCurrentManager",(e,i,n)=>{E.currentManager&&E.currentManager.destroy();const r={plugin:n,displayer:e,options:i},s=new Le(r);s.init(),E.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),E.currentManager=s});let ti=E;const Ve=class Ve extends u.Component{constructor(){super(...arguments);f(this,"mainViewRef",null)}componentDidMount(){Ve.emiter||(Ve.emiter=Le.InternalMsgEmitter),Ve.emiter.emit($.BindMainView,this.mainViewRef)}render(){return u.createElement(u.Fragment,null,this.props.children,u.createElement("div",{className:"teaching-aids-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};f(Ve,"emiter");let ii=Ve;exports.ActiveContainerType=ro;exports.ApplianceMultiPlugin=ei;exports.ApplianceNames=Z;exports.ApplianceSigleWrapper=ii;exports.ApplianceSinglePlugin=ti;exports.Cursor_Hover_Id=tM;exports.DefaultAppliancePluginOptions=Pe;exports.ECanvasContextType=St;exports.ECanvasShowType=Se;exports.EDataType=V;exports.EMatrixrRelationType=nt;exports.EPostMessageType=D;exports.EScaleType=pe;exports.EStrokeType=vt;exports.EToolsKey=C;exports.ElayerType=$e;exports.EmitEventType=x;exports.EventMessageType=ot;exports.EvevtWorkState=j;exports.EvevtWorkType=ao;exports.InternalMsgEmitterType=$;exports.Main_View_Id=he;exports.Point2d=se;exports.ShapeType=Te;exports.Storage_Selector_key=O;exports.Storage_Splitter=xe;exports.Storage_ViewId_ALL=Po;exports.Task_Time_Interval=iM;exports.Vec2d=k;exports.ViewContainerManager=Ge;exports._baseGetTag=Qe;exports.average=qg;exports.checkOp=Gg;exports.cloneDeep=lt;exports.computRect=Rg;exports.fullWorker=qo;exports.getDefaultExportFromCjs=ct;exports.getRectFromPoints=fi;exports.getRectMatrixrRelation=Kg;exports.getRectRotated=$g;exports.getRectRotatedPoints=Uo;exports.getRectScaleed=Qg;exports.getRectTranslated=Ug;exports.getRotatePoints=Bg;exports.getScalePoints=Hg;exports.getWHRatio=Zg;exports.isBoolean=Kt;exports.isEqual=qt;exports.isIntersect=Wg;exports.isIntersectForPoint=$o;exports.isObjectLike_1=Ee;exports.precise=Jg;exports.rotatePoints=Fg;exports.scalePoints=Vg;exports.strlen=_g;exports.subWorker=Ko;exports.throttle=rt;exports.transformToNormalData=ut;exports.transformToSerializableData=Mi;
|