@netless/appliance-plugin 1.0.1 → 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.
Files changed (76) hide show
  1. package/README.md +52 -14
  2. package/cdn/cdn.js +1 -1
  3. package/cdn/fullWorker-uIttd_.js +437 -0
  4. package/cdn/subWorker-4wkCzC.js +437 -0
  5. package/dist/appliance-plugin.js +1 -1
  6. package/dist/appliance-plugin.mjs +14 -13
  7. package/dist/collector/base.d.ts +3 -1
  8. package/dist/collector/collector.d.ts +5 -4
  9. package/dist/collector/eventCollector.d.ts +2 -1
  10. package/dist/collector/magixEventCollector.d.ts +30 -0
  11. package/dist/collector/types.d.ts +27 -7
  12. package/dist/component/textEditor/manager.d.ts +2 -2
  13. package/dist/component/textEditor/types.d.ts +0 -1
  14. package/dist/component/textEditor/view.d.ts +4 -1
  15. package/dist/core/const.d.ts +2 -0
  16. package/dist/core/enum.d.ts +12 -5
  17. package/dist/core/mainEngine.d.ts +31 -10
  18. package/dist/core/mainThread/base.d.ts +6 -2
  19. package/dist/core/mainThread/snapshotThread.d.ts +3 -3
  20. package/dist/core/mainThread/subLocalThread.d.ts +18 -10
  21. package/dist/core/mainThread/subServiceThread.d.ts +2 -1
  22. package/dist/core/mainThread/subTopThread.d.ts +15 -8
  23. package/dist/core/msgEvent/deleteNode/forMainThread.d.ts +1 -5
  24. package/dist/core/msgEvent/deleteNode/forWorker.d.ts +1 -5
  25. package/dist/core/msgEvent/scaleNode/forMain.d.ts +7 -6
  26. package/dist/core/msgEvent/setFont/forMain.d.ts +2 -1
  27. package/dist/core/msgEvent/translateNode/forMain.d.ts +0 -1
  28. package/dist/core/tools/arrow.d.ts +36 -7
  29. package/dist/core/tools/base.d.ts +22 -8
  30. package/dist/core/tools/ellipse.d.ts +36 -7
  31. package/dist/core/tools/eraser.d.ts +40 -4
  32. package/dist/core/tools/image.d.ts +9 -5
  33. package/dist/core/tools/laserPen.d.ts +34 -4
  34. package/dist/core/tools/pencil.d.ts +37 -4
  35. package/dist/core/tools/polygon.d.ts +36 -7
  36. package/dist/core/tools/rectangle.d.ts +36 -7
  37. package/dist/core/tools/selector.d.ts +52 -5
  38. package/dist/core/tools/speechBalloon.d.ts +36 -8
  39. package/dist/core/tools/star.d.ts +36 -7
  40. package/dist/core/tools/straight.d.ts +36 -7
  41. package/dist/core/tools/text.d.ts +20 -10
  42. package/dist/core/tools/utils.d.ts +6 -5
  43. package/dist/core/types.d.ts +1 -3
  44. package/dist/core/utils/index.d.ts +10 -0
  45. package/dist/core/utils/math.d.ts +9 -2
  46. package/dist/core/{mainThread/vNodeManager.d.ts → vNodeManager.d.ts} +10 -3
  47. package/dist/core/worker/base.d.ts +18 -16
  48. package/dist/core/worker/fullWorkerLocal.d.ts +18 -9
  49. package/dist/core/worker/fullWorkerService.d.ts +10 -9
  50. package/dist/core/worker/subWorkerLocal.d.ts +5 -8
  51. package/dist/core/worker/subWorkerTopLayer.d.ts +13 -9
  52. package/dist/core/worker/workerManager.d.ts +18 -10
  53. package/dist/cursors/index.d.ts +44 -18
  54. package/dist/displayer/floatBtns/del.d.ts +1 -1
  55. package/dist/displayer/floatBtns/lock.d.ts +1 -1
  56. package/dist/fullWorker.js +141 -157
  57. package/dist/index-BdHH_zhp.js +1 -0
  58. package/dist/index-RCWmSJU4.mjs +9601 -0
  59. package/dist/index-RcUgPE7z.mjs +5570 -0
  60. package/dist/index-a-uKt6aD.js +1 -0
  61. package/dist/plugin/applianceSinglePlugin.d.ts +1 -0
  62. package/dist/plugin/baseApplianceManager.d.ts +7 -1
  63. package/dist/plugin/baseViewContainerManager.d.ts +0 -3
  64. package/dist/plugin/const.d.ts +11 -1
  65. package/dist/plugin/displayerView.d.ts +3 -5
  66. package/dist/plugin/multi/containerManager.d.ts +2 -1
  67. package/dist/style.css +1 -1
  68. package/dist/subWorker.js +141 -157
  69. package/package.json +2 -3
  70. package/cdn/fullWorker-CIvt1j.js +0 -453
  71. package/cdn/subWorker-BE-0dg.js +0 -453
  72. package/dist/core/worker/vNodeManager.d.ts +0 -34
  73. package/dist/index-BcIJbozZ.js +0 -1
  74. package/dist/index-C1YKkWHE.mjs +0 -9090
  75. package/dist/index-ClJPZxV-.mjs +0 -5462
  76. package/dist/index-SsMz_ohn.js +0 -1
@@ -1 +0,0 @@
1
- "use strict";var Zo=Object.defineProperty;var Vo=(n,t,e)=>t in n?Zo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var p=(n,t,e)=>(Vo(n,typeof t!="symbol"?t+"":t,e),e);const K=require("white-web-sdk");require("spritejs");const eo=require("lz-string");require("lineclip");const to=require("eventemitter2"),q=require("lodash"),_t=require("react-dom"),u=require("react"),rt=require("react-draggable"),Go=require("re-resizable"),Jo="/fullWorker.js",Ko="/subWorker.js";var Z=(n=>(n.selector="selector",n.clicker="clicker",n.laserPointer="laserPointer",n.pencil="pencil",n.rectangle="rectangle",n.ellipse="ellipse",n.shape="shape",n.eraser="eraser",n.pencilEraser="pencilEraser",n.text="text",n.straight="straight",n.arrow="arrow",n.hand="hand",n.laserPen="laserPen",n))(Z||{}),yt=(n=>(n.Normal="Normal",n.Stroke="Stroke",n.Dotted="Dotted",n.LongDotted="LongDotted",n))(yt||{}),Ce=(n=>(n.Triangle="triangle",n.Rhombus="rhombus",n.Pentagram="pentagram",n.SpeechBalloon="speechBalloon",n.Star="star",n.Polygon="polygon",n))(Ce||{}),S=(n=>(n.None="None",n.ShowFloatBar="ShowFloatBar",n.ZIndexFloatBar="ZIndexFloatBar",n.DeleteNode="DeleteNode",n.CopyNode="CopyNode",n.ZIndexActive="ZIndexActive",n.ZIndexNode="ZIndexNode",n.RotateNode="RotateNode",n.SetColorNode="SetColorNode",n.TranslateNode="TranslateNode",n.ScaleNode="ScaleNode",n.OriginalEvent="OriginalEvent",n.CreateScene="CreateScene",n.ActiveCursor="ActiveCursor",n.MoveCursor="MoveCursor",n.CommandEditor="CommandEditor",n.SetEditorData="SetEditorData",n.SetFontStyle="SetFontStyle",n.SetPoint="SetPoint",n.SetLock="SetLock",n.SetShapeOpt="SetShapeOpt",n.CameraChange="CameraChange",n.ActiveMethod="ActiveMethod",n))(S||{}),W=(n=>(n.DisplayState="DisplayState",n.MainEngine="MainEngine",n.Cursor="Cursor",n.BindMainView="BindMainView",n))(W||{}),io=(n=>(n[n.MainView=0]="MainView",n[n.Plugin=1]="Plugin",n[n.Both=2]="Both",n))(io||{}),T=(n=>(n[n.Pencil=1]="Pencil",n[n.Eraser=2]="Eraser",n[n.Selector=3]="Selector",n[n.Clicker=4]="Clicker",n[n.Arrow=5]="Arrow",n[n.Hand=6]="Hand",n[n.LaserPen=7]="LaserPen",n[n.Text=8]="Text",n[n.Straight=9]="Straight",n[n.Rectangle=10]="Rectangle",n[n.Ellipse=11]="Ellipse",n[n.Star=12]="Star",n[n.Triangle=13]="Triangle",n[n.Rhombus=14]="Rhombus",n[n.Polygon=15]="Polygon",n[n.SpeechBalloon=16]="SpeechBalloon",n[n.Image=17]="Image",n))(T||{}),G=(n=>(n[n.Local=1]="Local",n[n.Service=2]="Service",n[n.Worker=3]="Worker",n))(G||{}),C=(n=>(n[n.Pending=0]="Pending",n[n.Start=1]="Start",n[n.Doing=2]="Doing",n[n.Done=3]="Done",n[n.Unwritable=4]="Unwritable",n))(C||{}),D=(n=>(n[n.None=0]="None",n[n.Init=1]="Init",n[n.UpdateCamera=2]="UpdateCamera",n[n.UpdateTools=3]="UpdateTools",n[n.CreateWork=4]="CreateWork",n[n.DrawWork=5]="DrawWork",n[n.FullWork=6]="FullWork",n[n.UpdateNode=7]="UpdateNode",n[n.RemoveNode=8]="RemoveNode",n[n.Clear=9]="Clear",n[n.Select=10]="Select",n[n.Destroy=11]="Destroy",n[n.Snapshot=12]="Snapshot",n[n.BoundingBox=13]="BoundingBox",n[n.Cursor=14]="Cursor",n[n.TextUpdate=15]="TextUpdate",n[n.GetTextActive=16]="GetTextActive",n[n.TasksQueue=17]="TasksQueue",n[n.CursorHover=18]="CursorHover",n))(D||{}),zt=(n=>(n.Webgl2="webgl2",n.Webgl="webgl",n.Canvas2d="2d",n))(zt||{}),Le=(n=>(n[n.None=0]="None",n[n.Bg=1]="Bg",n[n.ServiceFloat=2]="ServiceFloat",n[n.Float=3]="Float",n[n.TopFloat=4]="TopFloat",n))(Le||{}),Qe=(n=>(n[n.Cursor=1]="Cursor",n[n.TextCreate=2]="TextCreate",n))(Qe||{}),Fe=(n=>(n[n.Top=1]="Top",n[n.Bottom=2]="Bottom",n))(Fe||{}),fe=(n=>(n[n.none=1]="none",n[n.all=2]="all",n[n.both=3]="both",n[n.proportional=4]="proportional",n))(fe||{}),oo=(n=>(n[n.Pending=0]="Pending",n[n.Start=1]="Start",n[n.Doing=2]="Doing",n[n.Done=3]="Done",n[n.Unwritable=4]="Unwritable",n))(oo||{});const qo={linear:n=>n,easeInQuad:n=>n*n,easeOutQuad:n=>n*(2-n),easeInOutQuad:n=>n<.5?2*n*n:-1+(4-2*n)*n,easeInCubic:n=>n*n*n,easeOutCubic:n=>--n*n*n+1,easeInOutCubic:n=>n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1,easeInQuart:n=>n*n*n*n,easeOutQuart:n=>1- --n*n*n*n,easeInOutQuart:n=>n<.5?8*n*n*n*n:1-8*--n*n*n*n,easeInQuint:n=>n*n*n*n*n,easeOutQuint:n=>1+--n*n*n*n*n,easeInOutQuint:n=>n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n,easeInSine:n=>1-Math.cos(n*Math.PI/2),easeOutSine:n=>Math.sin(n*Math.PI/2),easeInOutSine:n=>-(Math.cos(Math.PI*n)-1)/2,easeInExpo:n=>n<=0?0:Math.pow(2,10*n-10),easeOutExpo:n=>n>=1?1:1-Math.pow(2,-10*n),easeInOutExpo:n=>n<=0?0:n>=1?1:n<.5?Math.pow(2,20*n-10)/2:(2-Math.pow(2,-20*n+10))/2};class x{constructor(t=0,e=0,i=1){this.x=t,this.y=e,this.z=i}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,i=this.z){return this.x=t,this.y=e,this.z=i,this}setTo({x:t=0,y:e=0,z:i=1}){return this.x=t,this.y=e,this.z=i,this}rot(t){if(t===0)return this;const{x:e,y:i}=this,o=Math.sin(t),r=Math.cos(t);return this.x=e*r-i*o,this.y=e*o+i*r,this}rotWith(t,e){if(e===0)return this;const i=this.x-t.x,o=this.y-t.y,r=Math.sin(e),s=Math.cos(e);return this.x=t.x+(i*s-o*r),this.y=t.y+(i*r+o*s),this}clone(){const{x:t,y:e,z:i}=this;return new x(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=x.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 x.Dpr(this,t)}cpr(t){return x.Cpr(this,t)}len2(){return x.Len2(this)}len(){return x.Len(this)}pry(t){return x.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return x.Uni(this)}tan(t){return x.Tan(this,t)}dist(t){return x.Dist(this,t)}distanceToLineSegment(t,e){return x.DistanceToLineSegment(t,e,this)}slope(t){return x.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 x.Angle(this,t)}toAngle(){return x.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 x.Equals(this,t,e)}equalsXY(t,e){return x.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 x.ToFixed(this)}toString(){return x.ToString(x.ToFixed(this))}toJson(){return x.ToJson(this)}toArray(){return x.ToArray(this)}static Add(t,e){return new x(t.x+e.x,t.y+e.y)}static AddXY(t,e,i){return new x(t.x+e,t.y+i)}static Sub(t,e){return new x(t.x-e.x,t.y-e.y)}static SubXY(t,e,i){return new x(t.x-e,t.y-i)}static AddScalar(t,e){return new x(t.x+e,t.y+e)}static SubScalar(t,e){return new x(t.x-e,t.y-e)}static Div(t,e){return new x(t.x/e,t.y/e)}static Mul(t,e){return new x(t.x*e,t.y*e)}static DivV(t,e){return new x(t.x/e.x,t.y/e.y)}static MulV(t,e){return new x(t.x*e.x,t.y*e.y)}static Neg(t){return new x(-t.x,-t.y)}static Per(t){return new x(t.y,-t.x)}static Dist2(t,e){return x.Sub(t,e).len2()}static Abs(t){return new x(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 x(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 x.Dpr(t,e)/x.Len(e)}static Uni(t){return x.Div(t,x.Len(t))}static Tan(t,e){return x.Uni(x.Sub(t,e))}static Min(t,e){return new x(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new x(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new x().add(t)}static FromArray(t){return new x(t[0],t[1])}static Rot(t,e=0){const i=Math.sin(e),o=Math.cos(e);return new x(t.x*o-t.y*i,t.x*i+t.y*o)}static RotWith(t,e,i){const o=t.x-e.x,r=t.y-e.y,s=Math.sin(i),a=Math.cos(i);return new x(e.x+(o*a-r*s),e.y+(o*s+r*a))}static NearestPointOnLineThroughPoint(t,e,i){return x.Mul(e,x.Sub(i,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,i,o=!0){const r=x.Tan(e,t),s=x.Add(t,x.Mul(r,x.Sub(i,t).pry(r)));if(o){if(s.x<Math.min(t.x,e.x))return x.Cast(t.x<e.x?t:e);if(s.x>Math.max(t.x,e.x))return x.Cast(t.x>e.x?t:e);if(s.y<Math.min(t.y,e.y))return x.Cast(t.y<e.y?t:e);if(s.y>Math.max(t.y,e.y))return x.Cast(t.y>e.y?t:e)}return s}static DistanceToLineThroughPoint(t,e,i){return x.Dist(i,x.NearestPointOnLineThroughPoint(t,e,i))}static DistanceToLineSegment(t,e,i,o=!0){return x.Dist(i,x.NearestPointOnLineSegment(t,e,i,o))}static Snap(t,e=1){return new x(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof x?t:x.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 x.Sub(e,t).mul(i).add(t)}static Med(t,e){return new x((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 x.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=x.Len(t);return new x(e*t.x/i,e*t.y/i)}static ScaleWithOrigin(t,e,i){return x.Sub(t,i).mul(e).add(i)}static ScaleWOrigin(t,e,i){return x.Sub(t,i).mulV(e).add(i)}static ToFixed(t,e=2){return new x(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,i){return x.Add(t,x.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 x(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:i,z:o}=t;return{x:e,y:i,z:o}}static Average(t){const e=t.length,i=new x(0,0);for(let o=0;o<e;o++)i.add(t[o]);return i.div(e)}static Clamp(t,e,i){return i===void 0?new x(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new x(Math.min(Math.max(t.x,e),i),Math.min(Math.max(t.y,e),i))}static PointsBetween(t,e,i=6){const o=[];for(let r=0;r<i;r++){const s=qo.easeInQuad(r/(i-1)),a=x.Lrp(t,e,s);a.z=Math.min(1,.5+Math.abs(.5-_o(s))*.65),o.push(a)}return o}static SnapToGrid(t,e=8){return new x(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const _o=n=>n<.5?2*n*n:-1+(4-2*n)*n;class oe extends x{constructor(t=0,e=0,i=0,o={x:0,y:0},r=0,s=0){super(t,e,i),this.x=t,this.y=e,this.z=i,this.v=o,this.t=r,this.a=s}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,i=this.z,o=this.v,r=this.t,s=this.a){return this.x=t,this.y=e,this.z=i,this.v=o,this.t=r,this.a=s,this}clone(){const{x:t,y:e,z:i,v:o,t:r,a:s}=this,a={x:o.x,y:o.y};return new oe(t,e,i,a,r,s)}distance(t){return oe.GetDistance(this,t)}isNear(t,e){return oe.IsNear(this,t,e)}getAngleByPoints(t,e){return oe.GetAngleByPoints(t,this,e)}static Sub(t,e){return new oe(t.x-e.x,t.y-e.y)}static Add(t,e){return new oe(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return oe.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,i){const o=e.x-t.x,r=i.x-e.x,s=e.y-t.y,a=i.y-e.y;let c=0;const l=Math.sqrt(o*o+s*s),h=Math.sqrt(r*r+a*a);if(l&&h){const g=o*r+s*a;c=Math.acos(g/(l*h)),c=c/Math.PI*180;let d=o*a-s*r;d=d>0?1:-1,c=180+d*c}return c}static IsNear(t,e,i){return oe.Len(t.clone().sub(e))<i}static RotWith(t,e,i,o=2){const r=t.x-e.x,s=t.y-e.y,a=Math.sin(i),c=Math.cos(i),l=Math.pow(10,o),h=Math.floor((e.x+(r*c-s*a))*l)/l,g=Math.floor((e.y+(r*a+s*c))*l)/l;return new oe(h,g)}static GetDotStroke(t,e,i=16){const o=new x(1,1),r=Math.PI+.001,s=oe.Add(t,oe.Sub(t,o).uni().per().mul(-e)),a=[];for(let c=1/i,l=c;l<=1;l+=c)a.push(oe.RotWith(s,t,r*2*l));return a}static GetSemicircleStroke(t,e,i=-1,o=8){const r=i*(Math.PI+.001),s=[];for(let a=1/o,c=a;c<=1;c+=a)s.push(oe.RotWith(e,t,r*c));return s}}var lt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function He(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Xo=typeof lt=="object"&&lt&&lt.Object===Object&&lt,no=Xo,en=no,tn=typeof self=="object"&&self&&self.Object===Object&&self,on=en||tn||Function("return this")(),De=on,nn=De,sn=nn.Symbol,Ct=sn,di=Ct,so=Object.prototype,rn=so.hasOwnProperty,an=so.toString,nt=di?di.toStringTag:void 0;function cn(n){var t=rn.call(n,nt),e=n[nt];try{n[nt]=void 0;var i=!0}catch{}var o=an.call(n);return i&&(t?n[nt]=e:delete n[nt]),o}var ln=cn,un=Object.prototype,hn=un.toString;function dn(n){return hn.call(n)}var gn=dn,gi=Ct,Mn=ln,fn=gn,pn="[object Null]",yn="[object Undefined]",Mi=gi?gi.toStringTag:void 0;function In(n){return n==null?n===void 0?yn:pn:Mi&&Mi in Object(n)?Mn(n):fn(n)}var Ze=In;function wn(n){return n!=null&&typeof n=="object"}var Pe=wn,vn=Ze,Nn=Pe,mn="[object Number]";function Tn(n){return typeof n=="number"||Nn(n)&&vn(n)==mn}var zn=Tn;const ue=He(zn);function Cn(){this.__data__=[],this.size=0}var jn=Cn;function Sn(n,t){return n===t||n!==n&&t!==t}var Xt=Sn,xn=Xt;function Dn(n,t){for(var e=n.length;e--;)if(xn(n[e][0],t))return e;return-1}var jt=Dn,Ln=jt,kn=Array.prototype,bn=kn.splice;function En(n){var t=this.__data__,e=Ln(t,n);if(e<0)return!1;var i=t.length-1;return e==i?t.pop():bn.call(t,e,1),--this.size,!0}var An=En,On=jt;function Pn(n){var t=this.__data__,e=On(t,n);return e<0?void 0:t[e][1]}var Yn=Pn,Rn=jt;function Wn(n){return Rn(this.__data__,n)>-1}var Un=Wn,$n=jt;function Bn(n,t){var e=this.__data__,i=$n(e,n);return i<0?(++this.size,e.push([n,t])):e[i][1]=t,this}var Fn=Bn,Qn=jn,Hn=An,Zn=Yn,Vn=Un,Gn=Fn;function Xe(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}Xe.prototype.clear=Qn;Xe.prototype.delete=Hn;Xe.prototype.get=Zn;Xe.prototype.has=Vn;Xe.prototype.set=Gn;var St=Xe,Jn=St;function Kn(){this.__data__=new Jn,this.size=0}var qn=Kn;function _n(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Xn=_n;function es(n){return this.__data__.get(n)}var ts=es;function is(n){return this.__data__.has(n)}var os=is;function ns(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var We=ns,ss=Ze,rs=We,as="[object AsyncFunction]",cs="[object Function]",ls="[object GeneratorFunction]",us="[object Proxy]";function hs(n){if(!rs(n))return!1;var t=ss(n);return t==cs||t==ls||t==as||t==us}var ro=hs,ds=De,gs=ds["__core-js_shared__"],Ms=gs,Pt=Ms,fi=function(){var n=/[^.]+$/.exec(Pt&&Pt.keys&&Pt.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function fs(n){return!!fi&&fi in n}var ps=fs,ys=Function.prototype,Is=ys.toString;function ws(n){if(n!=null){try{return Is.call(n)}catch{}try{return n+""}catch{}}return""}var ao=ws,vs=ro,Ns=ps,ms=We,Ts=ao,zs=/[\\^$.*+?()[\]{}|]/g,Cs=/^\[object .+?Constructor\]$/,js=Function.prototype,Ss=Object.prototype,xs=js.toString,Ds=Ss.hasOwnProperty,Ls=RegExp("^"+xs.call(Ds).replace(zs,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ks(n){if(!ms(n)||Ns(n))return!1;var t=vs(n)?Ls:Cs;return t.test(Ts(n))}var bs=ks;function Es(n,t){return n==null?void 0:n[t]}var As=Es,Os=bs,Ps=As;function Ys(n,t){var e=Ps(n,t);return Os(e)?e:void 0}var Ve=Ys,Rs=Ve,Ws=De,Us=Rs(Ws,"Map"),ei=Us,$s=Ve,Bs=$s(Object,"create"),xt=Bs,pi=xt;function Fs(){this.__data__=pi?pi(null):{},this.size=0}var Qs=Fs;function Hs(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Zs=Hs,Vs=xt,Gs="__lodash_hash_undefined__",Js=Object.prototype,Ks=Js.hasOwnProperty;function qs(n){var t=this.__data__;if(Vs){var e=t[n];return e===Gs?void 0:e}return Ks.call(t,n)?t[n]:void 0}var _s=qs,Xs=xt,er=Object.prototype,tr=er.hasOwnProperty;function ir(n){var t=this.__data__;return Xs?t[n]!==void 0:tr.call(t,n)}var or=ir,nr=xt,sr="__lodash_hash_undefined__";function rr(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=nr&&t===void 0?sr:t,this}var ar=rr,cr=Qs,lr=Zs,ur=_s,hr=or,dr=ar;function et(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}et.prototype.clear=cr;et.prototype.delete=lr;et.prototype.get=ur;et.prototype.has=hr;et.prototype.set=dr;var gr=et,yi=gr,Mr=St,fr=ei;function pr(){this.size=0,this.__data__={hash:new yi,map:new(fr||Mr),string:new yi}}var yr=pr;function Ir(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var wr=Ir,vr=wr;function Nr(n,t){var e=n.__data__;return vr(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dt=Nr,mr=Dt;function Tr(n){var t=mr(this,n).delete(n);return this.size-=t?1:0,t}var zr=Tr,Cr=Dt;function jr(n){return Cr(this,n).get(n)}var Sr=jr,xr=Dt;function Dr(n){return xr(this,n).has(n)}var Lr=Dr,kr=Dt;function br(n,t){var e=kr(this,n),i=e.size;return e.set(n,t),this.size+=e.size==i?0:1,this}var Er=br,Ar=yr,Or=zr,Pr=Sr,Yr=Lr,Rr=Er;function tt(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var i=n[t];this.set(i[0],i[1])}}tt.prototype.clear=Ar;tt.prototype.delete=Or;tt.prototype.get=Pr;tt.prototype.has=Yr;tt.prototype.set=Rr;var co=tt,Wr=St,Ur=ei,$r=co,Br=200;function Fr(n,t){var e=this.__data__;if(e instanceof Wr){var i=e.__data__;if(!Ur||i.length<Br-1)return i.push([n,t]),this.size=++e.size,this;e=this.__data__=new $r(i)}return e.set(n,t),this.size=e.size,this}var Qr=Fr,Hr=St,Zr=qn,Vr=Xn,Gr=ts,Jr=os,Kr=Qr;function it(n){var t=this.__data__=new Hr(n);this.size=t.size}it.prototype.clear=Zr;it.prototype.delete=Vr;it.prototype.get=Gr;it.prototype.has=Jr;it.prototype.set=Kr;var lo=it;function qr(n,t){for(var e=-1,i=n==null?0:n.length;++e<i&&t(n[e],e,n)!==!1;);return n}var _r=qr,Xr=Ve,ea=function(){try{var n=Xr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ta=ea,Ii=ta;function ia(n,t,e){t=="__proto__"&&Ii?Ii(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var uo=ia,oa=uo,na=Xt,sa=Object.prototype,ra=sa.hasOwnProperty;function aa(n,t,e){var i=n[t];(!(ra.call(n,t)&&na(i,e))||e===void 0&&!(t in n))&&oa(n,t,e)}var ho=aa,ca=ho,la=uo;function ua(n,t,e,i){var o=!e;e||(e={});for(var r=-1,s=t.length;++r<s;){var a=t[r],c=i?i(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?la(e,a,c):ca(e,a,c)}return e}var Lt=ua;function ha(n,t){for(var e=-1,i=Array(n);++e<n;)i[e]=t(e);return i}var da=ha,ga=Ze,Ma=Pe,fa="[object Arguments]";function pa(n){return Ma(n)&&ga(n)==fa}var ya=pa,wi=ya,Ia=Pe,go=Object.prototype,wa=go.hasOwnProperty,va=go.propertyIsEnumerable,Na=wi(function(){return arguments}())?wi:function(n){return Ia(n)&&wa.call(n,"callee")&&!va.call(n,"callee")},ma=Na,Ta=Array.isArray,kt=Ta,It={exports:{}};function za(){return!1}var Ca=za;It.exports;(function(n,t){var e=De,i=Ca,o=t&&!t.nodeType&&t,r=o&&!0&&n&&!n.nodeType&&n,s=r&&r.exports===o,a=s?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||i;n.exports=l})(It,It.exports);var ti=It.exports,ja=9007199254740991,Sa=/^(?:0|[1-9]\d*)$/;function xa(n,t){var e=typeof n;return t=t??ja,!!t&&(e=="number"||e!="symbol"&&Sa.test(n))&&n>-1&&n%1==0&&n<t}var Da=xa,La=9007199254740991;function ka(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=La}var Mo=ka,ba=Ze,Ea=Mo,Aa=Pe,Oa="[object Arguments]",Pa="[object Array]",Ya="[object Boolean]",Ra="[object Date]",Wa="[object Error]",Ua="[object Function]",$a="[object Map]",Ba="[object Number]",Fa="[object Object]",Qa="[object RegExp]",Ha="[object Set]",Za="[object String]",Va="[object WeakMap]",Ga="[object ArrayBuffer]",Ja="[object DataView]",Ka="[object Float32Array]",qa="[object Float64Array]",_a="[object Int8Array]",Xa="[object Int16Array]",ec="[object Int32Array]",tc="[object Uint8Array]",ic="[object Uint8ClampedArray]",oc="[object Uint16Array]",nc="[object Uint32Array]",ie={};ie[Ka]=ie[qa]=ie[_a]=ie[Xa]=ie[ec]=ie[tc]=ie[ic]=ie[oc]=ie[nc]=!0;ie[Oa]=ie[Pa]=ie[Ga]=ie[Ya]=ie[Ja]=ie[Ra]=ie[Wa]=ie[Ua]=ie[$a]=ie[Ba]=ie[Fa]=ie[Qa]=ie[Ha]=ie[Za]=ie[Va]=!1;function sc(n){return Aa(n)&&Ea(n.length)&&!!ie[ba(n)]}var rc=sc;function ac(n){return function(t){return n(t)}}var ii=ac,wt={exports:{}};wt.exports;(function(n,t){var e=no,i=t&&!t.nodeType&&t,o=i&&!0&&n&&!n.nodeType&&n,r=o&&o.exports===i,s=r&&e.process,a=function(){try{var c=o&&o.require&&o.require("util").types;return c||s&&s.binding&&s.binding("util")}catch{}}();n.exports=a})(wt,wt.exports);var oi=wt.exports,cc=rc,lc=ii,vi=oi,Ni=vi&&vi.isTypedArray,uc=Ni?lc(Ni):cc,fo=uc,hc=da,dc=ma,gc=kt,Mc=ti,fc=Da,pc=fo,yc=Object.prototype,Ic=yc.hasOwnProperty;function wc(n,t){var e=gc(n),i=!e&&dc(n),o=!e&&!i&&Mc(n),r=!e&&!i&&!o&&pc(n),s=e||i||o||r,a=s?hc(n.length,String):[],c=a.length;for(var l in n)(t||Ic.call(n,l))&&!(s&&(l=="length"||o&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||fc(l,c)))&&a.push(l);return a}var po=wc,vc=Object.prototype;function Nc(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||vc;return n===e}var ni=Nc;function mc(n,t){return function(e){return n(t(e))}}var yo=mc,Tc=yo,zc=Tc(Object.keys,Object),Cc=zc,jc=ni,Sc=Cc,xc=Object.prototype,Dc=xc.hasOwnProperty;function Lc(n){if(!jc(n))return Sc(n);var t=[];for(var e in Object(n))Dc.call(n,e)&&e!="constructor"&&t.push(e);return t}var kc=Lc,bc=ro,Ec=Mo;function Ac(n){return n!=null&&Ec(n.length)&&!bc(n)}var Io=Ac,Oc=po,Pc=kc,Yc=Io;function Rc(n){return Yc(n)?Oc(n):Pc(n)}var si=Rc,Wc=Lt,Uc=si;function $c(n,t){return n&&Wc(t,Uc(t),n)}var Bc=$c;function Fc(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Qc=Fc,Hc=We,Zc=ni,Vc=Qc,Gc=Object.prototype,Jc=Gc.hasOwnProperty;function Kc(n){if(!Hc(n))return Vc(n);var t=Zc(n),e=[];for(var i in n)i=="constructor"&&(t||!Jc.call(n,i))||e.push(i);return e}var qc=Kc,_c=po,Xc=qc,el=Io;function tl(n){return el(n)?_c(n,!0):Xc(n)}var ri=tl,il=Lt,ol=ri;function nl(n,t){return n&&il(t,ol(t),n)}var sl=nl,vt={exports:{}};vt.exports;(function(n,t){var e=De,i=t&&!t.nodeType&&t,o=i&&!0&&n&&!n.nodeType&&n,r=o&&o.exports===i,s=r?e.Buffer:void 0,a=s?s.allocUnsafe:void 0;function c(l,h){if(h)return l.slice();var g=l.length,d=a?a(g):new l.constructor(g);return l.copy(d),d}n.exports=c})(vt,vt.exports);var rl=vt.exports;function al(n,t){var e=-1,i=n.length;for(t||(t=Array(i));++e<i;)t[e]=n[e];return t}var cl=al;function ll(n,t){for(var e=-1,i=n==null?0:n.length,o=0,r=[];++e<i;){var s=n[e];t(s,e,n)&&(r[o++]=s)}return r}var ul=ll;function hl(){return[]}var wo=hl,dl=ul,gl=wo,Ml=Object.prototype,fl=Ml.propertyIsEnumerable,mi=Object.getOwnPropertySymbols,pl=mi?function(n){return n==null?[]:(n=Object(n),dl(mi(n),function(t){return fl.call(n,t)}))}:gl,ai=pl,yl=Lt,Il=ai;function wl(n,t){return yl(n,Il(n),t)}var vl=wl;function Nl(n,t){for(var e=-1,i=t.length,o=n.length;++e<i;)n[o+e]=t[e];return n}var vo=Nl,ml=yo,Tl=ml(Object.getPrototypeOf,Object),No=Tl,zl=vo,Cl=No,jl=ai,Sl=wo,xl=Object.getOwnPropertySymbols,Dl=xl?function(n){for(var t=[];n;)zl(t,jl(n)),n=Cl(n);return t}:Sl,mo=Dl,Ll=Lt,kl=mo;function bl(n,t){return Ll(n,kl(n),t)}var El=bl,Al=vo,Ol=kt;function Pl(n,t,e){var i=t(n);return Ol(n)?i:Al(i,e(n))}var To=Pl,Yl=To,Rl=ai,Wl=si;function Ul(n){return Yl(n,Wl,Rl)}var zo=Ul,$l=To,Bl=mo,Fl=ri;function Ql(n){return $l(n,Fl,Bl)}var Hl=Ql,Zl=Ve,Vl=De,Gl=Zl(Vl,"DataView"),Jl=Gl,Kl=Ve,ql=De,_l=Kl(ql,"Promise"),Xl=_l,eu=Ve,tu=De,iu=eu(tu,"Set"),ou=iu,nu=Ve,su=De,ru=nu(su,"WeakMap"),au=ru,$t=Jl,Bt=ei,Ft=Xl,Qt=ou,Ht=au,Co=Ze,ot=ao,Ti="[object Map]",cu="[object Object]",zi="[object Promise]",Ci="[object Set]",ji="[object WeakMap]",Si="[object DataView]",lu=ot($t),uu=ot(Bt),hu=ot(Ft),du=ot(Qt),gu=ot(Ht),Ue=Co;($t&&Ue(new $t(new ArrayBuffer(1)))!=Si||Bt&&Ue(new Bt)!=Ti||Ft&&Ue(Ft.resolve())!=zi||Qt&&Ue(new Qt)!=Ci||Ht&&Ue(new Ht)!=ji)&&(Ue=function(n){var t=Co(n),e=t==cu?n.constructor:void 0,i=e?ot(e):"";if(i)switch(i){case lu:return Si;case uu:return Ti;case hu:return zi;case du:return Ci;case gu:return ji}return t});var bt=Ue,Mu=Object.prototype,fu=Mu.hasOwnProperty;function pu(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&fu.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var yu=pu,Iu=De,wu=Iu.Uint8Array,jo=wu,xi=jo;function vu(n){var t=new n.constructor(n.byteLength);return new xi(t).set(new xi(n)),t}var ci=vu,Nu=ci;function mu(n,t){var e=t?Nu(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Tu=mu,zu=/\w*$/;function Cu(n){var t=new n.constructor(n.source,zu.exec(n));return t.lastIndex=n.lastIndex,t}var ju=Cu,Di=Ct,Li=Di?Di.prototype:void 0,ki=Li?Li.valueOf:void 0;function Su(n){return ki?Object(ki.call(n)):{}}var xu=Su,Du=ci;function Lu(n,t){var e=t?Du(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ku=Lu,bu=ci,Eu=Tu,Au=ju,Ou=xu,Pu=ku,Yu="[object Boolean]",Ru="[object Date]",Wu="[object Map]",Uu="[object Number]",$u="[object RegExp]",Bu="[object Set]",Fu="[object String]",Qu="[object Symbol]",Hu="[object ArrayBuffer]",Zu="[object DataView]",Vu="[object Float32Array]",Gu="[object Float64Array]",Ju="[object Int8Array]",Ku="[object Int16Array]",qu="[object Int32Array]",_u="[object Uint8Array]",Xu="[object Uint8ClampedArray]",eh="[object Uint16Array]",th="[object Uint32Array]";function ih(n,t,e){var i=n.constructor;switch(t){case Hu:return bu(n);case Yu:case Ru:return new i(+n);case Zu:return Eu(n,e);case Vu:case Gu:case Ju:case Ku:case qu:case _u:case Xu:case eh:case th:return Pu(n,e);case Wu:return new i;case Uu:case Fu:return new i(n);case $u:return Au(n);case Bu:return new i;case Qu:return Ou(n)}}var oh=ih,nh=We,bi=Object.create,sh=function(){function n(){}return function(t){if(!nh(t))return{};if(bi)return bi(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),rh=sh,ah=rh,ch=No,lh=ni;function uh(n){return typeof n.constructor=="function"&&!lh(n)?ah(ch(n)):{}}var hh=uh,dh=bt,gh=Pe,Mh="[object Map]";function fh(n){return gh(n)&&dh(n)==Mh}var ph=fh,yh=ph,Ih=ii,Ei=oi,Ai=Ei&&Ei.isMap,wh=Ai?Ih(Ai):yh,vh=wh,Nh=bt,mh=Pe,Th="[object Set]";function zh(n){return mh(n)&&Nh(n)==Th}var Ch=zh,jh=Ch,Sh=ii,Oi=oi,Pi=Oi&&Oi.isSet,xh=Pi?Sh(Pi):jh,Dh=xh,Lh=lo,kh=_r,bh=ho,Eh=Bc,Ah=sl,Oh=rl,Ph=cl,Yh=vl,Rh=El,Wh=zo,Uh=Hl,$h=bt,Bh=yu,Fh=oh,Qh=hh,Hh=kt,Zh=ti,Vh=vh,Gh=We,Jh=Dh,Kh=si,qh=ri,_h=1,Xh=2,ed=4,So="[object Arguments]",td="[object Array]",id="[object Boolean]",od="[object Date]",nd="[object Error]",xo="[object Function]",sd="[object GeneratorFunction]",rd="[object Map]",ad="[object Number]",Do="[object Object]",cd="[object RegExp]",ld="[object Set]",ud="[object String]",hd="[object Symbol]",dd="[object WeakMap]",gd="[object ArrayBuffer]",Md="[object DataView]",fd="[object Float32Array]",pd="[object Float64Array]",yd="[object Int8Array]",Id="[object Int16Array]",wd="[object Int32Array]",vd="[object Uint8Array]",Nd="[object Uint8ClampedArray]",md="[object Uint16Array]",Td="[object Uint32Array]",te={};te[So]=te[td]=te[gd]=te[Md]=te[id]=te[od]=te[fd]=te[pd]=te[yd]=te[Id]=te[wd]=te[rd]=te[ad]=te[Do]=te[cd]=te[ld]=te[ud]=te[hd]=te[vd]=te[Nd]=te[md]=te[Td]=!0;te[nd]=te[xo]=te[dd]=!1;function pt(n,t,e,i,o,r){var s,a=t&_h,c=t&Xh,l=t&ed;if(e&&(s=o?e(n,i,o,r):e(n)),s!==void 0)return s;if(!Gh(n))return n;var h=Hh(n);if(h){if(s=Bh(n),!a)return Ph(n,s)}else{var g=$h(n),d=g==xo||g==sd;if(Zh(n))return Oh(n,a);if(g==Do||g==So||d&&!o){if(s=c||d?{}:Qh(n),!a)return c?Rh(n,Ah(s,n)):Yh(n,Eh(s,n))}else{if(!te[g])return o?n:{};s=Fh(n,g,a)}}r||(r=new Lh);var M=r.get(n);if(M)return M;r.set(n,s),Jh(n)?n.forEach(function(f){s.add(pt(f,t,e,f,n,r))}):Vh(n)&&n.forEach(function(f,v){s.set(v,pt(f,t,e,v,n,r))});var w=l?c?Uh:Wh:c?qh:Kh,N=h?void 0:w(n);return kh(N||n,function(f,v){N&&(v=f,f=n[v]),bh(s,v,pt(f,t,e,v,n,r))}),s}var Lo=pt,zd=Lo,Cd=1,jd=4;function Sd(n){return zd(n,Cd|jd)}var xd=Sd;const ce=He(xd);function ko(n){return JSON.parse(eo.decompress(n))}function bo(n){return eo.compress(JSON.stringify(n))}const we=Object.keys,Se="++",b="selector",Eo="all";var Dd="__lodash_hash_undefined__";function Ld(n){return this.__data__.set(n,Dd),this}var kd=Ld;function bd(n){return this.__data__.has(n)}var Ed=bd,Ad=co,Od=kd,Pd=Ed;function Nt(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new Ad;++t<e;)this.add(n[t])}Nt.prototype.add=Nt.prototype.push=Od;Nt.prototype.has=Pd;var Yd=Nt;function Rd(n,t){for(var e=-1,i=n==null?0:n.length;++e<i;)if(t(n[e],e,n))return!0;return!1}var Wd=Rd;function Ud(n,t){return n.has(t)}var $d=Ud,Bd=Yd,Fd=Wd,Qd=$d,Hd=1,Zd=2;function Vd(n,t,e,i,o,r){var s=e&Hd,a=n.length,c=t.length;if(a!=c&&!(s&&c>a))return!1;var l=r.get(n),h=r.get(t);if(l&&h)return l==t&&h==n;var g=-1,d=!0,M=e&Zd?new Bd:void 0;for(r.set(n,t),r.set(t,n);++g<a;){var w=n[g],N=t[g];if(i)var f=s?i(N,w,g,t,n,r):i(w,N,g,n,t,r);if(f!==void 0){if(f)continue;d=!1;break}if(M){if(!Fd(t,function(v,y){if(!Qd(M,y)&&(w===v||o(w,v,e,i,r)))return M.push(y)})){d=!1;break}}else if(!(w===N||o(w,N,e,i,r))){d=!1;break}}return r.delete(n),r.delete(t),d}var Ao=Vd;function Gd(n){var t=-1,e=Array(n.size);return n.forEach(function(i,o){e[++t]=[o,i]}),e}var Jd=Gd;function Kd(n){var t=-1,e=Array(n.size);return n.forEach(function(i){e[++t]=i}),e}var qd=Kd,Yi=Ct,Ri=jo,_d=Xt,Xd=Ao,eg=Jd,tg=qd,ig=1,og=2,ng="[object Boolean]",sg="[object Date]",rg="[object Error]",ag="[object Map]",cg="[object Number]",lg="[object RegExp]",ug="[object Set]",hg="[object String]",dg="[object Symbol]",gg="[object ArrayBuffer]",Mg="[object DataView]",Wi=Yi?Yi.prototype:void 0,Yt=Wi?Wi.valueOf:void 0;function fg(n,t,e,i,o,r,s){switch(e){case Mg:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case gg:return!(n.byteLength!=t.byteLength||!r(new Ri(n),new Ri(t)));case ng:case sg:case cg:return _d(+n,+t);case rg:return n.name==t.name&&n.message==t.message;case lg:case hg:return n==t+"";case ag:var a=eg;case ug:var c=i&ig;if(a||(a=tg),n.size!=t.size&&!c)return!1;var l=s.get(n);if(l)return l==t;i|=og,s.set(n,t);var h=Xd(a(n),a(t),i,o,r,s);return s.delete(n),h;case dg:if(Yt)return Yt.call(n)==Yt.call(t)}return!1}var pg=fg,Ui=zo,yg=1,Ig=Object.prototype,wg=Ig.hasOwnProperty;function vg(n,t,e,i,o,r){var s=e&yg,a=Ui(n),c=a.length,l=Ui(t),h=l.length;if(c!=h&&!s)return!1;for(var g=c;g--;){var d=a[g];if(!(s?d in t:wg.call(t,d)))return!1}var M=r.get(n),w=r.get(t);if(M&&w)return M==t&&w==n;var N=!0;r.set(n,t),r.set(t,n);for(var f=s;++g<c;){d=a[g];var v=n[d],y=t[d];if(i)var I=s?i(y,v,d,t,n,r):i(v,y,d,n,t,r);if(!(I===void 0?v===y||o(v,y,e,i,r):I)){N=!1;break}f||(f=d=="constructor")}if(N&&!f){var m=n.constructor,z=t.constructor;m!=z&&"constructor"in n&&"constructor"in t&&!(typeof m=="function"&&m instanceof m&&typeof z=="function"&&z instanceof z)&&(N=!1)}return r.delete(n),r.delete(t),N}var Ng=vg,Rt=lo,mg=Ao,Tg=pg,zg=Ng,$i=bt,Bi=kt,Fi=ti,Cg=fo,jg=1,Qi="[object Arguments]",Hi="[object Array]",ut="[object Object]",Sg=Object.prototype,Zi=Sg.hasOwnProperty;function xg(n,t,e,i,o,r){var s=Bi(n),a=Bi(t),c=s?Hi:$i(n),l=a?Hi:$i(t);c=c==Qi?ut:c,l=l==Qi?ut:l;var h=c==ut,g=l==ut,d=c==l;if(d&&Fi(n)){if(!Fi(t))return!1;s=!0,h=!1}if(d&&!h)return r||(r=new Rt),s||Cg(n)?mg(n,t,e,i,o,r):Tg(n,t,c,e,i,o,r);if(!(e&jg)){var M=h&&Zi.call(n,"__wrapped__"),w=g&&Zi.call(t,"__wrapped__");if(M||w){var N=M?n.value():n,f=w?t.value():t;return r||(r=new Rt),o(N,f,e,i,r)}}return d?(r||(r=new Rt),zg(n,t,e,i,o,r)):!1}var Dg=xg,Lg=Dg,Vi=Pe;function Oo(n,t,e,i,o){return n===t?!0:n==null||t==null||!Vi(n)&&!Vi(t)?n!==n&&t!==t:Lg(n,t,e,i,Oo,o)}var kg=Oo,bg=kg;function Eg(n,t){return bg(n,t)}var Ag=Eg;const le=He(Ag);var Og=Ze,Pg=Pe,Yg="[object Boolean]";function Rg(n){return n===!0||n===!1||Pg(n)&&Og(n)==Yg}var Wg=Rg;const me=He(Wg);function Ug(n,t){if(n&&t){const e=Math.min(n.x,t.x),i=Math.min(n.y,t.y),o=Math.max(n.x+n.w,t.x+t.w),r=Math.max(n.y+n.h,t.y+t.h),s=o-e,a=r-i;return{x:e,y:i,w:s,h:a}}return t||n}function Po(n,t){if(n&&t){const e=Math.min(n.originX,t.originX),i=Math.min(n.originY,t.originY),o=Math.max(n.originX+n.width,t.originX+t.width),r=Math.max(n.originY+n.height,t.originY+t.height),s=o-e,a=r-i;return{originX:e,originY:i,width:s,height:a}}return t||n}function li(n,t=0){const e={x:0,y:0,w:0,h:0};let i=1/0,o=1/0,r=-1/0,s=-1/0;return n.forEach(a=>{const[c,l]=a.XY;i=Math.min(i,c-t),o=Math.min(o,l-t),r=Math.max(r,c+t),s=Math.max(s,l+t)}),e.x=i,e.y=o,e.w=r-i,e.h=s-o,e}function $g(n,t){return!(n.x+n.w<t.x||n.x>t.x+t.w||n.y+n.h<t.y||n.y>t.y+t.h)}function Bg(n,t){return{x:n.x+t[0],y:n.y+t[1],w:n.w,h:n.h}}function Yo(n,t){const e=new x(n.x,n.y),i=new x(n.x+n.w,n.y),o=new x(n.x+n.w,n.y+n.h),r=new x(n.x,n.y+n.h),s=new x(n.x+n.w/2,n.y+n.h/2),a=Math.PI*t/180,c=x.RotWith(e,s,a),l=x.RotWith(i,s,a),h=x.RotWith(o,s,a),g=x.RotWith(r,s,a);return[c,l,h,g]}function Fg(n,t){const e=Yo(n,t);return li(e)}function Qg(n,t){const e=new x(n.x,n.y),i=new x(n.x+n.w,n.y),o=new x(n.x+n.w,n.y+n.h),r=new x(n.x,n.y+n.h),s=new x(n.x+n.w/2,n.y+n.h/2),a=new x(t[0],t[1]),c=x.ScaleWOrigin(e,a,s),l=x.ScaleWOrigin(i,a,s),h=x.ScaleWOrigin(o,a,s),g=x.ScaleWOrigin(r,a,s);return li([c,l,h,g])}function Hg(n,t,e){const i=[];for(let o=0;o<n.length;o++){const r=n[o],s=new x(e[0],e[1]),a=x.ScaleWOrigin(r,s,t);i.push(a)}return i}function Zg(n,t,e){const i=[];for(let o=0;o<n.length;o++){const r=n[o],s=Math.PI*e/180,a=x.RotWith(r,t,s);i.push(a)}return i}function Vg(n,t,e){const i=new x(t[0],t[1]);for(let o=0;o<n.length;o+=3){const r=new x(n[o],n[o+1]),s=Math.PI*e/180,a=x.RotWith(r,i,s);n[o]=a.x,n[o+1]=a.y}}function Gg(n,t,e){const i=new x(t[0],t[1]);for(let o=0;o<n.length;o+=3){const r=new x(n[o],n[o+1]),s=new x(e[0],e[1]),a=x.ScaleWOrigin(r,s,i);n[o]=a.x,n[o+1]=a.y}}function Ro(n,t){return n[0]>=t.x&&n[0]<=t.x+t.w&&n[1]>=t.y&&n[1]<=t.y+t.h}function Jg(n,t){const e=n<=t?1:n/t,i=t<=n?1:t/n;return[e,i]}function Kg(n){return`${mt(n.x)},${mt(n.y)} `}function qg(n,t){return`${mt((n.x+t.x)/2)},${mt((n.y+t.y)/2)} `}function mt(n){return+n.toFixed(4)}const _e=(n,t)=>new Promise(function(e){window.requestIdleCallback?requestIdleCallback(()=>{e(1)},{timeout:t}):setTimeout(()=>{e(2)},t)}).then(function(){n()},()=>{n()}),Re=n=>{const t=(n==null?void 0:n.webkitBackingStorePixelRatio)||(n==null?void 0:n.mozBackingStorePixelRatio)||(n==null?void 0:n.msBackingStorePixelRatio)||(n==null?void 0:n.oBackingStorePixelRatio)||(n==null?void 0:n.backingStorePixelRatio)||1;return Math.max(1,(window.devicePixelRatio||1)/t)};class Wo{constructor(t){p(this,"plugin");p(this,"uid");this.plugin=t,this.uid=t.displayer.uid}getNamespaceData(){var t;return K.toJS((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getUidFromKey(t){return t.split(Se).length===2&&t.split(Se)[0]||this.uid}isLocalId(t){return t.split(Se).length===1}getLocalId(t){return t.split(Se)[1]}isSelector(t){return this.getLocalId(t)===b}}const Ae=class Ae extends Wo{constructor(e,i){super(e);p(this,"namespace");p(this,"serviceStorage",{});p(this,"storage",{});p(this,"stateDisposer");p(this,"asyncClockState",!1);Ae.syncInterval=(i||Ae.syncInterval)*.5,this.namespace=Ae.namespace,this.serviceStorage=this.getNamespaceData(),this.storage=ce(this.serviceStorage)}getViewIdBySecenPath(e){const i=this.getNamespaceData();for(const[o,r]of Object.entries(i))for(const s of Object.keys(r))if(s===e)return o}getScenePathData(e){const i=this.getNamespaceData();for(const o of Object.values(i))for(const r of Object.keys(o))if(r===e)return ce(o[r])}getStorageData(e,i){const o=this.getNamespaceData();return o[e]&&ce(o[e][i])||void 0}hasSelector(e,i){const o=this.storage&&this.storage[e]&&this.storage[e][i];return!!(o&&Object.keys(o).find(r=>this.isOwn(r)&&this.getLocalId(r)===b))}addStorageStateListener(e){this.stateDisposer=K.autorun(async()=>{const i=this.getNamespaceData(),o=this.diffFun(this.serviceStorage,i);this.serviceStorage=i;for(const[r,s]of Object.entries(o))if(s&&s.newValue===void 0){const{viewId:a,scenePath:c}=s;a&&c&&this.storage[a]&&delete this.storage[a][c][r]}else if(s&&s.newValue){const{viewId:a,scenePath:c}=s;this.storage[a]||(this.storage[a]={}),this.storage[a][c]||(this.storage[a][c]={}),this.storage[a][c][r]=ce(s.newValue)}Object.keys(o).length>0&&e(o)})}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFun(e,i){const o=we(e),r=we(i),s={};for(const a of o){if(le(e[a],i[a]))continue;const c=this.diffFunByscenePath(e[a]||{},i[a]||{},a);Object.assign(s,c)}for(const a of r)if(!o.includes(a)){const c=this.diffFunByscenePath(e[a]||{},i[a]||{},a);Object.assign(s,c)}return s}diffFunByscenePath(e,i,o){const r=we(e),s=we(i),a={};for(const c of r){if(le(e[c],i[c]))continue;const l=this.diffFunByKeys(e[c]||{},i[c]||{},c,o);Object.assign(a,l)}for(const c of s)if(!r.includes(c)){const l=this.diffFunByKeys(e[c]||{},i[c]||{},c,o);Object.assign(a,l)}return a}diffFunByKeys(e,i,o,r){const s=we(e),a=we(i),c={};for(const l of s){if(a.includes(l)){if(le(e[l],i[l]))continue;c[l]={oldValue:e[l],newValue:i[l],viewId:r,scenePath:o};continue}c[l]={oldValue:e[l],newValue:void 0,viewId:r,scenePath:o}}for(const l of a)s.includes(l)||(c[l]={oldValue:void 0,newValue:i[l],viewId:r,scenePath:o});return c}transformKey(e){return this.uid+Se+e}isOwn(e){return e.split(Se)[0]===this.uid}dispatch(e){const{type:i,workId:o,ops:r,index:s,opt:a,toolsType:c,removeIds:l,updateNodeOpt:h,op:g,selectIds:d,isSync:M,scenePath:w,viewId:N}=e;if(N)switch(i){case D.Clear:const f={};w&&this.storage[N]&&this.storage[N][w]?(delete this.storage[N][w],this.setState(f,{isSync:M,viewId:N,scenePath:w})):this.storage[N]&&(delete this.storage[N],this.setState(f,{isSync:M,viewId:N,scenePath:""}));break;case D.CreateWork:if(w&&o&&c&&a){const z=this.isLocalId(o.toString())?this.transformKey(o):o;this.updateValue(z.toString(),{type:D.CreateWork,workId:o,toolsType:c,opt:a},{isSync:M,viewId:N,scenePath:w})}break;case D.DrawWork:if(w&&o&&typeof s=="number"&&(g!=null&&g.length)){const z=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[N]&&this.storage[N][w]&&this.storage[N][w][z]||void 0,L=s?((j==null?void 0:j.op)||[]).slice(0,s).concat(g):g||(j==null?void 0:j.op);j&&L&&this.updateValue(z.toString(),{...j,type:D.DrawWork,op:L,index:s},{isSync:M,viewId:N,scenePath:w})}break;case D.FullWork:if(w&&o){const z=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[N]&&this.storage[N][w]&&this.storage[N][w][z]||void 0,L=h||(j==null?void 0:j.updateNodeOpt),R=c||(j==null?void 0:j.toolsType),P=a||(j==null?void 0:j.opt),$=r||(j==null?void 0:j.ops);R&&P&&this.updateValue(z.toString(),{type:D.FullWork,updateNodeOpt:L,workId:z,toolsType:R,opt:P,ops:$},{isSync:M,viewId:N,scenePath:w})}break;case D.RemoveNode:if(w&&(l!=null&&l.length)){const z=l.map(j=>this.isLocalId(j+"")?this.transformKey(j):j);this.storage[N]&&this.storage[N][w]&&Object.keys(this.storage[N][w]).map(j=>{z!=null&&z.includes(j)&&this.updateValue(j,void 0,{isSync:M,viewId:N,scenePath:w})})}break;case D.UpdateNode:if(w&&o&&(h||r||a)){const z=this.isLocalId(o.toString())?this.transformKey(o):o,j=this.storage[N]&&this.storage[N][w]&&this.storage[N][w][z]||void 0;j&&(j.updateNodeOpt=h,(r||g)&&(j.ops=r,j.op=g),a&&(j.opt=a),j.type=D.FullWork,this.updateValue(z.toString(),j,{isSync:M,viewId:N,scenePath:w}))}break;case D.Select:if(!w)return;let v;d!=null&&d.length&&(v=d.map(z=>this.isLocalId(z+"")?this.transformKey(z):z));const y=this.transformKey(b),I=this.storage[N]&&this.storage[N][w]&&this.storage[N][w][y]||void 0,m=a||(I==null?void 0:I.opt);v&&this.checkOtherSelector(y,v,{isSync:M,viewId:N,scenePath:w}),this.updateValue(y,v&&{type:D.Select,toolsType:T.Selector,opt:m,selectIds:v},{isSync:M,viewId:N,scenePath:w});break}}checkOtherSelector(e,i,o){const{viewId:r,scenePath:s}=o;for(const a of Object.keys(this.storage[r][s]))if(a!==e&&this.getLocalId(a)===b){const c=this.storage[r][s][a];if(c&&c.selectIds){const l=c.selectIds.filter(h=>!i.includes(h));l.length>0&&(c.selectIds=l),this.updateValue(a,l.length&&c||void 0,o)}}}setState(e,i){const{viewId:o,scenePath:r}=i,s=we(e);for(let a=0;a<s.length;a++){const c=s[a],l=e[c];typeof l<"u"?(this.storage[o]||(this.storage[o]={}),this.storage[o][r]||(this.storage[o][r]={}),this.storage[o][r][c]=l):delete this.storage[o][r][c]}this.runSyncService(i)}updateValue(e,i,o){const{viewId:r,scenePath:s}=o;i===void 0?delete this.storage[r][s][e]:(this.storage[r]||(this.storage[r]={}),this.storage[r][s]||(this.storage[r][s]={}),this.storage[r][s][e]=i),this.runSyncService(o)}runSyncService(e){this.asyncClockState||(this.asyncClockState=!0,setTimeout(()=>{e.isSync?(this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)):_e(()=>{this.asyncClockState=!1,this.syncSerivice(e.isAfterUpdate)},Ae.syncInterval)},e!=null&&e.isSync?0:Ae.syncInterval))}syncSerivice(e=!1){const i=we(this.serviceStorage),o=we(this.storage),r=new Map;for(const s of i){if(!o.includes(s)){r.set(s,void 0);continue}le(this.serviceStorage[s],this.storage[s])||this.syncViewData(s,e)}for(const s of o)i.includes(s)||r.set(s,this.storage[s]);if(r.size>5)this.syncStorageView(this.storage,e);else for(const[s,a]of r.entries())this.syncUpdataView(s,a,e)}syncViewData(e,i=!1){const o=we(this.serviceStorage[e]),r=we(this.storage[e]),s=new Map;for(const a of o){if(!r.includes(a)){s.set(a,void 0);continue}le(this.serviceStorage[e][a],this.storage[e][a])||this.syncScenePathData(e,a,i)}for(const a of r)o.includes(a)||s.set(a,this.storage[e][a]);if(s.size>5)this.syncStorageScenePath(e,this.storage[e],i);else for(const[a,c]of s.entries())this.syncUpdataScenePath(e,a,c,i)}syncScenePathData(e,i,o=!1){const r=we(this.serviceStorage[e][i]),s=we(this.storage[e][i]),a=new Map;for(const c of r){if(!s.includes(c)){a.set(c,void 0);continue}le(this.serviceStorage[e][i][c],this.storage[e][i][c])||a.set(c,this.storage[e][i][c])}for(const c of s)r.includes(c)||a.set(c,this.storage[e][i][c]);if(a.size>5)this.syncStorageKey(e,i,this.storage[e][i],o);else for(const[c,l]of a.entries())this.syncUpdataKey(e,i,c,l,o)}syncUpdataView(e,i,o=!1){var s;Object.keys(this.serviceStorage).length?(o||(i===void 0?delete this.serviceStorage[e]:this.serviceStorage[e]=ce(i)),(s=this.plugin)==null||s.updateAttributes([this.namespace,e],i)):this.syncStorageView(this.storage,o)}syncStorageView(e,i=!1){var o;i||e&&(this.serviceStorage=ce(e)),(o=this.plugin)==null||o.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,i,o,r=!1){var a;Object.keys(this.serviceStorage[e]).length?(r||(o===void 0?delete this.serviceStorage[e][i]:this.serviceStorage[e][i]=o),(a=this.plugin)==null||a.updateAttributes([this.namespace,e,i],o)):this.syncStorageScenePath(e,this.storage[e],r)}syncStorageScenePath(e,i,o=!1){var r;o||i&&(this.serviceStorage[e]=i),(r=this.plugin)==null||r.updateAttributes([this.namespace,e],i)}syncUpdataKey(e,i,o,r,s=!1){var c;Object.keys(this.serviceStorage[e][i]).length?(s||(r===void 0?delete this.serviceStorage[e][i][o]:this.serviceStorage[e][i][o]=r),(c=this.plugin)==null||c.updateAttributes([this.namespace,e,i,o],r)):this.syncStorageKey(e,i,this.storage[e][i],s)}syncStorageKey(e,i,o,r=!1){var s;r||(this.serviceStorage[e][i]=o),(s=this.plugin)==null||s.updateAttributes([this.namespace,e,i],o)}keyTransformWorkId(e){const i=e.split(Se);return i.length===2?i[1]:e}destroy(){this.removeStorageStateListener(),this.serviceStorage={},this.storage={}}};p(Ae,"namespace","PluginState"),p(Ae,"syncInterval",500);let Zt=Ae;class _g{constructor(){p(this,"roomMembers",[]);p(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const i={online:e.map(o=>{var r;return((r=o.payload)==null?void 0:r.uid)||o.session}),offline:t.map(o=>{var r;return((r=o.payload)==null?void 0:r.uid)||o.session})};this.onChangeHooks.forEach(o=>o(i))}getRoomMember(t){return this.roomMembers.find(e=>{var i;return((i=e.payload)==null?void 0:i.uid)===t})}isOnLine(t){return!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}var xe=(n=>(n[n.Text=1]="Text",n[n.Shape=2]="Shape",n))(xe||{});const ye=class ye{createProxy(t){const e=new Proxy(t,{get(i,o,r){const s=ye.interceptors.hasOwnProperty(o)?ye.interceptors:i;return Reflect.get(s,o,r)}});return ye.proxyToRaw.set(e,t),e}};p(ye,"proxyToRaw",new WeakMap),p(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 $e=ye;class Xg{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"editors");p(this,"activeId");p(this,"proxyMap");p(this,"taskqueue",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i;const o=new Map;this.proxyMap=new $e;const r=this,s=$e.interceptors.set;$e.interceptors.set=function(c,l){return r.interceptors.set(c,l),s.call(this,c,l)};const a=$e.interceptors.delete;$e.interceptors.delete=function(c,l){return r.interceptors.delete(c,l),a.call(this,c)},this.editors=this.proxyMap.createProxy(o)}get collector(){return this.control.collector}filterEditor(t){const e=new Map;return this.editors.forEach((i,o)=>{i.viewId===t&&e.set(o,i)}),e}get interceptors(){return{set:(t,e)=>{var M,w,N,f,v,y,I,m;if(!this.collector)return!0;const{viewId:i,scenePath:o,canSync:r,canWorker:s,type:a,opt:c,dataType:l}=e;if(!s&&!r)return!0;const g=((M=this.collector)==null?void 0:M.isLocalId(t))?(w=this.collector)==null?void 0:w.transformKey(t):t,d=((N=this.collector)==null?void 0:N.storage[i])&&this.collector.storage[i][o]&&this.collector.storage[i][o][g]||void 0;d?d.toolsType===T.Text&&(s&&(this.control.worker.queryTaskBatchData({workId:t,msgType:D.UpdateNode}).forEach(z=>{var j;(j=this.control.worker)==null||j.taskBatchData.delete(z)}),(I=this.control.worker)==null||I.taskBatchData.add({workId:t,msgType:D.UpdateNode,dataType:l||G.Local,toolsType:T.Text,opt:c,viewId:i,scenePath:o,willRefresh:!0}),(m=this.control.worker)==null||m.runAnimation()),r&&_e(()=>{var z;(z=this.collector)==null||z.dispatch({type:D.UpdateNode,workId:t,toolsType:T.Text,opt:c,viewId:i,scenePath:o})},this.control.worker.maxLastSyncTime)):a===xe.Text&&(r&&((f=this.collector)==null||f.dispatch({type:c.text&&D.FullWork||D.CreateWork,workId:t,toolsType:T.Text,opt:c,isSync:!0,viewId:i,scenePath:o})),s&&((v=this.control.worker)==null||v.taskBatchData.add({workId:t,msgType:c.text&&D.FullWork||D.CreateWork,dataType:l||G.Local,toolsType:T.Text,opt:c,viewId:i,scenePath:o,willRefresh:!0}),(y=this.control.worker)==null||y.runAnimation()))},delete:t=>{var a,c;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:i,scenePath:o,canSync:r,canWorker:s}=e;if(!s&&!r)return!0;s&&((a=this.control.worker)==null||a.taskBatchData.add({workId:t,toolsType:T.Text,msgType:D.RemoveNode,dataType:G.Local,viewId:i,scenePath:o,willRefresh:!0}),(c=this.control.worker)==null||c.runAnimation()),r&&_e(()=>{var l;(l=this.collector)==null||l.dispatch({type:D.RemoveNode,removeIds:[t],toolsType:T.Text,viewId:i,scenePath:o})},this.control.worker.maxLastSyncTime)},clear(){return!0}}}computeTextActive(t,e){var r,s,a,c;const i=(r=this.control.viewContainerManager)==null?void 0:r.transformToScenePoint(t,e),o=(s=this.control.viewContainerManager)==null?void 0:s.getCurScenePath(e);e&&o&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:D.GetTextActive,dataType:G.Local,op:i,viewId:e,scenePath:o}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let t=this.activeId;for(const[i,o]of this.editors.entries())if(o.opt.uid&&o.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,o;for(const[r,s]of this.editors.entries())if(s.viewId===e){const{boxPoint:a,boxSize:c}=s.opt,l=a&&((i=this.control.viewContainerManager)==null?void 0:i.transformToOriginPoint(a,s.viewId)),h=(o=this.control.viewContainerManager)==null?void 0:o.getCurScenePath(e);if(h&&e){const g={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:s.opt,scale:t.scale,type:xe.Text,viewId:e,scenePath:h,canWorker:!1,canSync:!1};this.editors.set(r,g),this.control.viewContainerManager.setActiveTextEditor(e,this.activeId)}}}onServiceDerive(t){var w,N;const{workId:e,opt:i,msgType:o,viewId:r,scenePath:s,dataType:a}=t;if(!e||!r||!s)return;const c=e.toString();if(o===D.RemoveNode){this.delete(c,!0,!0);return}const{boxPoint:l,boxSize:h}=i,g=l&&((w=this.control.viewContainerManager)==null?void 0:w.transformToOriginPoint(l,r)),d=this.control.viewContainerManager.getView(r),M={x:g&&g[0]||0,y:g&&g[1]||0,w:h&&h[0]||0,h:h&&h[1]||0,opt:i,type:xe.Text,canWorker:!0,canSync:!1,dataType:a,scale:((N=d==null?void 0:d.cameraOpt)==null?void 0:N.scale)||1,viewId:r,scenePath:s};this.editors.set(c,M),a===G.Service&&i.workState===C.Done&&this.activeId===c&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}updateForViewEdited(t,e){var o;this.editors.set(t,e);const i=(o=this.taskqueue.get(t))==null?void 0:o.resolve;i&&i(e)}active(t){var i;const e=this.editors.get(t);e&&e.viewId&&(e.opt.workState=C.Start,e.opt.uid=(i=this.collector)==null?void 0:i.uid,this.activeId=t,e.canWorker=!0,e.canSync=!0,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=C.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:o,...r}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,r.viewId),r.opt.uid=(s=this.collector)==null?void 0:s.uid,o&&(this.activeId=i),r.dataType=G.Local,r.canWorker=!0,r.canSync=!0,this.editors.set(i,r),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}updateTextForMasterController(t,e){var s;const{workId:i,...o}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,o.viewId);const r=this.editors.get(i)||{};o.opt&&(o.opt.uid=(s=this.collector)==null?void 0:s.uid),o.dataType=G.Local,this.editors.set(i,{...r,...o}),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var l;const{workId:i,...o}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,o.viewId);const r=this.editors.get(i)||{};if(o.opt&&(o.opt.uid=(l=this.collector)==null?void 0:l.uid),o.dataType=G.Local,this.editors.set(i,{...r,...o}),this.control.viewContainerManager.setActiveTextEditor(o.viewId,this.activeId),this.taskqueue.has(i))return;const s=setTimeout(()=>{var g;const h=(g=this.taskqueue.get(i))==null?void 0:g.resolve;h&&h(void 0)},20),a=await new Promise(h=>{this.taskqueue.set(i,{resolve:h,clocker:s})}),c=this.taskqueue.get(i);return c&&(c.clocker&&clearTimeout(c.clocker),this.taskqueue.delete(i)),this.taskqueue.delete(i),a}updateTextForWorker(t,e){const{workId:i,isActive:o,...r}=t;e&&this.internalMsgEmitter.emit("addUndoTicker",e,r.viewId);const a={...this.editors.get(i)||{},...r};if(a.waitWorker&&delete a.waitWorker,o){a.canWorker=!1,a.canSync=!1,this.editors.set(i,a),this.active(i);return}this.editors.set(i,a),this.control.viewContainerManager.setActiveTextEditor(r.viewId,this.activeId)}get(t){return this.editors.get(t)}delete(t,e,i){const o=this.editors.get(t);if(o){const r=o.viewId;o.canSync=e,o.canWorker=i,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}}deleteBatch(t,e,i){const o=new Set;for(const r of t){const s=this.editors.get(r);if(s){const a=s.viewId;s.canSync=e,s.canWorker=i,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),o.add(a)}}for(const r of o)this.control.viewContainerManager.setActiveTextEditor(r,this.activeId)}clear(t,e){this.editors.forEach((i,o)=>{i.viewId===t&&(e&&(i.canSync=!1),i.canWorker=!1,this.editors.delete(o))}),this.activeId=void 0,this.control.viewContainerManager.setActiveTextEditor(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}}const Oe=class Oe extends Wo{constructor(e,i){super(e);p(this,"serviceStorage",{});p(this,"storage",{});p(this,"stateDisposer");p(this,"asyncClockTimer");p(this,"namespace");this.namespace=Oe.namespace,Oe.syncInterval=(i||Oe.syncInterval)*.5,this.serviceStorage=this.getNamespaceData(),this.storage=ce(this.serviceStorage)}addStorageStateListener(e){this.stateDisposer=K.autorun(async()=>{const i=this.getNamespaceData(),o=this.getDiffMap(this.serviceStorage,i);this.serviceStorage=i,o.size&&e(o)})}getDiffMap(e,i){const o=new Map;for(const[r,s]of Object.entries(i))r!==this.uid&&(s&&le(e[r],s)||s&&o.set(r,s));return o}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}transformKey(e){return this.uid+Se+e}isOwn(e){return e===this.uid}dispatch(e){const{type:i,op:o,isSync:r,viewId:s}=e;switch(i){case Qe.Cursor:o&&this.pushValue(this.uid,{type:Qe.Cursor,op:o,viewId:s},{isSync:r});break}}pushValue(e,i,o){var r;this.storage[e]||(this.storage[e]=[]),(r=this.storage[e])==null||r.push(i),this.runSyncService(o)}clearValue(e){var o;this.storage[e]=void 0,Object.keys(this.serviceStorage).length&&((o=this.plugin)==null||o.updateAttributes([this.namespace,e],void 0))}runSyncService(e){this.asyncClockTimer||(this.asyncClockTimer=setTimeout(()=>{e!=null&&e.isSync?(this.asyncClockTimer=void 0,this.syncSerivice()):_e(()=>{this.asyncClockTimer=void 0,this.syncSerivice()},Oe.syncInterval)},e!=null&&e.isSync?0:Oe.syncInterval))}syncSerivice(){var i;Object.keys(this.serviceStorage).length?Object.keys(this.storage).forEach(o=>{var r;(r=this.plugin)==null||r.updateAttributes([this.namespace,o],this.storage[o])}):(i=this.plugin)==null||i.updateAttributes(this.namespace,this.storage),this.storage={}}destroy(){this.removeStorageStateListener(),this.storage={},this.serviceStorage={}}};p(Oe,"syncInterval",100),p(Oe,"namespace","PluginEvent");let Vt=Oe;class eM{constructor(t){p(this,"expirationTime",5e3);p(this,"internalMsgEmitter");p(this,"control");p(this,"eventCollector");p(this,"roomMember");p(this,"animationId");p(this,"removeTimerId");p(this,"asyncEndInfo");p(this,"animationPointWorkers",new Map);p(this,"animationDrawWorkers",new Map);p(this,"cursorInfoMap",new Map);const{control:e,internalMsgEmitter:i}=t;this.internalMsgEmitter=i,this.control=e,this.roomMember=e.roomMember}activeCollector(){var t,e;this.control.plugin&&(this.eventCollector=new Vt(this.control.plugin,Math.min(((e=(t=this.control.pluginOptions)==null?void 0:t.syncOpt)==null?void 0:e.interval)||100,100)),this.eventCollector.addStorageStateListener(i=>{i.forEach((o,r)=>{var s;if(((s=this.eventCollector)==null?void 0:s.uid)!==r){const a=new Map;o==null||o.forEach(c=>{if(c&&c.type===Qe.Cursor&&c.op&&c.viewId){const l=[];for(let h=0;h<c.op.length;h+=2){const g=c.op[h],d=c.op[h+1];if(ue(g)&&ue(d)){const M=this.control.viewContainerManager.transformToOriginPoint([g,d],c.viewId);l.push(M[0],M[1])}else l.push(g,d)}a.set(c.viewId,l)}}),a.size&&(this.activePointWorkShape(r,a),this.runAnimation())}})}))}onFocusViewChange(){const t=this.control.viewContainerManager.focuedViewId;for(const i of this.animationDrawWorkers.keys()){const o=this.getUidAndviewId(i).uid,r=this.getUidAndviewId(i).viewId;r!==t&&this.activeDrawWorkShape(o,[void 0,void 0],C.Done,r)}const e=new Map;for(const i of this.animationPointWorkers.keys()){const o=this.getUidAndviewId(i).uid,r=this.getUidAndviewId(i).viewId;if(r!==t){const s=e.get(o)||new Map;s.set(r,[void 0,void 0]),e.set(o,s)}}if(e.size)for(const[i,o]of e.entries())this.activePointWorkShape(i,o);this.runAnimation()}activePointWorkShape(t,e){var o;if(this.roomMember.getRoomMember(t))for(const[r,s]of e.entries()){const a=this.getKey(t,r);let c=!1;const l=this.control.viewContainerManager.getAllViews().map(g=>g==null?void 0:g.id);for(const g of l)if(g&&g!==r){const d=this.getKey(t,g),M=this.animationDrawWorkers.get(d);if((M==null?void 0:M.workState)===C.Start||(M==null?void 0:M.workState)===C.Doing||!1){c=!0;break}else if(this.removeTimerId&&(clearTimeout(this.removeTimerId),this.removeTimerId=void 0),M)this.activeDrawWorkShape(t,[void 0,void 0],C.Done,g),this.runAnimation();else{const N=this.animationPointWorkers.get(d);if(N)N.animationWorkData=[void 0,void 0],N.animationIndex=0,N.freeze=!1;else{const f={animationIndex:0,animationWorkData:[void 0,void 0],freeze:!1};this.animationPointWorkers.set(d,f)}}}const h=this.animationPointWorkers.get(a);if(s){if(!h){const g={animationIndex:0,animationWorkData:s,freeze:c};(o=this.animationPointWorkers)==null||o.set(a,g);return}h.animationWorkData=s,h.animationIndex=0,h.freeze=c}}}getKey(t,e){return`${t}${Se}${e}`}getUidAndviewId(t){const[e,i]=t.split(Se);return{uid:e,viewId:i}}animationCursor(){this.animationId=void 0;const t=Date.now();this.animationPointWorkers.forEach((e,i)=>{const{uid:o,viewId:r}=this.getUidAndviewId(i);if(e.freeze)return;const a=e.animationIndex,c=this.roomMember.getRoomMember(o);if(c){e.animationWorkData.length-1>a&&(e.animationIndex=a+2);const l=e.animationWorkData[a],h=e.animationWorkData[a+1],g=this.cursorInfoMap.get(r)||new Map;ue(l)&&ue(h)?g.set(c.memberId,{x:l,y:h,roomMember:c,timestamp:t}):g.has(c.memberId)&&g.delete(c.memberId),g.size?this.cursorInfoMap.set(r,g):this.cursorInfoMap.has(r)&&(this.cursorInfoMap.delete(r),this.internalMsgEmitter.emit([W.Cursor,r],[])),e.animationWorkData.length-1<=e.animationIndex&&this.animationPointWorkers.delete(i)}}),this.animationDrawWorkers.forEach((e,i)=>{const{uid:o,viewId:r}=this.getUidAndviewId(i),s=e.animationIndex,a=this.roomMember.getRoomMember(o);if(a){e.animationWorkData.length-1>s&&(e.animationIndex=s+2);const c=e.animationWorkData[s],l=e.animationWorkData[s+1],h=this.cursorInfoMap.get(r)||new Map;ue(c)&&ue(l)?h.set(a.memberId,{x:c,y:l,roomMember:a,timestamp:t}):h.has(a.memberId)&&h.delete(a.memberId),h.size?this.cursorInfoMap.set(r,h):this.cursorInfoMap.has(r)&&(this.cursorInfoMap.delete(r),this.internalMsgEmitter.emit([W.Cursor,r],[])),e.animationWorkData.length-1<=e.animationIndex&&this.animationDrawWorkers.delete(i)}});for(const[e,i]of this.cursorInfoMap)if(i){const o=[],r=[];for(const[s,a]of i.entries()){const{timestamp:c,...l}=a;c+this.expirationTime<t?r.push(s):o.push(l)}if(r.length)for(const s of r)i.delete(s);i.size?this.cursorInfoMap.set(e,i):this.cursorInfoMap.delete(e),this.internalMsgEmitter.emit([W.Cursor,e],o)}(this.animationPointWorkers.size||this.animationDrawWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}activeDrawWorkShape(t,e,i,o){var c,l;if(!this.roomMember.getRoomMember(t))return;const s=this.getKey(t,o);if(i===C.Start){const h=this.animationPointWorkers.get(s);if(h)h.animationWorkData=[],h.animationIndex=0,h.freeze=!0;else{const g={animationIndex:0,animationWorkData:[],freeze:!0};(c=this.animationDrawWorkers)==null||c.set(s,g)}}else if(i===C.Done){const h=this.animationPointWorkers.get(s);h&&(h.freeze=!1)}const a=this.animationDrawWorkers.get(s);if(e){if(!a){const h={animationIndex:0,animationWorkData:e,workState:i};(l=this.animationDrawWorkers)==null||l.set(s,h);return}a.animationWorkData=e,a.animationIndex=0,a.workState=i}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}sendEvent(t,e){var i;(i=this.eventCollector)==null||i.dispatch({type:Qe.Cursor,op:ue(t[0])&&ue(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0],viewId:e})}collectServiceCursor(t){const{op:e,uid:i,workState:o,viewId:r}=t;if(i&&e&&o&&r){const s=this.control.viewContainerManager.focuedViewId;if(o===C.Done){if(r!==s){this.activeDrawWorkShape(i,[void 0,void 0],o,r),this.runAnimation();return}this.removeTimerId&&(clearTimeout(this.removeTimerId),this.removeTimerId=void 0,this.asyncEndInfo&&this.asyncEndInfo.viewId!==r&&this.asyncEndInfo.uid===i&&this.activeDrawWorkShape(i,[void 0,void 0],C.Done,this.asyncEndInfo.viewId)),this.asyncEndInfo={uid:i,viewId:r},this.removeTimerId=setTimeout(()=>{this.removeTimerId=void 0,this.activeDrawWorkShape(i,[void 0,void 0],C.Done,r),this.runAnimation()},this.expirationTime)}if(ue(e[0])&&ue(e[1])){const a=this.control.viewContainerManager.transformToOriginPoint(e,r);this.activeDrawWorkShape(i,a,o,r)}this.runAnimation()}}unabled(){var t;(t=this.eventCollector)==null||t.dispatch({type:Qe.Cursor,op:[void 0,void 0],viewId:this.control.viewContainerManager.focuedViewId})}destroy(){var t;(t=this.eventCollector)==null||t.destroy()}}class Te{constructor(){p(this,"useEmtMsg");p(this,"emtType");p(this,"control");p(this,"mainEngine")}static dispatch(t,e,i){var o;(o=ge.InternalMsgEmitter)==null||o.emit([t,e],i)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collect.bind(this)),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collect.bind(this))}collectForLocalWorker(t,e){var i,o,r;for(const[s,a]of t)(i=this.mainEngine)==null||i.queryTaskBatchData(a).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(o=this.mainEngine)==null||o.taskBatchData.add(s);if(e){this.mainEngine.consume();return}(r=this.mainEngine)==null||r.runAnimation()}collectForServiceWorker(t){_e(()=>{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:C.Done};this.collect(e,!0),(t=ge.InternalMsgEmitter)==null||t.emit(S.ActiveMethod,!1)}}recover(){var t;this.useEmtMsg&&ge.InternalMsgEmitter.hasListeners(S.ActiveMethod)&&((t=ge.InternalMsgEmitter)==null||t.emit(S.ActiveMethod,!0))}}class tM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.CopyNode)}collect(e){var c;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o}=e,r=this.control.viewContainerManager.getView(o);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=Date.now();this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,o);for(const l of i){const h=l.toString(),d=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(l):h,M=(c=this.serviceColloctor.getStorageData(o,s))==null?void 0:c[d];if(M){if(l===b){const w=M&&this.copySelector({viewId:o,store:M});w&&this.pasteSelector({...w,viewId:o,scenePath:s,undoTickerId:a});break}if(M.toolsType===T.Text&&M.opt&&M.opt.workState&&M.opt.workState!==C.Done){const w=M&&this.copyText({viewId:o,store:M});w&&this.pasteText({...w,viewId:o,scenePath:s,key:d,store:M,undoTickerId:a});break}}}}copyText(e){const{viewId:i,store:o}=e,r=this.control.viewContainerManager.getView(i);if(!this.serviceColloctor||!r)return;const s=r==null?void 0:r.cameraOpt,a=s&&[s.centerX,s.centerY],c=o.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:a,textCenter:l}}pasteText(e){var f,v;const{bgCenter:i,textCenter:o,store:r,key:s,viewId:a,scenePath:c,undoTickerId:l}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const g=Math.floor(Math.random()*30+1),d=((f=h.cameraOpt)==null?void 0:f.scale)||1,M=i&&o&&[i[0]-o[0]+g,i[1]-o[1]+g]||[g/d,g/d],N=(this.serviceColloctor.isLocalId(s)?s:this.serviceColloctor.getLocalId(s.toString()))+"-"+l;if(r.toolsType===T.Text&&r.opt){const y=r.opt;if(y&&y.boxPoint&&y.text){y.workState=C.Done;const I=y.boxPoint;y.boxPoint=[I[0]+M[0],I[1]+M[1]],y.workState=C.Done;const m=this.control.viewContainerManager.transformToOriginPoint(y.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:N,x:m[0],y:m[1],opt:y,scale:((v=h.cameraOpt)==null?void 0:v.scale)||1,type:xe.Text,isActive:!1,viewId:a,scenePath:c}),this.collectForServiceWorker([{...r,opt:y,type:D.FullWork,workId:N,viewId:a,scenePath:c}])}}}copySelector(e){var N,f,v,y,I,m,z,j,L;const{viewId:i,store:o}=e,r=this.control.viewContainerManager.getView(i),s=o.selectIds;if(!this.serviceColloctor||!(s!=null&&s.length)||!r)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((N=r.cameraOpt)==null?void 0:N.centerX)||0,centerY:((f=r.cameraOpt)==null?void 0:f.centerY)||0,scale:((v=r.cameraOpt)==null?void 0:v.scale)||1}},l=this.control.hasOffscreenCanvas()&&((y=r.displayer.canvasBgRef.current)==null?void 0:y.getBoundingClientRect())||((I=r.displayer.canvasContainerRef.current)==null?void 0:I.getBoundingClientRect()),h=(z=(m=r.displayer)==null?void 0:m.floatBarRef.current)==null?void 0:z.getBoundingClientRect(),g=l&&[l.x+l.width/2,l.y+l.height/2],d=h&&[h.x+h.width/2,h.y+h.height/2],M=g&&r.viewData&&r.viewData.convertToPointInWorld({x:g[0],y:g[1]}),w=d&&r.viewData&&r.viewData.convertToPointInWorld({x:d[0],y:d[1]});M&&w&&(c.offset={x:M.x-w.x,y:M.y-w.y});for(const R of s){const P=(L=(j=this.serviceColloctor)==null?void 0:j.getStorageData(r.id,r.focusScenePath))==null?void 0:L[R];P&&a.set(R,P)}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var N;const{copyStores:i,copyCoordInfo:o,viewId:r,scenePath:s,undoTickerId:a}=e,c=this.control.viewContainerManager.getView(r);if(!i.size||!this.serviceColloctor||!c)return;const{offset:l,cameraOpt:h}=o,g=Math.floor(Math.random()*30+1),d=[l.x+g,l.y+g],M=[],w=[];for(const[f,v]of i.entries()){const I=(this.serviceColloctor.isLocalId(f)?f:this.serviceColloctor.getLocalId(f.toString()))+"-"+a,m={useAnimation:!1};if(v.toolsType===T.Text&&v.opt){const z=v.opt;if(z&&z.boxPoint&&z.text){z.workState=C.Done;const j=z.boxPoint;z.boxPoint=[j[0]+d[0],j[1]+d[1]],z.workState=C.Done;const L=this.control.viewContainerManager.transformToOriginPoint(z.boxPoint,r);this.control.textEditorManager.createTextForMasterController({workId:I,x:L[0],y:L[1],opt:z,scale:((N=c.cameraOpt)==null?void 0:N.scale)||1,type:xe.Text,isActive:!1,viewId:r,scenePath:s})}w.push({...v,opt:z,type:D.FullWork,workId:I,viewId:r,scenePath:s});continue}if(v.toolsType===T.Image&&(v.opt.uuid=I,v.opt.centerX=v.opt.centerX+d[0],v.opt.centerY=v.opt.centerY+d[1]),v.ops){const z=ko(v.ops).map((L,R)=>{const P=R%3;return P===0?L+d[0]:P===1?L+d[1]:L}),j=bo(z);v.ops=j}w.push({...v,updateNodeOpt:m,type:D.FullWork,workId:I,viewId:r,scenePath:s}),M.push([{...v,updateNodeOpt:m,workId:I,msgType:D.FullWork,dataType:G.Local,emitEventType:S.CopyNode,willSyncService:!1,willRefresh:!0,viewId:r},{workId:I,msgType:D.FullWork,emitEventType:S.CopyNode}])}M.length&&this.collectForLocalWorker(M),w.length&&this.collectForServiceWorker(w)}}function at(n,t,e){return"#"+((n<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function ne(n,t=1){return"rgba("+parseInt("0x"+n.slice(1,3))+","+parseInt("0x"+n.slice(3,5))+","+parseInt("0x"+n.slice(5,7))+","+t+")"}function ht(n,t,e,i=1){return`rgba(${n},${t},${e},${i})`}function Et(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),o=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[at(e,i,o),r]}function dt(n){const t=n.split(","),e=parseInt(t[0].split("(")[1]),i=parseInt(t[1]),o=parseInt(t[2]),r=Number(t[3].split(")")[0]);return[e,i,o,r]}function gt(n){return n==="transparent"}class iM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.SetColorNode);p(this,"undoTickerId")}setTextColor(e,i,o,r){const{fontColor:s,fontBgColor:a}=o;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:o,fillColor:r,fontColor:s,fontBgColor:a,viewId:c,workState:l}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const g=h.focusScenePath,d=[...i],M=this.serviceColloctor.storage,w=[],N={};for((l===C.Start||!this.undoTickerId&&l===C.Done)&&(this.undoTickerId=Date.now(),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",this.undoTickerId,c));d.length;){const f=d.pop();if(!f)continue;const v=f.toString(),y=this.serviceColloctor.isLocalId(v),I=y?this.serviceColloctor.transformKey(f):v;let m=v;!y&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const z=M[c][g][I]||void 0;if(z){const j=z.updateNodeOpt||{};if(s||a){if(s){j.fontColor=s;const[R,P,$,A]=dt(s);N.textColor=[R,P,$],N.textOpacity=A}if(a)if(j.fontBgColor=gt(a)?"transparent":a,gt(a))N.textBgColor=void 0,N.textBgOpacity=void 0;else{const[R,P,$,A]=dt(a);N.textBgColor=[R,P,$],N.textBgOpacity=A}if(z.toolsType===T.Text&&z.opt&&l!==C.Start){this.setTextColor(m,ce(z),j,c),l===C.Done&&(this.undoTickerId=void 0);continue}}if(o){j.strokeColor=o;const[R,P,$,A]=dt(o);N.strokeColor=[R,P,$],N.strokeOpacity=A}if(r)if(j.fillColor=gt(r)?"transparent":r,gt(r))N.fillColor=void 0,N.fillOpacity=void 0;else{const[R,P,$,A]=dt(r);N.fillColor=[R,P,$],N.fillOpacity=A}const L={workId:m,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:j,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:c};w.push([L,{workId:m,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}w.length&&(l===C.Done&&(this.undoTickerId=void 0),this.collectForLocalWorker(w)),Object.keys(N).length&&setTimeout(()=>{var f;(f=this.control.room)==null||f.setMemberState(N)},0)}}class oM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.ZIndexNode);p(this,"zIndexMap",new Map)}clearZIndex(e){this.zIndexMap.delete(e)}getMinZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.min)||0}getMaxZIndex(e){var i;return((i=this.zIndexMap.get(e))==null?void 0:i.max)||0}setMaxZIndex(e,i){const o=this.getMinZIndex(i);this.zIndexMap.set(i,{min:o,max:e})}setMinZIndex(e,i){const o=this.getMaxZIndex(i);this.zIndexMap.set(i,{min:e,max:o})}addMaxLayer(e){const i=this.getMaxZIndex(e)+1;this.setMaxZIndex(i,e)}addMinLayer(e){const i=this.getMinZIndex(e)-1;this.setMinZIndex(i,e)}correct(e){const i=e.sort((o,r)=>o[1]-r[1]);for(let o=1;o<i.length;o++){const r=i[o][1],s=i[o-1][1];r<=s&&(i[o][1]=s+1)}return i}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,layer:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,h=[],g=[];for(;c.length;){const M=c.pop();if(!M)continue;const w=M.toString(),N=this.serviceColloctor.isLocalId(w),f=N?this.serviceColloctor.transformKey(M):w;let v=w;!N&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v));const y=ce(l[r][a][f]);let I;if(y&&v===b){if(y.selectIds){g.push(...y.selectIds),g.sort((L,R)=>{var A,Q,F,_;const P=((Q=(A=l[d(L,this.serviceColloctor)])==null?void 0:A.opt)==null?void 0:Q.zIndex)||0,$=((_=(F=l[d(L,this.serviceColloctor)])==null?void 0:F.opt)==null?void 0:_.zIndex)||0;return P>$?1:L<R?-1:0});const m=y.updateNodeOpt||{};m.zIndexLayer=o;const z={workId:M,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:m,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:r},j=new Map;o===Fe.Top?(this.addMaxLayer(r),I=this.getMaxZIndex(r)):(this.addMinLayer(r),I=this.getMinZIndex(r)),g.forEach(L=>{var A,Q,F;const R=(A=this.serviceColloctor)==null?void 0:A.isLocalId(L);let P=R&&((Q=this.serviceColloctor)==null?void 0:Q.transformKey(L))||L;const $=l[r][a][P];!R&&((F=this.serviceColloctor)!=null&&F.isOwn(P))&&(P=this.serviceColloctor.getLocalId(P)),m.zIndex=I,$!=null&&$.opt&&($.opt.zIndex=I),$!=null&&$.opt&&j.set(P,{updateNodeOpt:$.updateNodeOpt,opt:$.opt})}),z.selectStore=j,z.willSerializeData=!0,h.push([z,{workId:M,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&this.collectForLocalWorker(h);function d(M,w){return w.isLocalId(M)&&w.transformKey(M)||M}}}class nM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.TranslateNode);p(this,"undoTickerId");p(this,"cachePosition")}collect(e,i){var w;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,position:r,workState:s,viewId:a}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,h=[...o],g=(w=this.serviceColloctor)==null?void 0:w.storage,d=[],M=s===C.Start&&Date.now()||void 0;for(M&&(this.undoTickerId=M,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",M,a));h.length;){const N=h.pop();if(!N)continue;const f=N.toString(),v=this.serviceColloctor.isLocalId(f),y=v&&this.serviceColloctor.transformKey(N)||f;let I=f;!v&&this.serviceColloctor.isOwn(I)&&(I=this.serviceColloctor.getLocalId(I));const m=g[a][l][y];if(m&&I===b){if(m.selectIds){const z=this.control.viewContainerManager.transformToScenePoint([r.x,r.y],a);if(s===C.Start&&(this.cachePosition=z),this.cachePosition){const j=m.updateNodeOpt||{};j.translate=[z[0]-this.cachePosition[0],z[1]-this.cachePosition[1]],j.workState=s;const L={workId:N,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:j,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a};s===C.Done&&(L.textUpdateForWoker=!0,L.willSerializeData=!0,L.undoTickerId=this.undoTickerId,this.cachePosition=void 0),d.push([L,{workId:N,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}continue}}s===C.Start?this.mainEngine.unWritable():s===C.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length&&this.collectForLocalWorker(d,i)}}class sM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.DeleteNode)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o}=e,r=this.control.viewContainerManager.getView(o);if(!(r!=null&&r.displayer))return;const s=r.focusScenePath,a=this.serviceColloctor.storage,c=[...i],l=[],h=[],g=Date.now();for(;c.length;){const d=c.pop();if(!d)continue;const M=d.toString(),w=this.serviceColloctor.isLocalId(M),N=w?this.serviceColloctor.transformKey(d):M,f=a[o][s][N];if(f){let v=M;if(!w&&this.serviceColloctor.isOwn(v)&&(v=this.serviceColloctor.getLocalId(v)),f.toolsType===T.Text){this.control.textEditorManager.delete(v,!0,!0);continue}h.push(v)}}h.length&&(l.push([{msgType:D.RemoveNode,emitEventType:S.DeleteNode,removeIds:h,dataType:G.Local,willSyncService:!0,willRefresh:!0,viewId:o},void 0]),this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,o),this.collectForLocalWorker(l))}}class rM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.ScaleNode);p(this,"targetBox",new Map);p(this,"targetText",new Map);p(this,"cacheTextInfo",new Map)}async collect(e,i){var v,y,I,m,z,j;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,box:r,workState:s,viewId:a,dir:c,reverseY:l,reverseX:h}=e;this.lastEmtData=e;const g=this.control.viewContainerManager.getView(a);if(!(g!=null&&g.displayer))return;const d=g.focusScenePath,M=[...o],w=(v=this.serviceColloctor)==null?void 0:v.storage,N=[],f=s===C.Start&&Date.now()||void 0;for(f&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",f,a);M.length;){const L=M.pop();if(!L)continue;const R=L.toString(),P=this.serviceColloctor.isLocalId(R),$=P&&this.serviceColloctor.transformKey(L)||R;let A=R;!P&&this.serviceColloctor.isOwn(A)&&(A=this.serviceColloctor.getLocalId(A));const Q=w[a][d][$];if(Q&&A===b&&Q.selectIds){const F=Q.updateNodeOpt||{};if(F.dir=c,F.box=r,F.workState=s,F.reverseY=l,F.reverseX=h,s===C.Start&&r){this.cacheTextInfo.clear();for(const se of Q.selectIds){const X=(y=this.serviceColloctor)==null?void 0:y.isLocalId(se),B=X&&((I=this.serviceColloctor)==null?void 0:I.transformKey(se))||se;let J=B;!X&&((m=this.serviceColloctor)!=null&&m.isOwn(B))&&(J=this.serviceColloctor.getLocalId(B));const Y=this.control.textEditorManager.get(J);Y&&s===C.Start&&this.targetText.set(J,ce(Y))}this.targetText.size&&this.targetBox.set(A,r)}if(this.targetText.size&&s!==C.Start){const se=this.targetBox.get(A);if(se){const X=[r.w/se.w,r.h/se.h];for(const[B,J]of this.targetText.entries()){const{opt:Y}=J,H=Math.floor(Y.fontSize*X[0]),E=this.cacheTextInfo.get(B),V=!E&&Y.fontSize!==H||E&&E.fontSize!==H||!1;if((z=this.control.textEditorManager.get(B))==null?void 0:z.waitWorker)return;const de=(j=this.control.textEditorManager.get(B))==null?void 0:j.opt;if(V&&de&&Y.boxSize&&Y.boxPoint){const re=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:B,opt:{...de,fontSize:H},viewId:a,canSync:!1,canWorker:!1,waitWorker:!0});re&&this.cacheTextInfo.set(B,{fontSize:re.opt.fontSize,boxSize:re.opt.boxSize,boxPoint:re.opt.boxPoint})}}F.textInfos=this.cacheTextInfo}}const _={workId:L,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:F,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:a};s===C.Done&&(_.willSerializeData=!0,this.targetBox.delete(A),this.targetText.clear()),N.push([_,{workId:L,msgType:D.UpdateNode,emitEventType:this.emitEventType}]);continue}}s===C.Start?this.mainEngine.unWritable():s===C.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),N.length&&this.collectForLocalWorker(N,i)}}class aM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.RotateNode);p(this,"cacheOriginRotate",0)}collect(e,i){var w,N,f,v,y;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:o,angle:r,workState:s,viewId:a}=e;this.lastEmtData=e;const c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;const l=c.focusScenePath,h=[...o],g=(w=this.serviceColloctor)==null?void 0:w.storage,d=[],M=s===C.Start&&Date.now()||void 0;for(M&&this.mainEngine.internalMsgEmitter.emit("addUndoTicker",M,a);h.length;){const I=h.pop();if(!I)continue;const m=I.toString(),z=this.serviceColloctor.isLocalId(m),j=z&&this.serviceColloctor.transformKey(I)||m;let L=m;!z&&this.serviceColloctor.isOwn(L)&&(L=this.serviceColloctor.getLocalId(L));const R=g[a][l][j];if(R&&L===b){if(((N=R.selectIds)==null?void 0:N.length)===1){const P=R.selectIds[0];if(s===C.Start){const F=((f=this.serviceColloctor)==null?void 0:f.isLocalId(P))&&((v=this.serviceColloctor)==null?void 0:v.transformKey(P))||P,_=g[a][l][F];this.cacheOriginRotate=((y=_==null?void 0:_.opt)==null?void 0:y.rotate)||0}const $=R.updateNodeOpt||{};$.angle=(r+this.cacheOriginRotate)%360,$.workState=s;const A={workId:I,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:$,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a};s===C.Done&&(A.willRefreshSelector=!0,A.willSerializeData=!0,this.cacheOriginRotate=0),d.push([A,{workId:I,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}continue}}s===C.Start?this.mainEngine.unWritable():s===C.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length&&this.collectForLocalWorker(d,i)}}function cM(n){switch(n){case T.Text:return xe.Text;case T.SpeechBalloon:case T.Star:case T.Ellipse:case T.Rectangle:case T.Triangle:case T.Rhombus:case T.Polygon:return xe.Shape}}class lM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.SetFontStyle)}setTextStyle(e,i,o,r){const{bold:s,underline:a,lineThrough:c,italic:l,fontSize:h}=o;if(i.toolsType){const g=cM(i.toolsType);g===xe.Text&&(i.opt&&(s&&(i.opt.bold=s),me(a)&&(i.opt.underline=a),me(c)&&(i.opt.lineThrough=c),l&&(i.opt.italic=l),h&&(i.opt.fontSize=h)),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:i.opt,viewId:r,canSync:!0,canWorker:!0})),xe.Shape}}collect(e){var f,v,y,I;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,bold:o,italic:r,lineThrough:s,underline:a,viewId:c,fontSize:l}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const g=h.focusScenePath,d=[...i],M=this.serviceColloctor.storage,w={},N=Date.now();for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",N,c);d.length;){const m=d.pop();if(!m)continue;const z=m.toString(),j=this.serviceColloctor.isLocalId(z),L=j?this.serviceColloctor.transformKey(m):z;let R=z;!j&&this.serviceColloctor.isOwn(R)&&(R=this.serviceColloctor.getLocalId(R));const P=M[c][g][L]||void 0;if(P){const $=P.updateNodeOpt||{};if(o&&($.bold=o,w.bold=o==="bold"),r&&($.italic=r,w.italic=r==="italic"),me(s)&&($.lineThrough=s,w.lineThrough=s),me(a)&&($.underline=a,w.underline=a),l&&($.fontSize=l,w.textSize=l),P.toolsType===T.Text&&P.opt){this.setTextStyle(R,ce(P),$,c);continue}if(P&&R===b&&((f=P.selectIds)!=null&&f.length))for(const A of P.selectIds){const Q=(v=this.serviceColloctor)==null?void 0:v.isLocalId(A);let F=Q&&((y=this.serviceColloctor)==null?void 0:y.transformKey(A))||A;const _=M[c][g][F]||void 0;if(!Q&&((I=this.serviceColloctor)!=null&&I.isOwn(F))&&(F=this.serviceColloctor.getLocalId(F)),_&&_.toolsType===T.Text&&P.opt){this.setTextStyle(F,ce(_),$,c);continue}}}}Object.keys(w).length&&setTimeout(()=>{var m;(m=this.control.room)==null||m.setMemberState(w)},0)}}class uM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.SetPoint);p(this,"undoTickerId")}collect(e){var y;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:i,pointMap:o,workState:r,viewId:s}=e,a=this.control.viewContainerManager.getView(s);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=(y=this.serviceColloctor)==null?void 0:y.storage,h=[],g=r===C.Start&&Date.now()||void 0;g&&(this.undoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,s));const d=i;if(!d)return;const M=d.toString(),w=this.serviceColloctor.isLocalId(M),N=w&&this.serviceColloctor.transformKey(d)||M;let f=M;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const v=l[s][c][N];if(v&&f===b&&v.selectIds){const I=v.updateNodeOpt||{};I.pointMap=o,I.workState=r;const m={workId:d,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:I,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:s};r===C.Done&&(m.undoTickerId=this.undoTickerId),h.push([m,{workId:d,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}r===C.Start?this.mainEngine.unWritable():r===C.Done&&this.mainEngine.abled(),h.length&&this.collectForLocalWorker(h)}}class hM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.SetLock)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,isLocked:o,viewId:r}=e,s=this.control.viewContainerManager.getView(r);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,h=[],g=Date.now();for(;c.length;){const d=c.pop();if(!d)continue;const M=d.toString(),w=this.serviceColloctor.isLocalId(M),N=w?this.serviceColloctor.transformKey(d):M;let f=M;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const v=l[r][a][N]||void 0;if(v){const y=v.updateNodeOpt||{};y.isLocked=o;const I={workId:f,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:y,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:r};h.push([I,{workId:f,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,r),h.length&&this.collectForLocalWorker(h)}}class dM extends Te{constructor(){super(...arguments);p(this,"lastEmtData");p(this,"emitEventType",S.SetShapeOpt)}collect(e){if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:i,viewId:o,...r}=e,s=this.control.viewContainerManager.getView(o);if(!(s!=null&&s.displayer))return;const a=s.focusScenePath,c=[...i],l=this.serviceColloctor.storage,h=[],g=Date.now();for(;c.length;){const d=c.pop();if(!d)continue;const M=d.toString(),w=this.serviceColloctor.isLocalId(M),N=w?this.serviceColloctor.transformKey(d):M;let f=M;!w&&this.serviceColloctor.isOwn(f)&&(f=this.serviceColloctor.getLocalId(f));const v=l[o][a][N]||void 0;if(v){const y={...v.updateNodeOpt,...r,willRefresh:!0};if(v&&f===b){const I={workId:f,msgType:D.UpdateNode,dataType:G.Local,updateNodeOpt:y,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:o};h.push([I,{workId:f,msgType:D.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,o),this.collectForLocalWorker(h))}}class U{constructor(t){p(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case S.TranslateNode:return new nM;case S.ZIndexNode:return new oM;case S.CopyNode:return new tM;case S.SetColorNode:return new iM;case S.DeleteNode:return new sM;case S.ScaleNode:return new rM;case S.RotateNode:return new aM;case S.SetFontStyle:return new lM;case S.SetPoint:return new uM;case S.SetLock:return new hM;case S.SetShapeOpt:return new dM}}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()})}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){Te.dispatch(t,e,i)}static activeListener(t){ge.InternalMsgEmitter.on(S.ActiveMethod,t)}static unmountActiveListener(t){ge.InternalMsgEmitter.off(S.ActiveMethod,t)}}class gM{constructor(){p(this,"maxLastSyncTime",500)}setCurrentToolsData(t){this.currentToolsData=t}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(t){this.currentLocalWorkData=t}getWorkId(){return this.currentLocalWorkData.workId}getWorkState(){return this.currentLocalWorkData.workState}}class MM extends gM{constructor(e){var r,s;super();p(this,"isActive",!1);p(this,"currentToolsData");p(this,"currentLocalWorkData");p(this,"control");p(this,"internalMsgEmitter");p(this,"taskBatchData",new Set);p(this,"fullWorker");p(this,"subWorker");p(this,"fullWorkerUrl");p(this,"subWorkerUrl");p(this,"methodBuilder");p(this,"zIndexNodeMethod");p(this,"subWorkerDrawCount",0);p(this,"wokerDrawCount",0);p(this,"maxDrawCount",0);p(this,"reRenders",[]);p(this,"localWorkViewId");p(this,"localPointsBatchData",new Map);p(this,"tasksqueue",new Map);p(this,"useTasksqueue",!1);p(this,"useTasksClockId");p(this,"mainTasksqueueCount");p(this,"workerTasksqueueCount");p(this,"snapshotMap",new Map);p(this,"boundingRectMap",new Map);p(this,"clearAllResolve");p(this,"delayWorkStateToDoneResolve");p(this,"animationId");p(this,"tmpImageConfigMap",new Map);p(this,"mainThread");const{control:i,internalMsgEmitter:o}=e;this.control=i,this.maxLastSyncTime=(((s=(r=this.control.pluginOptions)==null?void 0:r.syncOpt)==null?void 0:s.interval)||this.maxLastSyncTime)*.5,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl,this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl,this.internalMsgEmitter=o,this.currentLocalWorkData={workState:C.Pending}}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===T.Pencil||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon}get isCanDrawWork(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===T.Pencil||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus}get isUseZIndex(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===T.Pencil||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanRecordUndoRedo(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===T.Pencil||e===T.Eraser||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Text||e===T.Image}get isCanSentCursor(){var i;const e=(i=this.currentToolsData)==null?void 0:i.toolsType;return e===T.Pencil||e===T.Text||e===T.LaserPen||e===T.Arrow||e===T.Straight||e===T.Ellipse||e===T.Rectangle||e===T.Star||e===T.Polygon||e===T.SpeechBalloon||e===T.Triangle||e===T.Rhombus}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-BcIJbozZ.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:o,drawCount:r,workerTasksqueueCount:s}=e.data;if(this.isBusy&&s&&this.setWorkerTasksqueueCount(s),o!=null&&o.length&&this.collectorSyncData(o),!r&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}r&&(this.wokerDrawCount=r,this.wokerDrawCount<1/0?this.maxDrawCount=Math.max(this.maxDrawCount,this.wokerDrawCount):(this.maxDrawCount=0,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:o,sp:r}=e.data;if(r!=null&&r.length&&this.collectorSyncData(r),!o&&(i!=null&&i.length)){this.viewContainerManager.render(i);return}o&&(this.subWorkerDrawCount=o,this.wokerDrawCount<1/0&&(this.maxDrawCount=Math.max(this.maxDrawCount,this.subWorkerDrawCount)),i!=null&&i.length&&(this.subWorkerDrawCount>this.wokerDrawCount?i.forEach(s=>{s.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()===C.Doing}getTasksqueueState(){return this.useTasksqueue&&C.Doing||C.Done}setMaxDrawCount(e){this.maxDrawCount=e}setWorkerTasksqueueCount(e){this.workerTasksqueueCount=Math.max(this.workerTasksqueueCount||0,e)}collectorSyncData(e){var o,r;let i=!1;for(const s of e){const{type:a,selectIds:c,opt:l,selectRect:h,strokeColor:g,fillColor:d,willSyncService:M,isSync:w,imageBitmap:N,canvasHeight:f,canvasWidth:v,rect:y,op:I,canTextEdit:m,points:z,selectorColor:j,canRotate:L,scaleType:R,textOpt:P,toolsType:$,workId:A,viewId:Q,dataType:F,canLock:_,isLocked:se,shapeOpt:X,toolsTypes:B}=s;if(!Q){console.error("collectorSyncData",s);return}const J=s.scenePath||this.viewContainerManager.getCurScenePath(Q);switch(a){case D.Select:{const Y=c!=null&&c.length?{...h,selectIds:c,canvasHeight:f,canvasWidth:v,points:z}:void 0;Y&&(l!=null&&l.strokeColor)&&(Y.selectorColor=l.strokeColor),Y&&j&&(Y.selectorColor=j),Y&&g&&(Y.strokeColor=g),Y&&(l!=null&&l.fillColor)&&(Y.fillColor=l.fillColor),Y&&d&&(Y.fillColor=d),Y&&me(L)&&(Y.canRotate=L),Y&&R&&(Y.scaleType=R),Y&&m&&(Y.canTextEdit=m),Y&&P&&(Y.textOpt=P),Y&&me(_)&&(Y.canLock=_),Y&&me(se)&&(Y.isLocked=se),Y&&X&&(Y.shapeOpt=X),Y&&B&&(Y.toolsTypes=B),Q&&this.viewContainerManager.showFloatBar(Q,!!Y,Y),M&&((o=this.collector)==null||o.dispatch({type:a,selectIds:c,opt:l,isSync:w,viewId:Q,scenePath:J}));break}case D.Snapshot:if(N&&J){const Y=this.snapshotMap.get(J);Y&&Y(N)}break;case D.BoundingBox:if(y&&J){const Y=this.boundingRectMap.get(J);Y&&Y(y)}break;case D.Cursor:I&&this.control.cursor.collectServiceCursor({...s});break;case D.Clear:Q&&this.viewContainerManager.showFloatBar(Q,!1),Q&&this.clearAllResolve&&this.clearAllResolve(Q);break;case D.TextUpdate:if($===T.Text&&A&&Q){const Y=this.viewContainerManager.transformToOriginPoint((l==null?void 0:l.boxPoint)||[0,0],Q),H=(l==null?void 0:l.boxSize)||[0,0],E=(r=this.viewContainerManager.getView(Q))==null?void 0:r.cameraOpt;l?this.control.textEditorManager.updateTextForWorker({x:Y[0],y:Y[1],w:H[0],h:H[1],scale:(E==null?void 0:E.scale)||1,workId:A,opt:l,dataType:F,viewId:Q,canSync:M||!1,canWorker:!1}):this.control.textEditorManager.delete(A,M||!1,!1)}break;case D.GetTextActive:$===T.Text&&A&&Q&&this.control.textEditorManager.updateTextForWorker({workId:A,isActive:!0,viewId:Q,dataType:G.Local,canWorker:!1,canSync:!0},Date.now());break;default:i=!0;break}}i&&_e(()=>{this.collectorAsyncData(e)},this.maxLastSyncTime)}collectorAsyncData(e){var i,o,r,s;for(const a of e){const{type:c,op:l,workId:h,index:g,removeIds:d,ops:M,opt:w,updateNodeOpt:N,toolsType:f,isSync:v,viewId:y}=a;if(!y){console.error("collectorAsyncData",a);return}const I=a.scenePath||this.viewContainerManager.getCurScenePath(y);switch(c){case D.DrawWork:{(i=this.collector)==null||i.dispatch({type:c,op:l,workId:h,index:g,isSync:v,viewId:y,scenePath:I});break}case D.FullWork:{(o=this.collector)==null||o.dispatch({type:c,ops:M,workId:h,updateNodeOpt:N,opt:w,toolsType:f,isSync:v,viewId:y,scenePath:I});break}case D.UpdateNode:{(r=this.collector)==null||r.dispatch({type:c,updateNodeOpt:N,workId:h,opt:w,ops:M,op:l,isSync:v,viewId:y,scenePath:I});break}case D.RemoveNode:{d&&this.control.textEditorManager.deleteBatch(d,!1,!1),(s=this.collector)==null||s.dispatch({type:c,removeIds:d,isSync:v,viewId:y,scenePath:I});break}}}}async onLocalEventEnd(e,i){var l,h;const o=this.viewContainerManager.getView(i);if(!o)return;const{focusScenePath:r,cameraOpt:s}=o,a=this.viewContainerManager.transformToScenePoint(e,i),c=[];for(const g of this.localPointsBatchData.keys())if(((l=this.currentToolsData)==null?void 0:l.toolsType)===T.Text){const d=(h=this.getLocalPointInfo(g))==null?void 0:h.points;if(d&&d[0]===a[0]&&d[1]===a[1]){const M=this.currentLocalWorkData.toolsOpt;M.workState=C.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:xe.Text,isActive:!0,viewId:i,scenePath:r},Date.now())}this.deleteLocalPoint(g);continue}else this.pushLocalPoint(g,a,C.Done,i),c.push(g);c.length&&(await new Promise(g=>{setTimeout(async()=>{var d;c.forEach(M=>{this.setLocalPointIsFullWork(M)}),this.delayWorkStateToDoneResolve=g,c[0]&&this.control.runEffectWork(()=>{var M;this.setShapeSelectorByWorkId(c[0].toString(),i),((M=this.currentToolsData)==null?void 0:M.toolsType)===T.Selector&&this.viewContainerManager.activeFloatBar(i)}),((d=this.currentToolsData)==null?void 0:d.toolsType)===T.Selector&&this.viewContainerManager.activeFloatBar(i),this.runAnimation()},0)}),this.delayWorkStateToDoneResolve=void 0,c.forEach(g=>{this.deleteLocalPoint(g)}),c.length=0)}onLocalEventDoing(e,i){this.currentLocalWorkData.workState===C.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:C.Doing});let o=!1;for(const[r,{state:s}]of this.localPointsBatchData.entries())if(this.isAbled()&&s!==C.Pending){const a=this.viewContainerManager.transformToScenePoint(e,i);this.pushLocalPoint(r,a,s===C.Start?C.Doing:s,i),o=!0}if(o){this.runAnimation();return}this.hoverCursor(e,i)}onLocalEventStart(e,i){var a,c,l,h,g,d,M,w;this.viewContainerManager.focuedViewId!==i&&this.viewContainerManager.setFocuedViewId(i);const o=this.viewContainerManager.transformToScenePoint(e,i),r=((a=this.currentToolsData)==null?void 0:a.toolsType)===T.Selector?b:Date.now();this.pushLocalPoint(r,o,C.Start,i);const s=this.setZIndex(i);if(this.setCurrentLocalWorkData({workState:C.Start,toolsOpt:s,viewId:i}),this.control.textEditorManager.checkEmptyTextBlur(),((c=this.currentToolsData)==null?void 0:c.toolsType)!==T.Text){if(this.isCanRecordUndoRedo&&this.internalMsgEmitter.emit("addUndoTicker",r,i),this.maxDrawCount=0,this.wokerDrawCount=0,this.subWorkerDrawCount=0,this.reRenders.length=0,r&&s&&((l=this.currentToolsData)!=null&&l.toolsType)&&this.prepareOnceWork({workId:r,toolsOpt:s,viewId:i},(h=this.currentToolsData)==null?void 0:h.toolsType),this.isCanDrawWork){const N=this.viewContainerManager.getCurScenePath(i);(d=this.collector)==null||d.dispatch({type:D.CreateWork,workId:r,toolsType:(g=this.currentToolsData)==null?void 0:g.toolsType,opt:s,viewId:i,scenePath:N}),N&&((M=this.collector)!=null&&M.hasSelector(i,N))&&this.blurSelector(i,N)}else((w=this.currentToolsData)==null?void 0:w.toolsType)===T.Selector&&this.viewContainerManager.unActiveFloatBar(i);this.consume()}}setLocalPointIsFullWork(e){const i=this.getLocalPointInfo(e);i&&(i.isFullWork=!0,this.localPointsBatchData.set(e,i))}pushLocalPoint(e,i,o,r){let s=this.getLocalPointInfo(e);s?(s.state=o,s.points.push(i[0],i[1])):s={state:C.Start,points:i,isFullWork:!1,viewId:r},this.localPointsBatchData.set(e,s)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}correctStorage(e,i,o){var c;const r=new Map,s=[];Object.keys(e).forEach(l=>{var g,d;const h=(d=(g=e[l])==null?void 0:g.opt)==null?void 0:d.zIndex;ue(h)&&s.push([l,h])});const a=s.length&&((c=this.zIndexNodeMethod)==null?void 0:c.correct(s))||[];this.zIndexNodeMethod&&a.length&&(this.zIndexNodeMethod.setMinZIndex(a[0][1]||0,i),this.zIndexNodeMethod.setMaxZIndex(a[a.length-1][1]||0,i));for(const[l,h]of a){if(!e[l])continue;const g=e[l];g.opt&&ue(g.opt.zIndex)&&g.opt.zIndex!==h&&(g.opt.zIndex=h,r.set(l,g))}return r.size&&r.forEach((l,h)=>{var g;(g=this.collector)==null||g.updateValue(h,l,{viewId:i,scenePath:o,isSync:!0}),e[h]=l}),e}async originalEventLintener(e,i,o){if(this.isAbled())switch(e){case C.Start:this.setLocalWorkViewId(o),o&&this.onLocalEventStart(i,o);break;case C.Doing:o&&o===this.getLocalWorkViewId()&&this.onLocalEventDoing(i,o);break;case C.Done:o&&o===this.getLocalWorkViewId()&&await this.onLocalEventEnd(i,o);break}}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var r,s,a;const i=e.toolsType,o=((r=this.currentToolsData)==null?void 0:r.toolsType)!==e.toolsType;if(!this.isActive&&o){setTimeout(()=>{this.setCurrentToolsData(e)},50);return}if(super.setCurrentToolsData(e),o){const c=(s=this.viewContainerManager)==null?void 0:s.getAllViews();for(const l of c)if(l){const{id:h,focusScenePath:g}=l;o&&h&&g&&((a=this.collector)!=null&&a.hasSelector(h,g)&&this.blurSelector(h,g),this.control.textEditorManager.checkEmptyTextBlur())}this.taskBatchData.add({msgType:D.UpdateTools,dataType:G.Local,toolsType:i,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},isRunSubWork:this.isRunSubWork,viewId:Eo}),this.runAnimation()}}prepareOnceWork(e,i){const{workId:o,toolsOpt:r,viewId:s}=e;this.taskBatchData.add({msgType:D.CreateWork,workId:o,toolsType:i,opt:{...r,syncUnitTime:this.maxLastSyncTime},dataType:G.Local,isRunSubWork:this.isRunSubWork,viewId:s}),this.runAnimation()}createViewWorker(e,i){const{offscreenCanvasOpt:o,layerOpt:r,dpr:s,cameraOpt:a}=i;this.taskBatchData.add({msgType:D.Init,dataType:G.Local,viewId:e,offscreenCanvasOpt:o,layerOpt:r,dpr:s,cameraOpt:a,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}),this.runAnimation()}destroyViewWorker(e,i=!1){var o;this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.taskBatchData.add({msgType:D.Destroy,dataType:G.Local,viewId:e,isRunSubWork:!0}),this.runAnimation(),i||(o=this.collector)==null||o.dispatch({type:D.Clear,viewId:e})}onServiceDerive(e,i){var M,w,N,f;const{newValue:o,oldValue:r,viewId:s,scenePath:a}=i,c=ce(o)||{},l=e;let h=c.type;if(!o&&r&&(h=D.RemoveNode,r.toolsType===T.LaserPen))return;const g=(M=this.viewContainerManager.getView(s))==null?void 0:M.focusScenePath;if(g&&g!==a)return;if(h&&l){const v=c;if(v.workId=(w=this.collector)!=null&&w.isOwn(l)?(N=this.collector)==null?void 0:N.getLocalId(l):l,v.msgType=h,v.toolsType===T.LaserPen&&(v.isRunSubWork=!0),v.dataType=G.Service,v.viewId=s,v.scenePath=a,v.selectIds&&(v.selectIds=v.selectIds.map(y=>{var I,m;return(I=this.collector)!=null&&I.isOwn(y)?(m=this.collector)==null?void 0:m.getLocalId(y):y})),v&&v.toolsType===T.Text||(r==null?void 0:r.toolsType)===T.Text){this.control.textEditorManager.onServiceDerive(v);return}this.taskBatchData.add(v)}this.runAnimation();const d=i.newValue&&((f=i.newValue.opt)==null?void 0:f.zIndex);if(this.zIndexNodeMethod&&ue(d)){const v=this.zIndexNodeMethod.getMinZIndex(s);this.zIndexNodeMethod.getMaxZIndex(s)<d&&this.zIndexNodeMethod.setMaxZIndex(d,s),v>d&&this.zIndexNodeMethod.setMinZIndex(d,s)}}pullServiceData(e,i){var r,s,a,c;let o=(r=this.collector)==null?void 0:r.getStorageData(e,i);if(o){o=this.correctStorage(o,e,i);const l=Object.keys(o);for(const h of l){const g=(s=o[h])==null?void 0:s.type;if(g&&h){const d=o[h];if(d.workId=(a=this.collector)!=null&&a.isOwn(h)?(c=this.collector)==null?void 0:c.getLocalId(h):h,d.msgType=g,d.dataType=G.Service,d.viewId=e,d.scenePath=i,d.useAnimation=!1,d.selectIds&&(d.selectIds=d.selectIds.map(M=>{var w,N;return(w=this.collector)!=null&&w.isOwn(M)?(N=this.collector)==null?void 0:N.getLocalId(M):M})),d.toolsType===T.Text){this.control.textEditorManager.onServiceDerive(d);continue}this.taskBatchData.add(d)}this.internalMsgEmitter.emit("excludeIds",l,e)}this.runAnimation()}}runAnimation(){!this.animationId&&!this.isBusy&&(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){this.animationId=void 0;const{viewId:e}=this.currentLocalWorkData;if(this.tasksqueue.size){const i=this.consumeQueue();if(this.taskBatchData.size)for(const o of this.taskBatchData.values())o.dataType===G.Service&&(i.add(o),this.taskBatchData.delete(o));i.size?(this.post(i),this.tasksqueue.clear()):this.tasksqueue.size&&(this.animationId=requestAnimationFrame(this.consume.bind(this)));return}if(this.isAbled()&&this.localPointsBatchData.size&&e)for(const[i,{state:o,isFullWork:r,points:s}]of this.localPointsBatchData.entries()){if(o===C.Done&&!r)continue;const a=s.map(c=>c);a.length&&(this.taskBatchData.add({op:a,workState:o,workId:i,dataType:G.Local,msgType:D.DrawWork,isRunSubWork:this.isRunSubWork,viewId:e,scenePath:e&&this.viewContainerManager.getCurScenePath(e)}),this.delayWorkStateToDoneResolve&&o===C.Done?this.delayWorkStateToDoneResolve(!0):s.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:C.Unwritable,workId:void 0})}abled(){this.setCurrentLocalWorkData({workState:C.Pending,workId:void 0})}isAbled(){return this.currentLocalWorkData.workState!==C.Unwritable}post(e){if(!this.control.hasOffscreenCanvas()&&this.mainThread){this.mainThread.consume(e);return}this.fullWorker.postMessage(e);const i=new Set;for(const o of e.values()){const r=o.msgType;(r===D.Init||r===D.Clear||r===D.Destroy||r===D.UpdateCamera||o.isRunSubWork)&&i.add(o)}i.size&&this.subWorker.postMessage(i)}destroy(){this.unWritable(),this.taskBatchData.clear(),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.fullWorker.terminate(),this.subWorker.terminate(),this.isActive=!1}updateNode(e,i,o,r){this.taskBatchData.add({msgType:D.UpdateNode,workId:e,updateNodeOpt:i,viewId:o,scenePath:r,dataType:G.Local}),this.runAnimation()}updateCamera(e,i){var o;this.useTasksqueue||((o=this.methodBuilder)==null||o.pause(),this.closeDrawingWork(e),this.useTasksqueue=!0,this.mainTasksqueueCount=1,this.workerTasksqueueCount=1),this.useTasksqueue&&(this.tasksqueue.set(e,{msgType:D.UpdateCamera,dataType:G.Local,cameraOpt:{...i,width:Math.floor(i.width),height:Math.floor(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.useTasksqueue=!1,this.mainTasksqueueCount=void 0,this.workerTasksqueueCount=void 0,this.tasksqueue.size&&this.consume(),(e=this.methodBuilder)==null||e.recover(),this.runAnimation()):this.updateCameraDone()},this.maxLastSyncTime*2)}consumeQueue(){const e=new Set;if(this.isBusy&&this.mainTasksqueueCount===this.workerTasksqueueCount||!this.isBusy){this.mainTasksqueueCount&&this.workerTasksqueueCount&&this.mainTasksqueueCount++,e.add({msgType:D.TasksQueue,dataType:G.Local,isRunSubWork:!0,mainTasksqueueCount:this.mainTasksqueueCount,tasksqueue:this.tasksqueue,viewId:""});for(const[i,o]of this.tasksqueue.entries())o.cameraOpt&&this.control.textEditorManager.onCameraChange(o.cameraOpt,i)}return e}async clearViewScenePath(e,i){var o;if(this.control.textEditorManager.clear(e,i),this.queryTaskBatchData({msgType:D.Clear,dataType:G.Local,viewId:e}).forEach(r=>{this.taskBatchData.delete(r)}),this.taskBatchData.add({dataType:G.Local,msgType:D.Clear,viewId:e}),this.runAnimation(),!i){const r=this.viewContainerManager.getCurScenePath(e);(o=this.collector)==null||o.dispatch({type:D.Clear,viewId:e,scenePath:r})}this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),this.localPointsBatchData.clear(),await new Promise(r=>{this.clearAllResolve=r}).then(()=>{this.clearAllResolve=void 0})}internalMsgEmitterListener(){var e;this.methodBuilder=new U([S.CopyNode,S.SetColorNode,S.DeleteNode,S.RotateNode,S.ScaleNode,S.TranslateNode,S.ZIndexNode,S.RotateNode,S.SetFontStyle,S.SetPoint,S.SetLock,S.SetShapeOpt]).registerForMainEngine(W.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(S.ZIndexNode)}setZIndex(e){const i=this.currentToolsData&&ce(this.currentToolsData.toolsOpt);return i&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),i.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),i}removeDrawingWork(e){var o,r;const i=[];for(const[s,{state:a,viewId:c}]of this.localPointsBatchData.entries())(e===c&&a===C.Start||a===C.Doing)&&(i.push(s.toString()),this.deleteLocalPoint(s),console.log("removeDrawingWork",e,s),this.taskBatchData.add({msgType:D.RemoveNode,workId:s,viewId:c,dataType:G.Local,isRunSubWork:!0}));if(i.length){this.consume();const s=(o=this.viewContainerManager.getView(e))==null?void 0:o.focusScenePath;(r=this.collector)==null||r.dispatch({type:D.RemoveNode,removeIds:i,viewId:e,scenePath:s})}}closeDrawingWork(e){let i=!1;for(const[o,{state:r,viewId:s,points:a}]of this.localPointsBatchData.entries()){if(r===C.Done||e!==s)continue;const c=a.map(l=>l);console.log("closeDrawingWork",e,o),this.taskBatchData.add({op:c,workState:r,workId:o,dataType:G.Local,msgType:D.DrawWork,isRunSubWork:this.isRunSubWork,viewId:s,scenePath:s&&this.viewContainerManager.getCurScenePath(s)}),i=!0}i&&this.consume()}hoverCursor(e,i){var o;if(((o=this.currentToolsData)==null?void 0:o.toolsType)===T.Selector){const r=this.viewContainerManager.getView(i);if(r&&r.displayer&&r.displayer.vDom){const c=r.displayer.vDom.state.floatBarData;if(c){const{x:l,y:h,w:g,h:d}=c;if(Ro(e,{x:l,y:h,w:g,h:d}))return}}const s=this.viewContainerManager.transformToScenePoint(e,i),a={msgType:D.CursorHover,dataType:G.Local,point:s,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:i};this.queryTaskBatchData({msgType:D.CursorHover,dataType:G.Local,toolsType:this.currentToolsData.toolsType,viewId:i}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(a),this.runAnimation()}}sendCursorEvent(e,i){if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===C.Unwritable||!this.currentToolsData||!this.isCanSentCursor)return;let o=[void 0,void 0];this.currentToolsData&&(this.isCanDrawWork||this.currentToolsData.toolsType===T.Text)&&this.currentLocalWorkData.workState!==C.Start&&this.currentLocalWorkData.workState!==C.Doing&&(o=e,this.control.cursor.sendEvent(o,i))}getBoundingRect(e){var o,r;if(!((o=this.boundingRectMap)==null?void 0:o.get(e))){const s=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!s)return;if(Object.keys(s).forEach(a=>{var c;((c=this.collector)==null?void 0:c.getLocalId(a))===b&&delete s[a]}),Object.keys(s).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const a={msgType:D.BoundingBox,dataType:G.Local,scenePath:e,scenes:s,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:this.viewContainerManager.mainView.id};return this.taskBatchData.add(a),this.runAnimation(),new Promise(c=>{this.boundingRectMap.set(e,c)}).then(c=>(this.boundingRectMap.delete(e),c))}}}getSnapshot(e,i,o,r){var a,c,l,h,g;if(!((a=this.snapshotMap)==null?void 0:a.get(e))){const d=(c=this.collector)==null?void 0:c.getViewIdBySecenPath(e);if(!d)return;const M=(l=this.collector)==null?void 0:l.getStorageData(d,e);if(!M)return;if(Object.keys(M).forEach(w=>{var N;((N=this.collector)==null?void 0:N.getLocalId(w))===b&&delete M[w]}),Object.keys(M).length){const w=this.viewContainerManager.mainView;if(!w)return;const N=i||((h=w.cameraOpt)==null?void 0:h.width),f=o||((g=w.cameraOpt)==null?void 0:g.height),v={msgType:D.Snapshot,dataType:G.Local,scenePath:e,scenes:M,w:N,h:f,cameraOpt:r&&{...r,width:N,height:f}||w.cameraOpt,isRunSubWork:!0,viewId:w.id};return this.taskBatchData.add(v),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 o of this.taskBatchData.values()){let r=!0;for(const[s,a]of Object.entries(e))if(o[s]!==a){r=!1;break}r&&i.push(o)}return i}insertImage(e){const i=this.viewContainerManager.mainView,o=i==null?void 0:i.id,r=i==null?void 0:i.focusScenePath;if(o&&r){const{src:s,uuid:a}=e;if(a&&!s){this.tmpImageConfigMap.set(a,e);return}const c=Date.now();ge.InternalMsgEmitter.emit("addUndoTicker",c,o);const l={...e};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(o),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(o)),this.taskBatchData.add({msgType:D.FullWork,dataType:G.Local,toolsType:T.Image,workId:e.uuid,opt:l,viewId:o,willRefresh:!0,willSyncService:!0}),this.runAnimation()}}lockImage(e,i){var a,c;const o=this.viewContainerManager.mainView,r=o==null?void 0:o.id,s=o==null?void 0:o.focusScenePath;if(r&&s&&this.collector){const l=this.collector.getStorageData(r,s);if(!l)return;for(const[h,g]of Object.entries(l))if(g&&g.toolsType===T.Image&&g.opt.uuid===e){const d=Date.now();ge.InternalMsgEmitter.emit("addUndoTicker",d,r);const M=(a=this.collector)!=null&&a.isOwn(h)?(c=this.collector)==null?void 0:c.getLocalId(h):h,w={...g.opt,locked:i};this.taskBatchData.add({msgType:D.FullWork,dataType:G.Local,toolsType:T.Image,workId:M,opt:w,viewId:r,willRefresh:!0,willSyncService:!0}),this.runAnimation();return}}}completeImageUpload(e,i){const o=this.viewContainerManager.mainView,r=o==null?void 0:o.id,s=o==null?void 0:o.focusScenePath;if(r&&s){const a=this.tmpImageConfigMap.get(e);a&&(a.src=i,this.insertImage(a),this.tmpImageConfigMap.delete(e));return}}getImagesInformation(e){const i=[];if(this.collector){const o=this.collector.getScenePathData(e);if(!o)return i;for(const r of Object.values(o))if(r&&r.toolsType===T.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:b,selectIds:[e],msgType:D.Select,dataType:G.Service,viewId:i,willSyncService:!0}),this.runAnimation()}blurSelector(e,i){this.taskBatchData.add({workId:b,selectIds:[],msgType:D.Select,dataType:G.Service,viewId:e,scenePath:i}),this.runAnimation()}}var fM=De,pM=function(){return fM.Date.now()},yM=pM,IM=/\s/;function wM(n){for(var t=n.length;t--&&IM.test(n.charAt(t)););return t}var vM=wM,NM=vM,mM=/^\s+/;function TM(n){return n&&n.slice(0,NM(n)+1).replace(mM,"")}var zM=TM,CM=Ze,jM=Pe,SM="[object Symbol]";function xM(n){return typeof n=="symbol"||jM(n)&&CM(n)==SM}var DM=xM,LM=zM,Gi=We,kM=DM,Ji=NaN,bM=/^[-+]0x[0-9a-f]+$/i,EM=/^0b[01]+$/i,AM=/^0o[0-7]+$/i,OM=parseInt;function PM(n){if(typeof n=="number")return n;if(kM(n))return Ji;if(Gi(n)){var t=typeof n.valueOf=="function"?n.valueOf():n;n=Gi(t)?t+"":t}if(typeof n!="string")return n===0?n:+n;n=LM(n);var e=EM.test(n);return e||AM.test(n)?OM(n.slice(2),e?2:8):bM.test(n)?Ji:+n}var YM=PM,RM=We,Wt=yM,Ki=YM,WM="Expected a function",UM=Math.max,$M=Math.min;function BM(n,t,e){var i,o,r,s,a,c,l=0,h=!1,g=!1,d=!0;if(typeof n!="function")throw new TypeError(WM);t=Ki(t)||0,RM(e)&&(h=!!e.leading,g="maxWait"in e,r=g?UM(Ki(e.maxWait)||0,t):r,d="trailing"in e?!!e.trailing:d);function M(j){var L=i,R=o;return i=o=void 0,l=j,s=n.apply(R,L),s}function w(j){return l=j,a=setTimeout(v,t),h?M(j):s}function N(j){var L=j-c,R=j-l,P=t-L;return g?$M(P,r-R):P}function f(j){var L=j-c,R=j-l;return c===void 0||L>=t||L<0||g&&R>=r}function v(){var j=Wt();if(f(j))return y(j);a=setTimeout(v,N(j))}function y(j){return a=void 0,d&&i?M(j):(i=o=void 0,s)}function I(){a!==void 0&&clearTimeout(a),l=0,i=c=o=a=void 0}function m(){return a===void 0?s:y(Wt())}function z(){var j=Wt(),L=f(j);if(i=arguments,o=this,c=j,L){if(a===void 0)return w(c);if(g)return clearTimeout(a),a=setTimeout(v,t),M(c)}return a===void 0&&(a=setTimeout(v,t)),s}return z.cancel=I,z.flush=m,z}var Uo=BM;const FM=He(Uo);var QM=Uo,HM=We,ZM="Expected a function";function VM(n,t,e){var i=!0,o=!0;if(typeof n!="function")throw new TypeError(ZM);return HM(e)&&(i="leading"in e?!!e.leading:i,o="trailing"in e?!!e.trailing:o),QM(n,t,{leading:i,maxWait:t,trailing:o})}var GM=VM;const ve=He(GM);class JM{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"roomHotkeyCheckers");p(this,"tmpCopyStore",new Map);p(this,"tmpCopyCoordInfo");var o;const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.roomHotkeyCheckers=((o=this.control.room)==null?void 0:o.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var t;return((t=this.control.room)==null?void 0:t.disableDeviceInputs)||!1}get isSelector(){var t;return((t=this.control.worker.currentToolsData)==null?void 0:t.toolsType)===T.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(t){switch(t.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(t){var o,r,s;const e=this.control.viewContainerManager.focuedViewId,i=(o=this.control.viewContainerManager.focuedView)==null?void 0:o.focusScenePath;if(e&&i)switch(t){case"delete":this.isSelector&&((r=this.collector)!=null&&r.hasSelector(e,i))&&U.emitMethod(W.MainEngine,S.DeleteNode,{workIds:[b],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:o}=e;if(o({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return i}}copySelectorToTemp(t,e){var l,h;const i=this.control.viewContainerManager.getView(t),o=(h=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:h.getBuilder(S.CopyNode);if(!i||!this.collector||!o)return;const r=this.collector.transformKey(b),s=this.collector.getStorageData(t,e);if(!s)return;const a=s[r],c=a&&o.copySelector({viewId:t,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(t,e){var r,s;const i=this.control.viewContainerManager.getView(t),o=(s=(r=this.mainEngine)==null?void 0:r.methodBuilder)==null?void 0:s.getBuilder(S.CopyNode);if(!(!i||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!o)&&i.viewData&&this.tmpCopyCoordInfo){const a=q.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=i.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY;const h=Date.now();this.control.worker.internalMsgEmitter.emit("addUndoTicker",h,t),o.pasteSelector({viewId:t,scenePath:e,copyStores:q.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l},undoTickerId:h})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const st=class st{constructor(t){p(this,"plugin");p(this,"room");p(this,"play");p(this,"collector");p(this,"hasSwitchToSelectorEffect");p(this,"snapshootStateMap");p(this,"effectResolve");p(this,"hotkeyManager");p(this,"pluginOptions");p(this,"roomMember");p(this,"cursor");p(this,"textEditorManager");p(this,"worker");p(this,"onSceneChange",async(t,e)=>{var s;const i=this.viewContainerManager.getView(e);i!=null&&i.focusScenePath&&(s=this.collector)!=null&&s.hasSelector(e,i.focusScenePath)&&this.worker.blurSelector(e,i.focusScenePath),this.textEditorManager.checkEmptyTextBlur();const o=i==null?void 0:i.displayer;o&&(o.setActive(!1),await o.stopEventHandler());const r=t;r&&this.viewContainerManager.setViewScenePath(e,r),o==null||o.setActive(!0)});p(this,"onRoomMembersChange",t=>{this.roomMember.setRoomMembers(K.toJS(t))});p(this,"onMemberChange",ve(t=>{if(!this.room||!this.worker)return;const e=this.getToolsKey(t),i=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(i),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));p(this,"internalSceneChange",(t,e)=>{var i;(i=this.worker)==null||i.clearViewScenePath(t,!0).then(()=>{var o;(o=this.worker)==null||o.pullServiceData(t,e)})});p(this,"internalCameraChange",(t,e)=>{var i;(i=this.worker)==null||i.updateCamera(t,e)});const{displayer:e,plugin:i,options:o}=t;this.plugin=i,this.room=K.isRoom(e)?e:void 0,this.play=K.isPlayer(e)?e:void 0,this.pluginOptions=o,this.roomMember=new _g;const r={control:this,internalMsgEmitter:st.InternalMsgEmitter};this.cursor=new eM(r),this.textEditorManager=new Xg(r),this.worker=new MM(r),this.hotkeyManager=new JM(r)}hasOffscreenCanvas(){return typeof OffscreenCanvas=="function"}bindPlugin(t){var e,i;this.plugin=t,this.collector&&this.collector.removeStorageStateListener(),this.collector=new Zt(t,(i=(e=this.pluginOptions)==null?void 0:e.syncOpt)==null?void 0:i.interval),this.cursor.activeCollector(),this.activePlugin()}destroy(){var t,e,i,o,r;this.roomMember.destroy(),(t=this.collector)==null||t.destroy(),(e=this.worker)==null||e.destroy(),(i=this.viewContainerManager)==null||i.destroy(),(o=this.cursor)==null||o.destroy(),(r=this.textEditorManager)==null||r.destory()}cleanCurrentScene(){const t=Date.now(),e=this.worker.getLocalWorkViewId()||this.viewContainerManager.focuedViewId;e&&(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),T.Text;case Z.pencil:return t.useLaserPen?T.LaserPen:T.Pencil;case Z.eraser:case Z.pencilEraser:return T.Eraser;case Z.selector:return T.Selector;case Z.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Arrow;case Z.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Straight;case Z.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Ellipse;case Z.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),T.Rectangle;case Z.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===Ce.Pentagram||t.shapeType===Ce.Star)return T.Star;if(t.shapeType===Ce.Polygon||t.shapeType===Ce.Triangle||t.shapeType===Ce.Rhombus)return T.Polygon;if(t.shapeType===Ce.SpeechBalloon)return T.SpeechBalloon;break}return T.Clicker}getToolsOpt(t,e){const i=e.currentApplianceName,o={strokeColor:ht(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(t){case T.Text:o.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),o.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),o.textAlign=(e==null?void 0:e.textAlign)||"left",o.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",o.fontColor=(e==null?void 0:e.textColor)&&ht(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||o.strokeColor||"rgba(0,0,0,1)",o.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&ht(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",o.bold=(e==null?void 0:e.bold)&&"bold"||void 0,o.italic=(e==null?void 0:e.italic)&&"italic"||void 0,o.underline=(e==null?void 0:e.underline)||void 0,o.lineThrough=(e==null?void 0:e.lineThrough)||void 0,o.text="",o.strokeColor=void 0;break;case T.Pencil:o.strokeType=(e==null?void 0:e.strokeType)||yt.Normal;break;case T.Eraser:o.thickness=Math.min(3,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,o.isLine=i===Z.eraser&&!0;break;case T.LaserPen:o.duration=(e==null?void 0:e.duration)||1,o.strokeType=(e==null?void 0:e.strokeType)||yt.Normal;break;case T.Ellipse:case T.Rectangle:case T.Star:case T.Polygon:case T.SpeechBalloon:t===T.Star&&(e.shapeType===Ce.Pentagram?(o.vertices=10,o.innerVerticeStep=2,o.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(o.vertices=e.vertices,o.innerVerticeStep=e.innerVerticeStep,o.innerRatio=e.innerRatio)),t===T.Polygon&&(e.shapeType===Ce.Triangle?o.vertices=3:e.shapeType===Ce.Rhombus?o.vertices=4:e.vertices&&(o.vertices=e.vertices)),o.fillColor=(e==null?void 0:e.fillColor)&&ht(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===T.SpeechBalloon&&(o.placement=e.placement||"bottomLeft");break}return{toolsType:t,toolsOpt:o}}effectViewContainer(t){var e,i,o,r,s;switch(t){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:case T.Triangle:case T.Rhombus:this.room.disableDeviceInputs=!0,(e=this.worker)==null||e.abled();break;case T.Eraser:case T.Selector:this.room.disableDeviceInputs=!1,(i=this.cursor)==null||i.unabled(),(o=this.worker)==null||o.abled();break;default:this.room.disableDeviceInputs=!1,(r=this.worker)==null||r.unWritable(),(s=this.cursor)==null||s.unabled();break}setTimeout(()=>{this.viewContainerManager.getAllViews().forEach(c=>{c!=null&&c.displayer&&c.displayer.bindToolsClass()})},0)}async getBoundingRect(t){var i,o,r,s,a;const e=await((i=this.worker)==null?void 0:i.getBoundingRect(t));if(e){const c=((r=(o=this.viewContainerManager.mainView)==null?void 0:o.viewData)==null?void 0:r.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((a=(s=this.viewContainerManager.mainView)==null?void 0:s.viewData)==null?void 0:a.camera.scale)||1;return{width:Math.floor(e.w/l)+1,height:Math.floor(e.h/l)+1,originX:c.x,originY:c.y}}}async screenshotToCanvas(t,e,i,o,r,s,a){const c=await this.worker.getSnapshot(e,i,o,r);c&&(t.drawImage(c,s||0,a||0),c.close())}async scenePreview(t,e){var s,a,c,l;const i=(s=this.collector)==null?void 0:s.getViewIdBySecenPath(t);if(!i)return;const o=this.viewContainerManager.getView(i);if(!o||!((a=o.cameraOpt)!=null&&a.width)||!((c=o.cameraOpt)!=null&&c.height))return;const r=await((l=this.worker)==null?void 0:l.getSnapshot(t));if(r&&this.worker){const h=document.createElement("canvas"),g=h.getContext("2d"),{width:d,height:M}=o.cameraOpt;h.width=d,h.height=M,g&&(g.drawImage(r,0,0),e.src=h.toDataURL(),e.onload=()=>{h.remove()},e.onerror=()=>{h.remove(),e.remove()}),r.close()}}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}};p(st,"InternalMsgEmitter",new to);let ge=st;var KM=Lo,qM=4;function _M(n){return KM(n,qM)}var XM=_M;const qi=He(XM),Be=class Be{constructor(t){p(this,"emitter",new to);p(this,"undoStack");p(this,"redoStack");p(this,"worker");p(this,"control");p(this,"room");p(this,"isTicking");p(this,"undoTickerId");p(this,"viewId");p(this,"scenePath");p(this,"tickStartStorerCache");p(this,"excludeIds",new Set);p(this,"onChangeScene",FM(()=>{const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){let e=this.undoStack.filter(o=>o.scenePath===t).length;const i=this.redoStack.filter(o=>o.scenePath===t).length;e===0&&i===0&&this.tickStartStorerCache&&this.scenePath===t&&(e=1),this.emitter.emit("onCanUndoStepsUpdate",e),this.emitter.emit("onCanRedoStepsUpdate",i)}},Be.waitTime));const{control:e,internalMsgEmitter:i,viewId:o}=t;this.control=e,this.emitter=i,this.undoStack=[],this.redoStack=[],this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=o}get collector(){return this.control.collector}addExcludeIds(t){if(this.isTicking)for(const e of t)this.excludeIds.add(e)}undoTickerStart(t,e){if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){!this.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(b);this.excludeIds.add(i),this.undoTickerId=t,this.scenePath=e;const o=this.collector.getStorageData(this.viewId,e)||{};this.tickStartStorerCache=new Map(Object.entries(ce(o)))}}undoTickerEndSync(t,e,i){var o,r;if(t===this.undoTickerId&&i===this.scenePath&&e===this.viewId&&this.tickStartStorerCache){const s=((o=this.collector)==null?void 0:o.storage[e])&&((r=this.collector)==null?void 0:r.storage[e][i])||{},a=this.diffFun(this.tickStartStorerCache,new Map(Object.entries(s)));a.size&&(this.undoStack.push({id:t,type:2,data:ce(a),scenePath:i}),this.undoStack.length>Be.MaxStackLength&&this.undoStack.shift(),this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)),this.redoStack.length&&(this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.undoTickerId=void 0,this.excludeIds.clear()}}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,o=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",o),i}redo(t){let e=this.redoStack.length-1;for(;e>=0;){if(this.redoStack[e].scenePath===t){const s=this.redoStack[e];s&&(!this.undoTickerId&&s.tickStartStorerCache?(this.undoTickerId=s.id,this.tickStartStorerCache=s.tickStartStorerCache,this.scenePath=s.scenePath):this.undoStack.push(s),s.type===2&&s.data&&this.refreshPlugin(s,!0)),this.redoStack.splice(e,1);break}e--}const i=this.undoStack.filter(r=>r.scenePath===t).length,o=this.redoStack.filter(r=>r.scenePath===t).length;return this.emitter.emit("onCanUndoStepsUpdate",i),this.emitter.emit("onCanRedoStepsUpdate",o),o}clear(){this.clearUndo(),this.clearRedo()}clearUndo(){this.undoStack.length=0,this.emitter.emit("onCanUndoStepsUpdate",this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitter.emit("onCanRedoStepsUpdate",this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){let e=this.undoStack.filter(o=>o.scenePath===t).length;const i=this.redoStack.filter(o=>o.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,o=t.keys(),r=e.keys();for(const s of o){if(this.excludeIds.has(s))continue;const a=t.get(s),c=e.get(s);if(a&&c){if(le(c,a))continue;i.add({dataType:3,key:s,data:[a,c]});continue}a&&i.add({dataType:2,key:s,data:a})}for(const s of r){if(this.excludeIds.has(s))continue;const a=e.get(s);a&&!t.has(s)&&i.add({dataType:1,key:s,data:a})}return i}isDrawEffectiveScene(t,e){const{key:i}=t;return!e.includes(i)}isDeleteEffectiveScene(t,e,i){var s;const{key:o}=t;if(!e.includes(o))return!1;const r=e.filter(a=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(a))===b&&!((l=this.collector)!=null&&l.isOwn(a))}).map(a=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(o))return!1;return!0}isOldEffectiveScene(t,e,i){var s;const{key:o}=t;if(!e.includes(o))return!1;const r=e.filter(a=>{var c,l;return((c=this.collector)==null?void 0:c.getLocalId(a))===b&&!((l=this.collector)!=null&&l.isOwn(a))}).map(a=>{var c;return(c=this.collector)==null?void 0:c.storage[this.viewId][i][a]});for(const a of r)if((s=a==null?void 0:a.selectIds)!=null&&s.includes(o))return!1;return!0}isNewEffectiveScene(t,e){const{key:i}=t;return!!e.includes(i)}refreshPlugin(t,e=!1){var s,a,c,l,h,g,d,M,w,N,f,v,y,I,m,z,j,L,R,P,$;let i;const{scenePath:o}=t,r=t.data;if(!(!r||!this.collector))for(const A of r.values()){const{dataType:Q,data:F,key:_}=A,se=this.collector.getStorageData(this.viewId,o),X=se&&Object.keys(se)||[];switch(Q){case 1:if(i=e?this.isDrawEffectiveScene(A,X):this.isDeleteEffectiveScene(A,X,o),i)if(e&&!Array.isArray(F)){if((s=F.updateNodeOpt)!=null&&s.useAnimation&&(F.updateNodeOpt.useAnimation=!1),((a=this.collector)==null?void 0:a.getLocalId(_))===b&&((c=this.collector)!=null&&c.isOwn(A.key))){const B=F.selectIds;if(B){const J=X.filter(H=>{var E,V;return((E=this.collector)==null?void 0:E.getLocalId(H))===b&&!((V=this.collector)!=null&&V.isOwn(H))}).map(H=>{var E;return(E=this.collector)==null?void 0:E.storage[this.viewId][o][H]});let Y=!1;for(const H of J)for(let E=0;E<B.length;E++)(l=H==null?void 0:H.selectIds)!=null&&l.includes(B[E])&&(delete B[E],Y=!0);Y&&(F.selectIds=B.filter(H=>!!H))}}(h=this.collector)==null||h.updateValue(A.key,F,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}else!e&&!Array.isArray(A.data)&&((g=this.collector)==null||g.updateValue(A.key,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0}));break;case 2:if(i=e?this.isDeleteEffectiveScene(A,X,o):this.isDrawEffectiveScene(A,X),i){if(e&&!Array.isArray(F))(d=this.collector)==null||d.updateValue(_,void 0,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0});else if(!e&&!Array.isArray(F)){if((M=F.updateNodeOpt)!=null&&M.useAnimation&&(F.updateNodeOpt.useAnimation=!1),((w=this.collector)==null?void 0:w.getLocalId(A.key))===b&&((N=this.collector)!=null&&N.isOwn(A.key))){const B=F.selectIds;if(B){const J=X.filter(H=>{var E,V;return((E=this.collector)==null?void 0:E.getLocalId(H))===b&&!((V=this.collector)!=null&&V.isOwn(H))}).map(H=>{var E;return(E=this.collector)==null?void 0:E.storage[this.viewId][o][H]});let Y=!1;for(const H of J)for(let E=0;E<B.length;E++)(f=H==null?void 0:H.selectIds)!=null&&f.includes(B[E])&&(delete B[E],Y=!0);Y&&(F.selectIds=B.filter(H=>!!H))}}(v=this.collector)==null||v.updateValue(A.key,A.data,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}}break;case 3:if(i=e?this.isNewEffectiveScene(A,X):this.isOldEffectiveScene(A,X,o),i){if(e&&Array.isArray(F)&&F.length===2){const B=F[1];if((y=B.updateNodeOpt)!=null&&y.useAnimation&&(B.updateNodeOpt.useAnimation=!1),((I=this.collector)==null?void 0:I.getLocalId(A.key))===b&&((m=this.collector)!=null&&m.isOwn(A.key))){const J=B.selectIds;if(J){const Y=X.filter(E=>{var V,ee;return((V=this.collector)==null?void 0:V.getLocalId(E))===b&&!((ee=this.collector)!=null&&ee.isOwn(E))}).map(E=>{var V;return(V=this.collector)==null?void 0:V.storage[this.viewId][o][E]});let H=!1;for(const E of Y)for(let V=0;V<J.length;V++)E!=null&&E.selectIds&&((z=E.selectIds)!=null&&z.includes(J[V]))&&(delete J[V],H=!0);H&&(B.selectIds=J.filter(E=>!!E))}}(j=this.collector)==null||j.updateValue(_,B,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}else if(!e&&Array.isArray(F)&&F.length===2){const B=F[0];if((L=B.updateNodeOpt)!=null&&L.useAnimation&&(B.updateNodeOpt.useAnimation=!1),((R=this.collector)==null?void 0:R.getLocalId(A.key))===b&&((P=this.collector)!=null&&P.isOwn(A.key))){const J=B.selectIds;if(J){const Y=X.filter(E=>{var V,ee;return((V=this.collector)==null?void 0:V.getLocalId(E))===b&&!((ee=this.collector)!=null&&ee.isOwn(E))}).map(E=>{var V;return(V=this.collector)==null?void 0:V.storage[this.viewId][o][E]});let H=!1;for(const E of Y)for(let V=0;V<J.length;V++)E!=null&&E.selectIds&&E.selectIds.includes(J[V])&&(delete J[V],H=!0);H&&(B.selectIds=J.filter(E=>!!E))}}($=this.collector)==null||$.updateValue(A.key,B,{isAfterUpdate:!0,viewId:this.viewId,scenePath:o,isSync:!0})}}break}}}};p(Be,"sdkCallBack"),p(Be,"MaxStackLength",20),p(Be,"waitTime",100);let Tt=Be;function ef(n){return n instanceof TouchEvent||n instanceof window.TouchEvent||(n==null?void 0:n.touches)&&(n==null?void 0:n.touches.length)||(n==null?void 0:n.changedTouches)&&(n==null?void 0:n.changedTouches.length)}function Ke(n){return ef(n)&&(n.touches&&n.touches.length===1||n.changedTouches&&n.changedTouches.length===1)}function $o(n){return n.touches&&n.touches.length?{x:n.touches[0].pageX,y:n.touches[0].pageY}:n.changedTouches&&n.changedTouches.length?{x:n.changedTouches[0].pageX,y:n.changedTouches[0].pageY}:{x:n.pageX,y:n.pageY}}class qe{constructor(t){p(this,"internalMsgEmitter");p(this,"control");p(this,"mainView");p(this,"appViews",new Map);const{control:e,internalMsgEmitter:i}=t;this.control=e,this.internalMsgEmitter=i,this.internalMsgEmitter.on("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 o=qi(t[e]),r=qi(i);e==="focusScenePath"&&i&&!le(o,r)&&(this.control.internalSceneChange(t.id,r),(s=this.focuedView)==null||s.displayer.commiter.onChangeScene()),e==="cameraOpt"&&!le(o,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,o)=>(this.control.worker.isActive&&this.validator(e,i,o),e[i]=o,!0)})}createAppView(t){const e=t.id,i=new Proxy(t,{set:(o,r,s)=>(this.control.worker.isActive&&this.validator(o,r,s),o[r]=s,!0)});this.appViews.set(e,i)}isAppView(t){return t!==Ne.viewId&&this.appViews.has(t)}getView(t){var e;return t===Ne.viewId?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var i;if(t===Ne.viewId&&this.mainView)this.mainView.focusScenePath=e;else{const o=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;o&&(o.focusScenePath=e)}}setViewData(t,e){var i;if(t===Ne.viewId&&this.mainView)this.mainView.viewData=e;else{const o=t&&((i=this.appViews)==null?void 0:i.get(t))||void 0;o&&(o.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===Ne.viewId?this.focuedView=this.mainView:this.focuedView=t&&((e=this.appViews)==null?void 0:e.get(t))||void 0,this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(t,e){var o;let i;t===Ne.viewId?i=this.mainView:i=(o=this.appViews)==null?void 0:o.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;le(e,t)||(this.focuedView.cameraOpt=t)}}transformToOriginPoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const o=i.viewData.convertToPointOnScreen(t[0],t[1]);return[o.x,o.y]}return t}transformToScenePoint(t,e){const i=this.getView(e);if(i!=null&&i.viewData){const o=i.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[o.x,o.y]}return t}render(t){var e,i,o,r,s,a,c,l,h,g,d,M,w,N,f,v,y;for(const I of t){const{rect:m,imageBitmap:z,isClear:j,isUnClose:L,drawCanvas:R,clearCanvas:P,viewId:$}=I,A=(e=this.getView($))==null?void 0:e.displayer;if(A&&m){const{dpr:Q,canvasBgRef:F,canvasFloatRef:_,canvasServiceFloatRef:se,canvasTopRef:X}=A,B=m.w*Q,J=m.h*Q,Y=m.x*Q,H=m.y*Q;if(j){switch(P){case Le.TopFloat:(o=(i=X.current)==null?void 0:i.getContext("2d"))==null||o.clearRect(Y,H,B,J);break;case Le.Float:(s=(r=_.current)==null?void 0:r.getContext("2d"))==null||s.clearRect(Y,H,B,J);break;case Le.ServiceFloat:(c=(a=se.current)==null?void 0:a.getContext("2d"))==null||c.clearRect(Y,H,B,J);break;case Le.Bg:(h=(l=F.current)==null?void 0:l.getContext("2d"))==null||h.clearRect(Y,H,B,J);break}continue}if(R&&z)switch(R){case Le.TopFloat:(d=(g=X.current)==null?void 0:g.getContext("2d"))==null||d.drawImage(z,0,0,B,J,Y,H,B,J);break;case Le.Float:{(w=(M=_.current)==null?void 0:M.getContext("2d"))==null||w.drawImage(z,0,0,B,J,Y,H,B,J);break}case Le.ServiceFloat:{(f=(N=se.current)==null?void 0:N.getContext("2d"))==null||f.drawImage(z,0,0,B,J,Y,H,B,J);break}case Le.Bg:{(y=(v=F.current)==null?void 0:v.getContext("2d"))==null||y.drawImage(z,0,0,B,J,Y,H,B,J);break}}if(L)continue;z==null||z.close()}}}showFloatBar(t,e,i){const o=this.getView(t),r=o==null?void 0:o.displayer.vDom;r&&r.showFloatBar(e,i)}activeFloatBar(t){var i;const e=(i=this.getView(t))==null?void 0:i.displayer;e!=null&&e.vDom&&e.vDom.setFloatZIndex(2)}unActiveFloatBar(t){const e=this.getView(t),i=e==null?void 0:e.displayer.vDom;i&&i.setFloatZIndex(-1)}setActiveTextEditor(t,e){const i=this.getView(t),o=i==null?void 0:i.displayer.vDom;o&&o.setActiveTextEditor(e)}}p(qe,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),p(qe,"defaultScreenCanvasOpt",{autoRender:!1,contextType:zt.Canvas2d}),p(qe,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class tf{constructor(t,e,i){p(this,"viewId");p(this,"control");p(this,"internalMsgEmitter");p(this,"commiter");p(this,"cachePoint");p(this,"cacheCursorPoint");p(this,"active",!0);p(this,"mousedown",t=>{if(this.active&&t.button===0&&this.viewId){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"mousemove",t=>{if(this.active&&this.viewId){const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)}});p(this,"mouseup",t=>{if(this.active&&t.button===0&&this.viewId){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}});p(this,"touchstart",t=>{var e;if(this.active&&Ke(t)&&this.viewId){if(!this.control.worker.isAbled()){const o=(e=this.control.worker.getCurrentToolsData())==null?void 0:e.toolsType;o&&this.control.effectViewContainer(o)}this.control.worker.removeDrawingWork(this.viewId),this.reflashContainerOffset();const i=this.getPoint(t);this.cachePoint=i,i&&this.control.worker.originalEventLintener(C.Start,i,this.viewId)}});p(this,"touchmove",t=>{if(this.active){if(!Ke(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(C.Doing,e,this.viewId)}}});p(this,"touchend",t=>{if(this.active){if(!Ke(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(C.Done,e,this.viewId),this.cachePoint=void 0}}});p(this,"cursorMouseMove",ve(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&le(e,this.cacheCursorPoint)||!this.viewId||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));p(this,"cursorMouseLeave",ve(()=>{this.viewId&&(this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId))},30,{leading:!1}));p(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.viewId=t,this.control=e,this.internalMsgEmitter=i;const o={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new Tt(o)}bindToolsClass(){var e,i;const t=(i=(e=this.control.worker)==null?void 0:e.currentToolsData)==null?void 0:i.toolsType;switch(t){case T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===T.Text?"cursor-text":t===T.Pencil||t===T.LaserPen?"cursor-pencil":"cursor-arrow"}`);break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}setViewId(t){this.viewId=t}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.internalMsgEmitter.removeAllListeners([W.Cursor,this.viewId])}getPoint(t){const e=$o(t);if(e&&ue(e.x)&&ue(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(C.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),o=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[o,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let o={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(o=this.getContainerOffset(t.offsetParent,o)),o}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,!1),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,!1),window.addEventListener("touchend",this.touchend,!1),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}class Ne{constructor(t,e){p(this,"viewId","mainView");p(this,"control");p(this,"internalMsgEmitter");p(this,"commiter");p(this,"cachePoint");p(this,"cacheCursorPoint");p(this,"active",!0);p(this,"mousedown",t=>{if(this.active&&t.button===0){this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)}});p(this,"mousemove",t=>{if(!this.active)return;const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)});p(this,"mouseup",t=>{if(this.active&&t.button===0){const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0}});p(this,"touchstart",t=>{var i;if(!this.active||!Ke(t))return;if(!this.control.worker.isAbled()){const o=(i=this.control.worker.getCurrentToolsData())==null?void 0:i.toolsType;o&&this.control.effectViewContainer(o)}this.control.worker.removeDrawingWork(this.viewId),this.reflashContainerOffset();const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Start,e,this.viewId)});p(this,"touchmove",t=>{if(!this.active)return;if(!Ke(t)){this.control.worker.unWritable(),this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(t);this.cachePoint=e,e&&this.control.worker.originalEventLintener(C.Doing,e,this.viewId)});p(this,"touchend",t=>{if(!this.active)return;if(!Ke(t)||!this.control.worker.isAbled()){this.control.worker.removeDrawingWork(this.viewId);return}const e=this.getPoint(t)||this.cachePoint;e&&this.control.worker.originalEventLintener(C.Done,e,this.viewId),this.cachePoint=void 0});p(this,"cursorMouseMove",ve(t=>{const e=this.getPoint(t);this.cacheCursorPoint&&le(e,this.cacheCursorPoint)||(this.cacheCursorPoint=e,e&&this.control.worker.sendCursorEvent(e,this.viewId))},30,{leading:!1}));p(this,"cursorMouseLeave",ve(()=>{this.cacheCursorPoint=[void 0,void 0],this.control.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)},30,{leading:!1}));p(this,"keydown",t=>{this.control.hotkeyManager.colloctHotkey(t)});this.control=t,this.internalMsgEmitter=e;const i={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:this.viewId};this.commiter=new Tt(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 T.Text:case T.Pencil:case T.LaserPen:case T.Arrow:case T.Straight:case T.Rectangle:case T.Ellipse:case T.Star:case T.Polygon:case T.SpeechBalloon:this.eventTragetElement&&(this.eventTragetElement.className=`netless-whiteboard ${t===T.Text?"cursor-text":t===T.Pencil||t===T.LaserPen?"cursor-pencil":"cursor-arrow"}`);break}}mountView(){this.setCanvassStyle(),this.control.viewContainerManager.mountView(this.viewId)}updateSize(){this.setCanvassStyle()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}destroy(){this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.internalMsgEmitter.removeAllListeners([W.Cursor,this.viewId])}getPoint(t){const e=$o(t);if(e&&ue(e.x)&&ue(e.y))return[e.x-this.containerOffset.x,e.y-this.containerOffset.y]}setActive(t){this.active=t}async stopEventHandler(){this.cachePoint&&(await this.control.worker.originalEventLintener(C.Done,this.cachePoint,this.viewId),this.cachePoint=void 0)}getTranslate(t){const i=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),o=i&&parseInt(i[0])||0,r=i&&parseInt(i[1])||0;return[o,r]}getContainerOffset(t,e){var r;const i=this.getTranslate(t);let o={x:e.x+t.offsetLeft+i[0],y:e.y+t.offsetTop+i[1]};return(r=t.offsetParent)!=null&&r.nodeName&&t.offsetParent.nodeName!=="BODY"&&(o=this.getContainerOffset(t.offsetParent,o)),o}bindDisplayerEvent(t){t.addEventListener("mousedown",this.mousedown,!1),t.addEventListener("touchstart",this.touchstart,!1),window.addEventListener("mouseleave",this.mouseup,!1),window.addEventListener("mousemove",this.mousemove,!1),window.addEventListener("mouseup",this.mouseup,!1),window.addEventListener("touchmove",this.touchmove,!1),window.addEventListener("touchend",this.touchend,!1),t.addEventListener("mousemove",this.cursorMouseMove,!1),t.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){t.removeEventListener("mousedown",this.mousedown),t.removeEventListener("touchstart",this.touchstart),window.removeEventListener("mouseleave",this.mouseup),window.removeEventListener("mousemove",this.mousemove),window.removeEventListener("mouseup",this.mouseup),window.removeEventListener("touchmove",this.touchmove),window.removeEventListener("touchend",this.touchend),t.removeEventListener("mousemove",this.cursorMouseMove),t.removeEventListener("mouseleave",this.cursorMouseLeave),t.removeEventListener("keydown",this.keydown)}}p(Ne,"viewId","mainView");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",Ie={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 he(n){return ff[n]}const pf=n=>{const{workIds:t,maranger:e}=n;return u.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),U.emitMethod(W.MainEngine,S.DeleteNode,{workIds:t||[b],viewId:e.viewId})},onTouchEnd:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),U.emitMethod(W.MainEngine,S.DeleteNode,{workIds:t||[b],viewId:e.viewId})}},u.createElement("img",{alt:"icon",src:he("delete")}))},yf=n=>{const{workIds:t,viewId:e}=n;return u.createElement("div",{className:"button normal-button",onClick:i=>{i.cancelable&&i.preventDefault(),i.stopPropagation(),U.emitMethod(W.MainEngine,S.CopyNode,{workIds:t||[b],viewId:e})},onTouchEnd:i=>{i.stopPropagation(),U.emitMethod(W.MainEngine,S.CopyNode,{workIds:t||[b],viewId:e})}},u.createElement("img",{alt:"icon",src:he("duplicate")}))},_i=n=>{const{icon:t,onClickHandler:e,onTouchEndHandler:i}=n;return u.createElement("div",{className:"button normal-button",onClick:e,onTouchEnd:i},u.createElement("img",{src:he(t)}))},If=n=>{const{open:t,setOpen:e,style:i}=n,{floatBarData:o,maranger:r}=u.useContext(ae),[s,a]=u.useState([]),c=u.useMemo(()=>{if(i&&i.bottom){const d={};return d.top="inherit",d.bottom=50,d}},[i]),l=u.useMemo(()=>t?u.createElement("div",{className:"image-layer-menu",style:c},u.createElement(_i,{icon:"to-top",onClickHandler:d=>{d.cancelable&&d.preventDefault(),d.stopPropagation(),U.emitMethod(W.MainEngine,S.ZIndexNode,{workIds:[b],layer:Fe.Top,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:d=>{d.stopPropagation(),U.emitMethod(W.MainEngine,S.ZIndexNode,{workIds:[b],layer:Fe.Top,viewId:r==null?void 0:r.viewId})}}),u.createElement(_i,{icon:"to-bottom",onClickHandler:d=>{d.cancelable&&d.preventDefault(),d.stopPropagation(),U.emitMethod(W.MainEngine,S.ZIndexNode,{workIds:[b],layer:Fe.Bottom,viewId:r==null?void 0:r.viewId})},onTouchEndHandler:d=>{d.stopPropagation(),U.emitMethod(W.MainEngine,S.ZIndexNode,{workIds:[b],layer:Fe.Bottom,viewId:r==null?void 0:r.viewId})}})):null,[t,c]),h=d=>{d.cancelable&&d.preventDefault(),d.stopPropagation(),d.nativeEvent.stopImmediatePropagation(),e(!t)},g=d=>{d.stopPropagation(),d.nativeEvent.stopImmediatePropagation(),e(!t)};return u.useEffect(()=>{le(o==null?void 0:o.selectIds,s)||o!=null&&o.selectIds&&!le(o==null?void 0:o.selectIds,s)&&(a(o==null?void 0:o.selectIds),e(!1))},[t,o,s,e]),u.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:h,onTouchEnd:g},l,u.createElement("img",{alt:"icon",src:he(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=n=>{const{activeColor:t,onClickHandler:e,onTouchEndHandler:i}=n;return u.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onClick:e,onTouchEnd:i},u.createElement("div",{className:"circle none"}))},At=n=>{const{color:t,activeColor:e,onClickHandler:i,onTouchEndHandler:o}=n;return u.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onClick:i,onTouchEnd:o},u.createElement("div",{className:"circle",style:{backgroundColor:ne(t,1)}}))},Ot=n=>{const{opacity:t,activeColor:e,setCurOpacity:i}=n,[o,r]=u.useState({x:108,y:0});if(u.useEffect(()=>{r({x:t*100+8,y:0})},[]),!e)return null;const s=q.throttle((l,h)=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),h.x!==(o==null?void 0:o.x)&&r({x:h.x,y:0});const g=Math.min(Math.max(h.x-8,0),100)/100;t!==g&&i(g,e,C.Doing)},100,{leading:!1}),a=l=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),i(t,e,C.Start)},c=q.throttle((l,h)=>{l.cancelable&&l.preventDefault(),l.stopPropagation(),h.x!==(o==null?void 0:o.x)&&r({x:h.x,y:0});const g=Math.min(Math.max(h.x-8,0),100)/100;i(g,e,C.Done)},100,{leading:!1});return u.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onClick:l=>{const h=l.nativeEvent.offsetX,g=Math.min(Math.max(h-12,0),100)/100;r({x:g*100+8,y:0}),i(g,e,C.Done)}},u.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${ne(e,0)}, ${ne(e,1)})`}}),u.createElement("div",{className:"range-opacity"},u.createElement(rt,{bounds:"parent",axis:"x",position:o,onDrag:s,onStart:a,onStop:c},u.createElement("div",{className:"circle",style:{backgroundColor:ne(e,t)},onClick:l=>{l.cancelable&&l.preventDefault(),l.stopPropagation()}}))))},vf=n=>{const{open:t,setOpen:e,floatBarRef:i}=n,{floatBarData:o,floatBarColors:r,maranger:s,setFloatBarData:a}=u.useContext(ae),[c,l]=u.useState(),[h,g]=u.useState(1);u.useEffect(()=>{if(o!=null&&o.strokeColor){const[f,v]=Et(o.strokeColor);l(f),g(v)}},[o]);const d=u.useMemo(()=>{if(i!=null&&i.current&&q.isNumber(o==null?void 0:o.y)&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+o.y>180){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-o.y<120){const f={};return f.top="inherit",f.bottom=50,f}}},[i,o==null?void 0:o.y,s]),M=u.useMemo(()=>u.createElement(Ot,{key:"strokeColors",opacity:h,activeColor:c,setCurOpacity:(f,v,y)=>{y===C.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),y===C.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),g(f);const I=ne(v,f);o!=null&&o.strokeColor&&(o.strokeColor=I,a({strokeColor:I})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],strokeColor:I,workState:y,viewId:s==null?void 0:s.viewId})}}),[h,c,s==null?void 0:s.control.room,s==null?void 0:s.viewId,o]),w=u.useMemo(()=>t?u.createElement("div",{className:"font-colors-menu",style:d,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},r.concat().map((f,v)=>{const y=at(...f);return u.createElement(At,{key:v,color:y,activeColor:c,onTouchEndHandler:I=>{I.stopPropagation(),l(y);const m=ne(y,h);o!=null&&o.strokeColor&&(o.strokeColor=m,a({strokeColor:m})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],workState:C.Done,strokeColor:m,viewId:s==null?void 0:s.viewId})},onClickHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),l(y);const m=ne(y,h);o!=null&&o.strokeColor&&(o.strokeColor=m,a({strokeColor:m})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],workState:C.Done,strokeColor:m,viewId:s==null?void 0:s.viewId})}})}),M):null,[t,r,M,c,h,o,s==null?void 0:s.viewId,d]),N=u.useMemo(()=>c?u.createElement("div",{className:"color-bar-ring",style:{backgroundColor:ne(c,h)}},u.createElement("div",{className:"circle"})):null,[c,h]);return u.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},N,w)},Nf=n=>{const{open:t,setOpen:e,floatBarRef:i}=n,{floatBarData:o,floatBarColors:r,maranger:s,setFloatBarData:a}=u.useContext(ae),[c,l]=u.useState(),[h,g]=u.useState(1);u.useEffect(()=>{if(o!=null&&o.fillColor){const[f,v]=(o==null?void 0:o.fillColor)==="transparent"&&["transparent",1]||Et(o.fillColor);l(f),g(v)}},[o]);const d=u.useMemo(()=>{if(i!=null&&i.current&&q.isNumber(o==null?void 0:o.y)&&(s!=null&&s.height)){if(i.current.offsetTop&&i.current.offsetTop+o.y>200){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(s==null?void 0:s.height)-i.current.offsetTop-o.y<140){const f={};return f.top="inherit",f.bottom=50,f}}},[i,o==null?void 0:o.y,s]),M=u.useMemo(()=>c&&c!=="transparent"?u.createElement(Ot,{key:"fillColors",opacity:h||0,activeColor:c,setCurOpacity:(f,v,y)=>{y===C.Start&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!0),y===C.Done&&(s!=null&&s.control.room)&&(s.control.room.disableDeviceInputs=!1),g(f);const I=ne(v,f);o!=null&&o.fillColor&&(o.fillColor=I,a({fillColor:I})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],fillColor:c&&ne(v,f),workState:y,viewId:s==null?void 0:s.viewId})}}):null,[c,h,s==null?void 0:s.control.room,s==null?void 0:s.viewId,o]),w=u.useMemo(()=>t?u.createElement("div",{className:"font-colors-menu",style:d,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()},onClick:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation()}},u.createElement(Bo,{activeColor:c,onTouchEndHandler:f=>{f.stopPropagation(),l("transparent");const v="transparent";o!=null&&o.fillColor&&(o.fillColor=v,a({fillColor:v})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],workState:C.Done,fillColor:v,viewId:s==null?void 0:s.viewId})},onClickHandler:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),l("transparent");const v="transparent";o!=null&&o.fillColor&&(o.fillColor=v,a({fillColor:v})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],workState:C.Done,fillColor:v,viewId:s==null?void 0:s.viewId})}}),r.map((f,v)=>{const y=at(...f);return u.createElement(At,{key:v,color:y,activeColor:c,onTouchEndHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),l(y);const m=ne(y,h);o!=null&&o.fillColor&&(o.fillColor=m,a({fillColor:m})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],workState:C.Done,fillColor:m,viewId:s==null?void 0:s.viewId})},onClickHandler:I=>{I.cancelable&&I.preventDefault(),I.stopPropagation(),l(y);const m=ne(y,h);o!=null&&o.fillColor&&(o.fillColor=m,a({fillColor:m})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:[b],workState:C.Done,fillColor:m,viewId:s==null?void 0:s.viewId})}})}),M):null,[t,c,r,M,o,s==null?void 0:s.viewId,h,d]),N=u.useMemo(()=>{const f=c&&c!=="transparent"&&ne(c,h)||"transparent";return u.createElement("div",{className:"color-bar-fill"},u.createElement("div",{className:"circle",style:{backgroundColor:f}}))},[c,h]);return u.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onTouchEnd:f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)}},N,w)},mf=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,floatBarRef:r}=n,{floatBarColors:s,maranger:a,setFloatBarData:c,floatBarData:l}=u.useContext(ae),[h,g]=u.useState(),[d,M]=u.useState(1);u.useEffect(()=>{if(i!=null&&i.fontColor){const[y,I]=(i==null?void 0:i.fontColor)==="transparent"&&["transparent",0]||Et(i.fontColor);g(y),M(I)}},[i==null?void 0:i.fontColor]);const w=u.useMemo(()=>{if(r!=null&&r.current&&q.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+l.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-l.y<120){const y={};return y.top="inherit",y.bottom=50,y}}},[r,l==null?void 0:l.y,a]),N=u.useMemo(()=>h&&h!=="transparent"?u.createElement(Ot,{key:"fontColors",opacity:d,activeColor:h,setCurOpacity:(y,I,m)=>{m===C.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),m===C.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),M(y);const z=ne(I,y);l!=null&&l.textOpt&&(l.textOpt.fontColor=z,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],fontColor:h&&z,workState:m,viewId:a==null?void 0:a.viewId})}}):null,[h,d,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,o]),f=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 m=at(...y);return u.createElement(At,{key:I,color:m,activeColor:h,onTouchEndHandler:z=>{z.stopPropagation(),g(m);const j=ne(m,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=j,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],workState:C.Done,fontColor:j,viewId:a==null?void 0:a.viewId})},onClickHandler:z=>{z.cancelable&&z.preventDefault(),z.stopPropagation(),g(m);const j=ne(m,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=j,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],workState:C.Done,fontColor:j,viewId:a==null?void 0:a.viewId})}})}),N):null,[t,s,N,h,d,l==null?void 0:l.textOpt,o,a==null?void 0:a.viewId,w]),v=u.useMemo(()=>{const y=h&&h!=="transparent"&&ne(h,d)||"transparent";return u.createElement("div",{className:"color-bar"},u.createElement("div",{className:"color-bar-color",style:{backgroundColor:y}}))},[h,d]);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:he("font-colors")}),v,f)},Tf=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,floatBarRef:r}=n,{floatBarColors:s,maranger:a,setFloatBarData:c,floatBarData:l}=u.useContext(ae),[h,g]=u.useState(),[d,M]=u.useState(1);u.useEffect(()=>{if(i!=null&&i.fontBgColor){const[y,I]=(i==null?void 0:i.fontBgColor)==="transparent"&&["transparent",1]||Et(i.fontBgColor);g(y),M(I)}},[i==null?void 0:i.fontBgColor]);const w=u.useMemo(()=>{if(r!=null&&r.current&&q.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+l.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-l.y<120){const y={};return y.top="inherit",y.bottom=50,y}}},[r,l==null?void 0:l.y,a]),N=u.useMemo(()=>h&&h!=="transparent"?u.createElement(Ot,{key:"fontBgColor",opacity:d||0,activeColor:h,setCurOpacity:(y,I,m)=>{m===C.Start&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!0),m===C.Done&&(a!=null&&a.control.room)&&(a.control.room.disableDeviceInputs=!1),M(y);const z=ne(I,y);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=z,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],fontBgColor:h&&ne(I,y),workState:m,viewId:a==null?void 0:a.viewId})}}):null,[h,d,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,o]),f=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";g(I),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=I,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],workState:C.Done,fontBgColor:I,viewId:a==null?void 0:a.viewId})},onClickHandler:y=>{y.cancelable&&y.preventDefault(),y.stopPropagation();const I="transparent";g(I),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=I,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],workState:C.Done,fontBgColor:I,viewId:a==null?void 0:a.viewId})}}),s.map((y,I)=>{const m=at(...y);return u.createElement(At,{key:I,color:m,activeColor:h,onTouchEndHandler:z=>{z.stopPropagation(),g(m);const j=ne(m,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=j,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],workState:C.Done,fontBgColor:ne(m,d),viewId:a==null?void 0:a.viewId})},onClickHandler:z=>{z.cancelable&&z.preventDefault(),z.stopPropagation(),g(m);const j=ne(m,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=j,c({textOpt:l.textOpt})),U.emitMethod(W.MainEngine,S.SetColorNode,{workIds:o||[b],workState:C.Done,fontBgColor:ne(m,d),viewId:a==null?void 0:a.viewId})}})}),N):null,[t,s,N,d,h,l==null?void 0:l.textOpt,o,a==null?void 0:a.viewId,w]),v=u.useMemo(()=>{const y=h&&h!=="transparent"&&ne(h,d)||"transparent";return u.createElement("div",{className:"color-bar",style:{marginTop:0}},u.createElement("div",{className:"color-bar-color",style:{backgroundColor:y}}))},[h,d]);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),v,f)},zf=n=>{const{bold:t,setBold:e,workIds:i,viewId:o}=n,r=s=>{const a=t==="bold"?"normal":"bold";s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),U.emitMethod(W.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,bold:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:he(t==="bold"?"bold-active":"bold")}))},Cf=n=>{const{underline:t,setUnderline:e,workIds:i,viewId:o}=n,r=s=>{const a=!t;s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),U.emitMethod(W.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,underline:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:he(t?"underline-active":"underline")}))},jf=n=>{const{lineThrough:t,setLineThrough:e,workIds:i,viewId:o}=n,r=s=>{const a=!t;s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),U.emitMethod(W.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,lineThrough:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:he(t?"line-through-active":"line-through")}))},Sf=n=>{const{italic:t,setItalic:e,workIds:i,viewId:o}=n,r=s=>{const a=t==="italic"?"normal":"italic";s.cancelable&&s.preventDefault(),s==null||s.stopPropagation(),e(a),U.emitMethod(W.MainEngine,S.SetFontStyle,{workIds:i,viewId:o,italic:a})};return u.createElement("div",{className:"font-style-button",onClick:r,onTouchEnd:r},u.createElement("img",{alt:"icon",src:he(t==="italic"?"italic-active":"italic")}))},xf=n=>{const{open:t,setOpen:e,textOpt:i,workIds:o,style:r}=n,{maranger:s}=u.useContext(ae),[a,c]=u.useState("normal"),[l,h]=u.useState("normal"),[g,d]=u.useState(!1),[M,w]=u.useState(!1);u.useEffect(()=>{i!=null&&i.bold&&c(i.bold),me(i==null?void 0:i.underline)&&d(i.underline||!1),me(i==null?void 0:i.lineThrough)&&w(i.lineThrough||!1),i!=null&&i.italic&&h(i.italic)},[i]);const N=u.useMemo(()=>{if(r&&r.bottom){const v={};return v.top="inherit",v.bottom=50,v}},[r]),f=u.useMemo(()=>t?u.createElement("div",{className:"font-style-menu",style:N,onTouchEnd:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()},onClick:v=>{v.cancelable&&v.preventDefault(),v.stopPropagation(),v.nativeEvent.stopImmediatePropagation()}},u.createElement(zf,{workIds:o||[b],bold:a,setBold:c,viewId:s==null?void 0:s.viewId}),u.createElement(Cf,{workIds:o||[b],underline:g,setUnderline:d,viewId:s==null?void 0:s.viewId}),u.createElement(jf,{workIds:o||[b],lineThrough:M,setLineThrough:w,viewId:s==null?void 0:s.viewId}),u.createElement(Sf,{workIds:o||[b],italic:l,setItalic:h,viewId:s==null?void 0:s.viewId})):null,[t,o,a,s==null?void 0:s.viewId,g,M,l,N]);return u.createElement("div",{className:`button normal-button ${t&&"active"}`,onTouchEnd:v=>{v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!t)},onClick:v=>{v.cancelable&&v.preventDefault(),v.stopPropagation(),v.nativeEvent.stopImmediatePropagation(),e(!t)}},u.createElement("img",{alt:"icon",src:he(t?"font-style-active":"font-style")}),f)},pe=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Ge=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Df=n=>{const{style:t,onClickHandler:e}=n;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()}},pe.map(i=>u.createElement("div",{className:"font-size-btn",key:i,onClick:()=>{e(i)},onTouchEnd:()=>{e(i)}},i)))},Lf=n=>{const t=u.useRef(null),{open:e,setOpen:i,textOpt:o,workIds:r,floatBarRef:s}=n,{maranger:a,floatBarData:c}=u.useContext(ae),[l,h]=u.useState(0),[g,d]=u.useState(),M=pe.length-1;u.useEffect(()=>{o!=null&&o.fontSize&&(h(o.fontSize),t.current&&(t.current.value=o.fontSize.toString()))},[o==null?void 0:o.fontSize]);const w=u.useMemo(()=>{if(s!=null&&s.current&&q.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(s.current.offsetTop&&s.current.offsetTop+c.y>250){const I={};return I.top="inherit",I.bottom=35,I}else if(!s.current.offsetTop&&(a==null?void 0:a.height)-s.current.offsetTop-c.y<180){const I={};return I.top="inherit",I.bottom=35,I}}},[s,c==null?void 0:c.y,a]);function N(I){h(I),I&&I>=pe[0]&&I<=pe[M]&&U.emitMethod(W.MainEngine,S.SetFontStyle,{workIds:r||[b],fontSize:I,viewId:a==null?void 0:a.viewId})}const f=I=>{var m;h(I),i(!1),(m=t.current)==null||m.blur(),I&&I>=pe[0]&&I<=pe[M]&&U.emitMethod(W.MainEngine,S.SetFontStyle,{workIds:r||[b],fontSize:I,viewId:a==null?void 0:a.viewId})},v=u.useMemo(()=>e?u.createElement(Df,{onClickHandler:f,style:w}):null,[e,f,w]),y=I=>{I>pe[M]&&(I=pe[M]),I<pe[0]&&(I=pe[0]),N(I)};return u.useEffect(()=>()=>{a!=null&&a.control.room&&q.isBoolean(g)&&(a.control.room.disableDeviceInputs=g)},[a,g]),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 m=window.getSelection(),z=m==null?void 0:m.getRangeAt(0);if(z!=null&&z.collapsed)return I.cancelable&&I.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(t.current){const I=t.current.value,m=parseInt(I);isNaN(m)?t.current.value="0":t.current.value=m.toString()}},onChange:I=>{const m=I.target.value,z=parseInt(m);z&&N(z)},onFocus:()=>{a!=null&&a.control.room&&!a.control.room.disableDeviceInputs&&(d(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0)},onBlur:()=>{a!=null&&a.control.room&&q.isBoolean(g)&&(a.control.room.disableDeviceInputs=g)}}),u.createElement("div",{className:"font-size-btns"},u.createElement("div",{className:"font-size-add",onClick:()=>{y(l+pe[0])},onTouchEnd:()=>{y(l+pe[0])}}),u.createElement("div",{className:"font-size-cut",onClick:()=>{y(l-pe[0])},onTouchEnd:()=>{y(l-pe[0])}})),v)},kf=n=>{const{workIds:t,maranger:e,islocked:i}=n;return u.createElement("div",{className:"button normal-button",onClick:o=>{o.cancelable&&o.preventDefault(),o.stopPropagation(),U.emitMethod(W.MainEngine,S.SetLock,{workIds:t||[b],isLocked:!i,viewId:e==null?void 0:e.viewId})},onTouchEnd:o=>{o.stopPropagation(),U.emitMethod(W.MainEngine,S.SetLock,{workIds:t||[b],isLocked:!i,viewId:e==null?void 0:e.viewId})}},u.createElement("img",{alt:"icon",src:he(i?"unlock-new":"lock-new")}))},Gt=n=>{const{icon:t,min:e,max:i,step:o,value:r,onInputHandler:s}=n,[a,c]=u.useState(0),l=u.useRef(null),h=g=>{g>i&&(g=i),g<e&&(g=e),c(g),s(g),l.current&&(l.current.value=g.toString())};return u.useEffect(()=>{r&&(c(r),l.current&&(l.current.value=r.toString()))},[r]),u.createElement("div",{className:"button input-button",onTouchEnd:g=>{g.stopPropagation(),g.nativeEvent.stopImmediatePropagation()},onClick:g=>{g.cancelable&&g.preventDefault(),g.stopPropagation(),g.nativeEvent.stopImmediatePropagation()}},u.createElement("img",{src:he(t)}),u.createElement("input",{className:"input-number",type:"text",ref:l,onTouchEnd:()=>{l.current&&l.current.focus()},onClick:()=>{l.current&&l.current.focus()},onKeyDown:g=>{if(g.key==="Backspace"){const d=window.getSelection(),M=d==null?void 0:d.getRangeAt(0);if(M!=null&&M.collapsed)return g.cancelable&&g.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:()=>{if(l.current){const g=l.current.value,d=parseInt(g);isNaN(d)?l.current.value="0":l.current.value=d.toString()}},onChange:g=>{const d=g.target.value,M=parseInt(d);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+o)},onTouchEnd:()=>{h(a+o)}}),u.createElement("div",{className:"input-number-cut",onClick:()=>{h(a-o)},onTouchEnd:()=>{h(a-o)}})))},bf=n=>{const{icon:t,min:e,max:i,step:o,value:r,onInputHandler:s}=n;return u.createElement("div",{className:"button input-button"},u.createElement("img",{src:he(t)}),u.createElement(Ef,{min:e,max:i,step:o,value:r,onInputHandler:s}))},Ef=n=>{const{value:t,min:e,max:i,onInputHandler:o}=n,[r,s]=u.useState({x:0,y:0});u.useEffect(()=>{s({x:t*100,y:0})},[]);const a=q.throttle((h,g)=>{h.cancelable&&h.preventDefault(),h.stopPropagation();let d=Math.floor(Math.max(g.x,e*100));d=Math.floor(Math.min(d,i*100)),g.x!==(r==null?void 0:r.x)&&s({x:d,y:0});const M=d/100;t!==M&&o(M)},100,{leading:!1}),c=h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()},l=q.throttle((h,g)=>{h.cancelable&&h.preventDefault(),h.stopPropagation();let d=Math.floor(Math.max(g.x,e*100));d=Math.floor(Math.min(d,i*100)),g.x!==(r==null?void 0:r.x)&&s({x:d,y:0});const M=d/100;t!==M&&o(M)},100,{leading:!1});return u.createElement("div",{className:"range-number-container",onClick:h=>{const g=h.nativeEvent.offsetX-6;let d=Math.floor(Math.max(g,e*100));d=Math.floor(Math.min(d,i*100)),s({x:d,y:0});const M=d/100;t!==M&&o(M)}},u.createElement("div",{className:"range-number-color"}),u.createElement("div",{className:"range-number"},u.createElement(rt,{bounds:"parent",axis:"x",position:r,onDrag:a,onStart:c,onStop:l},u.createElement("div",{className:"circle",onClick:c}))))},Af=n=>{const{icon:t,value:e,onChangeHandler:i,style:o}=n,[r,s]=u.useState(0),[a,c]=u.useState(),l=u.useRef(null),h=u.useCallback(M=>{M>=Ge.length&&(M=0),M<0&&(M=Ge.length-1),s(M),i(Ge[M]),c(!1),l.current&&(l.current.value=Ge[M])},[i]),g=u.useMemo(()=>{if(o&&o.bottom){const M={};return M.top="inherit",M.bottom=50,M}},[o]);u.useEffect(()=>{e&&(s(Ge.indexOf(e)),l.current&&(l.current.value=e))},[e]);const d=u.useMemo(()=>a?u.createElement(Of,{options:Ge,onClickHandler:h,style:g}):null,[a,h,g]);return u.createElement("div",{className:"button input-button"},u.createElement("img",{src:he(t)}),u.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onTouchEnd:()=>{l.current&&l.current.focus()},onClick:()=>{l.current&&(l.current.focus(),c(!a))}}),u.createElement("div",{className:"input-number-btns"},u.createElement("div",{className:"input-number-add",onClick:()=>{h(r+1)},onTouchEnd:()=>{h(r+1)}}),u.createElement("div",{className:"input-number-cut",onClick:()=>{h(r-1)},onTouchEnd:()=>{h(r-1)}})),d)},Of=n=>{const{options:t,style:e,onClickHandler:i}=n;return u.createElement("div",{className:"select-option-menu",style:e,onTouchEnd:o=>{o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()},onClick:o=>{o.cancelable&&o.preventDefault(),o.stopPropagation(),o.nativeEvent.stopImmediatePropagation()}},t.map((o,r)=>u.createElement("div",{className:"select-option-btn",key:o,onClick:()=>{i(r)},onTouchEnd:()=>{i(r)}},o)))},Pf=n=>{const{maranger:t,innerRatio:e,innerVerticeStep:i,vertices:o}=n,r=c=>{U.emitMethod(W.MainEngine,S.SetShapeOpt,{workIds:[b],toolsType:T.Star,viewId:t.viewId,vertices:c})},s=c=>{U.emitMethod(W.MainEngine,S.SetShapeOpt,{workIds:[b],toolsType:T.Star,viewId:t.viewId,innerVerticeStep:c})},a=c=>{U.emitMethod(W.MainEngine,S.SetShapeOpt,{workIds:[b],toolsType:T.Star,viewId:t.viewId,innerRatio:c})};return u.createElement(u.Fragment,null,u.createElement(Gt,{value:o,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:r}),u.createElement(Gt,{value:i,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:s}),u.createElement(bf,{value:e,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:a}))},Yf=n=>{const{maranger:t,vertices:e}=n,i=o=>{U.emitMethod(W.MainEngine,S.SetShapeOpt,{workIds:[b],toolsType:T.Polygon,viewId:t.viewId,vertices:o})};return u.createElement(Gt,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:i})},Rf=n=>{const{maranger:t,placement:e}=n,i=o=>{U.emitMethod(W.MainEngine,S.SetShapeOpt,{workIds:[b],toolsType:T.SpeechBalloon,viewId:t.viewId,placement:o})};return u.createElement(Af,{value:e,icon:"speechBallon-placement",onChangeHandler:i})},Ut=n=>{const{icon:t,isActive:e,onClickHandler:i,onTouchEndHandler:o}=n;return u.createElement("div",{className:`button tab-button ${e?"active":""}`,onClick:i,onTouchEnd:o},u.createElement("img",{src:he(t)}))},Wf=n=>{const{toolsTypes:t,style:e,maranger:i,shapeOpt:o}=n,[r,s]=u.useState();u.useEffect(()=>{t.includes(T.Polygon)?s(T.Polygon):t.includes(T.Star)?s(T.Star):s(T.SpeechBalloon)},[t]);const a=(g,d)=>{d.cancelable&&d.preventDefault(),d==null||d.stopPropagation(),s(g)},c=u.useMemo(()=>r===T.Polygon&&i&&o.vertices?u.createElement(Yf,{vertices:o.vertices,maranger:i}):null,[i,r,o]),l=u.useMemo(()=>r===T.Star&&i&&o.vertices&&o.innerVerticeStep&&o.innerRatio?u.createElement(Pf,{maranger:i,vertices:o.vertices,innerVerticeStep:o.innerVerticeStep,innerRatio:o.innerRatio}):null,[i,r,o]),h=u.useMemo(()=>r===T.SpeechBalloon&&i&&o.placement?u.createElement(Rf,{maranger:i,placement:o.placement}):null,[i,r,o]);return u.createElement("div",{className:"shapeOpt-sub-menu",style:e,onClick:g=>{g.stopPropagation(),g.nativeEvent.stopImmediatePropagation(),g.cancelable&&g.preventDefault()}},u.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(T.Polygon)&&u.createElement(Ut,{isActive:r===T.Polygon,icon:r===T.Polygon?"polygon-active":"polygon",onClickHandler:a.bind(void 0,T.Polygon),onTouchEndHandler:a.bind(void 0,T.Polygon)})||null,t.includes(T.Star)&&u.createElement(Ut,{isActive:r===T.Star,icon:r===T.Star?"star-active":"star",onClickHandler:a.bind(void 0,T.Star),onTouchEndHandler:a.bind(void 0,T.Star)})||null,t.includes(T.SpeechBalloon)&&u.createElement(Ut,{isActive:r===T.SpeechBalloon,icon:r===T.SpeechBalloon?"speechBallon-active":"speechBallon",onClickHandler:a.bind(void 0,T.SpeechBalloon),onTouchEndHandler:a.bind(void 0,T.SpeechBalloon)})||null),u.createElement("div",{className:"shapeOpt-sub-menu-content"},c,l,h))},Uf=n=>{const{open:t,setOpen:e,floatBarRef:i,toolsTypes:o,shapeOpt:r}=n,{floatBarData:s,maranger:a}=u.useContext(ae),[c,l]=u.useState([]),[h,g]=u.useState(),d=u.useMemo(()=>{if(i!=null&&i.current&&q.isNumber(s==null?void 0:s.x)&&q.isNumber(s==null?void 0:s.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+s.y>200){const f={};return f.top="inherit",f.bottom=50,f}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-(s==null?void 0:s.y)<140){const f={};return f.top="inherit",f.bottom=50,f}}},[i,s==null?void 0:s.x,s==null?void 0:s.y,a==null?void 0:a.height]),M=u.useMemo(()=>t&&o&&a&&r?(a.control.room&&!a.control.room.disableDeviceInputs&&(g(a.control.room.disableDeviceInputs),a.control.room.disableDeviceInputs=!0),u.createElement(Wf,{shapeOpt:r,style:d,toolsTypes:o,maranger:a})):(a!=null&&a.control.room&&me(h)&&(a.control.room.disableDeviceInputs=h),null),[t,d,o,a,r]),w=f=>{f.cancelable&&f.preventDefault(),f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)},N=f=>{f.stopPropagation(),f.nativeEvent.stopImmediatePropagation(),e(!t)};return u.useEffect(()=>{le(s==null?void 0:s.selectIds,c)||s!=null&&s.selectIds&&!le(s==null?void 0:s.selectIds,c)&&(l(s==null?void 0:s.selectIds),e(!1))},[t,s,c,e]),u.useEffect(()=>()=>{t&&a!=null&&a.control.room&&me(h)&&(a.control.room.disableDeviceInputs=h)},[t,a,h]),u.createElement("div",{className:`button normal-button ${t&&"active"}`,onClick:w,onTouchEnd:N},M,u.createElement("img",{alt:"icon",src:he(t?"shapes-active":"shapes")}))},Fo=u.memo(n=>{const{textOpt:t,workIds:e,noLayer:i,position:o}=n,{floatBarData:r,maranger:s}=u.useContext(ae),[a,c]=u.useState(0),[l,h]=u.useState(),g=u.useRef(null);u.useEffect(()=>{var R,P,$,A;const z={},j=(r==null?void 0:r.w)||((R=t==null?void 0:t.boxSize)==null?void 0:R[0])||0,L=(r==null?void 0:r.h)||((P=t==null?void 0:t.boxSize)==null?void 0:P[1])||0;if(o&&j&&L&&(s!=null&&s.width)&&(s!=null&&s.height)){if(o.y<60?o.y+L<s.height-60?z.bottom=-120:o.y+L<s.height?z.bottom=-58:o.y>0?z.top=62:z.top=-o.y+62:z.top=0,o.x<0)z.left=-o.x+3;else if(o.x+((($=g.current)==null?void 0:$.offsetWidth)||j)>s.width){const Q=s.width-(((A=g.current)==null?void 0:A.offsetWidth)||j)-o.x;z.left=Q}h(z);return}h(void 0)},[g,o,r==null?void 0:r.w,r==null?void 0:r.h,s==null?void 0:s.width,s==null?void 0:s.height,t==null?void 0:t.boxSize]);const d=u.useMemo(()=>r!=null&&r.fillColor?u.createElement(Nf,{floatBarRef:g,open:a===3,setOpen:z=>{c(z===!0?3:0)}}):null,[r==null?void 0:r.fillColor,a,g]),M=u.useMemo(()=>r!=null&&r.strokeColor?u.createElement(vf,{floatBarRef:g,open:a===2,setOpen:z=>{c(z===!0?2:0)}}):null,[r==null?void 0:r.strokeColor,a,g]),w=u.useMemo(()=>t!=null&&t.fontColor&&(s!=null&&s.viewId)?u.createElement(mf,{floatBarRef:g,open:a===4,setOpen:z=>{c(z===!0?4:0)},textOpt:t,workIds:e}):null,[t,a,e,s,g]),N=u.useMemo(()=>t!=null&&t.fontBgColor&&(s!=null&&s.viewId)?u.createElement(Tf,{floatBarRef:g,open:a===5,setOpen:z=>{c(z===!0?5:0)},textOpt:t,workIds:e}):null,[t,a,e,s,g]),f=u.useMemo(()=>t&&(s!=null&&s.viewId)?u.createElement(xf,{open:a===6,setOpen:z=>{c(z===!0?6:0)},textOpt:t,workIds:e,style:l}):null,[t,a,e,s,l]),v=u.useMemo(()=>t&&(s!=null&&s.viewId)?u.createElement(Lf,{open:a===7,setOpen:z=>{c(z===!0?7:0)},textOpt:t,workIds:e,floatBarRef:g}):null,[t,a,e,s,g]),y=u.useMemo(()=>i?null:u.createElement(If,{open:a===1,setOpen:z=>{c(z===!0?1:0)},floatBarRef:g}),[i,a,g]),I=u.useMemo(()=>r!=null&&r.canLock&&s?u.createElement(kf,{workIds:e,maranger:s,islocked:r.isLocked}):null,[r,s,e]),m=u.useMemo(()=>s&&(s!=null&&s.viewId)&&l&&(r!=null&&r.shapeOpt)&&(r!=null&&r.toolsTypes)?u.createElement(Uf,{open:a===8,setOpen:z=>{c(z===!0?8:0)},floatBarRef:g,workIds:e,toolsTypes:r.toolsTypes,shapeOpt:r.shapeOpt}):null,[r,s,a,l,e,g]);return u.createElement("div",{className:"bezier-pencil-plugin-floatbtns",style:l,ref:g},s&&u.createElement(pf,{workIds:e,maranger:s}),y,I,!!(s!=null&&s.viewId)&&u.createElement(yf,{workIds:e,viewId:s.viewId}),m,v,f,w,N,M,d)}),$f=n=>{const{data:t,isActive:e,manager:i,workId:o}=n,{opt:r,scale:s,translate:a,x:c,y:l}=t,h=`scale(${s||1}) ${a&&"translate("+a[0]+"px,"+a[1]+"px)"||""}`,{fontSize:g,fontFamily:d,underline:M,fontColor:w,lineThrough:N,textAlign:f,strokeColor:v,lineHeight:y,bold:I,italic:m,uid:z,workState:j}=r,L=g,R=y||L*1.2,P={fontSize:`${L}px`,lineHeight:`${R}px`,color:w,borderColor:v,minHeight:`${R}px`,paddingRight:`${m==="italic"?Math.round(L*.3):5}px`};d&&(P.fontFamily=`${d}`),(N||M)&&(P.textDecoration=`${N&&"line-through"||""}${M&&" underline"||""}`),I&&(P.fontWeight=`${I}`),m&&(P.fontStyle=`${m}`),f&&(P.textAlign=`${f}`);let $=`<div ${r.fontBgColor?'style="background-color:'+r.fontBgColor+'"':""}></div>`;r!=null&&r.text&&($=r.text.split(",").reduce((F,_,se)=>{const X=_===""?"<br/>":_;return se===0?`<div ${r.fontBgColor?'style="background-color:'+r.fontBgColor+'"':""}>${X}</div>`:`${F}<div ${r.fontBgColor?'style="background-color:'+r.fontBgColor+'"':""}>${X}</div>`},""));function A(){var Q;e&&(z&&z===((Q=i.control.collector)==null?void 0:Q.uid)||!z)&&i.control.textEditorManager.active(o)}return u.createElement("div",{className:"editor-box",style:{left:`${c}px`,top:`${l}px`,transform:h,transformOrigin:"left top",pointerEvents:"none",opacity:j===C.Done?0:1}},u.createElement("div",{className:`editor ${e?"":"readOnly"}`,style:P,dangerouslySetInnerHTML:{__html:$},onClick:A}))},Bf=u.memo(n=>{const{data:t,left:e,top:i,workId:o,updateOptInfo:r}=n,{opt:s,scale:a,translate:c}=t,l=u.useRef(null);u.useEffect(()=>{var P,$;if((P=l.current)!=null&&P.offsetWidth&&(($=l.current)!=null&&$.offsetHeight)){const A=s.boxSize;if((A==null?void 0:A[0])!==l.current.offsetWidth||A[1]!==l.current.offsetHeight||!A){const Q=[l.current.offsetWidth,l.current.offsetHeight];r({activeTextId:o,update:{boxSize:Q,workState:C.Done}})}}},[s.fontSize,s.italic,s.bold]);const h=`scale(${a||1}) ${c&&"translate("+c[0]+"px,"+c[1]+"px)"||""}`,{fontSize:g,fontFamily:d,underline:M,fontColor:w,lineThrough:N,textAlign:f,strokeColor:v,lineHeight:y,bold:I,italic:m}=s,z=g,j=y||z*1.2,L={fontSize:`${z}px`,lineHeight:`${j}px`,color:w,borderColor:v,minHeight:`${j}px`,pointerEvents:"none",paddingRight:`${m==="italic"?Math.round(z*.3):5}px`};d&&(L.fontFamily=`${d}`),(N||M)&&(L.textDecoration=`${N&&"line-through"||""}${M&&" underline"||""}`),f&&(L.textAlign=`${f}`),I&&(L.fontWeight=`${I}`),m&&(L.fontStyle=`${m}`);let R="";return s!=null&&s.text&&(R=s.text.split(",").reduce(($,A,Q)=>{const F=A===""?"<br/>":A;return Q===0?`<div>${F}</div>`:`${$}<div>${F}</div>`},"")),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:l,style:L,dangerouslySetInnerHTML:{__html:R}}))},(n,t)=>!(n.workId!==t.workId||n.left!==t.left||n.top!==t.top||!q.isEqual(n.data,t.data))),Ff=n=>{const{data:t,workId:e,isSelect:i,handleKeyUp:o,handleFocus:r,updateOptInfo:s,showFloatBtns:a,manager:c}=n,[l,h]=u.useState(),{opt:g,scale:d,translate:M,x:w,y:N}=t,[f,v]=u.useState(""),y=u.useRef(null);u.useEffect(()=>{let E="";g!=null&&g.text&&(E=g.text.split(",").reduce((ee,de,re)=>{const ze=de===""?"<br/>":de;return re===0?`<div ${g.fontBgColor?'style="background-color:'+g.fontBgColor+'"':""}>${ze}</div>`:`${ee}<div ${g.fontBgColor?'style="background-color:'+g.fontBgColor+'"':""}>${ze}</div>`},"")),v(E),Promise.resolve().then(()=>{y.current&&y.current.click()})},[g.fontBgColor]),u.useEffect(()=>{var E,V,ee,de;((E=y.current)!=null&&E.offsetWidth&&((V=y.current)!=null&&V.offsetHeight)||(ee=y.current)!=null&&ee.offsetLeft||(de=y.current)!=null&&de.offsetTop)&&s({activeTextId:e,update:{boxSize:[y.current.offsetWidth,y.current.offsetHeight],workState:C.Doing}})});const I=`scale(${d||1}) ${M&&"translate("+M[0]+"px,"+M[1]+"px)"||""}`,{fontSize:m,fontFamily:z,underline:j,fontColor:L,lineThrough:R,textAlign:P,strokeColor:$,lineHeight:A,bold:Q,italic:F}=g,_=m,se=A||_*1.2,X={left:`${w}px`,top:`${N}px`,zIndex:2,pointerEvents:"none"},B={transform:I,transformOrigin:"left top",fontSize:`${_}px`,lineHeight:`${se}px`,color:L,borderColor:$,minHeight:`${se}px`,paddingRight:`${F==="italic"?Math.round(_*.3):5}px`,borderWidth:`${Math.max(Math.round(1/(d||1)),1)}px`};z&&(B.fontFamily=`${z}`),(R||j)&&(B.textDecoration=`${R&&"line-through"||""} ${j&&" underline"||""}`),P&&(B.textAlign=`${P}`),Q&&(B.fontWeight=`${Q}`),F&&(B.fontStyle=`${F}`);function J(){var E;if(y.current){y.current.focus();const V=window==null?void 0:window.getSelection(),ee=y.current.lastChild;if(V&&ee){const de=document.createRange(),re=((E=ee.textContent)==null?void 0:E.length)||0;(ee==null?void 0:ee.nodeName)==="#text"?de.setStart(ee,re):de.setStart(ee,re&&1||0),de.collapse(!0),V.removeAllRanges(),V.addRange(de)}}}function Y(E){if(E.key==="Backspace"){const V=window.getSelection(),ee=V==null?void 0:V.getRangeAt(0);if(ee!=null&&ee.collapsed)return E.cancelable&&E.preventDefault(),document.execCommand("delete",!1),!1}return n.handleKeyDown(E),!1}function H(E){var V,ee;if(E.cancelable&&E.preventDefault(),y.current){let de=(E.clipboardData||window.clipboardData).getData("text");de=de.toUpperCase();const re=window==null?void 0:window.getSelection();if(!(re!=null&&re.rangeCount))return;const ze=de.split(/\n/);if(re&&ze.length){re.deleteFromDocument();const be=document.createRange();let Me=y.current.lastChild;if(!Me){const Ee=document.createTextNode(ze[0]);if(y.current.appendChild(Ee),ze.length===1){const ct=((V=Ee.textContent)==null?void 0:V.length)||0;be.setStart(Ee,ct),be.collapse(!0),re.removeAllRanges(),re.addRange(be);return}}if((Me==null?void 0:Me.nodeName)==="#text"&&(Me.textContent=Me.textContent+ze[0],ze.length===1)){const Ee=((ee=Me.textContent)==null?void 0:ee.length)||0;be.setStart(Me,Ee),be.collapse(!0),re.removeAllRanges(),re.addRange(be);return}(Me==null?void 0:Me.nodeName)==="DIV"&&(Me.innerText=Me.innerText+ze[0]);for(let Ee=1;Ee<ze.length;Ee++){const ct=ze[Ee];if(ct){const hi=document.createElement("div");hi.innerText=ct,y.current.appendChild(hi)}}Me=y.current.lastChild,Me&&be.setStart(Me,1),be.collapse(!0),re.removeAllRanges(),re.addRange(be)}n.handleKeyDown(E)}}return u.createElement("div",{className:"editor-box",style:X,onFocus:()=>{c.control.room&&!c.control.room.disableDeviceInputs&&(h(c.control.room.disableDeviceInputs),c.control.room.disableDeviceInputs=!0)},onBlur:()=>{c!=null&&c.control.room&&q.isBoolean(l)&&(c.control.room.disableDeviceInputs=l)},onKeyDown:E=>(E.stopPropagation(),!0),onMouseMove:E=>(E.stopPropagation(),E.cancelable&&E.preventDefault(),!0)},!i&&a&&u.createElement(Fo,{textOpt:g,workIds:[e],noLayer:!0,position:{x:w,y:N}}),u.createElement("div",{id:e,contentEditable:!0,className:"editor",ref:y,style:B,dangerouslySetInnerHTML:{__html:f},onKeyDown:Y,onKeyUp:o,onClick:J,onTouchEnd:J,onFocus:r,onPaste:H}))};class Qo extends u.Component{constructor(t){super(t)}getInnerText(t){const e=[];for(let i=0;i<t.childNodes.length;i++){const o=t.childNodes[i];if(o.nodeName==="#text"&&i===0){const r=o.textContent.split(/\n/),s=r.pop();e.push(...r),s&&e.push(s)}else if(o.nodeName==="DIV"){const r=o.innerText.split(/\n/);if(r.length===2&&r[0]===""&&r[1]==="")e.push("");else{const s=r.shift();s&&e.push(s);const a=r.pop();e.push(...r),a&&e.push(a)}}}return e}updateOptInfo(t){var s,a;const{activeTextId:e,update:i,syncData:o}=t,r=e&&ce(((s=this.props.manager.control.textEditorManager)==null?void 0:s.get(e))||((a=this.props.editors)==null?void 0:a.get(e)));r&&r.opt&&(r.opt={...r.opt,...i},o&&(r.canSync=Object.keys(o).includes("canSync")&&o.canSync||r.canSync,r.canWorker=Object.keys(o).includes("canWorker")&&o.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,o)=>{if(this.props.selectIds.includes(o)&&!(this.props.activeTextId==o)&&this.props.box){const{x:s,y:a}=this.props.box,{x:c,y:l}=i,h=`${c-s}px`,g=`${l-a}px`,d=u.createElement(Bf,{left:h,top:g,key:o,data:i,workId:o,isSelect:!0,updateOptInfo:this.updateOptInfo.bind(this),manager:this.props.manager});e.push(d)}}),e}return null}render(){return u.createElement(u.Fragment,null,this.editorUI)}}class Qf extends Qo{constructor(e){super(e);p(this,"ref");this.ref=u.createRef()}handleKeyUp(e){const i=this.getInnerText(e.nativeEvent.target),o=this.props.activeTextId;o&&this.updateOptInfo({activeTextId:o,update:{text:i.toString(),boxSize:[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight],workState:C.Doing},syncData:{canSync:!0,canWorker:!0}})}handleFocus(e){const i=this.props.activeTextId;i&&this.updateOptInfo({activeTextId:i,update:{boxSize:[e.nativeEvent.target.offsetWidth,e.nativeEvent.target.offsetHeight],workState:C.Doing},syncData:{canSync:!0,canWorker:!0}})}get editorUI(){var e;if((e=this.props.editors)!=null&&e.size){const i=[];return this.props.editors.forEach((o,r)=>{if(!(this.props.selectIds.includes(r)&&this.props.activeTextId!==r)){const c=this.props.activeTextId==r?u.createElement(Ff,{key:r,data:o,workId:r,showFloatBtns:this.props.showFloatBtns||!1,handleFocus:this.handleFocus.bind(this),handleKeyUp:this.handleKeyUp.bind(this),updateOptInfo:this.updateOptInfo.bind(this),handleKeyDown:()=>{requestAnimationFrame(()=>{var l,h;(l=this.ref)!=null&&l.current&&((h=this.ref)==null||h.current.scrollTo({left:0,behavior:"instant"}))})},manager:this.props.manager}):u.createElement($f,{manager:this.props.manager,isActive:o.opt.workState===C.Doing||o.opt.workState===C.Start||!1,key:r,data:o,workId:r});i.push(c)}}),i}return null}render(){return u.createElement("div",{className:`${this.props.className}`,ref:this.ref},this.editorUI)}}const Hf=()=>{const{floatBarData:n}=u.useContext(ae);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},u.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point LC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point TC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point RC ew-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point BC ns-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},Zf=()=>{const{floatBarData:n}=u.useContext(ae);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}})},Vf=()=>{const{floatBarData:n}=u.useContext(ae);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},u.createElement("div",{className:"point LT nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point LB nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point RT nesw-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}),u.createElement("div",{className:"point RB nwse-resize",style:{backgroundColor:n==null?void 0:n.selectorColor}}))},Gf=()=>{const{floatBarData:n}=u.useContext(ae);return u.createElement("div",{className:"bezier-pencil-plugin-hightlight-box",style:{borderColor:n==null?void 0:n.selectorColor}},u.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg"}))},Jf=n=>{const{className:t}=n,{floatBarData:e,angle:i,setAngle:o,setOperationType:r,maranger:s}=u.useContext(ae),[a,c]=u.useState(!1),[l,h]=u.useState(new oe),[g,d]=u.useState(new oe),[M,w]=u.useState(!1);u.useEffect(()=>(U.activeListener(N),()=>{U.unmountActiveListener(N)}),[]);const N=I=>{var m;if(!I){w(!0),c(!1),r(S.None);return}w(!1),(m=s==null?void 0:s.control.room)!=null&&m.disableDeviceInputs&&(s.control.room.disableDeviceInputs=!1)};u.useEffect(()=>{if(e){const I=Math.floor(e.w/2),m=Math.floor(-e.h/2);d(new oe(I,m)),h(new oe)}},[e]);const f=(I,m)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),s!=null&&s.control.worker.isBusy){w(!0);return}c(!0);const z=Math.round(oe.GetAngleByPoints(l,g,new oe(m.x,m.y)))||0;o(z),r(S.RotateNode),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),U.emitMethod(W.MainEngine,S.RotateNode,{workIds:[b],angle:z,workState:C.Start,viewId:s==null?void 0:s.viewId})},v=ve((I,m)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),s!=null&&s.control.worker.isBusy){w(!0);return}c(!1);const z=Math.round(oe.GetAngleByPoints(l,g,new oe(m.x,m.y)))||0;o(z),r(S.None),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!1),U.emitMethod(W.MainEngine,S.RotateNode,{workIds:[b],angle:z,workState:C.Done,viewId:s==null?void 0:s.viewId})},100,{leading:!1}),y=ve((I,m)=>{if(I.cancelable&&I.preventDefault(),I.stopPropagation(),s!=null&&s.control.worker.isBusy){w(!0);return}c(!0);const z=Math.round(oe.GetAngleByPoints(l,g,new oe(m.x,m.y)))||0;o(z),r(S.RotateNode),U.emitMethod(W.MainEngine,S.RotateNode,{workIds:[b],angle:z,workState:C.Doing,viewId:s==null?void 0:s.viewId})},100,{leading:!1});return u.createElement(rt,{disabled:M,handle:".bezier-pencil-plugin-rotate-mouse-pointer",onStart:f,onDrag:y,onStop:v},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:he("rotation-button")})),u.createElement("div",{className:`bezier-pencil-plugin-rotate-mouse-pointer ${a?"active":""}`},u.createElement("img",{alt:"icon",src:he("rotation")}),u.createElement("div",{className:"angle-icon"},i,"°"))))},Kf=n=>{const{floatBarData:t,setOperationType:e,maranger:i}=u.useContext(ae),{onClickHandle:o}=n,[r,s]=u.useState(C.Pending),[a,c]=u.useState(),[l,h]=u.useState(),[g,d]=u.useState(!1);u.useEffect(()=>(U.activeListener(M),()=>{U.unmountActiveListener(M)}),[]);const M=y=>{var I;if(!y||t!=null&&t.isLocked){d(!0),s(C.Pending);return}d(!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){d(!0),s(C.Pending);return}d(!1)},[t==null?void 0:t.isLocked]),u.useEffect(()=>{q.isNumber(t==null?void 0:t.x)&&q.isNumber(t==null?void 0:t.y)&&(r===C.Pending||r===C.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){d(!0),s(C.Pending);return}q.isNumber(t==null?void 0:t.x)&&q.isNumber(t==null?void 0:t.y)&&(e(S.TranslateNode),s(C.Start),c({x:t==null?void 0:t.x,y:t==null?void 0:t.y}),i!=null&&i.control.room&&(i.control.room.disableDeviceInputs=!0),U.emitMethod(W.MainEngine,S.TranslateNode,{workIds:[b],position:{x:t==null?void 0:t.x,y:t==null?void 0:t.y},workState:C.Start,viewId:i==null?void 0:i.viewId}))},N=q.throttle((y,I)=>{if(y.cancelable&&y.preventDefault(),i!=null&&i.control.worker.isBusy){d(!0),s(C.Pending);return}y.stopPropagation();const m={x:I.x,y:I.y};e(S.None),s(C.Done),i!=null&&i.control.room&&(i.control.room.disableDeviceInputs=!1),U.emitMethod(W.MainEngine,S.TranslateNode,{workIds:[b],position:m,workState:C.Done,viewId:i==null?void 0:i.viewId})},100,{leading:!1}),f=q.throttle((y,I)=>{if(y.cancelable&&y.preventDefault(),y.stopPropagation(),i!=null&&i.control.worker.isBusy){d(!0),s(C.Pending);return}const m={x:I.x,y:I.y};(I.x!==(t==null?void 0:t.x)||I.y!==(t==null?void 0:t.y))&&(s(C.Doing),U.emitMethod(W.MainEngine,S.TranslateNode,{workIds:[b],position:m,workState:C.Doing,viewId:i==null?void 0:i.viewId}))},100,{leading:!1}),v=u.useMemo(()=>!!((t==null?void 0:t.scaleType)===fe.none&&(t!=null&&t.canLock)),[t]);return u.createElement(rt,{disabled:g,position:l,onStart:w,onDrag:f,onStop:N},u.createElement("div",{style:t?{position:"absolute",left:0,top:0,width:t.w,height:t.h,zIndex:2,pointerEvents:v?"none":"auto",touchAction:"none"}:void 0,onClick:q.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)&&o(y),!1),100,{leading:!1}),onTouchEndCapture:q.throttle(y=>(y.stopPropagation(),y.cancelable&&y.preventDefault(),i&&r!==C.Doing&&o(y),!1),100,{leading:!1})}))},qf=n=>{const{className:t}=n,[e,i]=u.useState({x:0,y:0,h:0,w:0}),{floatBarData:o,maranger:r}=u.useContext(ae),[s,a]=u.useState(),[c,l]=u.useState(!1);u.useEffect(()=>(o&&i({x:o.x,y:o.y,w:o.w,h:o.h}),U.activeListener(h),()=>{U.unmountActiveListener(h)}),[]);const h=N=>{var f;if(!N){l(!0);return}l(!1),(f=r==null?void 0:r.control.room)!=null&&f.disableDeviceInputs&&(r.control.room.disableDeviceInputs=!1)},g=N=>{if(N.cancelable&&N.preventDefault(),N.stopPropagation(),r!=null&&r.control.worker.isBusy){l(!0);return}if(o!=null&&o.w&&(o!=null&&o.h)){const f={x:(o==null?void 0:o.x)||0,y:(o==null?void 0:o.y)||0,w:o.w,h:o.h};i(f),a({box:f}),r!=null&&r.control.room&&(r.control.room.disableDeviceInputs=!0),U.emitMethod(W.MainEngine,S.ScaleNode,{workIds:[b],box:f,workState:C.Start,viewId:r==null?void 0:r.viewId})}},d=ve((N,f,v,y)=>{if(N.cancelable&&N.preventDefault(),N.stopPropagation(),r!=null&&r.control.worker.isBusy){l(!0);return}const{box:I,reverseY:m,reverseX:z}=w(f,y);(I.h!==0&&I.w!==0&&y.width!==0||y.height!==0)&&(a({box:I,dir:f,reverseY:m,reverseX:z}),U.emitMethod(W.MainEngine,S.ScaleNode,{workIds:[b],box:I,dir:f,reverseY:m,reverseX:z,workState:C.Doing,viewId:r==null?void 0:r.viewId}))},100,{leading:!1}),M=ve(N=>{if(N.cancelable&&N.preventDefault(),N.stopPropagation(),r!=null&&r.control.worker.isBusy){l(!0);return}if(r!=null&&r.control.room&&(r.control.room.disableDeviceInputs=!1),s){const{box:f,dir:v,reverseY:y,reverseX:I}=s;U.emitMethod(W.MainEngine,S.ScaleNode,{workIds:[b],box:f,dir:v,reverseY:y,reverseX:I,workState:C.Done,viewId:r==null?void 0:r.viewId})}}),w=(N,f)=>{let v=!1,y=!1;const I={x:e.x,y:e.y,w:e.w,h:e.h};switch(N){case"top":{const m=f.height+e.h;m<0?(y=!0,I.y=e.y+e.h,I.h=Math.abs(m)):(I.y=e.y-f.height,I.h=e.h+f.height);break}case"topLeft":{const m=f.width+e.w;m<0?(v=!0,I.x=e.x+e.w,I.w=Math.abs(m)):(I.x=e.x-f.width,I.w=e.w+f.width);const z=f.height+e.h;z<0?(y=!0,I.y=e.y+e.h,I.h=Math.abs(z)):(I.y=e.y-f.height,I.h=e.h+f.height);break}case"topRight":{const m=f.width+e.w;m<0?(v=!0,I.x=e.x+m,I.w=Math.abs(m)):I.w=e.w+f.width;const z=f.height+e.h;z<0?(y=!0,I.y=e.y+e.h,I.h=Math.abs(z)):(I.y=e.y-f.height,I.h=e.h+f.height);break}case"bottom":{const m=f.height+e.h;m<0?(y=!0,I.y=e.y+m,I.h=Math.abs(m)):I.h=e.h+f.height;break}case"bottomLeft":{const m=f.width+e.w;m<0?(v=!0,I.x=e.x+e.w,I.w=Math.abs(m)):(I.x=e.x-f.width,I.w=e.w+f.width);const z=f.height+e.h;z<0?(y=!0,I.y=e.y+z,I.h=Math.abs(z)):I.h=e.h+f.height;break}case"left":{const m=f.width+e.w;m<0?(v=!0,I.x=e.x+e.w,I.w=Math.abs(m)):(I.x=e.x-f.width,I.w=e.w+f.width);break}case"bottomRight":{const m=f.width+e.w;m<0?(v=!0,I.x=e.x+m,I.w=Math.abs(m)):I.w=e.w+f.width;const z=f.height+e.h;z<0?(y=!0,I.y=e.y+z,I.h=Math.abs(z)):I.h=e.h+f.height;break}case"right":{const m=f.width+e.w;m<0?(v=!0,I.x=e.x+m,I.w=Math.abs(m)):I.w=e.w+f.width;break}}return{box:I,reverseX:v,reverseY:y}};return u.createElement(Go.Resizable,{className:`${t}`,boundsByDirection:!0,minWidth:-(((o==null?void 0:o.x)||0)+((o==null?void 0:o.w)||0)),minHeight:-(((o==null?void 0:o.y)||0)+((o==null?void 0:o.h)||0)),size:{width:(o==null?void 0:o.w)||0,height:(o==null?void 0:o.h)||0},style:{position:"absolute",pointerEvents:"auto",left:o==null?void 0:o.x,top:o==null?void 0:o.y},enable:c?!1:{top:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,right:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,bottom:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,left:(o==null?void 0:o.scaleType)===fe.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(o==null?void 0:o.scaleType)===fe.proportional,onResizeStart:g,onResize:d,onResizeStop:M})},Xi=n=>{const{id:t,pos:e,pointMap:i,type:o}=n,{setOperationType:r,maranger:s,floatBarData:a}=u.useContext(ae),[c,l]=u.useState({x:0,y:0}),[h,g]=u.useState(C.Pending);u.useEffect(()=>{(h===C.Pending||h===C.Done)&&l(e)},[e,h]);const d=N=>{N.cancelable&&N.preventDefault(),N.stopPropagation(),r(S.SetPoint),g(C.Start),s!=null&&s.control.room&&(s.control.room.disableDeviceInputs=!0),U.emitMethod(W.MainEngine,S.SetPoint,{workId:b,pointMap:i,workState:C.Start,viewId:s==null?void 0:s.viewId})},M=ve((N,f)=>{if(N.cancelable&&N.preventDefault(),N.stopPropagation(),r(S.SetPoint),g(C.Doing),f.x!==(c==null?void 0:c.x)||f.y!==(c==null?void 0:c.y)){const v=i.get(t);v&&o==="start"&&(s!=null&&s.control.viewContainerManager)?v[0]=s.control.viewContainerManager.transformToScenePoint([f.x,f.y],s.viewId):v&&o==="end"&&(s!=null&&s.control.viewContainerManager)&&(v[1]=s.control.viewContainerManager.transformToScenePoint([f.x,f.y],s.viewId)),U.emitMethod(W.MainEngine,S.SetPoint,{workId:b,pointMap:i,workState:C.Doing,viewId:s==null?void 0:s.viewId})}},100,{leading:!1}),w=ve((N,f)=>{if(N.cancelable&&N.preventDefault(),N.stopPropagation(),r(S.None),g(C.Done),f.x!==(c==null?void 0:c.x)||f.y!==(c==null?void 0:c.y)){l(f);const v=i.get(t);v&&o==="start"&&(s!=null&&s.control.viewContainerManager)?v[0]=s.control.viewContainerManager.transformToScenePoint([f.x,f.y],s.viewId):v&&o==="end"&&(s!=null&&s.control.viewContainerManager)&&(v[1]=s.control.viewContainerManager.transformToScenePoint([f.x,f.y],s.viewId)),U.emitMethod(W.MainEngine,S.SetPoint,{workId:b,pointMap:i,workState:C.Done,viewId:s==null?void 0:s.viewId})}},100,{leading:!1});return u.createElement(rt,{position:c,onStart:d,onDrag:M,onStop:w},u.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn"},u.createElement("div",{className:"bezier-pencil-plugin-point-draggable-btn-inner",style:{borderColor:a==null?void 0:a.selectorColor}})))},_f=n=>{const{className:t}=n,{floatBarData:e,maranger:i}=u.useContext(ae),[o,r]=u.useState(),[s,a]=u.useState(),[c,l]=u.useState(new Map);u.useEffect(()=>{const d=[];if(i&&(e!=null&&e.points)){const M=i.viewId;if(i.control.viewContainerManager.getView(M))for(const N of e.points){const f=i.control.viewContainerManager.transformToOriginPoint(N,M);d.push(f)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}d[0]&&r({x:d[0][0],y:d[0][1]}),d[1]&&a({x:d[1][0],y:d[1][1]})},[i,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const h=u.useMemo(()=>o&&(e!=null&&e.selectIds)?u.createElement(Xi,{pos:o,type:"start",id:e.selectIds[0],pointMap:c}):null,[o,e==null?void 0:e.selectIds,c]),g=u.useMemo(()=>s&&(e!=null&&e.selectIds)?u.createElement(Xi,{pos:s,type:"end",id:e.selectIds[0],pointMap:c}):null,[s,e==null?void 0:e.selectIds,c]);return u.createElement("div",{className:`${t}`},h,g)},Xf=u.forwardRef((n,t)=>{const{floatBarData:e,operationType:i}=u.useContext(ae),o=u.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.all||i===S.RotateNode?null:u.createElement(Hf,null),[e,i]),r=u.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.both||i===S.RotateNode?null:u.createElement(Zf,null),[e,i]),s=u.useMemo(()=>(e==null?void 0:e.scaleType)!==fe.proportional||i===S.RotateNode?null:u.createElement(Vf,null),[e,i]),a=u.useMemo(()=>(e==null?void 0:e.scaleType)===fe.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,o,r,s,n.children)}),ep=u.forwardRef((n,t)=>{var d;const{floatBarData:e,operationType:i,maranger:o}=u.useContext(ae),{editors:r,activeTextId:s}=n,a=u.useMemo(()=>{var M;return e!=null&&e.canRotate&&((M=e==null?void 0:e.selectIds)==null?void 0:M.length)===1&&(i===S.None||i===S.RotateNode)?u.createElement(Jf,{className:Ie.RotateBtn}):null},[e==null?void 0:e.canRotate,(d=e==null?void 0:e.selectIds)==null?void 0:d.length,i]),c=u.useMemo(()=>((e==null?void 0:e.scaleType)===fe.all||(e==null?void 0:e.scaleType)===fe.proportional)&&(i===S.None||i===S.ScaleNode)&&q.isNumber(e==null?void 0:e.x)&&q.isNumber(e==null?void 0:e.y)?u.createElement(qf,{className:Ie.ResizeBtn}):null,[e==null?void 0:e.scaleType,i,e==null?void 0:e.x,e==null?void 0:e.y]),l=u.useMemo(()=>(e==null?void 0:e.scaleType)===fe.both&&(i===S.None||i===S.SetPoint)?u.createElement(_f,{className:Ie.ResizeTowBox}):null,[e==null?void 0:e.scaleType,i]),h=u.useMemo(()=>{const M=(e==null?void 0:e.selectIds)||[];return r&&o&&M&&q.isNumber(e==null?void 0:e.x)&&q.isNumber(e==null?void 0:e.y)&&q.isNumber(e==null?void 0:e.w)&&q.isNumber(e==null?void 0:e.h)?u.createElement(Qo,{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:o,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,o,s]),g=u.useMemo(()=>i===S.None&&q.isNumber(e==null?void 0:e.x)&&q.isNumber(e==null?void 0:e.y)&&q.isNumber(e==null?void 0:e.w)&&q.isNumber(e==null?void 0:e.h)?u.createElement("div",{className:Ie.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:Ie.FloatBar},u.createElement(Xf,{ref:t},u.createElement(u.Fragment,null,h)),u.createElement(Kf,{onClickHandle:M=>{if(o&&(r!=null&&r.size)){const w=o.getPoint(M.nativeEvent);w&&o.control.textEditorManager.computeTextActive(w,o.viewId)}}}),a,c,l,g)}),tp=u.memo(ep,(n,t)=>!!le(n,t)),ip="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",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);p(this,"renderAvatar",e=>{var o;const i=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;if(this.detectAvatar(e)){const r=this.detectCursorName(e);return 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:(o=e.payload)==null?void 0:o.avatar,alt:"avatar"})}else return null});p(this,"getOpacity",e=>{const i=this.getCursorName(e),o=this.detectAvatar(e);return i===void 0&&o===void 0?0:1});p(this,"getCursorName",e=>{if(e.payload&&e.payload.cursorName)return e.payload.cursorName});p(this,"getThemeClass",e=>e.payload&&e.payload.theme?"cursor-inner-mellow":"cursor-inner");p(this,"getCursorBackgroundColor",e=>{const i=this.detectCursorName(e);return e.payload&&e.payload.cursorBackgroundColor?e.payload.cursorBackgroundColor:i?`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`:void 0});p(this,"getCursorTextColor",e=>e.payload&&e.payload.cursorTextColor?e.payload.cursorTextColor:"#FFFFFF");p(this,"getCursorTagBackgroundColor",e=>e.payload&&e.payload.cursorTagBackgroundColor?e.payload.cursorTagBackgroundColor:this.getCursorBackgroundColor(e));p(this,"detectCursorName",e=>!!(e.payload&&e.payload.cursorName));p(this,"detectAvatar",e=>!!(e.payload&&e.payload.avatar));p(this,"renderTag",e=>{if(e.payload&&e.payload.cursorTagName)return 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=n=>{const{className:t,info:e}=n,{roomMember:i,...o}=e||{};return u.createElement("div",{className:`${t}`,style:o?{transform:`translate(${o.x}px, ${o.y}px)`}:{display:"none"}},i&&u.createElement(sp,{roomMember:i}))},ap=n=>{const{className:t,manager:e}=n,[i,o]=u.useState();u.useEffect(()=>(e.internalMsgEmitter.on([W.Cursor,e.viewId],r),()=>{e.internalMsgEmitter.off([W.Cursor,e.viewId],r)}),[e]);function r(a){o(a)}return u.useMemo(()=>{if(i!=null&&i.length){const a=i.map(c=>{var l;return c.roomMember?u.createElement(rp,{key:(l=c.roomMember)==null?void 0:l.memberId,className:t,info:c}):null});return u.createElement(u.Fragment,null,a)}return null},[i])},ae=u.createContext({maranger:void 0,floatBarColors:[],floatBarData:void 0,zIndex:-1,dpr:1,angle:0,operationType:S.None,scale:[1,1],setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class ui extends u.Component{constructor(e){var i;super(e);p(this,"setAngle",e=>{this.setState({angle:e})});p(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,zIndex:-1,dpr:1,angle:0,operationType:S.None,scale:[1,1],editors:this.editors,activeTextId:(i=this.props.maranger.control.textEditorManager)==null?void 0:i.activeId}}get editors(){return ce(this.props.maranger.control.textEditorManager.filterEditor(this.props.maranger.viewId))}componentDidMount(){this.props.maranger.vDom=this,this.props.maranger.mountView(),this.setState({dpr:this.props.maranger.dpr})}componentWillUnmount(){}showFloatBar(e,i){const o=e&&i&&{...this.state.floatBarData,...i}||void 0;this.setState({showFloatBar:e,floatBarData:o,angle:0})}setActiveTextEditor(e){this.setState({activeTextId:e,editors:this.editors})}setFloatZIndex(e){this.setState({zIndex:e})}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var i,o,r,s,a,c,l;const e=!!((o=(i=this.props.maranger.control)==null?void 0:i.room)!=null&&o.floatBarOptions);return u.createElement(u.Fragment,null,u.createElement("div",{className:Ie.Container,onMouseDown:h=>{h.cancelable&&h.preventDefault(),h.stopPropagation()},onTouchStart:h=>{h.stopPropagation()},onMouseMove:h=>{this.props.maranger.cursorMouseMove(h)}},!this.props.maranger.control.hasOffscreenCanvas()&&u.createElement("div",{className:Ie.CanvasBox,ref:this.props.refs.canvasContainerRef})||u.createElement("div",{className:Ie.CanvasBox},u.createElement("canvas",{id:"bgCanvas",ref:this.props.refs.canvasBgRef,style:{width:"100%",height:"100%"}}),u.createElement("canvas",{id:"serviceCanvas",className:Ie.FloatCanvas,ref:this.props.refs.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),u.createElement("canvas",{id:"localCanvas",className:Ie.FloatCanvas,ref:this.props.refs.canvasFloatRef,style:{width:"100%",height:"100%"}}),u.createElement("canvas",{id:"topCanvas",className:Ie.TopFloatCanvas,ref:this.props.refs.canvasTopRef,style:{width:"100%",height:"100%"}})),!this.props.maranger.control.hasOffscreenCanvas()&&this.props.refs.snapshotContainerRef&&u.createElement("div",{className:Ie.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,u.createElement(ae.Provider,{value:{maranger:this.props.maranger,floatBarColors:e&&((a=(s=(r=this.props.maranger.control)==null?void 0:r.room)==null?void 0:s.floatBarOptions)==null?void 0:a.colors)||[],floatBarData:this.state.floatBarData,zIndex:this.state.zIndex,dpr:this.state.dpr,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,((c=this.state.editors)==null?void 0:c.size)&&u.createElement(Qf,{className:Ie.TextEditorContainer,showFloatBtns:e,manager:this.props.maranger,selectIds:((l=this.state.floatBarData)==null?void 0:l.selectIds)||[],editors:this.state.editors,activeTextId:this.state.activeTextId})||null),u.createElement(ap,{className:Ie.CursorBox,manager:this.props.maranger})))}}class Mt extends Ne{constructor(e,i){super(e,i);p(this,"width",1e3);p(this,"height",1e3);p(this,"dpr",1);p(this,"vDom");p(this,"eventTragetElement");p(this,"snapshotContainerRef");p(this,"canvasContainerRef",u.createRef());p(this,"canvasTopRef",u.createRef());p(this,"canvasServiceFloatRef",u.createRef());p(this,"canvasFloatRef",u.createRef());p(this,"canvasBgRef",u.createRef());p(this,"floatBarRef",u.createRef());p(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=Re(),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=Re(),this.width=e,this.height=i),e&&i&&this.canvasBgRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Re(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 o of i)o.remove()}}}createMainViewDisplayer(e){const i=document.createElement("div");return i.className="teaching-aids-plugin-main-view-displayer",e.appendChild(i),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),_t.render(u.createElement(ui,{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 cp extends tf{constructor(e,i,o){super(e,i,o);p(this,"dpr",1);p(this,"width",1e3);p(this,"height",1e3);p(this,"vDom");p(this,"eventTragetElement");p(this,"canvasContainerRef",u.createRef());p(this,"canvasTopRef",u.createRef());p(this,"canvasServiceFloatRef",u.createRef());p(this,"canvasFloatRef",u.createRef());p(this,"canvasBgRef",u.createRef());p(this,"floatBarRef",u.createRef());p(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=Re(),this.canvasContainerRef.current.style.width=`${e}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){this.dpr=Re(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 o=document.createElement("div");return o.className="teaching-aids-plugin-app-view-displayer",i.appendChild(o),this.eventTragetElement=i.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),_t.render(u.createElement(ui,{viewId:e,maranger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef}}),o),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class je extends qe{constructor(e){super(e);p(this,"focuedViewId");p(this,"focuedView");p(this,"control");p(this,"tmpFocusedViewId");p(this,"checkScaleTimer");p(this,"onMainViewRelease",e=>{this.control.textEditorManager.clear(Mt.viewId,!0),this.onMainViewMounted(e);const i=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(i),this.control.clearSnapshootData()});p(this,"onMainViewMounted",e=>{var d;const i=e.divElement;if(!i||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;if(this.mainView&&this.mainView.displayer){this.mainView.displayer.destroy();const M=i.getElementsByClassName("teaching-aids-plugin-main-view-displayer");for(const w of M)w.remove();(d=this.control.worker)==null||d.destroyViewWorker(this.mainView.id,!0),this.mainView=void 0}const r=new Mt(this.control,ge.InternalMsgEmitter),s=e.size.width||r.width,a=e.size.height||r.height,l={dpr:r.dpr,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...je.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...je.defaultLayerOpt,width:s,height:a},cameraOpt:{...je.defaultCameraOpt,width:s,height:a}},{scale:h,...g}=e.camera;l.cameraOpt={...l.cameraOpt,...g,scale:h===1/0?1:h},this.focuedViewId=Mt.viewId,this.createMianView({id:Mt.viewId,container:i,displayer:r,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e}),this.focuedView=this.mainView,r.createMainViewDisplayer(i),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this))});p(this,"onMainViewSizeUpdated",async()=>{if(await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData){const{width:e,height:i}=this.mainView.viewData.size,o=this.mainView.displayer.width,r=this.mainView.displayer.height;(e!==o||i!==r)&&this.mainView.displayer.updateSize(),this.updateMainViewCamera()}});p(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.updateMainViewCamera()});p(this,"updateMainViewCamera",()=>{if(this.mainView&&this.mainView.viewData){const e=this.mainView.viewData.camera,i=this.mainView.cameraOpt;if(i){const o=e.scale===1/0?1:e.scale,r=e.centerX||0,s=e.centerY||0,a=this.mainView.viewData.size,c={...i,scale:o,centerX:r,centerY:s,...a};q.isEqual(i,c)||(this.mainView.cameraOpt=c),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 l,h;(h=(l=this.mainView)==null?void 0:l.viewData)==null||h.moveCamera({scale:o,centerX:r,centerY:s,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});p(this,"onAppViewMounted",e=>{var d;const{appId:i,view:o}=e,r=o.divElement;if(!r||!o.focusScenePath)return;const s=this.appViews.get(i);if(s&&s.displayer){const M=r.getElementsByClassName("teaching-aids-plugin-app-view-displayer");for(const w of M)w.remove();this.destroyAppView(e.appId,!0),(d=this.control.worker)==null||d.destroyViewWorker(i,!0)}const a=new cp(i,this.control,ge.InternalMsgEmitter),c=o.size.width||a.width,l=o.size.height||a.height,g={dpr:a.dpr,originalPoint:[c/2,l/2],offscreenCanvasOpt:{...je.defaultScreenCanvasOpt,width:c,height:l},layerOpt:{...je.defaultLayerOpt,width:c,height:l},cameraOpt:{...je.defaultCameraOpt,...o.camera,width:c,height:l}};if(this.createAppView({id:i,container:r,displayer:a,cameraOpt:g.cameraOpt,focusScenePath:o.focusScenePath,viewData:o}),a.createAppViewDisplayer(i,r),o.callbacks.on("onSizeUpdated",this.onAppViewSizeUpdated.bind(this,i)),o.callbacks.on("onCameraUpdated",this.onAppViewCameraUpdated.bind(this,i)),o.callbacks.on("onActiveHotkey",this.onActiveHotkeyChange.bind(this)),this.tmpFocusedViewId===i){const M=this.control.worker.getLocalWorkViewId();M&&M!==i?this.setFocuedViewId(M):this.setFocuedViewId(i),this.tmpFocusedViewId=void 0}});p(this,"onAppViewSizeUpdated",async e=>{await new Promise(o=>{setTimeout(()=>{o(!0)},0)});const i=this.appViews.get(e);i&&i.viewData&&this.updateAppCamera(e)});p(this,"onAppViewCameraUpdated",async e=>{await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),this.updateAppCamera(e)});p(this,"updateAppCamera",e=>{const i=this.appViews.get(e);if(i&&i.viewData){const o=i.viewData.camera,r=i.cameraOpt,{width:s,height:a}=i.viewData.size,c=i.displayer.width,l=i.displayer.height;if((s!==c||a!==l)&&i.displayer.updateSize(),r){const h=o.scale===1/0?1:o.scale,g=o.centerX||0,d=o.centerY||0,M={...r,scale:h,centerX:g,centerY:d,width:s,height:a};q.isEqual(M,r)||(i.cameraOpt=M)}}});this.control=e.control}async mountView(e){var o,r;const i=this.getView(e);if(i){const{width:s,height:a,dpr:c}=i.displayer,l={dpr:c,originalPoint:[s/2,a/2],offscreenCanvasOpt:{...je.defaultScreenCanvasOpt,width:s,height:a},layerOpt:{...je.defaultLayerOpt,width:s,height:a},cameraOpt:{...je.defaultCameraOpt,width:s,height:a}};if(i.viewData){const{scale:h,...g}=i.viewData.camera;l.cameraOpt={...l.cameraOpt,...g,scale:h===1/0?1:h}}e===((o=this.mainView)==null?void 0:o.id)&&await this.control.activeWorker(),(r=this.control.worker)==null||r.createViewWorker(e,l),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath)}}listenerWindowManager(e){e.emitter.on("focusedChange",i=>{const o=i||Ne.viewId;if(this.focuedViewId!==o)if(this.getView(o)){const s=this.control.worker.getLocalWorkViewId();s&&s!==o?this.setFocuedViewId(s):this.setFocuedViewId(o)}else this.tmpFocusedViewId=o}),e.emitter.on("mainViewScenePathChange",i=>{this.control.onSceneChange(i,"mainView")}),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",i=>{this.appViews.get(i.appId)&&(this.destroyAppView(i.appId),this.control.worker.destroyViewWorker(i.appId))}),e.emitter.on("onAppScenePathChange",i=>{const{appId:o,view:r}=i;this.control.onSceneChange(r.focusScenePath,o)})}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class ft extends ge{constructor(e){super(e);p(this,"windowManager");p(this,"viewContainerManager");const i={control:this,internalMsgEmitter:ge.InternalMsgEmitter};this.viewContainerManager=new je(i)}init(){}destroy(){var e,i,o,r;this.roomMember.destroy(),(e=this.collector)==null||e.destroy(),(i=this.worker)==null||i.destroy(),(o=this.viewContainerManager)==null||o.destroy(),(r=this.cursor)==null||r.destroy()}activePlugin(){this.collector&&(this.collector.addStorageStateListener(e=>{var i,o;if((i=this.collector)!=null&&i.storage&&Object.keys(this.collector.storage).length===0){(o=this.worker)==null||o.clearViewScenePath("mainView",!0);return}if(e){const r=new Map;Object.keys(e).forEach(s=>{var c;const a=e[s];if(a){const l=a.viewId,h=r.get(l)||new Set;h.add(s),r.set(l,h),(c=this.worker)==null||c.onServiceDerive(s,a)}});for(const[s,a]of r.entries())ge.InternalMsgEmitter.emit("excludeIds",[...a],s)}}),this.room&&this.roomMember.onUidChangeHook(e=>{var i,o,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(c=>{var l;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&this.collector.serviceStorage[c.id][c.focusScenePath]){const h=Object.keys(this.collector.serviceStorage[c.id][c.focusScenePath]).filter(g=>{var d;return(d=this.collector)==null?void 0:d.isSelector(g)}).map(g=>({viewId:c.id,scenePath:c.focusScenePath,key:g}));h.length&&a.push(...h)}}),a.forEach(({key:c,viewId:l,scenePath:h})=>{var d,M;const g=(d=this.collector)==null?void 0:d.getUidFromKey(c);g&&!e.online.includes(g)&&((M=this.collector)==null||M.updateValue(c,void 0,{isAfterUpdate:!0,viewId:l,scenePath:h}))})}(r=(o=this.cursor)==null?void 0:o.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(c=>{var l,h;e.online.includes(c)||(h=(l=this.cursor)==null?void 0:l.eventCollector)==null||h.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath)}))}async activeWorker(){await this.worker.init()}setWindowManager(e){var i,o,r,s,a;this.windowManager=e,(o=(i=this.windowManager)==null?void 0:i.mainView)!=null&&o.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(s=(r=this.windowManager.appManager)==null?void 0:r.viewManager)==null?void 0:s.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const Ho={syncOpt:{interval:200},canvasOpt:{contextType:zt.Canvas2d},cdn:{fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.2/cdn/fullWorker-O4uzWn.js",subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@1.0.0-beta.2/cdn/subWorker-CvBoLi.js"}},O=class O extends K.InvisiblePlugin{constructor(){super(...arguments);p(this,"onPhaseChanged",e=>{var i;e===K.RoomPhase.Reconnecting&&((i=O.currentManager)==null||i.setSnapshootData())});p(this,"updateRoomWritable",()=>{var e;(e=O.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});p(this,"roomStateChangeListener",async e=>{var i,o;K.isRoom(this.displayer)&&!this.displayer.isWritable||(e.memberState&&((i=O.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((o=O.currentManager)==null||o.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const o=e.displayer,r=o.callbacks.on,s=o.callbacks.off,a=o.callbacks.once,c=e.cleanCurrentScene,l=e.mainView.setMemberState;i!=null&&i.logger&&(O.logger=i.logger),i.options&&(O.options=i.options);let h=o.getInvisiblePlugin(O.kind);o&&h&&O.createCurrentManager(e,O.options,h),!h&&K.isRoom(o)&&(h=await O.createApplianceMultiPlugin(o,O.kind)),h&&O.currentManager&&(O.currentManager.bindPlugin(h),h.init(o));const g={displayer:o,windowManager:e,currentManager:O.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(M){var f;O.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const w=(e.mainView||o).getBoundingRect(M),N=await((f=O.currentManager)==null?void 0:f.getBoundingRect(M));return!w.width||!w.height?N:Po(w,N)},screenshotToCanvasAsync:async function(M,w,N,f,v,y){var R;O.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let I=N,m=f,z=v.scale;I>this.maxScreenshotWidth&&(z=this.maxScreenshotWidth/I*z,I=this.maxScreenshotWidth),m>this.maxScreenshotHeight&&(z=Math.min(this.maxScreenshotHeight/m*z,z),m=this.maxScreenshotHeight),v.scale=z;const j=document.createElement("canvas"),L=j.getContext("2d");j.width=I*(y||1),j.height=m*(y||1),L&&((e.mainView||o).screenshotToCanvas(L,w,I,m,v,y),M.drawImage(j,Math.floor((N-I)/2),Math.floor((f-m)/2),I*(y||1),m*(y||1),0,0,I,m),j.remove()),O.currentManager&&await((R=O.currentManager)==null?void 0:R.screenshotToCanvas(M,w,I,m,v,Math.floor((N-I)/2),Math.floor((f-m)/2)))},scenePreviewAsync:async function(M,w,N,f,v){O.logger.info("[ApplianceMultiPlugin] scenePreview"),(e.mainView||o).scenePreview(M,w,N,f,v);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"),O.currentManager&&await O.currentManager.scenePreview(M,y)},_callbacksOn:function(M,w){O.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&K.isRoom(o)&&o.isWritable?ft.InternalMsgEmitter.on(M,w):r.call(o.callbacks,M,w)},_callbacksOnce:function(M,w){O.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&K.isRoom(o)&&o.isWritable?ft.InternalMsgEmitter.on(M,w):a.call(o.callbacks,M,w)},_callbacksOff:function(M,w){O.logger.info(`[ApplianceMultiPlugin] callbacks ${M}`),(M==="onCanUndoStepsUpdate"||M==="onCanRedoStepsUpdate")&&K.isRoom(o)&&o.isWritable?ft.InternalMsgEmitter.off(M,w):s.call(o.callbacks,M,w)},undo:function(){return O.logger.info("[ApplianceMultiPlugin] undo"),O.currentManager&&K.isRoom(o)&&!o.disableSerialization?O.currentManager.viewContainerManager.undo():0},redo:function(){return O.logger.info("[ApplianceMultiPlugin] redo"),O.currentManager&&K.isRoom(o)&&!o.disableSerialization?O.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){O.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),O.currentManager&&K.isRoom(o)&&o.isWritable&&(O.currentManager.cleanCurrentScene(),c.call(e))},insertImage:function(M){O.logger.info("[ApplianceMultiPlugin] insertImage"),O.currentManager&&K.isRoom(o)&&o.isWritable&&O.currentManager.worker.insertImage(M)},lockImage:function(M,w){O.logger.info("[ApplianceMultiPlugin] lockImage"),O.currentManager&&K.isRoom(o)&&o.isWritable&&O.currentManager.worker.lockImage(M,w)},completeImageUpload:function(M,w){O.logger.info("[ApplianceMultiPlugin] completeImageUpload"),O.currentManager&&K.isRoom(o)&&o.isWritable&&O.currentManager.worker.completeImageUpload(M,w)},getImagesInformation:function(M){return O.logger.info("[ApplianceMultiPlugin] completeImageUpload"),O.currentManager&&K.isRoom(o)&&o.isWritable?O.currentManager.worker.getImagesInformation(M):[]},callbacks:()=>(O.logger.info("[ApplianceMultiPlugin] callbacks bind"),{...o.callbacks,on:g._callbacksOn.bind(g),once:g._callbacksOnce.bind(g),off:g._callbacksOff.bind(g)}),destroy(){O.currentManager&&(O.logger.info("[ApplianceMultiPlugin] destroy"),O.currentManager.destroy(),O.currentManager=void 0)},setMemberState(M){O.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)),l.call(e.mainView,M)}},d=(M,w)=>{if(O.logger.info(`[ApplianceMultiPlugin] injectMethodToObject ${w}`),typeof M[w]=="function"||typeof M[w]>"u"){M[w]=g[w];return}w==="callbacks"&&(M.callbacks.on=g._callbacksOn.bind(g),M.callbacks.off=g._callbacksOff.bind(g),M.callbacks.once=g._callbacksOnce.bind(g))};return d(e,"undo"),d(e,"redo"),d(e,"cleanCurrentScene"),d(e,"insertImage"),d(e,"completeImageUpload"),d(e,"lockImage"),d(o,"getImagesInformation"),d(o,"callbacks"),d(o,"screenshotToCanvasAsync"),d(o,"getBoundingRectAsync"),d(o,"scenePreviewAsync"),d(e.mainView,"setMemberState"),{...g,callbacks:g.callbacks()}}static onCreate(e){e&&O.currentManager&&(O.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,i){await e.createInvisiblePlugin(O,{});let o=e.getInvisiblePlugin(i);return o||(o=await O.createApplianceMultiPlugin(e,i)),o}get isReplay(){return K.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i,o;if(K.isRoom(e)){const r=e.state;(i=O.currentManager)==null||i.onMemberChange(r.memberState),(o=O.currentManager)==null||o.onRoomMembersChange(r.roomMembers)}this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),this.displayer.callbacks.on("onPhaseChanged",this.onPhaseChanged)}destroy(){var e;O.logger.info("[ApplianceMultiPlugin] passive destroy"),(e=O.currentManager)==null||e.destroy(),O.currentManager=void 0}};p(O,"kind","appliance-multi-plugin"),p(O,"currentManager"),p(O,"logger",{info:console.log,warn:console.warn,error:console.error}),p(O,"options",Ho),p(O,"createCurrentManager",(e,i,o)=>{if(O.currentManager&&O.currentManager.destroy(),i&&e){const r={plugin:o,displayer:e.displayer,options:i},s=new ft(r);O.logger.info("[ApplianceMultiPlugin] refresh ApplianceMultiManager object"),s.setWindowManager(e),O.currentManager=s}});let Jt=O;class lp extends Ne{constructor(e,i){super(e,i);p(this,"width",1e3);p(this,"height",1e3);p(this,"dpr",1);p(this,"vDom");p(this,"viewId","mainView");p(this,"eventTragetElement");p(this,"snapshotContainerRef");p(this,"canvasContainerRef",u.createRef());p(this,"canvasTopRef",u.createRef());p(this,"canvasServiceFloatRef",u.createRef());p(this,"canvasFloatRef",u.createRef());p(this,"canvasBgRef",u.createRef());p(this,"floatBarRef",u.createRef());p(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=Re()),e&&i&&this.canvasContainerRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Re(),this.width=e,this.height=i),e&&i&&this.canvasBgRef.current&&(e!==this.width||i!==this.height)&&(this.dpr=Re(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="",_t.render(u.createElement(ui,{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 Ye extends qe{constructor(e){super(e);p(this,"focuedViewId");p(this,"control");p(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new lp(this.control,ge.InternalMsgEmitter);this.focuedViewId=Ne.viewId;const{width:i,height:o,dpr:r}=e,s={dpr:r,originalPoint:[i/2,o/2],offscreenCanvasOpt:{...Ye.defaultScreenCanvasOpt,width:i,height:o},layerOpt:{...Ye.defaultLayerOpt,width:i,height:o},cameraOpt:{...Ye.defaultCameraOpt,width:i,height:o}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:c,...l}=a.camera;s.cameraOpt={...s.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:Ne.viewId,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 o;const i=this.getView(e);if(i){const{width:r,height:s,dpr:a}=i.displayer,c={dpr:a,originalPoint:[r/2,s/2],offscreenCanvasOpt:{...Ye.defaultScreenCanvasOpt,width:r,height:s},layerOpt:{...Ye.defaultLayerOpt,width:r,height:s},cameraOpt:{...Ye.defaultCameraOpt,width:r,height:s}};if(i.viewData){const{scale:l,...h}=i.viewData.camera;c.cameraOpt={...c.cameraOpt,...h,scale:l===1/0?1:l}}this.control.worker.isActive||await this.control.activeWorker(),(o=this.control.worker)==null||o.createViewWorker(e,c),i.focusScenePath&&this.control.collector&&this.control.worker.pullServiceData(e,i.focusScenePath)}}}class ke extends ge{constructor(e){super(e);p(this,"viewContainerManager");p(this,"divMainView");p(this,"onCameraChange",ve(e=>{this.viewContainerManager.setFocuedViewCameraOpt(e)},20,{leading:!1}));const i={control:this,internalMsgEmitter:ke.InternalMsgEmitter};this.viewContainerManager=new Ye(i)}init(){ke.InternalMsgEmitter.on(W.BindMainView,e=>{this.divMainView=e,this.plugin&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView()})}activePlugin(){this.plugin&&this.divMainView&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView(),this.collector&&(this.collector.addStorageStateListener(e=>{var i,o;if((i=this.collector)!=null&&i.storage&&Object.keys(this.collector.storage).length===0){(o=this.worker)==null||o.clearViewScenePath("mainView",!0);return}if(e){const r=new Map;Object.keys(e).forEach(s=>{var c;const a=e[s];if(a){const l=a.viewId,h=r.get(l)||new Set;h.add(s),r.set(l,h),(c=this.worker)==null||c.onServiceDerive(s,a)}});for(const[s,a]of r.entries())ke.InternalMsgEmitter.emit("excludeIds",[...a],s)}}),this.room&&(this.roomMember.onUidChangeHook(e=>{var i,o,r,s;if((i=this.collector)!=null&&i.serviceStorage){const a=[];this.viewContainerManager.getAllViews().forEach(c=>{var l,h,g;if(c&&c.focusScenePath&&((l=this.collector)!=null&&l.serviceStorage[c.id])&&((h=this.collector)!=null&&h.serviceStorage[c.id][c.focusScenePath])){const d=Object.keys((g=this.collector)==null?void 0:g.serviceStorage[c.id][c.focusScenePath]).filter(M=>{var w;return(w=this.collector)==null?void 0:w.isSelector(M)}).map(M=>({viewId:c.id,scenePath:c.focusScenePath,key:M}));d.length&&a.push(...d)}}),a.forEach(({key:c,viewId:l,scenePath:h})=>{var d,M;const g=(d=this.collector)==null?void 0:d.getUidFromKey(c);g&&!e.online.includes(g)&&((M=this.collector)==null||M.updateValue(c,void 0,{isAfterUpdate:!0,viewId:l,scenePath:h}))})}(r=(o=this.cursor)==null?void 0:o.eventCollector)!=null&&r.serviceStorage&&Object.keys((s=this.cursor)==null?void 0:s.eventCollector.serviceStorage).forEach(c=>{var l,h;e.online.includes(c)||(h=(l=this.cursor)==null?void 0:l.eventCollector)==null||h.clearValue(c)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath)})))}async activeWorker(){await this.worker.init()}}const k=class k extends K.InvisiblePlugin{constructor(){super(...arguments);p(this,"updateRoomWritable",()=>{var e;(e=k.currentManager)==null||e.onWritableChange(this.displayer.isWritable)});p(this,"roomStateChangeListener",async e=>{var i,o;k.currentManager instanceof ke&&(e.cameraState&&k.currentManager.onCameraChange(e.cameraState),e.sceneState&&k.currentManager.onSceneChange(e.sceneState.scenePath,"mainView")),!(K.isRoom(this.displayer)&&!this.displayer.isWritable)&&(e.memberState&&((i=k.currentManager)==null||i.onMemberChange(e.memberState)),e!=null&&e.roomMembers&&((o=k.currentManager)==null||o.onRoomMembersChange(e.roomMembers)))})}static async getInstance(e,i){const o=e.callbacks.on,r=e.callbacks.off,s=e.callbacks.once,a=e.cleanCurrentScene.bind(e),c=e.setMemberState.bind(e),l={displayer:e,currentManager:k.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(d){var N;k.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const M=e.getBoundingRect(d),w=await((N=k.currentManager)==null?void 0:N.getBoundingRect(d));return!M.width||!M.height?w:Po(M,w)},screenshotToCanvasAsync:async function(d,M,w,N,f,v){var L;k.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let y=w,I=N,m=f.scale;y>this.maxScreenshotWidth&&(m=this.maxScreenshotWidth/y*m,y=this.maxScreenshotWidth),I>this.maxScreenshotHeight&&(m=Math.min(this.maxScreenshotHeight/I*m,m),I=this.maxScreenshotHeight),f.scale=m;const z=document.createElement("canvas"),j=z.getContext("2d");z.width=y*(v||1),z.height=I*(v||1),j&&(e.screenshotToCanvas(j,M,y,I,f,v),d.drawImage(z,Math.floor((w-y)/2),Math.floor((N-I)/2),y*(v||1),I*(v||1),0,0,y,I),z.remove()),k.currentManager&&await((L=k.currentManager)==null?void 0:L.screenshotToCanvas(d,M,y,I,f,Math.floor((w-y)/2),Math.floor((N-I)/2)))},scenePreviewAsync:async function(d,M,w,N,f){k.logger.info("[ApplianceSinglePlugin] scenePreview"),e.scenePreview(d,M,w,N,f);const v=document.createElement("img");v.style.position="absolute",v.style.top="0px",v.style.left="0px",v.style.width="100%",v.style.height="100%",v.style.pointerEvents="none",M.append(v),getComputedStyle(M).position||(M.style.position="relative"),k.currentManager&&await k.currentManager.scenePreview(d,v)},_callbacksOn:function(d,M){k.logger.info(`[ApplianceSinglePlugin] callbacks ${d}`),(d==="onCanUndoStepsUpdate"||d==="onCanRedoStepsUpdate")&&K.isRoom(e)&&e.isWritable?ke.InternalMsgEmitter.on(d,M):o.call(e.callbacks,d,M)},_callbacksOnce:function(d,M){k.logger.info(`[ApplianceSinglePlugin] callbacks ${d}`),(d==="onCanUndoStepsUpdate"||d==="onCanRedoStepsUpdate")&&K.isRoom(e)&&e.isWritable?ke.InternalMsgEmitter.on(d,M):s.call(e.callbacks,d,M)},_callbacksOff:function(d,M){k.logger.info(`[ApplianceSinglePlugin] callbacks ${d}`),(d==="onCanUndoStepsUpdate"||d==="onCanRedoStepsUpdate")&&K.isRoom(e)&&e.isWritable?ke.InternalMsgEmitter.off(d,M):r.call(e.callbacks,d,M)},undo:function(){return k.logger.info("[ApplianceSinglePlugin] undo"),k.currentManager&&K.isRoom(e)&&!e.disableSerialization?k.currentManager.viewContainerManager.undo():0},redo:function(){return k.logger.info("[ApplianceSinglePlugin] redo"),k.currentManager&&K.isRoom(e)&&!e.disableSerialization?k.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(d){k.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),k.currentManager&&K.isRoom(e)&&e.isWritable&&(k.currentManager.cleanCurrentScene(),a.call(e,d))},insertImage:function(d){k.logger.info("[ApplianceSinglePlugin] insertImage"),k.currentManager&&K.isRoom(e)&&e.isWritable&&k.currentManager.worker.insertImage(d)},lockImage:function(d,M){k.logger.info("[ApplianceSinglePlugin] lockImage"),k.currentManager&&K.isRoom(e)&&e.isWritable&&k.currentManager.worker.lockImage(d,M)},completeImageUpload:function(d,M){k.logger.info("[ApplianceSinglePlugin] completeImageUpload"),k.currentManager&&K.isRoom(e)&&e.isWritable&&k.currentManager.worker.completeImageUpload(d,M)},getImagesInformation:function(d){return k.logger.info("[ApplianceSinglePlugin] completeImageUpload"),k.currentManager&&K.isRoom(e)&&e.isWritable?k.currentManager.worker.getImagesInformation(d):[]},callbacks:()=>({...e.callbacks,on:l._callbacksOn.bind(l),once:l._callbacksOnce.bind(l),off:l._callbacksOff.bind(l)}),destroy(){k.currentManager&&(k.logger.info("[ApplianceSinglePlugin] destroy"),k.currentManager.destroy(),k.currentManager=void 0,k.cursorAdapter=void 0)},setMemberState(d){k.logger.info("[ApplianceSinglePlugin] setMemberState"),Object.keys(d).includes("currentApplianceName")&&(d.currentApplianceName&&d.currentApplianceName===Z.laserPen&&(d.currentApplianceName=Z.pencil,d.useLaserPen=!0),d.currentApplianceName&&d.currentApplianceName===Z.pencil&&(d.useLaserPen=!1)),c(d)}};i!=null&&i.logger&&(k.logger=i.logger),i.options&&(k.options=i.options);let h=e.getInvisiblePlugin(k.kind);e&&h&&k.createCurrentManager(e,k.options,h),!h&&K.isRoom(e)&&(h=await k.createAppliancePlugin(e,k.kind)),h&&k.currentManager&&(k.currentManager.bindPlugin(h),h.init(e)),i!=null&&i.cursorAdapter&&(k.cursorAdapter=i.cursorAdapter),k.effectInstance();const g=(d,M)=>{if(k.logger.info(`[ApplianceSinglePlugin] injectMethodToObject ${M}`),typeof d[M]=="function"||typeof d[M]>"u"){d[M]=l[M];return}M==="callbacks"&&(d.callbacks.on=l._callbacksOn.bind(l),d.callbacks.off=l._callbacksOff.bind(l),d.callbacks.once=l._callbacksOnce.bind(l))};return g(e,"undo"),g(e,"redo"),g(e,"cleanCurrentScene"),g(e,"insertImage"),g(e,"completeImageUpload"),g(e,"lockImage"),g(e,"getImagesInformation"),g(e,"callbacks"),g(e,"screenshotToCanvasAsync"),g(e,"getBoundingRectAsync"),g(e,"scenePreviewAsync"),g(e,"setMemberState"),{...l,callbacks:l.callbacks()}}static onCreate(e){e&&k.currentManager&&(k.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,i){await e.createInvisiblePlugin(k,{});let o=e.getInvisiblePlugin(i);return o||(o=await k.createAppliancePlugin(e,i)),o}static effectInstance(){if(k.cursorAdapter){const e=k.cursorAdapter.onAddedCursor;k.cursorAdapter.onAddedCursor=function(i){i.onCursorMemberChanged=o=>{try{o.appliance===Z.pencil||o.appliance===Z.shape||o.appliance===Z.text||o.appliance===Z.arrow||o.appliance===Z.straight||o.appliance===Z.rectangle||o.appliance===Z.ellipse?i!=null&&i.divElement&&(i.divElement.style.display="none"):i!=null&&i.divElement&&(i.divElement.style.display="block")}catch{}},e.call(k.cursorAdapter,i)}}}get isReplay(){return K.isPlayer(this.displayer)}get callbackName(){return this.isReplay?"onPlayerStateChanged":"onRoomStateChanged"}init(e){var i;if(K.isRoom(e)){const o=e.state;o!=null&&o.memberState&&((i=k.currentManager)==null||i.onMemberChange(o.memberState))}this.displayer.callbacks.on(this.callbackName,this.roomStateChangeListener),this.displayer.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable)}destroy(){var e;k.logger.info("[ApplianceSinglePlugin] passive destroy"),(e=k.currentManager)==null||e.destroy(),k.currentManager=void 0,k.cursorAdapter=void 0}};p(k,"kind","teaching-aids-single-plugin"),p(k,"cursorAdapter"),p(k,"currentManager"),p(k,"logger",{info:console.log,warn:console.warn,error:console.error}),p(k,"options",Ho),p(k,"createCurrentManager",(e,i,o)=>{k.currentManager&&k.currentManager.destroy();const r={plugin:o,displayer:e,options:i},s=new ke(r);s.init(),k.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),k.currentManager=s});let Kt=k;const Je=class Je extends u.Component{constructor(){super(...arguments);p(this,"mainViewRef",null)}componentDidMount(){Je.emiter||(Je.emiter=ke.InternalMsgEmitter),Je.emiter.emit(W.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}))}};p(Je,"emiter");let qt=Je;exports.ActiveContainerType=io;exports.ApplianceMultiPlugin=Jt;exports.ApplianceNames=Z;exports.ApplianceSigleWrapper=qt;exports.ApplianceSinglePlugin=Kt;exports.ECanvasContextType=zt;exports.ECanvasShowType=Le;exports.EDataType=G;exports.EPostMessageType=D;exports.EScaleType=fe;exports.EStrokeType=yt;exports.EToolsKey=T;exports.ElayerType=Fe;exports.EmitEventType=S;exports.EventMessageType=Qe;exports.EvevtWorkState=C;exports.EvevtWorkType=oo;exports.InternalMsgEmitterType=W;exports.Point2d=oe;exports.ShapeType=Ce;exports.Storage_Selector_key=b;exports.Storage_Splitter=Se;exports.Storage_ViewId_ALL=Eo;exports.Vec2d=x;exports.ViewContainerManager=qe;exports.average=qg;exports.cloneDeep=ce;exports.computRect=Ug;exports.fullWorker=Jo;exports.getRectFromPoints=li;exports.getRectRotated=Fg;exports.getRectRotatedPoints=Yo;exports.getRectScaleed=Qg;exports.getRectTranslated=Bg;exports.getRotatePoints=Zg;exports.getScalePoints=Hg;exports.getWHRatio=Jg;exports.isBoolean=me;exports.isEqual=le;exports.isIntersect=$g;exports.isIntersectForPoint=Ro;exports.isNumber=ue;exports.precise=Kg;exports.rotatePoints=Vg;exports.scalePoints=Gg;exports.subWorker=Ko;exports.throttle=ve;exports.transformToNormalData=ko;exports.transformToSerializableData=bo;