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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cdn/cdn.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r="/fullWorker-BLBicx.js",e="/subWorker-BWE2Rk.js";exports.fullWorkerUrl=r;exports.subWorkerUrl=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r="/fullWorker-CPNiBM.js",e="/subWorker-dfYGd0.js";exports.fullWorkerUrl=r;exports.subWorkerUrl=e;
@@ -396,7 +396,7 @@ _inherits(o,_e$default22);return _createClass(o,[{key:"texture",get:function get
396
396
  c=="length"||// Node.js 0.10 has enumerable non-index properties on buffers.
397
397
  n&&(c=="offset"||c=="parent")||// PhantomJS 2 has enumerable non-index properties on typed arrays.
398
398
  i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||// Skip index properties.
399
- Sc(c,s)))&&o.push(c);return o;}var _n=Pc,Oc=Object.prototype;function Ec(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Oc;return h===t;}var Ar=Ec;function Cc(h,r){return function(t){return h(r(t));};}var ti=Cc,Ac=ti,Rc=Ac(Object.keys,Object),Ic=Rc,wc=Ar,Lc=Ic,bc=Object.prototype,Dc=bc.hasOwnProperty;function Nc(h){if(!wc(h))return Lc(h);var r=[];for(var t in Object(h))Dc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Wc=Nc,Bc=Gn,Fc=Qn;function Uc(h){return h!=null&&Fc(h.length)&&!Bc(h);}var Rr=Uc,jc=_n,$c=Wc,zc=Rr;function Gc(h){return zc(h)?jc(h):$c(h);}var Ir=Gc,Hc=ar,Kc=Ir;function Yc(h,r){return h&&Hc(r,Kc(r),h);}var Vc=Yc;function kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Xc=kc,Jc=pe,Zc=Ar,Qc=Xc,qc=Object.prototype,_c=qc.hasOwnProperty;function tf(h){if(!Jc(h))return Qc(h);var r=Zc(h),t=[];for(var e in h)e=="constructor"&&(r||!_c.call(h,e))||t.push(e);return t;}var ef=tf,rf=_n,nf=ef,sf=Rr;function of(h){return sf(h)?rf(h,!0):nf(h);}var wr=of,af=ar,lf=wr;function cf(h,r){return h&&af(r,lf(r),h);}var ff=cf,ke={exports:{}};ke.exports;(function(h,r){var t=ie,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(c,m){if(m)return c.slice();var l=c.length,p=o?o(l):new c.constructor(l);return c.copy(p),p;}h.exports=s;})(ke,ke.exports);var hf=ke.exports;function uf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var df=uf;function pf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var ei=pf;function gf(){return[];}var ri=gf,mf=ei,vf=ri,yf=Object.prototype,Sf=yf.propertyIsEnumerable,rn=Object.getOwnPropertySymbols,xf=rn?function(h){return h==null?[]:(h=Object(h),mf(rn(h),function(r){return Sf.call(h,r);}));}:vf,Lr=xf,Tf=ar,Mf=Lr;function Pf(h,r){return Tf(h,Mf(h),r);}var Of=Pf;function Ef(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var br=Ef,Cf=ti,Af=Cf(Object.getPrototypeOf,Object),ni=Af,Rf=br,If=ni,wf=Lr,Lf=ri,bf=Object.getOwnPropertySymbols,Df=bf?function(h){for(var r=[];h;)Rf(r,wf(h)),h=If(h);return r;}:Lf,ii=Df,Nf=ar,Wf=ii;function Bf(h,r){return Nf(h,Wf(h),r);}var Ff=Bf,Uf=br,jf=$e;function $f(h,r,t){var e=r(h);return jf(h)?e:Uf(e,t(h));}var si=$f,zf=si,Gf=Lr,Hf=Ir;function Kf(h){return zf(h,Hf,Gf);}var oi=Kf,Yf=si,Vf=ii,kf=wr;function Xf(h){return Yf(h,kf,Vf);}var Jf=Xf,Zf=ve,Qf=ie,qf=Zf(Qf,"DataView"),_f=qf,th=ve,eh=ie,rh=th(eh,"Promise"),nh=rh,ih=ve,sh=ie,oh=ih(sh,"Set"),ai=oh,ah=ve,lh=ie,ch=ah(lh,"WeakMap"),fh=ch,gr=_f,mr=Or,vr=nh,yr=ai,Sr=fh,li=me,we=Hn,nn="[object Map]",hh="[object Object]",sn="[object Promise]",on="[object Set]",an="[object WeakMap]",ln="[object DataView]",uh=we(gr),dh=we(mr),ph=we(vr),gh=we(yr),mh=we(Sr),ge=li;(gr&&ge(new gr(new ArrayBuffer(1)))!=ln||mr&&ge(new mr())!=nn||vr&&ge(vr.resolve())!=sn||yr&&ge(new yr())!=on||Sr&&ge(new Sr())!=an)&&(ge=function ge(h){var r=li(h),t=r==hh?h.constructor:void 0,e=t?we(t):"";if(e)switch(e){case uh:return ln;case dh:return nn;case ph:return sn;case gh:return on;case mh:return an;}return r;});var cr=ge,vh=Object.prototype,yh=vh.hasOwnProperty;function Sh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&yh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var xh=Sh,Th=ie,Mh=Th.Uint8Array,ci=Mh,cn=ci;function Ph(h){var r=new h.constructor(h.byteLength);return new cn(r).set(new cn(h)),r;}var Dr=Ph,Oh=Dr;function Eh(h,r){var t=r?Oh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ch=Eh,Ah=/\w*$/;function Rh(h){var r=new h.constructor(h.source,Ah.exec(h));return r.lastIndex=h.lastIndex,r;}var Ih=Rh,fn=je,hn=fn?fn.prototype:void 0,un=hn?hn.valueOf:void 0;function wh(h){return un?Object(un.call(h)):{};}var Lh=wh,bh=Dr;function Dh(h,r){var t=r?bh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Nh=Dh,Wh=Dr,Bh=Ch,Fh=Ih,Uh=Lh,jh=Nh,$h="[object Boolean]",zh="[object Date]",Gh="[object Map]",Hh="[object Number]",Kh="[object RegExp]",Yh="[object Set]",Vh="[object String]",kh="[object Symbol]",Xh="[object ArrayBuffer]",Jh="[object DataView]",Zh="[object Float32Array]",Qh="[object Float64Array]",qh="[object Int8Array]",_h="[object Int16Array]",tu="[object Int32Array]",eu="[object Uint8Array]",ru="[object Uint8ClampedArray]",nu="[object Uint16Array]",iu="[object Uint32Array]";function su(h,r,t){var e=h.constructor;switch(r){case Xh:return Wh(h);case $h:case zh:return new e(+h);case Jh:return Bh(h,t);case Zh:case Qh:case qh:case _h:case tu:case eu:case ru:case nu:case iu:return jh(h,t);case Gh:return new e();case Hh:case Vh:return new e(h);case Kh:return Fh(h);case Yh:return new e();case kh:return Uh(h);}}var ou=su,au=pe,dn=Object.create,lu=/* @__PURE__ */function(){function h(){}return function(r){if(!au(r))return{};if(dn)return dn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),cu=lu,fu=cu,hu=ni,uu=Ar;function du(h){return typeof h.constructor=="function"&&!uu(h)?fu(hu(h)):{};}var pu=du,gu=cr,mu=oe,vu="[object Map]";function yu(h){return mu(h)&&gu(h)==vu;}var Su=yu,xu=Su,Tu=lr,pn=Cr,gn=pn&&pn.isMap,Mu=gn?Tu(gn):xu,Pu=Mu,Ou=cr,Eu=oe,Cu="[object Set]";function Au(h){return Eu(h)&&Ou(h)==Cu;}var Ru=Au,Iu=Ru,wu=lr,mn=Cr,vn=mn&&mn.isSet,Lu=vn?wu(vn):Iu,fi=Lu,bu=/* @__PURE__ */de(fi),Du=Yn,Nu=il,Wu=Xn,Bu=Vc,Fu=ff,Uu=hf,ju=df,$u=Of,zu=Ff,Gu=oi,Hu=Jf,Ku=cr,Yu=xh,Vu=ou,ku=pu,Xu=$e,Ju=Er,Zu=Pu,Qu=pe,qu=fi,_u=Ir,td=wr,ed=1,rd=2,nd=4,hi="[object Arguments]",id="[object Array]",sd="[object Boolean]",od="[object Date]",ad="[object Error]",ui="[object Function]",ld="[object GeneratorFunction]",cd="[object Map]",fd="[object Number]",di="[object Object]",hd="[object RegExp]",ud="[object Set]",dd="[object String]",pd="[object Symbol]",gd="[object WeakMap]",md="[object ArrayBuffer]",vd="[object DataView]",yd="[object Float32Array]",Sd="[object Float64Array]",xd="[object Int8Array]",Td="[object Int16Array]",Md="[object Int32Array]",Pd="[object Uint8Array]",Od="[object Uint8ClampedArray]",Ed="[object Uint16Array]",Cd="[object Uint32Array]",Ut={};Ut[hi]=Ut[id]=Ut[md]=Ut[vd]=Ut[sd]=Ut[od]=Ut[yd]=Ut[Sd]=Ut[xd]=Ut[Td]=Ut[Md]=Ut[cd]=Ut[fd]=Ut[di]=Ut[hd]=Ut[ud]=Ut[dd]=Ut[pd]=Ut[Pd]=Ut[Od]=Ut[Ed]=Ut[Cd]=!0;Ut[ad]=Ut[ui]=Ut[gd]=!1;function He(h,r,t,e,n,i){var a,o=r&ed,s=r&rd,c=r&nd;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Qu(h))return h;var m=Xu(h);if(m){if(a=Yu(h),!o)return ju(h,a);}else{var l=Ku(h),p=l==ui||l==ld;if(Ju(h))return Uu(h,o);if(l==di||l==hi||p&&!n){if(a=s||p?{}:ku(h),!o)return s?zu(h,Fu(a,h)):$u(h,Bu(a,h));}else{if(!Ut[l])return n?h:{};a=Vu(h,l,o);}}i||(i=new Du());var y=i.get(h);if(y)return y;i.set(h,a),qu(h)?h.forEach(function(v){a.add(He(v,r,t,v,h,i));}):Zu(h)&&h.forEach(function(v,T){a.set(T,He(v,r,t,T,h,i));});var P=c?s?Hu:Gu:s?td:_u,S=m?void 0:P(h);return Nu(S||h,function(v,T){S&&(T=v,v=h[T]),Wu(a,T,He(v,r,t,T,h,i));}),a;}var Ad=He,Rd=Ad,Id=1,wd=4;function Ld(h){return Rd(h,Id|wd);}var bd=Ld,Vt=/* @__PURE__ */de(bd);var pi="1.1.15-beta.2",Dd="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Dd,"@").concat(pi),window.__netlessUA=h;}var _t={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1024,maxImageHeight:1024},strokeWidth:{min:1,max:10}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(ye(e),"L").concat(ye(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=Se(e,n);return r?"M".concat(Se(h[0],h[1]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2]),"T").concat(i).concat(Se(h[t-1],h[0])).concat(Se(h[0],h[1]),"Z"):"M".concat(ye(h[0]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(ye(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);tt(this,"maxImageWidth",_t.pencilEraser.maxImageWidth);tt(this,"maxImageHeight",_t.pencilEraser.maxImageHeight);tt(this,"syncUnitTime",_t.syncOpt.interval);tt(this,"vNodes");tt(this,"drawLayer");tt(this,"fullLayer");tt(this,"workId");tt(this,"isDelete",!1);var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,c=r.zIndex,m=r.scale,l=r.angle,p=r.translate,y={};kt(c)&&(y.zIndex=c),s&&(y.pos=[s[0],s[1]]),m&&(y.scale=m),l&&(y.rotate=l),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r,t){var e=r.group,n=r.eraserlines,i=r.pos,a=r.layer,o=a.parent;if(!t)return;var c=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,m=e.getBoundingClientRect(),l=m.width*c*a.worldScaling[0],p=m.height*c*a.worldScaling[1];var y=1;(l>this.maxImageWidth||p>this.maxImageHeight)&&(y=Math.min(this.maxImageWidth/l,this.maxImageHeight/p));var P=a.getAttribute("scale");P=[P[0]*y,P[1]*y];var S=a.parent.parent,v=a.getAttribute("translate"),T=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,// desynchronized: true,
399
+ Sc(c,s)))&&o.push(c);return o;}var _n=Pc,Oc=Object.prototype;function Ec(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Oc;return h===t;}var Ar=Ec;function Cc(h,r){return function(t){return h(r(t));};}var ti=Cc,Ac=ti,Rc=Ac(Object.keys,Object),Ic=Rc,wc=Ar,Lc=Ic,bc=Object.prototype,Dc=bc.hasOwnProperty;function Nc(h){if(!wc(h))return Lc(h);var r=[];for(var t in Object(h))Dc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Wc=Nc,Bc=Gn,Fc=Qn;function Uc(h){return h!=null&&Fc(h.length)&&!Bc(h);}var Rr=Uc,jc=_n,$c=Wc,zc=Rr;function Gc(h){return zc(h)?jc(h):$c(h);}var Ir=Gc,Hc=ar,Kc=Ir;function Yc(h,r){return h&&Hc(r,Kc(r),h);}var Vc=Yc;function kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Xc=kc,Jc=pe,Zc=Ar,Qc=Xc,qc=Object.prototype,_c=qc.hasOwnProperty;function tf(h){if(!Jc(h))return Qc(h);var r=Zc(h),t=[];for(var e in h)e=="constructor"&&(r||!_c.call(h,e))||t.push(e);return t;}var ef=tf,rf=_n,nf=ef,sf=Rr;function of(h){return sf(h)?rf(h,!0):nf(h);}var wr=of,af=ar,lf=wr;function cf(h,r){return h&&af(r,lf(r),h);}var ff=cf,ke={exports:{}};ke.exports;(function(h,r){var t=ie,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(c,m){if(m)return c.slice();var l=c.length,p=o?o(l):new c.constructor(l);return c.copy(p),p;}h.exports=s;})(ke,ke.exports);var hf=ke.exports;function uf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var df=uf;function pf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var ei=pf;function gf(){return[];}var ri=gf,mf=ei,vf=ri,yf=Object.prototype,Sf=yf.propertyIsEnumerable,rn=Object.getOwnPropertySymbols,xf=rn?function(h){return h==null?[]:(h=Object(h),mf(rn(h),function(r){return Sf.call(h,r);}));}:vf,Lr=xf,Tf=ar,Mf=Lr;function Pf(h,r){return Tf(h,Mf(h),r);}var Of=Pf;function Ef(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var br=Ef,Cf=ti,Af=Cf(Object.getPrototypeOf,Object),ni=Af,Rf=br,If=ni,wf=Lr,Lf=ri,bf=Object.getOwnPropertySymbols,Df=bf?function(h){for(var r=[];h;)Rf(r,wf(h)),h=If(h);return r;}:Lf,ii=Df,Nf=ar,Wf=ii;function Bf(h,r){return Nf(h,Wf(h),r);}var Ff=Bf,Uf=br,jf=$e;function $f(h,r,t){var e=r(h);return jf(h)?e:Uf(e,t(h));}var si=$f,zf=si,Gf=Lr,Hf=Ir;function Kf(h){return zf(h,Hf,Gf);}var oi=Kf,Yf=si,Vf=ii,kf=wr;function Xf(h){return Yf(h,kf,Vf);}var Jf=Xf,Zf=ve,Qf=ie,qf=Zf(Qf,"DataView"),_f=qf,th=ve,eh=ie,rh=th(eh,"Promise"),nh=rh,ih=ve,sh=ie,oh=ih(sh,"Set"),ai=oh,ah=ve,lh=ie,ch=ah(lh,"WeakMap"),fh=ch,gr=_f,mr=Or,vr=nh,yr=ai,Sr=fh,li=me,we=Hn,nn="[object Map]",hh="[object Object]",sn="[object Promise]",on="[object Set]",an="[object WeakMap]",ln="[object DataView]",uh=we(gr),dh=we(mr),ph=we(vr),gh=we(yr),mh=we(Sr),ge=li;(gr&&ge(new gr(new ArrayBuffer(1)))!=ln||mr&&ge(new mr())!=nn||vr&&ge(vr.resolve())!=sn||yr&&ge(new yr())!=on||Sr&&ge(new Sr())!=an)&&(ge=function ge(h){var r=li(h),t=r==hh?h.constructor:void 0,e=t?we(t):"";if(e)switch(e){case uh:return ln;case dh:return nn;case ph:return sn;case gh:return on;case mh:return an;}return r;});var cr=ge,vh=Object.prototype,yh=vh.hasOwnProperty;function Sh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&yh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var xh=Sh,Th=ie,Mh=Th.Uint8Array,ci=Mh,cn=ci;function Ph(h){var r=new h.constructor(h.byteLength);return new cn(r).set(new cn(h)),r;}var Dr=Ph,Oh=Dr;function Eh(h,r){var t=r?Oh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ch=Eh,Ah=/\w*$/;function Rh(h){var r=new h.constructor(h.source,Ah.exec(h));return r.lastIndex=h.lastIndex,r;}var Ih=Rh,fn=je,hn=fn?fn.prototype:void 0,un=hn?hn.valueOf:void 0;function wh(h){return un?Object(un.call(h)):{};}var Lh=wh,bh=Dr;function Dh(h,r){var t=r?bh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Nh=Dh,Wh=Dr,Bh=Ch,Fh=Ih,Uh=Lh,jh=Nh,$h="[object Boolean]",zh="[object Date]",Gh="[object Map]",Hh="[object Number]",Kh="[object RegExp]",Yh="[object Set]",Vh="[object String]",kh="[object Symbol]",Xh="[object ArrayBuffer]",Jh="[object DataView]",Zh="[object Float32Array]",Qh="[object Float64Array]",qh="[object Int8Array]",_h="[object Int16Array]",tu="[object Int32Array]",eu="[object Uint8Array]",ru="[object Uint8ClampedArray]",nu="[object Uint16Array]",iu="[object Uint32Array]";function su(h,r,t){var e=h.constructor;switch(r){case Xh:return Wh(h);case $h:case zh:return new e(+h);case Jh:return Bh(h,t);case Zh:case Qh:case qh:case _h:case tu:case eu:case ru:case nu:case iu:return jh(h,t);case Gh:return new e();case Hh:case Vh:return new e(h);case Kh:return Fh(h);case Yh:return new e();case kh:return Uh(h);}}var ou=su,au=pe,dn=Object.create,lu=/* @__PURE__ */function(){function h(){}return function(r){if(!au(r))return{};if(dn)return dn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),cu=lu,fu=cu,hu=ni,uu=Ar;function du(h){return typeof h.constructor=="function"&&!uu(h)?fu(hu(h)):{};}var pu=du,gu=cr,mu=oe,vu="[object Map]";function yu(h){return mu(h)&&gu(h)==vu;}var Su=yu,xu=Su,Tu=lr,pn=Cr,gn=pn&&pn.isMap,Mu=gn?Tu(gn):xu,Pu=Mu,Ou=cr,Eu=oe,Cu="[object Set]";function Au(h){return Eu(h)&&Ou(h)==Cu;}var Ru=Au,Iu=Ru,wu=lr,mn=Cr,vn=mn&&mn.isSet,Lu=vn?wu(vn):Iu,fi=Lu,bu=/* @__PURE__ */de(fi),Du=Yn,Nu=il,Wu=Xn,Bu=Vc,Fu=ff,Uu=hf,ju=df,$u=Of,zu=Ff,Gu=oi,Hu=Jf,Ku=cr,Yu=xh,Vu=ou,ku=pu,Xu=$e,Ju=Er,Zu=Pu,Qu=pe,qu=fi,_u=Ir,td=wr,ed=1,rd=2,nd=4,hi="[object Arguments]",id="[object Array]",sd="[object Boolean]",od="[object Date]",ad="[object Error]",ui="[object Function]",ld="[object GeneratorFunction]",cd="[object Map]",fd="[object Number]",di="[object Object]",hd="[object RegExp]",ud="[object Set]",dd="[object String]",pd="[object Symbol]",gd="[object WeakMap]",md="[object ArrayBuffer]",vd="[object DataView]",yd="[object Float32Array]",Sd="[object Float64Array]",xd="[object Int8Array]",Td="[object Int16Array]",Md="[object Int32Array]",Pd="[object Uint8Array]",Od="[object Uint8ClampedArray]",Ed="[object Uint16Array]",Cd="[object Uint32Array]",Ut={};Ut[hi]=Ut[id]=Ut[md]=Ut[vd]=Ut[sd]=Ut[od]=Ut[yd]=Ut[Sd]=Ut[xd]=Ut[Td]=Ut[Md]=Ut[cd]=Ut[fd]=Ut[di]=Ut[hd]=Ut[ud]=Ut[dd]=Ut[pd]=Ut[Pd]=Ut[Od]=Ut[Ed]=Ut[Cd]=!0;Ut[ad]=Ut[ui]=Ut[gd]=!1;function He(h,r,t,e,n,i){var a,o=r&ed,s=r&rd,c=r&nd;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Qu(h))return h;var m=Xu(h);if(m){if(a=Yu(h),!o)return ju(h,a);}else{var l=Ku(h),p=l==ui||l==ld;if(Ju(h))return Uu(h,o);if(l==di||l==hi||p&&!n){if(a=s||p?{}:ku(h),!o)return s?zu(h,Fu(a,h)):$u(h,Bu(a,h));}else{if(!Ut[l])return n?h:{};a=Vu(h,l,o);}}i||(i=new Du());var y=i.get(h);if(y)return y;i.set(h,a),qu(h)?h.forEach(function(v){a.add(He(v,r,t,v,h,i));}):Zu(h)&&h.forEach(function(v,T){a.set(T,He(v,r,t,T,h,i));});var P=c?s?Hu:Gu:s?td:_u,S=m?void 0:P(h);return Nu(S||h,function(v,T){S&&(T=v,v=h[T]),Wu(a,T,He(v,r,t,T,h,i));}),a;}var Ad=He,Rd=Ad,Id=1,wd=4;function Ld(h){return Rd(h,Id|wd);}var bd=Ld,Vt=/* @__PURE__ */de(bd);var pi="1.1.15-beta.3",Dd="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Dd,"@").concat(pi),window.__netlessUA=h;}var _t={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(ye(e),"L").concat(ye(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=Se(e,n);return r?"M".concat(Se(h[0],h[1]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2]),"T").concat(i).concat(Se(h[t-1],h[0])).concat(Se(h[0],h[1]),"Z"):"M".concat(ye(h[0]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(ye(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);tt(this,"maxImageWidth",_t.pencilEraser.maxImageWidth);tt(this,"maxImageHeight",_t.pencilEraser.maxImageHeight);tt(this,"syncUnitTime",_t.syncOpt.interval);tt(this,"vNodes");tt(this,"drawLayer");tt(this,"fullLayer");tt(this,"workId");tt(this,"isDelete",!1);var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,c=r.zIndex,m=r.scale,l=r.angle,p=r.translate,y={};kt(c)&&(y.zIndex=c),s&&(y.pos=[s[0],s[1]]),m&&(y.scale=m),l&&(y.rotate=l),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r,t){var e=r.group,n=r.eraserlines,i=r.pos,a=r.layer,o=a.parent;if(!t)return;var c=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,m=e.getBoundingClientRect(),l=m.width*c*a.worldScaling[0],p=m.height*c*a.worldScaling[1];var y=1;(l>this.maxImageWidth||p>this.maxImageHeight)&&(y=Math.min(this.maxImageWidth/l,this.maxImageHeight/p));var P=a.getAttribute("scale");P=[P[0]*y,P[1]*y];var S=a.parent.parent,v=a.getAttribute("translate"),T=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,// desynchronized: true,
400
400
  bufferSize:500// depth: true,
401
401
  },P,v),f=e.cloneNode(!0);this.addEraserlines(f,n,i,!1),T.appendChild(f);var d=T.parent;d.render();var u=T.renderer.canvasRenderer,g=u.options.displayRatio,M=this.getGroupRect(f,g),C=M.x,A=M.y,L=M.w,O=M.h,w=u.context;if(!w)return!1;var b=w.getImageData(C,A,L,O);var I=this.isTransparentRectByCanvas(b);if(se(f,d),S.removeChild(d),I){this.isDelete=!0,b=null;return;}se(e,o);var R=this.createSpriteNode(b,y,g,a.worldScaling);e.append(R),o.deleteTexture(b),b=null;}},{key:"createVmRenderNode",value:function createVmRenderNode(r,t,e,n,i){var a=e.width,o=e.height,s="bitMap-".concat(r),c=t.layer(s,e),m=new Qt({anchor:[0.5,0.5],pos:[a*0.5,o*0.5],size:[a,o],name:"viewport",id:r});return m.setAttribute("scale",n),m.setAttribute("translate",i),c.append(m),m;}},{key:"getGroupRect",value:function getGroupRect(r,t){var e=r.getBoundingClientRect(),n={x:Math.floor(e.x-Jt.SafeBorderPadding),y:Math.floor(e.y-Jt.SafeBorderPadding),w:Math.floor(e.width+Jt.SafeBorderPadding*2),h:Math.floor(e.height+Jt.SafeBorderPadding*2)},i=Math.floor(n.x*t),a=Math.floor(n.y*t),o=Math.floor(n.w*t),s=Math.floor(n.h*t);return{x:i,y:a,w:o,h:s};}},{key:"addEraserlines",value:function addEraserlines(r,t,e){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!0;var _iterator13=_createForOfIteratorHelper(t),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var i=_step13.value;var a=i.thickness,o=i.op;var _iterator14=_createForOfIteratorHelper(o),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var s=_step14.value;var c=s.map(function(P,S){return S%2?P-e[1]:P-e[0];}),m=this.computEraserPoints(c,a),l=ae(m,!0),p={pos:[0,0],d:l,fillColor:"rgba(0,0,0,1)"},y=new le(p);y.addEventListener("beforerender",function(_ref165){var P=_ref165.detail;var S=P.context;n?S.blendFuncSeparate(S.ZERO,S.ZERO,S.ZERO,S.ZERO):S.globalCompositeOperation="destination-out";}),y.addEventListener("afterrender",function(_ref166){var P=_ref166.detail;var S=P.context;n?S.blendFuncSeparate(S.SRC_ALPHA,S.ONE_MINUS_SRC_ALPHA,S.ONE,S.ONE_MINUS_SRC_ALPHA):S.globalCompositeOperation="source-over";}),r.append(y);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"isTransparentRectByCanvas",value:function isTransparentRectByCanvas(r){var t=!0;for(var _e3=0;_e3<r.data.length;_e3+=4)if(r.data[_e3+3]!==0){t=!1;break;}return t;}},{key:"createSpriteNode",value:function createSpriteNode(r,t,e){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[1,1];var i=new OffscreenCanvas(r.width,r.height),a=i.getContext("2d");a&&a.putImageData(r,0,0);var o={name:"eraserTexture",anchor:[0.5,0.5],pos:[0,0],size:[r.width/e/n[0],r.height/e/n[1]],texture:i,scale:[1/t,1/t]};return new jn(o);}// private scaleImageData(imageData: ImageData, scale: number, ctx: CanvasRenderingContext2D) {
402
402
  // const scaled = ctx.createImageData(imageData.width * scale, imageData.height * scale);
@@ -396,7 +396,7 @@ _inherits(o,_e$default22);return _createClass(o,[{key:"texture",get:function get
396
396
  c=="length"||// Node.js 0.10 has enumerable non-index properties on buffers.
397
397
  n&&(c=="offset"||c=="parent")||// PhantomJS 2 has enumerable non-index properties on typed arrays.
398
398
  i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||// Skip index properties.
399
- Sc(c,s)))&&o.push(c);return o;}var _n=Pc,Oc=Object.prototype;function Ec(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Oc;return h===t;}var Ar=Ec;function Cc(h,r){return function(t){return h(r(t));};}var ti=Cc,Ac=ti,Rc=Ac(Object.keys,Object),Ic=Rc,wc=Ar,Lc=Ic,bc=Object.prototype,Dc=bc.hasOwnProperty;function Nc(h){if(!wc(h))return Lc(h);var r=[];for(var t in Object(h))Dc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Wc=Nc,Bc=Gn,Fc=Qn;function Uc(h){return h!=null&&Fc(h.length)&&!Bc(h);}var Rr=Uc,jc=_n,$c=Wc,zc=Rr;function Gc(h){return zc(h)?jc(h):$c(h);}var Ir=Gc,Hc=ar,Kc=Ir;function Yc(h,r){return h&&Hc(r,Kc(r),h);}var Vc=Yc;function kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Xc=kc,Jc=pe,Zc=Ar,Qc=Xc,qc=Object.prototype,_c=qc.hasOwnProperty;function tf(h){if(!Jc(h))return Qc(h);var r=Zc(h),t=[];for(var e in h)e=="constructor"&&(r||!_c.call(h,e))||t.push(e);return t;}var ef=tf,rf=_n,nf=ef,sf=Rr;function of(h){return sf(h)?rf(h,!0):nf(h);}var wr=of,af=ar,lf=wr;function cf(h,r){return h&&af(r,lf(r),h);}var ff=cf,ke={exports:{}};ke.exports;(function(h,r){var t=ie,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(c,m){if(m)return c.slice();var l=c.length,p=o?o(l):new c.constructor(l);return c.copy(p),p;}h.exports=s;})(ke,ke.exports);var hf=ke.exports;function uf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var df=uf;function pf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var ei=pf;function gf(){return[];}var ri=gf,mf=ei,vf=ri,yf=Object.prototype,Sf=yf.propertyIsEnumerable,rn=Object.getOwnPropertySymbols,xf=rn?function(h){return h==null?[]:(h=Object(h),mf(rn(h),function(r){return Sf.call(h,r);}));}:vf,Lr=xf,Tf=ar,Mf=Lr;function Pf(h,r){return Tf(h,Mf(h),r);}var Of=Pf;function Ef(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var br=Ef,Cf=ti,Af=Cf(Object.getPrototypeOf,Object),ni=Af,Rf=br,If=ni,wf=Lr,Lf=ri,bf=Object.getOwnPropertySymbols,Df=bf?function(h){for(var r=[];h;)Rf(r,wf(h)),h=If(h);return r;}:Lf,ii=Df,Nf=ar,Wf=ii;function Bf(h,r){return Nf(h,Wf(h),r);}var Ff=Bf,Uf=br,jf=$e;function $f(h,r,t){var e=r(h);return jf(h)?e:Uf(e,t(h));}var si=$f,zf=si,Gf=Lr,Hf=Ir;function Kf(h){return zf(h,Hf,Gf);}var oi=Kf,Yf=si,Vf=ii,kf=wr;function Xf(h){return Yf(h,kf,Vf);}var Jf=Xf,Zf=ve,Qf=ie,qf=Zf(Qf,"DataView"),_f=qf,th=ve,eh=ie,rh=th(eh,"Promise"),nh=rh,ih=ve,sh=ie,oh=ih(sh,"Set"),ai=oh,ah=ve,lh=ie,ch=ah(lh,"WeakMap"),fh=ch,gr=_f,mr=Or,vr=nh,yr=ai,Sr=fh,li=me,we=Hn,nn="[object Map]",hh="[object Object]",sn="[object Promise]",on="[object Set]",an="[object WeakMap]",ln="[object DataView]",uh=we(gr),dh=we(mr),ph=we(vr),gh=we(yr),mh=we(Sr),ge=li;(gr&&ge(new gr(new ArrayBuffer(1)))!=ln||mr&&ge(new mr())!=nn||vr&&ge(vr.resolve())!=sn||yr&&ge(new yr())!=on||Sr&&ge(new Sr())!=an)&&(ge=function ge(h){var r=li(h),t=r==hh?h.constructor:void 0,e=t?we(t):"";if(e)switch(e){case uh:return ln;case dh:return nn;case ph:return sn;case gh:return on;case mh:return an;}return r;});var cr=ge,vh=Object.prototype,yh=vh.hasOwnProperty;function Sh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&yh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var xh=Sh,Th=ie,Mh=Th.Uint8Array,ci=Mh,cn=ci;function Ph(h){var r=new h.constructor(h.byteLength);return new cn(r).set(new cn(h)),r;}var Dr=Ph,Oh=Dr;function Eh(h,r){var t=r?Oh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ch=Eh,Ah=/\w*$/;function Rh(h){var r=new h.constructor(h.source,Ah.exec(h));return r.lastIndex=h.lastIndex,r;}var Ih=Rh,fn=je,hn=fn?fn.prototype:void 0,un=hn?hn.valueOf:void 0;function wh(h){return un?Object(un.call(h)):{};}var Lh=wh,bh=Dr;function Dh(h,r){var t=r?bh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Nh=Dh,Wh=Dr,Bh=Ch,Fh=Ih,Uh=Lh,jh=Nh,$h="[object Boolean]",zh="[object Date]",Gh="[object Map]",Hh="[object Number]",Kh="[object RegExp]",Yh="[object Set]",Vh="[object String]",kh="[object Symbol]",Xh="[object ArrayBuffer]",Jh="[object DataView]",Zh="[object Float32Array]",Qh="[object Float64Array]",qh="[object Int8Array]",_h="[object Int16Array]",tu="[object Int32Array]",eu="[object Uint8Array]",ru="[object Uint8ClampedArray]",nu="[object Uint16Array]",iu="[object Uint32Array]";function su(h,r,t){var e=h.constructor;switch(r){case Xh:return Wh(h);case $h:case zh:return new e(+h);case Jh:return Bh(h,t);case Zh:case Qh:case qh:case _h:case tu:case eu:case ru:case nu:case iu:return jh(h,t);case Gh:return new e();case Hh:case Vh:return new e(h);case Kh:return Fh(h);case Yh:return new e();case kh:return Uh(h);}}var ou=su,au=pe,dn=Object.create,lu=/* @__PURE__ */function(){function h(){}return function(r){if(!au(r))return{};if(dn)return dn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),cu=lu,fu=cu,hu=ni,uu=Ar;function du(h){return typeof h.constructor=="function"&&!uu(h)?fu(hu(h)):{};}var pu=du,gu=cr,mu=oe,vu="[object Map]";function yu(h){return mu(h)&&gu(h)==vu;}var Su=yu,xu=Su,Tu=lr,pn=Cr,gn=pn&&pn.isMap,Mu=gn?Tu(gn):xu,Pu=Mu,Ou=cr,Eu=oe,Cu="[object Set]";function Au(h){return Eu(h)&&Ou(h)==Cu;}var Ru=Au,Iu=Ru,wu=lr,mn=Cr,vn=mn&&mn.isSet,Lu=vn?wu(vn):Iu,fi=Lu,bu=/* @__PURE__ */de(fi),Du=Yn,Nu=il,Wu=Xn,Bu=Vc,Fu=ff,Uu=hf,ju=df,$u=Of,zu=Ff,Gu=oi,Hu=Jf,Ku=cr,Yu=xh,Vu=ou,ku=pu,Xu=$e,Ju=Er,Zu=Pu,Qu=pe,qu=fi,_u=Ir,td=wr,ed=1,rd=2,nd=4,hi="[object Arguments]",id="[object Array]",sd="[object Boolean]",od="[object Date]",ad="[object Error]",ui="[object Function]",ld="[object GeneratorFunction]",cd="[object Map]",fd="[object Number]",di="[object Object]",hd="[object RegExp]",ud="[object Set]",dd="[object String]",pd="[object Symbol]",gd="[object WeakMap]",md="[object ArrayBuffer]",vd="[object DataView]",yd="[object Float32Array]",Sd="[object Float64Array]",xd="[object Int8Array]",Td="[object Int16Array]",Md="[object Int32Array]",Pd="[object Uint8Array]",Od="[object Uint8ClampedArray]",Ed="[object Uint16Array]",Cd="[object Uint32Array]",Ut={};Ut[hi]=Ut[id]=Ut[md]=Ut[vd]=Ut[sd]=Ut[od]=Ut[yd]=Ut[Sd]=Ut[xd]=Ut[Td]=Ut[Md]=Ut[cd]=Ut[fd]=Ut[di]=Ut[hd]=Ut[ud]=Ut[dd]=Ut[pd]=Ut[Pd]=Ut[Od]=Ut[Ed]=Ut[Cd]=!0;Ut[ad]=Ut[ui]=Ut[gd]=!1;function He(h,r,t,e,n,i){var a,o=r&ed,s=r&rd,c=r&nd;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Qu(h))return h;var m=Xu(h);if(m){if(a=Yu(h),!o)return ju(h,a);}else{var l=Ku(h),p=l==ui||l==ld;if(Ju(h))return Uu(h,o);if(l==di||l==hi||p&&!n){if(a=s||p?{}:ku(h),!o)return s?zu(h,Fu(a,h)):$u(h,Bu(a,h));}else{if(!Ut[l])return n?h:{};a=Vu(h,l,o);}}i||(i=new Du());var y=i.get(h);if(y)return y;i.set(h,a),qu(h)?h.forEach(function(v){a.add(He(v,r,t,v,h,i));}):Zu(h)&&h.forEach(function(v,T){a.set(T,He(v,r,t,T,h,i));});var P=c?s?Hu:Gu:s?td:_u,S=m?void 0:P(h);return Nu(S||h,function(v,T){S&&(T=v,v=h[T]),Wu(a,T,He(v,r,t,T,h,i));}),a;}var Ad=He,Rd=Ad,Id=1,wd=4;function Ld(h){return Rd(h,Id|wd);}var bd=Ld,Vt=/* @__PURE__ */de(bd);var pi="1.1.15-beta.2",Dd="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Dd,"@").concat(pi),window.__netlessUA=h;}var _t={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1024,maxImageHeight:1024},strokeWidth:{min:1,max:10}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(ye(e),"L").concat(ye(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=Se(e,n);return r?"M".concat(Se(h[0],h[1]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2]),"T").concat(i).concat(Se(h[t-1],h[0])).concat(Se(h[0],h[1]),"Z"):"M".concat(ye(h[0]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(ye(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);tt(this,"maxImageWidth",_t.pencilEraser.maxImageWidth);tt(this,"maxImageHeight",_t.pencilEraser.maxImageHeight);tt(this,"syncUnitTime",_t.syncOpt.interval);tt(this,"vNodes");tt(this,"drawLayer");tt(this,"fullLayer");tt(this,"workId");tt(this,"isDelete",!1);var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,c=r.zIndex,m=r.scale,l=r.angle,p=r.translate,y={};kt(c)&&(y.zIndex=c),s&&(y.pos=[s[0],s[1]]),m&&(y.scale=m),l&&(y.rotate=l),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r,t){var e=r.group,n=r.eraserlines,i=r.pos,a=r.layer,o=a.parent;if(!t)return;var c=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,m=e.getBoundingClientRect(),l=m.width*c*a.worldScaling[0],p=m.height*c*a.worldScaling[1];var y=1;(l>this.maxImageWidth||p>this.maxImageHeight)&&(y=Math.min(this.maxImageWidth/l,this.maxImageHeight/p));var P=a.getAttribute("scale");P=[P[0]*y,P[1]*y];var S=a.parent.parent,v=a.getAttribute("translate"),T=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,// desynchronized: true,
399
+ Sc(c,s)))&&o.push(c);return o;}var _n=Pc,Oc=Object.prototype;function Ec(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Oc;return h===t;}var Ar=Ec;function Cc(h,r){return function(t){return h(r(t));};}var ti=Cc,Ac=ti,Rc=Ac(Object.keys,Object),Ic=Rc,wc=Ar,Lc=Ic,bc=Object.prototype,Dc=bc.hasOwnProperty;function Nc(h){if(!wc(h))return Lc(h);var r=[];for(var t in Object(h))Dc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Wc=Nc,Bc=Gn,Fc=Qn;function Uc(h){return h!=null&&Fc(h.length)&&!Bc(h);}var Rr=Uc,jc=_n,$c=Wc,zc=Rr;function Gc(h){return zc(h)?jc(h):$c(h);}var Ir=Gc,Hc=ar,Kc=Ir;function Yc(h,r){return h&&Hc(r,Kc(r),h);}var Vc=Yc;function kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Xc=kc,Jc=pe,Zc=Ar,Qc=Xc,qc=Object.prototype,_c=qc.hasOwnProperty;function tf(h){if(!Jc(h))return Qc(h);var r=Zc(h),t=[];for(var e in h)e=="constructor"&&(r||!_c.call(h,e))||t.push(e);return t;}var ef=tf,rf=_n,nf=ef,sf=Rr;function of(h){return sf(h)?rf(h,!0):nf(h);}var wr=of,af=ar,lf=wr;function cf(h,r){return h&&af(r,lf(r),h);}var ff=cf,ke={exports:{}};ke.exports;(function(h,r){var t=ie,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(c,m){if(m)return c.slice();var l=c.length,p=o?o(l):new c.constructor(l);return c.copy(p),p;}h.exports=s;})(ke,ke.exports);var hf=ke.exports;function uf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var df=uf;function pf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var ei=pf;function gf(){return[];}var ri=gf,mf=ei,vf=ri,yf=Object.prototype,Sf=yf.propertyIsEnumerable,rn=Object.getOwnPropertySymbols,xf=rn?function(h){return h==null?[]:(h=Object(h),mf(rn(h),function(r){return Sf.call(h,r);}));}:vf,Lr=xf,Tf=ar,Mf=Lr;function Pf(h,r){return Tf(h,Mf(h),r);}var Of=Pf;function Ef(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var br=Ef,Cf=ti,Af=Cf(Object.getPrototypeOf,Object),ni=Af,Rf=br,If=ni,wf=Lr,Lf=ri,bf=Object.getOwnPropertySymbols,Df=bf?function(h){for(var r=[];h;)Rf(r,wf(h)),h=If(h);return r;}:Lf,ii=Df,Nf=ar,Wf=ii;function Bf(h,r){return Nf(h,Wf(h),r);}var Ff=Bf,Uf=br,jf=$e;function $f(h,r,t){var e=r(h);return jf(h)?e:Uf(e,t(h));}var si=$f,zf=si,Gf=Lr,Hf=Ir;function Kf(h){return zf(h,Hf,Gf);}var oi=Kf,Yf=si,Vf=ii,kf=wr;function Xf(h){return Yf(h,kf,Vf);}var Jf=Xf,Zf=ve,Qf=ie,qf=Zf(Qf,"DataView"),_f=qf,th=ve,eh=ie,rh=th(eh,"Promise"),nh=rh,ih=ve,sh=ie,oh=ih(sh,"Set"),ai=oh,ah=ve,lh=ie,ch=ah(lh,"WeakMap"),fh=ch,gr=_f,mr=Or,vr=nh,yr=ai,Sr=fh,li=me,we=Hn,nn="[object Map]",hh="[object Object]",sn="[object Promise]",on="[object Set]",an="[object WeakMap]",ln="[object DataView]",uh=we(gr),dh=we(mr),ph=we(vr),gh=we(yr),mh=we(Sr),ge=li;(gr&&ge(new gr(new ArrayBuffer(1)))!=ln||mr&&ge(new mr())!=nn||vr&&ge(vr.resolve())!=sn||yr&&ge(new yr())!=on||Sr&&ge(new Sr())!=an)&&(ge=function ge(h){var r=li(h),t=r==hh?h.constructor:void 0,e=t?we(t):"";if(e)switch(e){case uh:return ln;case dh:return nn;case ph:return sn;case gh:return on;case mh:return an;}return r;});var cr=ge,vh=Object.prototype,yh=vh.hasOwnProperty;function Sh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&yh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var xh=Sh,Th=ie,Mh=Th.Uint8Array,ci=Mh,cn=ci;function Ph(h){var r=new h.constructor(h.byteLength);return new cn(r).set(new cn(h)),r;}var Dr=Ph,Oh=Dr;function Eh(h,r){var t=r?Oh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ch=Eh,Ah=/\w*$/;function Rh(h){var r=new h.constructor(h.source,Ah.exec(h));return r.lastIndex=h.lastIndex,r;}var Ih=Rh,fn=je,hn=fn?fn.prototype:void 0,un=hn?hn.valueOf:void 0;function wh(h){return un?Object(un.call(h)):{};}var Lh=wh,bh=Dr;function Dh(h,r){var t=r?bh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Nh=Dh,Wh=Dr,Bh=Ch,Fh=Ih,Uh=Lh,jh=Nh,$h="[object Boolean]",zh="[object Date]",Gh="[object Map]",Hh="[object Number]",Kh="[object RegExp]",Yh="[object Set]",Vh="[object String]",kh="[object Symbol]",Xh="[object ArrayBuffer]",Jh="[object DataView]",Zh="[object Float32Array]",Qh="[object Float64Array]",qh="[object Int8Array]",_h="[object Int16Array]",tu="[object Int32Array]",eu="[object Uint8Array]",ru="[object Uint8ClampedArray]",nu="[object Uint16Array]",iu="[object Uint32Array]";function su(h,r,t){var e=h.constructor;switch(r){case Xh:return Wh(h);case $h:case zh:return new e(+h);case Jh:return Bh(h,t);case Zh:case Qh:case qh:case _h:case tu:case eu:case ru:case nu:case iu:return jh(h,t);case Gh:return new e();case Hh:case Vh:return new e(h);case Kh:return Fh(h);case Yh:return new e();case kh:return Uh(h);}}var ou=su,au=pe,dn=Object.create,lu=/* @__PURE__ */function(){function h(){}return function(r){if(!au(r))return{};if(dn)return dn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),cu=lu,fu=cu,hu=ni,uu=Ar;function du(h){return typeof h.constructor=="function"&&!uu(h)?fu(hu(h)):{};}var pu=du,gu=cr,mu=oe,vu="[object Map]";function yu(h){return mu(h)&&gu(h)==vu;}var Su=yu,xu=Su,Tu=lr,pn=Cr,gn=pn&&pn.isMap,Mu=gn?Tu(gn):xu,Pu=Mu,Ou=cr,Eu=oe,Cu="[object Set]";function Au(h){return Eu(h)&&Ou(h)==Cu;}var Ru=Au,Iu=Ru,wu=lr,mn=Cr,vn=mn&&mn.isSet,Lu=vn?wu(vn):Iu,fi=Lu,bu=/* @__PURE__ */de(fi),Du=Yn,Nu=il,Wu=Xn,Bu=Vc,Fu=ff,Uu=hf,ju=df,$u=Of,zu=Ff,Gu=oi,Hu=Jf,Ku=cr,Yu=xh,Vu=ou,ku=pu,Xu=$e,Ju=Er,Zu=Pu,Qu=pe,qu=fi,_u=Ir,td=wr,ed=1,rd=2,nd=4,hi="[object Arguments]",id="[object Array]",sd="[object Boolean]",od="[object Date]",ad="[object Error]",ui="[object Function]",ld="[object GeneratorFunction]",cd="[object Map]",fd="[object Number]",di="[object Object]",hd="[object RegExp]",ud="[object Set]",dd="[object String]",pd="[object Symbol]",gd="[object WeakMap]",md="[object ArrayBuffer]",vd="[object DataView]",yd="[object Float32Array]",Sd="[object Float64Array]",xd="[object Int8Array]",Td="[object Int16Array]",Md="[object Int32Array]",Pd="[object Uint8Array]",Od="[object Uint8ClampedArray]",Ed="[object Uint16Array]",Cd="[object Uint32Array]",Ut={};Ut[hi]=Ut[id]=Ut[md]=Ut[vd]=Ut[sd]=Ut[od]=Ut[yd]=Ut[Sd]=Ut[xd]=Ut[Td]=Ut[Md]=Ut[cd]=Ut[fd]=Ut[di]=Ut[hd]=Ut[ud]=Ut[dd]=Ut[pd]=Ut[Pd]=Ut[Od]=Ut[Ed]=Ut[Cd]=!0;Ut[ad]=Ut[ui]=Ut[gd]=!1;function He(h,r,t,e,n,i){var a,o=r&ed,s=r&rd,c=r&nd;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Qu(h))return h;var m=Xu(h);if(m){if(a=Yu(h),!o)return ju(h,a);}else{var l=Ku(h),p=l==ui||l==ld;if(Ju(h))return Uu(h,o);if(l==di||l==hi||p&&!n){if(a=s||p?{}:ku(h),!o)return s?zu(h,Fu(a,h)):$u(h,Bu(a,h));}else{if(!Ut[l])return n?h:{};a=Vu(h,l,o);}}i||(i=new Du());var y=i.get(h);if(y)return y;i.set(h,a),qu(h)?h.forEach(function(v){a.add(He(v,r,t,v,h,i));}):Zu(h)&&h.forEach(function(v,T){a.set(T,He(v,r,t,T,h,i));});var P=c?s?Hu:Gu:s?td:_u,S=m?void 0:P(h);return Nu(S||h,function(v,T){S&&(T=v,v=h[T]),Wu(a,T,He(v,r,t,T,h,i));}),a;}var Ad=He,Rd=Ad,Id=1,wd=4;function Ld(h){return Rd(h,Id|wd);}var bd=Ld,Vt=/* @__PURE__ */de(bd);var pi="1.1.15-beta.3",Dd="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Dd,"@").concat(pi),window.__netlessUA=h;}var _t={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(ye(e),"L").concat(ye(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=Se(e,n);return r?"M".concat(Se(h[0],h[1]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2]),"T").concat(i).concat(Se(h[t-1],h[0])).concat(Se(h[0],h[1]),"Z"):"M".concat(ye(h[0]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(ye(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);tt(this,"maxImageWidth",_t.pencilEraser.maxImageWidth);tt(this,"maxImageHeight",_t.pencilEraser.maxImageHeight);tt(this,"syncUnitTime",_t.syncOpt.interval);tt(this,"vNodes");tt(this,"drawLayer");tt(this,"fullLayer");tt(this,"workId");tt(this,"isDelete",!1);var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,c=r.zIndex,m=r.scale,l=r.angle,p=r.translate,y={};kt(c)&&(y.zIndex=c),s&&(y.pos=[s[0],s[1]]),m&&(y.scale=m),l&&(y.rotate=l),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r,t){var e=r.group,n=r.eraserlines,i=r.pos,a=r.layer,o=a.parent;if(!t)return;var c=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,m=e.getBoundingClientRect(),l=m.width*c*a.worldScaling[0],p=m.height*c*a.worldScaling[1];var y=1;(l>this.maxImageWidth||p>this.maxImageHeight)&&(y=Math.min(this.maxImageWidth/l,this.maxImageHeight/p));var P=a.getAttribute("scale");P=[P[0]*y,P[1]*y];var S=a.parent.parent,v=a.getAttribute("translate"),T=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,// desynchronized: true,
400
400
  bufferSize:500// depth: true,
401
401
  },P,v),f=e.cloneNode(!0);this.addEraserlines(f,n,i,!1),T.appendChild(f);var d=T.parent;d.render();var u=T.renderer.canvasRenderer,g=u.options.displayRatio,M=this.getGroupRect(f,g),C=M.x,A=M.y,L=M.w,O=M.h,w=u.context;if(!w)return!1;var b=w.getImageData(C,A,L,O);var I=this.isTransparentRectByCanvas(b);if(se(f,d),S.removeChild(d),I){this.isDelete=!0,b=null;return;}se(e,o);var R=this.createSpriteNode(b,y,g,a.worldScaling);e.append(R),o.deleteTexture(b),b=null;}},{key:"createVmRenderNode",value:function createVmRenderNode(r,t,e,n,i){var a=e.width,o=e.height,s="bitMap-".concat(r),c=t.layer(s,e),m=new Qt({anchor:[0.5,0.5],pos:[a*0.5,o*0.5],size:[a,o],name:"viewport",id:r});return m.setAttribute("scale",n),m.setAttribute("translate",i),c.append(m),m;}},{key:"getGroupRect",value:function getGroupRect(r,t){var e=r.getBoundingClientRect(),n={x:Math.floor(e.x-Jt.SafeBorderPadding),y:Math.floor(e.y-Jt.SafeBorderPadding),w:Math.floor(e.width+Jt.SafeBorderPadding*2),h:Math.floor(e.height+Jt.SafeBorderPadding*2)},i=Math.floor(n.x*t),a=Math.floor(n.y*t),o=Math.floor(n.w*t),s=Math.floor(n.h*t);return{x:i,y:a,w:o,h:s};}},{key:"addEraserlines",value:function addEraserlines(r,t,e){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!0;var _iterator13=_createForOfIteratorHelper(t),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var i=_step13.value;var a=i.thickness,o=i.op;var _iterator14=_createForOfIteratorHelper(o),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var s=_step14.value;var c=s.map(function(P,S){return S%2?P-e[1]:P-e[0];}),m=this.computEraserPoints(c,a),l=ae(m,!0),p={pos:[0,0],d:l,fillColor:"rgba(0,0,0,1)"},y=new le(p);y.addEventListener("beforerender",function(_ref165){var P=_ref165.detail;var S=P.context;n?S.blendFuncSeparate(S.ZERO,S.ZERO,S.ZERO,S.ZERO):S.globalCompositeOperation="destination-out";}),y.addEventListener("afterrender",function(_ref166){var P=_ref166.detail;var S=P.context;n?S.blendFuncSeparate(S.SRC_ALPHA,S.ONE_MINUS_SRC_ALPHA,S.ONE,S.ONE_MINUS_SRC_ALPHA):S.globalCompositeOperation="source-over";}),r.append(y);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"isTransparentRectByCanvas",value:function isTransparentRectByCanvas(r){var t=!0;for(var _e3=0;_e3<r.data.length;_e3+=4)if(r.data[_e3+3]!==0){t=!1;break;}return t;}},{key:"createSpriteNode",value:function createSpriteNode(r,t,e){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[1,1];var i=new OffscreenCanvas(r.width,r.height),a=i.getContext("2d");a&&a.putImageData(r,0,0);var o={name:"eraserTexture",anchor:[0.5,0.5],pos:[0,0],size:[r.width/e/n[0],r.height/e/n[1]],texture:i,scale:[1/t,1/t]};return new jn(o);}// private scaleImageData(imageData: ImageData, scale: number, ctx: CanvasRenderingContext2D) {
402
402
  // const scaled = ctx.createImageData(imageData.width * scale, imageData.height * scale);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DZB9amqH.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.AutoDrawPlugin=e.AutoDrawPlugin;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EImageType=e.EImageType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EOperationType=e.EOperationType;exports.EPostMessageType=e.EPostMessageType;exports.ERenderFilterType=e.ERenderFilterType;exports.EScaleType=e.EScaleType;exports.EStrokeType=e.EStrokeType;exports.EToolsKey=e.EToolsKey;exports.ElayerType=e.ElayerType;exports.EmitEventType=e.EmitEventType;exports.EventMessageType=e.EventMessageType;exports.EvevtWorkState=e.EvevtWorkState;exports.EvevtWorkType=e.EvevtWorkType;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.Plugin=e.Plugin;exports.ShapeType=e.ShapeType;exports.fullWorkerUrl=e.fullWorker;exports.subWorkerUrl=e.subWorker;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DX_ZeDrQ.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.AutoDrawPlugin=e.AutoDrawPlugin;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EImageType=e.EImageType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EOperationType=e.EOperationType;exports.EPostMessageType=e.EPostMessageType;exports.ERenderFilterType=e.ERenderFilterType;exports.EScaleType=e.EScaleType;exports.EStrokeType=e.EStrokeType;exports.EToolsKey=e.EToolsKey;exports.ElayerType=e.ElayerType;exports.EmitEventType=e.EmitEventType;exports.EventMessageType=e.EventMessageType;exports.EvevtWorkState=e.EvevtWorkState;exports.EvevtWorkType=e.EvevtWorkType;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.Plugin=e.Plugin;exports.ShapeType=e.ShapeType;exports.fullWorkerUrl=e.fullWorker;exports.subWorkerUrl=e.subWorker;
@@ -1,4 +1,4 @@
1
- import { F as s, A as p, y as r, x as t, w as l, Q as i, G as n, b as y, k as E, m as T, N as o, c as g, O as u, K as v, z as c, a as A, J as S, j as k, H as m, E as P, L as M, I as W, P as w, B as x, u as I, v as b } from "./index-7Ny1Gedj.mjs";
1
+ import { F as s, A as p, y as r, x as t, w as l, Q as i, G as n, b as y, k as E, m as T, N as o, c as g, O as u, K as v, z as c, a as A, J as S, j as k, H as m, E as P, L as M, I as W, P as w, B as x, u as I, v as b } from "./index-Gx8Mq-8W.mjs";
2
2
  export {
3
3
  s as ActiveContainerType,
4
4
  p as ApplianceMultiPlugin,
@@ -396,7 +396,7 @@ _inherits(o,_e$default22);return _createClass(o,[{key:"texture",get:function get
396
396
  c=="length"||// Node.js 0.10 has enumerable non-index properties on buffers.
397
397
  n&&(c=="offset"||c=="parent")||// PhantomJS 2 has enumerable non-index properties on typed arrays.
398
398
  i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||// Skip index properties.
399
- Sc(c,s)))&&o.push(c);return o;}var _n=Pc,Oc=Object.prototype;function Ec(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Oc;return h===t;}var Ar=Ec;function Cc(h,r){return function(t){return h(r(t));};}var ti=Cc,Ac=ti,Rc=Ac(Object.keys,Object),Ic=Rc,wc=Ar,Lc=Ic,bc=Object.prototype,Dc=bc.hasOwnProperty;function Nc(h){if(!wc(h))return Lc(h);var r=[];for(var t in Object(h))Dc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Wc=Nc,Bc=Gn,Fc=Qn;function Uc(h){return h!=null&&Fc(h.length)&&!Bc(h);}var Rr=Uc,jc=_n,$c=Wc,zc=Rr;function Gc(h){return zc(h)?jc(h):$c(h);}var Ir=Gc,Hc=ar,Kc=Ir;function Yc(h,r){return h&&Hc(r,Kc(r),h);}var Vc=Yc;function kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Xc=kc,Jc=pe,Zc=Ar,Qc=Xc,qc=Object.prototype,_c=qc.hasOwnProperty;function tf(h){if(!Jc(h))return Qc(h);var r=Zc(h),t=[];for(var e in h)e=="constructor"&&(r||!_c.call(h,e))||t.push(e);return t;}var ef=tf,rf=_n,nf=ef,sf=Rr;function of(h){return sf(h)?rf(h,!0):nf(h);}var wr=of,af=ar,lf=wr;function cf(h,r){return h&&af(r,lf(r),h);}var ff=cf,ke={exports:{}};ke.exports;(function(h,r){var t=ie,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(c,m){if(m)return c.slice();var l=c.length,p=o?o(l):new c.constructor(l);return c.copy(p),p;}h.exports=s;})(ke,ke.exports);var hf=ke.exports;function uf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var df=uf;function pf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var ei=pf;function gf(){return[];}var ri=gf,mf=ei,vf=ri,yf=Object.prototype,Sf=yf.propertyIsEnumerable,rn=Object.getOwnPropertySymbols,xf=rn?function(h){return h==null?[]:(h=Object(h),mf(rn(h),function(r){return Sf.call(h,r);}));}:vf,Lr=xf,Tf=ar,Mf=Lr;function Pf(h,r){return Tf(h,Mf(h),r);}var Of=Pf;function Ef(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var br=Ef,Cf=ti,Af=Cf(Object.getPrototypeOf,Object),ni=Af,Rf=br,If=ni,wf=Lr,Lf=ri,bf=Object.getOwnPropertySymbols,Df=bf?function(h){for(var r=[];h;)Rf(r,wf(h)),h=If(h);return r;}:Lf,ii=Df,Nf=ar,Wf=ii;function Bf(h,r){return Nf(h,Wf(h),r);}var Ff=Bf,Uf=br,jf=$e;function $f(h,r,t){var e=r(h);return jf(h)?e:Uf(e,t(h));}var si=$f,zf=si,Gf=Lr,Hf=Ir;function Kf(h){return zf(h,Hf,Gf);}var oi=Kf,Yf=si,Vf=ii,kf=wr;function Xf(h){return Yf(h,kf,Vf);}var Jf=Xf,Zf=ve,Qf=ie,qf=Zf(Qf,"DataView"),_f=qf,th=ve,eh=ie,rh=th(eh,"Promise"),nh=rh,ih=ve,sh=ie,oh=ih(sh,"Set"),ai=oh,ah=ve,lh=ie,ch=ah(lh,"WeakMap"),fh=ch,gr=_f,mr=Or,vr=nh,yr=ai,Sr=fh,li=me,we=Hn,nn="[object Map]",hh="[object Object]",sn="[object Promise]",on="[object Set]",an="[object WeakMap]",ln="[object DataView]",uh=we(gr),dh=we(mr),ph=we(vr),gh=we(yr),mh=we(Sr),ge=li;(gr&&ge(new gr(new ArrayBuffer(1)))!=ln||mr&&ge(new mr())!=nn||vr&&ge(vr.resolve())!=sn||yr&&ge(new yr())!=on||Sr&&ge(new Sr())!=an)&&(ge=function ge(h){var r=li(h),t=r==hh?h.constructor:void 0,e=t?we(t):"";if(e)switch(e){case uh:return ln;case dh:return nn;case ph:return sn;case gh:return on;case mh:return an;}return r;});var cr=ge,vh=Object.prototype,yh=vh.hasOwnProperty;function Sh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&yh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var xh=Sh,Th=ie,Mh=Th.Uint8Array,ci=Mh,cn=ci;function Ph(h){var r=new h.constructor(h.byteLength);return new cn(r).set(new cn(h)),r;}var Dr=Ph,Oh=Dr;function Eh(h,r){var t=r?Oh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ch=Eh,Ah=/\w*$/;function Rh(h){var r=new h.constructor(h.source,Ah.exec(h));return r.lastIndex=h.lastIndex,r;}var Ih=Rh,fn=je,hn=fn?fn.prototype:void 0,un=hn?hn.valueOf:void 0;function wh(h){return un?Object(un.call(h)):{};}var Lh=wh,bh=Dr;function Dh(h,r){var t=r?bh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Nh=Dh,Wh=Dr,Bh=Ch,Fh=Ih,Uh=Lh,jh=Nh,$h="[object Boolean]",zh="[object Date]",Gh="[object Map]",Hh="[object Number]",Kh="[object RegExp]",Yh="[object Set]",Vh="[object String]",kh="[object Symbol]",Xh="[object ArrayBuffer]",Jh="[object DataView]",Zh="[object Float32Array]",Qh="[object Float64Array]",qh="[object Int8Array]",_h="[object Int16Array]",tu="[object Int32Array]",eu="[object Uint8Array]",ru="[object Uint8ClampedArray]",nu="[object Uint16Array]",iu="[object Uint32Array]";function su(h,r,t){var e=h.constructor;switch(r){case Xh:return Wh(h);case $h:case zh:return new e(+h);case Jh:return Bh(h,t);case Zh:case Qh:case qh:case _h:case tu:case eu:case ru:case nu:case iu:return jh(h,t);case Gh:return new e();case Hh:case Vh:return new e(h);case Kh:return Fh(h);case Yh:return new e();case kh:return Uh(h);}}var ou=su,au=pe,dn=Object.create,lu=/* @__PURE__ */function(){function h(){}return function(r){if(!au(r))return{};if(dn)return dn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),cu=lu,fu=cu,hu=ni,uu=Ar;function du(h){return typeof h.constructor=="function"&&!uu(h)?fu(hu(h)):{};}var pu=du,gu=cr,mu=oe,vu="[object Map]";function yu(h){return mu(h)&&gu(h)==vu;}var Su=yu,xu=Su,Tu=lr,pn=Cr,gn=pn&&pn.isMap,Mu=gn?Tu(gn):xu,Pu=Mu,Ou=cr,Eu=oe,Cu="[object Set]";function Au(h){return Eu(h)&&Ou(h)==Cu;}var Ru=Au,Iu=Ru,wu=lr,mn=Cr,vn=mn&&mn.isSet,Lu=vn?wu(vn):Iu,fi=Lu,bu=/* @__PURE__ */de(fi),Du=Yn,Nu=il,Wu=Xn,Bu=Vc,Fu=ff,Uu=hf,ju=df,$u=Of,zu=Ff,Gu=oi,Hu=Jf,Ku=cr,Yu=xh,Vu=ou,ku=pu,Xu=$e,Ju=Er,Zu=Pu,Qu=pe,qu=fi,_u=Ir,td=wr,ed=1,rd=2,nd=4,hi="[object Arguments]",id="[object Array]",sd="[object Boolean]",od="[object Date]",ad="[object Error]",ui="[object Function]",ld="[object GeneratorFunction]",cd="[object Map]",fd="[object Number]",di="[object Object]",hd="[object RegExp]",ud="[object Set]",dd="[object String]",pd="[object Symbol]",gd="[object WeakMap]",md="[object ArrayBuffer]",vd="[object DataView]",yd="[object Float32Array]",Sd="[object Float64Array]",xd="[object Int8Array]",Td="[object Int16Array]",Md="[object Int32Array]",Pd="[object Uint8Array]",Od="[object Uint8ClampedArray]",Ed="[object Uint16Array]",Cd="[object Uint32Array]",Ut={};Ut[hi]=Ut[id]=Ut[md]=Ut[vd]=Ut[sd]=Ut[od]=Ut[yd]=Ut[Sd]=Ut[xd]=Ut[Td]=Ut[Md]=Ut[cd]=Ut[fd]=Ut[di]=Ut[hd]=Ut[ud]=Ut[dd]=Ut[pd]=Ut[Pd]=Ut[Od]=Ut[Ed]=Ut[Cd]=!0;Ut[ad]=Ut[ui]=Ut[gd]=!1;function He(h,r,t,e,n,i){var a,o=r&ed,s=r&rd,c=r&nd;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Qu(h))return h;var m=Xu(h);if(m){if(a=Yu(h),!o)return ju(h,a);}else{var l=Ku(h),p=l==ui||l==ld;if(Ju(h))return Uu(h,o);if(l==di||l==hi||p&&!n){if(a=s||p?{}:ku(h),!o)return s?zu(h,Fu(a,h)):$u(h,Bu(a,h));}else{if(!Ut[l])return n?h:{};a=Vu(h,l,o);}}i||(i=new Du());var y=i.get(h);if(y)return y;i.set(h,a),qu(h)?h.forEach(function(v){a.add(He(v,r,t,v,h,i));}):Zu(h)&&h.forEach(function(v,T){a.set(T,He(v,r,t,T,h,i));});var P=c?s?Hu:Gu:s?td:_u,S=m?void 0:P(h);return Nu(S||h,function(v,T){S&&(T=v,v=h[T]),Wu(a,T,He(v,r,t,T,h,i));}),a;}var Ad=He,Rd=Ad,Id=1,wd=4;function Ld(h){return Rd(h,Id|wd);}var bd=Ld,Vt=/* @__PURE__ */de(bd);var pi="1.1.15-beta.2",Dd="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Dd,"@").concat(pi),window.__netlessUA=h;}var _t={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1024,maxImageHeight:1024},strokeWidth:{min:1,max:10}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(ye(e),"L").concat(ye(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=Se(e,n);return r?"M".concat(Se(h[0],h[1]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2]),"T").concat(i).concat(Se(h[t-1],h[0])).concat(Se(h[0],h[1]),"Z"):"M".concat(ye(h[0]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(ye(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);tt(this,"maxImageWidth",_t.pencilEraser.maxImageWidth);tt(this,"maxImageHeight",_t.pencilEraser.maxImageHeight);tt(this,"syncUnitTime",_t.syncOpt.interval);tt(this,"vNodes");tt(this,"drawLayer");tt(this,"fullLayer");tt(this,"workId");tt(this,"isDelete",!1);var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,c=r.zIndex,m=r.scale,l=r.angle,p=r.translate,y={};kt(c)&&(y.zIndex=c),s&&(y.pos=[s[0],s[1]]),m&&(y.scale=m),l&&(y.rotate=l),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r,t){var e=r.group,n=r.eraserlines,i=r.pos,a=r.layer,o=a.parent;if(!t)return;var c=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,m=e.getBoundingClientRect(),l=m.width*c*a.worldScaling[0],p=m.height*c*a.worldScaling[1];var y=1;(l>this.maxImageWidth||p>this.maxImageHeight)&&(y=Math.min(this.maxImageWidth/l,this.maxImageHeight/p));var P=a.getAttribute("scale");P=[P[0]*y,P[1]*y];var S=a.parent.parent,v=a.getAttribute("translate"),T=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,// desynchronized: true,
399
+ Sc(c,s)))&&o.push(c);return o;}var _n=Pc,Oc=Object.prototype;function Ec(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Oc;return h===t;}var Ar=Ec;function Cc(h,r){return function(t){return h(r(t));};}var ti=Cc,Ac=ti,Rc=Ac(Object.keys,Object),Ic=Rc,wc=Ar,Lc=Ic,bc=Object.prototype,Dc=bc.hasOwnProperty;function Nc(h){if(!wc(h))return Lc(h);var r=[];for(var t in Object(h))Dc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Wc=Nc,Bc=Gn,Fc=Qn;function Uc(h){return h!=null&&Fc(h.length)&&!Bc(h);}var Rr=Uc,jc=_n,$c=Wc,zc=Rr;function Gc(h){return zc(h)?jc(h):$c(h);}var Ir=Gc,Hc=ar,Kc=Ir;function Yc(h,r){return h&&Hc(r,Kc(r),h);}var Vc=Yc;function kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Xc=kc,Jc=pe,Zc=Ar,Qc=Xc,qc=Object.prototype,_c=qc.hasOwnProperty;function tf(h){if(!Jc(h))return Qc(h);var r=Zc(h),t=[];for(var e in h)e=="constructor"&&(r||!_c.call(h,e))||t.push(e);return t;}var ef=tf,rf=_n,nf=ef,sf=Rr;function of(h){return sf(h)?rf(h,!0):nf(h);}var wr=of,af=ar,lf=wr;function cf(h,r){return h&&af(r,lf(r),h);}var ff=cf,ke={exports:{}};ke.exports;(function(h,r){var t=ie,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(c,m){if(m)return c.slice();var l=c.length,p=o?o(l):new c.constructor(l);return c.copy(p),p;}h.exports=s;})(ke,ke.exports);var hf=ke.exports;function uf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var df=uf;function pf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var ei=pf;function gf(){return[];}var ri=gf,mf=ei,vf=ri,yf=Object.prototype,Sf=yf.propertyIsEnumerable,rn=Object.getOwnPropertySymbols,xf=rn?function(h){return h==null?[]:(h=Object(h),mf(rn(h),function(r){return Sf.call(h,r);}));}:vf,Lr=xf,Tf=ar,Mf=Lr;function Pf(h,r){return Tf(h,Mf(h),r);}var Of=Pf;function Ef(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var br=Ef,Cf=ti,Af=Cf(Object.getPrototypeOf,Object),ni=Af,Rf=br,If=ni,wf=Lr,Lf=ri,bf=Object.getOwnPropertySymbols,Df=bf?function(h){for(var r=[];h;)Rf(r,wf(h)),h=If(h);return r;}:Lf,ii=Df,Nf=ar,Wf=ii;function Bf(h,r){return Nf(h,Wf(h),r);}var Ff=Bf,Uf=br,jf=$e;function $f(h,r,t){var e=r(h);return jf(h)?e:Uf(e,t(h));}var si=$f,zf=si,Gf=Lr,Hf=Ir;function Kf(h){return zf(h,Hf,Gf);}var oi=Kf,Yf=si,Vf=ii,kf=wr;function Xf(h){return Yf(h,kf,Vf);}var Jf=Xf,Zf=ve,Qf=ie,qf=Zf(Qf,"DataView"),_f=qf,th=ve,eh=ie,rh=th(eh,"Promise"),nh=rh,ih=ve,sh=ie,oh=ih(sh,"Set"),ai=oh,ah=ve,lh=ie,ch=ah(lh,"WeakMap"),fh=ch,gr=_f,mr=Or,vr=nh,yr=ai,Sr=fh,li=me,we=Hn,nn="[object Map]",hh="[object Object]",sn="[object Promise]",on="[object Set]",an="[object WeakMap]",ln="[object DataView]",uh=we(gr),dh=we(mr),ph=we(vr),gh=we(yr),mh=we(Sr),ge=li;(gr&&ge(new gr(new ArrayBuffer(1)))!=ln||mr&&ge(new mr())!=nn||vr&&ge(vr.resolve())!=sn||yr&&ge(new yr())!=on||Sr&&ge(new Sr())!=an)&&(ge=function ge(h){var r=li(h),t=r==hh?h.constructor:void 0,e=t?we(t):"";if(e)switch(e){case uh:return ln;case dh:return nn;case ph:return sn;case gh:return on;case mh:return an;}return r;});var cr=ge,vh=Object.prototype,yh=vh.hasOwnProperty;function Sh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&yh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var xh=Sh,Th=ie,Mh=Th.Uint8Array,ci=Mh,cn=ci;function Ph(h){var r=new h.constructor(h.byteLength);return new cn(r).set(new cn(h)),r;}var Dr=Ph,Oh=Dr;function Eh(h,r){var t=r?Oh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ch=Eh,Ah=/\w*$/;function Rh(h){var r=new h.constructor(h.source,Ah.exec(h));return r.lastIndex=h.lastIndex,r;}var Ih=Rh,fn=je,hn=fn?fn.prototype:void 0,un=hn?hn.valueOf:void 0;function wh(h){return un?Object(un.call(h)):{};}var Lh=wh,bh=Dr;function Dh(h,r){var t=r?bh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Nh=Dh,Wh=Dr,Bh=Ch,Fh=Ih,Uh=Lh,jh=Nh,$h="[object Boolean]",zh="[object Date]",Gh="[object Map]",Hh="[object Number]",Kh="[object RegExp]",Yh="[object Set]",Vh="[object String]",kh="[object Symbol]",Xh="[object ArrayBuffer]",Jh="[object DataView]",Zh="[object Float32Array]",Qh="[object Float64Array]",qh="[object Int8Array]",_h="[object Int16Array]",tu="[object Int32Array]",eu="[object Uint8Array]",ru="[object Uint8ClampedArray]",nu="[object Uint16Array]",iu="[object Uint32Array]";function su(h,r,t){var e=h.constructor;switch(r){case Xh:return Wh(h);case $h:case zh:return new e(+h);case Jh:return Bh(h,t);case Zh:case Qh:case qh:case _h:case tu:case eu:case ru:case nu:case iu:return jh(h,t);case Gh:return new e();case Hh:case Vh:return new e(h);case Kh:return Fh(h);case Yh:return new e();case kh:return Uh(h);}}var ou=su,au=pe,dn=Object.create,lu=/* @__PURE__ */function(){function h(){}return function(r){if(!au(r))return{};if(dn)return dn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),cu=lu,fu=cu,hu=ni,uu=Ar;function du(h){return typeof h.constructor=="function"&&!uu(h)?fu(hu(h)):{};}var pu=du,gu=cr,mu=oe,vu="[object Map]";function yu(h){return mu(h)&&gu(h)==vu;}var Su=yu,xu=Su,Tu=lr,pn=Cr,gn=pn&&pn.isMap,Mu=gn?Tu(gn):xu,Pu=Mu,Ou=cr,Eu=oe,Cu="[object Set]";function Au(h){return Eu(h)&&Ou(h)==Cu;}var Ru=Au,Iu=Ru,wu=lr,mn=Cr,vn=mn&&mn.isSet,Lu=vn?wu(vn):Iu,fi=Lu,bu=/* @__PURE__ */de(fi),Du=Yn,Nu=il,Wu=Xn,Bu=Vc,Fu=ff,Uu=hf,ju=df,$u=Of,zu=Ff,Gu=oi,Hu=Jf,Ku=cr,Yu=xh,Vu=ou,ku=pu,Xu=$e,Ju=Er,Zu=Pu,Qu=pe,qu=fi,_u=Ir,td=wr,ed=1,rd=2,nd=4,hi="[object Arguments]",id="[object Array]",sd="[object Boolean]",od="[object Date]",ad="[object Error]",ui="[object Function]",ld="[object GeneratorFunction]",cd="[object Map]",fd="[object Number]",di="[object Object]",hd="[object RegExp]",ud="[object Set]",dd="[object String]",pd="[object Symbol]",gd="[object WeakMap]",md="[object ArrayBuffer]",vd="[object DataView]",yd="[object Float32Array]",Sd="[object Float64Array]",xd="[object Int8Array]",Td="[object Int16Array]",Md="[object Int32Array]",Pd="[object Uint8Array]",Od="[object Uint8ClampedArray]",Ed="[object Uint16Array]",Cd="[object Uint32Array]",Ut={};Ut[hi]=Ut[id]=Ut[md]=Ut[vd]=Ut[sd]=Ut[od]=Ut[yd]=Ut[Sd]=Ut[xd]=Ut[Td]=Ut[Md]=Ut[cd]=Ut[fd]=Ut[di]=Ut[hd]=Ut[ud]=Ut[dd]=Ut[pd]=Ut[Pd]=Ut[Od]=Ut[Ed]=Ut[Cd]=!0;Ut[ad]=Ut[ui]=Ut[gd]=!1;function He(h,r,t,e,n,i){var a,o=r&ed,s=r&rd,c=r&nd;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Qu(h))return h;var m=Xu(h);if(m){if(a=Yu(h),!o)return ju(h,a);}else{var l=Ku(h),p=l==ui||l==ld;if(Ju(h))return Uu(h,o);if(l==di||l==hi||p&&!n){if(a=s||p?{}:ku(h),!o)return s?zu(h,Fu(a,h)):$u(h,Bu(a,h));}else{if(!Ut[l])return n?h:{};a=Vu(h,l,o);}}i||(i=new Du());var y=i.get(h);if(y)return y;i.set(h,a),qu(h)?h.forEach(function(v){a.add(He(v,r,t,v,h,i));}):Zu(h)&&h.forEach(function(v,T){a.set(T,He(v,r,t,T,h,i));});var P=c?s?Hu:Gu:s?td:_u,S=m?void 0:P(h);return Nu(S||h,function(v,T){S&&(T=v,v=h[T]),Wu(a,T,He(v,r,t,T,h,i));}),a;}var Ad=He,Rd=Ad,Id=1,wd=4;function Ld(h){return Rd(h,Id|wd);}var bd=Ld,Vt=/* @__PURE__ */de(bd);var pi="1.1.15-beta.3",Dd="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Dd,"@").concat(pi),window.__netlessUA=h;}var _t={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(ye(e),"L").concat(ye(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=Se(e,n);return r?"M".concat(Se(h[0],h[1]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2]),"T").concat(i).concat(Se(h[t-1],h[0])).concat(Se(h[0],h[1]),"Z"):"M".concat(ye(h[0]),"Q").concat(ye(h[1])).concat(Se(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(ye(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);tt(this,"maxImageWidth",_t.pencilEraser.maxImageWidth);tt(this,"maxImageHeight",_t.pencilEraser.maxImageHeight);tt(this,"syncUnitTime",_t.syncOpt.interval);tt(this,"vNodes");tt(this,"drawLayer");tt(this,"fullLayer");tt(this,"workId");tt(this,"isDelete",!1);var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,c=r.zIndex,m=r.scale,l=r.angle,p=r.translate,y={};kt(c)&&(y.zIndex=c),s&&(y.pos=[s[0],s[1]]),m&&(y.scale=m),l&&(y.rotate=l),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r,t){var e=r.group,n=r.eraserlines,i=r.pos,a=r.layer,o=a.parent;if(!t)return;var c=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,m=e.getBoundingClientRect(),l=m.width*c*a.worldScaling[0],p=m.height*c*a.worldScaling[1];var y=1;(l>this.maxImageWidth||p>this.maxImageHeight)&&(y=Math.min(this.maxImageWidth/l,this.maxImageHeight/p));var P=a.getAttribute("scale");P=[P[0]*y,P[1]*y];var S=a.parent.parent,v=a.getAttribute("translate"),T=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,// desynchronized: true,
400
400
  bufferSize:500// depth: true,
401
401
  },P,v),f=e.cloneNode(!0);this.addEraserlines(f,n,i,!1),T.appendChild(f);var d=T.parent;d.render();var u=T.renderer.canvasRenderer,g=u.options.displayRatio,M=this.getGroupRect(f,g),C=M.x,A=M.y,L=M.w,O=M.h,w=u.context;if(!w)return!1;var b=w.getImageData(C,A,L,O);var I=this.isTransparentRectByCanvas(b);if(se(f,d),S.removeChild(d),I){this.isDelete=!0,b=null;return;}se(e,o);var R=this.createSpriteNode(b,y,g,a.worldScaling);e.append(R),o.deleteTexture(b),b=null;}},{key:"createVmRenderNode",value:function createVmRenderNode(r,t,e,n,i){var a=e.width,o=e.height,s="bitMap-".concat(r),c=t.layer(s,e),m=new Qt({anchor:[0.5,0.5],pos:[a*0.5,o*0.5],size:[a,o],name:"viewport",id:r});return m.setAttribute("scale",n),m.setAttribute("translate",i),c.append(m),m;}},{key:"getGroupRect",value:function getGroupRect(r,t){var e=r.getBoundingClientRect(),n={x:Math.floor(e.x-Jt.SafeBorderPadding),y:Math.floor(e.y-Jt.SafeBorderPadding),w:Math.floor(e.width+Jt.SafeBorderPadding*2),h:Math.floor(e.height+Jt.SafeBorderPadding*2)},i=Math.floor(n.x*t),a=Math.floor(n.y*t),o=Math.floor(n.w*t),s=Math.floor(n.h*t);return{x:i,y:a,w:o,h:s};}},{key:"addEraserlines",value:function addEraserlines(r,t,e){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!0;var _iterator13=_createForOfIteratorHelper(t),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var i=_step13.value;var a=i.thickness,o=i.op;var _iterator14=_createForOfIteratorHelper(o),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var s=_step14.value;var c=s.map(function(P,S){return S%2?P-e[1]:P-e[0];}),m=this.computEraserPoints(c,a),l=ae(m,!0),p={pos:[0,0],d:l,fillColor:"rgba(0,0,0,1)"},y=new le(p);y.addEventListener("beforerender",function(_ref165){var P=_ref165.detail;var S=P.context;n?S.blendFuncSeparate(S.ZERO,S.ZERO,S.ZERO,S.ZERO):S.globalCompositeOperation="destination-out";}),y.addEventListener("afterrender",function(_ref166){var P=_ref166.detail;var S=P.context;n?S.blendFuncSeparate(S.SRC_ALPHA,S.ONE_MINUS_SRC_ALPHA,S.ONE,S.ONE_MINUS_SRC_ALPHA):S.globalCompositeOperation="source-over";}),r.append(y);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"isTransparentRectByCanvas",value:function isTransparentRectByCanvas(r){var t=!0;for(var _e3=0;_e3<r.data.length;_e3+=4)if(r.data[_e3+3]!==0){t=!1;break;}return t;}},{key:"createSpriteNode",value:function createSpriteNode(r,t,e){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[1,1];var i=new OffscreenCanvas(r.width,r.height),a=i.getContext("2d");a&&a.putImageData(r,0,0);var o={name:"eraserTexture",anchor:[0.5,0.5],pos:[0,0],size:[r.width/e/n[0],r.height/e/n[1]],texture:i,scale:[1/t,1/t]};return new jn(o);}// private scaleImageData(imageData: ImageData, scale: number, ctx: CanvasRenderingContext2D) {
402
402
  // const scaled = ctx.createImageData(imageData.width * scale, imageData.height * scale);
@@ -1 +1 @@
1
- "use strict";var F=Object.defineProperty;var B=(v,t,e)=>t in v?F(v,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):v[t]=e;var u=(v,t,e)=>B(v,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-DZB9amqH.js"),C=require("spritejs"),L=require("lodash");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class U{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"serviceWorkShapes",new Map);u(this,"localWorkShapes",new Map);u(this,"tmpOpt");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const s={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...s,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:o.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===o.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),o.removeAllChildren(this.thread.serviceLayer,this.thread.serviceLayer.parent)),this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}consumeDraw(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consume({data:t,isFullWork:!1,isSubWorker:!0});i.rect&&(a.result=i,a.workState=o.EvevtWorkState.Doing,r&&this.localWorkShapes.set(r,a))}this.runAnimation()}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}createWorkShapeNode(t){const{toolsType:e}=t;if(e===o.EToolsKey.LaserPen)return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.topLayer,drawLayer:this.thread.topLayer})}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=this.createWorkShapeNode({workId:t,toolsType:s,toolsOpt:r}),e}activeServiceWorkShape(t){var y,d;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:n,op:l}=t;if(!e)return;const c=e.toString(),p=(y=this.vNodes.get(c))==null?void 0:y.rect;if(!((d=this.serviceWorkShapes)!=null&&d.has(c))){let m={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:n,oldRect:p};r&&s&&(m=this.setNodeKey(c,m,r,s)),this.serviceWorkShapes.set(c,m)}const h=this.serviceWorkShapes.get(c);a&&(h.type=a),n&&(h.animationWorkData=o.transformToNormalData(n),h.ops=n),i&&(h.updateNodeOpt=i),l&&(h.animationWorkData=l),h.node&&h.node.getWorkId()!==c&&h.node.setWorkId(c),p&&(h.oldRect=p),r&&s&&(h.toolsType!==r&&r&&s&&this.setNodeKey(c,h,r,s),h.node&&h.node.setWorkOptions(s))}computNextAnimationIndex(t,e){var a;const s=((a=t.node)==null?void 0:a.syncUnitTime)||this.syncUnitTime,r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/s)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}animationDraw(){var r,a,i,n;this.animationId=void 0;let t=!1;const e=new Map,s=[];for(const[l,c]of this.serviceWorkShapes.entries())switch(c.toolsType){case o.EToolsKey.LaserPen:{const h=this.computNextAnimationIndex(c,8),y=Math.max(0,c.animationIndex||0),d=(c.animationWorkData||[]).slice(y,h);if((c.animationIndex||0)<h&&((r=c.node)==null||r.consumeService({op:d,isFullWork:!1}),c.animationIndex=h,d.length&&e.set(l,{workState:y===0?o.EvevtWorkState.Start:h===((a=c.animationWorkData)==null?void 0:a.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:d.slice(-2)})),c.isDel){(i=c.node)==null||i.clearTmpPoints(),this.serviceWorkShapes.delete(l);break}c.ops&&c.animationIndex===((n=c.animationWorkData)==null?void 0:n.length)&&!c.isDel&&(this.thread.topLayer.getElementsByName(l.toString())[0]||(c.isDel=!0,this.serviceWorkShapes.set(l,c))),t=!0;break}}for(const[l,c]of this.localWorkShapes.entries()){const{result:p,toolsType:h,isDel:y,workState:d}=c;switch(h){case o.EToolsKey.LaserPen:{if(y){c.node.clearTmpPoints(),this.localWorkShapes.delete(l),s.push({removeIds:[l.toString()],type:o.EPostMessageType.RemoveNode});break}p&&((p.op||p.ops)&&s.push(p),c.result=void 0),!this.thread.topLayer.getElementsByName(l.toString())[0]&&d===o.EvevtWorkState.Done&&(c.isDel=!0,this.localWorkShapes.set(l,c)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((l,c)=>{s.push({type:o.EPostMessageType.Cursor,uid:c.split(o.Storage_Splitter)[0],op:l.op,workState:l.workState,viewId:this.thread.viewId})}),s.length&&this.thread.post({sp:s})}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}setWorkOptions(t,e){var r;let s=(r=this.localWorkShapes.get(t))==null?void 0:r.node;if(!s&&this.tmpOpt){const{toolsType:a}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:a,toolsOpt:e}),s&&this.localWorkShapes.set(t,{node:s,toolsType:a,workState:o.EvevtWorkState.Start}),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s&&s.setWorkOptions(e)}consumeDrawAll(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consumeAll({data:t});a.result=i,a.workState=o.EvevtWorkState.Done,r&&this.localWorkShapes.set(r,a)}this.runAnimation()}}class _{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"effectSelectNodeData",new Set);u(this,"batchEraserRemoveNodes",new Set);u(this,"batchEraserWorks",new Set);u(this,"tmpOpt");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);u(this,"fullWorkerDrawCount",0);u(this,"drawWorkActiveId");u(this,"consumeCount",0);u(this,"batchEraserCombine",o.throttle(()=>{this.updateBatchEraserCombineNode(this.batchEraserWorks,this.batchEraserRemoveNodes),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()},100,{leading:!1}));this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}async updateSelector(t){var y;const e=this.workShapes.get(o.Storage_Selector_key);if(!((y=e==null?void 0:e.selectIds)!=null&&y.length))return;const{callback:s,...r}=t,{updateSelectorOpt:a,willSerializeData:i}=r,n=await(e==null?void 0:e.updateSelector({updateSelectorOpt:a,selectIds:L.cloneDeep(e.selectIds),vNodes:this.vNodes,willSerializeData:i,worker:this})),l=new Map;let c;n!=null&&n.selectIds&&(c=L.xor(e.selectIds,n.selectIds),n.selectIds.forEach(d=>{const m=this.vNodes.get(d);if(m){const{toolsType:S,op:k,opt:T}=m;l.set(d,{opt:T,toolsType:S,ops:(k==null?void 0:k.length)&&o.transformToSerializableData(k)||void 0})}}),e.selectIds=n.selectIds);const p=[],h=s&&s({res:n,workShapeNode:e,param:r,postData:{sp:p},newServiceStore:l})||{sp:p};c&&h.sp.push({type:o.EPostMessageType.RemoveNode,removeIds:c,viewId:this.thread.viewId}),h.sp.length&&this.thread.post(h)}destroy(){this.clearAll()}clearAll(){if(this.thread.localLayer.children.length&&(this.thread.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),o.removeAllChildren(this.thread.localLayer,this.thread.localLayer.parent)),this.workShapes.get(o.Storage_Selector_key)){const e=[];e.push({type:o.EPostMessageType.Select,dataType:o.EDataType.Local,selectIds:[],willSyncService:!1}),this.thread.post({sp:e})}this.workShapes.clear(),this.effectSelectNodeData.clear(),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()}async checkTextActive(t){const{op:e,viewId:s,dataType:r}=t;if(e!=null&&e.length){let a;for(const i of this.vNodes.curNodeMap.values()){const{rect:n,name:l,toolsType:c,opt:p}=i,h=e[0]*this.thread.fullLayer.worldScaling[0]+this.thread.fullLayer.worldPosition[0],y=e[1]*this.thread.fullLayer.worldScaling[1]+this.thread.fullLayer.worldPosition[1];if(c===o.EToolsKey.Text&&o.isIntersectForPoint([h,y],n)&&p.workState===o.EvevtWorkState.Done){a=l;break}}a&&(await this.blurSelector({viewId:s,msgType:o.EPostMessageType.Select,dataType:r,isSync:!0}),this.thread.post({sp:[{type:o.EPostMessageType.GetTextActive,toolsType:o.EToolsKey.Text,workId:a}]}))}}cursorHover(t){const{opt:e,toolsType:s,point:r}=t,a=this.setFullWork({workId:o.Cursor_Hover_Id,toolsType:s,opt:e});a&&r&&a.cursorHover(r)}updateFullSelectWork(t){var r,a,i,n,l;const e=this.workShapes.get(o.Storage_Selector_key),{selectIds:s}=t;if(!(s!=null&&s.length)){this.blurSelector(t);return}if(!e){const c=this.setFullWork(t);!c&&t.workId&&this.tmpOpt&&((r=this.tmpOpt)==null?void 0:r.toolsType)===o.EToolsKey.Selector&&this.setWorkOptions(t.workId.toString(),t.opt||this.tmpOpt.toolsOpt),c&&this.updateFullSelectWork(t);return}if(e&&(s!=null&&s.length)){const{selectRect:c}=e.updateSelectIds(s),p=[{...t,selectorColor:((a=t.opt)==null?void 0:a.strokeColor)||e.selectorColor,strokeColor:((i=t.opt)==null?void 0:i.strokeColor)||e.strokeColor,fillColor:((n=t.opt)==null?void 0:n.fillColor)||e.fillColor,textOpt:((l=t.opt)==null?void 0:l.textOpt)||e.textOpt,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,type:o.EPostMessageType.Select,selectRect:c,points:e.getChildrenPoints(),willSyncService:(t==null?void 0:t.willSyncService)||!1,opt:(t==null?void 0:t.willSyncService)&&e.getWorkOptions()||void 0,canLock:e.canLock,isLocked:e.isLocked,toolsTypes:e.toolsTypes,shapeOpt:e.shapeOpt,thickness:e.thickness,useStroke:e.useStroke,strokeType:e.strokeType}];this.thread.post({sp:p})}}commandDeleteText(t){const e=this.vNodes.get(t);if(e&&e.toolsType===o.EToolsKey.Text)return{type:o.EPostMessageType.TextUpdate,toolsType:o.EToolsKey.Text,workId:t,dataType:o.EDataType.Local}}async removeSelector(t){const{willSyncService:e}=t,s=[],r=[],a=this.workShapes.get(o.Storage_Selector_key);if(!a)return;const i=a.selectIds&&[...a.selectIds]||[];for(const n of i){if(this.vNodes.get(n)){const c=this.commandDeleteText(n);c&&s.push(c)}this.removeNode(n),r.push(n)}r.length&&s.push({type:o.EPostMessageType.RemoveNode,removeIds:r}),s.push({type:o.EPostMessageType.Select,selectIds:[],willSyncService:e}),await this.blurSelector(),s.length&&this.thread.post({sp:s})}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.removeNode(s)}removeNode(t){var r;this.vNodes.get(t)&&((r=this.thread.fullLayer)==null||r.getElementsByName(t).forEach(a=>{a.remove(),o.removeTexture(a,this.thread.fullLayer.parent)}),this.vNodes.delete(t)),this.workShapes.has(t)&&(this.thread.localLayer.getElementsByName(t).forEach(a=>{a.remove(),o.removeTexture(a,this.thread.localLayer.parent)}),this.clearWorkShapeNodeCache(t))}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async consumeFull(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){const a=(r=t.workId)==null?void 0:r.toString();e.toolsType===o.EToolsKey.Image?await e.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this}):e.toolsType===o.EToolsKey.Text?await e.consumeServiceAsync({isFullWork:!0,replaceId:a}):e.consumeService({op:s,isFullWork:!0,replaceId:a}),t!=null&&t.updateNodeOpt&&e.updataOptService(t.updateNodeOpt);const i=[];t.workId&&this.workShapes.delete(t.workId.toString()),t.willSyncService&&i.push({opt:t.opt,toolsType:t.toolsType,type:o.EPostMessageType.FullWork,workId:t.workId,ops:t.ops,updateNodeOpt:t.updateNodeOpt,viewId:this.thread.viewId}),i.length&&this.thread.post({sp:i})}}async colloctEffectSelectWork(t){const e=this.workShapes.get(o.Storage_Selector_key),{workId:s,msgType:r}=t;if(e&&s&&e.selectIds&&e.selectIds.includes(s.toString())){r===o.EPostMessageType.RemoveNode?e.selectIds=e.selectIds.filter(a=>a!==s.toString()):this.effectSelectNodeData.add(t),await new Promise(a=>{setTimeout(()=>{a(!0)},0)}),await this.runEffectSelectWork(!0).then(()=>{var a;(a=this.effectSelectNodeData)==null||a.clear()});return}return t}async runEffectSelectWork(t){var e;for(const s of this.effectSelectNodeData.values()){const r=this.setFullWork(s);if(r){const a=(e=s.workId)==null?void 0:e.toString();if(r.toolsType===o.EToolsKey.Image)await r.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this});else if(r.toolsType===o.EToolsKey.Text)await r.consumeServiceAsync({isFullWork:!0,replaceId:a});else{const i=s.ops&&o.transformToNormalData(s.ops);r.consumeService({op:i,isFullWork:!0,replaceId:a}),s!=null&&s.updateNodeOpt&&r.updataOptService(s.updateNodeOpt)}s.workId&&this.workShapes.delete(s.workId.toString())}}this.reRenderSelector(t)}hasSelector(){return this.workShapes.has(o.Storage_Selector_key)}getSelector(){return this.workShapes.get(o.Storage_Selector_key)}reRenderSelector(t=!1){var r;const e=this.workShapes.get(o.Storage_Selector_key);if(!e)return;if(e&&!((r=e.selectIds)!=null&&r.length))return this.blurSelector();const s=e.reRenderSelector();s&&this.thread.post({sp:[{type:o.EPostMessageType.Select,selectIds:e.selectIds,selectRect:s,willSyncService:t,viewId:this.thread.viewId,points:e.getChildrenPoints(),textOpt:e.textOpt,selectorColor:e.selectorColor,strokeColor:e.strokeColor,fillColor:e.fillColor,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,opt:e.getWorkOptions()||void 0,canLock:e.canLock,isLocked:e.isLocked,toolsTypes:e.toolsTypes,shapeOpt:e.shapeOpt,thickness:e.thickness,useStroke:e.useStroke,strokeType:e.strokeType}]})}async blurSelector(t){var r;const e=this.workShapes.get(o.Storage_Selector_key),s=e==null?void 0:e.blurSelector();if(this.clearWorkShapeNodeCache(o.Storage_Selector_key),((r=this.thread.fullLayer)==null?void 0:r.parent).children.forEach(a=>{a.name===o.Storage_Selector_key&&a.remove()}),s){const a=[];a.push({...s,isSync:t==null?void 0:t.isSync}),this.thread.post({sp:a})}}clearWorkShapeNodeCache(t){var e;(e=this.getWorkShape(t))==null||e.clearTmpPoints(),this.workShapes.delete(t)}async drawBitMapEraserFull(t,e,s){const{willUpdateNodes:r,willDeleteNodes:a}=e,i=t.getWorkId(),n=[{type:o.EPostMessageType.RemoveNode,removeIds:[i],viewId:this.thread.viewId}];if(s&&n.push({type:o.EPostMessageType.None,isLockSentEventCursor:s}),r!=null&&r.size||a!=null&&a.size){if(r!=null&&r.size)for(const[l,c]of r)n.push({type:o.EPostMessageType.UpdateNode,dataType:o.EDataType.Local,opt:c.opt,workId:l,updateNodeOpt:{useAnimation:!1}});a!=null&&a.size&&n.push({type:o.EPostMessageType.RemoveNode,removeIds:[...a],viewId:this.thread.viewId})}n.length&&this.thread.post({sp:n})}drawPencilEraser(t,e){var r,a;const s=[];if((r=t.newWorkDatas)!=null&&r.size){for(const i of t.newWorkDatas.values()){const n=i.workId.toString();this.batchEraserWorks.add(n),s.push({type:o.EPostMessageType.FullWork,workId:n,ops:o.transformToSerializableData(i.op),opt:i.opt,toolsType:i.toolsType,updateNodeOpt:{useAnimation:!1}})}delete t.newWorkDatas}(a=t.removeIds)==null||a.forEach(i=>{this.batchEraserRemoveNodes.add(i)}),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),t.rect,this.thread.post({sp:s,consumeCount:this.consumeCount}),this.batchEraserCombine()}drawEraser(t,e){const s=[];t.removeIds&&s.push(t),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),this.thread.post({sp:s,consumeCount:this.consumeCount})}updateBatchEraserCombineNode(t,e){for(const s of e.keys())this.thread.fullLayer.getElementsByName(s).forEach(r=>{r.remove(),o.removeTexture(r,this.thread.fullLayer.parent)});t.forEach(s=>{const r=this.vNodes.get(s);if(r&&r.toolsType===o.EToolsKey.Pencil&&!this.thread.fullLayer.getElementsByName(s)[0]){const i=this.setFullWork({...r,workId:s});i&&i.consumeService({op:r.op,isFullWork:!0})}})}getWorkShape(t){return this.workShapes.get(t)}getWorkShapes(){return this.workShapes}consumeDraw(t,e){const{op:s,workId:r,scenePath:a,postCount:i}=t;if(s!=null&&s.length&&r){const n=r.toString(),l=this.workShapes.get(n);if(!l)return;const c=l.toolsType;if(c===o.EToolsKey.LaserPen)return;switch(this.drawWorkActiveId&&this.drawWorkActiveId!==n&&(this.consumeDrawAll({workId:this.drawWorkActiveId,scenePath:a,viewId:this.thread.viewId,msgType:o.EPostMessageType.DrawWork,dataType:o.EDataType.Local},e),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&n!==o.Storage_Selector_key&&(this.drawWorkActiveId=n),L.isNumber(i)&&(this.consumeCount=i),c){case o.EToolsKey.Selector:{const p=l.consume({data:t,isFullWork:!0});p.type===o.EPostMessageType.Select&&(p.selectIds&&e.runReverseSelectWork(p.selectIds),this.thread.post({sp:[p]}))}break;case o.EToolsKey.PencilEraser:{const p=l.consume({data:t,isFullWork:!0});this.drawPencilEraser(p)}break;case o.EToolsKey.BitMapEraser:{const p=l.consume({data:t,isFullWork:!1,isMainThread:!0});this.fullWorkerDrawCount++,this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:p.op&&[{...p,scenePath:a}]||void 0});break}case o.EToolsKey.Eraser:{const p=l.consume({data:t,isFullWork:!0});this.drawEraser(p)}break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const p=l.consume({data:t,isFullWork:!1,isMainThread:!0});p&&(this.fullWorkerDrawCount++,this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:p.op&&[{...p,scenePath:a}]||void 0}))}break}}}consumeDrawAll(t,e){var i,n,l;const{workId:s,scenePath:r,isLockSentEventCursor:a}=t;if(s){const c=s.toString();this.drawWorkActiveId===c&&(this.drawWorkActiveId=void 0);const p=this.workShapes.get(c);if(!p)return;const h=p.toolsType;if(h===o.EToolsKey.LaserPen)return;const y=this.workShapes.get(o.Cursor_Hover_Id),d=(i=y==null?void 0:y.selectIds)==null?void 0:i[0],m=p.consumeAll({data:t,workerEngine:this});switch(h){case o.EToolsKey.Selector:m.selectIds&&d&&((n=m.selectIds)!=null&&n.includes(d))&&y.cursorBlur(),m.type===o.EPostMessageType.Select&&(m.selectIds&&e.runReverseSelectWork(m.selectIds),this.thread.post({sp:[{...m,scenePath:r}]})),(l=p.selectIds)!=null&&l.length?p.clearTmpPoints():this.clearWorkShapeNodeCache(c);break;case o.EToolsKey.PencilEraser:this.drawPencilEraser({...m,scenePath:r},a),p.clearTmpPoints();break;case o.EToolsKey.BitMapEraser:this.drawBitMapEraserFull(p,m,a),this.fullWorkerDrawCount=0,this.clearWorkShapeNodeCache(c);break;case o.EToolsKey.Eraser:this.drawEraser({...m,scenePath:r},a),p.clearTmpPoints();break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const S=[];a&&S.push({type:o.EPostMessageType.None,isLockSentEventCursor:a}),m&&(S.push(m),this.fullWorkerDrawCount=0,this.thread.post({fullWorkerDrawCount:this.fullWorkerDrawCount,sp:S})),this.clearWorkShapeNodeCache(c);break}}}}getToolsOpt(){return this.tmpOpt}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}setWorkOptions(t,e){let s=this.workShapes.get(t);if(!s&&this.tmpOpt){const{toolsType:r}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:e}),s&&this.workShapes.set(t,s),this.setToolsOpt(this.tmpOpt)}e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s==null||s.setWorkOptions(e)}createWorkShapeNode(t){return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.localLayer},this.thread.serviceWork)}}class K{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"selectorWorkShapes",new Map);u(this,"willRunEffectSelectorIds",new Set);u(this,"runEffectId");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}destroy(){this.clearAll()}clearAll(){this.thread.serviceLayer.children.length&&(this.thread.serviceLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),o.removeAllChildren(this.thread.serviceLayer,this.thread.serviceLayer.parent)),this.workShapes.clear(),this.selectorWorkShapes.clear(),this.willRunEffectSelectorIds.clear()}runEffect(){this.runEffectId||(this.runEffectId=setTimeout(this.effectRunSelector.bind(this),0))}effectRunSelector(){this.runEffectId=void 0,this.willRunEffectSelectorIds.forEach(t=>{var s,r;const e=this.selectorWorkShapes.get(t);e&&e.selectIds&&((s=e.node)==null||s.selectServiceNode(t,e,!0)),(r=e==null?void 0:e.selectIds)!=null&&r.length||this.selectorWorkShapes.delete(t)}),this.willRunEffectSelectorIds.clear()}runSelectWork(t){this.activeSelectorShape(t);const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.willRunEffectSelectorIds.add(s),this.runEffect()}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();if(s){if(this.workShapes.get(s)){this.workShapes.delete(s),this.removeNode(s,t);return}this.removeNode(s,t)}}consumeFull(t){this.activeWorkShape(t),this.runAnimation()}runReverseSelectWork(t){t.forEach(e=>{this.selectorWorkShapes.forEach((s,r)=>{var a;if((a=s.selectIds)!=null&&a.length){const i=s.selectIds.indexOf(e);i>-1&&(s.selectIds.splice(i,1),this.willRunEffectSelectorIds.add(r))}})}),this.willRunEffectSelectorIds.size&&this.runEffect()}consumeDraw(t){this.activeWorkShape(t),this.runAnimation()}computNextAnimationIndex(t,e){const s=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(s||e),(t.animationWorkData||[]).length)}async animationDraw(){var s,r,a,i,n,l,c,p,h,y,d,m,S,k,T,E,D,R,x;this.animationId=void 0;let t=!1;const e=new Map;for(const[g,f]of this.workShapes.entries())switch(f.toolsType){case o.EToolsKey.Image:{await((s=f.node)==null?void 0:s.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((w,I)=>{var W;(W=w.selectIds)!=null&&W.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(g);break}case o.EToolsKey.Text:{f.node&&(await((r=f.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:g})),this.selectorWorkShapes.forEach((w,I)=>{var W;(W=w.selectIds)!=null&&W.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=f.node)==null||a.clearTmpPoints(),this.workShapes.delete(g));break}case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Rectangle:case o.EToolsKey.Ellipse:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:{const w=!!f.ops;if((i=f.animationWorkData)!=null&&i.length){const I=f.oldRect;(n=f.node)==null||n.consumeService({op:f.animationWorkData,isFullWork:w}),w&&(this.selectorWorkShapes.forEach((W,M)=>{var b;(b=W.selectIds)!=null&&b.includes(g)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(l=f.node)==null||l.clearTmpPoints(),this.workShapes.delete(g)),e.set(g,{workState:I?f.ops?o.EvevtWorkState.Done:o.EvevtWorkState.Doing:o.EvevtWorkState.Start,op:f.animationWorkData.filter((W,M)=>{if(M%3!==2)return!0}).slice(-2)}),f.animationWorkData.length=0}break}case o.EToolsKey.Pencil:{if(!f.useAnimation&&f.ops)(c=f.node)==null||c.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:g}),(p=f.node)==null||p.updataOptService(f.updateNodeOpt),this.selectorWorkShapes.forEach((w,I)=>{var W;(W=w.selectIds)!=null&&W.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(h=f.node)==null||h.clearTmpPoints(),this.workShapes.delete(g);else if(f.useAnimation){if(f.isDel){(y=f.node)==null||y.clearTmpPoints(),this.workShapes.delete(g);break}const w=3,I=this.computNextAnimationIndex(f,w),W=f.isDiff?0:Math.max(0,(f.animationIndex||0)-w),M=(f.animationWorkData||[]).slice(W,I),b=(m=(d=f.node)==null?void 0:d.getWorkId())==null?void 0:m.toString();if((f.animationIndex||0)<I||f.isDiff){if((S=f.node)==null||S.consumeService({op:M,isFullWork:!1}),f.animationIndex=I,f.isDiff&&(f.isDiff=!1),M.length){const O=M.filter((P,A)=>{if(A%w!==w-1)return!0}).slice(-2);e.set(g,{workState:W===0?o.EvevtWorkState.Start:I===((k=f.animationWorkData)==null?void 0:k.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:O})}}else f.ops&&((T=f.node)==null||T.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:b}),f.isDel=!0,e.set(g,{workState:o.EvevtWorkState.Done,op:M.filter((O,P)=>{if(P%w!==w-1)return!0}).slice(-2)}));t=!0;break}break}case o.EToolsKey.BitMapEraser:case o.EToolsKey.PencilEraser:{if(f.isDel){(E=f.node)==null||E.clearTmpPoints(),this.workShapes.delete(g);break}if(f.ops&&((D=f.animationWorkData)!=null&&D.length)){const w=f.animationWorkData.slice(-3,-1);e.set(g,{workState:o.EvevtWorkState.Done,op:w}),f.isDel=!0;break}if(f.useAnimation){const I=this.computNextAnimationIndex(f,3),W=f.isDiff?0:Math.max(0,(f.animationIndex||0)-3),M=(f.animationWorkData||[]).slice(W,I);if(((f.animationIndex||0)<I||f.isDiff)&&((R=f.node)==null||R.consumeService({op:M,isFullWork:f.toolsType!==o.EToolsKey.BitMapEraser}),f.animationIndex=I,f.isDiff&&(f.isDiff=!1),M.length)){const b=M.filter((O,P)=>{if(P%3!==2)return!0}).slice(-2);e.set(g,{workState:W===0?o.EvevtWorkState.Start:I===((x=f.animationWorkData)==null?void 0:x.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:b})}t=!0;break}break}}if(t&&this.runAnimation(),e.size){const g=[];e.forEach((f,w)=>{g.push({type:o.EPostMessageType.Cursor,uid:w.split(o.Storage_Splitter)[0],op:f.op,workState:f.workState,viewId:this.thread.viewId})}),this.thread.post({sp:g})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,s){const r=t.length;if(e.length<r)return!0;switch(s){case o.EToolsKey.Pencil:{for(let a=0;a<r;a+=3)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}case o.EToolsKey.LaserPen:{for(let a=0;a<r;a+=2)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}}return!1}activeWorkShape(t){var m,S,k,T;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:n,op:l,useAnimation:c,imageBitmap:p}=t;if(!e)return;const h=e.toString(),y=(m=this.vNodes.get(h))==null?void 0:m.rect;if(!((S=this.workShapes)!=null&&S.has(h))){let E={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:n,useAnimation:typeof c<"u"?c:typeof(i==null?void 0:i.useAnimation)<"u"?i==null?void 0:i.useAnimation:!0,oldRect:y,isDiff:!1,imageBitmap:p};r&&s&&(E=this.setNodeKey(h,E,r,s)),(k=this.workShapes)==null||k.set(h,E)}const d=(T=this.workShapes)==null?void 0:T.get(h);a&&(d.type=a),n&&(d.animationWorkData=o.transformToNormalData(n),d.ops=n),i&&(d.updateNodeOpt=i),l&&(d.isDiff=this.hasDiffData(d.animationWorkData||[],l,d.toolsType),d.animationWorkData=l),d.node&&d.node.getWorkId()!==h&&d.node.setWorkId(h),y&&(d.oldRect=y),r&&s&&(s.syncUnitTime&&(this.syncUnitTime=s.syncUnitTime),d.toolsType!==r&&r&&s&&this.setNodeKey(h,d,r,s),d.node&&d.node.setWorkOptions(s)),p&&(d.imageBitmap=p)}removeNode(t,e){t.indexOf(o.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(s=>{s.remove(),o.removeTexture(s,this.thread.fullLayer.parent)}),this.thread.serviceLayer.getElementsByName(t).forEach(s=>{s.remove(),o.removeTexture(s,this.thread.serviceLayer.parent)}),this.vNodes.delete(t)}removeSelectWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&(this.activeSelectorShape(t),this.willRunEffectSelectorIds.add(s)),this.runEffect()}activeSelectorShape(t){var c,p,h;const{workId:e,opt:s,toolsType:r,type:a,selectIds:i}=t;if(!e)return;const n=e.toString();if(!((c=this.selectorWorkShapes)!=null&&c.has(n))){let y={toolsType:r,selectIds:i,type:a,opt:s};r&&s&&(y=this.setNodeKey(n,y,r,s)),(p=this.selectorWorkShapes)==null||p.set(n,y)}const l=(h=this.selectorWorkShapes)==null?void 0:h.get(n);a&&(l.type=a),l.node&&l.node.getWorkId()!==n&&l.node.setWorkId(n),l.selectIds=i||[]}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=o.getShapeInstance({toolsType:s,toolsOpt:r,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.serviceLayer,workId:t},this),e}}class N{constructor(){u(this,"localWork");u(this,"serviceWork");u(this,"threadEngine")}registerMainThread(t){return this.threadEngine=t,this.localWork=t.localWork,this.serviceWork=t.serviceWork,this}}class z extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.CopyNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.FullWork&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:s}=e;s&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class q extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetColorNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:n,textUpdateForWoker:l}=s,c=r.sp||[];if(i)for(const[p,h]of a.entries())l&&h.toolsType===o.EToolsKey.Text?c.push({...h,workId:p,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):c.push({...h,workId:p,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});return{sp:c}}}class H extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ZIndexNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:n}=s,l=r.sp||[];if(i&&l)for(const[c,p]of a.entries())l.push({...p,workId:c,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});return{sp:l}}}class V extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.TranslateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p,h;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l,emitEventType:c}=e;s===o.Storage_Selector_key&&r&&(r.workState===o.EvevtWorkState.Done&&(r!=null&&r.translate)&&(r.translate[0]||r.translate[1])||r.workState!==o.EvevtWorkState.Done?await((p=this.localWork)==null?void 0:p.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,isSync:!0,textUpdateForWoker:l,emitEventType:c,callback:this.updateSelectorCallback})):r.workState===o.EvevtWorkState.Done&&((h=this.localWork)==null||h.vNodes.deleteLastTarget()))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=p.workState,d=r.sp||[];if(y===o.EvevtWorkState.Start)return{sp:[],render:[]};const m=n==null?void 0:n.selectRect;if(l){y===o.EvevtWorkState.Doing&&d.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:m,willSyncService:!0,isSync:!0,points:i.getChildrenPoints(),textOpt:i.textOpt});for(const[S,k]of a.entries())h&&k.toolsType===o.EToolsKey.Text?d.push({...k,workId:S,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):d.push({...k,workId:S,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c})}return{sp:d}}}class $ extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.DeleteNode)}async consume(){return!1}}class G extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ScaleNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willSyncService:a,willSerializeData:i}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willSyncService:a,willSerializeData:i,isSync:!0,callback:this.updateSelectorCallback.bind(this)}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:n}=e,{updateSelectorOpt:l,willSyncService:c}=s,p=l.workState,h=r.sp||[],y=i==null?void 0:i.selectRect;if(p===o.EvevtWorkState.Start)return{sp:[],render:[]};if(c){h.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:y,willSyncService:!0,isSync:!0,points:p===o.EvevtWorkState.Done&&a.getChildrenPoints()||void 0,textOpt:a.textOpt});for(const[d,m]of n.entries())m.toolsType===o.EToolsKey.Text?h.push({...m,workId:d,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):h.push({...m,workId:d,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:!0})}return{sp:h}}}class j extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.RotateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,emitEventType:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,emitEventType:l,isSync:!0,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:n}=e,{updateSelectorOpt:l,willSyncService:c,willSerializeData:p,isSync:h}=s,y=l.workState,d=r.sp||[],m=i==null?void 0:i.selectRect;if(c){p&&y===o.EvevtWorkState.Done&&d.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:m,willSyncService:!0,isSync:h,points:a.getChildrenPoints()});for(const[S,k]of n.entries())d.push({...k,workId:S,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:h})}return{sp:d}}}class Z extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetFontStyle)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=r.sp||[],d=n==null?void 0:n.selectRect;if(l&&y){p.fontSize&&y.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:d,willSyncService:l,isSync:c,points:i.getChildrenPoints()});for(const[m,S]of a.entries())h&&S.toolsType===o.EToolsKey.Text?y.push({...S,workId:m,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):y.push({...S,workId:m,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c})}return{sp:y}}}class X extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetPoint)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,emitEventType:this.emitEventType,willSerializeData:n,isSync:!0,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c}=s,p=r.sp||[],h=n==null?void 0:n.selectRect;if(l&&p){for(const[y,d]of a.entries())p.push({...d,workId:y,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});p.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:h,willSyncService:l,isSync:c,points:i.getChildrenPoints()})}return{sp:p}}}class Y extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetLock)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c,updateSelectorOpt:p}=s,h=r.sp||[],y=n==null?void 0:n.selectRect;if(l&&h){for(const[d,m]of a.entries())h.push({...m,workId:d,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});h.push({isLocked:p.isLocked,selectorColor:i.selectorColor,scaleType:i.scaleType,canRotate:i.canRotate,type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:y,willSyncService:l,isSync:c})}return{sp:h}}}class Q extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:n}=s,l=r.sp||[];if(i&&l)for(const[c,p]of a.entries())l.push({...p,workId:c,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});return{sp:l}}}class J{constructor(t){u(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case o.EmitEventType.TranslateNode:return new V;case o.EmitEventType.ZIndexNode:return new H;case o.EmitEventType.CopyNode:return new z;case o.EmitEventType.SetColorNode:return new q;case o.EmitEventType.DeleteNode:return new $;case o.EmitEventType.ScaleNode:return new G;case o.EmitEventType.RotateNode:return new j;case o.EmitEventType.SetFontStyle:return new Z;case o.EmitEventType.SetPoint:return new X;case o.EmitEventType.SetLock:return new Y;case o.EmitEventType.SetShapeOpt:return new Q}}registerForMainThread(t){return this.builders.forEach(e=>{e&&e.registerMainThread(t)}),this}async consumeForMainThread(t){for(const e of this.builders.values())if(await(e==null?void 0:e.consume(t)))return!0;return!1}}class ee{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"topLayer");u(this,"localLayer");u(this,"serviceLayer");u(this,"snapshotFullLayer");u(this,"vNodes");u(this,"master");u(this,"opt");u(this,"cameraOpt");u(this,"scene");u(this,"localWork");u(this,"serviceWork");u(this,"topWork");u(this,"taskUpdateCameraId");u(this,"debounceUpdateCameraId");u(this,"debounceUpdateCache",new Set);u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"methodBuilder");u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master;const s=o.DefaultAppliancePluginOptions.bufferSize.full,r=o.DefaultAppliancePluginOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?s:r*2}),this.topLayer=this.createLayer("topLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r),contextType:"2d"}),this.localLayer=this.createLayer("localLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r),contextType:"2d"}),this.serviceLayer=this.createLayer("serviceLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r),contextType:"2d"}),this.vNodes=new o.VNodeManager(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new _(a),this.serviceWork=new K(a),this.topWork=new U(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new J([o.EmitEventType.CopyNode,o.EmitEventType.SetColorNode,o.EmitEventType.DeleteNode,o.EmitEventType.RotateNode,o.EmitEventType.ScaleNode,o.EmitEventType.TranslateNode,o.EmitEventType.ZIndexNode,o.EmitEventType.SetFontStyle,o.EmitEventType.SetPoint,o.EmitEventType.SetLock,o.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}updateDpr(t){this.scene.displayRatio=t}async on(t){if(!await this.methodBuilder.consumeForMainThread(t)){const{msgType:e,toolsType:s,opt:r,dataType:a,workId:i,workState:n,imageSrc:l,imageBitmap:c,workIds:p}=t,h=i==null?void 0:i.toString();switch(e){case o.EPostMessageType.UpdateDpr:L.isNumber(t.dpr)&&this.updateDpr(t.dpr);break;case o.EPostMessageType.AuthClear:{const{clearUids:y,localUid:d}=t;this.vNodes.setCanClearUids(y),this.vNodes.setLocalUid(d);break}case o.EPostMessageType.Destroy:this.destroy();break;case o.EPostMessageType.Clear:this.clearAll();break;case o.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case o.EPostMessageType.UpdateTools:if(s&&r){const y={toolsType:s,toolsOpt:r};this.topWork.canUseTopLayer(s)?this.topWork.setToolsOpt(y):this.localWork.setToolsOpt(y)}break;case o.EPostMessageType.CreateWork:if(h&&r&&s){if(this.topWork.canUseTopLayer(s)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.topWork.setWorkOptions(h,r);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.localWork.setWorkOptions(h,r)}break;case o.EPostMessageType.DrawWork:n===o.EvevtWorkState.Done&&a===o.EDataType.Local?this.consumeDrawAll(a,t):this.consumeDraw(a,t);break;case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:if(s&&this.topWork.canUseTopLayer(s)){this.consumeDrawAll(a,t);break}this.consumeFull(a,t);break;case o.EPostMessageType.RemoveNode:await this.removeNode(t);return;case o.EPostMessageType.Select:a===o.EDataType.Service&&(i===o.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case o.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case o.EPostMessageType.GetTextActive:a===o.EDataType.Local&&this.localWork.checkTextActive(t);break;case o.EPostMessageType.GetImageBitMap:if(l&&c&&i){const y=i.toString();this.deleteCachedImagesByWorkId(y),this.cacheImages.set(l,{imageBitmap:c,workId:y});const d=this.imageResolveMap.get(l);if(d){const{resolve:m,timer:S}=d;S&&clearTimeout(S),m&&m(l)}}break;case o.EPostMessageType.GetVNodeInfo:if(i&&p){const y=p.map(d=>this.vNodes.get(d));this.post({sp:[{type:o.EPostMessageType.GetVNodeInfo,dataType:o.EDataType.Local,workId:i,vInfo:y}]})}break}}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:n,width:l,height:c,strokeColor:p}=s;if(!i||!n||!l||!c)return;let h=i;if(n===o.EImageType.Iconify){const[S,k]=this.getIconSize(l,c,this.opt.displayer.dpr);h=`${i}?width=${S}&height=${k}&color=${p}`}if(this.cacheImages.has(h)){const S=this.getCachedImages(h);if(S)return S}if(this.imageResolveMap.has(h)){const S=this.getCachedImagesByWorkId(a);if(S)return S}const m=await new Promise(S=>{const k=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};k.timer&&clearTimeout(k.timer),k.resolve=S,k.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,k),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(m),this.getCachedImages(h)}}async removeNode(t){const{dataType:e,workId:s,removeIds:r}=t,a=r||[];if(s&&a.push(s.toString()),a.length)for(const i of a){if(i===o.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===o.EDataType.Local?this.localWork.removeWork(t):e===o.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const s=await this.localWork.colloctEffectSelectWork(e);s&&t===o.EDataType.Local&&await this.localWork.consumeFull(s),s&&t===o.EDataType.Service&&this.serviceWork.consumeFull(s)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;(a!==this.scene.width||i!==this.scene.height)&&this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-s,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-s,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var r;this.mainThreadPostId=void 0;const t=[];let e,s;for(const a of this.combinePostMsg.values()){if((r=a.sp)!=null&&r.length)for(const i of a.sp){let n=!1;for(const l of t)if(L.isEqual(i,l)){n=!0;break}n||t.push(i)}L.isNumber(a.fullWorkerDrawCount)&&(e=a.fullWorkerDrawCount),L.isNumber(a.consumeCount)&&(s=a.consumeCount)}return this.combinePostMsg.clear(),{sp:t,fullWorkerDrawCount:e,consumeCount:s}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,t.consumeCount===void 0&&delete t.consumeCount,t.fullWorkerDrawCount===void 0&&delete t.fullWorkerDrawCount,(t!=null&&t.consumeCount||t!=null&&t.fullWorkerDrawCount||(r=t.sp)!=null&&r.length)&&this.opt.post(t)}clearAll(){this.fullLayer.children.length&&(this.fullLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),o.removeAllChildren(this.fullLayer,this.fullLayer.parent)),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.clearAll(),this.topWork.clearAll(),this.serviceWork.clearAll(),this.vNodes.clear(),this.post({sp:[{type:o.EPostMessageType.Clear}]})}consumeDrawAll(t,e){const{toolsType:s,workId:r}=e;if(r){const a=r.toString();if(s&&this.topWork.canUseTopLayer(s)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(r.toString())||this.topWork.createLocalWork(e)),this.topWork.consumeDrawAll(e);return}t===o.EDataType.Local&&(this.localWork.getWorkShape(a)||this.localWork.createLocalWork(e),this.localWork.consumeDrawAll(e,this.serviceWork))}}consumeDraw(t,e){const{opt:s,workId:r,toolsType:a}=e;if(r&&a&&s){const i=r.toString();if(this.topWork.canUseTopLayer(a)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(i)||this.topWork.createLocalWork(e)),this.topWork.consumeDraw(e);return}t===o.EDataType.Local?(this.localWork.getWorkShape(i)||this.localWork.createLocalWork(e),this.localWork.consumeDraw(e,this.serviceWork)):t===o.EDataType.Service&&this.serviceWork.consumeDraw(e);return}}async updateCamera(t){var r;const{cameraOpt:e,scenePath:s}=t;if(e&&!L.isEqual(this.cameraOpt,e)){if(this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),s){let c=!1;for(const[p,h]of this.localWork.getWorkShapes().entries())switch(h.toolsType){case o.EToolsKey.Text:case o.EToolsKey.BitMapEraser:case o.EToolsKey.PencilEraser:case o.EToolsKey.Eraser:case o.EToolsKey.Selector:case o.EToolsKey.LaserPen:break;default:p!==o.Cursor_Hover_Id&&p!==o.Storage_Selector_key&&(c=!0);break}if(c){this.taskUpdateCameraId=setTimeout(()=>{this.taskUpdateCameraId=void 0,this.updateCamera(t)},o.Task_Time_Interval);return}}const a=new Map;for(const[c,p]of this.vNodes.getNodesByType(o.EToolsKey.Text).entries()){const h=p.rect;a.set(c,L.cloneDeep(h))}const i=new Set(a.keys());let n=!1;if(this.localWork.hasSelector()){const c=(r=this.localWork.getSelector())==null?void 0:r.selectIds;if(c){n=!0;for(const p of c)i.add(p)}}let l=!1;if(this.serviceWork.selectorWorkShapes.size)for(const c of this.serviceWork.selectorWorkShapes.values()){const p=c.selectIds;if(p){l=!0;for(const h of p)i.add(h)}}if(this.setCameraOpt(e),this.vNodes.curNodeMap.size){this.vNodes.clearTarget(),this.vNodes.updateHighLevelNodesRect(i),this.debounceUpdateCameraId&&clearTimeout(this.debounceUpdateCameraId);for(const[c,p]of a.entries()){const h=this.vNodes.get(c);if(h){const y=p,d=h.rect,m=this.getSceneRect(),S=o.getRectMatrixrRelation(y,m),k=o.getRectMatrixrRelation(d,m);let T=!1;if((S!==k||y.w!==d.w||y.h!==d.h||k===o.EMatrixrRelationType.intersect)&&(T=!0),T){const{toolsType:E,opt:D}=h;E===o.EToolsKey.Text&&D.workState===o.EvevtWorkState.Done&&this.debounceUpdateCache.add(c)}}}if(n&&this.localWork.reRenderSelector(),l)for(const[c,p]of this.serviceWork.selectorWorkShapes.entries())this.serviceWork.runSelectWork({workId:c,selectIds:p.selectIds,msgType:o.EPostMessageType.Select,dataType:o.EDataType.Service,viewId:this.viewId});this.debounceUpdateCameraId=setTimeout(()=>{var p;this.debounceUpdateCameraId=void 0;const c=[];for(const h of this.debounceUpdateCache.values()){if((p=this.fullLayer)==null?void 0:p.getElementsByName(h)[0]){const d=this.vNodes.get(h);if(d){const{toolsType:m,opt:S,rect:k}=d,T=this.localWork.setFullWork({toolsType:m,opt:S,workId:h});if(T){const E=this.getSceneRect(),D=o.getRectMatrixrRelation(k,E);c.push(T.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:D!==o.EMatrixrRelationType.outside}))}}}this.debounceUpdateCache.delete(h)}this.vNodes.updateLowLevelNodesRect(),this.vNodes.clearHighLevelIds()},o.Task_Time_Interval)}}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}createScene(t){return new C.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!0,id:this.viewId,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,n=e.layer(i,{...s,offscreen:!1}),l=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return n.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5]),this.topLayer.parent.setAttribute("width",e),this.topLayer.parent.setAttribute("height",s),this.topLayer.setAttribute("size",[e,s]),this.topLayer.setAttribute("pos",[e*.5,s*.5]),this.localLayer.parent.setAttribute("width",e),this.localLayer.parent.setAttribute("height",s),this.localLayer.setAttribute("size",[e,s]),this.localLayer.setAttribute("pos",[e*.5,s*.5]),this.serviceLayer.parent.setAttribute("width",e),this.serviceLayer.parent.setAttribute("height",s),this.serviceLayer.setAttribute("size",[e,s]),this.serviceLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.vNodes.clear(),this.fullLayer.remove(),o.removeTexture(this.fullLayer,this.fullLayer.parent),this.topLayer.remove(),o.removeTexture(this.topLayer,this.topLayer.parent),this.localLayer.remove(),o.removeTexture(this.localLayer,this.localLayer.parent),this.serviceLayer.remove(),o.removeTexture(this.serviceLayer,this.serviceLayer.parent),this.scene.remove(),this.localWork.destroy(),this.serviceWork.destroy(),this.topWork.destroy()}}class te{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"master");u(this,"opt");u(this,"scene");u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"workShapes",new Map);u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master,this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?6e3:3e3,contextType:"2d"})}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}async on(t){const{msgType:e,imageSrc:s,imageBitmap:r,workId:a}=t;switch(e){case o.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case o.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case o.EPostMessageType.GetImageBitMap:if(s&&r&&a){const i=a.toString();this.deleteCachedImagesByWorkId(i),this.cacheImages.set(s,{imageBitmap:r,workId:i});const n=this.imageResolveMap.get(s);if(n){const{resolve:l,timer:c}=n;c&&clearTimeout(c),l&&l(s)}}break}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:n,width:l,height:c,strokeColor:p}=s;if(!i||!n||!l||!c)return;let h=i;if(n===o.EImageType.Iconify){const[S,k]=this.getIconSize(l,c,this.opt.displayer.dpr);h=`${i}?width=${S}&height=${k}&color=${p}`}if(this.cacheImages.has(h)){const S=this.getCachedImages(h);if(S)return S}if(this.imageResolveMap.has(h)){const S=this.getCachedImagesByWorkId(a);if(S)return S}const m=await new Promise(S=>{const k=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};k.timer&&clearTimeout(k.timer),k.resolve=S,k.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,k),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(m),this.getCachedImages(h)}}createWorkShapeNode(t){return o.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){let a,i;const n=(r=e.getWorkId())==null?void 0:r.toString();return e.toolsType===o.EToolsKey.Image?a=await e.consumeServiceAsync({isFullWork:!0,worker:this}):e.toolsType===o.EToolsKey.Text?a=await e.consumeServiceAsync({isFullWork:!0,replaceId:n,isDrawLabel:!0}):(a=e.consumeService({op:s,isFullWork:!0,replaceId:n}),i=(t==null?void 0:t.updateNodeOpt)&&e.updataOptService(t.updateNodeOpt)),o.computRect(a,i)}}async getSnapshot(t){const{scenePath:e,scenes:s,cameraOpt:r,w:a,h:i}=t;if(e&&s&&r){this.setCameraOpt(r);let n;for(const[c,p]of Object.entries(s))if(p!=null&&p.type)switch(p==null?void 0:p.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const{opt:h}=p,y={...p,opt:h,workId:c,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId},d=await this.runFullWork(y);n=o.computRect(n,d);break}}let l;a&&i&&(l={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:l})}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}getRectImageBitmap(t,e){const s=Math.floor(t.x*this.opt.displayer.dpr),r=Math.floor(t.y*this.opt.displayer.dpr),a=t.w>0&&Math.floor(t.w*this.opt.displayer.dpr||1)||1,i=t.h>0&&Math.floor(t.h*this.opt.displayer.dpr||1)||1;return createImageBitmap(this.fullLayer.parent.canvas,s,r,a,i,e)}async getSnapshotRender(t){var a;const{scenePath:e,options:s}=t;((a=this.fullLayer)==null?void 0:a.parent).render();const r=await this.getRectImageBitmap(this.getSceneRect(),s);r&&(this.post({sp:[{type:o.EPostMessageType.Snapshot,scenePath:e,imageBitmap:r,viewId:this.viewId}]}),this.fullLayer&&o.removeAllChildren(this.fullLayer,this.fullLayer.parent))}async getBoundingRect(t){const{scenePath:e,scenes:s,cameraOpt:r}=t;if(e&&s&&r){this.setCameraOpt(r);let a;for(const[i,n]of Object.entries(s))if(n!=null&&n.type)switch(n==null?void 0:n.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const l=await this.runFullWork({...n,workId:i,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId});a=o.computRect(a,l);break}}a&&this.post({sp:[{type:o.EPostMessageType.BoundingBox,scenePath:e,rect:a}]})}}setCameraOpt(t){const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var e;this.mainThreadPostId=void 0;const t=[];for(const s of this.combinePostMsg.values())if((e=s.sp)!=null&&e.length)for(const r of s.sp){let a=!1;for(const i of t)if(o.isEqual(r,i)){a=!0;break}a||t.push(r)}return this.combinePostMsg.clear(),{sp:t}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,(r=t.sp)!=null&&r.length&&this.opt.post(t)}createScene(t){return new C.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!1,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,n=e.layer(i,s),l=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return n.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.fullLayer.remove(),o.removeTexture(this.fullLayer,this.fullLayer.parent),this.scene.remove()}}class se{constructor(t){u(this,"mainThreadMap",new Map);u(this,"snapshotThread");u(this,"master");this.master=t}post(t){const{fullWorkerDrawCount:e,sp:s,workerTasksqueueCount:r,consumeCount:a}=t;this.master.isBusy&&o.isNumber(r)&&this.master.setWorkerTasksqueueCount(r),o.isNumber(e)&&this.master.setMaxDrawCount(e),o.isNumber(a)&&this.master.setConsumeCount(a),s&&this.master.collectorSyncData(s)}destroy(){this.mainThreadMap.clear()}createMainThread(t,e){return new ee(t,e)}createSnapshotThread(t,e){return new te(t,e)}async consume(t){var e,s,r,a;for(const i of t.values()){const{msgType:n,viewId:l,tasksqueue:c,mainTasksqueueCount:p,layerOpt:h,offscreenCanvasOpt:y,cameraOpt:d,isSubWorker:m}=i;if(n===o.EPostMessageType.Console){console.log(this);continue}if(n===o.EPostMessageType.Init){const k=(e=this.master.control.viewContainerManager.getView(l))==null?void 0:e.displayer,T=k==null?void 0:k.canvasContainerRef.current;if(k&&T&&h&&y){const E=this.createMainThread(l,{displayer:k,container:T,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(l,E),E&&d&&E.setCameraOpt(d)}continue}if((n===o.EPostMessageType.Snapshot||n===o.EPostMessageType.BoundingBox)&&l===((s=this.master.control.viewContainerManager.mainView)==null?void 0:s.id)){const k=(r=this.master.control.viewContainerManager.getView(l))==null?void 0:r.displayer,T=(a=k.snapshotContainerRef)==null?void 0:a.current;if(k&&T&&d){T.style.width=`${d.width}px`,T.style.height=`${d.height}px`;const E={...o.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:d.width,height:d.height},D={...o.ViewContainerManager.defaultScreenCanvasOpt,width:d.width,height:d.height};this.snapshotThread=this.createSnapshotThread(l,{displayer:k,container:T,layerOpt:E,master:this.master,canvasOpt:D,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,T.innerHTML="",T.style.width="",T.style.height=""});continue}}if(n===o.EPostMessageType.GetImageBitMap&&m&&this.snapshotThread){this.snapshotThread.on(i);continue}if(n===o.EPostMessageType.TasksQueue&&(c!=null&&c.size)){for(const[k,T]of this.mainThreadMap.entries()){const E=c.get(k);E&&(await T.on(E),p&&this.post({workerTasksqueueCount:p}))}continue}if(l===o.Storage_ViewId_ALL){for(const k of this.mainThreadMap.values())k.on(i),n===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l);continue}const S=this.mainThreadMap.get(l);S&&(S.on(i),n===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l))}}}exports.MainThreadManagerImpl=se;
1
+ "use strict";var F=Object.defineProperty;var B=(v,t,e)=>t in v?F(v,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):v[t]=e;var u=(v,t,e)=>B(v,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-DX_ZeDrQ.js"),C=require("spritejs"),L=require("lodash");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class U{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"serviceWorkShapes",new Map);u(this,"localWorkShapes",new Map);u(this,"tmpOpt");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const s={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...s,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:o.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===o.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),o.removeAllChildren(this.thread.serviceLayer,this.thread.serviceLayer.parent)),this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}consumeDraw(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consume({data:t,isFullWork:!1,isSubWorker:!0});i.rect&&(a.result=i,a.workState=o.EvevtWorkState.Doing,r&&this.localWorkShapes.set(r,a))}this.runAnimation()}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}createWorkShapeNode(t){const{toolsType:e}=t;if(e===o.EToolsKey.LaserPen)return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.topLayer,drawLayer:this.thread.topLayer})}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=this.createWorkShapeNode({workId:t,toolsType:s,toolsOpt:r}),e}activeServiceWorkShape(t){var y,d;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:n,op:l}=t;if(!e)return;const c=e.toString(),p=(y=this.vNodes.get(c))==null?void 0:y.rect;if(!((d=this.serviceWorkShapes)!=null&&d.has(c))){let m={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:n,oldRect:p};r&&s&&(m=this.setNodeKey(c,m,r,s)),this.serviceWorkShapes.set(c,m)}const h=this.serviceWorkShapes.get(c);a&&(h.type=a),n&&(h.animationWorkData=o.transformToNormalData(n),h.ops=n),i&&(h.updateNodeOpt=i),l&&(h.animationWorkData=l),h.node&&h.node.getWorkId()!==c&&h.node.setWorkId(c),p&&(h.oldRect=p),r&&s&&(h.toolsType!==r&&r&&s&&this.setNodeKey(c,h,r,s),h.node&&h.node.setWorkOptions(s))}computNextAnimationIndex(t,e){var a;const s=((a=t.node)==null?void 0:a.syncUnitTime)||this.syncUnitTime,r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/s)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}animationDraw(){var r,a,i,n;this.animationId=void 0;let t=!1;const e=new Map,s=[];for(const[l,c]of this.serviceWorkShapes.entries())switch(c.toolsType){case o.EToolsKey.LaserPen:{const h=this.computNextAnimationIndex(c,8),y=Math.max(0,c.animationIndex||0),d=(c.animationWorkData||[]).slice(y,h);if((c.animationIndex||0)<h&&((r=c.node)==null||r.consumeService({op:d,isFullWork:!1}),c.animationIndex=h,d.length&&e.set(l,{workState:y===0?o.EvevtWorkState.Start:h===((a=c.animationWorkData)==null?void 0:a.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:d.slice(-2)})),c.isDel){(i=c.node)==null||i.clearTmpPoints(),this.serviceWorkShapes.delete(l);break}c.ops&&c.animationIndex===((n=c.animationWorkData)==null?void 0:n.length)&&!c.isDel&&(this.thread.topLayer.getElementsByName(l.toString())[0]||(c.isDel=!0,this.serviceWorkShapes.set(l,c))),t=!0;break}}for(const[l,c]of this.localWorkShapes.entries()){const{result:p,toolsType:h,isDel:y,workState:d}=c;switch(h){case o.EToolsKey.LaserPen:{if(y){c.node.clearTmpPoints(),this.localWorkShapes.delete(l),s.push({removeIds:[l.toString()],type:o.EPostMessageType.RemoveNode});break}p&&((p.op||p.ops)&&s.push(p),c.result=void 0),!this.thread.topLayer.getElementsByName(l.toString())[0]&&d===o.EvevtWorkState.Done&&(c.isDel=!0,this.localWorkShapes.set(l,c)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((l,c)=>{s.push({type:o.EPostMessageType.Cursor,uid:c.split(o.Storage_Splitter)[0],op:l.op,workState:l.workState,viewId:this.thread.viewId})}),s.length&&this.thread.post({sp:s})}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}setWorkOptions(t,e){var r;let s=(r=this.localWorkShapes.get(t))==null?void 0:r.node;if(!s&&this.tmpOpt){const{toolsType:a}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:a,toolsOpt:e}),s&&this.localWorkShapes.set(t,{node:s,toolsType:a,workState:o.EvevtWorkState.Start}),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s&&s.setWorkOptions(e)}consumeDrawAll(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consumeAll({data:t});a.result=i,a.workState=o.EvevtWorkState.Done,r&&this.localWorkShapes.set(r,a)}this.runAnimation()}}class _{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"effectSelectNodeData",new Set);u(this,"batchEraserRemoveNodes",new Set);u(this,"batchEraserWorks",new Set);u(this,"tmpOpt");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);u(this,"fullWorkerDrawCount",0);u(this,"drawWorkActiveId");u(this,"consumeCount",0);u(this,"batchEraserCombine",o.throttle(()=>{this.updateBatchEraserCombineNode(this.batchEraserWorks,this.batchEraserRemoveNodes),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()},100,{leading:!1}));this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}async updateSelector(t){var y;const e=this.workShapes.get(o.Storage_Selector_key);if(!((y=e==null?void 0:e.selectIds)!=null&&y.length))return;const{callback:s,...r}=t,{updateSelectorOpt:a,willSerializeData:i}=r,n=await(e==null?void 0:e.updateSelector({updateSelectorOpt:a,selectIds:L.cloneDeep(e.selectIds),vNodes:this.vNodes,willSerializeData:i,worker:this})),l=new Map;let c;n!=null&&n.selectIds&&(c=L.xor(e.selectIds,n.selectIds),n.selectIds.forEach(d=>{const m=this.vNodes.get(d);if(m){const{toolsType:S,op:k,opt:T}=m;l.set(d,{opt:T,toolsType:S,ops:(k==null?void 0:k.length)&&o.transformToSerializableData(k)||void 0})}}),e.selectIds=n.selectIds);const p=[],h=s&&s({res:n,workShapeNode:e,param:r,postData:{sp:p},newServiceStore:l})||{sp:p};c&&h.sp.push({type:o.EPostMessageType.RemoveNode,removeIds:c,viewId:this.thread.viewId}),h.sp.length&&this.thread.post(h)}destroy(){this.clearAll()}clearAll(){if(this.thread.localLayer.children.length&&(this.thread.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),o.removeAllChildren(this.thread.localLayer,this.thread.localLayer.parent)),this.workShapes.get(o.Storage_Selector_key)){const e=[];e.push({type:o.EPostMessageType.Select,dataType:o.EDataType.Local,selectIds:[],willSyncService:!1}),this.thread.post({sp:e})}this.workShapes.clear(),this.effectSelectNodeData.clear(),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()}async checkTextActive(t){const{op:e,viewId:s,dataType:r}=t;if(e!=null&&e.length){let a;for(const i of this.vNodes.curNodeMap.values()){const{rect:n,name:l,toolsType:c,opt:p}=i,h=e[0]*this.thread.fullLayer.worldScaling[0]+this.thread.fullLayer.worldPosition[0],y=e[1]*this.thread.fullLayer.worldScaling[1]+this.thread.fullLayer.worldPosition[1];if(c===o.EToolsKey.Text&&o.isIntersectForPoint([h,y],n)&&p.workState===o.EvevtWorkState.Done){a=l;break}}a&&(await this.blurSelector({viewId:s,msgType:o.EPostMessageType.Select,dataType:r,isSync:!0}),this.thread.post({sp:[{type:o.EPostMessageType.GetTextActive,toolsType:o.EToolsKey.Text,workId:a}]}))}}cursorHover(t){const{opt:e,toolsType:s,point:r}=t,a=this.setFullWork({workId:o.Cursor_Hover_Id,toolsType:s,opt:e});a&&r&&a.cursorHover(r)}updateFullSelectWork(t){var r,a,i,n,l;const e=this.workShapes.get(o.Storage_Selector_key),{selectIds:s}=t;if(!(s!=null&&s.length)){this.blurSelector(t);return}if(!e){const c=this.setFullWork(t);!c&&t.workId&&this.tmpOpt&&((r=this.tmpOpt)==null?void 0:r.toolsType)===o.EToolsKey.Selector&&this.setWorkOptions(t.workId.toString(),t.opt||this.tmpOpt.toolsOpt),c&&this.updateFullSelectWork(t);return}if(e&&(s!=null&&s.length)){const{selectRect:c}=e.updateSelectIds(s),p=[{...t,selectorColor:((a=t.opt)==null?void 0:a.strokeColor)||e.selectorColor,strokeColor:((i=t.opt)==null?void 0:i.strokeColor)||e.strokeColor,fillColor:((n=t.opt)==null?void 0:n.fillColor)||e.fillColor,textOpt:((l=t.opt)==null?void 0:l.textOpt)||e.textOpt,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,type:o.EPostMessageType.Select,selectRect:c,points:e.getChildrenPoints(),willSyncService:(t==null?void 0:t.willSyncService)||!1,opt:(t==null?void 0:t.willSyncService)&&e.getWorkOptions()||void 0,canLock:e.canLock,isLocked:e.isLocked,toolsTypes:e.toolsTypes,shapeOpt:e.shapeOpt,thickness:e.thickness,useStroke:e.useStroke,strokeType:e.strokeType}];this.thread.post({sp:p})}}commandDeleteText(t){const e=this.vNodes.get(t);if(e&&e.toolsType===o.EToolsKey.Text)return{type:o.EPostMessageType.TextUpdate,toolsType:o.EToolsKey.Text,workId:t,dataType:o.EDataType.Local}}async removeSelector(t){const{willSyncService:e}=t,s=[],r=[],a=this.workShapes.get(o.Storage_Selector_key);if(!a)return;const i=a.selectIds&&[...a.selectIds]||[];for(const n of i){if(this.vNodes.get(n)){const c=this.commandDeleteText(n);c&&s.push(c)}this.removeNode(n),r.push(n)}r.length&&s.push({type:o.EPostMessageType.RemoveNode,removeIds:r}),s.push({type:o.EPostMessageType.Select,selectIds:[],willSyncService:e}),await this.blurSelector(),s.length&&this.thread.post({sp:s})}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.removeNode(s)}removeNode(t){var r;this.vNodes.get(t)&&((r=this.thread.fullLayer)==null||r.getElementsByName(t).forEach(a=>{a.remove(),o.removeTexture(a,this.thread.fullLayer.parent)}),this.vNodes.delete(t)),this.workShapes.has(t)&&(this.thread.localLayer.getElementsByName(t).forEach(a=>{a.remove(),o.removeTexture(a,this.thread.localLayer.parent)}),this.clearWorkShapeNodeCache(t))}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async consumeFull(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){const a=(r=t.workId)==null?void 0:r.toString();e.toolsType===o.EToolsKey.Image?await e.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this}):e.toolsType===o.EToolsKey.Text?await e.consumeServiceAsync({isFullWork:!0,replaceId:a}):e.consumeService({op:s,isFullWork:!0,replaceId:a}),t!=null&&t.updateNodeOpt&&e.updataOptService(t.updateNodeOpt);const i=[];t.workId&&this.workShapes.delete(t.workId.toString()),t.willSyncService&&i.push({opt:t.opt,toolsType:t.toolsType,type:o.EPostMessageType.FullWork,workId:t.workId,ops:t.ops,updateNodeOpt:t.updateNodeOpt,viewId:this.thread.viewId}),i.length&&this.thread.post({sp:i})}}async colloctEffectSelectWork(t){const e=this.workShapes.get(o.Storage_Selector_key),{workId:s,msgType:r}=t;if(e&&s&&e.selectIds&&e.selectIds.includes(s.toString())){r===o.EPostMessageType.RemoveNode?e.selectIds=e.selectIds.filter(a=>a!==s.toString()):this.effectSelectNodeData.add(t),await new Promise(a=>{setTimeout(()=>{a(!0)},0)}),await this.runEffectSelectWork(!0).then(()=>{var a;(a=this.effectSelectNodeData)==null||a.clear()});return}return t}async runEffectSelectWork(t){var e;for(const s of this.effectSelectNodeData.values()){const r=this.setFullWork(s);if(r){const a=(e=s.workId)==null?void 0:e.toString();if(r.toolsType===o.EToolsKey.Image)await r.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this});else if(r.toolsType===o.EToolsKey.Text)await r.consumeServiceAsync({isFullWork:!0,replaceId:a});else{const i=s.ops&&o.transformToNormalData(s.ops);r.consumeService({op:i,isFullWork:!0,replaceId:a}),s!=null&&s.updateNodeOpt&&r.updataOptService(s.updateNodeOpt)}s.workId&&this.workShapes.delete(s.workId.toString())}}this.reRenderSelector(t)}hasSelector(){return this.workShapes.has(o.Storage_Selector_key)}getSelector(){return this.workShapes.get(o.Storage_Selector_key)}reRenderSelector(t=!1){var r;const e=this.workShapes.get(o.Storage_Selector_key);if(!e)return;if(e&&!((r=e.selectIds)!=null&&r.length))return this.blurSelector();const s=e.reRenderSelector();s&&this.thread.post({sp:[{type:o.EPostMessageType.Select,selectIds:e.selectIds,selectRect:s,willSyncService:t,viewId:this.thread.viewId,points:e.getChildrenPoints(),textOpt:e.textOpt,selectorColor:e.selectorColor,strokeColor:e.strokeColor,fillColor:e.fillColor,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,opt:e.getWorkOptions()||void 0,canLock:e.canLock,isLocked:e.isLocked,toolsTypes:e.toolsTypes,shapeOpt:e.shapeOpt,thickness:e.thickness,useStroke:e.useStroke,strokeType:e.strokeType}]})}async blurSelector(t){var r;const e=this.workShapes.get(o.Storage_Selector_key),s=e==null?void 0:e.blurSelector();if(this.clearWorkShapeNodeCache(o.Storage_Selector_key),((r=this.thread.fullLayer)==null?void 0:r.parent).children.forEach(a=>{a.name===o.Storage_Selector_key&&a.remove()}),s){const a=[];a.push({...s,isSync:t==null?void 0:t.isSync}),this.thread.post({sp:a})}}clearWorkShapeNodeCache(t){var e;(e=this.getWorkShape(t))==null||e.clearTmpPoints(),this.workShapes.delete(t)}async drawBitMapEraserFull(t,e,s){const{willUpdateNodes:r,willDeleteNodes:a}=e,i=t.getWorkId(),n=[{type:o.EPostMessageType.RemoveNode,removeIds:[i],viewId:this.thread.viewId}];if(s&&n.push({type:o.EPostMessageType.None,isLockSentEventCursor:s}),r!=null&&r.size||a!=null&&a.size){if(r!=null&&r.size)for(const[l,c]of r)n.push({type:o.EPostMessageType.UpdateNode,dataType:o.EDataType.Local,opt:c.opt,workId:l,updateNodeOpt:{useAnimation:!1}});a!=null&&a.size&&n.push({type:o.EPostMessageType.RemoveNode,removeIds:[...a],viewId:this.thread.viewId})}n.length&&this.thread.post({sp:n})}drawPencilEraser(t,e){var r,a;const s=[];if((r=t.newWorkDatas)!=null&&r.size){for(const i of t.newWorkDatas.values()){const n=i.workId.toString();this.batchEraserWorks.add(n),s.push({type:o.EPostMessageType.FullWork,workId:n,ops:o.transformToSerializableData(i.op),opt:i.opt,toolsType:i.toolsType,updateNodeOpt:{useAnimation:!1}})}delete t.newWorkDatas}(a=t.removeIds)==null||a.forEach(i=>{this.batchEraserRemoveNodes.add(i)}),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),t.rect,this.thread.post({sp:s,consumeCount:this.consumeCount}),this.batchEraserCombine()}drawEraser(t,e){const s=[];t.removeIds&&s.push(t),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),this.thread.post({sp:s,consumeCount:this.consumeCount})}updateBatchEraserCombineNode(t,e){for(const s of e.keys())this.thread.fullLayer.getElementsByName(s).forEach(r=>{r.remove(),o.removeTexture(r,this.thread.fullLayer.parent)});t.forEach(s=>{const r=this.vNodes.get(s);if(r&&r.toolsType===o.EToolsKey.Pencil&&!this.thread.fullLayer.getElementsByName(s)[0]){const i=this.setFullWork({...r,workId:s});i&&i.consumeService({op:r.op,isFullWork:!0})}})}getWorkShape(t){return this.workShapes.get(t)}getWorkShapes(){return this.workShapes}consumeDraw(t,e){const{op:s,workId:r,scenePath:a,postCount:i}=t;if(s!=null&&s.length&&r){const n=r.toString(),l=this.workShapes.get(n);if(!l)return;const c=l.toolsType;if(c===o.EToolsKey.LaserPen)return;switch(this.drawWorkActiveId&&this.drawWorkActiveId!==n&&(this.consumeDrawAll({workId:this.drawWorkActiveId,scenePath:a,viewId:this.thread.viewId,msgType:o.EPostMessageType.DrawWork,dataType:o.EDataType.Local},e),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&n!==o.Storage_Selector_key&&(this.drawWorkActiveId=n),L.isNumber(i)&&(this.consumeCount=i),c){case o.EToolsKey.Selector:{const p=l.consume({data:t,isFullWork:!0});p.type===o.EPostMessageType.Select&&(p.selectIds&&e.runReverseSelectWork(p.selectIds),this.thread.post({sp:[p]}))}break;case o.EToolsKey.PencilEraser:{const p=l.consume({data:t,isFullWork:!0});this.drawPencilEraser(p)}break;case o.EToolsKey.BitMapEraser:{const p=l.consume({data:t,isFullWork:!1,isMainThread:!0});this.fullWorkerDrawCount++,this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:p.op&&[{...p,scenePath:a}]||void 0});break}case o.EToolsKey.Eraser:{const p=l.consume({data:t,isFullWork:!0});this.drawEraser(p)}break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const p=l.consume({data:t,isFullWork:!1,isMainThread:!0});p&&(this.fullWorkerDrawCount++,this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:p.op&&[{...p,scenePath:a}]||void 0}))}break}}}consumeDrawAll(t,e){var i,n,l;const{workId:s,scenePath:r,isLockSentEventCursor:a}=t;if(s){const c=s.toString();this.drawWorkActiveId===c&&(this.drawWorkActiveId=void 0);const p=this.workShapes.get(c);if(!p)return;const h=p.toolsType;if(h===o.EToolsKey.LaserPen)return;const y=this.workShapes.get(o.Cursor_Hover_Id),d=(i=y==null?void 0:y.selectIds)==null?void 0:i[0],m=p.consumeAll({data:t,workerEngine:this});switch(h){case o.EToolsKey.Selector:m.selectIds&&d&&((n=m.selectIds)!=null&&n.includes(d))&&y.cursorBlur(),m.type===o.EPostMessageType.Select&&(m.selectIds&&e.runReverseSelectWork(m.selectIds),this.thread.post({sp:[{...m,scenePath:r}]})),(l=p.selectIds)!=null&&l.length?p.clearTmpPoints():this.clearWorkShapeNodeCache(c);break;case o.EToolsKey.PencilEraser:this.drawPencilEraser({...m,scenePath:r},a),p.clearTmpPoints();break;case o.EToolsKey.BitMapEraser:this.drawBitMapEraserFull(p,m,a),this.fullWorkerDrawCount=0,this.clearWorkShapeNodeCache(c);break;case o.EToolsKey.Eraser:this.drawEraser({...m,scenePath:r},a),p.clearTmpPoints();break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const S=[];a&&S.push({type:o.EPostMessageType.None,isLockSentEventCursor:a}),m&&(S.push(m),this.fullWorkerDrawCount=0,this.thread.post({fullWorkerDrawCount:this.fullWorkerDrawCount,sp:S})),this.clearWorkShapeNodeCache(c);break}}}}getToolsOpt(){return this.tmpOpt}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}setWorkOptions(t,e){let s=this.workShapes.get(t);if(!s&&this.tmpOpt){const{toolsType:r}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:e}),s&&this.workShapes.set(t,s),this.setToolsOpt(this.tmpOpt)}e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s==null||s.setWorkOptions(e)}createWorkShapeNode(t){return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.localLayer},this.thread.serviceWork)}}class K{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"selectorWorkShapes",new Map);u(this,"willRunEffectSelectorIds",new Set);u(this,"runEffectId");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}destroy(){this.clearAll()}clearAll(){this.thread.serviceLayer.children.length&&(this.thread.serviceLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),o.removeAllChildren(this.thread.serviceLayer,this.thread.serviceLayer.parent)),this.workShapes.clear(),this.selectorWorkShapes.clear(),this.willRunEffectSelectorIds.clear()}runEffect(){this.runEffectId||(this.runEffectId=setTimeout(this.effectRunSelector.bind(this),0))}effectRunSelector(){this.runEffectId=void 0,this.willRunEffectSelectorIds.forEach(t=>{var s,r;const e=this.selectorWorkShapes.get(t);e&&e.selectIds&&((s=e.node)==null||s.selectServiceNode(t,e,!0)),(r=e==null?void 0:e.selectIds)!=null&&r.length||this.selectorWorkShapes.delete(t)}),this.willRunEffectSelectorIds.clear()}runSelectWork(t){this.activeSelectorShape(t);const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.willRunEffectSelectorIds.add(s),this.runEffect()}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();if(s){if(this.workShapes.get(s)){this.workShapes.delete(s),this.removeNode(s,t);return}this.removeNode(s,t)}}consumeFull(t){this.activeWorkShape(t),this.runAnimation()}runReverseSelectWork(t){t.forEach(e=>{this.selectorWorkShapes.forEach((s,r)=>{var a;if((a=s.selectIds)!=null&&a.length){const i=s.selectIds.indexOf(e);i>-1&&(s.selectIds.splice(i,1),this.willRunEffectSelectorIds.add(r))}})}),this.willRunEffectSelectorIds.size&&this.runEffect()}consumeDraw(t){this.activeWorkShape(t),this.runAnimation()}computNextAnimationIndex(t,e){const s=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(s||e),(t.animationWorkData||[]).length)}async animationDraw(){var s,r,a,i,n,l,c,p,h,y,d,m,S,k,T,E,D,R,x;this.animationId=void 0;let t=!1;const e=new Map;for(const[g,f]of this.workShapes.entries())switch(f.toolsType){case o.EToolsKey.Image:{await((s=f.node)==null?void 0:s.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((w,I)=>{var W;(W=w.selectIds)!=null&&W.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(g);break}case o.EToolsKey.Text:{f.node&&(await((r=f.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:g})),this.selectorWorkShapes.forEach((w,I)=>{var W;(W=w.selectIds)!=null&&W.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=f.node)==null||a.clearTmpPoints(),this.workShapes.delete(g));break}case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Rectangle:case o.EToolsKey.Ellipse:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:{const w=!!f.ops;if((i=f.animationWorkData)!=null&&i.length){const I=f.oldRect;(n=f.node)==null||n.consumeService({op:f.animationWorkData,isFullWork:w}),w&&(this.selectorWorkShapes.forEach((W,M)=>{var b;(b=W.selectIds)!=null&&b.includes(g)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(l=f.node)==null||l.clearTmpPoints(),this.workShapes.delete(g)),e.set(g,{workState:I?f.ops?o.EvevtWorkState.Done:o.EvevtWorkState.Doing:o.EvevtWorkState.Start,op:f.animationWorkData.filter((W,M)=>{if(M%3!==2)return!0}).slice(-2)}),f.animationWorkData.length=0}break}case o.EToolsKey.Pencil:{if(!f.useAnimation&&f.ops)(c=f.node)==null||c.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:g}),(p=f.node)==null||p.updataOptService(f.updateNodeOpt),this.selectorWorkShapes.forEach((w,I)=>{var W;(W=w.selectIds)!=null&&W.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(h=f.node)==null||h.clearTmpPoints(),this.workShapes.delete(g);else if(f.useAnimation){if(f.isDel){(y=f.node)==null||y.clearTmpPoints(),this.workShapes.delete(g);break}const w=3,I=this.computNextAnimationIndex(f,w),W=f.isDiff?0:Math.max(0,(f.animationIndex||0)-w),M=(f.animationWorkData||[]).slice(W,I),b=(m=(d=f.node)==null?void 0:d.getWorkId())==null?void 0:m.toString();if((f.animationIndex||0)<I||f.isDiff){if((S=f.node)==null||S.consumeService({op:M,isFullWork:!1}),f.animationIndex=I,f.isDiff&&(f.isDiff=!1),M.length){const O=M.filter((P,A)=>{if(A%w!==w-1)return!0}).slice(-2);e.set(g,{workState:W===0?o.EvevtWorkState.Start:I===((k=f.animationWorkData)==null?void 0:k.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:O})}}else f.ops&&((T=f.node)==null||T.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:b}),f.isDel=!0,e.set(g,{workState:o.EvevtWorkState.Done,op:M.filter((O,P)=>{if(P%w!==w-1)return!0}).slice(-2)}));t=!0;break}break}case o.EToolsKey.BitMapEraser:case o.EToolsKey.PencilEraser:{if(f.isDel){(E=f.node)==null||E.clearTmpPoints(),this.workShapes.delete(g);break}if(f.ops&&((D=f.animationWorkData)!=null&&D.length)){const w=f.animationWorkData.slice(-3,-1);e.set(g,{workState:o.EvevtWorkState.Done,op:w}),f.isDel=!0;break}if(f.useAnimation){const I=this.computNextAnimationIndex(f,3),W=f.isDiff?0:Math.max(0,(f.animationIndex||0)-3),M=(f.animationWorkData||[]).slice(W,I);if(((f.animationIndex||0)<I||f.isDiff)&&((R=f.node)==null||R.consumeService({op:M,isFullWork:f.toolsType!==o.EToolsKey.BitMapEraser}),f.animationIndex=I,f.isDiff&&(f.isDiff=!1),M.length)){const b=M.filter((O,P)=>{if(P%3!==2)return!0}).slice(-2);e.set(g,{workState:W===0?o.EvevtWorkState.Start:I===((x=f.animationWorkData)==null?void 0:x.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:b})}t=!0;break}break}}if(t&&this.runAnimation(),e.size){const g=[];e.forEach((f,w)=>{g.push({type:o.EPostMessageType.Cursor,uid:w.split(o.Storage_Splitter)[0],op:f.op,workState:f.workState,viewId:this.thread.viewId})}),this.thread.post({sp:g})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,s){const r=t.length;if(e.length<r)return!0;switch(s){case o.EToolsKey.Pencil:{for(let a=0;a<r;a+=3)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}case o.EToolsKey.LaserPen:{for(let a=0;a<r;a+=2)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}}return!1}activeWorkShape(t){var m,S,k,T;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:n,op:l,useAnimation:c,imageBitmap:p}=t;if(!e)return;const h=e.toString(),y=(m=this.vNodes.get(h))==null?void 0:m.rect;if(!((S=this.workShapes)!=null&&S.has(h))){let E={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:n,useAnimation:typeof c<"u"?c:typeof(i==null?void 0:i.useAnimation)<"u"?i==null?void 0:i.useAnimation:!0,oldRect:y,isDiff:!1,imageBitmap:p};r&&s&&(E=this.setNodeKey(h,E,r,s)),(k=this.workShapes)==null||k.set(h,E)}const d=(T=this.workShapes)==null?void 0:T.get(h);a&&(d.type=a),n&&(d.animationWorkData=o.transformToNormalData(n),d.ops=n),i&&(d.updateNodeOpt=i),l&&(d.isDiff=this.hasDiffData(d.animationWorkData||[],l,d.toolsType),d.animationWorkData=l),d.node&&d.node.getWorkId()!==h&&d.node.setWorkId(h),y&&(d.oldRect=y),r&&s&&(s.syncUnitTime&&(this.syncUnitTime=s.syncUnitTime),d.toolsType!==r&&r&&s&&this.setNodeKey(h,d,r,s),d.node&&d.node.setWorkOptions(s)),p&&(d.imageBitmap=p)}removeNode(t,e){t.indexOf(o.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(s=>{s.remove(),o.removeTexture(s,this.thread.fullLayer.parent)}),this.thread.serviceLayer.getElementsByName(t).forEach(s=>{s.remove(),o.removeTexture(s,this.thread.serviceLayer.parent)}),this.vNodes.delete(t)}removeSelectWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&(this.activeSelectorShape(t),this.willRunEffectSelectorIds.add(s)),this.runEffect()}activeSelectorShape(t){var c,p,h;const{workId:e,opt:s,toolsType:r,type:a,selectIds:i}=t;if(!e)return;const n=e.toString();if(!((c=this.selectorWorkShapes)!=null&&c.has(n))){let y={toolsType:r,selectIds:i,type:a,opt:s};r&&s&&(y=this.setNodeKey(n,y,r,s)),(p=this.selectorWorkShapes)==null||p.set(n,y)}const l=(h=this.selectorWorkShapes)==null?void 0:h.get(n);a&&(l.type=a),l.node&&l.node.getWorkId()!==n&&l.node.setWorkId(n),l.selectIds=i||[]}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=o.getShapeInstance({toolsType:s,toolsOpt:r,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.serviceLayer,workId:t},this),e}}class N{constructor(){u(this,"localWork");u(this,"serviceWork");u(this,"threadEngine")}registerMainThread(t){return this.threadEngine=t,this.localWork=t.localWork,this.serviceWork=t.serviceWork,this}}class z extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.CopyNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.FullWork&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:s}=e;s&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class q extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetColorNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:n,textUpdateForWoker:l}=s,c=r.sp||[];if(i)for(const[p,h]of a.entries())l&&h.toolsType===o.EToolsKey.Text?c.push({...h,workId:p,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):c.push({...h,workId:p,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});return{sp:c}}}class H extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ZIndexNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:n}=s,l=r.sp||[];if(i&&l)for(const[c,p]of a.entries())l.push({...p,workId:c,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});return{sp:l}}}class V extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.TranslateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p,h;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l,emitEventType:c}=e;s===o.Storage_Selector_key&&r&&(r.workState===o.EvevtWorkState.Done&&(r!=null&&r.translate)&&(r.translate[0]||r.translate[1])||r.workState!==o.EvevtWorkState.Done?await((p=this.localWork)==null?void 0:p.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,isSync:!0,textUpdateForWoker:l,emitEventType:c,callback:this.updateSelectorCallback})):r.workState===o.EvevtWorkState.Done&&((h=this.localWork)==null||h.vNodes.deleteLastTarget()))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=p.workState,d=r.sp||[];if(y===o.EvevtWorkState.Start)return{sp:[],render:[]};const m=n==null?void 0:n.selectRect;if(l){y===o.EvevtWorkState.Doing&&d.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:m,willSyncService:!0,isSync:!0,points:i.getChildrenPoints(),textOpt:i.textOpt});for(const[S,k]of a.entries())h&&k.toolsType===o.EToolsKey.Text?d.push({...k,workId:S,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):d.push({...k,workId:S,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c})}return{sp:d}}}class $ extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.DeleteNode)}async consume(){return!1}}class G extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ScaleNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willSyncService:a,willSerializeData:i}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willSyncService:a,willSerializeData:i,isSync:!0,callback:this.updateSelectorCallback.bind(this)}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:n}=e,{updateSelectorOpt:l,willSyncService:c}=s,p=l.workState,h=r.sp||[],y=i==null?void 0:i.selectRect;if(p===o.EvevtWorkState.Start)return{sp:[],render:[]};if(c){h.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:y,willSyncService:!0,isSync:!0,points:p===o.EvevtWorkState.Done&&a.getChildrenPoints()||void 0,textOpt:a.textOpt});for(const[d,m]of n.entries())m.toolsType===o.EToolsKey.Text?h.push({...m,workId:d,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):h.push({...m,workId:d,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:!0})}return{sp:h}}}class j extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.RotateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,emitEventType:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,emitEventType:l,isSync:!0,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:n}=e,{updateSelectorOpt:l,willSyncService:c,willSerializeData:p,isSync:h}=s,y=l.workState,d=r.sp||[],m=i==null?void 0:i.selectRect;if(c){p&&y===o.EvevtWorkState.Done&&d.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:m,willSyncService:!0,isSync:h,points:a.getChildrenPoints()});for(const[S,k]of n.entries())d.push({...k,workId:S,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:h})}return{sp:d}}}class Z extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetFontStyle)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=r.sp||[],d=n==null?void 0:n.selectRect;if(l&&y){p.fontSize&&y.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:d,willSyncService:l,isSync:c,points:i.getChildrenPoints()});for(const[m,S]of a.entries())h&&S.toolsType===o.EToolsKey.Text?y.push({...S,workId:m,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):y.push({...S,workId:m,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c})}return{sp:y}}}class X extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetPoint)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,emitEventType:this.emitEventType,willSerializeData:n,isSync:!0,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c}=s,p=r.sp||[],h=n==null?void 0:n.selectRect;if(l&&p){for(const[y,d]of a.entries())p.push({...d,workId:y,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});p.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:h,willSyncService:l,isSync:c,points:i.getChildrenPoints()})}return{sp:p}}}class Y extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetLock)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:n}=e,{willSyncService:l,isSync:c,updateSelectorOpt:p}=s,h=r.sp||[],y=n==null?void 0:n.selectRect;if(l&&h){for(const[d,m]of a.entries())h.push({...m,workId:d,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});h.push({isLocked:p.isLocked,selectorColor:i.selectorColor,scaleType:i.scaleType,canRotate:i.canRotate,type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:y,willSyncService:l,isSync:c})}return{sp:h}}}class Q extends N{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:n,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:n}=s,l=r.sp||[];if(i&&l)for(const[c,p]of a.entries())l.push({...p,workId:c,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});return{sp:l}}}class J{constructor(t){u(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case o.EmitEventType.TranslateNode:return new V;case o.EmitEventType.ZIndexNode:return new H;case o.EmitEventType.CopyNode:return new z;case o.EmitEventType.SetColorNode:return new q;case o.EmitEventType.DeleteNode:return new $;case o.EmitEventType.ScaleNode:return new G;case o.EmitEventType.RotateNode:return new j;case o.EmitEventType.SetFontStyle:return new Z;case o.EmitEventType.SetPoint:return new X;case o.EmitEventType.SetLock:return new Y;case o.EmitEventType.SetShapeOpt:return new Q}}registerForMainThread(t){return this.builders.forEach(e=>{e&&e.registerMainThread(t)}),this}async consumeForMainThread(t){for(const e of this.builders.values())if(await(e==null?void 0:e.consume(t)))return!0;return!1}}class ee{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"topLayer");u(this,"localLayer");u(this,"serviceLayer");u(this,"snapshotFullLayer");u(this,"vNodes");u(this,"master");u(this,"opt");u(this,"cameraOpt");u(this,"scene");u(this,"localWork");u(this,"serviceWork");u(this,"topWork");u(this,"taskUpdateCameraId");u(this,"debounceUpdateCameraId");u(this,"debounceUpdateCache",new Set);u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"methodBuilder");u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master;const s=o.DefaultAppliancePluginOptions.bufferSize.full,r=o.DefaultAppliancePluginOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?s:r*2}),this.topLayer=this.createLayer("topLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r),contextType:"2d"}),this.localLayer=this.createLayer("localLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r),contextType:"2d"}),this.serviceLayer=this.createLayer("serviceLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r),contextType:"2d"}),this.vNodes=new o.VNodeManager(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new _(a),this.serviceWork=new K(a),this.topWork=new U(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new J([o.EmitEventType.CopyNode,o.EmitEventType.SetColorNode,o.EmitEventType.DeleteNode,o.EmitEventType.RotateNode,o.EmitEventType.ScaleNode,o.EmitEventType.TranslateNode,o.EmitEventType.ZIndexNode,o.EmitEventType.SetFontStyle,o.EmitEventType.SetPoint,o.EmitEventType.SetLock,o.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}updateDpr(t){this.scene.displayRatio=t}async on(t){if(!await this.methodBuilder.consumeForMainThread(t)){const{msgType:e,toolsType:s,opt:r,dataType:a,workId:i,workState:n,imageSrc:l,imageBitmap:c,workIds:p}=t,h=i==null?void 0:i.toString();switch(e){case o.EPostMessageType.UpdateDpr:L.isNumber(t.dpr)&&this.updateDpr(t.dpr);break;case o.EPostMessageType.AuthClear:{const{clearUids:y,localUid:d}=t;this.vNodes.setCanClearUids(y),this.vNodes.setLocalUid(d);break}case o.EPostMessageType.Destroy:this.destroy();break;case o.EPostMessageType.Clear:this.clearAll();break;case o.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case o.EPostMessageType.UpdateTools:if(s&&r){const y={toolsType:s,toolsOpt:r};this.topWork.canUseTopLayer(s)?this.topWork.setToolsOpt(y):this.localWork.setToolsOpt(y)}break;case o.EPostMessageType.CreateWork:if(h&&r&&s){if(this.topWork.canUseTopLayer(s)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.topWork.setWorkOptions(h,r);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.localWork.setWorkOptions(h,r)}break;case o.EPostMessageType.DrawWork:n===o.EvevtWorkState.Done&&a===o.EDataType.Local?this.consumeDrawAll(a,t):this.consumeDraw(a,t);break;case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:if(s&&this.topWork.canUseTopLayer(s)){this.consumeDrawAll(a,t);break}this.consumeFull(a,t);break;case o.EPostMessageType.RemoveNode:await this.removeNode(t);return;case o.EPostMessageType.Select:a===o.EDataType.Service&&(i===o.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case o.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case o.EPostMessageType.GetTextActive:a===o.EDataType.Local&&this.localWork.checkTextActive(t);break;case o.EPostMessageType.GetImageBitMap:if(l&&c&&i){const y=i.toString();this.deleteCachedImagesByWorkId(y),this.cacheImages.set(l,{imageBitmap:c,workId:y});const d=this.imageResolveMap.get(l);if(d){const{resolve:m,timer:S}=d;S&&clearTimeout(S),m&&m(l)}}break;case o.EPostMessageType.GetVNodeInfo:if(i&&p){const y=p.map(d=>this.vNodes.get(d));this.post({sp:[{type:o.EPostMessageType.GetVNodeInfo,dataType:o.EDataType.Local,workId:i,vInfo:y}]})}break}}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:n,width:l,height:c,strokeColor:p}=s;if(!i||!n||!l||!c)return;let h=i;if(n===o.EImageType.Iconify){const[S,k]=this.getIconSize(l,c,this.opt.displayer.dpr);h=`${i}?width=${S}&height=${k}&color=${p}`}if(this.cacheImages.has(h)){const S=this.getCachedImages(h);if(S)return S}if(this.imageResolveMap.has(h)){const S=this.getCachedImagesByWorkId(a);if(S)return S}const m=await new Promise(S=>{const k=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};k.timer&&clearTimeout(k.timer),k.resolve=S,k.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,k),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(m),this.getCachedImages(h)}}async removeNode(t){const{dataType:e,workId:s,removeIds:r}=t,a=r||[];if(s&&a.push(s.toString()),a.length)for(const i of a){if(i===o.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===o.EDataType.Local?this.localWork.removeWork(t):e===o.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const s=await this.localWork.colloctEffectSelectWork(e);s&&t===o.EDataType.Local&&await this.localWork.consumeFull(s),s&&t===o.EDataType.Service&&this.serviceWork.consumeFull(s)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;(a!==this.scene.width||i!==this.scene.height)&&this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-s,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-s,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var r;this.mainThreadPostId=void 0;const t=[];let e,s;for(const a of this.combinePostMsg.values()){if((r=a.sp)!=null&&r.length)for(const i of a.sp){let n=!1;for(const l of t)if(L.isEqual(i,l)){n=!0;break}n||t.push(i)}L.isNumber(a.fullWorkerDrawCount)&&(e=a.fullWorkerDrawCount),L.isNumber(a.consumeCount)&&(s=a.consumeCount)}return this.combinePostMsg.clear(),{sp:t,fullWorkerDrawCount:e,consumeCount:s}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,t.consumeCount===void 0&&delete t.consumeCount,t.fullWorkerDrawCount===void 0&&delete t.fullWorkerDrawCount,(t!=null&&t.consumeCount||t!=null&&t.fullWorkerDrawCount||(r=t.sp)!=null&&r.length)&&this.opt.post(t)}clearAll(){this.fullLayer.children.length&&(this.fullLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),o.removeAllChildren(this.fullLayer,this.fullLayer.parent)),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.clearAll(),this.topWork.clearAll(),this.serviceWork.clearAll(),this.vNodes.clear(),this.post({sp:[{type:o.EPostMessageType.Clear}]})}consumeDrawAll(t,e){const{toolsType:s,workId:r}=e;if(r){const a=r.toString();if(s&&this.topWork.canUseTopLayer(s)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(r.toString())||this.topWork.createLocalWork(e)),this.topWork.consumeDrawAll(e);return}t===o.EDataType.Local&&(this.localWork.getWorkShape(a)||this.localWork.createLocalWork(e),this.localWork.consumeDrawAll(e,this.serviceWork))}}consumeDraw(t,e){const{opt:s,workId:r,toolsType:a}=e;if(r&&a&&s){const i=r.toString();if(this.topWork.canUseTopLayer(a)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(i)||this.topWork.createLocalWork(e)),this.topWork.consumeDraw(e);return}t===o.EDataType.Local?(this.localWork.getWorkShape(i)||this.localWork.createLocalWork(e),this.localWork.consumeDraw(e,this.serviceWork)):t===o.EDataType.Service&&this.serviceWork.consumeDraw(e);return}}async updateCamera(t){var r;const{cameraOpt:e,scenePath:s}=t;if(e&&!L.isEqual(this.cameraOpt,e)){if(this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),s){let c=!1;for(const[p,h]of this.localWork.getWorkShapes().entries())switch(h.toolsType){case o.EToolsKey.Text:case o.EToolsKey.BitMapEraser:case o.EToolsKey.PencilEraser:case o.EToolsKey.Eraser:case o.EToolsKey.Selector:case o.EToolsKey.LaserPen:break;default:p!==o.Cursor_Hover_Id&&p!==o.Storage_Selector_key&&(c=!0);break}if(c){this.taskUpdateCameraId=setTimeout(()=>{this.taskUpdateCameraId=void 0,this.updateCamera(t)},o.Task_Time_Interval);return}}const a=new Map;for(const[c,p]of this.vNodes.getNodesByType(o.EToolsKey.Text).entries()){const h=p.rect;a.set(c,L.cloneDeep(h))}const i=new Set(a.keys());let n=!1;if(this.localWork.hasSelector()){const c=(r=this.localWork.getSelector())==null?void 0:r.selectIds;if(c){n=!0;for(const p of c)i.add(p)}}let l=!1;if(this.serviceWork.selectorWorkShapes.size)for(const c of this.serviceWork.selectorWorkShapes.values()){const p=c.selectIds;if(p){l=!0;for(const h of p)i.add(h)}}if(this.setCameraOpt(e),this.vNodes.curNodeMap.size){this.vNodes.clearTarget(),this.vNodes.updateHighLevelNodesRect(i),this.debounceUpdateCameraId&&clearTimeout(this.debounceUpdateCameraId);for(const[c,p]of a.entries()){const h=this.vNodes.get(c);if(h){const y=p,d=h.rect,m=this.getSceneRect(),S=o.getRectMatrixrRelation(y,m),k=o.getRectMatrixrRelation(d,m);let T=!1;if((S!==k||y.w!==d.w||y.h!==d.h||k===o.EMatrixrRelationType.intersect)&&(T=!0),T){const{toolsType:E,opt:D}=h;E===o.EToolsKey.Text&&D.workState===o.EvevtWorkState.Done&&this.debounceUpdateCache.add(c)}}}if(n&&this.localWork.reRenderSelector(),l)for(const[c,p]of this.serviceWork.selectorWorkShapes.entries())this.serviceWork.runSelectWork({workId:c,selectIds:p.selectIds,msgType:o.EPostMessageType.Select,dataType:o.EDataType.Service,viewId:this.viewId});this.debounceUpdateCameraId=setTimeout(()=>{var p;this.debounceUpdateCameraId=void 0;const c=[];for(const h of this.debounceUpdateCache.values()){if((p=this.fullLayer)==null?void 0:p.getElementsByName(h)[0]){const d=this.vNodes.get(h);if(d){const{toolsType:m,opt:S,rect:k}=d,T=this.localWork.setFullWork({toolsType:m,opt:S,workId:h});if(T){const E=this.getSceneRect(),D=o.getRectMatrixrRelation(k,E);c.push(T.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:D!==o.EMatrixrRelationType.outside}))}}}this.debounceUpdateCache.delete(h)}this.vNodes.updateLowLevelNodesRect(),this.vNodes.clearHighLevelIds()},o.Task_Time_Interval)}}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}createScene(t){return new C.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!0,id:this.viewId,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,n=e.layer(i,{...s,offscreen:!1}),l=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return n.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5]),this.topLayer.parent.setAttribute("width",e),this.topLayer.parent.setAttribute("height",s),this.topLayer.setAttribute("size",[e,s]),this.topLayer.setAttribute("pos",[e*.5,s*.5]),this.localLayer.parent.setAttribute("width",e),this.localLayer.parent.setAttribute("height",s),this.localLayer.setAttribute("size",[e,s]),this.localLayer.setAttribute("pos",[e*.5,s*.5]),this.serviceLayer.parent.setAttribute("width",e),this.serviceLayer.parent.setAttribute("height",s),this.serviceLayer.setAttribute("size",[e,s]),this.serviceLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.vNodes.clear(),this.fullLayer.remove(),o.removeTexture(this.fullLayer,this.fullLayer.parent),this.topLayer.remove(),o.removeTexture(this.topLayer,this.topLayer.parent),this.localLayer.remove(),o.removeTexture(this.localLayer,this.localLayer.parent),this.serviceLayer.remove(),o.removeTexture(this.serviceLayer,this.serviceLayer.parent),this.scene.remove(),this.localWork.destroy(),this.serviceWork.destroy(),this.topWork.destroy()}}class te{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"master");u(this,"opt");u(this,"scene");u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"workShapes",new Map);u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master,this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?6e3:3e3,contextType:"2d"})}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}async on(t){const{msgType:e,imageSrc:s,imageBitmap:r,workId:a}=t;switch(e){case o.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case o.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case o.EPostMessageType.GetImageBitMap:if(s&&r&&a){const i=a.toString();this.deleteCachedImagesByWorkId(i),this.cacheImages.set(s,{imageBitmap:r,workId:i});const n=this.imageResolveMap.get(s);if(n){const{resolve:l,timer:c}=n;c&&clearTimeout(c),l&&l(s)}}break}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:n,width:l,height:c,strokeColor:p}=s;if(!i||!n||!l||!c)return;let h=i;if(n===o.EImageType.Iconify){const[S,k]=this.getIconSize(l,c,this.opt.displayer.dpr);h=`${i}?width=${S}&height=${k}&color=${p}`}if(this.cacheImages.has(h)){const S=this.getCachedImages(h);if(S)return S}if(this.imageResolveMap.has(h)){const S=this.getCachedImagesByWorkId(a);if(S)return S}const m=await new Promise(S=>{const k=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};k.timer&&clearTimeout(k.timer),k.resolve=S,k.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,k),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(m),this.getCachedImages(h)}}createWorkShapeNode(t){return o.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){let a,i;const n=(r=e.getWorkId())==null?void 0:r.toString();return e.toolsType===o.EToolsKey.Image?a=await e.consumeServiceAsync({isFullWork:!0,worker:this}):e.toolsType===o.EToolsKey.Text?a=await e.consumeServiceAsync({isFullWork:!0,replaceId:n,isDrawLabel:!0}):(a=e.consumeService({op:s,isFullWork:!0,replaceId:n}),i=(t==null?void 0:t.updateNodeOpt)&&e.updataOptService(t.updateNodeOpt)),o.computRect(a,i)}}async getSnapshot(t){const{scenePath:e,scenes:s,cameraOpt:r,w:a,h:i}=t;if(e&&s&&r){this.setCameraOpt(r);let n;for(const[c,p]of Object.entries(s))if(p!=null&&p.type)switch(p==null?void 0:p.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const{opt:h}=p,y={...p,opt:h,workId:c,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId},d=await this.runFullWork(y);n=o.computRect(n,d);break}}let l;a&&i&&(l={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:l})}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}getRectImageBitmap(t,e){const s=Math.floor(t.x*this.opt.displayer.dpr),r=Math.floor(t.y*this.opt.displayer.dpr),a=t.w>0&&Math.floor(t.w*this.opt.displayer.dpr||1)||1,i=t.h>0&&Math.floor(t.h*this.opt.displayer.dpr||1)||1;return createImageBitmap(this.fullLayer.parent.canvas,s,r,a,i,e)}async getSnapshotRender(t){var a;const{scenePath:e,options:s}=t;((a=this.fullLayer)==null?void 0:a.parent).render();const r=await this.getRectImageBitmap(this.getSceneRect(),s);r&&(this.post({sp:[{type:o.EPostMessageType.Snapshot,scenePath:e,imageBitmap:r,viewId:this.viewId}]}),this.fullLayer&&o.removeAllChildren(this.fullLayer,this.fullLayer.parent))}async getBoundingRect(t){const{scenePath:e,scenes:s,cameraOpt:r}=t;if(e&&s&&r){this.setCameraOpt(r);let a;for(const[i,n]of Object.entries(s))if(n!=null&&n.type)switch(n==null?void 0:n.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const l=await this.runFullWork({...n,workId:i,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId});a=o.computRect(a,l);break}}a&&this.post({sp:[{type:o.EPostMessageType.BoundingBox,scenePath:e,rect:a}]})}}setCameraOpt(t){const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var e;this.mainThreadPostId=void 0;const t=[];for(const s of this.combinePostMsg.values())if((e=s.sp)!=null&&e.length)for(const r of s.sp){let a=!1;for(const i of t)if(o.isEqual(r,i)){a=!0;break}a||t.push(r)}return this.combinePostMsg.clear(),{sp:t}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,(r=t.sp)!=null&&r.length&&this.opt.post(t)}createScene(t){return new C.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!1,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,n=e.layer(i,s),l=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return n.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.fullLayer.remove(),o.removeTexture(this.fullLayer,this.fullLayer.parent),this.scene.remove()}}class se{constructor(t){u(this,"mainThreadMap",new Map);u(this,"snapshotThread");u(this,"master");this.master=t}post(t){const{fullWorkerDrawCount:e,sp:s,workerTasksqueueCount:r,consumeCount:a}=t;this.master.isBusy&&o.isNumber(r)&&this.master.setWorkerTasksqueueCount(r),o.isNumber(e)&&this.master.setMaxDrawCount(e),o.isNumber(a)&&this.master.setConsumeCount(a),s&&this.master.collectorSyncData(s)}destroy(){this.mainThreadMap.clear()}createMainThread(t,e){return new ee(t,e)}createSnapshotThread(t,e){return new te(t,e)}async consume(t){var e,s,r,a;for(const i of t.values()){const{msgType:n,viewId:l,tasksqueue:c,mainTasksqueueCount:p,layerOpt:h,offscreenCanvasOpt:y,cameraOpt:d,isSubWorker:m}=i;if(n===o.EPostMessageType.Console){console.log(this);continue}if(n===o.EPostMessageType.Init){const k=(e=this.master.control.viewContainerManager.getView(l))==null?void 0:e.displayer,T=k==null?void 0:k.canvasContainerRef.current;if(k&&T&&h&&y){const E=this.createMainThread(l,{displayer:k,container:T,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(l,E),E&&d&&E.setCameraOpt(d)}continue}if((n===o.EPostMessageType.Snapshot||n===o.EPostMessageType.BoundingBox)&&l===((s=this.master.control.viewContainerManager.mainView)==null?void 0:s.id)){const k=(r=this.master.control.viewContainerManager.getView(l))==null?void 0:r.displayer,T=(a=k.snapshotContainerRef)==null?void 0:a.current;if(k&&T&&d){T.style.width=`${d.width}px`,T.style.height=`${d.height}px`;const E={...o.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:d.width,height:d.height},D={...o.ViewContainerManager.defaultScreenCanvasOpt,width:d.width,height:d.height};this.snapshotThread=this.createSnapshotThread(l,{displayer:k,container:T,layerOpt:E,master:this.master,canvasOpt:D,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,T.innerHTML="",T.style.width="",T.style.height=""});continue}}if(n===o.EPostMessageType.GetImageBitMap&&m&&this.snapshotThread){this.snapshotThread.on(i);continue}if(n===o.EPostMessageType.TasksQueue&&(c!=null&&c.size)){for(const[k,T]of this.mainThreadMap.entries()){const E=c.get(k);E&&(await T.on(E),p&&this.post({workerTasksqueueCount:p}))}continue}if(l===o.Storage_ViewId_ALL){for(const k of this.mainThreadMap.values())k.on(i),n===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l);continue}const S=this.mainThreadMap.get(l);S&&(S.on(i),n===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l))}}}exports.MainThreadManagerImpl=se;